From 443eb5df1951e04b9e1fddbb72e0b365f15afa79 Mon Sep 17 00:00:00 2001 From: Jacek Ablewicz Date: Sat, 14 Dec 2013 12:07:11 +0100 Subject: [PATCH] [PASSED QA] Bug 9948: Fix acqui/finishreceive.pl so it will update item data properly on partial receives Problem summary: when doing partial receives for the given order - 1) if AcqCreateItem is set to 'ordering', various item data (price, dateaccessioned, replacementprice, replacementpricedate) are getting erroneously updated on the wrong (yet to be received == not the ones being currently received) item records 2) if AcqCreateItem is set to 'receiving', newly received item records are being created without the aforementioned fields set to the proper values This (trivial) patch should deal with both cases, hopefully without breaking enything else. To test: - apply the patch, - create some orders with 2+ quantity - test partial & non-partial receives for those orders - ensure the received item records are getting modified (for AcqCreateItem set to 'ordering') and/or created (for AcqCreateItem set to 'receiving') correctly for both partial and non-partial receives - receiving orders with quantity = 1 / receiving orders in non-partial mode should be still working fine for 1) & 2) scenarios (i.e., AcqCreateItem set to 'ordering' / AcqCreateItem set to 'receiving') Signed-off-by: Nicole C. Engard Works as I'd expect now! Awesome patch. Signed-off-by: Kyle M Hall Signed-off-by: Katrin Fischer Passes all tests and QA script. Also: t/db_dependent/Acquisition/ t/db_dependent/Acquisition.t Created 2 orders with 3 items each for both settings of AcqCreateItem (on receive, on order) with the patches applied. No regressions found. Closed baskets and received shipments for each, with AcqCreateItem set according to how the order was created. First recreated the problem without the patches, reloaded database and confirmed that the patch fixes it. No problems found. --- acqui/finishreceive.pl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/acqui/finishreceive.pl b/acqui/finishreceive.pl index ea9c9a2..aeb4394 100755 --- a/acqui/finishreceive.pl +++ b/acqui/finishreceive.pl @@ -56,6 +56,7 @@ my $rrp = $input->param('rrp'); my $note = $input->param("note"); my $bookfund = $input->param("bookfund"); my $order = GetOrder($ordernumber); +my $new_ordernumber = $ordernumber; #need old recievedate if we update the order, parcel.pl only shows the right parcel this way FIXME if ($quantityrec > $origquantityrec ) { @@ -97,7 +98,6 @@ if ($quantityrec > $origquantityrec ) { } } - my $new_ordernumber = $ordernumber; # save the quantity received. if ( $quantityrec > 0 ) { ($datereceived, $new_ordernumber) = ModReceiveOrder( @@ -163,6 +163,6 @@ ModItem( }, $biblionumber, $_ -) foreach GetItemnumbersFromOrder($ordernumber); +) foreach GetItemnumbersFromOrder($new_ordernumber); print $input->redirect("/cgi-bin/koha/acqui/parcel.pl?invoiceid=$invoiceid"); -- 1.8.3.2