create tempalte functionality

This commit is contained in:
Casey 2026-01-02 16:28:57 -06:00
parent cb59dd65ca
commit 97241f14ea
4 changed files with 213 additions and 41 deletions

View file

@ -268,15 +268,17 @@ def get_estimate_templates(company):
filters["company"] = company
try:
print("DEBUG: Fetching estimate templates for company:", company)
templates = frappe.get_all("Quotation Template", fields=["name", "is_active", "description"], filters=filters)
templates = frappe.get_all("Quotation Template", fields=["*"], filters=filters)
result = []
if not templates:
print("DEBUG: No templates found.")
return build_success_response(result)
print(f"DEBUG: Found {len(templates)} templates.")
for template in templates:
print("DEBUG: Processing template:", template)
items = frappe.get_all("Quotation Template Item",
fields=["item_code", "item_name", "description", "qty", "discount_percentage", "rate"],
fields=["item_code", "item_name", "description", "quantity", "discount_percentage", "rate"],
filters={"parent": template.name},
order_by="idx")
@ -293,8 +295,9 @@ def get_estimate_templates(company):
})
result.append({
"templateName": template.name,
"active": template.active,
"name": template.name,
"templateName": template.template_name,
"active": template.is_active,
"description": template.description,
"items": mapped_items
})
@ -302,39 +305,74 @@ def get_estimate_templates(company):
return build_success_response(result)
except Exception as e:
return build_error_response(str(e), 500)
@frappe.whitelist()
def create_template(data):
def create_estimate_template(data):
"""Create a new estimate template."""
try:
data = json.loads(data) if isinstance(data, str) else data
print("DEBUG: Creating estimate template with data:", data)
data = json.loads(data) if isinstance(data, str) else data
new_template = frappe.get_doc({
doc_data = {
"doctype": "Quotation Template",
"template_name": data.get("templateName"),
"is_active": data.get("active", 1),
"description": data.get("description", ""),
"company": data.get("company", ""),
"is_active": 1,
"description": data.get("description"),
"company": data.get("company"),
"items": [],
"template_name": data.get("template_name"),
"source_quotation": data.get("source_quotation", "")
})
}
new_template = frappe.get_doc(doc_data)
for item in data.get("items", []):
item = json.loads(item) if isinstance(item, str) else item
new_template.append("items", {
"item_code": item.get("itemCode"),
"item_name": item.get("itemName"),
"item_code": item.get("item_code"),
"item_name": item.get("item_name"),
"description": item.get("description"),
"qty": item.get("quantity"),
"discount_percentage": item.get("discountPercentage"),
"rate": item.get("rate")
"qty": item.get("qty") or item.get("quantity"),
"rate": item.get("standard_rate") or item.get("rate"),
"discount_percentage": item.get("discount_percentage")
})
new_template.insert()
print("DEBUG: New estimate template created with name:", new_template.name)
return build_success_response(new_template.as_dict())
return build_success_response(new_template.name)
except Exception as e:
return build_error_response(str(e), 500)
# @frappe.whitelist()
# def create_template(data):
# """Create a new estimate template."""
# try:
# data = json.loads(data) if isinstance(data, str) else data
# print("DEBUG: Creating estimate template with data:", data)
# new_template = frappe.get_doc({
# "doctype": "Quotation Template",
# "template_name": data.get("templateName"),
# "is_active": data.get("active", 1),
# "description": data.get("description", ""),
# "company": data.get("company", ""),
# "source_quotation": data.get("source_quotation", "")
# })
# for item in data.get("items", []):
# item = json.loads(item) if isinstance(item, str) else item
# new_template.append("items", {
# "item_code": item.get("itemCode"),
# "item_name": item.get("itemName"),
# "description": item.get("description"),
# "qty": item.get("quantity"),
# "discount_percentage": item.get("discountPercentage"),
# "rate": item.get("rate")
# })
# new_template.insert()
# print("DEBUG: New estimate template created with name:", new_template.name)
# return build_success_response(new_template.as_dict())
# except Exception as e:
# return build_error_response(str(e), 500)
@frappe.whitelist()
def upsert_estimate(data):