updating serial no status from scheduler #9061 (#9066)
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index af4dd3b..d64409d 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -178,7 +178,8 @@
"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 bc9b893..03d4d73 100644
--- a/erpnext/stock/doctype/serial_no/serial_no.py
+++ b/erpnext/stock/doctype/serial_no/serial_no.py
@@ -324,3 +324,12 @@
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)