4 #script to receive orders
5 #written by chris@katipo.co.nz 24/2/2000
7 # Copyright 2000-2002 Katipo Communications
9 # This file is part of Koha.
11 # Koha is free software; you can redistribute it and/or modify it
12 # under the terms of the GNU General Public License as published by
13 # the Free Software Foundation; either version 3 of the License, or
14 # (at your option) any later version.
16 # Koha is distributed in the hope that it will be useful, but
17 # WITHOUT ANY WARRANTY; without even the implied warranty of
18 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 # GNU General Public License for more details.
21 # You should have received a copy of the GNU General Public License
22 # along with Koha; if not, see <http://www.gnu.org/licenses>.
30 This script shows all order already receive and all pendings orders.
31 It permit to write a new order as 'received'.
39 to know on what supplier this script has to display receive order.
43 the id of this invoice.
49 The biblionumber of this order.
68 use C4::Budgets qw/ GetBudget GetBudgetHierarchy CanUserUseBudget GetBudgetPeriods /;
75 use Koha::Acquisition::Booksellers;
76 use Koha::Acquisition::Currencies;
77 use Koha::Acquisition::Orders;
78 use Koha::DateUtils qw( dt_from_string );
84 my $dbh = C4::Context->dbh;
85 my $invoiceid = $input->param('invoiceid');
86 my $invoice = GetInvoice($invoiceid);
87 my $booksellerid = $invoice->{booksellerid};
88 my $freight = $invoice->{shipmentcost};
89 my $ordernumber = $input->param('ordernumber');
91 my $bookseller = Koha::Acquisition::Booksellers->find( $booksellerid );
92 my $order = Koha::Acquisition::Orders->find( $ordernumber );
94 my ( $template, $loggedinuser, $cookie, $userflags ) = get_template_and_user(
96 template_name => "acqui/orderreceive.tt",
99 flagsrequired => {acquisition => 'order_receive'},
104 output_html_with_http_headers $input, $cookie, $template->output;
108 # prepare the form for receiving
109 my $basket = $order->basket;
110 my $currencies = Koha::Acquisition::Currencies->search;
111 my $active_currency = $currencies->get_active;
113 # Check if ACQ framework exists
114 my $acq_fw = GetMarcStructure( 1, 'ACQ', { unsafe => 1 } );
116 $template->param('NoACQframework' => 1);
120 my $creator = Koha::Patrons->find( $order->created_by );
122 my $budget = GetBudget( $order->budget_id );
124 my $datereceived = $order->datereceived ? dt_from_string( $order->datereceived ) : dt_from_string;
126 # get option values for TaxRates syspref
127 my @gst_values = map {
129 }, split( '\|', C4::Context->preference("TaxRates") );
131 my $order_internalnote = $order->order_internalnote;
132 my $order_vendornote = $order->order_vendornote;
133 if ( $order->subscriptionid ) {
134 # Order from a subscription, we will display an history of what has been received
135 my $orders = Koha::Acquisition::Orders->search(
137 subscriptionid => $order->subscriptionid,
138 parent_ordernumber => $order->ordernumber,
139 ordernumber => { '!=' => $order->ordernumber }
142 if ( $order->parent_ordernumber != $order->ordernumber ) {
143 my $parent_order = Koha::Acquisition::Orders->find($order->parent_ordernumber);
144 $order_internalnote = $parent_order->order_internalnote;
145 $order_vendornote = $parent_order->order_vendornote;
155 name => $bookseller->name,
156 active_currency => $active_currency,
157 currencies => scalar $currencies->search({ rate => { '!=' => 1 } }),
158 invoiceincgst => $bookseller->invoiceincgst,
159 bookfund => $budget->{budget_name},
161 invoiceid => $invoice->{invoiceid},
162 invoice => $invoice->{invoicenumber},
163 datereceived => $datereceived,
164 order_internalnote => $order_internalnote,
165 order_vendornote => $order_vendornote,
166 gst_values => \@gst_values,
169 my $suggestion = GetSuggestionInfoFromBiblionumber($order->{biblionumber});
171 $template->param( suggestion => $suggestion );
174 my $patron = Koha::Patrons->find( $loggedinuser )->unblessed;
176 my $periods = GetBudgetPeriods( );
177 foreach my $period (@$periods) {
178 if ($period->{'budget_period_id'} == $budget->{'budget_period_id'}) {
179 $template->{'VARS'}->{'budget_period_description'} = $period->{'budget_period_description'};
181 next if $period->{'budget_period_locked'} || !$period->{'budget_period_description'};
182 my $budget_hierarchy = GetBudgetHierarchy( $period->{'budget_period_id'} );
184 foreach my $r ( @{$budget_hierarchy} ) {
185 next unless ( CanUserUseBudget( $patron, $r, $userflags ) );
186 if ( !defined $r->{budget_amount} || $r->{budget_amount} == 0 ) {
191 b_id => $r->{budget_id},
192 b_txt => $r->{budget_name},
193 b_sel => ( $r->{budget_id} == $order->{budget_id} ) ? 1 : 0,
197 @funds = sort { uc( $a->{b_txt} ) cmp uc( $b->{b_txt} ) } @funds;
201 'id' => $period->{'budget_period_id'},
202 'description' => $period->{'budget_period_description'},
207 $template->{'VARS'}->{'budget_loop'} = \@budget_loop;
209 my $op = $input->param('op');
210 if ($op and $op eq 'edit'){
211 $template->param(edit => 1);
213 output_html_with_http_headers $input, $cookie, $template->output;