diff --git a/custom_ui/api/db/jobs.py b/custom_ui/api/db/jobs.py index 16bd48a..082733e 100644 --- a/custom_ui/api/db/jobs.py +++ b/custom_ui/api/db/jobs.py @@ -25,7 +25,7 @@ def create_job_from_sales_order(sales_order_name): try: sales_order = frappe.get_doc("Sales Order", sales_order_name) project_template = frappe.get_doc("Project Template", "SNW Install") - new_project = frappe.get_doc({ + new_job = frappe.get_doc({ "doctype": "Project", "custom_address": sales_order.custom_job_address, # "custom_installation_address": sales_order.custom_installation_address, @@ -35,22 +35,13 @@ def create_job_from_sales_order(sales_order_name): "sales_order": sales_order, "custom_company": sales_order.company }) - new_project.insert() - for sales_order_item in sales_order.items: - new_task = frappe.get_doc({ - "doctype": "Task", - "project": new_project.name, - "company": sales_order.company, - "custom_property": sales_order.custom_job_address, - "subject": sales_order_item.description, - }) - new_task.insert() + new_job.insert() # Iterate through new tasks (if any) and set customer, address # job_tasks = frappe.get_all("Task", filters={"Project": new_job.name}) # for task in job_tasks: # task.custom_property = new_job.job_address # task.save() - return build_success_response(new_project.as_dict()) + return build_success_response(new_job.as_dict()) except Exception as e: return build_error_response(str(e), 500) diff --git a/custom_ui/api/db/tasks.py b/custom_ui/api/db/tasks.py index dd6835f..e4f9ba0 100644 --- a/custom_ui/api/db/tasks.py +++ b/custom_ui/api/db/tasks.py @@ -43,32 +43,33 @@ def get_task_status_options(): @frappe.whitelist() -def get_tasks_due(subject_filter, current_company): +def get_tasks_due(subject_filter): """Return the number of items due today of the type of subject_filter""" try: + filters = { + 'subject': ['like', f'%{subject_filter}%'], + 'status': ['not in', ["Template", "Completed", "Cancelled"]] + } + count = frappe.db.count("Task", filters=filters) + return build_success_response(count) + except frappe.ValidationError as ve: + return build_error_response(str(ve), 400) + except Exception as e: + return build_error_response(str(e), 500) - due_filters = { + +@frappe.whitelist() +def get_tasks_completed(subject_filter): + """Return the number of items due today marked complete of the type of subject_filter""" + try: + filters = { 'subject': ['like', f'%{subject_filter}%'], - 'status': ['not in', ["Template", "Completed", "Cancelled"]], - 'company': current_company, - # Add due date filter here + 'status': ['not in', ["Template", "Cancelled"]] } - completed_filters = { - 'subject': ['like', f'%{subject_filter}%'], - 'status': ['not in', ["Template", "Cancelled"]], - 'company': current_company, - # Add due date filter here - } - overdue_filters = { - 'subject': ['like', f'%{subject_filter}%'], - 'status': ['not in', ["Template", "Completed", "Cancelled"]], - 'company': current_company, - # Add overdue date filtering here - } - due_count = frappe.db.count("Task", filters=due_filters) - completed_count = frappe.db.count("Task", filters=completed_filters) - overdue_count = frappe.db.count("Task", filters=overdue_filters) - return build_success_response([due_count, completed_count, overdue_count]) + print("Completed Task filter", filters) + count = frappe.db.count("Task", filters=filters) + print("Matching Records:", count) + return build_success_response(count) except frappe.ValidationError as ve: return build_error_response(str(ve), 400) except Exception as e: diff --git a/frontend/src/api.js b/frontend/src/api.js index 9c71024..86e37f1 100644 --- a/frontend/src/api.js +++ b/frontend/src/api.js @@ -14,8 +14,6 @@ const FRAPPE_LOCK_ESTIMATE_METHOD = "custom_ui.api.db.estimates.lock_estimate"; const FRAPPE_ESTIMATE_UPDATE_RESPONSE_METHOD = "custom_ui.api.db.estimates.manual_response"; const FRAPPE_GET_ESTIMATE_TEMPLATES_METHOD = "custom_ui.api.db.estimates.get_estimate_templates"; const FRAPPE_CREATE_ESTIMATE_TEMPLATE_METHOD = "custom_ui.api.db.estimates.create_estimate_template"; -const FRAPPE_GET_UNAPPROVED_ESTIMATES_COUNT_METHOD = "custom_ui.api.db.estimates.get_unnaproved_estimates_count"; -const FRAPPE_GET_ESTIMATES_HALF_DOWN_COUNT_METHOD = "custom_ui.api.db.estimates.get_estimates_half_down_count"; // Job methods const FRAPPE_GET_JOB_METHOD = "custom_ui.api.db.jobs.get_job"; const FRAPPE_GET_JOBS_METHOD = "custom_ui.api.db.jobs.get_jobs_table_data"; @@ -31,6 +29,7 @@ const FRAPPE_GET_TASKS_METHOD = "custom_ui.api.db.tasks.get_tasks_table_data"; const FRAPPE_GET_TASKS_STATUS_OPTIONS = "custom_ui.api.db.tasks.get_task_status_options"; const FRAPPE_SET_TASK_STATUS_METHOD = "custom_ui.api.db.tasks.set_task_status"; const FRAPPE_GET_TASKS_DUE_METHOD = "custom_ui.api.db.tasks.get_tasks_due"; +const FRAPPE_GET_TASKS_COMPLETED_METHOD = "custom_ui.api.db.tasks.get_tasks_completed"; // Invoice methods const FRAPPE_GET_INVOICES_METHOD = "custom_ui.api.db.invoices.get_invoice_table_data"; const FRAPPE_UPSERT_INVOICE_METHOD = "custom_ui.api.db.invoices.upsert_invoice"; @@ -265,14 +264,6 @@ class Api { return await this.request(FRAPPE_CREATE_ESTIMATE_TEMPLATE_METHOD, { data }); } - static async getUnapprovedEstimatesCount() { - return await this.request(FRAPPE_GET_UNAPPROVED_ESTIMATES_COUNT_METHOD, {}); - } - - static async getEstimatesHalfDownCount() { - return await this.request(FRAPPE_GET_ESTIMATES_HALF_DOWN_COUNT_METHOD, {}); - } - // ============================================================================ // JOB / PROJECT METHODS // ============================================================================ @@ -445,8 +436,8 @@ class Api { return await this.request(FRAPPE_SET_TASK_STATUS_METHOD, { taskName, newStatus }); } - static async getTasksDue(subjectFilter, currentCompany) { - const result = await this.request(FRAPPE_GET_TASKS_DUE_METHOD, {subjectFilter, currentCompany}); + static async getTasksDue(subjectFilter) { + const result = await this.request(FRAPPE_GET_TASKS_DUE_METHOD, {subjectFilter}); return result; } diff --git a/frontend/src/components/common/TodoChart.vue b/frontend/src/components/common/TodoChart.vue index b55b655..8f07255 100644 --- a/frontend/src/components/common/TodoChart.vue +++ b/frontend/src/components/common/TodoChart.vue @@ -21,7 +21,7 @@ diff --git a/frontend/src/components/pages/Home.vue b/frontend/src/components/pages/Home.vue index 48afc0f..d1ecda7 100644 --- a/frontend/src/components/pages/Home.vue +++ b/frontend/src/components/pages/Home.vue @@ -15,7 +15,8 @@