X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=acqui%2Forderreceive.pl;h=f380a675e5b762ef0d1b990505c3afbe0fa5bd69;hb=2b963d3683a639b27e90d0a9bf31d45e9eaae36f;hp=671cc4669c6ac0f99114bf0a8f5b0fabd7d8f982;hpb=baf78b2a332aa5416f7cbf2020609aa753debda2;p=srvgit diff --git a/acqui/orderreceive.pl b/acqui/orderreceive.pl index 671cc4669c..f380a675e5 100755 --- a/acqui/orderreceive.pl +++ b/acqui/orderreceive.pl @@ -58,25 +58,26 @@ The biblionumber of this order. =cut -use strict; -use warnings; +use Modern::Perl; use CGI qw ( -utf8 ); use C4::Context; -use C4::Koha; # GetItemTypes -use C4::Acquisition; -use C4::Auth; -use C4::Output; -use C4::Budgets qw/ GetBudget GetBudgetHierarchy CanUserUseBudget GetBudgetPeriods /; +use C4::Acquisition qw( GetInvoice ); +use C4::Auth qw( get_template_and_user ); +use C4::Output qw( output_html_with_http_headers ); +use C4::Budgets qw( GetBudget GetBudgetPeriods GetBudgetPeriod GetBudgetHierarchy CanUserUseBudget ); use C4::Members; -use C4::Items; -use C4::Biblio; -use C4::Suggestions; +use C4::Biblio qw( GetMarcStructure ); +use C4::Suggestions qw( GetSuggestion GetSuggestionInfoFromBiblionumber GetSuggestionInfo ); -use Koha::Acquisition::Bookseller; +use Koha::Acquisition::Booksellers; +use Koha::Acquisition::Currencies qw( get_active ); +use Koha::Acquisition::Orders; use Koha::DateUtils qw( dt_from_string ); +use Koha::ItemTypes; +use Koha::Patrons; -my $input = new CGI; +my $input = CGI->new; my $dbh = C4::Context->dbh; my $invoiceid = $input->param('invoiceid'); @@ -85,30 +86,27 @@ my $booksellerid = $invoice->{booksellerid}; my $freight = $invoice->{shipmentcost}; my $ordernumber = $input->param('ordernumber'); -my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid }); -my $results; -$results = SearchOrders({ - ordernumber => $ordernumber -}) if $ordernumber; +my $bookseller = Koha::Acquisition::Booksellers->find( $booksellerid ); +my $order = Koha::Acquisition::Orders->find( $ordernumber ); my ( $template, $loggedinuser, $cookie, $userflags ) = get_template_and_user( { template_name => "acqui/orderreceive.tt", query => $input, type => "intranet", - authnotrequired => 0, flagsrequired => {acquisition => 'order_receive'}, - debug => 1, } ); -unless ( $results and @$results) { +unless ( $order ) { output_html_with_http_headers $input, $cookie, $template->output; exit; } # prepare the form for receiving -my $order = $results->[0]; +my $basket = $order->basket; +my $currencies = Koha::Acquisition::Currencies->search; +my $active_currency = $currencies->get_active; # Check if ACQ framework exists my $acq_fw = GetMarcStructure( 1, 'ACQ', { unsafe => 1 } ); @@ -116,111 +114,62 @@ unless($acq_fw) { $template->param('NoACQframework' => 1); } -my $AcqCreateItem = C4::Context->preference('AcqCreateItem'); -if ($AcqCreateItem eq 'receiving') { - $template->param( - AcqCreateItemReceiving => 1, - UniqueItemFields => C4::Context->preference('UniqueItemFields'), - ); -} elsif ($AcqCreateItem eq 'ordering') { - my $fw = ($acq_fw) ? 'ACQ' : ''; - my @itemnumbers = GetItemnumbersFromOrder($order->{ordernumber}); - my @items; - foreach (@itemnumbers) { - my $item = GetItem($_); - my $av; - $av = Koha::AuthorisedValues->search_by_koha_field({frameworkcode => $fw, kohafield => 'items.notforloan', authorised_value => $item->{notforloan} }); - $item->{notforloan} = $av->count ? $av->next->lib : ''; - - $av = Koha::AuthorisedValues->search_by_koha_field({frameworkcode => $fw, kohafield => 'items.restricted', authorised_value => $item->{restricted} }); - $item->{restricted} = $av->count ? $av->next->lib : ''; - - $av = Koha::AuthorisedValues->search_by_koha_field({frameworkcode => $fw, kohafield => 'items.location', authorised_value => $item->{location} }); - $item->{location} = $av->count ? $av->next->lib : ''; - - $av = Koha::AuthorisedValues->search_by_koha_field({frameworkcode => $fw, kohafield => 'items.collection', authorised_value => $item->{collection} }); - $item->{collection} = $av->count ? $av->next->lib : ''; - - $av = Koha::AuthorisedValues->search_by_koha_field({frameworkcode => $fw, kohafield => 'items.materials', authorised_value => $item->{materials} }); - $item->{materials} = $av->count ? $av->next->lib : ''; - - my $itemtype = getitemtypeinfo($item->{itype}); - $item->{itemtype} = $itemtype->{description}; - push @items, $item; - } - $template->param(items => \@items); -} -$order->{quantityreceived} = '' if $order->{quantityreceived} == 0; -$order->{unitprice} = '' if $order->{unitprice} == 0; - -my $rrp; -my $ecost; -my $unitprice; -if ( $bookseller->{listincgst} ) { - if ( $bookseller->{invoiceincgst} ) { - $rrp = $order->{rrp}; - $ecost = $order->{ecost}; - $unitprice = $order->{unitprice}; - } else { - $rrp = $order->{rrp} / ( 1 + $order->{gstrate} ); - $ecost = $order->{ecost} / ( 1 + $order->{gstrate} ); - $unitprice = $order->{unitprice} / ( 1 + $order->{gstrate} ); - } -} else { - if ( $bookseller->{invoiceincgst} ) { - $rrp = $order->{rrp} * ( 1 + $order->{gstrate} ); - $ecost = $order->{ecost} * ( 1 + $order->{gstrate} ); - $unitprice = $order->{unitprice} * ( 1 + $order->{gstrate} ); - } else { - $rrp = $order->{rrp}; - $ecost = $order->{ecost}; - $unitprice = $order->{unitprice}; - } - } +my $creator = Koha::Patrons->find( $order->created_by ); -my $suggestion = GetSuggestionInfoFromBiblionumber($order->{biblionumber}); +my $budget = GetBudget( $order->budget_id ); -my $authorisedby = $order->{authorisedby}; -my $member = GetMember( borrowernumber => $authorisedby ); +my $datereceived = $order->datereceived || dt_from_string; -my $budget = GetBudget( $order->{budget_id} ); +# get option values for TaxRates syspref +my @gst_values = map { + option => $_ + 0.0 +}, split( '\|', C4::Context->preference("TaxRates") ); -my $datereceived = $order->{datereceived} ? dt_from_string( $order->{datereceived} ) : dt_from_string; +my $order_internalnote = $order->order_internalnote; +my $order_vendornote = $order->order_vendornote; +if ( $order->subscriptionid ) { + # Order from a subscription, we will display an history of what has been received + my $orders = Koha::Acquisition::Orders->search( + { + subscriptionid => $order->subscriptionid, + parent_ordernumber => $order->ordernumber, + ordernumber => { '!=' => $order->ordernumber } + } + ); + if ( $order->parent_ordernumber != $order->ordernumber ) { + my $parent_order = Koha::Acquisition::Orders->find($order->parent_ordernumber); + $order_internalnote = $parent_order->order_internalnote; + $order_vendornote = $parent_order->order_vendornote; + } + $template->param( + orders => $orders, + ); +} $template->param( - AcqCreateItem => $AcqCreateItem, - count => 1, - biblionumber => $order->{'biblionumber'}, - ordernumber => $order->{'ordernumber'}, - subscriptionid => $order->{subscriptionid}, - booksellerid => $order->{'booksellerid'}, + order => $order, freight => $freight, - name => $bookseller->{'name'}, - title => $order->{'title'}, - author => $order->{'author'}, - copyrightdate => $order->{'copyrightdate'}, - isbn => $order->{'isbn'}, - seriestitle => $order->{'seriestitle'}, + name => $bookseller->name, + active_currency => $active_currency, + currencies => $currencies->search({ rate => { '!=' => 1 } }), + invoiceincgst => $bookseller->invoiceincgst, bookfund => $budget->{budget_name}, - quantity => $order->{'quantity'}, - quantityreceivedplus1 => $order->{'quantityreceived'} + 1, - quantityreceived => $order->{'quantityreceived'}, - rrp => sprintf( "%.2f", $rrp ), - ecost => sprintf( "%.2f", $ecost ), - memberfirstname => $member->{firstname} || "", - membersurname => $member->{surname} || "", + creator => $creator, invoiceid => $invoice->{invoiceid}, invoice => $invoice->{invoicenumber}, datereceived => $datereceived, - order_internalnote => $order->{order_internalnote}, - order_vendornote => $order->{order_vendornote}, - suggestionid => $suggestion->{suggestionid}, - surnamesuggestedby => $suggestion->{surnamesuggestedby}, - firstnamesuggestedby => $suggestion->{firstnamesuggestedby}, + order_internalnote => $order_internalnote, + order_vendornote => $order_vendornote, + gst_values => \@gst_values, ); -my $borrower = GetMember( 'borrowernumber' => $loggedinuser ); +my $suggestion = GetSuggestionInfoFromBiblionumber($order->biblionumber); +if ( $suggestion ) { + $template->param( suggestion => $suggestion ); +} + +my $patron = Koha::Patrons->find( $loggedinuser )->unblessed; my @budget_loop; my $periods = GetBudgetPeriods( ); foreach my $period (@$periods) { @@ -231,7 +180,7 @@ foreach my $period (@$periods) { my $budget_hierarchy = GetBudgetHierarchy( $period->{'budget_period_id'} ); my @funds; foreach my $r ( @{$budget_hierarchy} ) { - next unless ( CanUserUseBudget( $borrower, $r, $userflags ) ); + next unless ( CanUserUseBudget( $patron, $r, $userflags ) ); if ( !defined $r->{budget_amount} || $r->{budget_amount} == 0 ) { next; } @@ -239,7 +188,7 @@ foreach my $period (@$periods) { { b_id => $r->{budget_id}, b_txt => $r->{budget_name}, - b_sel => ( $r->{budget_id} == $order->{budget_id} ) ? 1 : 0, + b_sel => ( $r->{budget_id} == $order->budget_id ) ? 1 : 0, }; } @@ -255,15 +204,6 @@ foreach my $period (@$periods) { $template->{'VARS'}->{'budget_loop'} = \@budget_loop; -# regardless of the content of $unitprice e.g 0 or '' or any string will return in these cases 0.00 -# and the 'IF' in the .tt will show 0.00 and not 'ecost' (see BZ 7129) -# So if $unitprice == 0 we don't create unitprice -if ( $unitprice != 0) { - $template->param( - unitprice => sprintf( "%.2f", $unitprice), - ); -} - my $op = $input->param('op'); if ($op and $op eq 'edit'){ $template->param(edit => 1);