Bug 21467: Display a summary line per parent_ordernumber
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Fri, 12 Oct 2018 18:19:28 +0000 (15:19 -0300)
committerNick Clemens <nick@bywatersolutions.com>
Tue, 13 Nov 2018 19:31:11 +0000 (19:31 +0000)
This will help to keep track of the different orders for a given
subscription.

Sponsored-by: BULAC - http://www.bulac.fr/

Signed-off-by: Séverine QUEUNE <severine.queune@bulac.fr>

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>

koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-detail.tt
serials/subscription-detail.pl

index 58f7916..e9e8b4e 100644 (file)
     </div>
     </div>
 
-    [% IF orders.count %]
+    [% IF orders_grouped.size %]
         <div id="acquisition_details">
             <h2>Acquisition details</h2>
             <table id="orders">
                     </tr>
                 </thead>
                 <tbody>
-                [% FOR order IN orders %]
-                    [% IF order.parent_ordernumber != order.ordernumber %]
-                        <tr data-tt-id="[% order.ordernumber | html %]" data-tt-parent-id="[% order.parent_ordernumber | html %]">
-                    [% ELSE %]
-                        <tr data-tt-id="[% order.parent_ordernumber | html %]">
-                    [% END %]
+                [% FOR ordernumber IN orders_grouped.keys %]
+                    [% SET parent_tree_id = loop.count %]
+                    [% SET parent_order = orders_grouped.$ordernumber %]
+                    <tr data-tt-id="[% parent_tree_id | html %]" class="highlighted-row">
+                        <td></td> [%# invoice %]
+                        <td>
+                            [% IF CAN_user_acquisition_order_manage %]
+                                <a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% order.basket.basketno | uri %]">[% parent_order.basket.basketname | html %] ([% parent_order.basket.basketno | html %])</a>
+                            [% ELSE %]
+                                [% parent_order.basket.basketname | html %] ([% parent_order.basket.basketno | html %])
+                            [% END %]
+                        </td>
+                        <td></td> [%# ordernumber %]
+                        <td>[% parent_order.basket.creationdate | $KohaDates %]</td>
+                        <td>[% parent_order.datereceived | $KohaDates %]</td>
+                        <td>
+                          [% SWITCH parent_order.orderstatus %]
+                            [% CASE 'new' %]<span title="status_1">New</span>
+                            [% CASE 'ordered' %]<span title="status_2">Ordered</span>
+                            [% CASE 'partial' %]<span title="status_3">Partial</span>
+                            [% CASE 'complete' %]<span title="status_4">Complete</span>
+                            [% CASE 'cancelled' %]<span title="status_5">Cancelled</span>
+                          [% END %]
+                        </td>
+                        <td></td> [%# internalnote %]
+                        <td></td> [%# vendornote %]
+                        <td></td> [%# fund %]
+                        <td>[% parent_order.quantity | html %]</td>
+                        <td>[% parent_order.ecost_tax_excluded | $Price %] / [% parent_order.ecost_tax_included | $Price %]</td>
+                        <td>[% parent_order.unitprice_tax_excluded | $Price %] / [% parent_order.unitprice_tax_included | $Price %]</td>
+                    </tr>
+                    [% FOR order IN parent_order.orders %]
+                        <tr data-tt-id="0" data-tt-parent-id="[% parent_tree_id | html %]">
                         <td>
                         [% IF order.invoice %]
                             [% IF CAN_user_acquisition %]
                             [% END %]
                         [% END %]
                         </td>
-                        <td>[% IF CAN_user_acquisition_order_manage %]
-                            <a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% order.basketno | uri %]">[% order.basket.basketname | html %] ([% order.basketno | html %])</a>
-                        [% ELSE %]
-                            [% order.basket.basketname | html %] ([% order.basketno | html %])
-                        [% END %]</td>
+                        <td></td> [%# basket %]
                         <td>[% order.ordernumber | html %]</td>
                         <td><span title="[% order.basket.creationdate | uri %]">[% order.basket.creationdate | $KohaDates%]</span></td>
                         <td>[% IF order.datereceived %]<span title="[% order.datereceived | uri %]">[% order.datereceived | $KohaDates %]</span>[% END %]</td>
                             [% END %]
                         </td>
                     </tr>
+                    [% END %]
                 [% END %]
                 </tbody>
             </table>
index 9ea681b..fb8721c 100755 (executable)
@@ -129,7 +129,21 @@ for my $field ( @$additional_fields ) {
 $template->param( additional_fields_for_subscription => $additional_fields );
 
 # FIXME Do we want to hide canceled orders?
-my $orders = Koha::Acquisition::Orders->search( { subscriptionid => $subscriptionid }, { order_by => { -desc => 'parent_ordernumber' } } );
+my $orders = Koha::Acquisition::Orders->search( { subscriptionid => $subscriptionid }, { order_by => [ { -desc => 'timestamp' }, \[ "field(orderstatus, 'ordered', 'partial', 'complete')" ] ] } );
+my $orders_grouped;
+while ( my $o = $orders->next ) {
+    if ( $o->ordernumber == $o->parent_ordernumber ) {
+        $orders_grouped->{$o->parent_ordernumber}->{datereceived} = $o->datereceived;
+        $orders_grouped->{$o->parent_ordernumber}->{orderstatus} = $o->orderstatus;
+        $orders_grouped->{$o->parent_ordernumber}->{basket} = $o->basket;
+    }
+    $orders_grouped->{$o->parent_ordernumber}->{quantity} += $o->quantity;
+    $orders_grouped->{$o->parent_ordernumber}->{ecost_tax_excluded} += sprintf('%.2f', $o->ecost_tax_excluded * $o->quantity);
+    $orders_grouped->{$o->parent_ordernumber}->{ecost_tax_included} += sprintf('%.2f', $o->ecost_tax_included * $o->quantity);
+    $orders_grouped->{$o->parent_ordernumber}->{unitprice_tax_excluded} += sprintf('%.2f', $o->unitprice_tax_excluded * $o->quantity);
+    $orders_grouped->{$o->parent_ordernumber}->{unitprice_tax_included} += sprintf('%.2f', $o->unitprice_tax_included * $o->quantity);
+    push @{$orders_grouped->{$o->parent_ordernumber}->{orders}}, $o;
+}
 
 $template->param(
     subscriptionid => $subscriptionid,
@@ -147,7 +161,7 @@ $template->param(
     intranetcolorstylesheet => C4::Context->preference('intranetcolorstylesheet'),
     irregular_issues => scalar @irregular_issues,
     default_bib_view => $default_bib_view,
-    orders => $orders,
+    orders_grouped => $orders_grouped,
     (uc(C4::Context->preference("marcflavour"))) => 1,
 );