diff --git a/erpnext/hooks.py b/erpnext/hooks.py index af4dd3b68e9..d64409d9564 100644 --- a/erpnext/hooks.py +++ b/erpnext/hooks.py @@ -178,7 +178,8 @@ scheduler_events = { "erpnext.hr.doctype.employee.employee.send_birthday_reminders", "erpnext.projects.doctype.task.task.set_tasks_as_overdue", "erpnext.accounts.doctype.asset.depreciation.post_depreciation_entries", - 'erpnext.hr.doctype.daily_work_summary_settings.daily_work_summary_settings.send_summary' + "erpnext.hr.doctype.daily_work_summary_settings.daily_work_summary_settings.send_summary", + "erpnext.stock.doctype.serial_no.serial_no.update_maintenance_status" ] } diff --git a/erpnext/stock/doctype/serial_no/serial_no.py b/erpnext/stock/doctype/serial_no/serial_no.py index bc9b8939502..03d4d73a981 100644 --- a/erpnext/stock/doctype/serial_no/serial_no.py +++ b/erpnext/stock/doctype/serial_no/serial_no.py @@ -324,3 +324,12 @@ def update_serial_nos_after_submit(controller, parentfield): update_rejected_serial_nos = False if accepted_serial_nos_updated: break + +def update_maintenance_status(): + serial_nos = frappe.db.sql('''select name from `tabSerial No` where (amc_expiry_date<%s or + warranty_expiry_date<%s) and maintenance_status not in ('Out of Warranty', 'Out of AMC')''', + (nowdate(), nowdate())) + for serial_no in serial_nos: + doc = frappe.get_doc("Serial No", serial_no[0]) + doc.set_maintenance_status() + frappe.db.set_value('Serial No', doc.name, 'maintenance_status', doc.maintenance_status)