From fa914bab80b1e5bd1359dd23d6868e33b5695b01 Mon Sep 17 00:00:00 2001
From: Owen Leonard <oleonard@myacpl.org>
Date: Tue, 19 Jun 2018 17:02:14 +0000
Subject: [PATCH] Bug 20966: Add column configuration to table of orders in a
 basket

This patch adds column configuration to the table of orders in a basket.
It replaces the "Show all details" checkbox which previously was used to
show the hidden "tax included" columns. Now those columns are hidden by
default in the columns configuration file.

To test, apply the patch and view a basket with multiple orders. Test
all DataTables functionality (paging, sorting, filtering) including
showing and hiding columns.

Test with both an open and a closed basket.

Signed-off-by: Claire Gravely <claire.gravely@bsz-bw.de>
---
 admin/columns_settings.yml                         |  39 +++++++
 .../intranet-tmpl/prog/en/modules/acqui/basket.tt  | 116 +++++++++------------
 2 files changed, 87 insertions(+), 68 deletions(-)

diff --git a/admin/columns_settings.yml b/admin/columns_settings.yml
index 3e2a672..0108963 100644
--- a/admin/columns_settings.yml
+++ b/admin/columns_settings.yml
@@ -59,6 +59,45 @@ modules:
           columnname: claims_count
         -
           columnname: claimed_date
+    basket:
+      orders:
+        -
+          columnname: basket_number
+        -
+          columnname: order_information
+        -
+          columnname: recommended_retail_price_tax_excluded
+        -
+          columnname: ecost_tax_excluded
+        -
+          columnname: recommended_retail_price_tax_included
+          is_hidden: 1
+        -
+          columnname: ecost_tax_included
+          is_hidden: 1
+        -
+          columnname: quantity
+        -
+          columnname: total_tax_excluded
+        -
+          columnname: total_tax_included
+          is_hidden: 1
+        -
+          columnname: goods_and_services_tax_percentage
+        -
+          columnname: goods_and_services_tax
+        -
+          columnname: fund
+        -
+          columnname: supplier_report
+        -
+          columnname: modify
+          cannot_be_toggled: 1
+          cannot_be_modified: 1
+        -
+          columnname: cancel
+          cannot_be_toggled: 1
+          cannot_be_modified: 1
 
   admin:
     currency:
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basket.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basket.tt
index ec4ed9a..08e371d 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basket.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basket.tt
@@ -344,31 +344,27 @@
 
         <div id="acqui_basket_content" class="yui-g">
         [% IF ( books_loop ) %]
-        <h2>Orders</h2>
-        <label for="show_all_details">
-            <input type="checkbox" style="vertical-align: middle;" id="show_all_details" />
-            Show all details
-        </label>
+            <h2>Orders</h2>
             <table id="orders">
                 <thead>
                     <tr>
                         <th>No.</th>
-                        <th class="anti-the">Order</th>
-                        <th class="tax_excluded">RRP tax exc.</th>
-                        <th class="tax_excluded">ecost tax exc.</th>
-                        <th class="tax_included">RRP tax inc.</th>
-                        <th class="tax_included">ecost tax inc.</th>
+                        <th>Order</th>
+                        <th>RRP tax exc.</th>
+                        <th>ecost tax exc.</th>
+                        <th>RRP tax inc.</th>
+                        <th>ecost tax inc.</th>
                         <th>Qty.</th>
-                        <th class="tax_excluded">Total tax exc. ([% currency | html %])</th>
-                        <th class="tax_included">Total tax inc. ([% currency | html %])</th>
+                        <th>Total tax exc. ([% currency | html %])</th>
+                        <th>Total tax inc. ([% currency | html %])</th>
                         <th>GST %</th>
                         <th>GST</th>
                         <th>Fund</th>
                         <th>Supplier report</th>
                         [% IF ( active ) %]
                             [% UNLESS ( closedate ) %]
-                                <th>Modify</th>
-                                <th>Cancel order</th>
+                                <th class="NoSort">Modify</th>
+                                <th class="NoSort">Cancel order</th>
                             [% END %]
                         [% END %]
                     </tr>
@@ -378,13 +374,13 @@
                     <tr>
                         <th></th>
                         <th>Total (GST [% foot_loo.tax_rate * 100 | html %])</th>
-                        <th class="tax_excluded">&nbsp;</th>
-                        <th class="tax_excluded">&nbsp;</th>
-                        <th class="tax_included">&nbsp;</th>
-                        <th class="tax_included">&nbsp;</th>
+                        <th>&nbsp;</th>
+                        <th>&nbsp;</th>
+                        <th>&nbsp;</th>
+                        <th>&nbsp;</th>
                         <th>[% foot_loo.quantity | html %]</th>
-                        <th class="tax_excluded">[% foot_loo.total_tax_excluded | $Price | html %]</th>
-                        <th class="tax_included">[% foot_loo.total_tax_included | $Price | html %]</th>
+                        <th>[% foot_loo.total_tax_excluded | $Price | html %]</th>
+                        <th>[% foot_loo.total_tax_included | $Price | html %]</th>
                         <th>&nbsp;</th>
                         <th>[% foot_loo.tax_value | $Price | html %]</th>
                         <th>&nbsp;</th>
@@ -400,13 +396,13 @@
                 <tr>
                     <th></th>
                     <th>Total ([% currency | html %])</th>
-                    <th class="tax_excluded">&nbsp;</th>
-                    <th class="tax_excluded">&nbsp;</th>
-                    <th class="tax_included">&nbsp;</th>
-                    <th class="tax_included">&nbsp;</th>
+                    <th>&nbsp;</th>
+                    <th>&nbsp;</th>
+                    <th>&nbsp;</th>
+                    <th>&nbsp;</th>
                     <th>[% total_quantity | html %]</th>
-                    <th class="tax_excluded">[% total_tax_excluded | $Price | html %]</th>
-                    <th class="tax_included">[% total_tax_included | $Price | html %]</th>
+                    <th>[% total_tax_excluded | $Price | html %]</th>
+                    <th>[% total_tax_included | $Price | html %]</th>
                     <th>&nbsp;</th>
                     <th>[% total_tax_value | $Price | html %]</th>
                     <th>&nbsp;</th>
@@ -475,13 +471,13 @@
                         </td>
                         [% SET zero_regex = "^0{1,}\.?0{1,}[^1-9]" %] [%# 0 or 0.0 or 0.00 or 00 or 00.0 or 00.00 or 0.000 ... %]
                         [%# FIXME: use of a regexp is not ideal; bugs 9410 and 10929 suggest better way of handling this %]
-                        <td class="number tax_excluded [% IF books_loo.rrp_tax_excluded.search(zero_regex) %]error[% END %]">[% books_loo.rrp_tax_excluded | $Price | html %]</td>
-                        <td class="number tax_excluded [% IF books_loo.ecost_tax_excluded.search(zero_regex) %]error[% END %]">[% books_loo.ecost_tax_excluded | $Price | html %]</td>
-                        <td class="number tax_included [% IF books_loo.rrp_tax_included.search(zero_regex) %]error[% END %]">[% books_loo.rrp_tax_included | $Price | html %]</td>
-                        <td class="number tax_included [% IF books_loo.ecost_tax_included.search(zero_regex) %]error[% END %]">[% books_loo.ecost_tax_included | $Price | html %]</td>
+                        <td class="number [% IF books_loo.rrp_tax_excluded.search(zero_regex) %]error[% END %]">[% books_loo.rrp_tax_excluded | $Price | html %]</td>
+                        <td class="number [% IF books_loo.ecost_tax_excluded.search(zero_regex) %]error[% END %]">[% books_loo.ecost_tax_excluded | $Price | html %]</td>
+                        <td class="number [% IF books_loo.rrp_tax_included.search(zero_regex) %]error[% END %]">[% books_loo.rrp_tax_included | $Price | html %]</td>
+                        <td class="number [% IF books_loo.ecost_tax_included.search(zero_regex) %]error[% END %]">[% books_loo.ecost_tax_included | $Price | html %]</td>
                         <td class="number [% IF books_loo.quantity.search(zero_regex) %]error[% END %]">[% books_loo.quantity | html %]</td>
-                        <td class="number tax_excluded [% IF books_loo.total_tax_excluded.search(zero_regex) %]error[% END %]">[% books_loo.total_tax_excluded | $Price | html %]</td>
-                        <td class="number tax_included [% IF books_loo.total_tax_included.search(zero_regex) %]error[% END %]">[% books_loo.total_tax_included | $Price | html %]</td>
+                        <td class="number [% IF books_loo.total_tax_excluded.search(zero_regex) %]error[% END %]">[% books_loo.total_tax_excluded | $Price | html %]</td>
+                        <td class="number [% IF books_loo.total_tax_included.search(zero_regex) %]error[% END %]">[% books_loo.total_tax_included | $Price | html %]</td>
                         <td class="number">[% books_loo.tax_rate * 100 | html %]</td>
                         <td class="number [% IF books_loo.tax_value.search(zero_regex) %]error[% END %]">[% books_loo.tax_value | $Price | html %]</td>
                         <td>[% books_loo.budget_name | html %]</td>
@@ -589,13 +585,13 @@
                         </p>
                       [% END %]
                     </td>
-                    <td class="number tax_excluded">[% order.rrp_tax_excluded | $Price | html %]</td>
-                    <td class="number tax_excluded">[% order.ecost_tax_excluded | $Price | html %]</td>
-                    <td class="number tax_included">[% order.rrp_tax_included | $Price | html %]</td>
-                    <td class="number tax_included">[% order.ecost_tax_included | $Price | html %]</td>
+                    <td class="number">[% order.rrp_tax_excluded | $Price | html %]</td>
+                    <td class="number">[% order.ecost_tax_excluded | $Price | html %]</td>
+                    <td class="number">[% order.rrp_tax_included | $Price | html %]</td>
+                    <td class="number">[% order.ecost_tax_included | $Price | html %]</td>
                     <td class="number">[% order.quantity | html %]</td>
-                    <td class="number tax_excluded">[% order.total_tax_excluded | $Price | html %]</td>
-                    <td class="number tax_included">[% order.total_tax_included | $Price | html %]</td>
+                    <td class="number">[% order.total_tax_excluded | $Price | html %]</td>
+                    <td class="number">[% order.total_tax_included | $Price | html %]</td>
                     <td class="number">[% order.tax_rate * 100 | html %]</td>
                     <td class="number">[% order.tax_value | $Price | html %]</td>
                     <td>[% order.budget_name | html %]
@@ -712,29 +708,12 @@
 
 [% MACRO jsinclude BLOCK %]
     [% Asset.js("js/acquisitions-menu.js") | $raw %]
-[% INCLUDE 'datatables.inc' %]
+    [% INCLUDE 'datatables.inc' %]
+    [% INCLUDE 'columns_settings.inc' %]
     [% Asset.js("lib/jquery/plugins/jquery.fixFloat.js") | $raw %]
-    <script type="text/javascript">
-        function updateColumnsVisibility(visible) {
-            if ( visible ) {
-                $("table .tax_excluded, .tax_included").show();
-            } else {
-                [% IF ( listincgst ) %]
-                    $("table .tax_excluded").hide();
-                [% ELSE %]
-                    $("table .tax_included").hide();
-                [% END %]
-            }
-        }
-
+    <script>
         $(document).ready(function() {
             if ( $('#toolbar').length ) {$('#toolbar').fixFloat();}
-            $("#show_all_details").click(function(){
-                updateColumnsVisibility($(this).is(":checked"));
-            });
-
-            $("#show_all_details").prop('checked', false);
-            updateColumnsVisibility(false);
             [% UNLESS ( closedate ) %]
                 $('#addtoBasket').on('show', function () {
                    $(this).find(".modal-body").html($(".acqui_basket_add")[0].outerHTML);
@@ -782,7 +761,7 @@
     </script>
 
     [% UNLESS ( closedate ) %]
-        <script type="text/javascript">
+        <script>
             function transfer_order_popup(ordernumber) {
                 var url = "/cgi-bin/koha/acqui/transferorder.pl?"
                     + "ordernumber=" + ordernumber
@@ -797,7 +776,7 @@
             }
         </script>
     [% ELSE %]
-        <script type="text/javascript">
+        <script>
             $(document).ready(function(){
                 $("#basketgroupid").change(function(){
                     if($(this).val() == "new"){
@@ -807,7 +786,7 @@
             });
         </script>
         [% UNLESS ( grouped ) %]
-            <script type="text/javascript">
+            <script>
                 function confirm_reopen() {
                     var skip = [% IF ( skip_confirm_reopen ) %] 1 [% ELSE %] 0 [% END %];
                     var is_confirmed = skip || confirm(_("Are you sure you want to reopen this basket?"));
@@ -818,19 +797,20 @@
             </script>
         [% END %]
     [% END %]
-    <script type="text/javascript">
+    <script>
         $(document).ready(function() {
-            var orderst = $("#orders").dataTable($.extend(true, {}, dataTablesDefaults, {
-                "sPaginationType": "four_button",
+            var columns_settings = [% ColumnsSettings.GetColumns( 'acqui', 'basket', 'orders', 'json' ) %];
+            KohaTable("orders", {
                 [% IF ( active ) %]
                     "aoColumnDefs": [
-                        [% UNLESS ( closedate ) %]
-                            { "aTargets": [ -1, -2 ], "bSortable": false, "bSearchable": false },
-                        [% END %]
+                        { "bSortable": false, "bSearchable": false, 'aTargets': [ 'NoSort' ] },
                         { "sType": "anti-the", "aTargets": [ "anti-the" ] }
                     ],
                 [% END %]
-            } ) );
+                "sPaginationType": "four_button",
+                "autoWidth": false
+            }, columns_settings);
+
             var cancelledorderst = $("#cancelledorderst").dataTable($.extend(true, {}, dataTablesDefaults, {
                 "sPaginationType": "four_button"
             } ) );
-- 
2.1.4