test: Purchase Receipt Received Qty
This commit is contained in:
parent
afe1c45f7f
commit
05ec7cce82
@ -3,7 +3,7 @@
|
||||
|
||||
|
||||
import frappe
|
||||
from frappe import _, msgprint
|
||||
from frappe import _, msgprint, ValidationError
|
||||
from frappe.contacts.doctype.address.address import get_address_display
|
||||
from frappe.utils import cint, cstr, flt, getdate
|
||||
|
||||
@ -16,6 +16,7 @@ from erpnext.controllers.subcontracting import Subcontracting
|
||||
from erpnext.stock.get_item_details import get_conversion_factor
|
||||
from erpnext.stock.utils import get_incoming_rate
|
||||
|
||||
class QtyMismatchError(ValidationError): pass
|
||||
|
||||
class BuyingController(StockController, Subcontracting):
|
||||
|
||||
@ -367,7 +368,8 @@ class BuyingController(StockController, Subcontracting):
|
||||
# Check Received Qty = Accepted Qty + Rejected Qty
|
||||
val = flt(d.qty) + flt(d.rejected_qty)
|
||||
if (flt(val, d.precision("received_qty")) != flt(d.received_qty, d.precision("received_qty"))):
|
||||
frappe.throw(_("Accepted + Rejected Qty must be equal to Received quantity for Item {0}").format(d.item_code))
|
||||
message = _("Row #{0}: Received Qty must be equal to Accepted + Rejected Qty for Item {1}").format(d.idx, d.item_code)
|
||||
frappe.throw(msg=message, title=_("Mismatch"), exc=QtyMismatchError)
|
||||
|
||||
def validate_negative_quantity(self, item_row, field_list):
|
||||
if self.is_return:
|
||||
|
@ -15,6 +15,7 @@ from erpnext.stock.doctype.purchase_receipt.purchase_receipt import make_purchas
|
||||
from erpnext.stock.doctype.serial_no.serial_no import SerialNoDuplicateError, get_serial_nos
|
||||
from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse
|
||||
from erpnext.stock.stock_ledger import SerialNoExistsInFutureTransaction
|
||||
from erpnext.controllers.buying_controller import QtyMismatchError
|
||||
from erpnext.tests.utils import ERPNextTestCase
|
||||
|
||||
|
||||
@ -22,6 +23,22 @@ class TestPurchaseReceipt(ERPNextTestCase):
|
||||
def setUp(self):
|
||||
frappe.db.set_value("Buying Settings", None, "allow_multiple_items", 1)
|
||||
|
||||
def test_purchase_receipt_received_qty(self):
|
||||
"""
|
||||
1. Test if received qty is validated against accepted + rejected
|
||||
2. Test if received qty is auto set on save
|
||||
"""
|
||||
pr = make_purchase_receipt(qty=1, rejected_qty=1, received_qty=3,
|
||||
item_code="_Test Item Home Desktop 200", do_not_save=True)
|
||||
self.assertRaises(QtyMismatchError, pr.save)
|
||||
|
||||
pr.items[0].received_qty = 0
|
||||
pr.save()
|
||||
self.assertEqual(pr.items[0].received_qty, 2)
|
||||
|
||||
# teardown
|
||||
pr.delete()
|
||||
|
||||
def test_reverse_purchase_receipt_sle(self):
|
||||
|
||||
pr = make_purchase_receipt(qty=0.5, item_code="_Test Item Home Desktop 200")
|
||||
@ -1225,8 +1242,8 @@ def make_purchase_receipt(**args):
|
||||
pr.return_against = args.return_against
|
||||
pr.apply_putaway_rule = args.apply_putaway_rule
|
||||
qty = args.qty or 5
|
||||
received_qty = args.received_qty or qty
|
||||
rejected_qty = args.rejected_qty or flt(received_qty) - flt(qty)
|
||||
rejected_qty = args.rejected_qty or 0
|
||||
received_qty = args.received_qty or flt(rejected_qty) + flt(qty)
|
||||
|
||||
item_code = args.item or args.item_code or "_Test Item"
|
||||
uom = args.uom or frappe.db.get_value("Item", item_code, "stock_uom") or "_Test UOM"
|
||||
|
Loading…
x
Reference in New Issue
Block a user