From d9cb33ea113c17429b4a3be32627b882a3c6c6b5 Mon Sep 17 00:00:00 2001 From: Poorvi-R-Bhat Date: Mon, 1 Jul 2024 16:52:37 +0530 Subject: [PATCH] fix: corrected mismatch in the Purchase Receipt Status #15620 --- erpnext/controllers/status_updater.py | 5 ++- .../purchase_receipt/test_purchase_receipt.py | 38 +++++++++++++++++-- 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/erpnext/controllers/status_updater.py b/erpnext/controllers/status_updater.py index 17f072ebb07b..8d66066c97ad 100644 --- a/erpnext/controllers/status_updater.py +++ b/erpnext/controllers/status_updater.py @@ -102,7 +102,10 @@ def validate_status(status, options): ["To Bill", "eval:self.per_billed == 0 and self.docstatus == 1"], ["Partly Billed", "eval:self.per_billed > 0 and self.per_billed < 100 and self.docstatus == 1"], ["Return Issued", "eval:self.per_returned == 100 and self.docstatus == 1"], - ["Completed", "eval:self.per_billed == 100 and self.docstatus == 1"], + [ + "Completed", + "eval:(self.per_billed == 100 and self.docstatus == 1 and self.grand_total != 0) or (self.docstatus == 1 and self.grand_total == 0)", + ], ["Cancelled", "eval:self.docstatus==2"], ["Closed", "eval:self.status=='Closed' and self.docstatus != 2"], ], diff --git a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py index 35ead1464e20..8b89dcf3eb90 100644 --- a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py +++ b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py @@ -3210,6 +3210,39 @@ def create_lcv(self, receipt_document_type, receipt_document, company, expense_a lcv.save().submit() return lcv + def test_status_mapping(self): + purchase_receipt = frappe.get_doc( + { + "doctype": "Purchase Receipt", + "supplier": "Test Supplier", + "grand_total": 0.0, + "base_rounded_total": 0.0, + "rounded_total": 0.0, + "base_net_total": 0.0, + "posting_date": frappe.utils.today(), + "items": [ + { + "item_code": "item_for_status", + "item_name": "item_for_status", + "description": "item_for_status", + "uom": "Nos", + "qty": 1, + "rate": 0, + "amount": 0, + "base_rate": 0, + "base_amount": 0, + "warehouse": "Stores - W", + } + ], + } + ) + purchase_receipt.insert() + purchase_receipt.save() + purchase_receipt.submit() + purchase_receipt.reload() + self.assertEqual(purchase_receipt.grand_total, 0.0) + self.assertEqual(purchase_receipt.status, "Completed") + def prepare_data_for_internal_transfer(): from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_internal_supplier @@ -3453,11 +3486,10 @@ def make_purchase_receipt(**args): pr.insert() if not args.do_not_submit: pr.submit() - - pr.load_from_db() + pr.load_from_db() return pr test_dependencies = ["BOM", "Item Price", "Location"] -test_records = frappe.get_test_records("Purchase Receipt") +test_records = frappe.get_test_records("Purchase Receipt") \ No newline at end of file