feat: Show past events and todos in crm_activities

This commit is contained in:
Corentin Forler
2025-03-28 13:54:39 +01:00
parent 45b45efee5
commit bb864c8345
3 changed files with 118 additions and 4 deletions

View File

@@ -147,14 +147,37 @@ def link_open_events(ref_doctype, ref_docname, doc):
def get_open_activities(ref_doctype, ref_docname):
tasks = get_open_todos(ref_doctype, ref_docname)
events = get_open_events(ref_doctype, ref_docname)
tasks_history = get_closed_todos(ref_doctype, ref_docname)
events_history = get_closed_events(ref_doctype, ref_docname)
return {"tasks": tasks, "events": events}
return {
"tasks": tasks,
"events": events,
"tasks_history": tasks_history,
"events_history": events_history,
}
def get_closed_todos(ref_doctype, ref_docname):
return get_filtered_todos(ref_doctype, ref_docname, status=("!=", "Open"))
def get_open_todos(ref_doctype, ref_docname):
return get_filtered_todos(ref_doctype, ref_docname, status="Open")
def get_open_events(ref_doctype, ref_docname):
return get_filtered_events(ref_doctype, ref_docname, open=True)
def get_closed_events(ref_doctype, ref_docname):
return get_filtered_events(ref_doctype, ref_docname, open=False)
def get_filtered_todos(ref_doctype, ref_docname, status: str | tuple[str, str]):
return frappe.get_all(
"ToDo",
filters={"reference_type": ref_doctype, "reference_name": ref_docname, "status": "Open"},
filters={"reference_type": ref_doctype, "reference_name": ref_docname, "status": status},
fields=[
"name",
"description",
@@ -164,10 +187,15 @@ def get_open_todos(ref_doctype, ref_docname):
)
def get_open_events(ref_doctype, ref_docname):
def get_filtered_events(ref_doctype, ref_docname, open: bool):
event = frappe.qb.DocType("Event")
event_link = frappe.qb.DocType("Event Participants")
if open:
event_status_filter = event.status == "Open"
else:
event_status_filter = event.status != "Open"
query = (
frappe.qb.from_(event)
.join(event_link)
@@ -183,7 +211,7 @@ def get_open_events(ref_doctype, ref_docname):
.where(
(event_link.reference_doctype == ref_doctype)
& (event_link.reference_docname == ref_docname)
& (event.status == "Open")
& (event_status_filter)
)
)
data = query.run(as_dict=True)