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.
65 use C4::Acquisition qw( GetInvoice );
66 use C4::Auth qw( get_template_and_user );
67 use C4::Output qw( output_html_with_http_headers );
68 use C4::Budgets qw( GetBudget GetBudgetPeriods GetBudgetPeriod GetBudgetHierarchy CanUserUseBudget );
70 use C4::Biblio qw( GetMarcStructure );
71 use C4::Suggestions qw( GetSuggestion GetSuggestionInfoFromBiblionumber GetSuggestionInfo );
73 use Koha::Acquisition::Booksellers;
74 use Koha::Acquisition::Currencies qw( get_active );
75 use Koha::Acquisition::Orders;
76 use Koha::DateUtils qw( dt_from_string );
82 my $dbh = C4::Context->dbh;
83 my $invoiceid = $input->param('invoiceid');
84 my $invoice = GetInvoice($invoiceid);
85 my $booksellerid = $invoice->{booksellerid};
86 my $freight = $invoice->{shipmentcost};
87 my $ordernumber = $input->param('ordernumber');
89 my $bookseller = Koha::Acquisition::Booksellers->find( $booksellerid );
90 my $order = Koha::Acquisition::Orders->find( $ordernumber );
92 my ( $template, $loggedinuser, $cookie, $userflags ) = get_template_and_user(
94 template_name => "acqui/orderreceive.tt",
97 flagsrequired => {acquisition => 'order_receive'},
102 output_html_with_http_headers $input, $cookie, $template->output;
106 # prepare the form for receiving
107 my $basket = $order->basket;
108 my $currencies = Koha::Acquisition::Currencies->search;
109 my $active_currency = $currencies->get_active;
111 # Check if ACQ framework exists
112 my $acq_fw = GetMarcStructure( 1, 'ACQ', { unsafe => 1 } );
114 $template->param('NoACQframework' => 1);
118 my $creator = Koha::Patrons->find( $order->created_by );
120 my $budget = GetBudget( $order->budget_id );
122 my $datereceived = $order->datereceived ? dt_from_string( $order->datereceived ) : dt_from_string;
124 # get option values for TaxRates syspref
125 my @gst_values = map {
127 }, split( '\|', C4::Context->preference("TaxRates") );
129 my $order_internalnote = $order->order_internalnote;
130 my $order_vendornote = $order->order_vendornote;
131 if ( $order->subscriptionid ) {
132 # Order from a subscription, we will display an history of what has been received
133 my $orders = Koha::Acquisition::Orders->search(
135 subscriptionid => $order->subscriptionid,
136 parent_ordernumber => $order->ordernumber,
137 ordernumber => { '!=' => $order->ordernumber }
140 if ( $order->parent_ordernumber != $order->ordernumber ) {
141 my $parent_order = Koha::Acquisition::Orders->find($order->parent_ordernumber);
142 $order_internalnote = $parent_order->order_internalnote;
143 $order_vendornote = $parent_order->order_vendornote;
153 name => $bookseller->name,
154 active_currency => $active_currency,
155 currencies => $currencies->search({ rate => { '!=' => 1 } }),
156 invoiceincgst => $bookseller->invoiceincgst,
157 bookfund => $budget->{budget_name},
159 invoiceid => $invoice->{invoiceid},
160 invoice => $invoice->{invoicenumber},
161 datereceived => $datereceived,
162 order_internalnote => $order_internalnote,
163 order_vendornote => $order_vendornote,
164 gst_values => \@gst_values,
167 my $suggestion = GetSuggestionInfoFromBiblionumber($order->biblionumber);
169 $template->param( suggestion => $suggestion );
172 my $patron = Koha::Patrons->find( $loggedinuser )->unblessed;
174 my $periods = GetBudgetPeriods( );
175 foreach my $period (@$periods) {
176 if ($period->{'budget_period_id'} == $budget->{'budget_period_id'}) {
177 $template->{'VARS'}->{'budget_period_description'} = $period->{'budget_period_description'};
179 next if $period->{'budget_period_locked'} || !$period->{'budget_period_description'};
180 my $budget_hierarchy = GetBudgetHierarchy( $period->{'budget_period_id'} );
182 foreach my $r ( @{$budget_hierarchy} ) {
183 next unless ( CanUserUseBudget( $patron, $r, $userflags ) );
184 if ( !defined $r->{budget_amount} || $r->{budget_amount} == 0 ) {
189 b_id => $r->{budget_id},
190 b_txt => $r->{budget_name},
191 b_sel => ( $r->{budget_id} == $order->budget_id ) ? 1 : 0,
195 @funds = sort { uc( $a->{b_txt} ) cmp uc( $b->{b_txt} ) } @funds;
199 'id' => $period->{'budget_period_id'},
200 'description' => $period->{'budget_period_description'},
205 $template->{'VARS'}->{'budget_loop'} = \@budget_loop;
207 my $op = $input->param('op');
208 if ($op and $op eq 'edit'){
209 $template->param(edit => 1);
211 output_html_with_http_headers $input, $cookie, $template->output;