mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-24 23:49:19 +00:00
Merge pull request #54046 from frappe/mergify/bp/version-15-hotfix/pr-54042
fix: skip discount amount validation when not saving (backport #54042)
This commit is contained in:
@@ -289,6 +289,30 @@ class TestPurchaseOrder(FrappeTestCase):
|
|||||||
# ordered qty should decrease (back to initial) on row deletion
|
# ordered qty should decrease (back to initial) on row deletion
|
||||||
self.assertEqual(get_ordered_qty(), existing_ordered_qty)
|
self.assertEqual(get_ordered_qty(), existing_ordered_qty)
|
||||||
|
|
||||||
|
def test_discount_amount_partial_purchase_receipt(self):
|
||||||
|
po = create_purchase_order(qty=4, rate=100, do_not_save=1)
|
||||||
|
po.apply_discount_on = "Grand Total"
|
||||||
|
po.discount_amount = 120
|
||||||
|
po.save()
|
||||||
|
po.submit()
|
||||||
|
|
||||||
|
self.assertEqual(po.grand_total, 280)
|
||||||
|
|
||||||
|
pr1 = make_purchase_receipt(po.name)
|
||||||
|
pr1.items[0].qty = 3
|
||||||
|
pr1.save()
|
||||||
|
pr1.submit()
|
||||||
|
|
||||||
|
self.assertEqual(pr1.discount_amount, 120)
|
||||||
|
self.assertEqual(pr1.grand_total, 180)
|
||||||
|
|
||||||
|
pr2 = make_purchase_receipt(po.name)
|
||||||
|
pr2.save()
|
||||||
|
pr2.submit()
|
||||||
|
|
||||||
|
self.assertEqual(pr2.discount_amount, 0)
|
||||||
|
self.assertEqual(pr2.grand_total, 100)
|
||||||
|
|
||||||
def test_update_child_perm(self):
|
def test_update_child_perm(self):
|
||||||
po = create_purchase_order(item_code="_Test Item", qty=4)
|
po = create_purchase_order(item_code="_Test Item", qty=4)
|
||||||
|
|
||||||
|
|||||||
@@ -740,7 +740,8 @@ class calculate_taxes_and_totals:
|
|||||||
discount_amount += total_return_discount
|
discount_amount += total_return_discount
|
||||||
|
|
||||||
# validate that discount amount cannot exceed the total before discount
|
# validate that discount amount cannot exceed the total before discount
|
||||||
if (
|
# only during save (i.e. when `_action` is set)
|
||||||
|
if self.doc.get("_action") and (
|
||||||
(grand_total >= 0 and discount_amount > grand_total)
|
(grand_total >= 0 and discount_amount > grand_total)
|
||||||
or (grand_total < 0 and discount_amount < grand_total) # returns
|
or (grand_total < 0 and discount_amount < grand_total) # returns
|
||||||
):
|
):
|
||||||
|
|||||||
Reference in New Issue
Block a user