build meeting notes form in install on migrate
This commit is contained in:
parent
6cd3d138ad
commit
c024e7fd86
12 changed files with 227 additions and 124 deletions
|
|
@ -41,7 +41,7 @@ def after_migrate():
|
|||
# create_project_templates()
|
||||
create_task_types()
|
||||
# create_tasks()
|
||||
# create_bid_meeting_note_form_templates()
|
||||
create_bid_meeting_note_form_templates()
|
||||
|
||||
# update_address_fields()
|
||||
# build_frontend()
|
||||
|
|
@ -1252,85 +1252,117 @@ def create_project_templates():
|
|||
]
|
||||
}
|
||||
|
||||
import frappe
|
||||
|
||||
|
||||
def create_bid_meeting_note_form_templates():
|
||||
"""Create Bid Meeting Note Forms if they do not exist."""
|
||||
print("\n🔧 Checking for Bid Meeting Note Forms...")
|
||||
|
||||
forms = {
|
||||
"Sprinklers Northwest": [
|
||||
{
|
||||
"name": "SNW Install Bid Meeting Notes",
|
||||
{
|
||||
"title": "SNW Install Bid Meeting Notes",
|
||||
"description": "Notes form for SNW Install bid meetings.",
|
||||
"project_template": "SNW Install",
|
||||
"fields": [{
|
||||
"label": "Locate Needed",
|
||||
"type": "Check",
|
||||
"required": 1,
|
||||
"help_text": "Indicate if a locate is needed for this project.",
|
||||
"row": 1,
|
||||
"column": 1
|
||||
},
|
||||
{
|
||||
"label": "Permit Needed",
|
||||
"type": "Check",
|
||||
"required": 1,
|
||||
"help_text": "Indicate if a permit is needed for this project.",
|
||||
"row": 1,
|
||||
"column": 2
|
||||
},
|
||||
{
|
||||
"label": "Back Flow Test Required",
|
||||
"type": "Check",
|
||||
"required": 1,
|
||||
"help_text": "Indicate if a backflow test is required after installation.",
|
||||
"row": 1,
|
||||
"column": 3
|
||||
},
|
||||
{
|
||||
"label": "Machine Access",
|
||||
"type": "Check",
|
||||
"required": 1,
|
||||
"row": 2,
|
||||
"column": 1
|
||||
},
|
||||
{
|
||||
"label": "Machines",
|
||||
"type": "Multi-Select",
|
||||
"options": "MT, Skip Steer, Excavator-E-50, Link Belt, Tre?, Forks, Auger, Backhoe, Loader, Duzer",
|
||||
"required": 0,
|
||||
"include_options": 1,
|
||||
"conditional_on_field": "Machine Access",
|
||||
"row": 2,
|
||||
"column": 2
|
||||
},
|
||||
{
|
||||
"label": "Materials Required",
|
||||
"type": "Check",
|
||||
"required": 1,
|
||||
"row": 3,
|
||||
"column": 0
|
||||
},
|
||||
{
|
||||
"label": "Materials",
|
||||
"type": "Multi-Select w/ Quantity",
|
||||
"required": 0,
|
||||
"doctype_for_select": "Item",
|
||||
"conditional_on_field": "Materials Required",
|
||||
"doctype_label_field": "itemName",
|
||||
"row": 4,
|
||||
"column": 0
|
||||
}]
|
||||
}]}
|
||||
"fields": [
|
||||
{
|
||||
"label": "Locate Needed",
|
||||
"type": "Check",
|
||||
"required": 1,
|
||||
"help_text": "Indicate if a locate is needed for this project.",
|
||||
"row": 1,
|
||||
"column": 1,
|
||||
},
|
||||
{
|
||||
"label": "Permit Needed",
|
||||
"type": "Check",
|
||||
"required": 1,
|
||||
"help_text": "Indicate if a permit is needed for this project.",
|
||||
"row": 1,
|
||||
"column": 2,
|
||||
},
|
||||
{
|
||||
"label": "Back Flow Test Required",
|
||||
"type": "Check",
|
||||
"required": 1,
|
||||
"help_text": "Indicate if a backflow test is required after installation.",
|
||||
"row": 1,
|
||||
"column": 3,
|
||||
},
|
||||
{
|
||||
"label": "Machine Access",
|
||||
"type": "Check",
|
||||
"required": 1,
|
||||
"row": 2,
|
||||
"column": 1,
|
||||
},
|
||||
{
|
||||
"label": "Machines",
|
||||
"type": "Multi-Select",
|
||||
"options": "MT, Skip Steer, Excavator-E-50, Link Belt, Tre?, Forks, Auger, Backhoe, Loader, Duzer",
|
||||
"include_options": 1,
|
||||
"conditional_on_field": "Machine Access",
|
||||
"row": 2,
|
||||
"column": 2,
|
||||
},
|
||||
{
|
||||
"label": "Materials Required",
|
||||
"type": "Check",
|
||||
"required": 1,
|
||||
"row": 3,
|
||||
"column": 0,
|
||||
},
|
||||
{
|
||||
"label": "Materials",
|
||||
"type": "Multi-Select w/ Quantity",
|
||||
"doctype_for_select": "Item",
|
||||
"doctype_label_field": "itemName",
|
||||
"conditional_on_field": "Materials Required",
|
||||
"row": 4,
|
||||
"column": 0,
|
||||
},
|
||||
],
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
for company, form_list in forms.items():
|
||||
for form in form_list:
|
||||
if frappe.db.exists("Bid Meeting Note Form", form["name"]):
|
||||
# Idempotency check
|
||||
if frappe.db.exists(
|
||||
"Bid Meeting Note Form",
|
||||
{"title": form["title"], "company": company},
|
||||
):
|
||||
continue
|
||||
doc = frappe.get_doc({
|
||||
"doctype": "Bid Meeting Note Form",
|
||||
"company": company,
|
||||
"title": form["title"],
|
||||
"description": form["description"],
|
||||
"project_template": form["project_template"],
|
||||
"fields": form["fields"]
|
||||
})
|
||||
|
||||
doc = frappe.new_doc("Bid Meeting Note Form")
|
||||
doc.company = company
|
||||
doc.title = form["title"]
|
||||
doc.description = form.get("description")
|
||||
doc.project_template = form.get("project_template")
|
||||
|
||||
for idx, field in enumerate(form.get("fields", []), start=1):
|
||||
doc.append(
|
||||
"fields",
|
||||
{
|
||||
"label": field["label"],
|
||||
"type": field["type"],
|
||||
"options": field.get("options"),
|
||||
"required": field.get("required", 0),
|
||||
"default_value": field.get("default_value"),
|
||||
"read_only": field.get("read_only", 0),
|
||||
"order": field.get("order", 0),
|
||||
"help_text": field.get("help_text"),
|
||||
"doctype_for_select": field.get("doctype_for_select"),
|
||||
"include_options": field.get("include_options", 0),
|
||||
"conditional_on_field": field.get("conditional_on_field"),
|
||||
"conditional_on_value": field.get("conditional_on_value"),
|
||||
"doctype_label_field": field.get("doctype_label_field"),
|
||||
"row": field.get("row"),
|
||||
"column": field.get("column"),
|
||||
"idx": idx,
|
||||
},
|
||||
)
|
||||
|
||||
doc.insert(ignore_permissions=True)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue