[20/40] Work on label printing code.
[koha-ffzg.git] / labels / label-edit-batch.pl
index 52c1d25..0a9877b 100755 (executable)
@@ -27,6 +27,7 @@ use Switch qw(Perl6);
 use CGI;
 use HTML::Template::Pro;
 use Data::Dumper;
+use JSON;
 
 use C4::Auth;
 use C4::Output;
@@ -51,27 +52,45 @@ my $err = 0;
 my $errstr = undef;
 my $db_rows = {};
 my $batch = undef;
-my $display_columns = [ {_label_number  => 'Label Number'},
-                        {_summary       => 'Summary'},
-                        {_item_type     => 'Item Type'},
-                        {_barcode       => 'Barcode'},
-                        {select         => {label => 'Select', value => '_item_number'}},
+my $display_columns = [ {_label_number  => {label => 'Label Number', link_field => 0}},
+                        {_summary       => {label => 'Summary', link_field => 0}},
+                        {_item_type     => {label => 'Item Type', link_field => 0}},
+                        {_barcode       => {label => 'Barcode', link_field => 0}},
+                        {select         => {label => 'Select', value => '_label_id'}},
                       ];
 my $op = $cgi->param('op') || undef;
-my $label_id = $cgi->param('label_id') || undef;
+my @label_ids = $cgi->param('label_id') if $cgi->param('label_id');
 my $batch_id = $cgi->param('element_id') || $cgi->param('batch_id') || undef;
+my @item_numbers = $cgi->param('item_number') if $cgi->param('item_number');
 my $branch_code = get_branch_code_from_name($template->param('LoginBranchname'));
 
 if ($op eq 'remove') {
     $batch = C4::Labels::Batch->retrieve(batch_id => $batch_id);
+    foreach my $label_id (@label_ids) {
     $err = $batch->remove_item($label_id);
-    $errstr = "item $label_id was not removed." if $err;
+    }
+    $errstr = "item(s) not removed from batch $batch_id." if $err;
+#    Something like this would be nice to avoid problems with the browser's 'refresh' button, but it needs an error handling mechanism...
+#    print $cgi->redirect("label-edit-batch.pl?op=edit&batch_id=$batch_id");
+#    exit;
 }
 elsif ($op eq 'delete') {
     $err = C4::Labels::Batch::delete(batch_id => $batch_id, branch_code => $branch_code);
     $errstr = "batch $batch_id was not deleted." if $err;
 }
-else{
+elsif ($op eq 'add') {
+    $batch = C4::Labels::Batch->retrieve(batch_id => $batch_id);
+    $batch = C4::Labels::Batch->new(branch_code => $branch_code) if $batch == -2;
+    foreach my $item_number (@item_numbers) {
+        $err = $batch->add_item($item_number);
+    }
+    $errstr = "item(s) not added to batch $batch_id." if $err;
+}
+elsif ($op eq 'new') {
+    $batch = C4::Labels::Batch->new(branch_code => $branch_code);
+    $batch_id = $batch->get_attr('batch_id');
+}
+else { # display batch
     $batch = C4::Labels::Batch->retrieve(batch_id => $batch_id);
 }