From b8fea2c9ca0325c6e05f553d7208e7591e97191f Mon Sep 17 00:00:00 2001 From: rocketdebris Date: Tue, 23 Dec 2025 20:55:52 -0500 Subject: [PATCH] Added a job creation method from Sales Invoice --- custom_ui/api/db/jobs.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/custom_ui/api/db/jobs.py b/custom_ui/api/db/jobs.py index c1e4e2b..ac742a4 100644 --- a/custom_ui/api/db/jobs.py +++ b/custom_ui/api/db/jobs.py @@ -5,6 +5,27 @@ from custom_ui.db_utils import process_query_conditions, build_datatable_dict, g # JOB MANAGEMENT API METHODS # =============================================================================== + +@frappe.whitelist() +def create_job_from_sales_order(sales_order_name): + """Create a Job (Project) from a given Sales Order""" + try: + sales_order = frappe.get_doc("Sales Order", sales_order_name) + project_template = frappe.get_doc("Project Template", "SNW Install") + new_job = frappe.get_doc({ + "doctype": "Project", + "custom_installation_address": sales_order.custom_installation_address, + "project_name": sales_order.custom_installation_address, + "project_template": project_template, + "custom_warranty_duration_days": 90, + "sales_order": sales_order + }) + new_job.insert() + return build_success_response(new_job.as_dict()) + except Exception as e: + return build_error_response(str(e), 500) + + @frappe.whitelist() def get_job(job_id=""): """Get particular Job from DB"""