From 0db9dcf7e4c98311870360e14e6829fd2c978763 Mon Sep 17 00:00:00 2001 From: Christophe TORIN Date: Wed, 1 Jun 2022 14:14:38 +0200 Subject: [PATCH] Bug 29607: Store the discount amount correctly when importing and order from a file This bug fixes how the discount amount for an order is stored, when an order is added to a basket using "From staged MARC records". Test plan: 1. Export a record (without the items) (Tools > Catalog > Export data). 2. Delete the record from the catalog (including any items). 3. Stage the record for import (Tools > Catalog > Stage MARC records for import). 4. Create a new vendor with a discount of 25%. (Or select and existing vendor that has a discount). (Acquisitions > New vendor) 5. Create a new basket for the vendor. (Acquisitions > Manage orders > search for vendors > New > Basket). 6. Add to the basket using "From a staged file": . select "Add orders" next to the staged file . select the record to add to the order . enter a price . leave the discount field blank . select a fund . select "Save" ==> The order is created! 7. Modify the order - note that the discount is showing on the form as .25% instead of 25%, also note that the discount amount is calculated correctly. 8. Check what is recorded in the database: . koha-mysql kohadev . select * from aqorders; ==> discount field for the basket item shows as 0.2500 9. Change the discount to 25%. Run step 8 again - discount amount will be correctly shown as 25.0000 10. Apply the patch. 11. Repeat steps 1-9 - discount amount is shown and calculated correctly. 12. Test modifying the discount amount - should be calculated and shown correctly. 13. Sign off! See additional comments in the bug description. Signed-off-by: David Nind --- acqui/addorderiso2709.pl | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/acqui/addorderiso2709.pl b/acqui/addorderiso2709.pl index 658adb03da..dd90a398fb 100755 --- a/acqui/addorderiso2709.pl +++ b/acqui/addorderiso2709.pl @@ -162,7 +162,6 @@ if ($op eq ""){ my $c_quantity = shift( @quantities ) || GetMarcQuantity($marcrecord, C4::Context->preference('marcflavour') ) || 1; my $c_budget_id = shift( @budgets_id ) || $input->param('all_budget_id') || $budget_id; my $c_discount = shift ( @discount); - $c_discount = $c_discount / 100 if $c_discount > 1; my $c_sort1 = shift( @sort1 ) || $input->param('all_sort1') || ''; my $c_sort2 = shift( @sort2 ) || $input->param('all_sort2') || ''; my $c_replacement_price = shift( @orderreplacementprices ); @@ -275,13 +274,13 @@ if ($op eq ""){ $price =~ s/\./,/ if C4::Context->preference("CurrencyFormat") eq "FR"; $price = Koha::Number::Price->new($price)->unformat; $orderinfo{tax_rate} = $bookseller->tax_rate; - my $c = $c_discount ? $c_discount : $bookseller->discount / 100; + my $c = $c_discount ? $c_discount : $bookseller->discount; $orderinfo{discount} = $c; if ( $c_discount ) { $orderinfo{ecost} = $price; - $orderinfo{rrp} = $orderinfo{ecost} / ( 1 - $c ); + $orderinfo{rrp} = $orderinfo{ecost} / ( 1 - $c / 100 ); } else { - $orderinfo{ecost} = $price * ( 1 - $c ); + $orderinfo{ecost} = $price * ( 1 - $c / 100 ); $orderinfo{rrp} = $price; } $orderinfo{listprice} = $orderinfo{rrp} / $active_currency->rate; @@ -336,13 +335,13 @@ if ($op eq ""){ $c_price =~ s/\./,/ if C4::Context->preference("CurrencyFormat") eq "FR"; $c_price = Koha::Number::Price->new($c_price)->unformat; $orderinfo{tax_rate} = $bookseller->tax_rate; - my $c = $c_discount ? $c_discount : $bookseller->discount / 100; + my $c = $c_discount ? $c_discount : $bookseller->discount; $orderinfo{discount} = $c; if ( $c_discount ) { $orderinfo{ecost} = $c_price; - $orderinfo{rrp} = $orderinfo{ecost} / ( 1 - $c ); + $orderinfo{rrp} = $orderinfo{ecost} / ( 1 - $c / 100 ); } else { - $orderinfo{ecost} = $c_price * ( 1 - $c ); + $orderinfo{ecost} = $c_price * ( 1 - $c / 100 ); $orderinfo{rrp} = $c_price; } $orderinfo{listprice} = $orderinfo{rrp} / $active_currency->rate; -- 2.30.2