fix: validate purchase invoice status and resolve related issues

This commit is contained in:
Rehan Ansari
2025-11-04 23:34:27 +05:30
parent 7285eaf633
commit 1928a394c9
4 changed files with 15 additions and 5 deletions

View File

@@ -340,7 +340,6 @@
"label": "Maintenance Required" "label": "Maintenance Required"
}, },
{ {
"allow_on_submit": 1,
"default": "Draft", "default": "Draft",
"fieldname": "status", "fieldname": "status",
"fieldtype": "Select", "fieldtype": "Select",
@@ -348,7 +347,7 @@
"in_standard_filter": 1, "in_standard_filter": 1,
"label": "Status", "label": "Status",
"no_copy": 1, "no_copy": 1,
"options": "Draft\nSubmitted\nPartially Depreciated\nFully Depreciated\nSold\nScrapped\nIn Maintenance\nOut of Order\nIssue\nReceipt\nCapitalized\nWork In Progress", "options": "Draft\nSubmitted\nCancelled\nPartially Depreciated\nFully Depreciated\nSold\nScrapped\nIn Maintenance\nOut of Order\nIssue\nReceipt\nCapitalized\nWork In Progress",
"read_only": 1 "read_only": 1
}, },
{ {
@@ -601,7 +600,7 @@
"link_fieldname": "target_asset" "link_fieldname": "target_asset"
} }
], ],
"modified": "2025-05-23 00:53:54.249309", "modified": "2025-11-04 22:39:00.817405",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Assets", "module": "Assets",
"name": "Asset", "name": "Asset",

View File

@@ -100,6 +100,7 @@ class Asset(AccountsController):
status: DF.Literal[ status: DF.Literal[
"Draft", "Draft",
"Submitted", "Submitted",
"Cancelled",
"Partially Depreciated", "Partially Depreciated",
"Fully Depreciated", "Fully Depreciated",
"Sold", "Sold",

View File

@@ -128,7 +128,7 @@
"fieldtype": "Link", "fieldtype": "Link",
"in_list_view": 1, "in_list_view": 1,
"label": "Asset", "label": "Asset",
"link_filters": "[[\"Asset\",\"status\",\"not in\",[\"Work In Progress\",\"Capitalized\",\"Fully Depreciated\",\"Sold\",\"Scrapped\",null]]]", "link_filters": "[[\"Asset\",\"status\",\"not in\",[\"Work In Progress\",\"Capitalized\",\"Fully Depreciated\",\"Sold\",\"Scrapped\",\"Cancelled\",null]]]",
"options": "Asset", "options": "Asset",
"reqd": 1 "reqd": 1
}, },
@@ -261,7 +261,7 @@
"index_web_pages_for_search": 1, "index_web_pages_for_search": 1,
"is_submittable": 1, "is_submittable": 1,
"links": [], "links": [],
"modified": "2025-07-18 15:59:53.981224", "modified": "2025-11-04 23:06:43.644846",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Assets", "module": "Assets",
"name": "Asset Repair", "name": "Asset Repair",

View File

@@ -82,11 +82,21 @@ class AssetRepair(AccountsController):
def validate_purchase_invoices(self): def validate_purchase_invoices(self):
for d in self.invoices: for d in self.invoices:
self.validate_purchase_invoice_status(d.purchase_invoice)
invoice_items = self.get_invoice_items(d.purchase_invoice) invoice_items = self.get_invoice_items(d.purchase_invoice)
self.validate_service_purchase_invoice(d.purchase_invoice, invoice_items) self.validate_service_purchase_invoice(d.purchase_invoice, invoice_items)
self.validate_expense_account(d, invoice_items) self.validate_expense_account(d, invoice_items)
self.validate_purchase_invoice_repair_cost(d, invoice_items) self.validate_purchase_invoice_repair_cost(d, invoice_items)
def validate_purchase_invoice_status(self, purchase_invoice):
docstatus = frappe.db.get_value("Purchase Invoice", purchase_invoice, "docstatus")
if docstatus == 0:
frappe.throw(
_("{0} is still in Draft. Please submit it before saving the Asset Repair.").format(
get_link_to_form("Purchase Invoice", purchase_invoice)
)
)
def get_invoice_items(self, pi): def get_invoice_items(self, pi):
invoice_items = frappe.get_all( invoice_items = frappe.get_all(
"Purchase Invoice Item", "Purchase Invoice Item",