Bug 11141: retain pending order filters during receiving.
authorJonathan Druart <jonathan.druart@biblibre.com>
Fri, 25 Oct 2013 14:35:44 +0000 (16:35 +0200)
committerGalen Charlton <gmc@esilibrary.com>
Thu, 23 Jan 2014 16:03:49 +0000 (16:03 +0000)
On receiving orders, the librarian has to filter again the pending
orders list.

This patch stores the filters in a cookie in order to apply them when
the librarian finish a receive and come back on the pending orders list.

Test plan:
1/ choose a vendor with several baskets and orders.
2/ start to receive an item.
3/ on the pending orders page, add some relevant filters.
4/ receive an item.
5/ you are back on the pending orders page and filters are directly
applied.

Signed-off-by: Nicolas Bravais <nicolas.bravais@gmail.com>
Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Passes all tests and QA script.
Tested with receiving and cancelling the receive process the
filters are kept.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
acqui/finishreceive.pl
acqui/parcel.pl
koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcel.tt

index aeb4394..71bf90c 100755 (executable)
@@ -165,4 +165,4 @@ ModItem(
     $_
 ) foreach GetItemnumbersFromOrder($new_ordernumber);
 
-print $input->redirect("/cgi-bin/koha/acqui/parcel.pl?invoiceid=$invoiceid");
+print $input->redirect("/cgi-bin/koha/acqui/parcel.pl?invoiceid=$invoiceid&sticky_filters=1");
index ad0e51d..94cf987 100755 (executable)
@@ -71,6 +71,7 @@ use C4::Reserves qw/GetReservesFromBiblionumber/;
 use JSON;
 
 my $input=new CGI;
+my $sticky_filters = $input->param('sticky_filters') || 0;
 
 sub get_value_with_gst_params {
     my $value = shift;
@@ -214,12 +215,21 @@ push @book_foot_loop, map { $_ } values %foot;
 my @loop_orders = ();
 unless( defined $invoice->{closedate} ) {
     my $pendingorders;
-    if($op eq "search"){
-        my $search   = $input->param('summaryfilter') || '';
-        my $ean      = $input->param('eanfilter') || '';
-        my $basketname = $input->param('basketfilter') || '';
-        my $orderno  = $input->param('orderfilter') || '';
-        my $basketgroupname = $input->param('basketgroupnamefilter') || '';
+    if ( $op eq "search" or $sticky_filters ) {
+        my ( $search, $ean, $basketname, $orderno, $basketgroupname );
+        if ( $sticky_filters ) {
+            $search = $input->cookie("filter_parcel_summary");
+            $ean = $input->cookie("filter_parcel_ean");
+            $basketname = $input->cookie("filter_parcel_basketname");
+            $orderno = $input->cookie("filter_parcel_orderno");
+            $basketgroupname = $input->cookie("filter_parcel_basketgroupname");
+        } else {
+            $search   = $input->param('summaryfilter') || '';
+            $ean      = $input->param('eanfilter') || '';
+            $basketname = $input->param('basketfilter') || '';
+            $orderno  = $input->param('orderfilter') || '';
+            $basketgroupname = $input->param('basketgroupnamefilter') || '';
+        }
         $pendingorders = SearchOrders({
             booksellerid => $booksellerid,
             basketname => $basketname,
@@ -324,5 +334,6 @@ $template->param(
     total_quantity       => $total_quantity,
     total_gste           => sprintf( "%.2f", $total_gste ),
     total_gsti           => sprintf( "%.2f", $total_gsti ),
+    sticky_filters       => $sticky_filters,
 );
 output_html_with_http_headers $input, $cookie, $template->output;
index 9d5fae9..40f4118 100644 (file)
@@ -6,12 +6,15 @@
 [% INCLUDE 'doc-head-close.inc' %]
 [% INCLUDE 'datatables.inc' %]
 <script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.dataTables.columnFilter.js"></script>
+<script type="text/javascript" src="[% interface %]/lib/jquery/plugins/jquery.cookie.min.js"></script>
 [% INCLUDE 'greybox.inc' %]
 <script type="text/javascript">
 //<![CDATA[
 
     dt_overwrite_html_sorting_localeCompare();
 
+    var sticky_filters = [% sticky_filters %];
+
     $(document).ready(function(){
       if ( $("#pendingt").length ) {
         var pendingt = $("#pendingt").dataTable($.extend(true, {}, dataTablesDefaults, {
         } ) );
       }
 
+      // Keep filters from finishreceive.pl to parcel.pl
+      $.cookie("filter_parcel_summary", $("#summaryfilter").val());
+      $.cookie("filter_parcel_basketname", $("#basketfilter").val());
+      $.cookie("filter_parcel_orderno", $("#orderfilter").val());
+      $.cookie("filter_parcel_basketgroupname", $("#basketgroupnamefilter").val());
+      $.cookie("filter_parcel_ean", $("#eanfilter").val());
+
+      $("#filterform").on('submit', function(){
+        $.cookie("filter_parcel_summary", $("#summaryfilter").val());
+        $.cookie("filter_parcel_basketname", $("#basketfilter").val());
+        $.cookie("filter_parcel_orderno", $("#orderfilter").val());
+        $.cookie("filter_parcel_basketgroupname", $("#basketgroupnamefilter").val());
+        $.cookie("filter_parcel_ean", $("#eanfilter").val());
+      });
+
     });
 
      // Case-insensitive version of jquery's contains function