From 3a0e1e8ef95603c98a9c4ca9e66694ac32cd257d Mon Sep 17 00:00:00 2001 From: Pugazhendhi Velu Date: Thu, 13 Nov 2025 08:54:44 +0000 Subject: [PATCH] fix: add return status for purchase receipt --- erpnext/controllers/status_updater.py | 1 + .../doctype/purchase_receipt/purchase_receipt.json | 4 ++-- .../stock/doctype/purchase_receipt/purchase_receipt.py | 10 +++++++++- .../doctype/purchase_receipt/purchase_receipt_list.js | 2 +- .../doctype/purchase_receipt/test_purchase_receipt.py | 3 ++- 5 files changed, 15 insertions(+), 5 deletions(-) diff --git a/erpnext/controllers/status_updater.py b/erpnext/controllers/status_updater.py index 538887977d3..84a11270040 100644 --- a/erpnext/controllers/status_updater.py +++ b/erpnext/controllers/status_updater.py @@ -101,6 +101,7 @@ status_map = { ["Draft", None], ["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", "eval:self.is_return == 1 and self.per_billed == 0 and self.docstatus == 1"], ["Return Issued", "eval:self.per_returned == 100 and self.docstatus == 1"], [ "Completed", diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json index 70192b0ba9a..7341c35c1d5 100755 --- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json +++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.json @@ -893,7 +893,7 @@ "no_copy": 1, "oldfieldname": "status", "oldfieldtype": "Select", - "options": "\nDraft\nPartly Billed\nTo Bill\nCompleted\nReturn Issued\nCancelled\nClosed", + "options": "\nDraft\nPartly Billed\nTo Bill\nCompleted\nReturn\nReturn Issued\nCancelled\nClosed", "print_hide": 1, "print_width": "150px", "read_only": 1, @@ -1300,7 +1300,7 @@ "idx": 261, "is_submittable": 1, "links": [], - "modified": "2025-08-06 16:41:02.690658", + "modified": "2025-11-12 19:53:48.173096", "modified_by": "Administrator", "module": "Stock", "name": "Purchase Receipt", diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py index 36b759fedca..0fa43dd2a67 100644 --- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py +++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py @@ -118,7 +118,15 @@ class PurchaseReceipt(BuyingController): shipping_address_display: DF.TextEditor | None shipping_rule: DF.Link | None status: DF.Literal[ - "", "Draft", "Partly Billed", "To Bill", "Completed", "Return Issued", "Cancelled", "Closed" + "", + "Draft", + "Partly Billed", + "To Bill", + "Completed", + "Return", + "Return Issued", + "Cancelled", + "Closed", ] subcontracting_receipt: DF.Link | None supplied_items: DF.Table[PurchaseReceiptItemSupplied] diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js b/erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js index d70b357d731..30562e23de8 100644 --- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js +++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js @@ -11,7 +11,7 @@ frappe.listview_settings["Purchase Receipt"] = { "currency", ], get_indicator: function (doc) { - if (cint(doc.is_return) == 1) { + if (cint(doc.is_return) == 1 && doc.status == "Return") { return [__("Return"), "gray", "is_return,=,Yes"]; } else if (doc.status === "Closed") { return [__("Closed"), "green", "status,=,Closed"]; diff --git a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py index c94f8b712bc..946997ecfe3 100644 --- a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py +++ b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py @@ -454,6 +454,7 @@ class TestPurchaseReceipt(IntegrationTestCase): # Check if Original PR updated self.assertEqual(pr.items[0].returned_qty, 2) self.assertEqual(pr.per_returned, 40) + self.assertEqual(returned.status, "Return") from erpnext.controllers.sales_and_purchase_return import make_return_doc @@ -2149,7 +2150,7 @@ class TestPurchaseReceipt(IntegrationTestCase): return_pr.items[0].stock_qty = 0.0 return_pr.submit() - self.assertEqual(return_pr.status, "To Bill") + self.assertEqual(return_pr.status, "Return") pi = make_purchase_invoice(return_pr.name) pi.submit()