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
::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];
115 # Check if ACQ framework exists
116 my $acq_fw = GetMarcStructure
( 1, 'ACQ', { unsafe
=> 1 } );
118 $template->param('NoACQframework' => 1);
121 my $AcqCreateItem = C4
::Context
->preference('AcqCreateItem');
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 @itemnumbers = GetItemnumbersFromOrder
($order->{ordernumber
});
131 foreach (@itemnumbers) {
132 my $item = GetItem
($_);
134 $descriptions = Koha
::AuthorisedValues
->get_description_by_koha_field({frameworkcode
=> $fw, kohafield
=> 'items.notforloan', authorised_value
=> $item->{notforloan
} });
135 $item->{notforloan
} = $descriptions->{lib
} // '';
137 $descriptions = Koha
::AuthorisedValues
->get_description_by_koha_field({frameworkcode
=> $fw, kohafield
=> 'items.restricted', authorised_value
=> $item->{restricted
} });
138 $item->{restricted
} = $descriptions->{lib
} // '';
140 $descriptions = Koha
::AuthorisedValues
->get_description_by_koha_field({frameworkcode
=> $fw, kohafield
=> 'items.location', authorised_value
=> $item->{location
} });
141 $item->{location
} = $descriptions->{lib
} // '';
143 $descriptions = Koha
::AuthorisedValues
->get_description_by_koha_field({frameworkcode
=> $fw, kohafield
=> 'items.collection', authorised_value
=> $item->{collection
} });
144 $item->{collection
} = $descriptions->{lib
} // '';
146 $descriptions = Koha
::AuthorisedValues
->get_description_by_koha_field({frameworkcode
=> $fw, kohafield
=> 'items.materials', authorised_value
=> $item->{materials
} });
147 $item->{materials
} = $descriptions->{lib
} // '';
149 my $itemtype = Koha
::ItemTypes
->find( $item->{itype
} );
150 $item->{itemtype
} = $itemtype->description; # FIXME Should not it be translated_description?
153 $template->param(items
=> \
@items);
156 $order->{quantityreceived
} = '' if $order->{quantityreceived
} == 0;
158 my $unitprice = $order->{unitprice
};
160 if ( $bookseller->invoiceincgst ) {
161 $rrp = $order->{rrp_tax_included
};
162 $ecost = $order->{ecost_tax_included
};
163 unless ( $unitprice != 0 and defined $unitprice) {
164 $unitprice = $order->{ecost_tax_included
};
167 $rrp = $order->{rrp_tax_excluded
};
168 $ecost = $order->{ecost_tax_excluded
};
169 unless ( $unitprice != 0 and defined $unitprice) {
170 $unitprice = $order->{ecost_tax_excluded
};
175 if( defined $order->{tax_rate_on_receiving
} ) {
176 $tax_rate = $order->{tax_rate_on_receiving
} + 0.0;
178 $tax_rate = $order->{tax_rate_on_ordering
} + 0.0;
181 my $suggestion = GetSuggestionInfoFromBiblionumber
($order->{biblionumber
});
183 my $authorisedby = $order->{authorisedby
};
184 my $authorised_patron = Koha
::Patrons
->find( $authorisedby );
186 my $budget = GetBudget
( $order->{budget_id
} );
188 my $datereceived = $order->{datereceived
} ? dt_from_string
( $order->{datereceived
} ) : dt_from_string
;
190 # get option values for gist syspref
191 my @gst_values = map {
193 }, split( '\|', C4
::Context
->preference("gist") );
196 AcqCreateItem
=> $AcqCreateItem,
198 biblionumber
=> $order->{'biblionumber'},
199 ordernumber
=> $order->{'ordernumber'},
200 subscriptionid
=> $order->{subscriptionid
},
201 booksellerid
=> $order->{'booksellerid'},
203 name
=> $bookseller->name,
204 title
=> $order->{'title'},
205 author
=> $order->{'author'},
206 copyrightdate
=> $order->{'copyrightdate'},
207 isbn
=> $order->{'isbn'},
208 seriestitle
=> $order->{'seriestitle'},
209 bookfund
=> $budget->{budget_name
},
210 quantity
=> $order->{'quantity'},
211 quantityreceivedplus1
=> $order->{'quantityreceived'} + 1,
212 quantityreceived
=> $order->{'quantityreceived'},
215 unitprice
=> $unitprice,
216 tax_rate
=> $tax_rate,
217 memberfirstname
=> $authorised_patron->firstname || "",
218 membersurname
=> $authorised_patron->surname || "",
219 invoiceid
=> $invoice->{invoiceid
},
220 invoice
=> $invoice->{invoicenumber
},
221 datereceived
=> $datereceived,
222 order_internalnote
=> $order->{order_internalnote
},
223 order_vendornote
=> $order->{order_vendornote
},
224 suggestionid
=> $suggestion->{suggestionid
},
225 surnamesuggestedby
=> $suggestion->{surnamesuggestedby
},
226 firstnamesuggestedby
=> $suggestion->{firstnamesuggestedby
},
227 gst_values
=> \
@gst_values,
230 my $patron = Koha
::Patrons
->find( $loggedinuser )->unblessed;
232 my $periods = GetBudgetPeriods
( );
233 foreach my $period (@
$periods) {
234 if ($period->{'budget_period_id'} == $budget->{'budget_period_id'}) {
235 $template->{'VARS'}->{'budget_period_description'} = $period->{'budget_period_description'};
237 next if $period->{'budget_period_locked'} || !$period->{'budget_period_description'};
238 my $budget_hierarchy = GetBudgetHierarchy
( $period->{'budget_period_id'} );
240 foreach my $r ( @
{$budget_hierarchy} ) {
241 next unless ( CanUserUseBudget
( $patron, $r, $userflags ) );
242 if ( !defined $r->{budget_amount
} || $r->{budget_amount
} == 0 ) {
247 b_id
=> $r->{budget_id
},
248 b_txt
=> $r->{budget_name
},
249 b_sel
=> ( $r->{budget_id
} == $order->{budget_id
} ) ?
1 : 0,
253 @funds = sort { uc( $a->{b_txt
} ) cmp uc( $b->{b_txt
} ) } @funds;
257 'id' => $period->{'budget_period_id'},
258 'description' => $period->{'budget_period_description'},
263 $template->{'VARS'}->{'budget_loop'} = \
@budget_loop;
265 my $op = $input->param('op');
266 if ($op and $op eq 'edit'){
267 $template->param(edit
=> 1);
269 output_html_with_http_headers
$input, $cookie, $template->output;