From a8b7ff3ea87968508e400a38f78c6188e51ce928 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Wed, 5 Mar 2014 13:23:07 +0100 Subject: [PATCH] Bug 11699: ModReceiveOrder should take a hashref in parameter Test plan: prove t/db_dependent/Acquisition.t prove t/db_dependent/Acquisition/Invoices.t prove t/db_dependent/Acquisition/OrderFromSubscription.t all should return green. --- C4/Acquisition.pm | 34 +++++++-- acqui/finishreceive.pl | 28 +++---- t/db_dependent/Acquisition.t | 80 ++++++++++---------- t/db_dependent/Acquisition/Invoices.t | 66 ++++++++-------- t/db_dependent/Acquisition/OrderFromSubscription.t | 13 +++- 5 files changed, 124 insertions(+), 97 deletions(-) diff --git a/C4/Acquisition.pm b/C4/Acquisition.pm index 8db497d..2cca2f5 100644 --- a/C4/Acquisition.pm +++ b/C4/Acquisition.pm @@ -1426,8 +1426,20 @@ sub GetCancelledOrders { =head3 ModReceiveOrder - &ModReceiveOrder($biblionumber, $ordernumber, $quantityreceived, $user, - $cost, $ecost, $invoiceid, rrp, budget_id, datereceived, \@received_itemnumbers); + &ModReceiveOrder({ + biblionumber => $biblionumber, + ordernumber => $ordernumber, + quantityreceived => $quantityreceived, + user => $user, + cost => $cost, + ecost => $ecost, + invoiceid => $invoiceid, + rrp => rrp, + budget_id => budget_id, + datereceived => datereceived, + received_itemnumbers => \@received_itemnumbers, + notes => $notes, + ); Updates an order, to reflect the fact that it was received, at least in part. All arguments not mentioned below update the fields with the @@ -1442,11 +1454,19 @@ C<$ordernumber>. sub ModReceiveOrder { - my ( - $biblionumber, $ordernumber, $quantrec, $user, $cost, $ecost, - $invoiceid, $rrp, $budget_id, $datereceived, $received_items, $notes - ) - = @_; + my ( $params ) = @_; + my $biblionumber = $params->{biblionumber}; + my $ordernumber = $params->{ordernumber}; + my $quantrec = $params->{quantityreceived}; + my $user = $params->{user}; + my $cost = $params->{cost}; + my $ecost = $params->{ecost}; + my $invoiceid = $params->{invoiceid}; + my $rrp = $params->{rrp}; + my $budget_id = $params->{budget_id}; + my $datereceived = $params->{datereceived}; + my $received_items = $params->{received_items}; + my $notes = $params->{notes}; my $dbh = C4::Context->dbh; $datereceived = C4::Dates->output('iso') unless $datereceived; diff --git a/acqui/finishreceive.pl b/acqui/finishreceive.pl index bc63cec..3dc93d4 100755 --- a/acqui/finishreceive.pl +++ b/acqui/finishreceive.pl @@ -100,20 +100,20 @@ if ($quantityrec > $origquantityrec ) { # save the quantity received. if ( $quantityrec > 0 ) { - ($datereceived, $new_ordernumber) = ModReceiveOrder( - $biblionumber, - $ordernumber, - $quantityrec, - $user, - $order->{unitprice}, - $order->{ecost}, - $invoiceid, - $order->{rrp}, - $bookfund, - $datereceived, - \@received_items, - $notes, - ); + ($datereceived, $new_ordernumber) = ModReceiveOrder({ + biblionumber => $biblionumber, + ordernumber => $ordernumber, + quantityreceived => $quantityrec, + user => $user, + cost => $order->{unitprice}, + ecost => $order->{ecost}, + invoiceid => $invoiceid, + rrp => $order->{rrp}, + budget_id => $bookfund, + datereceived => $datereceived, + received_items => \@received_items, + notes => $notes, + } ); } # now, add items if applicable diff --git a/t/db_dependent/Acquisition.t b/t/db_dependent/Acquisition.t index 8fef897..6262f01 100755 --- a/t/db_dependent/Acquisition.t +++ b/t/db_dependent/Acquisition.t @@ -159,20 +159,18 @@ my $invoiceid = AddInvoice( unknown => "unknown" ); -my ($datereceived, $new_ordernumber) = ModReceiveOrder( - $biblionumber2, - $ordernumber2, - 2, - undef, - 12, - 12, - $invoiceid, - 42, - undef, - undef, - undef, - "my notes", - ); +my ( $datereceived, $new_ordernumber ) = ModReceiveOrder( + { + biblionumber => $biblionumber2, + ordernumber => $ordernumber2, + quantityreceived => 2, + cost => 12, + ecost => 12, + invoiceid => $invoiceid, + rrp => 42, + notes => "my notes", + } +); my $order2 = GetOrder( $ordernumber2 ); is($order2->{'quantityreceived'}, 0, 'Splitting up order did not receive any on original order'); is($order2->{'quantity'}, 40, '40 items on original order'); @@ -191,20 +189,19 @@ my $budgetid2 = C4::Budgets::AddBudget( } ); -($datereceived, $new_ordernumber) = ModReceiveOrder( - $biblionumber2, - $ordernumber3, - 2, - undef, - 12, - 12, - $invoiceid, - 42, - $budgetid2, - undef, - undef, - "my other notes", - ); +( $datereceived, $new_ordernumber ) = ModReceiveOrder( + { + biblionumber => $biblionumber2, + ordernumber => $ordernumber3, + quantityreceived => 2, + cost => 12, + ecost => 12, + invoiceid => $invoiceid, + rrp => 42, + budget_id => $budgetid2, + notes => "my other notes", + } +); my $order3 = GetOrder( $ordernumber3 ); is($order3->{'quantityreceived'}, 0, 'Splitting up order did not receive any on original order'); @@ -217,20 +214,19 @@ is($neworder->{'quantity'}, 2, '2 items on new order'); is($neworder->{'quantityreceived'}, 2, 'Splitting up order received items on new order'); is($neworder->{'budget_id'}, $budgetid2, 'Budget on new order is changed'); -($datereceived, $new_ordernumber) = ModReceiveOrder( - $biblionumber2, - $ordernumber3, - 2, - undef, - 12, - 12, - $invoiceid, - 42, - $budgetid2, - undef, - undef, - "my third notes", - ); +( $datereceived, $new_ordernumber ) = ModReceiveOrder( + { + biblionumber => $biblionumber2, + ordernumber => $ordernumber3, + quantityreceived => 2, + cost => 12, + ecost => 12, + invoiceid => $invoiceid, + rrp => 42, + budget_id => $budgetid2, + notes => "my third notes", + } +); $order3 = GetOrder( $ordernumber3 ); is($order3->{'quantityreceived'}, 2, 'Order not split up'); diff --git a/t/db_dependent/Acquisition/Invoices.t b/t/db_dependent/Acquisition/Invoices.t index 78b7cfb..3b86a54 100644 --- a/t/db_dependent/Acquisition/Invoices.t +++ b/t/db_dependent/Acquisition/Invoices.t @@ -87,39 +87,41 @@ my $invoiceid2 = AddInvoice(invoicenumber => 'invoice2', booksellerid => $bookse shipmentdate => '2012-12-24', ); -my ($datereceived, $new_ordernumber) = ModReceiveOrder( - $biblionumber1, - $ordernumber1, - 2, - undef, - 12, - 12, - $invoiceid1, - 42 - ); - -($datereceived, $new_ordernumber) = ModReceiveOrder( - $biblionumber2, - $ordernumber2, - 1, - undef, - 5, - 5, - $invoiceid2, - 42 - ); - -($datereceived, $new_ordernumber) = ModReceiveOrder( - $biblionumber3, - $ordernumber3, - 1, - undef, - 12, - 12, - $invoiceid2, - 42 - ); +my ( $datereceived, $new_ordernumber ) = ModReceiveOrder( + { + biblionumber => $biblionumber1, + ordernumber => $ordernumber1, + quantityreceived => 2, + cost => 12, + ecost => 12, + invoiceid => $invoiceid1, + rrp => 42 + } +); + +( $datereceived, $new_ordernumber ) = ModReceiveOrder( + { + biblionumber => $biblionumber2, + ordernumber => $ordernumber2, + quantityreceived => 1, + cost => 5, + ecost => 5, + invoiceid => $invoiceid2, + rrp => 42 + } +); +( $datereceived, $new_ordernumber ) = ModReceiveOrder( + { + biblionumber => $biblionumber3, + ordernumber => $ordernumber3, + quantityreceived => 1, + cost => 12, + ecost => 12, + invoiceid => $invoiceid2, + rrp => 42 + } +); my $invoice1 = GetInvoiceDetails($invoiceid1); my $invoice2 = GetInvoiceDetails($invoiceid2); diff --git a/t/db_dependent/Acquisition/OrderFromSubscription.t b/t/db_dependent/Acquisition/OrderFromSubscription.t index 60b1d3a..12ca9a4 100644 --- a/t/db_dependent/Acquisition/OrderFromSubscription.t +++ b/t/db_dependent/Acquisition/OrderFromSubscription.t @@ -83,8 +83,17 @@ is ( $order->{subscriptionid}, $subscription->{subscriptionid}, "test subscripti ok( $order->{ecost} == $cost, "test cost for the last order not received"); my ( $datereceived, $new_ordernumber ) = ModReceiveOrder( - $biblionumber, $ordernumber, 1, undef, $cost, $cost, - undef, $cost, $budget_id, '02-01-2013', undef); + { + biblionumber => $biblionumber, + ordernumber => $ordernumber, + quantityreceived => 1, + cost => $cost, + ecost => $cost, + rrp => $cost, + budget_id => $budget_id, + datereceived => '02-01-2013' + } +); $order = GetLastOrderReceivedFromSubscriptionid( $subscription->{subscriptionid} ); is ( $order->{subscriptionid}, $subscription->{subscriptionid}, "test subscriptionid for the last order received"); -- 1.7.10.4