mirror of
https://github.com/frappe/erpnext.git
synced 2026-08-13 14:41:53 +00:00
fix: keep asset repair downtime in sync with entered dates
(cherry picked from commit 4406bb9068)
This commit is contained in:
@@ -116,24 +116,39 @@ frappe.ui.form.on("Asset Repair", {
|
|||||||
},
|
},
|
||||||
|
|
||||||
repair_status: (frm) => {
|
repair_status: (frm) => {
|
||||||
if (frm.doc.completion_date && frm.doc.repair_status == "Completed") {
|
|
||||||
frappe.call({
|
|
||||||
method: "erpnext.assets.doctype.asset_repair.asset_repair.get_downtime",
|
|
||||||
args: {
|
|
||||||
failure_date: frm.doc.failure_date,
|
|
||||||
completion_date: frm.doc.completion_date,
|
|
||||||
},
|
|
||||||
callback: function (r) {
|
|
||||||
if (r.message) {
|
|
||||||
frm.set_value("downtime", r.message + " Hrs");
|
|
||||||
}
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (frm.doc.repair_status == "Completed" && !frm.doc.completion_date) {
|
if (frm.doc.repair_status == "Completed" && !frm.doc.completion_date) {
|
||||||
frm.set_value("completion_date", frappe.datetime.now_datetime());
|
frm.set_value("completion_date", frappe.datetime.now_datetime());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
frm.events.set_downtime(frm);
|
||||||
|
},
|
||||||
|
|
||||||
|
failure_date: (frm) => {
|
||||||
|
frm.events.set_downtime(frm);
|
||||||
|
},
|
||||||
|
|
||||||
|
completion_date: (frm) => {
|
||||||
|
frm.events.set_downtime(frm);
|
||||||
|
},
|
||||||
|
|
||||||
|
set_downtime: (frm) => {
|
||||||
|
if (frm.doc.repair_status != "Completed" || !frm.doc.failure_date || !frm.doc.completion_date) {
|
||||||
|
frm.set_value("downtime", null);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
frappe.call({
|
||||||
|
method: "erpnext.assets.doctype.asset_repair.asset_repair.get_downtime",
|
||||||
|
args: {
|
||||||
|
failure_date: frm.doc.failure_date,
|
||||||
|
completion_date: frm.doc.completion_date,
|
||||||
|
},
|
||||||
|
callback: function (r) {
|
||||||
|
if (r.message) {
|
||||||
|
frm.set_value("downtime", r.message + " Hrs");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
stock_items_on_form_rendered() {
|
stock_items_on_form_rendered() {
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ class AssetRepair(AccountsController):
|
|||||||
self.calculate_repair_cost()
|
self.calculate_repair_cost()
|
||||||
self.calculate_total_repair_cost()
|
self.calculate_total_repair_cost()
|
||||||
self.check_repair_status()
|
self.check_repair_status()
|
||||||
|
self.set_downtime()
|
||||||
|
|
||||||
def validate_asset(self):
|
def validate_asset(self):
|
||||||
if self.asset_doc.status in ("Sold", "Scrapped"):
|
if self.asset_doc.status in ("Sold", "Scrapped"):
|
||||||
@@ -239,6 +240,13 @@ class AssetRepair(AccountsController):
|
|||||||
if self.repair_status == "Pending" and self.docstatus == 1:
|
if self.repair_status == "Pending" and self.docstatus == 1:
|
||||||
frappe.throw(_("Please update Repair Status."))
|
frappe.throw(_("Please update Repair Status."))
|
||||||
|
|
||||||
|
def set_downtime(self):
|
||||||
|
# keep downtime in sync with the entered dates, regardless of edit order
|
||||||
|
if self.repair_status == "Completed" and self.failure_date and self.completion_date:
|
||||||
|
self.downtime = f"{get_downtime(self.failure_date, self.completion_date)} Hrs"
|
||||||
|
else:
|
||||||
|
self.downtime = None
|
||||||
|
|
||||||
def update_asset_value(self):
|
def update_asset_value(self):
|
||||||
total_repair_cost = self.total_repair_cost if self.docstatus == 1 else -1 * self.total_repair_cost
|
total_repair_cost = self.total_repair_cost if self.docstatus == 1 else -1 * self.total_repair_cost
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user