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);
121 my $AcqCreateItem = $basket->effective_create_items;
122 if ($AcqCreateItem eq 'receiving') {
124 AcqCreateItemReceiving => 1,
125 UniqueItemFields => C4::Context->preference('UniqueItemFields'),
127 } elsif ($AcqCreateItem eq 'ordering') {
128 my $fw = ($acq_fw) ? 'ACQ' : '';
129 my $items = $order->items;
130 $template->param(items => $items);
133 $order->quantityreceived = '' if $order->quantityreceived == 0;
135 my $unitprice = $order->unitprice;
137 if ( $bookseller->invoiceincgst ) {
138 $rrp = $order->rrp_tax_included;
139 $ecost = $order->ecost_tax_included;
140 unless ( $unitprice != 0 and defined $unitprice) {
141 $unitprice = $order->ecost_tax_included;
144 $rrp = $order->rrp_tax_excluded;
145 $ecost = $order->ecost_tax_excluded;
146 unless ( $unitprice != 0 and defined $unitprice) {
147 $unitprice = $order->ecost_tax_excluded;
152 if( defined $order->tax_rate_on_receiving ) {
153 $tax_rate = $order->tax_rate_on_receiving + 0.0;
155 $tax_rate = $order->tax_rate_on_ordering + 0.0;
158 my $creator = Koha::Patrons->find( $order->created_by );
160 my $budget = GetBudget( $order->budget_id );
162 my $datereceived = $order->datereceived ? dt_from_string( $order->datereceived ) : dt_from_string;
164 # get option values for gist syspref
165 my @gst_values = map {
167 }, split( '\|', C4::Context->preference("gist") );
169 my $order_internalnote = $order->order_internalnote;
170 my $order_vendornote = $order->order_vendornote;
171 if ( $order->subscriptionid ) {
172 # Order from a subscription, we will display an history of what has been received
173 my $orders = Koha::Acquisition::Orders->search(
175 subscriptionid => $order->subscriptionid,
176 parent_ordernumber => $order->ordernumber,
177 ordernumber => { '!=' => $order->ordernumber }
180 if ( $order->parent_ordernumber != $order->ordernumber ) {
181 my $parent_order = Koha::Acquisition::Orders->find($order->parent_ordernumber);
182 $order_internalnote = $parent_order->order_internalnote;
183 $order_vendornote = $parent_order->order_vendornote;
191 AcqCreateItem => $AcqCreateItem,
195 name => $bookseller->name,
196 active_currency => $active_currency,
197 currencies => scalar $currencies->search({ rate => { '!=' => 1 } }),
198 invoiceincgst => $bookseller->invoiceincgst,
199 bookfund => $budget->{budget_name},
203 invoiceid => $invoice->{invoiceid},
204 invoice => $invoice->{invoicenumber},
205 datereceived => $datereceived,
206 order_internalnote => $order_internalnote,
207 order_vendornote => $order_vendornote,
208 gst_values => \@gst_values,
211 my $suggestion = GetSuggestionInfoFromBiblionumber($order->{biblionumber});
213 $template->param( suggestion => $suggestion );
216 my $patron = Koha::Patrons->find( $loggedinuser )->unblessed;
218 my $periods = GetBudgetPeriods( );
219 foreach my $period (@$periods) {
220 if ($period->{'budget_period_id'} == $budget->{'budget_period_id'}) {
221 $template->{'VARS'}->{'budget_period_description'} = $period->{'budget_period_description'};
223 next if $period->{'budget_period_locked'} || !$period->{'budget_period_description'};
224 my $budget_hierarchy = GetBudgetHierarchy( $period->{'budget_period_id'} );
226 foreach my $r ( @{$budget_hierarchy} ) {
227 next unless ( CanUserUseBudget( $patron, $r, $userflags ) );
230 b_id => $r->{budget_id},
231 b_txt => $r->{budget_name},
232 b_sel => ( $r->{budget_id} == $order->{budget_id} ) ? 1 : 0,
236 @funds = sort { uc( $a->{b_txt} ) cmp uc( $b->{b_txt} ) } @funds;
240 'id' => $period->{'budget_period_id'},
241 'description' => $period->{'budget_period_description'},
246 $template->{'VARS'}->{'budget_loop'} = \@budget_loop;
248 my $op = $input->param('op');
249 if ($op and $op eq 'edit'){
250 $template->param(edit => 1);
252 output_html_with_http_headers $input, $cookie, $template->output;