diff --git a/erpnext/assets/doctype/asset/asset.json b/erpnext/assets/doctype/asset/asset.json index 573832c44c..ee6b12ce47 100644 --- a/erpnext/assets/doctype/asset/asset.json +++ b/erpnext/assets/doctype/asset/asset.json @@ -154,7 +154,7 @@ "label": "Status", "length": 0, "no_copy": 1, - "options": "Draft\nSubmitted\nPartially Depreciated\nFully Depreciated\nSold\nScrapped\nIn Repair\nOut of Order", + "options": "Draft\nSubmitted\nPartially Depreciated\nFully Depreciated\nSold\nScrapped\nIn Maintenance\nOut of Order", "permlevel": 0, "precision": "", "print_hide": 0, @@ -1221,7 +1221,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2017-12-01 15:11:47.466859", + "modified": "2017-12-08 12:58:44.137460", "modified_by": "Administrator", "module": "Assets", "name": "Asset", diff --git a/erpnext/assets/doctype/asset/asset.py b/erpnext/assets/doctype/asset/asset.py index e5b545e585..857aadef61 100644 --- a/erpnext/assets/doctype/asset/asset.py +++ b/erpnext/assets/doctype/asset/asset.py @@ -5,7 +5,7 @@ from __future__ import unicode_literals import frappe from frappe import _ -from frappe.utils import flt, add_months, cint, nowdate, getdate +from frappe.utils import flt, add_months, cint, nowdate, getdate, today from frappe.model.document import Document from erpnext.accounts.doctype.purchase_invoice.purchase_invoice import get_fixed_asset_account from erpnext.assets.doctype.asset.depreciation \ @@ -174,7 +174,7 @@ class Asset(Document): def set_status(self, status=None): '''Get and update status''' if not status: - status = self.get_status() + status = self.get_status() self.db_set("status", status) def get_status(self): @@ -193,6 +193,16 @@ class Asset(Document): status = "Cancelled" return status +def update_maintenance_status(): + assets = frappe.get_all('Asset', filters = {'docstatus': 1, 'maintenance_required': 1}) + + for asset in assets: + asset = frappe.get_doc("Asset", asset.name) + if frappe.db.exists('Asset Maintenance Task', {'parent': asset.name, 'next_due_date': today()}): + asset.set_status('In Maintenance') + if frappe.db.exists('Asset Repair', {'asset_name': asset.name, 'repair_status': 'Pending'}): + asset.set_status('Out of Order') + @frappe.whitelist() def make_purchase_invoice(asset, item_code, gross_purchase_amount, company, posting_date): pi = frappe.new_doc("Purchase Invoice") diff --git a/erpnext/hooks.py b/erpnext/hooks.py index bf6894c906..53d117cf46 100644 --- a/erpnext/hooks.py +++ b/erpnext/hooks.py @@ -224,7 +224,8 @@ scheduler_events = { "erpnext.stock.doctype.serial_no.serial_no.update_maintenance_status", "erpnext.buying.doctype.supplier_scorecard.supplier_scorecard.refresh_scorecards", "erpnext.setup.doctype.company.company.cache_companies_monthly_sales_history", - "erpnext.manufacturing.doctype.bom_update_tool.bom_update_tool.update_latest_price_in_all_boms" + "erpnext.manufacturing.doctype.bom_update_tool.bom_update_tool.update_latest_price_in_all_boms", + "erpnext.assets.doctype.asset.asset.update_maintenance_status" ] }