X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=acqui%2Fparcel.pl;h=d2b2e001afaadf45905bf2ba80add627a153cbe9;hb=refs%2Fheads%2Fkoha_ffzg;hp=c1e0c56eee7741effe435dca125cf2dbb5378e6f;hpb=b29493265b3ae9f660eee2d4b911da036d100b0d;p=koha.git diff --git a/acqui/parcel.pl b/acqui/parcel.pl index c1e0c56eee..d2b2e001af 100755 --- a/acqui/parcel.pl +++ b/acqui/parcel.pl @@ -54,8 +54,7 @@ To filter the results list on this given date. =cut -use strict; -use warnings; +use Modern::Perl; use C4::Auth; use C4::Acquisition; @@ -68,6 +67,7 @@ use C4::Suggestions; use Koha::Acquisition::Baskets; use Koha::Acquisition::Bookseller; +use Koha::Acquisition::Orders; use Koha::Biblios; use Koha::DateUtils; use Koha::Biblios; @@ -125,7 +125,9 @@ my $total_tax_included = 0; my $subtotal_for_funds; for my $order ( @orders ) { $order->{'unitprice'} += 0; + $order->{'booksellerid'} = $booksellerid; # required for basket group links + my $order_object = Koha::Acquisition::Orders->find($order->{ordernumber}); if ( $bookseller->invoiceincgst ) { $order->{ecost} = $order->{ecost_tax_included}; $order->{unitprice} = $order->{unitprice_tax_included}; @@ -135,14 +137,14 @@ for my $order ( @orders ) { $order->{unitprice} = $order->{unitprice_tax_excluded}; } - $order->{total} = $order->{unitprice} * $order->{quantity}; + $order->{total} = get_rounded_price($order->{unitprice}) * $order->{quantity}; my %line = %{ $order }; $line{invoice} = $invoice->{invoicenumber}; - $line{holds} = 0; - my @itemnumbers = GetItemnumbersFromOrder( $order->{ordernumber} ); + my @itemnumbers = $order_object->items->get_column('itemnumber'); my $biblio = Koha::Biblios->find( $line{biblionumber} ); - $line{holds} = $biblio ? $biblio->current_holds->search( + $line{total_holds} = $biblio ? $biblio->holds->count : 0; + $line{item_holds} = $biblio ? $biblio->current_holds->search( { itemnumber => { -in => \@itemnumbers }, } @@ -153,8 +155,8 @@ for my $order ( @orders ) { $line{tax_rate} = $line{tax_rate_on_receiving}; $foot{$line{tax_rate}}{tax_rate} = $line{tax_rate}; $foot{$line{tax_rate}}{tax_value} += $line{tax_value}; - $total_tax_excluded += $line{unitprice_tax_excluded} * $line{quantity}; - $total_tax_included += $line{unitprice_tax_included} * $line{quantity}; + $total_tax_excluded += get_rounded_price($line{unitprice_tax_excluded}) * $line{quantity}; + $total_tax_included += get_rounded_price($line{unitprice_tax_included}) * $line{quantity}; my $suggestion = GetSuggestionInfoFromBiblionumber($line{biblionumber}); $line{suggestionid} = $suggestion->{suggestionid}; @@ -173,7 +175,7 @@ for my $order ( @orders ) { my $budget_name = GetBudgetName( $line{budget_id} ); $line{budget_name} = $budget_name; - $subtotal_for_funds->{ $line{budget_name} }{ecost} += $order->{ecost} * $order->{quantity}; + $subtotal_for_funds->{ $line{budget_name} }{ecost} += get_rounded_price($order->{ecost}) * $order->{quantity}; $subtotal_for_funds->{ $line{budget_name} }{unitprice} += $order->{total}; push @loop_received, \%line; @@ -231,7 +233,7 @@ unless( defined $invoice->{closedate} ) { } else { $order->{ecost} = $order->{ecost_tax_excluded}; } - $order->{total} = $order->{ecost} * $order->{quantity}; + $order->{total} = get_rounded_price($order->{ecost}) * $order->{quantity}; my %line = %$order; @@ -240,13 +242,18 @@ unless( defined $invoice->{closedate} ) { my $biblionumber = $line{'biblionumber'}; my $biblio = Koha::Biblios->find( $biblionumber ); + if ( ! $biblio ) { + use Data::Dump qw(dump); + warn "FATAL ERROR: biblionumber $biblionumber not found in line: ",dump( \%line ); + } my $countbiblio = CountBiblioInOrders($biblionumber); my $ordernumber = $line{'ordernumber'}; - my $cnt_subscriptions = $biblio->subscriptions->count; - my $itemcount = $biblio->items->count; - my $holds_count = $biblio->holds->count; - my @items = GetItemnumbersFromOrder( $ordernumber ); - my $itemholds = $biblio ? $biblio->holds->search({ itemnumber => { -in => \@items } })->count : 0; + my $order_object = Koha::Acquisition::Orders->find($ordernumber); + my $cnt_subscriptions = $biblio ? $biblio->subscriptions->count: 0; + my $itemcount = $biblio ? $biblio->items->count : 0; + my $holds_count = $biblio ? $biblio->holds->count : 0; + my @itemnumbers = $order_object->items->get_column('itemnumber'); + my $itemholds = $biblio ? $biblio->holds->search({ itemnumber => { -in => \@itemnumbers } })->count : 0; my $suggestion = GetSuggestionInfoFromBiblionumber($line{biblionumber}); $line{suggestionid} = $suggestion->{suggestionid}; @@ -254,8 +261,8 @@ unless( defined $invoice->{closedate} ) { $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 && !($cnt_subscriptions) && !($holds_count); - $line{items} = ($itemcount) - (scalar @items); + $line{can_del_bib} = 1 if $countbiblio <= 1 && $itemcount == scalar @itemnumbers && !($cnt_subscriptions) && !($holds_count); + $line{items} = ($itemcount) - (scalar @itemnumbers); $line{left_item} = 1 if $line{items} >= 1; $line{left_biblio} = 1 if $countbiblio > 1; $line{biblios} = $countbiblio - 1;