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
::Orders
;
77 use Koha
::DateUtils
qw( dt_from_string );
83 my $dbh = C4
::Context
->dbh;
84 my $invoiceid = $input->param('invoiceid');
85 my $invoice = GetInvoice
($invoiceid);
86 my $booksellerid = $invoice->{booksellerid
};
87 my $freight = $invoice->{shipmentcost
};
88 my $ordernumber = $input->param('ordernumber');
90 my $bookseller = Koha
::Acquisition
::Booksellers
->find( $booksellerid );
92 $results = SearchOrders
({
93 ordernumber
=> $ordernumber
96 my ( $template, $loggedinuser, $cookie, $userflags ) = get_template_and_user
(
98 template_name
=> "acqui/orderreceive.tt",
101 authnotrequired
=> 0,
102 flagsrequired
=> {acquisition
=> 'order_receive'},
107 unless ( $results and @
$results) {
108 output_html_with_http_headers
$input, $cookie, $template->output;
112 # prepare the form for receiving
113 my $order = $results->[0];
114 my $basket = Koha
::Acquisition
::Orders
->find( $ordernumber )->basket;
116 # Check if ACQ framework exists
117 my $acq_fw = GetMarcStructure
( 1, 'ACQ', { unsafe
=> 1 } );
119 $template->param('NoACQframework' => 1);
122 my $AcqCreateItem = $basket->effective_create_items;
123 if ($AcqCreateItem eq 'receiving') {
125 AcqCreateItemReceiving
=> 1,
126 UniqueItemFields
=> C4
::Context
->preference('UniqueItemFields'),
128 } elsif ($AcqCreateItem eq 'ordering') {
129 my $fw = ($acq_fw) ?
'ACQ' : '';
130 my @itemnumbers = GetItemnumbersFromOrder
($order->{ordernumber
});
132 foreach (@itemnumbers) {
133 my $item = GetItem
($_);
135 $descriptions = Koha
::AuthorisedValues
->get_description_by_koha_field({frameworkcode
=> $fw, kohafield
=> 'items.notforloan', authorised_value
=> $item->{notforloan
} });
136 $item->{notforloan
} = $descriptions->{lib
} // '';
138 $descriptions = Koha
::AuthorisedValues
->get_description_by_koha_field({frameworkcode
=> $fw, kohafield
=> 'items.restricted', authorised_value
=> $item->{restricted
} });
139 $item->{restricted
} = $descriptions->{lib
} // '';
141 $descriptions = Koha
::AuthorisedValues
->get_description_by_koha_field({frameworkcode
=> $fw, kohafield
=> 'items.location', authorised_value
=> $item->{location
} });
142 $item->{location
} = $descriptions->{lib
} // '';
144 $descriptions = Koha
::AuthorisedValues
->get_description_by_koha_field({frameworkcode
=> $fw, kohafield
=> 'items.collection', authorised_value
=> $item->{collection
} });
145 $item->{collection
} = $descriptions->{lib
} // '';
147 $descriptions = Koha
::AuthorisedValues
->get_description_by_koha_field({frameworkcode
=> $fw, kohafield
=> 'items.materials', authorised_value
=> $item->{materials
} });
148 $item->{materials
} = $descriptions->{lib
} // '';
150 my $itemtype = Koha
::ItemTypes
->find( $item->{itype
} );
151 if (defined $itemtype) {
152 $item->{itemtype
} = $itemtype->description; # FIXME Should not it be translated_description?
156 $template->param(items
=> \
@items);
159 $order->{quantityreceived
} = '' if $order->{quantityreceived
} == 0;
161 my $unitprice = $order->{unitprice
};
163 if ( $bookseller->invoiceincgst ) {
164 $rrp = $order->{rrp_tax_included
};
165 $ecost = $order->{ecost_tax_included
};
166 unless ( $unitprice != 0 and defined $unitprice) {
167 $unitprice = $order->{ecost_tax_included
};
170 $rrp = $order->{rrp_tax_excluded
};
171 $ecost = $order->{ecost_tax_excluded
};
172 unless ( $unitprice != 0 and defined $unitprice) {
173 $unitprice = $order->{ecost_tax_excluded
};
178 if( defined $order->{tax_rate_on_receiving
} ) {
179 $tax_rate = $order->{tax_rate_on_receiving
} + 0.0;
181 $tax_rate = $order->{tax_rate_on_ordering
} + 0.0;
184 my $suggestion = GetSuggestionInfoFromBiblionumber
($order->{biblionumber
});
186 my $authorisedby = $order->{authorisedby
};
187 my $authorised_patron = Koha
::Patrons
->find( $authorisedby );
188 if ( $authorised_patron ) { # This should not happen unless there was a migration issue (or very old install?)
190 memberfirstname
=> $authorised_patron->firstname || "",
191 membersurname
=> $authorised_patron->surname || "",
195 my $budget = GetBudget
( $order->{budget_id
} );
197 my $datereceived = $order->{datereceived
} ? dt_from_string
( $order->{datereceived
} ) : dt_from_string
;
199 # get option values for gist syspref
200 my @gst_values = map {
202 }, split( '\|', C4
::Context
->preference("gist") );
205 AcqCreateItem
=> $AcqCreateItem,
207 biblionumber
=> $order->{'biblionumber'},
208 ordernumber
=> $order->{'ordernumber'},
209 subscriptionid
=> $order->{subscriptionid
},
210 booksellerid
=> $order->{'booksellerid'},
212 name
=> $bookseller->name,
213 title
=> $order->{'title'},
214 author
=> $order->{'author'},
215 copyrightdate
=> $order->{'copyrightdate'},
216 isbn
=> $order->{'isbn'},
217 seriestitle
=> $order->{'seriestitle'},
218 bookfund
=> $budget->{budget_name
},
219 quantity
=> $order->{'quantity'},
220 quantityreceivedplus1
=> $order->{'quantityreceived'} + 1,
221 quantityreceived
=> $order->{'quantityreceived'},
224 unitprice
=> $unitprice,
225 tax_rate
=> $tax_rate,
226 invoiceid
=> $invoice->{invoiceid
},
227 invoice
=> $invoice->{invoicenumber
},
228 datereceived
=> $datereceived,
229 order_internalnote
=> $order->{order_internalnote
},
230 order_vendornote
=> $order->{order_vendornote
},
231 suggestionid
=> $suggestion->{suggestionid
},
232 surnamesuggestedby
=> $suggestion->{surnamesuggestedby
},
233 firstnamesuggestedby
=> $suggestion->{firstnamesuggestedby
},
234 gst_values
=> \
@gst_values,
237 my $patron = Koha
::Patrons
->find( $loggedinuser )->unblessed;
239 my $periods = GetBudgetPeriods
( );
240 foreach my $period (@
$periods) {
241 if ($period->{'budget_period_id'} == $budget->{'budget_period_id'}) {
242 $template->{'VARS'}->{'budget_period_description'} = $period->{'budget_period_description'};
244 next if $period->{'budget_period_locked'} || !$period->{'budget_period_description'};
245 my $budget_hierarchy = GetBudgetHierarchy
( $period->{'budget_period_id'} );
247 foreach my $r ( @
{$budget_hierarchy} ) {
248 next unless ( CanUserUseBudget
( $patron, $r, $userflags ) );
249 if ( !defined $r->{budget_amount
} || $r->{budget_amount
} == 0 ) {
254 b_id
=> $r->{budget_id
},
255 b_txt
=> $r->{budget_name
},
256 b_sel
=> ( $r->{budget_id
} == $order->{budget_id
} ) ?
1 : 0,
260 @funds = sort { uc( $a->{b_txt
} ) cmp uc( $b->{b_txt
} ) } @funds;
264 'id' => $period->{'budget_period_id'},
265 'description' => $period->{'budget_period_description'},
270 $template->{'VARS'}->{'budget_loop'} = \
@budget_loop;
272 my $op = $input->param('op');
273 if ($op and $op eq 'edit'){
274 $template->param(edit
=> 1);
276 output_html_with_http_headers
$input, $cookie, $template->output;