|
Lines 1290-1376
sub ModReceiveOrder {
Link Here
|
| 1290 |
|
1290 |
|
| 1291 |
# If there are still items to be received |
1291 |
# If there are still items to be received |
| 1292 |
if ( $order->{quantity} > $quantrec ) { |
1292 |
if ( $order->{quantity} > $quantrec ) { |
|
|
1293 |
|
| 1293 |
# Split order line in two parts: the first is the original order line |
1294 |
# Split order line in two parts: the first is the original order line |
| 1294 |
# without received items (the quantity is decreased), |
1295 |
# without received items (the quantity is decreased), |
| 1295 |
# the second part is a new order line with quantity=quantityrec |
1296 |
# the second part is a new order line with quantity=quantityrec |
| 1296 |
# (entirely received) |
1297 |
# (entirely received) |
| 1297 |
$sth=$dbh->prepare(" |
1298 |
$sth = $dbh->prepare( " |
| 1298 |
UPDATE aqorders |
1299 |
UPDATE aqorders |
| 1299 |
SET quantity = ? |
1300 |
SET quantity = ? |
| 1300 |
WHERE ordernumber = ? |
1301 |
WHERE ordernumber = ? |
| 1301 |
"); |
1302 |
" ); |
| 1302 |
|
1303 |
|
| 1303 |
$sth->execute($order->{quantity} - $quantrec, $ordernumber); |
1304 |
$sth->execute( $order->{quantity} - $quantrec, $ordernumber ); |
| 1304 |
$sth->finish; |
1305 |
$sth->finish; |
| 1305 |
|
1306 |
|
| 1306 |
delete $order->{'ordernumber'}; |
1307 |
delete $order->{'ordernumber'}; |
| 1307 |
$order->{'quantity'} = $quantrec; |
1308 |
$order->{'quantity'} = $quantrec; |
| 1308 |
$order->{'quantityreceived'} = $quantrec; |
1309 |
$order->{'quantityreceived'} = $quantrec; |
| 1309 |
$order->{'datereceived'} = $datereceived; |
1310 |
$order->{'datereceived'} = $datereceived; |
| 1310 |
$order->{'booksellerinvoicenumber'} = $invoiceno; |
1311 |
$order->{'booksellerinvoicenumber'} = $invoiceno; |
| 1311 |
$order->{'unitprice'} = $cost; |
1312 |
$order->{'unitprice'} = $cost; |
| 1312 |
$order->{'freight'} = $freight; |
1313 |
$order->{'freight'} = $freight; |
| 1313 |
$order->{'rrp'} = $rrp; |
1314 |
$order->{'rrp'} = $rrp; |
| 1314 |
$order->{'orderstatus'} = 3; # totally received |
1315 |
$order->{'orderstatus'} = 3; # totally received |
| 1315 |
$new_ordernumber = NewOrder($order); |
1316 |
$new_ordernumber = NewOrder($order); |
| 1316 |
|
1317 |
|
| 1317 |
if ($received_items) { |
1318 |
if ($received_items) { |
| 1318 |
foreach my $itemnumber (@$received_items) { |
1319 |
foreach my $itemnumber (@$received_items) { |
| 1319 |
ModItemOrder($itemnumber, $new_ordernumber); |
1320 |
ModItemOrder( $itemnumber, $new_ordernumber ); |
| 1320 |
} |
1321 |
} |
| 1321 |
} |
1322 |
} |
| 1322 |
|
1323 |
|
| 1323 |
# create a new order for the remaining items, and set its bookfund. |
1324 |
# create a new order for the remaining items, and set its bookfund. |
| 1324 |
foreach my $orderkey ( "linenumber", "allocation" ) { |
1325 |
foreach my $orderkey ( "linenumber", "allocation" ) { |
| 1325 |
delete($order->{'$orderkey'}); |
1326 |
delete( $order->{'$orderkey'} ); |
| 1326 |
} |
1327 |
} |
| 1327 |
$order->{'quantity'} -= $quantrec; |
1328 |
$order->{'quantity'} -= $quantrec; |
| 1328 |
$order->{'quantityreceived'} = 0; |
1329 |
$order->{'quantityreceived'} = 0; |
| 1329 |
|
1330 |
|
| 1330 |
my ($newOrder, $newordernumber) = NewOrder($order); |
1331 |
my ( $newOrder, $newordernumber ) = NewOrder($order); |
|
|
1332 |
|
| 1331 |
# Change ordernumber in aqorders_items for items not received |
1333 |
# Change ordernumber in aqorders_items for items not received |
| 1332 |
my @orderitems = GetItemnumbersFromOrder( $order->{'ordernumber'} ); |
1334 |
my @orderitems = GetItemnumbersFromOrder( $order->{'ordernumber'} ); |
| 1333 |
my $count = scalar @orderitems; |
1335 |
my $count = scalar @orderitems; |
| 1334 |
|
1336 |
|
| 1335 |
for (my $i=0; $i<$count; $i++){ |
1337 |
for ( my $i = 0 ; $i < $count ; $i++ ) { |
| 1336 |
foreach (@$received_items){ |
1338 |
foreach (@$received_items) { |
| 1337 |
splice (@orderitems, $i, 1) if ($orderitems[$i] == $_); |
1339 |
splice( @orderitems, $i, 1 ) if ( $orderitems[$i] == $_ ); |
| 1338 |
} |
1340 |
} |
| 1339 |
} |
1341 |
} |
| 1340 |
foreach (@orderitems) { |
1342 |
foreach (@orderitems) { |
| 1341 |
ModItemOrder($_, $newOrder); |
1343 |
ModItemOrder( $_, $newOrder ); |
| 1342 |
} |
1344 |
} |
| 1343 |
|
1345 |
|
| 1344 |
# Do we have to update order informations from the marc record? |
1346 |
# Do we have to update order informations from the marc record? |
| 1345 |
my ($ordertag, $ordersubtag) = GetMarcFromKohaField('aqorders.ordernumber', 'ACQ'); |
1347 |
my ( $ordertag, $ordersubtag ) = |
| 1346 |
|
1348 |
GetMarcFromKohaField( 'aqorders.ordernumber', 'ACQ' ); |
| 1347 |
# Updating MARC order field if exists |
1349 |
|
| 1348 |
if ($ordertag and $ordersubtag) { |
1350 |
# Updating MARC order field if exists |
| 1349 |
$debug and warn "updating MARC"; |
1351 |
if ( $ordertag and $ordersubtag ) { |
| 1350 |
# Getting record |
1352 |
$debug and warn "updating MARC"; |
| 1351 |
my $record = GetMarcBiblio($biblionumber); |
1353 |
|
| 1352 |
if ($record) { |
1354 |
# Getting record |
| 1353 |
$debug and warn "updating Record"; |
1355 |
my $record = GetMarcBiblio($biblionumber); |
| 1354 |
foreach ($record->field($ordertag)) { |
1356 |
if ($record) { |
| 1355 |
if ($_->subfield($ordersubtag) eq $ordernumber) { |
1357 |
$debug and warn "updating Record"; |
| 1356 |
# Updating ordernumber |
1358 |
foreach ( $record->field($ordertag) ) { |
| 1357 |
$debug and warn "updating ordernumber $ordernumber => $newordernumber"; |
1359 |
if ( $_->subfield($ordersubtag) eq $ordernumber ) { |
| 1358 |
$_->update($ordersubtag => $newordernumber); |
1360 |
|
| 1359 |
|
1361 |
# Updating ordernumber |
| 1360 |
# Updating quantity |
1362 |
$debug |
| 1361 |
my ($quantitytag, $quantitysubtag) = GetMarcFromKohaField('aqorders.quantity', 'ACQ'); |
1363 |
and warn |
| 1362 |
if ($quantitysubtag) { |
1364 |
"updating ordernumber $ordernumber => $newordernumber"; |
| 1363 |
$debug and warn "updating quantity " . $order->{quantity}; |
1365 |
$_->update( $ordersubtag => $newordernumber ); |
| 1364 |
$_->update($quantitysubtag => $order->{quantity}); |
1366 |
|
| 1365 |
} |
1367 |
# Updating quantity |
| 1366 |
} |
1368 |
my ( $quantitytag, $quantitysubtag ) = |
| 1367 |
} |
1369 |
GetMarcFromKohaField( 'aqorders.quantity', 'ACQ' ); |
| 1368 |
|
1370 |
if ($quantitysubtag) { |
| 1369 |
# Applying changes |
1371 |
$debug |
| 1370 |
ModBiblio($record, $biblionumber, 'ACQ'); |
1372 |
and warn "updating quantity " |
| 1371 |
} |
1373 |
. $order->{quantity}; |
| 1372 |
} |
1374 |
$_->update( $quantitysubtag => $order->{quantity} ); |
| 1373 |
|
1375 |
} |
|
|
1376 |
} |
| 1377 |
} |
| 1378 |
|
| 1379 |
# Applying changes |
| 1380 |
ModBiblio( $record, $biblionumber, 'ACQ' ); |
| 1381 |
} |
| 1382 |
} |
| 1374 |
|
1383 |
|
| 1375 |
} else { |
1384 |
} else { |
| 1376 |
$sth = $dbh->prepare( |
1385 |
$sth = $dbh->prepare( |
| 1377 |
- |
|
|