diff --git a/crm/fcrm/doctype/crm_status_change_log/crm_status_change_log.json b/crm/fcrm/doctype/crm_status_change_log/crm_status_change_log.json index 36da12b1..15f55abd 100644 --- a/crm/fcrm/doctype/crm_status_change_log/crm_status_change_log.json +++ b/crm/fcrm/doctype/crm_status_change_log/crm_status_change_log.json @@ -13,6 +13,8 @@ "column_break_mwmz", "duration", "last_status_change_log", + "from_type", + "to_type", "log_owner" ], "fields": [ @@ -61,18 +63,31 @@ "fieldtype": "Link", "label": "Owner", "options": "User" + }, + { + "fieldname": "from_type", + "fieldtype": "Data", + "in_list_view": 1, + "label": "From Type" + }, + { + "fieldname": "to_type", + "fieldtype": "Data", + "in_list_view": 1, + "label": "To Type" } ], "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2024-01-06 13:26:40.597277", + "modified": "2025-07-13 12:37:41.278584", "modified_by": "Administrator", "module": "FCRM", "name": "CRM Status Change Log", "owner": "Administrator", "permissions": [], + "row_format": "Dynamic", "sort_field": "modified", "sort_order": "DESC", "states": [] -} \ No newline at end of file +} diff --git a/crm/fcrm/doctype/crm_status_change_log/crm_status_change_log.py b/crm/fcrm/doctype/crm_status_change_log/crm_status_change_log.py index 2a3691e4..9e910e5c 100644 --- a/crm/fcrm/doctype/crm_status_change_log/crm_status_change_log.py +++ b/crm/fcrm/doctype/crm_status_change_log/crm_status_change_log.py @@ -1,15 +1,17 @@ # Copyright (c) 2024, Frappe Technologies Pvt. Ltd. and contributors # For license information, please see license.txt -import frappe from datetime import datetime -from frappe.utils import add_to_date, get_datetime + +import frappe from frappe.model.document import Document +from frappe.utils import add_to_date, get_datetime class CRMStatusChangeLog(Document): pass + def get_duration(from_date, to_date): if not isinstance(from_date, datetime): from_date = get_datetime(from_date) @@ -18,28 +20,44 @@ def get_duration(from_date, to_date): duration = to_date - from_date return duration.total_seconds() + def add_status_change_log(doc): if not doc.is_new(): previous_status = doc.get_doc_before_save().status if doc.get_doc_before_save() else None + previous_status_type = ( + frappe.db.get_value("CRM Deal Status", previous_status, "type") if previous_status else None + ) if not doc.status_change_log and previous_status: now_minus_one_minute = add_to_date(datetime.now(), minutes=-1) - doc.append("status_change_log", { - "from": previous_status, - "to": "", - "from_date": now_minus_one_minute, - "to_date": "", - "log_owner": frappe.session.user, - }) + doc.append( + "status_change_log", + { + "from": previous_status, + "from_type": previous_status_type, + "to": "", + "to_type": "", + "from_date": now_minus_one_minute, + "to_date": "", + "log_owner": frappe.session.user, + }, + ) + to_status_type = frappe.db.get_value("CRM Deal Status", doc.status, "type") last_status_change = doc.status_change_log[-1] last_status_change.to = doc.status + last_status_change.to_type = to_status_type last_status_change.to_date = datetime.now() last_status_change.log_owner = frappe.session.user last_status_change.duration = get_duration(last_status_change.from_date, last_status_change.to_date) - doc.append("status_change_log", { - "from": doc.status, - "to": "", - "from_date": datetime.now(), - "to_date": "", - "log_owner": frappe.session.user, - }) \ No newline at end of file + doc.append( + "status_change_log", + { + "from": doc.status, + "from_type": to_status_type, + "to": "", + "to_type": "", + "from_date": datetime.now(), + "to_date": "", + "log_owner": frappe.session.user, + }, + )