From 52e33102d8557b4e56e55b904050fe1e9da9f40e Mon Sep 17 00:00:00 2001
From: Jonathan Druart <jonathan.druart@biblibre.com>
Date: Thu, 23 May 2013 16:42:38 +0200
Subject: [PATCH] Bug 10317: The parcel page display whatever if the invoiceid
 is unknown

This patch fixes some stuffs on the parcel page.
1/ Removes dead code
2/ Display an error message if invoiceid is unset or not to refer to an
invoice
3/ Fix a bug in the note ("change note" and "add note" links)

Test plan:
1/ Try to call the invoice page with an existing invoiceid and check
that order results are consistent.
2/ Try without invoiceid or a bad invoiceid and check that an error
message is displayed.
3/ Add and change notes.
---
 acqui/parcel.pl                                    |   31 ++++++++------------
 .../intranet-tmpl/prog/en/modules/acqui/parcel.tt  |   27 +++++++++++------
 2 files changed, 30 insertions(+), 28 deletions(-)

diff --git a/acqui/parcel.pl b/acqui/parcel.pl
index 8e82283..ee96e3f 100755
--- a/acqui/parcel.pl
+++ b/acqui/parcel.pl
@@ -118,6 +118,18 @@ my ($template, $loggedinuser, $cookie)
 });
 
 my $invoiceid = $input->param('invoiceid');
+my $invoice;
+$invoice = GetInvoiceDetails($invoiceid) if $invoiceid;
+
+unless( $invoiceid and $invoice->{invoiceid} ) {
+    $template->param(
+        error_invoice_not_known => 1,
+        no_orders_to_display    => 1
+    );
+    output_html_with_http_headers $input, $cookie, $template->output;
+    exit;
+}
+
 my $op = $input->param('op') // '';
 
 if ($op eq 'cancelreceipt') {
@@ -128,29 +140,10 @@ if ($op eq 'cancelreceipt') {
     }
 }
 
-my $invoice = GetInvoiceDetails($invoiceid);
 my $booksellerid = $invoice->{booksellerid};
 my $bookseller = GetBookSellerFromId($booksellerid);
 my $gst = $bookseller->{gstrate} // C4::Context->preference("gist") // 0;
 my $datereceived = C4::Dates->new();
-my $code            = $input->param('code');
-my @rcv_err         = $input->param('error');
-my @rcv_err_barcode = $input->param('error_bc');
-
-
-
-# If receiving error, report the error (coming from finishrecieve.pl(sic)).
-if( scalar(@rcv_err) ) {
-	my $cnt=0;
-	my $error_loop;
-	for my $err (@rcv_err) {
-		push @$error_loop, { "error_$err" => 1 , barcode => $rcv_err_barcode[$cnt] };
-		$cnt++;
-	}
-	$template->param( receive_error => 1 ,
-						error_loop => $error_loop,
-					);
-}
 
 my $cfstr         = "%.2f";                                                           # currency format string -- could get this from currency table.
 my @parcelitems   = @{ $invoice->{orders} };
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcel.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcel.tt
index 415c7e8..10382cb 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcel.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcel.tt
@@ -14,6 +14,7 @@
     dt_overwrite_html_sorting_localeCompare();
 
     $(document).ready(function(){
+      if ( $("#pendingt").length ) {
         var pendingt = $("#pendingt").dataTable($.extend(true, {}, dataTablesDefaults, {
             "bStateSave": true,
             "iCookieDuration": 60*60*24*1000, // 1000 days
@@ -35,6 +36,8 @@
             ],
             "sPaginationType": "four_button"
         } ) );
+      }
+      if ( $("#receivedt").length ) {
         var receivedt = $("#receivedt").dataTable($.extend(true, {}, dataTablesDefaults, {
             "bStateSave": true,
             "iCookieDuration": 60*60*24*1000, // 1000 days
@@ -55,11 +58,7 @@
             ],
             "sPaginationType": "four_button"
         } ) );
-/*
-    $("#pendingt").tablesorter({
-		headers: { 2: { sorter: 'articles' },3: { sorter: false },8:{sorter:false}}
-    });
-*/
+      }
 
     });
 
@@ -144,7 +143,7 @@
     [% END %]
 
     [% IF (error_cancelling_receipt) %]
-      <div class="error">
+      <div class="dialog error">
       Cannot cancel receipt. Possible reasons :
       <ul>
         <li>
@@ -161,6 +160,13 @@
       </div>
     [% END %]
 
+    [% IF error_invoice_not_known %]
+        <div class="dialog error">
+            The invoice referenced by this invoiceid does not exist.
+        </div>
+    [% END %]
+
+[% UNLESS no_orders_to_display %]
 <div id="acqui_receive_summary">
 <p><strong>Invoice number:</strong> [% invoice %] <strong>Received by:</strong> [% loggedinusername %] <strong>On:</strong> [% formatteddatereceived %]</p>
 </div>
@@ -200,9 +206,9 @@
                 [% END %]
                 <br />
                 [% IF ( loop_order.notes ) %]
-                    <p class="ordernote"><strong>Note: </strong>[% loop_order.notes|html %] [<a href="/cgi-bin/koha/acqui/modordernotes.pl?ordernumber=[% loop_order.ordernumber %]&amp;referrer=/cgi-bin/koha/acqui/parcel.pl%3Fbooksellerid=[% loop_order.booksellerid %]&amp;datereceived=[% loop_order.invoicedatereceived %]&amp;invoice=[% loop_order.invoice %]">Change note</a>]</p>
+                    <p class="ordernote"><strong>Note: </strong>[% loop_order.notes|html %] [<a href="/cgi-bin/koha/acqui/modordernotes.pl?ordernumber=[% loop_order.ordernumber %]&amp;referrer=/cgi-bin/koha/acqui/parcel.pl%3Finvoiceid=[% invoiceid %]">Change note</a>]</p>
                 [% ELSE %]
-                    [<a href="/cgi-bin/koha/acqui/modordernotes.pl?ordernumber=[% loop_order.ordernumber %]&amp;referrer=/cgi-bin/koha/acqui/parcel.pl%3Fbooksellerid=[% loop_order.booksellerid %]&amp;datereceived=[% loop_order.invoicedatereceived %]&amp;invoice=[% loop_order.invoice %]">Add note</a>]
+                    [<a href="/cgi-bin/koha/acqui/modordernotes.pl?ordernumber=[% loop_order.ordernumber %]&amp;referrer=/cgi-bin/koha/acqui/parcel.pl%3Finvoiceid=[% invoiceid %]">Add note</a>]
                 [% END %]
                 </td>
                 <td><a href="/cgi-bin/koha/catalogue/showmarc.pl?id=[% loop_order.biblionumber %]" title="MARC" rel="gb_page_center[600,500]">MARC</a> | <a href="/cgi-bin/koha/catalogue/showmarc.pl?viewas=card&amp;id=[% loop_order.biblionumber %]" title="MARC" rel="gb_page_center[600,500]">Card</a></td>
@@ -333,7 +339,6 @@
 	[% ELSE %]There are no received orders.[% END %]
 </div>
 
-<!--<form action="/cgi-bin/koha/acqui/parcels.pl?booksellerid=[% booksellerid %]" method="post">-->
 [% IF (invoiceclosedate) %]
     <a href="/cgi-bin/koha/acqui/invoice.pl?invoiceid=[% invoiceid %]">View invoice</a>
 [% ELSE %]
@@ -345,8 +350,12 @@
     </form>
 [% END %]
 
+[% END %]
+
 </div>
 </div>
+
+
 <div class="yui-b">
 <form action="/cgi-bin/koha/acqui/parcel.pl" id="filterform" method="post">
         <fieldset class="brief">
-- 
1.7.10.4