Bug 31840: Consider current cost if modifying order

This patch deducts the current cost of an order if modifying it, so that
the current cost isn't counted when checking whether the updated cost
will take the order total amount above the allowed budget.

To test:
1. Add an active budget of $1,000
2. Attach a fund of $1,000. Set the fund to warn at 98% and $900.
3. Add an order to a basket, give it a vendor price of $500 with no
discount or tax and Save
4. Modify the order and change the vendor price to $450 and Save
5. Notice you get a warning that this order total amount will exceed the
allowed budget - this is incorrect.
6. Apply the patch and cancel the change so you're redirected back to
the basket
7. Modify the order and change the vendor price to $450 and Save
8. You should be able to Save without requiring confirmation
9. Add another order to the basket, give it a vendor price of $100 with
no discount or tax and Save. This should save normally, confirming we
can add new orders that do not exceed the allowed budget
10. Add another order to the basket, give it a vendor price of $500 with
no discount or tax and Save. This should trigger the warning that you
will exceed the allowed budget, as expected.

Sponsored-by: Waikato Institute of Technology

Signed-off-by: David Nind <david@davidnind.com>

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
Aleisha Amohia 2022-10-17 02:16:58 +00:00 committed by Tomas Cohen Arazi
parent 894c6dd0fe
commit c6ddce6b21
Signed by: tomascohen
GPG key ID: 0A272EA1B2F3C15F

View file

@ -155,6 +155,14 @@ unless($confirm_budget_exceeding) {
my $budget = GetBudget($budget_id);
my $budget_spent = GetBudgetSpent($budget_id);
my $budget_ordered = GetBudgetOrdered($budget_id);
my $ordernumber = $input->param('ordernumber');
if ( $ordernumber ) {
# modifying an existing order so remove order price from $budget_ordered
my $order = Koha::Acquisition::Orders->find($ordernumber);
$budget_ordered = $budget_ordered - ( $order->ecost_tax_included * $order->quantity );
}
my $budget_used = $budget_spent + $budget_ordered;
my $budget_remaining = $budget->{budget_amount} - $budget_used;
my $budget_encumbrance = $budget->{budget_amount} * $budget->{budget_encumb} / 100;