feat(Asset Repair): Add total_repair_cost field
diff --git a/erpnext/assets/doctype/asset_repair/asset_repair.js b/erpnext/assets/doctype/asset_repair/asset_repair.js
index a5fda53..9d06cae 100644
--- a/erpnext/assets/doctype/asset_repair/asset_repair.js
+++ b/erpnext/assets/doctype/asset_repair/asset_repair.js
@@ -28,7 +28,7 @@
refresh: function(frm) {
frm.toggle_display(['completion_date', 'repair_status', 'accounting_details', 'accounting_dimensions_section'], !(frm.doc.__islocal));
- frm.toggle_display(['stock_consumption_details_section'], frm.doc.stock_consumption)
+ frm.toggle_display(['stock_consumption_details_section', 'total_repair_cost'], frm.doc.stock_consumption)
if (frm.doc.docstatus) {
frm.add_custom_button("View General Ledger", function() {
diff --git a/erpnext/assets/doctype/asset_repair/asset_repair.json b/erpnext/assets/doctype/asset_repair/asset_repair.json
index 9ab9271..df9ab7d 100644
--- a/erpnext/assets/doctype/asset_repair/asset_repair.json
+++ b/erpnext/assets/doctype/asset_repair/asset_repair.json
@@ -26,6 +26,7 @@
"stock_consumption",
"column_break_8",
"payable_account",
+ "total_repair_cost",
"stock_consumption_details_section",
"stock_items",
"section_break_9",
@@ -205,12 +206,17 @@
"fieldname": "stock_consumption_details_section",
"fieldtype": "Section Break",
"label": "Stock Consumption Details"
+ },
+ {
+ "fieldname": "total_repair_cost",
+ "fieldtype": "Currency",
+ "label": "Total Repair Cost"
}
],
"index_web_pages_for_search": 1,
"is_submittable": 1,
"links": [],
- "modified": "2021-05-12 21:20:18.276755",
+ "modified": "2021-05-13 02:40:57.953076",
"modified_by": "Administrator",
"module": "Assets",
"name": "Asset Repair",
diff --git a/erpnext/assets/doctype/asset_repair/asset_repair.py b/erpnext/assets/doctype/asset_repair/asset_repair.py
index 9c3d880..2b69b5b 100644
--- a/erpnext/assets/doctype/asset_repair/asset_repair.py
+++ b/erpnext/assets/doctype/asset_repair/asset_repair.py
@@ -16,18 +16,31 @@
frappe.throw(_("Please select Completion Date for Completed Repair"))
self.update_status()
- self.set_total_value()
-
- def set_total_value(self):
- for item in self.stock_items:
- item.total_value = flt(item.valuation_rate) * flt(item.consumed_quantity)
-
+ self.set_total_value() # change later
+ self.check_stock_items()
+ self.calculate_total_repair_cost()
+
def update_status(self):
if self.repair_status == 'Pending':
frappe.db.set_value('Asset', self.asset, 'status', 'Out of Order')
else:
frappe.db.set_value('Asset', self.asset, 'status', 'Submitted')
+ def set_total_value(self):
+ for item in self.stock_items:
+ item.total_value = flt(item.valuation_rate) * flt(item.consumed_quantity)
+
+ def check_stock_items(self):
+ if self.stock_consumption:
+ if not self.stock_items:
+ frappe.throw(_("Please enter Stock Items consumed during Asset Repair."))
+
+ def calculate_total_repair_cost(self):
+ self.total_repair_cost = self.repair_cost
+ if self.stock_consumption:
+ for item in self.stock_items:
+ self.total_repair_cost += item.total_value
+
def on_submit(self):
if self.repair_status == "Pending":
frappe.throw(_("Please update Repair Status."))
@@ -81,6 +94,41 @@
"posting_date": getdate()
})
gl_entry.insert()
+
+ # if self.capitalize_repair_cost:
+ # fixed_asset_account = self.get_fixed_asset_account()
+ # gl_entry = frappe.get_doc({
+ # "doctype": "GL Entry",
+ # "account": self.payable_account,
+ # "credit": self.total_repair_cost,
+ # "credit_in_account_currency": self.repair_cost,
+ # "against": repair_and_maintenance_account,
+ # "voucher_type": self.doctype,
+ # "voucher_no": self.name,
+ # "cost_center": self.cost_center,
+ # "posting_date": getdate()
+ # })
+ # gl_entry.insert()
+ # gl_entry = frappe.get_doc({
+ # "doctype": "GL Entry",
+ # "account": fixed_asset_account,
+ # "debit": self.total_repair_cost,
+ # "debit_in_account_currency": self.repair_cost,
+ # "against": self.payable_account,
+ # "voucher_type": self.doctype,
+ # "voucher_no": self.name,
+ # "cost_center": self.cost_center,
+ # "posting_date": getdate()
+ # })
+ # gl_entry.insert()
+
+ # def get_fixed_asset_account(self):
+ # asset_category = frappe.get_doc('Asset Category', frappe.db.get_value('Asset', self.asset, 'asset_category'))
+ # company = frappe.db.get_value('Asset', self.asset, 'company')
+ # for account in asset_category.accounts:
+ # if account.company_name == company:
+ # return account.fixed_asset_account
+
@frappe.whitelist()
def get_downtime(failure_date, completion_date):