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.
69 use C4
::Budgets qw
/ GetBudget GetBudgetHierarchy CanUserUseBudget GetBudgetPeriods /;
76 use Koha
::Acquisition
::Booksellers
;
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 );
93 $results = SearchOrders
({
94 ordernumber
=> $ordernumber
97 my ( $template, $loggedinuser, $cookie, $userflags ) = get_template_and_user
(
99 template_name
=> "acqui/orderreceive.tt",
102 authnotrequired
=> 0,
103 flagsrequired
=> {acquisition
=> 'order_receive'},
108 unless ( $results and @
$results) {
109 output_html_with_http_headers
$input, $cookie, $template->output;
113 # prepare the form for receiving
114 my $order = $results->[0];
115 my $basket = Koha
::Acquisition
::Orders
->find( $ordernumber )->basket;
117 # Check if ACQ framework exists
118 my $acq_fw = GetMarcStructure
( 1, 'ACQ', { unsafe
=> 1 } );
120 $template->param('NoACQframework' => 1);
123 my $AcqCreateItem = $basket->effective_create_items;
124 if ($AcqCreateItem eq 'receiving') {
126 AcqCreateItemReceiving
=> 1,
127 UniqueItemFields
=> C4
::Context
->preference('UniqueItemFields'),
129 } elsif ($AcqCreateItem eq 'ordering') {
130 my $fw = ($acq_fw) ?
'ACQ' : '';
131 my @itemnumbers = GetItemnumbersFromOrder
($order->{ordernumber
});
133 foreach (@itemnumbers) {
134 my $item = GetItem
($_);
136 $descriptions = Koha
::AuthorisedValues
->get_description_by_koha_field({frameworkcode
=> $fw, kohafield
=> 'items.notforloan', authorised_value
=> $item->{notforloan
} });
137 $item->{notforloan
} = $descriptions->{lib
} // '';
139 $descriptions = Koha
::AuthorisedValues
->get_description_by_koha_field({frameworkcode
=> $fw, kohafield
=> 'items.restricted', authorised_value
=> $item->{restricted
} });
140 $item->{restricted
} = $descriptions->{lib
} // '';
142 $descriptions = Koha
::AuthorisedValues
->get_description_by_koha_field({frameworkcode
=> $fw, kohafield
=> 'items.location', authorised_value
=> $item->{location
} });
143 $item->{location
} = $descriptions->{lib
} // '';
145 $descriptions = Koha
::AuthorisedValues
->get_description_by_koha_field({frameworkcode
=> $fw, kohafield
=> 'items.collection', authorised_value
=> $item->{collection
} });
146 $item->{collection
} = $descriptions->{lib
} // '';
148 $descriptions = Koha
::AuthorisedValues
->get_description_by_koha_field({frameworkcode
=> $fw, kohafield
=> 'items.materials', authorised_value
=> $item->{materials
} });
149 $item->{materials
} = $descriptions->{lib
} // '';
151 my $itemtype = Koha
::ItemTypes
->find( $item->{itype
} );
152 if (defined $itemtype) {
153 $item->{itemtype
} = $itemtype->description; # FIXME Should not it be translated_description?
157 $template->param(items
=> \
@items);
160 $order->{quantityreceived
} = '' if $order->{quantityreceived
} == 0;
162 my $unitprice = $order->{unitprice
};
164 if ( $bookseller->invoiceincgst ) {
165 $rrp = $order->{rrp_tax_included
};
166 $ecost = $order->{ecost_tax_included
};
167 unless ( $unitprice != 0 and defined $unitprice) {
168 $unitprice = $order->{ecost_tax_included
};
171 $rrp = $order->{rrp_tax_excluded
};
172 $ecost = $order->{ecost_tax_excluded
};
173 unless ( $unitprice != 0 and defined $unitprice) {
174 $unitprice = $order->{ecost_tax_excluded
};
179 if( defined $order->{tax_rate_on_receiving
} ) {
180 $tax_rate = $order->{tax_rate_on_receiving
} + 0.0;
182 $tax_rate = $order->{tax_rate_on_ordering
} + 0.0;
185 my $suggestion = GetSuggestionInfoFromBiblionumber
($order->{biblionumber
});
187 my $authorisedby = $order->{authorisedby
};
188 my $authorised_patron = Koha
::Patrons
->find( $authorisedby );
190 my $budget = GetBudget
( $order->{budget_id
} );
192 my $datereceived = $order->{datereceived
} ? dt_from_string
( $order->{datereceived
} ) : dt_from_string
;
194 # get option values for gist syspref
195 my @gst_values = map {
197 }, split( '\|', C4
::Context
->preference("gist") );
200 AcqCreateItem
=> $AcqCreateItem,
202 biblionumber
=> $order->{'biblionumber'},
203 ordernumber
=> $order->{'ordernumber'},
204 subscriptionid
=> $order->{subscriptionid
},
205 booksellerid
=> $order->{'booksellerid'},
207 name
=> $bookseller->name,
208 title
=> $order->{'title'},
209 author
=> $order->{'author'},
210 copyrightdate
=> $order->{'copyrightdate'},
211 isbn
=> $order->{'isbn'},
212 seriestitle
=> $order->{'seriestitle'},
213 bookfund
=> $budget->{budget_name
},
214 quantity
=> $order->{'quantity'},
215 quantityreceivedplus1
=> $order->{'quantityreceived'} + 1,
216 quantityreceived
=> $order->{'quantityreceived'},
219 unitprice
=> $unitprice,
220 tax_rate
=> $tax_rate,
221 memberfirstname
=> $authorised_patron->firstname || "",
222 membersurname
=> $authorised_patron->surname || "",
223 invoiceid
=> $invoice->{invoiceid
},
224 invoice
=> $invoice->{invoicenumber
},
225 datereceived
=> $datereceived,
226 order_internalnote
=> $order->{order_internalnote
},
227 order_vendornote
=> $order->{order_vendornote
},
228 suggestionid
=> $suggestion->{suggestionid
},
229 surnamesuggestedby
=> $suggestion->{surnamesuggestedby
},
230 firstnamesuggestedby
=> $suggestion->{firstnamesuggestedby
},
231 gst_values
=> \
@gst_values,
234 my $patron = Koha
::Patrons
->find( $loggedinuser )->unblessed;
236 my $periods = GetBudgetPeriods
( );
237 foreach my $period (@
$periods) {
238 if ($period->{'budget_period_id'} == $budget->{'budget_period_id'}) {
239 $template->{'VARS'}->{'budget_period_description'} = $period->{'budget_period_description'};
241 next if $period->{'budget_period_locked'} || !$period->{'budget_period_description'};
242 my $budget_hierarchy = GetBudgetHierarchy
( $period->{'budget_period_id'} );
244 foreach my $r ( @
{$budget_hierarchy} ) {
245 next unless ( CanUserUseBudget
( $patron, $r, $userflags ) );
246 if ( !defined $r->{budget_amount
} || $r->{budget_amount
} == 0 ) {
251 b_id
=> $r->{budget_id
},
252 b_txt
=> $r->{budget_name
},
253 b_sel
=> ( $r->{budget_id
} == $order->{budget_id
} ) ?
1 : 0,
257 @funds = sort { uc( $a->{b_txt
} ) cmp uc( $b->{b_txt
} ) } @funds;
261 'id' => $period->{'budget_period_id'},
262 'description' => $period->{'budget_period_description'},
267 $template->{'VARS'}->{'budget_loop'} = \
@budget_loop;
269 my $op = $input->param('op');
270 if ($op and $op eq 'edit'){
271 $template->param(edit
=> 1);
273 output_html_with_http_headers
$input, $cookie, $template->output;