http://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=12911 Bug ID: 12911 Summary: batch_id for new label batches can be assigned to several batches Change sponsored?: --- Product: Koha Version: master Hardware: All OS: All Status: NEW Severity: minor Priority: P5 - low Component: Tools Assignee: gmcharlt@gmail.com Reporter: nick@quecheelibrary.org QA Contact: testopia@bugs.koha-community.org When adding a new label batch the MAX batch_id is retrieved from creator_batches and incremented, however, the updated value is not saved until new items are added to the batch. This means that if one library opens a new batch but does not add items before another library opens the batch they will both be assigned the same batch number To recreate: 1 -In one browser window, go to tools->label creator and click the new batch button 2 - Before adding items, open a new browser, and go tools->label creator and click the new batch button 3 - Note that both batches have the same number listed 4 - Add an item to the first batch - you should now see one item in the batch 5 - Add an item to the second batch, you should see two items in the batch I can also verify this happens pretty often in our shared system. C4:Creators 44 sub new { 45 my ($invocant) = shift; 46 my $type = ref($invocant) || $invocant; 47 my $self = { 48 batch_id => 0, 49 items => [], 50 branch_code => 'NB', 51 batch_stat => 0, # False if any data has changed and the db has not been updated 52 @_, 53 }; 54 my $sth = C4::Context->dbh->prepare("SELECT MAX(batch_id) FROM creator_batches;"); 55 $sth->execute(); 56 my $batch_id = $sth->fetchrow_array; 57 $self->{'batch_id'} = ++$batch_id unless $self->{'batch_id'} != 0; # this allows batch_id to be passed in for individual label printing 58 bless ($self, $type); 59 return $self; 60 } 61 62 sub add_item { 63 my $self = shift; 64 my $number = shift; 65 ref($self) =~ m/C4::(.+)::.+$/; 66 my $number_type = ($1 eq 'Patroncards' ? 'borrower_number' : 'item_number'); 67 my $query = "INSERT INTO creator_batches (batch_id, $number_type, branch_code, creator) VALUES (?,?,?,?);"; 68 my $sth = C4::Context->dbh->prepare($query); 69 # $sth->{'TraceLevel'} = 3; 70 $sth->execute($self->{'batch_id'}, $number, $self->{'branch_code'}, $1); 71 if ($sth->err) { 72 warn sprintf('Database returned the following error on attempted INSERT: %s', $sth->errstr); 73 return -1; 74 } 75 $query = "SELECT max(label_id) FROM creator_batches WHERE batch_id=? AND $number_type=? AND branch_code=?;"; 76 my $sth1 = C4::Context->dbh->prepare($query); 77 $sth1->execute($self->{'batch_id'}, $number, $self->{'branch_code'}); 78 my $label_id = $sth1->fetchrow_array; 79 push (@{$self->{'items'}}, {$number_type => $number, label_id => $label_id}); 80 $self->{'batch_stat'} = 1; 81 return 0; 82 } -- You are receiving this mail because: You are watching all bug changes.