diff --git a/erpnext/selling/doctype/sales_order/test_sales_order.py b/erpnext/selling/doctype/sales_order/test_sales_order.py index 2c9e8871f4a..0f328472957 100644 --- a/erpnext/selling/doctype/sales_order/test_sales_order.py +++ b/erpnext/selling/doctype/sales_order/test_sales_order.py @@ -1960,22 +1960,36 @@ class TestSalesOrder(FrappeTestCase): from erpnext.accounts.doctype.payment_entry.test_payment_entry import get_payment_entry from erpnext.accounts.doctype.payment_request.payment_request import make_payment_request - so = make_sales_order(qty=1, rate=100) + so = make_sales_order(qty=1, rate=100, do_not_submit=True) + # no-op; for optical consistency with how a webshop SO would look like + so.order_type = "Shopping Cart" + so.submit() self.assertEqual(frappe.db.get_value(so.doctype, so.name, "advance_payment_status"), "Not Requested") - pr = make_payment_request(dt=so.doctype, dn=so.name, submit_doc=True, return_doc=True) + pr = make_payment_request( + dt=so.doctype, dn=so.name, order_type="Shopping Cart", submit_doc=True, return_doc=True + ) self.assertEqual(frappe.db.get_value(so.doctype, so.name, "advance_payment_status"), "Requested") - pe = get_payment_entry(so.doctype, so.name).save().submit() + pe = pr.set_as_paid() + pr.reload() # status updated + pe.reload() # references moved to Sales Invoice + self.assertEqual(pr.status, "Paid") + self.assertEqual(pe.references[0].reference_doctype, "Sales Invoice") self.assertEqual(frappe.db.get_value(so.doctype, so.name, "advance_payment_status"), "Fully Paid") - pe.reload() pe.cancel() - self.assertEqual(frappe.db.get_value(so.doctype, so.name, "advance_payment_status"), "Requested") - pr.reload() + self.assertEqual(pr.status, "Paid") # TODO: this might be a bug + so.reload() # reload + # regardless, since the references have already "handed-over" to SI, + # the SO keeps its historical state at the time of hand over + self.assertEqual(frappe.db.get_value(so.doctype, so.name, "advance_payment_status"), "Fully Paid") + pr.cancel() - self.assertEqual(frappe.db.get_value(so.doctype, so.name, "advance_payment_status"), "Not Requested") + self.assertEqual( + frappe.db.get_value(so.doctype, so.name, "advance_payment_status"), "Not Requested" + ) # TODO: this might be a bug; handover has happened def test_pick_list_without_rejected_materials(self): serial_and_batch_item = make_item(