Lines 56-62
BEGIN {
Link Here
|
56 |
&NewOrder &DelOrder &ModOrder &GetPendingOrders &GetOrder &GetOrders |
56 |
&NewOrder &DelOrder &ModOrder &GetPendingOrders &GetOrder &GetOrders |
57 |
&GetOrderNumber &GetLateOrders &GetOrderFromItemnumber |
57 |
&GetOrderNumber &GetLateOrders &GetOrderFromItemnumber |
58 |
&SearchOrder &GetHistory &GetRecentAcqui |
58 |
&SearchOrder &GetHistory &GetRecentAcqui |
59 |
&ModReceiveOrder &ModOrderBiblioitemNumber |
59 |
&ModReceiveOrder &CancelReceipt &ModOrderBiblioitemNumber |
60 |
&GetCancelledOrders |
60 |
&GetCancelledOrders |
61 |
|
61 |
|
62 |
&NewOrderItem &ModOrderItem &ModItemOrder |
62 |
&NewOrderItem &ModOrderItem &ModItemOrder |
Lines 1029-1034
sub NewOrder {
Link Here
|
1029 |
} |
1029 |
} |
1030 |
|
1030 |
|
1031 |
my $ordernumber=InsertInTable("aqorders",$orderinfo); |
1031 |
my $ordernumber=InsertInTable("aqorders",$orderinfo); |
|
|
1032 |
if (not $orderinfo->{parent_ordernumber}) { |
1033 |
my $sth = $dbh->prepare(" |
1034 |
UPDATE aqorders |
1035 |
SET parent_ordernumber = ordernumber |
1036 |
WHERE ordernumber = ? |
1037 |
"); |
1038 |
$sth->execute($ordernumber); |
1039 |
} |
1032 |
return ( $orderinfo->{'basketno'}, $ordernumber ); |
1040 |
return ( $orderinfo->{'basketno'}, $ordernumber ); |
1033 |
} |
1041 |
} |
1034 |
|
1042 |
|
Lines 1246-1251
sub ModReceiveOrder {
Link Here
|
1246 |
$invoiceno, $freight, $rrp, $budget_id, $datereceived, $received_items |
1254 |
$invoiceno, $freight, $rrp, $budget_id, $datereceived, $received_items |
1247 |
) |
1255 |
) |
1248 |
= @_; |
1256 |
= @_; |
|
|
1257 |
|
1249 |
my $dbh = C4::Context->dbh; |
1258 |
my $dbh = C4::Context->dbh; |
1250 |
$datereceived = C4::Dates->output('iso') unless $datereceived; |
1259 |
$datereceived = C4::Dates->output('iso') unless $datereceived; |
1251 |
my $suggestionid = GetSuggestionFromBiblionumber( $biblionumber ); |
1260 |
my $suggestionid = GetSuggestionFromBiblionumber( $biblionumber ); |
Lines 1264-1303
sub ModReceiveOrder {
Link Here
|
1264 |
my $order = $sth->fetchrow_hashref(); |
1273 |
my $order = $sth->fetchrow_hashref(); |
1265 |
$sth->finish(); |
1274 |
$sth->finish(); |
1266 |
|
1275 |
|
|
|
1276 |
my $new_ordernumber = $ordernumber; |
1267 |
if ( $order->{quantity} > $quantrec ) { |
1277 |
if ( $order->{quantity} > $quantrec ) { |
|
|
1278 |
# Split order line in two parts: the first is the original order line |
1279 |
# without received items (the quantity is decreased), |
1280 |
# the second part is a new order line with quantity=quantityrec |
1281 |
# (entirely received) |
1268 |
$sth=$dbh->prepare(" |
1282 |
$sth=$dbh->prepare(" |
1269 |
UPDATE aqorders |
1283 |
UPDATE aqorders |
1270 |
SET quantityreceived=? |
1284 |
SET quantity = ? |
1271 |
, datereceived=? |
1285 |
WHERE ordernumber = ? |
1272 |
, booksellerinvoicenumber=? |
1286 |
"); |
1273 |
, unitprice=? |
1287 |
|
1274 |
, freight=? |
1288 |
$sth->execute($order->{quantity} - $quantrec, $ordernumber); |
1275 |
, rrp=? |
|
|
1276 |
, quantity=? |
1277 |
WHERE biblionumber=? AND ordernumber=?"); |
1278 |
|
1279 |
$sth->execute($quantrec,$datereceived,$invoiceno,$cost,$freight,$rrp,$quantrec,$biblionumber,$ordernumber); |
1280 |
$sth->finish; |
1289 |
$sth->finish; |
1281 |
|
1290 |
|
1282 |
# create a new order for the remaining items, and set its bookfund. |
1291 |
delete $order->{'ordernumber'}; |
1283 |
foreach my $orderkey ( "linenumber", "allocation" ) { |
1292 |
$order->{'quantity'} = $quantrec; |
1284 |
delete($order->{'$orderkey'}); |
1293 |
$order->{'quantityreceived'} = $quantrec; |
1285 |
} |
1294 |
$order->{'datereceived'} = $datereceived; |
1286 |
$order->{'quantity'} -= $quantrec; |
1295 |
$order->{'booksellerinvoicenumber'} = $invoiceno; |
1287 |
$order->{'quantityreceived'} = 0; |
1296 |
$order->{'unitprice'} = $cost; |
1288 |
my $newOrder = NewOrder($order); |
1297 |
$order->{'freight'} = $freight; |
1289 |
# Change ordernumber in aqorders_items for items not received |
1298 |
$order->{'rrp'} = $rrp; |
1290 |
my @orderitems = GetItemnumbersFromOrder( $order->{'ordernumber'} ); |
1299 |
$order->{'orderstatus'} = 3; # totally received |
1291 |
my $count = scalar @orderitems; |
1300 |
$new_ordernumber = NewOrder($order); |
1292 |
|
1301 |
|
1293 |
for (my $i=0; $i<$count; $i++){ |
1302 |
if ($received_items) { |
1294 |
foreach (@$received_items){ |
1303 |
foreach my $itemnumber (@$received_items) { |
1295 |
splice (@orderitems, $i, 1) if ($orderitems[$i] == $_); |
1304 |
ModItemOrder($itemnumber, $new_ordernumber); |
1296 |
} |
1305 |
} |
1297 |
} |
1306 |
} |
1298 |
foreach (@orderitems) { |
|
|
1299 |
ModItemOrder($_, $newOrder); |
1300 |
} |
1301 |
} else { |
1307 |
} else { |
1302 |
$sth=$dbh->prepare("update aqorders |
1308 |
$sth=$dbh->prepare("update aqorders |
1303 |
set quantityreceived=?,datereceived=?,booksellerinvoicenumber=?, |
1309 |
set quantityreceived=?,datereceived=?,booksellerinvoicenumber=?, |
Lines 1306-1313
sub ModReceiveOrder {
Link Here
|
1306 |
$sth->execute($quantrec,$datereceived,$invoiceno,$cost,$freight,$rrp,$biblionumber,$ordernumber); |
1312 |
$sth->execute($quantrec,$datereceived,$invoiceno,$cost,$freight,$rrp,$biblionumber,$ordernumber); |
1307 |
$sth->finish; |
1313 |
$sth->finish; |
1308 |
} |
1314 |
} |
1309 |
return $datereceived; |
1315 |
return ($datereceived, $new_ordernumber); |
1310 |
} |
1316 |
} |
|
|
1317 |
|
1318 |
=head3 CancelReceipt |
1319 |
|
1320 |
my $parent_ordernumber = CancelReceipt($ordernumber); |
1321 |
|
1322 |
Cancel an order line receipt and update the parent order line, as if no |
1323 |
receipt was made. |
1324 |
If items are created at receipt (AcqCreateItem = receiving) then delete |
1325 |
these items. |
1326 |
|
1327 |
=cut |
1328 |
|
1329 |
sub CancelReceipt { |
1330 |
my $ordernumber = shift; |
1331 |
|
1332 |
return unless $ordernumber; |
1333 |
|
1334 |
my $dbh = C4::Context->dbh; |
1335 |
my $query = qq{ |
1336 |
SELECT datereceived, parent_ordernumber, quantity |
1337 |
FROM aqorders |
1338 |
WHERE ordernumber = ? |
1339 |
}; |
1340 |
my $sth = $dbh->prepare($query); |
1341 |
$sth->execute($ordernumber); |
1342 |
my $order = $sth->fetchrow_hashref; |
1343 |
unless($order) { |
1344 |
warn "CancelReceipt: order $ordernumber does not exist"; |
1345 |
return; |
1346 |
} |
1347 |
unless($order->{'datereceived'}) { |
1348 |
warn "CancelReceipt: order $ordernumber is not received"; |
1349 |
return; |
1350 |
} |
1351 |
|
1352 |
my $parent_ordernumber = $order->{'parent_ordernumber'}; |
1353 |
|
1354 |
if($parent_ordernumber == $ordernumber || not $parent_ordernumber) { |
1355 |
# The order line has no parent, just mark it as not received |
1356 |
$query = qq{ |
1357 |
UPDATE aqorders |
1358 |
SET quantityreceived = ?, |
1359 |
datereceived = ?, |
1360 |
booksellerinvoicenumber = ? |
1361 |
WHERE ordernumber = ? |
1362 |
}; |
1363 |
$sth = $dbh->prepare($query); |
1364 |
$sth->execute(0, undef, undef, $ordernumber); |
1365 |
} else { |
1366 |
# The order line has a parent, increase parent quantity and delete |
1367 |
# the order line. |
1368 |
$query = qq{ |
1369 |
SELECT quantity, datereceived |
1370 |
FROM aqorders |
1371 |
WHERE ordernumber = ? |
1372 |
}; |
1373 |
$sth = $dbh->prepare($query); |
1374 |
$sth->execute($parent_ordernumber); |
1375 |
my $parent_order = $sth->fetchrow_hashref; |
1376 |
unless($parent_order) { |
1377 |
warn "Parent order $parent_ordernumber does not exist."; |
1378 |
return; |
1379 |
} |
1380 |
if($parent_order->{'datereceived'}) { |
1381 |
warn "CancelReceipt: parent order is received.". |
1382 |
" Can't cancel receipt."; |
1383 |
return; |
1384 |
} |
1385 |
$query = qq{ |
1386 |
UPDATE aqorders |
1387 |
SET quantity = ? |
1388 |
WHERE ordernumber = ? |
1389 |
}; |
1390 |
$sth = $dbh->prepare($query); |
1391 |
my $rv = $sth->execute( |
1392 |
$order->{'quantity'} + $parent_order->{'quantity'}, |
1393 |
$parent_ordernumber |
1394 |
); |
1395 |
unless($rv) { |
1396 |
warn "Cannot update parent order line, so do not cancel". |
1397 |
" receipt"; |
1398 |
return; |
1399 |
} |
1400 |
if(C4::Context->preference('AcqCreateItem') eq 'receiving') { |
1401 |
# Remove items that were created at receipt |
1402 |
$query = qq{ |
1403 |
DELETE FROM items, aqorders_items |
1404 |
USING items, aqorders_items |
1405 |
WHERE items.itemnumber = ? AND aqorders_items.itemnumber = ? |
1406 |
}; |
1407 |
$sth = $dbh->prepare($query); |
1408 |
my @itemnumbers = GetItemnumbersFromOrder($ordernumber); |
1409 |
foreach my $itemnumber (@itemnumbers) { |
1410 |
$sth->execute($itemnumber, $itemnumber); |
1411 |
} |
1412 |
} else { |
1413 |
# Update items |
1414 |
my @itemnumbers = GetItemnumbersFromOrder($ordernumber); |
1415 |
foreach my $itemnumber (@itemnumbers) { |
1416 |
ModItemOrder($itemnumber, $parent_ordernumber); |
1417 |
} |
1418 |
} |
1419 |
# Delete order line |
1420 |
$query = qq{ |
1421 |
DELETE FROM aqorders |
1422 |
WHERE ordernumber = ? |
1423 |
}; |
1424 |
$sth = $dbh->prepare($query); |
1425 |
$sth->execute($ordernumber); |
1426 |
|
1427 |
} |
1428 |
|
1429 |
return $parent_ordernumber; |
1430 |
} |
1431 |
|
1311 |
#------------------------------------------------------------# |
1432 |
#------------------------------------------------------------# |
1312 |
|
1433 |
|
1313 |
=head3 SearchOrder |
1434 |
=head3 SearchOrder |
Lines 1451-1456
sub GetParcel {
Link Here
|
1451 |
firstname, |
1572 |
firstname, |
1452 |
aqorders.biblionumber, |
1573 |
aqorders.biblionumber, |
1453 |
aqorders.ordernumber, |
1574 |
aqorders.ordernumber, |
|
|
1575 |
aqorders.parent_ordernumber, |
1454 |
aqorders.quantity, |
1576 |
aqorders.quantity, |
1455 |
aqorders.quantityreceived, |
1577 |
aqorders.quantityreceived, |
1456 |
aqorders.unitprice, |
1578 |
aqorders.unitprice, |