View | Details | Raw Unified | Return to bug 7294
Collapse All | Expand All

(-)a/C4/Acquisition.pm (-49 / +57 lines)
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
- 

Return to bug 7294