From 92ca5a13e57f6254a4f6b504fbd3f68d4709c6a3 Mon Sep 17 00:00:00 2001 From: Srdjan Jankovic Date: Tue, 20 Dec 2011 14:56:51 +1300 Subject: [PATCH] bug_5473: Update items when receiving shipments Signed-off-by: Nicole C. Engard Tested by recieving multiple items with the AcqCreateItem preference set to 'placing and order' and 'receiving an item' In both cases the pricing and vendor is brought over to the item record so I'm signing off. Signed-off-by: Paul Poulain --- C4/Acquisition.pm | 1 - C4/Items.pm | 3 +-- acqui/finishreceive.pl | 46 +++++++++++++++++++++--------------------- 3 files changed, 24 insertions(+), 26 deletions(-) diff --git a/C4/Acquisition.pm b/C4/Acquisition.pm index 5cf88ec089..de1df43309 100644 --- a/C4/Acquisition.pm +++ b/C4/Acquisition.pm @@ -926,7 +926,6 @@ sub NewOrder { =cut sub NewOrderItem { - #my ($biblioitemnumber,$ordernumber, $biblionumber) = @_; my ($itemnumber, $ordernumber) = @_; my $dbh = C4::Context->dbh; my $query = qq| diff --git a/C4/Items.pm b/C4/Items.pm index cf716ab0a6..72fdf8ea19 100644 --- a/C4/Items.pm +++ b/C4/Items.pm @@ -458,8 +458,7 @@ sub ModItemFromMarc { =head2 ModItem - ModItem({ column => $newvalue }, $biblionumber, - $itemnumber[, $original_item_marc]); + ModItem({ column => $newvalue }, $biblionumber, $itemnumber); Change one or more columns in an item record and update the MARC representation of the item. diff --git a/acqui/finishreceive.pl b/acqui/finishreceive.pl index 71b13d60d0..cf7ceeec04 100755 --- a/acqui/finishreceive.pl +++ b/acqui/finishreceive.pl @@ -54,28 +54,11 @@ my $error_url_str; my $ecost = $input->param('ecost'); my $note = $input->param("note"); -my %tplorder = ( 'quantity' => $input->param('quantity') || '', - 'quantityreceived' => $input->param('quantityrec') || '', - 'notes' => $input->param("note") || '', - 'rrp' => $input->param('rrp') || '', - 'ecost' => $input->param('ecost') || '', - 'unitprice' => $input->param('cost') || '', - ); -my $order = GetOrder($ordernumber); -if ( any { $order->{$_} ne $tplorder{$_} } qw(quantity quantityreceived notes rrp ecost unitprice) ) { - $order->{quantity} = $tplorder{quantity} if $tplorder{quantity}; - $order->{quantityreceived} = $tplorder{quantityreceived} if $tplorder{quantityreceived}; - $order->{notes} = $tplorder{notes} if $tplorder{notes}; - $order->{rrp} = $tplorder{rrp} if $tplorder{rrp}; - $order->{ecost} = $tplorder{ecost} if $tplorder{ecost}; - $order->{unitprice} = $tplorder{unitprice} if $tplorder{unitprice}; - ModOrder($order); -} - #need old recievedate if we update the order, parcel.pl only shows the right parcel this way FIXME if ($quantityrec > $origquantityrec ) { # now, add items if applicable if (C4::Context->preference('AcqCreateItem') eq 'receiving') { + my @tags = $input->param('tag'); my @subfields = $input->param('subfield'); my @field_values = $input->param('field_value'); @@ -105,13 +88,30 @@ if ($quantityrec > $origquantityrec ) { $itemhash{$item}->{'ind_tag'}, $itemhash{$item}->{'indicator'},'ITEM'); my $record=MARC::Record::new_from_xml($xml, 'UTF-8'); - my ($biblionumber,$bibitemnum,$itemnumber) = AddItemFromMarc($record,$biblionumber); + my (undef,$bibitemnum,$itemnumber) = AddItemFromMarc($record,$biblionumber); + NewOrderItem($itemnumber, $ordernumber); } } # save the quantity received. - if( $quantityrec > 0 ) { - $datereceived = ModReceiveOrder($biblionumber,$ordernumber, $quantityrec ,$user,$unitprice,$invoiceno,$freight,$replacement,undef,$datereceived); - } + $datereceived = ModReceiveOrder($biblionumber,$ordernumber, $quantityrec ,$user,$unitprice,$invoiceno,$freight,$replacement,undef,$datereceived); +} + +update_item( $_ ) foreach GetItemnumbersFromOrder( $ordernumber ); + +print $input->redirect("/cgi-bin/koha/acqui/parcel.pl?invoice=$invoiceno&supplierid=$supplierid&freight=$freight&gst=$gst&datereceived=$datereceived$error_url_str"); + +################################ End of script ################################ + +sub update_item { + my ( $itemnumber ) = @_; + warn "AAA $itemnumber"; + + ModItem( { + booksellerid => $supplierid, + dateaccessioned => $datereceived, + price => $unitprice, + replacementprice => $replacement, + replacementpricedate => $datereceived, + }, $biblionumber, $itemnumber ); } - print $input->redirect("/cgi-bin/koha/acqui/parcel.pl?invoice=$invoiceno&supplierid=$supplierid&freight=$freight&gst=$gst&datereceived=$datereceived$error_url_str"); -- 2.39.2