update estimate page, add stripe script and docker compose for mail server

This commit is contained in:
Casey 2026-02-03 17:04:04 -06:00
parent 678eb18583
commit 9a7e3fe740
17 changed files with 1168 additions and 66 deletions

View file

@ -4,7 +4,7 @@ from custom_ui.api.db.general import get_doc_history
from custom_ui.db_utils import DbUtils, process_query_conditions, build_datatable_dict, get_count_or_filters, build_success_response, build_error_response
from werkzeug.wrappers import Response
from custom_ui.api.db.clients import check_if_customer, convert_lead_to_customer
from custom_ui.services import DbService, ClientService, AddressService, ContactService
from custom_ui.services import DbService, ClientService, AddressService, ContactService, EstimateService, ItemService
# ===============================================================================
# ESTIMATES & INVOICES API METHODS
@ -86,11 +86,25 @@ def get_estimate_table_data(filters={}, sortings=[], page=1, page_size=10):
@frappe.whitelist()
def get_quotation_items():
def get_quotation_items(project_template:str = None):
"""Get all available quotation items."""
try:
items = frappe.get_all("Item", fields=["*"], filters={"item_group": "SNW-S"})
return build_success_response(items)
filters = EstimateService.map_project_template_to_filter(project_template)
items = frappe.get_all("Item", fields=["item_code", "item_group"], filters=filters)
grouped_item_dicts = {}
for item in items:
item_dict = ItemService.get_full_dict(item.item_code)
if item_dict["bom"]:
if "Packages" not in grouped_item_dicts:
grouped_item_dicts["Packages"] = {}
if item.item_group not in grouped_item_dicts["Packages"]:
grouped_item_dicts["Packages"][item.item_group] = []
grouped_item_dicts["Packages"][item.item_group].append(item_dict)
else:
if item.item_group not in grouped_item_dicts:
grouped_item_dicts[item.item_group] = []
grouped_item_dicts[item.item_group].append(item_dict)
return build_success_response(grouped_item_dicts)
except Exception as e:
return build_error_response(str(e), 500)