mirror of
https://github.com/frappe/erpnext.git
synced 2026-03-24 13:42:10 +01:00
fix: add auto-update for overdue status (#42105)
* fix: auto-update for overdue status
* chore: use qb.update
(cherry picked from commit c5e474f4f5)
This commit is contained in:
@@ -18,9 +18,7 @@ class AssetMaintenance(Document):
|
|||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from frappe.types import DF
|
from frappe.types import DF
|
||||||
|
|
||||||
from erpnext.assets.doctype.asset_maintenance_task.asset_maintenance_task import (
|
from erpnext.assets.doctype.asset_maintenance_task.asset_maintenance_task import AssetMaintenanceTask
|
||||||
AssetMaintenanceTask,
|
|
||||||
)
|
|
||||||
|
|
||||||
asset_category: DF.ReadOnly | None
|
asset_category: DF.ReadOnly | None
|
||||||
asset_maintenance_tasks: DF.Table[AssetMaintenanceTask]
|
asset_maintenance_tasks: DF.Table[AssetMaintenanceTask]
|
||||||
@@ -47,6 +45,11 @@ class AssetMaintenance(Document):
|
|||||||
assign_tasks(self.name, task.assign_to, task.maintenance_task, task.next_due_date)
|
assign_tasks(self.name, task.assign_to, task.maintenance_task, task.next_due_date)
|
||||||
self.sync_maintenance_tasks()
|
self.sync_maintenance_tasks()
|
||||||
|
|
||||||
|
def after_delete(self):
|
||||||
|
asset = frappe.get_doc("Asset", self.asset_name)
|
||||||
|
if asset.status == "In Maintenance":
|
||||||
|
asset.set_status()
|
||||||
|
|
||||||
def sync_maintenance_tasks(self):
|
def sync_maintenance_tasks(self):
|
||||||
tasks_names = []
|
tasks_names = []
|
||||||
for task in self.get("asset_maintenance_tasks"):
|
for task in self.get("asset_maintenance_tasks"):
|
||||||
|
|||||||
@@ -5,7 +5,8 @@
|
|||||||
import frappe
|
import frappe
|
||||||
from frappe import _
|
from frappe import _
|
||||||
from frappe.model.document import Document
|
from frappe.model.document import Document
|
||||||
from frappe.utils import getdate, nowdate
|
from frappe.query_builder import DocType
|
||||||
|
from frappe.utils import getdate, nowdate, today
|
||||||
|
|
||||||
from erpnext.assets.doctype.asset_maintenance.asset_maintenance import calculate_next_due_date
|
from erpnext.assets.doctype.asset_maintenance.asset_maintenance import calculate_next_due_date
|
||||||
|
|
||||||
@@ -75,6 +76,17 @@ class AssetMaintenanceLog(Document):
|
|||||||
asset_maintenance_doc.save()
|
asset_maintenance_doc.save()
|
||||||
|
|
||||||
|
|
||||||
|
def update_asset_maintenance_log_status():
|
||||||
|
AssetMaintenanceLog = DocType("Asset Maintenance Log")
|
||||||
|
(
|
||||||
|
frappe.qb.update(AssetMaintenanceLog)
|
||||||
|
.set(AssetMaintenanceLog.maintenance_status, "Overdue")
|
||||||
|
.where(
|
||||||
|
(AssetMaintenanceLog.maintenance_status == "Planned") & (AssetMaintenanceLog.due_date < today())
|
||||||
|
)
|
||||||
|
).run()
|
||||||
|
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
@frappe.validate_and_sanitize_search_inputs
|
@frappe.validate_and_sanitize_search_inputs
|
||||||
def get_maintenance_tasks(doctype, txt, searchfield, start, page_len, filters):
|
def get_maintenance_tasks(doctype, txt, searchfield, start, page_len, filters):
|
||||||
|
|||||||
@@ -442,6 +442,7 @@ scheduler_events = {
|
|||||||
"erpnext.accounts.doctype.process_statement_of_accounts.process_statement_of_accounts.send_auto_email",
|
"erpnext.accounts.doctype.process_statement_of_accounts.process_statement_of_accounts.send_auto_email",
|
||||||
"erpnext.accounts.utils.auto_create_exchange_rate_revaluation_daily",
|
"erpnext.accounts.utils.auto_create_exchange_rate_revaluation_daily",
|
||||||
"erpnext.accounts.utils.run_ledger_health_checks",
|
"erpnext.accounts.utils.run_ledger_health_checks",
|
||||||
|
"erpnext.assets.doctype.asset.asset_maintenance_log.update_asset_maintenance_log_status",
|
||||||
],
|
],
|
||||||
"weekly": [
|
"weekly": [
|
||||||
"erpnext.accounts.utils.auto_create_exchange_rate_revaluation_weekly",
|
"erpnext.accounts.utils.auto_create_exchange_rate_revaluation_weekly",
|
||||||
|
|||||||
Reference in New Issue
Block a user