|
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 1042-1047
sub NewOrder {
Link Here
|
| 1042 |
} |
1042 |
} |
| 1043 |
|
1043 |
|
| 1044 |
my $ordernumber=InsertInTable("aqorders",$orderinfo); |
1044 |
my $ordernumber=InsertInTable("aqorders",$orderinfo); |
|
|
1045 |
if (not $orderinfo->{parent_ordernumber}) { |
| 1046 |
my $sth = $dbh->prepare(" |
| 1047 |
UPDATE aqorders |
| 1048 |
SET parent_ordernumber = ordernumber |
| 1049 |
WHERE ordernumber = ? |
| 1050 |
"); |
| 1051 |
$sth->execute($ordernumber); |
| 1052 |
} |
| 1045 |
return ( $orderinfo->{'basketno'}, $ordernumber ); |
1053 |
return ( $orderinfo->{'basketno'}, $ordernumber ); |
| 1046 |
} |
1054 |
} |
| 1047 |
|
1055 |
|
|
Lines 1259-1264
sub ModReceiveOrder {
Link Here
|
| 1259 |
$invoiceno, $freight, $rrp, $budget_id, $datereceived, $received_items |
1267 |
$invoiceno, $freight, $rrp, $budget_id, $datereceived, $received_items |
| 1260 |
) |
1268 |
) |
| 1261 |
= @_; |
1269 |
= @_; |
|
|
1270 |
|
| 1262 |
my $dbh = C4::Context->dbh; |
1271 |
my $dbh = C4::Context->dbh; |
| 1263 |
$datereceived = C4::Dates->output('iso') unless $datereceived; |
1272 |
$datereceived = C4::Dates->output('iso') unless $datereceived; |
| 1264 |
my $suggestionid = GetSuggestionFromBiblionumber( $biblionumber ); |
1273 |
my $suggestionid = GetSuggestionFromBiblionumber( $biblionumber ); |
|
Lines 1277-1316
sub ModReceiveOrder {
Link Here
|
| 1277 |
my $order = $sth->fetchrow_hashref(); |
1286 |
my $order = $sth->fetchrow_hashref(); |
| 1278 |
$sth->finish(); |
1287 |
$sth->finish(); |
| 1279 |
|
1288 |
|
|
|
1289 |
my $new_ordernumber = $ordernumber; |
| 1280 |
if ( $order->{quantity} > $quantrec ) { |
1290 |
if ( $order->{quantity} > $quantrec ) { |
|
|
1291 |
# Split order line in two parts: the first is the original order line |
| 1292 |
# without received items (the quantity is decreased), |
| 1293 |
# the second part is a new order line with quantity=quantityrec |
| 1294 |
# (entirely received) |
| 1281 |
$sth=$dbh->prepare(" |
1295 |
$sth=$dbh->prepare(" |
| 1282 |
UPDATE aqorders |
1296 |
UPDATE aqorders |
| 1283 |
SET quantityreceived=? |
1297 |
SET quantity = ? |
| 1284 |
, datereceived=? |
1298 |
WHERE ordernumber = ? |
| 1285 |
, booksellerinvoicenumber=? |
1299 |
"); |
| 1286 |
, unitprice=? |
1300 |
|
| 1287 |
, freight=? |
1301 |
$sth->execute($order->{quantity} - $quantrec, $ordernumber); |
| 1288 |
, rrp=? |
|
|
| 1289 |
, quantity=? |
| 1290 |
WHERE biblionumber=? AND ordernumber=?"); |
| 1291 |
|
| 1292 |
$sth->execute($quantrec,$datereceived,$invoiceno,$cost,$freight,$rrp,$quantrec,$biblionumber,$ordernumber); |
| 1293 |
$sth->finish; |
1302 |
$sth->finish; |
| 1294 |
|
1303 |
|
| 1295 |
# create a new order for the remaining items, and set its bookfund. |
1304 |
delete $order->{'ordernumber'}; |
| 1296 |
foreach my $orderkey ( "linenumber", "allocation" ) { |
1305 |
$order->{'quantity'} = $quantrec; |
| 1297 |
delete($order->{'$orderkey'}); |
1306 |
$order->{'quantityreceived'} = $quantrec; |
| 1298 |
} |
1307 |
$order->{'datereceived'} = $datereceived; |
| 1299 |
$order->{'quantity'} -= $quantrec; |
1308 |
$order->{'booksellerinvoicenumber'} = $invoiceno; |
| 1300 |
$order->{'quantityreceived'} = 0; |
1309 |
$order->{'unitprice'} = $cost; |
| 1301 |
my $newOrder = NewOrder($order); |
1310 |
$order->{'freight'} = $freight; |
| 1302 |
# Change ordernumber in aqorders_items for items not received |
1311 |
$order->{'rrp'} = $rrp; |
| 1303 |
my @orderitems = GetItemnumbersFromOrder( $order->{'ordernumber'} ); |
1312 |
$order->{'orderstatus'} = 3; # totally received |
| 1304 |
my $count = scalar @orderitems; |
1313 |
$new_ordernumber = NewOrder($order); |
| 1305 |
|
1314 |
|
| 1306 |
for (my $i=0; $i<$count; $i++){ |
1315 |
if ($received_items) { |
| 1307 |
foreach (@$received_items){ |
1316 |
foreach my $itemnumber (@$received_items) { |
| 1308 |
splice (@orderitems, $i, 1) if ($orderitems[$i] == $_); |
1317 |
ModItemOrder($itemnumber, $new_ordernumber); |
| 1309 |
} |
1318 |
} |
| 1310 |
} |
1319 |
} |
| 1311 |
foreach (@orderitems) { |
|
|
| 1312 |
ModItemOrder($_, $newOrder); |
| 1313 |
} |
| 1314 |
} else { |
1320 |
} else { |
| 1315 |
$sth=$dbh->prepare("update aqorders |
1321 |
$sth=$dbh->prepare("update aqorders |
| 1316 |
set quantityreceived=?,datereceived=?,booksellerinvoicenumber=?, |
1322 |
set quantityreceived=?,datereceived=?,booksellerinvoicenumber=?, |
|
Lines 1319-1326
sub ModReceiveOrder {
Link Here
|
| 1319 |
$sth->execute($quantrec,$datereceived,$invoiceno,$cost,$freight,$rrp,$biblionumber,$ordernumber); |
1325 |
$sth->execute($quantrec,$datereceived,$invoiceno,$cost,$freight,$rrp,$biblionumber,$ordernumber); |
| 1320 |
$sth->finish; |
1326 |
$sth->finish; |
| 1321 |
} |
1327 |
} |
| 1322 |
return $datereceived; |
1328 |
return ($datereceived, $new_ordernumber); |
| 1323 |
} |
1329 |
} |
|
|
1330 |
|
| 1331 |
=head3 CancelReceipt |
| 1332 |
|
| 1333 |
my $parent_ordernumber = CancelReceipt($ordernumber); |
| 1334 |
|
| 1335 |
Cancel an order line receipt and update the parent order line, as if no |
| 1336 |
receipt was made. |
| 1337 |
If items are created at receipt (AcqCreateItem = receiving) then delete |
| 1338 |
these items. |
| 1339 |
|
| 1340 |
=cut |
| 1341 |
|
| 1342 |
sub CancelReceipt { |
| 1343 |
my $ordernumber = shift; |
| 1344 |
|
| 1345 |
return unless $ordernumber; |
| 1346 |
|
| 1347 |
my $dbh = C4::Context->dbh; |
| 1348 |
my $query = qq{ |
| 1349 |
SELECT datereceived, parent_ordernumber, quantity |
| 1350 |
FROM aqorders |
| 1351 |
WHERE ordernumber = ? |
| 1352 |
}; |
| 1353 |
my $sth = $dbh->prepare($query); |
| 1354 |
$sth->execute($ordernumber); |
| 1355 |
my $order = $sth->fetchrow_hashref; |
| 1356 |
unless($order) { |
| 1357 |
warn "CancelReceipt: order $ordernumber does not exist"; |
| 1358 |
return; |
| 1359 |
} |
| 1360 |
unless($order->{'datereceived'}) { |
| 1361 |
warn "CancelReceipt: order $ordernumber is not received"; |
| 1362 |
return; |
| 1363 |
} |
| 1364 |
|
| 1365 |
my $parent_ordernumber = $order->{'parent_ordernumber'}; |
| 1366 |
|
| 1367 |
if($parent_ordernumber == $ordernumber || not $parent_ordernumber) { |
| 1368 |
# The order line has no parent, just mark it as not received |
| 1369 |
$query = qq{ |
| 1370 |
UPDATE aqorders |
| 1371 |
SET quantityreceived = ?, |
| 1372 |
datereceived = ?, |
| 1373 |
booksellerinvoicenumber = ? |
| 1374 |
WHERE ordernumber = ? |
| 1375 |
}; |
| 1376 |
$sth = $dbh->prepare($query); |
| 1377 |
$sth->execute(0, undef, undef, $ordernumber); |
| 1378 |
} else { |
| 1379 |
# The order line has a parent, increase parent quantity and delete |
| 1380 |
# the order line. |
| 1381 |
$query = qq{ |
| 1382 |
SELECT quantity, datereceived |
| 1383 |
FROM aqorders |
| 1384 |
WHERE ordernumber = ? |
| 1385 |
}; |
| 1386 |
$sth = $dbh->prepare($query); |
| 1387 |
$sth->execute($parent_ordernumber); |
| 1388 |
my $parent_order = $sth->fetchrow_hashref; |
| 1389 |
unless($parent_order) { |
| 1390 |
warn "Parent order $parent_ordernumber does not exist."; |
| 1391 |
return; |
| 1392 |
} |
| 1393 |
if($parent_order->{'datereceived'}) { |
| 1394 |
warn "CancelReceipt: parent order is received.". |
| 1395 |
" Can't cancel receipt."; |
| 1396 |
return; |
| 1397 |
} |
| 1398 |
$query = qq{ |
| 1399 |
UPDATE aqorders |
| 1400 |
SET quantity = ? |
| 1401 |
WHERE ordernumber = ? |
| 1402 |
}; |
| 1403 |
$sth = $dbh->prepare($query); |
| 1404 |
my $rv = $sth->execute( |
| 1405 |
$order->{'quantity'} + $parent_order->{'quantity'}, |
| 1406 |
$parent_ordernumber |
| 1407 |
); |
| 1408 |
unless($rv) { |
| 1409 |
warn "Cannot update parent order line, so do not cancel". |
| 1410 |
" receipt"; |
| 1411 |
return; |
| 1412 |
} |
| 1413 |
if(C4::Context->preference('AcqCreateItem') eq 'receiving') { |
| 1414 |
# Remove items that were created at receipt |
| 1415 |
$query = qq{ |
| 1416 |
DELETE FROM items, aqorders_items |
| 1417 |
USING items, aqorders_items |
| 1418 |
WHERE items.itemnumber = ? AND aqorders_items.itemnumber = ? |
| 1419 |
}; |
| 1420 |
$sth = $dbh->prepare($query); |
| 1421 |
my @itemnumbers = GetItemnumbersFromOrder($ordernumber); |
| 1422 |
foreach my $itemnumber (@itemnumbers) { |
| 1423 |
$sth->execute($itemnumber, $itemnumber); |
| 1424 |
} |
| 1425 |
} else { |
| 1426 |
# Update items |
| 1427 |
my @itemnumbers = GetItemnumbersFromOrder($ordernumber); |
| 1428 |
foreach my $itemnumber (@itemnumbers) { |
| 1429 |
ModItemOrder($itemnumber, $parent_ordernumber); |
| 1430 |
} |
| 1431 |
} |
| 1432 |
# Delete order line |
| 1433 |
$query = qq{ |
| 1434 |
DELETE FROM aqorders |
| 1435 |
WHERE ordernumber = ? |
| 1436 |
}; |
| 1437 |
$sth = $dbh->prepare($query); |
| 1438 |
$sth->execute($ordernumber); |
| 1439 |
|
| 1440 |
} |
| 1441 |
|
| 1442 |
return $parent_ordernumber; |
| 1443 |
} |
| 1444 |
|
| 1324 |
#------------------------------------------------------------# |
1445 |
#------------------------------------------------------------# |
| 1325 |
|
1446 |
|
| 1326 |
=head3 SearchOrder |
1447 |
=head3 SearchOrder |
|
Lines 1464-1469
sub GetParcel {
Link Here
|
| 1464 |
firstname, |
1585 |
firstname, |
| 1465 |
aqorders.biblionumber, |
1586 |
aqorders.biblionumber, |
| 1466 |
aqorders.ordernumber, |
1587 |
aqorders.ordernumber, |
|
|
1588 |
aqorders.parent_ordernumber, |
| 1467 |
aqorders.quantity, |
1589 |
aqorders.quantity, |
| 1468 |
aqorders.quantityreceived, |
1590 |
aqorders.quantityreceived, |
| 1469 |
aqorders.unitprice, |
1591 |
aqorders.unitprice, |