diff --git a/erpnext/controllers/status_updater.py b/erpnext/controllers/status_updater.py index 492000d71d44..e8aa6254d34d 100644 --- a/erpnext/controllers/status_updater.py +++ b/erpnext/controllers/status_updater.py @@ -94,7 +94,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) or (self.docstatus == 1 and self.grand_total == 0 and self.per_returned != 100 and self.is_return == 0)", + ], ["Cancelled", "eval:self.docstatus==2"], ["Closed", "eval:self.status=='Closed' and self.docstatus != 2"], ], diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json index ee8df084f08f..61a180caba45 100755 --- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json +++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json @@ -1111,6 +1111,7 @@ "depends_on": "eval:!doc.__islocal", "fieldname": "per_returned", "fieldtype": "Percent", + "in_list_view": 1, "label": "% Returned", "no_copy": 1, "print_hide": 1, @@ -1272,7 +1273,7 @@ "idx": 261, "is_submittable": 1, "links": [], - "modified": "2024-04-08 20:23:03.699201", + "modified": "2024-07-04 14:50:10.538472", "modified_by": "Administrator", "module": "Stock", "name": "Purchase Receipt", diff --git a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py index 459f7f3f8413..2a34f1060a0b 100644 --- a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py +++ b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py @@ -8,6 +8,11 @@ import erpnext from erpnext.accounts.doctype.account.test_account import get_inventory_account +<<<<<<< HEAD +======= +from erpnext.buying.doctype.supplier.test_supplier import create_supplier +from erpnext.controllers.accounts_controller import InvalidQtyError +>>>>>>> 623b4c21cd (fix: corrected mismatch in the Purchase Receipt Status #15620 (#42138)) from erpnext.controllers.buying_controller import QtyMismatchError from erpnext.stock import get_warehouse_account_map from erpnext.stock.doctype.item.test_item import create_item, make_item @@ -3229,6 +3234,22 @@ def test_do_not_use_batchwise_valuation_rate(self): doc.flags.ignore_validate = True doc.save() + def test_status_mapping(self): + item_code = "item_for_status" + create_item(item_code) + create_item("item_for_status") + warehouse = create_warehouse("Stores") + supplier = "Test Supplier" + create_supplier(supplier_name=supplier) + pr = make_purchase_receipt( + item_code=item_code, + warehouse=warehouse, + qty=1, + rate=0, + ) + self.assertEqual(pr.grand_total, 0.0) + self.assertEqual(pr.status, "Completed") + def prepare_data_for_internal_transfer(): from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_internal_supplier @@ -3471,7 +3492,6 @@ def make_purchase_receipt(**args): pr.insert() if not args.do_not_submit: pr.submit() - pr.load_from_db() return pr