@@ -, +, @@ --- C4/Acquisition.pm | 105 +++++++++++++++++++++++++++++------------------------ 1 files changed, 57 insertions(+), 48 deletions(-) --- a/C4/Acquisition.pm +++ a/C4/Acquisition.pm @@ -1290,87 +1290,96 @@ sub ModReceiveOrder { # If there are still items to be received if ( $order->{quantity} > $quantrec ) { + # Split order line in two parts: the first is the original order line # without received items (the quantity is decreased), # the second part is a new order line with quantity=quantityrec # (entirely received) - $sth=$dbh->prepare(" + $sth = $dbh->prepare( " UPDATE aqorders SET quantity = ? WHERE ordernumber = ? - "); + " ); - $sth->execute($order->{quantity} - $quantrec, $ordernumber); + $sth->execute( $order->{quantity} - $quantrec, $ordernumber ); $sth->finish; delete $order->{'ordernumber'}; - $order->{'quantity'} = $quantrec; - $order->{'quantityreceived'} = $quantrec; - $order->{'datereceived'} = $datereceived; + $order->{'quantity'} = $quantrec; + $order->{'quantityreceived'} = $quantrec; + $order->{'datereceived'} = $datereceived; $order->{'booksellerinvoicenumber'} = $invoiceno; - $order->{'unitprice'} = $cost; - $order->{'freight'} = $freight; - $order->{'rrp'} = $rrp; - $order->{'orderstatus'} = 3; # totally received + $order->{'unitprice'} = $cost; + $order->{'freight'} = $freight; + $order->{'rrp'} = $rrp; + $order->{'orderstatus'} = 3; # totally received $new_ordernumber = NewOrder($order); if ($received_items) { foreach my $itemnumber (@$received_items) { - ModItemOrder($itemnumber, $new_ordernumber); + ModItemOrder( $itemnumber, $new_ordernumber ); } } # create a new order for the remaining items, and set its bookfund. foreach my $orderkey ( "linenumber", "allocation" ) { - delete($order->{'$orderkey'}); + delete( $order->{'$orderkey'} ); } $order->{'quantity'} -= $quantrec; $order->{'quantityreceived'} = 0; - my ($newOrder, $newordernumber) = NewOrder($order); + my ( $newOrder, $newordernumber ) = NewOrder($order); + # Change ordernumber in aqorders_items for items not received my @orderitems = GetItemnumbersFromOrder( $order->{'ordernumber'} ); - my $count = scalar @orderitems; + my $count = scalar @orderitems; - for (my $i=0; $i<$count; $i++){ - foreach (@$received_items){ - splice (@orderitems, $i, 1) if ($orderitems[$i] == $_); + for ( my $i = 0 ; $i < $count ; $i++ ) { + foreach (@$received_items) { + splice( @orderitems, $i, 1 ) if ( $orderitems[$i] == $_ ); } } foreach (@orderitems) { - ModItemOrder($_, $newOrder); + ModItemOrder( $_, $newOrder ); } - # Do we have to update order informations from the marc record? - my ($ordertag, $ordersubtag) = GetMarcFromKohaField('aqorders.ordernumber', 'ACQ'); - - # Updating MARC order field if exists - if ($ordertag and $ordersubtag) { - $debug and warn "updating MARC"; - # Getting record - my $record = GetMarcBiblio($biblionumber); - if ($record) { - $debug and warn "updating Record"; - foreach ($record->field($ordertag)) { - if ($_->subfield($ordersubtag) eq $ordernumber) { - # Updating ordernumber - $debug and warn "updating ordernumber $ordernumber => $newordernumber"; - $_->update($ordersubtag => $newordernumber); - - # Updating quantity - my ($quantitytag, $quantitysubtag) = GetMarcFromKohaField('aqorders.quantity', 'ACQ'); - if ($quantitysubtag) { - $debug and warn "updating quantity " . $order->{quantity}; - $_->update($quantitysubtag => $order->{quantity}); - } - } - } - - # Applying changes - ModBiblio($record, $biblionumber, 'ACQ'); - } - } - + # Do we have to update order informations from the marc record? + my ( $ordertag, $ordersubtag ) = + GetMarcFromKohaField( 'aqorders.ordernumber', 'ACQ' ); + + # Updating MARC order field if exists + if ( $ordertag and $ordersubtag ) { + $debug and warn "updating MARC"; + + # Getting record + my $record = GetMarcBiblio($biblionumber); + if ($record) { + $debug and warn "updating Record"; + foreach ( $record->field($ordertag) ) { + if ( $_->subfield($ordersubtag) eq $ordernumber ) { + + # Updating ordernumber + $debug + and warn +"updating ordernumber $ordernumber => $newordernumber"; + $_->update( $ordersubtag => $newordernumber ); + + # Updating quantity + my ( $quantitytag, $quantitysubtag ) = + GetMarcFromKohaField( 'aqorders.quantity', 'ACQ' ); + if ($quantitysubtag) { + $debug + and warn "updating quantity " + . $order->{quantity}; + $_->update( $quantitysubtag => $order->{quantity} ); + } + } + } + + # Applying changes + ModBiblio( $record, $biblionumber, 'ACQ' ); + } + } } else { $sth = $dbh->prepare( --