From 084b00933b2747536c12a91df1070d2e4df44a67 Mon Sep 17 00:00:00 2001
From: Thomas <tomsStudy@gmail.com>
Date: Thu, 29 Jan 2015 05:07:10 +0000
Subject: [PATCH] Bug 12911 - batch_id for new label batches can be assigned
 to several batches -Added code to make a placeholder and
 thus reserve the batch number. -Added code to delete old
 placeholders everytime a new batch is made. -Modified code
 in SELECT query to discount placeholders from batch items.

Testing Plan
-Open two koha staff windows in different browsers/inprivate.
-On both navigate Home>Tools>Label Creator
-Make a new batch in the first window
-Make a new batch in the second window
*The new batches created should have different batch numbers

-Add items to one of the batches
*Only the items added should show in the summary below. No placeholders should be shown

-Go back to manage batches page on either window
*The batch created which did not have any items added to it should not be displayed in this window
---
 C4/Creators/Batch.pm |   13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/C4/Creators/Batch.pm b/C4/Creators/Batch.pm
index 28beeb7..318d0db 100644
--- a/C4/Creators/Batch.pm
+++ b/C4/Creators/Batch.pm
@@ -56,6 +56,16 @@ sub new {
     my $batch_id = $sth->fetchrow_array;
     $self->{'batch_id'} = ++$batch_id unless $self->{'batch_id'} != 0;      # this allows batch_id to be passed in for individual label printing
     bless ($self, $type);
+
+    #Delete previous placeholders to clean up data
+    my $query = "DELETE FROM creator_batches WHERE creator = 'PLACEHOLDER';";
+    my $sth = C4::Context->dbh->prepare($query);
+    $sth->execute();
+
+    #Make a placeholder to ensure the batch number is reserved and not assigned to multople clients
+    my $query = "INSERT INTO creator_batches (batch_id, branch_code, creator) VALUES (?, ?, ?);";
+    my $sth = C4::Context->dbh->prepare($query);
+    $sth->execute($self->{'batch_id'}, $self->{'branch_code'}, "PLACEHOLDER");
     return $self;
 }
 
@@ -139,7 +149,8 @@ sub retrieve {
     $type =~ m/C4::(.+)::.+$/;
     my $number_type = ($1 eq 'Patroncards' ? 'borrower_number' : 'item_number');
     my $record_flag = 0;
-    my $query = "SELECT * FROM creator_batches WHERE batch_id = ? ORDER BY label_id";
+    #Added check to query to exclude placeholder results
+    my $query = "SELECT * FROM creator_batches WHERE batch_id = ? AND NOT creator = 'PLACEHOLDER' ORDER BY label_id;";
     my $sth = C4::Context->dbh->prepare($query);
 #    $sth->{'TraceLevel'} = 3;
     $sth->execute($opts{'batch_id'});
-- 
1.7.10.4