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",
100 flagsrequired => {acquisition => 'order_receive'},
106 output_html_with_http_headers $input, $cookie, $template->output;
110 # prepare the form for receiving
111 my $basket = $order->basket;
112 my $currencies = Koha::Acquisition::Currencies->search;
113 my $active_currency = $currencies->get_active;
115 # Check if ACQ framework exists
116 my $acq_fw = GetMarcStructure( 1, 'ACQ', { unsafe => 1 } );
118 $template->param('NoACQframework' => 1);
122 my $creator = Koha::Patrons->find( $order->created_by );
124 my $budget = GetBudget( $order->budget_id );
126 my $datereceived = $order->datereceived ? dt_from_string( $order->datereceived ) : dt_from_string;
128 # get option values for gist syspref
129 my @gst_values = map {
131 }, split( '\|', C4::Context->preference("gist") );
133 my $order_internalnote = $order->order_internalnote;
134 my $order_vendornote = $order->order_vendornote;
135 if ( $order->subscriptionid ) {
136 # Order from a subscription, we will display an history of what has been received
137 my $orders = Koha::Acquisition::Orders->search(
139 subscriptionid => $order->subscriptionid,
140 parent_ordernumber => $order->ordernumber,
141 ordernumber => { '!=' => $order->ordernumber }
144 if ( $order->parent_ordernumber != $order->ordernumber ) {
145 my $parent_order = Koha::Acquisition::Orders->find($order->parent_ordernumber);
146 $order_internalnote = $parent_order->order_internalnote;
147 $order_vendornote = $parent_order->order_vendornote;
157 name => $bookseller->name,
158 active_currency => $active_currency,
159 currencies => scalar $currencies->search({ rate => { '!=' => 1 } }),
160 invoiceincgst => $bookseller->invoiceincgst,
161 bookfund => $budget->{budget_name},
163 invoiceid => $invoice->{invoiceid},
164 invoice => $invoice->{invoicenumber},
165 datereceived => $datereceived,
166 order_internalnote => $order_internalnote,
167 order_vendornote => $order_vendornote,
168 gst_values => \@gst_values,
171 my $suggestion = GetSuggestionInfoFromBiblionumber($order->{biblionumber});
173 $template->param( suggestion => $suggestion );
176 my $patron = Koha::Patrons->find( $loggedinuser )->unblessed;
178 my $periods = GetBudgetPeriods( );
179 foreach my $period (@$periods) {
180 if ($period->{'budget_period_id'} == $budget->{'budget_period_id'}) {
181 $template->{'VARS'}->{'budget_period_description'} = $period->{'budget_period_description'};
183 next if $period->{'budget_period_locked'} || !$period->{'budget_period_description'};
184 my $budget_hierarchy = GetBudgetHierarchy( $period->{'budget_period_id'} );
186 foreach my $r ( @{$budget_hierarchy} ) {
187 next unless ( CanUserUseBudget( $patron, $r, $userflags ) );
188 if ( !defined $r->{budget_amount} || $r->{budget_amount} == 0 ) {
193 b_id => $r->{budget_id},
194 b_txt => $r->{budget_name},
195 b_sel => ( $r->{budget_id} == $order->{budget_id} ) ? 1 : 0,
199 @funds = sort { uc( $a->{b_txt} ) cmp uc( $b->{b_txt} ) } @funds;
203 'id' => $period->{'budget_period_id'},
204 'description' => $period->{'budget_period_description'},
209 $template->{'VARS'}->{'budget_loop'} = \@budget_loop;
211 my $op = $input->param('op');
212 if ($op and $op eq 'edit'){
213 $template->param(edit => 1);
215 output_html_with_http_headers $input, $cookie, $template->output;