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 |
- |
|
|