fixed remaining calls to GetMember() that used old argument style
[koha_fer] / acqui / parcel.pl
index d2296ec..863bb7f 100755 (executable)
@@ -54,11 +54,14 @@ To filter the results list on this given date.
 
 use C4::Auth;
 use C4::Acquisition;
+use C4::Budgets;
 use C4::Bookseller;
 use C4::Biblio;
+use C4::Items;
 use CGI;
 use C4::Output;
 use C4::Dates qw/format_date format_date_in_iso/;
+use JSON;
 
 use strict;
 
@@ -81,6 +84,46 @@ my $resultsperpage = $input->param('resultsperpage');
 $resultsperpage = 20 unless ($resultsperpage);
 $startfrom=0 unless ($startfrom);
 
+if($input->param('format') eq "json"){
+    my ($template, $loggedinuser, $cookie)
+        = get_template_and_user({template_name => "acqui/ajax.tmpl",
+                 query => $input,
+                                type => "intranet",
+                 authnotrequired => 0,
+                 flagsrequired => {acquisition => 'order_receive'},
+                 debug => 1,
+    });
+       
+    my @datas;
+    my $search   = $input->param('search') || '';
+    my $supplier = $input->param('supplierid') || '';
+    my $basketno = $input->param('basketno') || '';
+    my $orderno  = $input->param('orderno') || '';
+
+    my $orders = SearchOrder($orderno, $search, $supplier, $basketno);
+    foreach my $order (@$orders){
+        if($order->{quantityreceived} < $order->{quantity}){
+            my $data = {};
+            
+            $data->{basketno} = $order->{basketno};
+            $data->{ordernumber} = $order->{ordernumber};
+            $data->{title} = $order->{title};
+            $data->{author} = $order->{author};
+            $data->{biblionumber} = $order->{biblionumber};
+            $data->{freight} = $order->{freight};
+            $data->{quantity} = $order->{quantity};
+            $data->{ecost} = $order->{ecost};
+            $data->{ordertotal} = sprintf("%.2f",$order->{ecost}*$order->{quantity});
+            push @datas, $data;
+        }
+    }
+    
+    my $json_text = to_json(\@datas);
+    $template->param(return => $json_text);
+    output_html_with_http_headers $input, $cookie, $template->output;
+    exit;
+}
+
 my ($template, $loggedinuser, $cookie)
     = get_template_and_user({template_name => "acqui/parcel.tmpl",
                  query => $input,
@@ -90,6 +133,46 @@ my ($template, $loggedinuser, $cookie)
                  debug => 1,
 });
 
+my $action = $input->param('action');
+my $ordernumber = $input->param('ordernumber');
+my $biblionumber = $input->param('biblionumber');
+
+# If canceling an order
+if ($action eq "cancelorder") {
+
+    my $error_delitem;
+    my $error_delbiblio;
+
+    # We delete the order
+    DelOrder($biblionumber, $ordernumber);
+
+    # We delete all the items related to this order
+    my @itemnumbers = GetItemnumbersFromOrder($ordernumber);
+    foreach (@itemnumbers) {
+       my $delcheck = DelItemCheck(C4::Context->dbh, $biblionumber, $_);
+       # (should always success, as no issue should exist on item on order)
+       if ($delcheck != 1) { $error_delitem = 1; }
+    }
+
+    # We get the number of remaining items
+    my $itemcount = GetItemsCount($biblionumber);
+    
+    # If there are no items left,
+    if ($itemcount eq 0) {
+       # We delete the record
+       $error_delbiblio = DelBiblio($biblionumber);    
+    }
+
+    if ($error_delitem || $error_delbiblio) {
+       warn $error_delitem;
+       warn $error_delbiblio;
+       if ($error_delitem)   { $template->param(error_delitem => 1); }
+       if ($error_delbiblio) { $template->param(error_delbiblio => 1); }
+    } else {
+       $template->param(success_delorder => 1);
+    }
+}
+
 # If receiving error, report the error (coming from finishrecieve.pl(sic)).
 if( scalar(@rcv_err) ) {
        my $cnt=0;
@@ -150,7 +233,6 @@ for (my $i = 0 ; $i < $countpendings ; $i++) {
     my %line;
     %line = %{$pendingorders->[$i]};
     $line{quantity}+=0;
-    $line{quantrem} = $line{quantity} - $line{quantityreceived};
     $line{quantityreceived}+=0;
     $line{unitprice}+=0;
     $totalPunitprice += $line{unitprice};