fix: store deal status type in status log
This commit is contained in:
parent
de85ccfc51
commit
e59547da30
@ -13,6 +13,8 @@
|
|||||||
"column_break_mwmz",
|
"column_break_mwmz",
|
||||||
"duration",
|
"duration",
|
||||||
"last_status_change_log",
|
"last_status_change_log",
|
||||||
|
"from_type",
|
||||||
|
"to_type",
|
||||||
"log_owner"
|
"log_owner"
|
||||||
],
|
],
|
||||||
"fields": [
|
"fields": [
|
||||||
@ -61,18 +63,31 @@
|
|||||||
"fieldtype": "Link",
|
"fieldtype": "Link",
|
||||||
"label": "Owner",
|
"label": "Owner",
|
||||||
"options": "User"
|
"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,
|
"index_web_pages_for_search": 1,
|
||||||
"istable": 1,
|
"istable": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2024-01-06 13:26:40.597277",
|
"modified": "2025-07-13 12:37:41.278584",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "FCRM",
|
"module": "FCRM",
|
||||||
"name": "CRM Status Change Log",
|
"name": "CRM Status Change Log",
|
||||||
"owner": "Administrator",
|
"owner": "Administrator",
|
||||||
"permissions": [],
|
"permissions": [],
|
||||||
|
"row_format": "Dynamic",
|
||||||
"sort_field": "modified",
|
"sort_field": "modified",
|
||||||
"sort_order": "DESC",
|
"sort_order": "DESC",
|
||||||
"states": []
|
"states": []
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,15 +1,17 @@
|
|||||||
# Copyright (c) 2024, Frappe Technologies Pvt. Ltd. and contributors
|
# Copyright (c) 2024, Frappe Technologies Pvt. Ltd. and contributors
|
||||||
# For license information, please see license.txt
|
# For license information, please see license.txt
|
||||||
|
|
||||||
import frappe
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from frappe.utils import add_to_date, get_datetime
|
|
||||||
|
import frappe
|
||||||
from frappe.model.document import Document
|
from frappe.model.document import Document
|
||||||
|
from frappe.utils import add_to_date, get_datetime
|
||||||
|
|
||||||
|
|
||||||
class CRMStatusChangeLog(Document):
|
class CRMStatusChangeLog(Document):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
def get_duration(from_date, to_date):
|
def get_duration(from_date, to_date):
|
||||||
if not isinstance(from_date, datetime):
|
if not isinstance(from_date, datetime):
|
||||||
from_date = get_datetime(from_date)
|
from_date = get_datetime(from_date)
|
||||||
@ -18,28 +20,44 @@ def get_duration(from_date, to_date):
|
|||||||
duration = to_date - from_date
|
duration = to_date - from_date
|
||||||
return duration.total_seconds()
|
return duration.total_seconds()
|
||||||
|
|
||||||
|
|
||||||
def add_status_change_log(doc):
|
def add_status_change_log(doc):
|
||||||
if not doc.is_new():
|
if not doc.is_new():
|
||||||
previous_status = doc.get_doc_before_save().status if doc.get_doc_before_save() else None
|
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:
|
if not doc.status_change_log and previous_status:
|
||||||
now_minus_one_minute = add_to_date(datetime.now(), minutes=-1)
|
now_minus_one_minute = add_to_date(datetime.now(), minutes=-1)
|
||||||
doc.append("status_change_log", {
|
doc.append(
|
||||||
"from": previous_status,
|
"status_change_log",
|
||||||
"to": "",
|
{
|
||||||
"from_date": now_minus_one_minute,
|
"from": previous_status,
|
||||||
"to_date": "",
|
"from_type": previous_status_type,
|
||||||
"log_owner": frappe.session.user,
|
"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 = doc.status_change_log[-1]
|
||||||
last_status_change.to = doc.status
|
last_status_change.to = doc.status
|
||||||
|
last_status_change.to_type = to_status_type
|
||||||
last_status_change.to_date = datetime.now()
|
last_status_change.to_date = datetime.now()
|
||||||
last_status_change.log_owner = frappe.session.user
|
last_status_change.log_owner = frappe.session.user
|
||||||
last_status_change.duration = get_duration(last_status_change.from_date, last_status_change.to_date)
|
last_status_change.duration = get_duration(last_status_change.from_date, last_status_change.to_date)
|
||||||
|
|
||||||
doc.append("status_change_log", {
|
doc.append(
|
||||||
"from": doc.status,
|
"status_change_log",
|
||||||
"to": "",
|
{
|
||||||
"from_date": datetime.now(),
|
"from": doc.status,
|
||||||
"to_date": "",
|
"from_type": to_status_type,
|
||||||
"log_owner": frappe.session.user,
|
"to": "",
|
||||||
})
|
"to_type": "",
|
||||||
|
"from_date": datetime.now(),
|
||||||
|
"to_date": "",
|
||||||
|
"log_owner": frappe.session.user,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user