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.
66 use C4
::Koha
; # GetItemTypes
70 use C4
::Budgets qw
/ GetBudget GetBudgetHierarchy CanUserUseBudget GetBudgetPeriods /;
76 use Koha
::Acquisition
::Bookseller
;
77 use Koha
::DateUtils
qw( dt_from_string );
81 my $dbh = C4
::Context
->dbh;
82 my $invoiceid = $input->param('invoiceid');
83 my $invoice = GetInvoice
($invoiceid);
84 my $booksellerid = $invoice->{booksellerid
};
85 my $freight = $invoice->{shipmentcost
};
86 my $ordernumber = $input->param('ordernumber');
88 my $bookseller = Koha
::Acquisition
::Bookseller
->fetch({ id
=> $booksellerid });
90 $results = SearchOrders
({
91 ordernumber
=> $ordernumber
94 my ( $template, $loggedinuser, $cookie, $userflags ) = get_template_and_user
(
96 template_name
=> "acqui/orderreceive.tt",
100 flagsrequired
=> {acquisition
=> 'order_receive'},
105 unless ( $results and @
$results) {
106 output_html_with_http_headers
$input, $cookie, $template->output;
110 # prepare the form for receiving
111 my $order = $results->[0];
113 # Check if ACQ framework exists
114 my $acq_fw = GetMarcStructure
( 1, 'ACQ', { unsafe
=> 1 } );
116 $template->param('NoACQframework' => 1);
119 my $AcqCreateItem = C4
::Context
->preference('AcqCreateItem');
120 if ($AcqCreateItem eq 'receiving') {
122 AcqCreateItemReceiving
=> 1,
123 UniqueItemFields
=> C4
::Context
->preference('UniqueItemFields'),
125 } elsif ($AcqCreateItem eq 'ordering') {
126 my $fw = ($acq_fw) ?
'ACQ' : '';
127 my @itemnumbers = GetItemnumbersFromOrder
($order->{ordernumber
});
129 foreach (@itemnumbers) {
130 my $item = GetItem
($_);
132 $descriptions = Koha
::AuthorisedValues
->get_description_by_koha_field({frameworkcode
=> $fw, kohafield
=> 'items.notforloan', authorised_value
=> $item->{notforloan
} });
133 $item->{notforloan
} = $descriptions->{lib
} // '';
135 $descriptions = Koha
::AuthorisedValues
->get_description_by_koha_field({frameworkcode
=> $fw, kohafield
=> 'items.restricted', authorised_value
=> $item->{restricted
} });
136 $item->{restricted
} = $descriptions->{lib
} // '';
138 $descriptions = Koha
::AuthorisedValues
->get_description_by_koha_field({frameworkcode
=> $fw, kohafield
=> 'items.location', authorised_value
=> $item->{location
} });
139 $item->{location
} = $descriptions->{lib
} // '';
141 $descriptions = Koha
::AuthorisedValues
->get_description_by_koha_field({frameworkcode
=> $fw, kohafield
=> 'items.collection', authorised_value
=> $item->{collection
} });
142 $item->{collection
} = $descriptions->{lib
} // '';
144 $descriptions = Koha
::AuthorisedValues
->get_description_by_koha_field({frameworkcode
=> $fw, kohafield
=> 'items.materials', authorised_value
=> $item->{materials
} });
145 $item->{materials
} = $descriptions->{lib
} // '';
147 my $itemtype = getitemtypeinfo
($item->{itype
});
148 $item->{itemtype
} = $itemtype->{description
};
151 $template->param(items
=> \
@items);
154 $order->{quantityreceived
} = '' if $order->{quantityreceived
} == 0;
156 my $unitprice = $order->{unitprice
};
158 if ( $bookseller->{invoiceincgst
} ) {
159 $rrp = $order->{rrp_tax_included
};
160 $ecost = $order->{ecost_tax_included
};
161 unless ( $unitprice != 0 and defined $unitprice) {
162 $unitprice = $order->{ecost_tax_included
};
165 $rrp = $order->{rrp_tax_excluded
};
166 $ecost = $order->{ecost_tax_excluded
};
167 unless ( $unitprice != 0 and defined $unitprice) {
168 $unitprice = $order->{ecost_tax_excluded
};
173 if( defined $order->{tax_rate_on_receiving
} ) {
174 $tax_rate = $order->{tax_rate_on_receiving
} + 0.0;
176 $tax_rate = $order->{tax_rate_on_ordering
} + 0.0;
179 my $suggestion = GetSuggestionInfoFromBiblionumber
($order->{biblionumber
});
181 my $authorisedby = $order->{authorisedby
};
182 my $member = GetMember
( borrowernumber
=> $authorisedby );
184 my $budget = GetBudget
( $order->{budget_id
} );
186 my $datereceived = $order->{datereceived
} ? dt_from_string
( $order->{datereceived
} ) : dt_from_string
;
188 # get option values for gist syspref
189 my @gst_values = map {
191 }, split( '\|', C4
::Context
->preference("gist") );
194 AcqCreateItem
=> $AcqCreateItem,
196 biblionumber
=> $order->{'biblionumber'},
197 ordernumber
=> $order->{'ordernumber'},
198 subscriptionid
=> $order->{subscriptionid
},
199 booksellerid
=> $order->{'booksellerid'},
201 name
=> $bookseller->{'name'},
202 title
=> $order->{'title'},
203 author
=> $order->{'author'},
204 copyrightdate
=> $order->{'copyrightdate'},
205 isbn
=> $order->{'isbn'},
206 seriestitle
=> $order->{'seriestitle'},
207 bookfund
=> $budget->{budget_name
},
208 quantity
=> $order->{'quantity'},
209 quantityreceivedplus1
=> $order->{'quantityreceived'} + 1,
210 quantityreceived
=> $order->{'quantityreceived'},
213 unitprice
=> $unitprice,
214 tax_rate
=> $tax_rate,
215 memberfirstname
=> $member->{firstname
} || "",
216 membersurname
=> $member->{surname
} || "",
217 invoiceid
=> $invoice->{invoiceid
},
218 invoice
=> $invoice->{invoicenumber
},
219 datereceived
=> $datereceived,
220 order_internalnote
=> $order->{order_internalnote
},
221 order_vendornote
=> $order->{order_vendornote
},
222 suggestionid
=> $suggestion->{suggestionid
},
223 surnamesuggestedby
=> $suggestion->{surnamesuggestedby
},
224 firstnamesuggestedby
=> $suggestion->{firstnamesuggestedby
},
225 gst_values
=> \
@gst_values,
228 my $borrower = GetMember
( 'borrowernumber' => $loggedinuser );
230 my $periods = GetBudgetPeriods
( );
231 foreach my $period (@
$periods) {
232 if ($period->{'budget_period_id'} == $budget->{'budget_period_id'}) {
233 $template->{'VARS'}->{'budget_period_description'} = $period->{'budget_period_description'};
235 next if $period->{'budget_period_locked'} || !$period->{'budget_period_description'};
236 my $budget_hierarchy = GetBudgetHierarchy
( $period->{'budget_period_id'} );
238 foreach my $r ( @
{$budget_hierarchy} ) {
239 next unless ( CanUserUseBudget
( $borrower, $r, $userflags ) );
240 if ( !defined $r->{budget_amount
} || $r->{budget_amount
} == 0 ) {
245 b_id
=> $r->{budget_id
},
246 b_txt
=> $r->{budget_name
},
247 b_sel
=> ( $r->{budget_id
} == $order->{budget_id
} ) ?
1 : 0,
251 @funds = sort { uc( $a->{b_txt
} ) cmp uc( $b->{b_txt
} ) } @funds;
255 'id' => $period->{'budget_period_id'},
256 'description' => $period->{'budget_period_description'},
261 $template->{'VARS'}->{'budget_loop'} = \
@budget_loop;
263 my $op = $input->param('op');
264 if ($op and $op eq 'edit'){
265 $template->param(edit
=> 1);
267 output_html_with_http_headers
$input, $cookie, $template->output;