AKZG - speed up parcel screen 500%
authorDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 10 May 2015 20:14:29 +0000 (22:14 +0200)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Mon, 4 Jan 2016 14:56:40 +0000 (15:56 +0100)
C4/Acquisition.pm
C4/Budgets.pm
Koha/Number/Price.pm
acqui/parcel.pl
koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcel.tt

index 4044556..7343230 100644 (file)
@@ -2804,6 +2804,8 @@ sub GetBiblioCountByBasketno {
     return $sth->fetchrow;
 }
 
+use Storable;
+
 # This is *not* the good way to calcul prices
 # But it's how it works at the moment into Koha
 # This will be fixed later.
@@ -2812,6 +2814,16 @@ sub GetBiblioCountByBasketno {
 sub populate_order_with_prices {
     my ($params) = @_;
 
+
+       my $cache_id = $params->{order}->{ordernumber};
+       my $cache_dir = '/tmp/orders';
+       mkdir $cache_dir unless -d $cache_dir;
+       if ( -e "$cache_dir/$cache_id" ) {
+               warn "## cache hit $cache_id\n";
+               return retrieve("$cache_dir/$cache_id");
+       }
+
+
     my $order        = $params->{order};
     my $booksellerid = $params->{booksellerid};
     return unless $booksellerid;
@@ -2873,6 +2885,8 @@ sub populate_order_with_prices {
         $order->{totalgsti} = $order->{unitpricegsti} * $order->{quantity};
     }
 
+       store $order, "$cache_dir/$cache_id";
+
     return $order;
 }
 
index 79012ba..fb47ff4 100644 (file)
@@ -387,8 +387,15 @@ get the budget_name for a given budget_id
 
 =cut
 
+our $cache;
+
 sub GetBudgetName {
     my ( $budget_id ) = @_;
+
+       if ( my $name = $cache->{ $budget_id } ) {
+               return $name;
+       }
+
     my $dbh         = C4::Context->dbh;
     my $sth         = $dbh->prepare(
         qq|
@@ -398,7 +405,9 @@ sub GetBudgetName {
     |);
 
     $sth->execute($budget_id);
-    return $sth->fetchrow_array;
+    my ( $name ) = $sth->fetchrow_array;
+       $cache->{ $budget_id } = $name;
+       return $name;
 }
 
 # -------------------------------------------------------------------
index 2d563f9..8491087 100644 (file)
@@ -35,13 +35,21 @@ sub new {
     return $self;
 }
 
+our $cache;
+
 sub format {
     my ( $self, $params ) = @_;
     return unless defined $self->value;
 
+       if ( my $nr_cache = $cache->{ $self->value } ) {
+               return $nr_cache;
+       }
+
     my $format_params = $self->_format_params( $params );
 
-    return Number::Format->new(%$format_params)->format_price($self->value);
+    my $nr = Number::Format->new(%$format_params)->format_price($self->value);
+       $cache->{ $self->value } = $nr;
+       return $nr;
 }
 
 sub format_for_editing {
index 6dee09a..c8bb404 100755 (executable)
@@ -139,21 +139,21 @@ for my $order ( @orders ) {
     my %line = %{ $order };
     $line{invoice} = $invoice->{invoicenumber};
     $line{holds} = 0;
-    my @itemnumbers = GetItemnumbersFromOrder( $order->{ordernumber} );
-    for my $itemnumber ( @itemnumbers ) {
-        my $holds = GetReservesFromBiblionumber({ biblionumber => $line{biblionumber}, itemnumber => $itemnumber });
-        $line{holds} += scalar( @$holds );
-    }
+#    my @itemnumbers = GetItemnumbersFromOrder( $order->{ordernumber} );
+#    for my $itemnumber ( @itemnumbers ) {
+#        my $holds = GetReservesFromBiblionumber({ biblionumber => $line{biblionumber}, itemnumber => $itemnumber });
+#        $line{holds} += scalar( @$holds );
+#    }
     $line{budget} = GetBudgetByOrderNumber( $line{ordernumber} );
     $foot{$line{gstrate}}{gstrate} = $line{gstrate};
     $foot{$line{gstrate}}{gstvalue} += $line{gstvalue};
     $total_gste += $line{totalgste};
     $total_gsti += $line{totalgsti};
 
-    my $suggestion   = GetSuggestionInfoFromBiblionumber($line{biblionumber});
-    $line{suggestionid}         = $suggestion->{suggestionid};
-    $line{surnamesuggestedby}   = $suggestion->{surnamesuggestedby};
-    $line{firstnamesuggestedby} = $suggestion->{firstnamesuggestedby};
+#    my $suggestion   = GetSuggestionInfoFromBiblionumber($line{biblionumber});
+#    $line{suggestionid}         = $suggestion->{suggestionid};
+#    $line{surnamesuggestedby}   = $suggestion->{surnamesuggestedby};
+#    $line{firstnamesuggestedby} = $suggestion->{firstnamesuggestedby};
 
     if ( $line{parent_ordernumber} != $line{ordernumber} ) {
         if ( grep { $_->{ordernumber} == $line{parent_ordernumber} }
@@ -234,24 +234,29 @@ unless( defined $invoice->{closedate} ) {
         $line{booksellerid} = $booksellerid;
 
         my $biblionumber = $line{'biblionumber'};
-        my $countbiblio = CountBiblioInOrders($biblionumber);
+#        my $countbiblio = CountBiblioInOrders($biblionumber);
+        my $countbiblio;
         my $ordernumber = $line{'ordernumber'};
-        my @subscriptions = GetSubscriptionsId ($biblionumber);
-        my $itemcount = GetItemsCount($biblionumber);
-        my $holds  = GetHolds ($biblionumber);
-        my @items = GetItemnumbersFromOrder( $ordernumber );
+#        my @subscriptions = GetSubscriptionsId ($biblionumber);
+        my @subscriptions = ();
+#        my $itemcount = GetItemsCount($biblionumber);
+               my $itemcount = 1;
+#        my $holds  = GetHolds ($biblionumber);
+               my $holds;
+#        my @items = GetItemnumbersFromOrder( $ordernumber );
+               my @items = ();
         my $itemholds;
-        foreach my $item (@items){
-            my $nb = GetItemHolds($biblionumber, $item);
-            if ($nb){
-                $itemholds += $nb;
-            }
-        }
-
-        my $suggestion   = GetSuggestionInfoFromBiblionumber($line{biblionumber});
-        $line{suggestionid}         = $suggestion->{suggestionid};
-        $line{surnamesuggestedby}   = $suggestion->{surnamesuggestedby};
-        $line{firstnamesuggestedby} = $suggestion->{firstnamesuggestedby};
+#        foreach my $item (@items){
+#            my $nb = GetItemHolds($biblionumber, $item);
+#            if ($nb){
+#                $itemholds += $nb;
+#            }
+#        }
+
+#        my $suggestion   = GetSuggestionInfoFromBiblionumber($line{biblionumber});
+#        $line{suggestionid}         = $suggestion->{suggestionid};
+#        $line{surnamesuggestedby}   = $suggestion->{surnamesuggestedby};
+#        $line{firstnamesuggestedby} = $suggestion->{firstnamesuggestedby};
 
         # if the biblio is not in other orders and if there is no items elsewhere and no subscriptions and no holds we can then show the link "Delete order and Biblio" see bug 5680
         $line{can_del_bib}          = 1 if $countbiblio <= 1 && $itemcount == scalar @items && !(@subscriptions) && !($holds);
index eb263b8..5081c90 100644 (file)
                         [% ELSE %]
                         <a href="/cgi-bin/koha/acqui/cancelorder.pl?ordernumber=[% loop_order.ordernumber %]&biblionumber=[% loop_order.biblionumber %]&referrer=[% "/cgi-bin/koha/acqui/parcel.pl?invoiceid=$invoiceid" | uri %]">Delete order</a><br />
                         [% END %]
+<!--
                         [% IF ( loop_order.can_del_bib ) %]
                         <a href="/cgi-bin/koha/acqui/cancelorder.pl?ordernumber=[% loop_order.ordernumber %]&biblionumber=[% loop_order.biblionumber %]&del_biblio=1&referrer=[% "/cgi-bin/koha/acqui/parcel.pl?invoiceid=$invoiceid" | uri %]">Delete order and catalog record</a><br />
                         [% ELSE %]
                         [% IF ( loop_order.left_holds ) %]
                         <b title="Can't delete catalog record or order, cancel holds first">[% loop_order.holds %] hold(s) left</b>
                         [% END %]
+-->
                     </td>
                 </tr>
         [% END %]