diff --git a/custom_ui/api/db/addresses.py b/custom_ui/api/db/addresses.py index 3d3fe96..bb99ff7 100644 --- a/custom_ui/api/db/addresses.py +++ b/custom_ui/api/db/addresses.py @@ -1,7 +1,7 @@ import frappe import json from custom_ui.db_utils import build_error_response, build_success_response -from custom_ui.services import ClientService, AddressService +from custom_ui.services import ClientService, AddressService, ContactService @frappe.whitelist() def get_address_by_full_address(full_address): @@ -35,6 +35,33 @@ def get_address(address_name): # except Exception as e: # return build_error_response(str(e), 500) +@frappe.whitelist() +def create_address(address_data, company, customer_name): + """Create a new address.""" + print(f"DEBUG: create_address called with address_data: {address_data}, company: {company}, customer_name: {customer_name}") + if isinstance(address_data, str): + address_data = json.loads(address_data) + customer_doctype = ClientService.get_client_doctype(customer_name) + address_data["customer_name"] = customer_name + address_data["customer_type"] = customer_doctype + address_data["address_title"] = AddressService.build_address_title(customer_name, address_data) + address_data["address_type"] = "Service" + address_data["custom_billing_address"] = 0 + address_data["is_service_address"] = 1 + address_data["country"] = "United States" + address_data["companies"] = [{ "company": company }] + print(f"DEBUG: Final address_data before creation: {address_data}") + try: + address_doc = AddressService.create_address(address_data) + for contact in address_data.get("contacts", []): + AddressService.link_address_to_contact(address_doc, contact) + contact_doc = ContactService.get_or_throw(contact) + ContactService.link_contact_to_address(contact_doc, address_doc) + ClientService.append_link_v2(customer_name, "properties", {"address": address_doc.name}) + return build_success_response(address_doc.as_dict()) + except Exception as e: + return build_error_response(str(e), 500) + @frappe.whitelist() def get_addresses(fields=["*"], filters={}): """Get addresses with optional filtering.""" diff --git a/custom_ui/api/db/bid_meetings.py b/custom_ui/api/db/bid_meetings.py index bc73060..e12636a 100644 --- a/custom_ui/api/db/bid_meetings.py +++ b/custom_ui/api/db/bid_meetings.py @@ -4,15 +4,17 @@ from custom_ui.db_utils import build_error_response, build_success_response, pro from custom_ui.services import DbService, ClientService, AddressService, ContactService @frappe.whitelist() -def get_week_bid_meetings(week_start, week_end): +def get_week_bid_meetings(week_start, week_end, company): """Get On-Site Meetings scheduled within a specific week.""" try: meetings = frappe.db.get_all( "On-Site Meeting", fields=["*"], filters=[ + ["status", "!=", "Cancelled"], ["start_time", ">=", week_start], - ["start_time", "<=", week_end] + ["start_time", "<=", week_end], + ["company", "=", company] ], order_by="start_time asc" ) @@ -25,9 +27,21 @@ def get_week_bid_meetings(week_start, week_end): except Exception as e: frappe.log_error(message=str(e), title="Get Week On-Site Meetings Failed") return build_error_response(str(e), 500) + +@frappe.whitelist() +def get_bid_meeting_note_form(project_template): + bid_meeting_note_form_name = frappe.db.get_value("Project Template", project_template, "bid_meeting_note_form") + if not bid_meeting_note_form_name: + return build_error_response(f"No Bid Meeting Note Form configured for Project Template '{project_template}'", 404) + try: + note_form = frappe.get_doc("Bid Meeting Note Form", bid_meeting_note_form_name) + return build_success_response(note_form.as_dict()) + except Exception as e: + frappe.log_error(message=str(e), title="Get Bid Meeting Note Form Failed") + return build_error_response(str(e), 500) @frappe.whitelist() -def get_bid_meetings(fields=["*"], filters={}): +def get_bid_meetings(fields=["*"], filters={}, company=None): """Get paginated On-Site Meetings with filtering and sorting support.""" try: print("DEBUG: Raw bid meeting options received:", filters) @@ -51,15 +65,26 @@ def get_bid_meetings(fields=["*"], filters={}): frappe.log_error(message=str(e), title="Get On-Site Meetings Failed") return build_error_response(str(e), 500) - @frappe.whitelist() -def get_unscheduled_bid_meetings(): +def get_bid_meeting_note(name): + """Get a specific Bid Meeting Note by name.""" + try: + note = frappe.get_doc("Bid Meeting Note", name) + return build_success_response(note.as_dict()) + except frappe.DoesNotExistError: + return build_error_response(f"Bid Meeting Note '{name}' does not exist.", 404) + except Exception as e: + frappe.log_error(message=str(e), title="Get Bid Meeting Note Failed") + return build_error_response(str(e), 500) + +@frappe.whitelist() +def get_unscheduled_bid_meetings(company): """Get On-Site Meetings that are unscheduled.""" try: meetings = frappe.db.get_all( "On-Site Meeting", fields=["*"], - filters={"status": "Unscheduled"}, + filters={"status": "Unscheduled", "company": company}, order_by="creation desc" ) for meeting in meetings: @@ -74,6 +99,62 @@ def get_unscheduled_bid_meetings(): frappe.log_error(message=str(e), title="Get Unscheduled On-Site Meetings Failed") return build_error_response(str(e), 500) +@frappe.whitelist() +def submit_bid_meeting_note_form(bid_meeting, project_template, fields, form_template): + """Submit Bid Meeting Note Form data for a specific On-Site Meeting.""" + if isinstance(fields, str): + fields = json.loads(fields) + try: + print(f"DEBUG: Submitting Bid Meeting Note Form for meeting='{bid_meeting}' from template='{form_template}' with fields='{fields}'") + + meeting = DbService.get_or_throw("On-Site Meeting", bid_meeting) + + # Update fields on the meeting + meeting_note_field_docs = [{ + "label": field.get("label"), + "type": field.get("type"), + "value": json.dumps(field.get("value")) if isinstance(field.get("value"), (list, dict)) else field.get("value"), + "row": field.get("row"), + "column": field.get("column"), + "value_doctype": field.get("doctype_for_select"), + "available_options": field.get("options"), + "include_available_options": field.get("include_available_options", False), + "conditional_on_field": field.get("conditional_on_field"), + "conditional_on_value": field.get("conditional_on_value"), + "doctype_label_field": field.get("doctype_label_field") + } for field in fields] + new_bid_meeting_note_doc = frappe.get_doc({ + "doctype": "Bid Meeting Note", + "bid_meeting": bid_meeting, + "project_template": project_template, + "form_template": form_template, + "fields": meeting_note_field_docs + }) + new_bid_meeting_note_doc.insert(ignore_permissions=True) + for field_row, field in zip(new_bid_meeting_note_doc.fields, fields): + print(f"DEBUG: {field_row.label} - {field.get("label")}") + if not isinstance(field.get("value"), list): + continue + for item in field["value"]: + if not isinstance(item, dict): + continue + new_bid_meeting_note_doc.append("quantities", { + "meeting_note_field": field_row.name, + "item": item.get("item"), + "quantity": item.get("quantity") + }) + new_bid_meeting_note_doc.save(ignore_permissions=True) + meeting.bid_notes = new_bid_meeting_note_doc.name + meeting.status = "Completed" + meeting.save() + frappe.db.commit() + + return build_success_response(meeting.as_dict()) + except frappe.DoesNotExistError: + return build_error_response(f"On-Site Meeting '{bid_meeting}' does not exist.", 404) + except Exception as e: + frappe.log_error(message=str(e), title="Submit Bid Meeting Note Form Failed") + return build_error_response(str(e), 500) @frappe.whitelist() def get_bid_meeting(name): @@ -89,6 +170,9 @@ def get_bid_meeting(name): if meeting_dict.get("contact"): contact_doc = ContactService.get_or_throw(meeting_dict["contact"]) meeting_dict["contact"] = contact_doc.as_dict() + if meeting_dict.get("bid_notes"): + bid_meeting_note_doc = frappe.get_doc("Bid Meeting Note", meeting_dict["bid_notes"]) + meeting_dict["bid_notes"] = bid_meeting_note_doc.as_dict() return build_success_response(meeting_dict) except frappe.DoesNotExistError: diff --git a/custom_ui/api/db/clients.py b/custom_ui/api/db/clients.py index 0edb984..c1c6194 100644 --- a/custom_ui/api/db/clients.py +++ b/custom_ui/api/db/clients.py @@ -1,5 +1,5 @@ import frappe, json -from custom_ui.db_utils import build_error_response, process_query_conditions, build_datatable_dict, get_count_or_filters, build_success_response, map_lead_client, build_address_title +from custom_ui.db_utils import build_error_response, process_query_conditions, build_datatable_dict, get_count_or_filters, build_success_response, map_lead_client, build_address_title, normalize_name from erpnext.crm.doctype.lead.lead import make_customer from custom_ui.api.db.addresses import address_exists from custom_ui.api.db.contacts import check_and_get_contact, create_contact, create_contact_links @@ -167,6 +167,81 @@ def get_client_v2(client_name): return build_error_response(str(ve), 400) except Exception as e: return build_error_response(str(e), 500) + + + +@frappe.whitelist() +def get_clients_table_data_v2(filters={}, sortings=[], page=1, page_size=10): + """Get paginated client table data with filtering and sorting support.""" + try: + filters = json.loads(filters) if isinstance(filters, str) else filters + sortings = json.loads(sortings) if isinstance(sortings, str) else sortings + page = int(page) + page_size = int(page_size) + print("DEBUG: Raw client table query received:", { + "filters": filters, + "sortings": sortings, + "page": page, + "page_size": page_size + }) + where_clauses = [] + values = [] + if filters.get("company"): + where_clauses.append("c.company = %s") + values.append(filters["company"]["value"]) + + if filters.get("address"): + where_clauses.append("a.full_address LIKE %s") + values.append(f"%{filters['address']['value']}%") + + if filters.get("customer_name"): + where_clauses.append("a.customer_name LIKE %s") + values.append(f"%{filters['customer_name']['value']}%") + + where_sql = "" + if where_clauses: + where_sql = "WHERE " + " AND ".join(where_clauses) + + offset = (page - 1) * page_size + + address_names = frappe.db.sql(f""" + SELECT DISTINCT a.name + FROM `tabAddress` a + LEFT JOIN `tabAddress Company Link` c ON c.parent = a.name + {where_sql} + ORDER BY a.modified DESC + LIMIT %s OFFSET %s + """, values + [page_size, offset], as_dict=True) + print("DEBUG: Address names retrieved:", address_names) + + count = frappe.db.sql(f""" + SELECT COUNT(DISTINCT a.name) as count + FROM `tabAddress` a + LEFT JOIN `tabAddress Company Link` c ON c.parent = a.name + {where_sql} + """, values, as_dict=True)[0]["count"] + tableRows = [] + for address_name in address_names: + address = AddressService.get_or_throw(address_name["name"]) + tableRow = {} + tableRow["id"] = address.name + tableRow["address"] = address.full_address + tableRow["client_type"] = address.customer_type + tableRow["customer_name"] = normalize_name(address.customer_name, "-#-") + tableRow["companies"] = ", ".join([link.company for link in address.get("companies", [])]) + tableRows.append(tableRow) + + table_data = build_datatable_dict(data=tableRows, count=count, page=page, page_size=page_size) + + return build_success_response(table_data) + except frappe.ValidationError as ve: + return build_error_response(str(ve), 400) + except Exception as e: + print("ERROR in get_clients_table_data_v2:", str(e)) + return build_error_response(str(e), 500) + + + @frappe.whitelist() @@ -370,12 +445,16 @@ def upsert_client(data): address_docs = [] for address in addresses: is_billing = True if address.get("is_billing_address") else False + is_service = True if address.get("is_service_address") else False print("#####DEBUG: Creating address with data:", address) address_doc = AddressService.create_address({ "address_title": AddressService.build_address_title(customer_name, address), "address_line1": address.get("address_line1"), "address_line2": address.get("address_line2"), "address_type": "Billing" if is_billing else "Service", + "custom_billing_address": is_billing, + "is_service_address": is_service, + "is_primary_address": is_billing, "city": address.get("city"), "state": address.get("state"), "country": "United States", @@ -405,13 +484,12 @@ def upsert_client(data): "address": address_doc.name }) client_doc.save(ignore_permissions=True) + client_dict = client_doc.as_dict() + client_dict["contacts"] = [contact.as_dict() for contact in contact_docs] + client_dict["addresses"] = [address.as_dict() for address in address_docs] frappe.local.message_log = [] - return build_success_response({ - "customer": client_doc.as_dict(), - "address": [address_doc.as_dict() for address_doc in address_docs], - "contacts": [contact_doc.as_dict() for contact_doc in contact_docs] - }) + return build_success_response(client_dict) except frappe.ValidationError as ve: return build_error_response(str(ve), 400) except Exception as e: diff --git a/custom_ui/api/db/employees.py b/custom_ui/api/db/employees.py new file mode 100644 index 0000000..1263c19 --- /dev/null +++ b/custom_ui/api/db/employees.py @@ -0,0 +1,49 @@ +import frappe, json +from custom_ui.db_utils import build_success_response, build_error_response +# =============================================================================== +# EMPLOYEE API METHODS +# =============================================================================== + +@frappe.whitelist() +def get_employees(company: str, roles=[]): + """Get a list of employees for a given company. Can be filtered by role.""" + roles = json.loads(roles) if isinstance(roles, str) else roles + filters = {"company": company} + if roles: + filters["designation"] = ["in", roles] + try: + employee_names = frappe.get_all( + "Employee", + filters=filters, + pluck="name" + ) + employees = [frappe.get_doc("Employee", name).as_dict() for name in employee_names] + return build_success_response(employees) + except Exception as e: + return build_error_response(str(e), 500) + +@frappe.whitelist() +def get_employees_organized(company: str, roles=[]): + """Get all employees for a company organized by designation.""" + roles = json.loads(roles) if isinstance(roles, str) else roles + try: + filters = {"company": company} + if roles: + filters["designation"] = ["in", roles] + employee_names = frappe.get_all( + "Employee", + filters=filters, + pluck="name" + ) + employees = [frappe.get_doc("Employee", name).as_dict() for name in employee_names] + + organized = {} + for emp in employees: + designation = emp.get("designation", "Unassigned") + if designation not in organized: + organized[designation] = [] + organized[designation].append(emp) + + return build_success_response(organized) + except Exception as e: + return build_error_response(str(e), 500) \ No newline at end of file diff --git a/custom_ui/api/db/estimates.py b/custom_ui/api/db/estimates.py index bf7e260..678200b 100644 --- a/custom_ui/api/db/estimates.py +++ b/custom_ui/api/db/estimates.py @@ -1,7 +1,7 @@ import frappe, json from frappe.utils.pdf import get_pdf from custom_ui.api.db.general import get_doc_history -from custom_ui.db_utils import process_query_conditions, build_datatable_dict, get_count_or_filters, build_success_response, build_error_response +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 @@ -10,6 +10,38 @@ from custom_ui.services import DbService, ClientService, AddressService, Contact # ESTIMATES & INVOICES API METHODS # =============================================================================== +@frappe.whitelist() +def get_estimate_table_data_v2(filters={}, sortings=[], page=1, page_size=10): + """Get paginated estimate table data with filtering and sorting.""" + print("DEBUG: Raw estimate options received:", filters, sortings, page, page_size) + filters, sortings, page, page_size = DbUtils.process_datatable_request(filters, sortings, page, page_size) + sortings = "modified desc" if not sortings else sortings + count = frappe.db.count("Quotation", filters=filters) + print(f"DEBUG: Number of estimates returned: {count}") + estimate_names = frappe.db.get_all( + "Quotation", + filters=filters, + pluck="name", + limit=page_size, + start=(page) * page_size, + order_by=sortings + ) + + estimates = [frappe.get_doc("Quotation", name).as_dict() for name in estimate_names] + tableRows = [] + for estimate in estimates: + tableRow = { + "id": estimate["name"], + "address": frappe.db.get_value("Address", estimate.get("custom_job_address"), "full_address"), + # strip "-#-" from actual_customer_name and anything that comes after it + "customer": estimate.get("actual_customer_name").split("-#-")[0] if estimate.get("actual_customer_name") else estimate.get("customer_name") if estimate.get("customer_name") else "", + "status": estimate.get("custom_current_status", ""), + "order_type": estimate.get("order_type", ""), + } + tableRows.append(tableRow) + table_data_dict = build_datatable_dict(data=tableRows, count=count, page=page, page_size=page_size) + return build_success_response(table_data_dict) + @frappe.whitelist() def get_estimate_table_data(filters={}, sortings=[], page=1, page_size=10): @@ -145,7 +177,7 @@ def send_estimate_email(estimate_name): print("DEBUG: Sending estimate email for:", estimate_name) quotation = frappe.get_doc("Quotation", estimate_name) - + if not DbService.exists("Contact", quotation.contact_person): return build_error_response("No email found for the customer.", 400) party = ContactService.get_or_throw(quotation.contact_person) @@ -398,7 +430,7 @@ def upsert_estimate(data): # estimate.custom_job_address = data.get("address_name") # estimate.party_name = data.get("customer") # estimate.contact_person = data.get("contact_name") - estimate.custom_requires_half_payment = data.get("requires_half_payment", 0) + estimate.requires_half_payment = data.get("requires_half_payment", 0) estimate.custom_project_template = project_template estimate.custom_quotation_template = data.get("quotation_template", None) # estimate.company = data.get("company") @@ -408,7 +440,7 @@ def upsert_estimate(data): # estimate.customer_address = data.get("address_name") # estimate.letter_head = data.get("company") # estimate.from_onsite_meeting = data.get("onsite_meeting", None) - + # Clear existing items and add new ones estimate.items = [] for item in data.get("items", []): @@ -421,6 +453,7 @@ def upsert_estimate(data): }) estimate.save() + frappe.db.commit() estimate_dict = estimate.as_dict() estimate_dict["history"] = get_doc_history("Quotation", estimate_name) print(f"DEBUG: Estimate updated: {estimate.name}") @@ -438,7 +471,7 @@ def upsert_estimate(data): # print("DEBUG: No billing address found for client:", client_doc.name) new_estimate = frappe.get_doc({ "doctype": "Quotation", - "custom_requires_half_payment": data.get("requires_half_payment", 0), + "requires_half_payment": data.get("requires_half_payment", 0), "custom_job_address": data.get("address_name"), "custom_current_status": "Draft", "contact_email": data.get("contact_email"), @@ -452,7 +485,7 @@ def upsert_estimate(data): "letter_head": data.get("company"), "custom_project_template": data.get("project_template", None), "custom_quotation_template": data.get("quotation_template", None), - "from_onsite_meeting": data.get("onsite_meeting", None) + "from_onsite_meeting": data.get("from_onsite_meeting", None) }) for item in data.get("items", []): item = json.loads(item) if isinstance(item, str) else item @@ -474,6 +507,31 @@ def upsert_estimate(data): print(f"DEBUG: Error in upsert_estimate: {str(e)}") return build_error_response(str(e), 500) + +@frappe.whitelist() +def get_unapproved_estimates_count(company): + """Get the number of unapproved estimates.""" + try: + draft_filters = {'status': "Draft", "company": company} + submitted_filters = {'status': "Submitted", "company": company} + draft_count = frappe.db.count("Quotation", filters=draft_filters) + submitted_count = frappe.db.count("Quotation", filters=submitted_filters) + return build_success_response([draft_count, submitted_count]) + except Exception as e: + return build_error_response(str(e), 500) + + +@frappe.whitelist() +def get_estimates_half_down_count(company): + """Get the number unpaid half-down estimates.""" + try: + filters = {'requires_half_payment': True, 'company': company} + count = frappe.db.count("Quotation", filters=filters) + return build_success_response([count]) + except Exception as e: + return build_error_response(str(e), 500) + + def get_estimate_history(estimate_name): """Get the history of changes for a specific estimate.""" pass diff --git a/custom_ui/api/db/general.py b/custom_ui/api/db/general.py index 8e2524c..13d170b 100644 --- a/custom_ui/api/db/general.py +++ b/custom_ui/api/db/general.py @@ -1,5 +1,7 @@ import frappe -from custom_ui.db_utils import build_history_entries +from custom_ui.db_utils import build_history_entries, build_success_response, build_error_response +from datetime import datetime, timedelta +import json def get_doc_history(doctype, docname): """Get the history of changes for a specific document.""" @@ -56,4 +58,43 @@ def search_any_field(doctype, text): query, [like] * len(conditions), as_dict=True - ) \ No newline at end of file + ) + +@frappe.whitelist() +def get_week_holidays(week_start_date: str): + """Get holidays within a week starting from the given date.""" + + start_date = datetime.strptime(week_start_date, "%Y-%m-%d").date() + end_date = start_date + timedelta(days=6) + + holidays = frappe.get_all( + "Holiday", + filters={ + "holiday_date": ["between", (start_date, end_date)] + }, + fields=["holiday_date", "description"], + order_by="holiday_date asc" + ) + + print(f"DEBUG: Retrieved holidays from {start_date} to {end_date}: {holidays}") + return build_success_response(holidays) + +@frappe.whitelist() +def get_doc_list(doctype, fields=["*"], filters={}, pluck=None): + """Get list of documents for a given doctype with specified fields and filters.""" + if isinstance(fields, str): + fields = json.loads(fields) + if isinstance(filters, str): + filters = json.loads(filters) + try: + docs = frappe.get_all( + doctype, + fields=fields, + filters=filters, + order_by="creation desc", + # pluck=pluck + ) + print(f"DEBUG: Retrieved documents for {doctype} with filters {filters}: {docs}") + return build_success_response(docs) + except Exception as e: + return build_error_response(str(e), 500) \ No newline at end of file diff --git a/custom_ui/api/db/invoices.py b/custom_ui/api/db/invoices.py index 4b7c3ef..b024808 100644 --- a/custom_ui/api/db/invoices.py +++ b/custom_ui/api/db/invoices.py @@ -1,11 +1,36 @@ import frappe, json from custom_ui.db_utils import process_query_conditions, build_datatable_dict, get_count_or_filters, build_success_response, build_error_response +from erpnext.selling.doctype.sales_order.sales_order import make_sales_invoice # =============================================================================== # INVOICES API METHODS # =============================================================================== +@frappe.whitelist() +def create_invoice_for_job(job_name): + """Create the invoice from a sales order of a job.""" + try: + project = frappe.get_doc("Project", job_name) + sales_order = project.sales_order + invoice = make_sales_invoice(sales_order) + invoice.save() + return build_success_response(invoice.as_dict()) + except Exception as e: + return build_error_response(str(e), 500) + + +@frappe.whitelist() +def get_invoices_late_count(): + """Return Due, 30-day late, 90-day late, and Lien-worthy late accounts.""" + try: + dummy_result = [10, 4, 5, 1] + print("DEBUG: DUMMY RESULT:", dummy_result) + return build_success_response(dummy_result) + except Exception as e: + return build_error_response(str(e), 500) + + @frappe.whitelist() def get_invoice_table_data(filters={}, sortings=[], page=1, page_size=10): """Get paginated invoice table data with filtering and sorting support.""" @@ -18,7 +43,7 @@ def get_invoice_table_data(filters={}, sortings=[], page=1, page_size=10): else: count = frappe.db.count("Sales Invoice", filters=processed_filters) - print(f"DEBUG: Number of invoice returned: {count}") + print(f"DEBUG: Number of invoices returned: {count}") invoices = frappe.db.get_all( "Sales Invoice", diff --git a/custom_ui/api/db/jobs.py b/custom_ui/api/db/jobs.py index 9b7b419..affeb74 100644 --- a/custom_ui/api/db/jobs.py +++ b/custom_ui/api/db/jobs.py @@ -1,11 +1,70 @@ import frappe, json from custom_ui.db_utils import process_query_conditions, build_datatable_dict, get_count_or_filters, build_success_response, build_error_response -from custom_ui.services import AddressService, ClientService +from custom_ui.services import AddressService, ClientService, ServiceAppointmentService +from frappe.utils import getdate # =============================================================================== # JOB MANAGEMENT API METHODS # =============================================================================== + +@frappe.whitelist() +def get_jobs_in_queue_count(company): + try: + filters = { + 'company': company, + 'is_scheduled': True, + } + count = frappe.db.count("Project", filters=filters) + return build_success_response([count]) + except Exception as e: + return build_error_response(str(e), 500) + + +@frappe.whitelist() +def get_jobs_in_progress_count(company): + try: + today = getdate() + filters = { + 'company': company, + 'invoice_status': 'Not Ready', + 'expected_start_date': ['<=', today], + 'expected_end_date': ['>=', today], + } + count = frappe.db.count("Project", filters=filters) + return build_success_response([count]) + except Exception as e: + return build_error_response(str(e), 500) + + +@frappe.whitelist() +def get_jobs_late_count(company): + try: + today = getdate() + filters = { + 'company': company, + 'invoice_status': 'Not Ready', + 'expected_end_date': ['<', today] + } + count = frappe.db.count("Project", filters=filters) + return build_success_response([count]) + except Exception as e: + return build_error_response(str(e), 500) + + +@frappe.whitelist() +def get_jobs_to_invoice_count(company): + try: + filters = { + 'company': company, + 'invoice_status': 'Ready to Invoice', + } + count = frappe.db.count("Project", filters=filters) + return build_success_response([count]) + except Exception as e: + return build_error_response(str(e), 500) + + @frappe.whitelist() def get_job_templates(company=None): """Get list of job (project) templates.""" @@ -18,13 +77,14 @@ def get_job_templates(company=None): except Exception as e: return build_error_response(str(e), 500) + @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({ + new_project = frappe.get_doc({ "doctype": "Project", "custom_address": sales_order.custom_job_address, # "custom_installation_address": sales_order.custom_installation_address, @@ -34,8 +94,22 @@ def create_job_from_sales_order(sales_order_name): "sales_order": sales_order, "custom_company": sales_order.company }) - new_job.insert() - return build_success_response(new_job.as_dict()) + 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() + # 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()) except Exception as e: return build_error_response(str(e), 500) @@ -50,6 +124,8 @@ def get_job(job_id=""): project = project.as_dict() project["job_address"] = address_doc project["client"] = ClientService.get_client_or_throw(project.customer) + task_names = frappe.get_all("Task", filters={"project": job_id}) + project["tasks"] = [frappe.get_doc("Task", task_name).as_dict() for task_name in task_names] return build_success_response(project) except Exception as e: return build_error_response(str(e), 500) @@ -80,12 +156,15 @@ def get_job_task_table_data(filters={}, sortings={}, page=1, page_size=10): order_by=processed_sortings ) + tableRows = [] for task in tasks: + address_name = frappe.get_value("Project", task.project, "job_address") + full_address = frappe.get_value("Address", address_name, "full_address") tableRow = {} tableRow["id"] = task["name"] tableRow["subject"] = task["subject"] - tableRow["address"] = task.get("custom_property", "") + tableRow["address"] = full_address tableRow["status"] = task.get("status", "") tableRows.append(tableRow) @@ -132,9 +211,10 @@ def get_jobs_table_data(filters={}, sortings=[], page=1, page_size=10): tableRow = {} tableRow["id"] = project["name"] tableRow["name"] = project["name"] - tableRow["installation_address"] = project.get("custom_installation_address", "") + tableRow["job_address"] = project["job_address"] tableRow["customer"] = project.get("customer", "") tableRow["status"] = project.get("status", "") + tableRow["invoice_status"] = project.get("invoice_status") tableRow["percent_complete"] = project.get("percent_complete", 0) tableRows.append(tableRow) @@ -167,55 +247,56 @@ def upsert_job(data): return {"status": "error", "message": str(e)} @frappe.whitelist() -def get_install_projects(start_date=None, end_date=None): +def get_projects_for_calendar(start_date, end_date, company=None, project_templates=[]): """Get install projects for the calendar.""" + # Parse project_templates if it's a JSON string + if isinstance(project_templates, str): + project_templates = json.loads(project_templates) + + # put some emojis in the print to make it stand out + print("📅📅📅", start_date, end_date, " company:", company, "project_templates:", project_templates, "type:", type(project_templates)) try: - filters = {"project_template": "SNW Install"} + filters = { + "company": company + } if company else {} + if project_templates and len(project_templates) > 0: + filters["project_template"] = ["in", project_templates] + unscheduled_filters = filters.copy() + unscheduled_filters["is_scheduled"] = 0 + + # add to filter for if expected_start_date is between start_date and end_date OR expected_end_date is between start_date and end_date + filters["expected_start_date"] = ["<=", getdate(end_date)] + filters["expected_end_date"] = [">=", getdate(start_date)] # If date range provided, we could filter, but for now let's fetch all open/active ones # or maybe filter by status not Closed/Completed if we want active ones. # The user said "unscheduled" are those with status "Open" (and no date). + # extend filters into unscheduled_filters - projects = frappe.get_all("Project", fields=["*"], filters=filters) - - calendar_events = [] - for project in projects: - # Determine status - status = "unscheduled" - if project.get("expected_start_date"): - status = "scheduled" - - # Map to calendar event format - event = { - "id": project.name, - "serviceType": project.project_name, # Using project name as service type/title - "customer": project.customer, - "status": status, - "scheduledDate": project.expected_start_date, - "scheduledTime": "08:00", # Default time if not specified? Project doesn't seem to have time. - "duration": 480, # Default 8 hours? - "foreman": project.get("custom_install_crew"), - "crew": [], # Need to map crew - "estimatedCost": project.estimated_costing, - "priority": project.priority.lower() if project.priority else "medium", - "notes": project.notes, - "address": project.custom_installation_address - } - - calendar_events.append(event) - - return {"status": "success", "data": calendar_events} + project_names = frappe.get_all("Project", pluck="name", filters=filters) + print("DEBUG: Found scheduled project names:", project_names) + unscheduled_project_names = frappe.get_all("Project", pluck="name", filters=unscheduled_filters) + print("DEBUG: Found unscheduled project names:", unscheduled_project_names) + projects = [frappe.get_doc("Project", name).as_dict() for name in project_names] + unscheduled_projects = [frappe.get_doc("Project", name).as_dict() for name in unscheduled_project_names] + return build_success_response({ "projects": projects, "unscheduled_projects": unscheduled_projects }) except Exception as e: - return {"status": "error", "message": str(e)} - + return build_error_response(str(e), 500) + @frappe.whitelist() -def get_project_templates_for_company(company_name): - """Get project templates for a specific company.""" +def update_job_scheduled_dates(job_name: str, new_start_date: str = None, new_end_date: str = None, foreman_name: str = None): + """Update job (project) schedule dates.""" + print("DEBUG: Updating job schedule:", job_name, new_start_date, new_end_date, foreman_name) try: - templates = frappe.get_all( - "Project Template", - fields=["*"], - filters={"company": company_name} - ) - return build_success_response(templates) + project = frappe.get_doc("Project", job_name) + project.expected_start_date = getdate(new_start_date) if new_start_date else None + project.expected_end_date = getdate(new_end_date) if new_end_date else None + if new_start_date and new_end_date: + project.is_scheduled = 1 + else: + project.is_scheduled = 0 + if foreman_name: + project.custom_foreman = foreman_name + project.save() + return build_success_response(project.as_dict()) except Exception as e: - return build_error_response(str(e), 500), + return build_error_response(str(e), 500) diff --git a/custom_ui/api/db/on_site_meetings.py b/custom_ui/api/db/on_site_meetings.py new file mode 100644 index 0000000..fc6d7fa --- /dev/null +++ b/custom_ui/api/db/on_site_meetings.py @@ -0,0 +1,15 @@ +import frappe +from custom_ui.db_utils import build_success_response, build_error_response + + +@frappe.whitelist() +def get_incomplete_bids(company): + print("Getting Incomplete Bids") + try: + filters = {'status': "Unscheduled", 'company': company} + count = frappe.db.count("On-Site Meeting", filters=filters) + print("Incomplete Bids:", count) + return build_success_response([count]) + except Exception as e: + return build_error_response(str(e), 500) + diff --git a/custom_ui/api/db/service_appointments.py b/custom_ui/api/db/service_appointments.py new file mode 100644 index 0000000..2ac4b63 --- /dev/null +++ b/custom_ui/api/db/service_appointments.py @@ -0,0 +1,69 @@ +import frappe, json +from custom_ui.db_utils import build_success_response, build_error_response +from custom_ui.services import ServiceAppointmentService + +@frappe.whitelist() +def get_service_appointments(companies, filters={}): + """Get Service Appointments for given companies.""" + try: + if isinstance(companies, str): + companies = json.loads(companies) + if isinstance(filters, str): + filters = json.loads(filters) + filters["company"] = ["in", companies] + service_appointment_names = frappe.get_all( + "Service Address 2", + filters=filters, + pluck="name" + ) + service_appointments = [ + ServiceAppointmentService.get_full_dict(name) + for name in service_appointment_names + ] + + "is_half_down_paid" + + return build_success_response(service_appointments) + except Exception as e: + return build_error_response(str(e), 500) + +@frappe.whitelist() +def get_unscheduled_service_appointments(companies): + """Get unscheduled Service Appointments for given companies.""" + try: + if isinstance(companies, str): + companies = json.loads(companies) + filters = { + "company": ["in", companies], + "expected_start_date": None, + "status": "Open" + } + service_appointment_names = frappe.get_all( + "Service Address 2", + filters=filters, + pluck="name" + ) + service_appointments = [ + ServiceAppointmentService.get_full_dict(name) + for name in service_appointment_names + ] + return build_success_response(service_appointments) + except Exception as e: + return build_error_response(str(e), 500) + +@frappe.whitelist() +def update_service_appointment_scheduled_dates(service_appointment_name: str, start_date, end_date, crew_lead_name, start_time=None, end_time=None): + """Update scheduled dates for a Service Appointment.""" + print(f"DEBUG: Updating scheduled dates for Service Appointment {service_appointment_name} to start: {start_date}, end: {end_date}, crew lead: {crew_lead_name}, start time: {start_time}, end time: {end_time}") + try: + updated_service_appointment = ServiceAppointmentService.update_scheduled_dates( + service_appointment_name, + crew_lead_name, + start_date, + end_date, + start_time, + end_time + ) + return build_success_response(updated_service_appointment.as_dict()) + except Exception as e: + return build_error_response(str(e), 500) \ No newline at end of file diff --git a/custom_ui/api/db/tasks.py b/custom_ui/api/db/tasks.py index e53dd37..a08ba9b 100644 --- a/custom_ui/api/db/tasks.py +++ b/custom_ui/api/db/tasks.py @@ -1,4 +1,5 @@ import frappe +import datetime from custom_ui.db_utils import process_query_conditions, build_datatable_dict, get_count_or_filters, build_success_response, build_error_response from custom_ui.services import DbService @@ -12,7 +13,7 @@ def set_task_status(task_name, new_status): return build_success_response(f"Task {task_name} status updated to {new_status}.") except Exception as e: return build_error_response(str(e), 500) - + @frappe.whitelist() def get_job_task_list(job_id=""): @@ -42,6 +43,42 @@ def get_task_status_options(): return build_error_response(str(e), 500) +@frappe.whitelist() +def get_tasks_due(subject_filter, current_company): + """Return the number of items due today of the type of subject_filter""" + try: + today = datetime.date.today() + due_filters = { + 'subject': ['like', f'%{subject_filter}%'], + 'status': ['not in', ["Template", "Completed", "Cancelled"]], + 'company': current_company, + 'exp_end_date': today, + # Add due date filter here + } + completed_filters = { + 'subject': ['like', f'%{subject_filter}%'], + 'status': ['not in', ["Template", "Cancelled"]], + 'company': current_company, + 'exp_end_date': today, + # Add due date filter here + } + overdue_filters = { + 'subject': ['like', f'%{subject_filter}%'], + 'status': ['not in', ["Template", "Completed", "Cancelled"]], + 'company': current_company, + 'exp_end_date': ["<", today] + # 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]) + except frappe.ValidationError as ve: + return build_error_response(str(ve), 400) + except Exception as e: + return build_error_response(str(e), 500) + + @frappe.whitelist() def get_tasks_table_data(filters={}, sortings=[], page=1, page_size=10): """Get paginated task table data with filtering and sorting support.""" @@ -61,10 +98,12 @@ def get_tasks_table_data(filters={}, sortings=[], page=1, page_size=10): fields=["*"], filters=processed_filters, limit=page_size, - start=page * page_size, + start=(page-1) * page_size, order_by=processed_sortings ) + print("TASKS?", tasks, page, page_size) + tableRows = [] for task in tasks: tableRow = {} diff --git a/custom_ui/api/payments.py b/custom_ui/api/payments.py new file mode 100644 index 0000000..476dfe6 --- /dev/null +++ b/custom_ui/api/payments.py @@ -0,0 +1,6 @@ +import frappe + +@frappe.whitelist(allow_guest=True) +def start_payment(invoice_name: str): + + pass \ No newline at end of file diff --git a/custom_ui/db_utils.py b/custom_ui/db_utils.py index 3c577a8..e9be1be 100644 --- a/custom_ui/db_utils.py +++ b/custom_ui/db_utils.py @@ -229,3 +229,20 @@ def build_history_entries(comments, versions): # Sort by timestamp descending history.sort(key=lambda x: x["timestamp"], reverse=True) return history + +def normalize_name(name: str, split_target: str = "_") -> str: + """Normalize a name by splitting off anything after and including the split_target.""" + return name.split(split_target)[0] if split_target in name else name + +class DbUtils: + + @staticmethod + def process_datatable_request(filters, sortings, page, page_size): + # turn filters and sortings from json strings to dicts/lists + if isinstance(filters, str): + filters = json.loads(filters) + if isinstance(sortings, str): + sortings = json.loads(sortings) + page = int(page) + page_size = int(page_size) + return filters, sortings,page, page_size \ No newline at end of file diff --git a/custom_ui/events/estimate.py b/custom_ui/events/estimate.py index f7d212b..cfae092 100644 --- a/custom_ui/events/estimate.py +++ b/custom_ui/events/estimate.py @@ -58,7 +58,7 @@ def on_update_after_submit(doc, method): print("DEBUG: Quotation marked as Won, updating current status.") if doc.customer_type == "Lead": print("DEBUG: Customer is a Lead, converting to Customer and updating Quotation.") - new_customer = ClientService.convert_lead_to_customer(doc.actual_customer_name, update_quotations=False) + new_customer = ClientService.convert_lead_to_customer(doc.actual_customer_name) doc.actual_customer_name = new_customer.name doc.customer_type = "Customer" new_customer.reload() @@ -83,5 +83,5 @@ def on_update_after_submit(doc, method): print("DEBUG: Submitting Sales Order") # new_sales_order.customer_address = backup new_sales_order.submit() - frappe.db.commit() + # frappe.db.commit() print("DEBUG: Sales Order created successfully:", new_sales_order.name) diff --git a/custom_ui/events/general.py b/custom_ui/events/general.py new file mode 100644 index 0000000..f76c13d --- /dev/null +++ b/custom_ui/events/general.py @@ -0,0 +1,6 @@ +import frappe + +def attach_bid_note_form_to_project_template(doc, method): + """Attatch Bid Meeting Note Form to Project Template on insert.""" + print("DEBUG: Attaching Bid Meeting Note Form to Project Template") + frappe.set_value("Project Template", doc.project_template, "bid_meeting_note_form", doc.name) \ No newline at end of file diff --git a/custom_ui/events/jobs.py b/custom_ui/events/jobs.py index aa80dc0..378018e 100644 --- a/custom_ui/events/jobs.py +++ b/custom_ui/events/jobs.py @@ -1,6 +1,7 @@ import frappe -from custom_ui.services import AddressService, ClientService - +from custom_ui.services import AddressService, ClientService, ServiceAppointmentService, TaskService +from datetime import timedelta +import traceback def after_insert(doc, method): print("DEBUG: After Insert Triggered for Project") @@ -15,14 +16,81 @@ def after_insert(doc, method): doc.customer, "projects", {"project": doc.name, "project_template": doc.project_template} ) if doc.project_template == "SNW Install": - print("DEBUG: Project template is SNW Install, updating Address status to In Progress") + print("DEBUG: Project template is SNW Install, creating Service Appointment") AddressService.update_value( doc.job_address, "job_status", "In Progress" ) + try: + service_apt = ServiceAppointmentService.create({ + "project": doc.name, + "customer": doc.customer, + "service_address": doc.job_address, + "company": doc.company, + "project_template": doc.project_template + }) + doc.service_appointment = service_apt.name + doc.save(ignore_permissions=True) + print("DEBUG: Created Service Appointment:", service_apt.name) + except Exception as e: + print("ERROR: Failed to create Service Appointment for Project:", e) + print(traceback.format_exc()) + raise e + task_names = [task.name for task in TaskService.get_tasks_by_project(doc.name)] + for task_name in task_names: + doc.append("tasks", { + "task": task_name + }) + AddressService.append_link_v2( + doc.job_address, "tasks", {"task": task_name} + ) + ClientService.append_link_v2( + doc.customer, "tasks", {"task": task_name} + ) + if task_names: + doc.save(ignore_permissions=True) + TaskService.calculate_and_set_due_dates(task_names, "Created", current_triggering_dict=doc.as_dict()) + def before_insert(doc, method): # This is where we will add logic to set tasks and other properties of a job based on it's project_template - pass \ No newline at end of file + pass + +def before_save(doc, method): + print("DEBUG: Before Save Triggered for Project:", doc.name) + if doc.expected_start_date and doc.expected_end_date: + print("DEBUG: Project has expected start and end dates, marking as scheduled") + doc.is_scheduled = 1 + while frappe.db.exists("Holiday", {"holiday_date": doc.expected_end_date}): + print("DEBUG: Expected end date falls on a holiday, extending end date by 1 day") + doc.expected_end_date += timedelta(days=1) + elif not doc.expected_start_date or not doc.expected_end_date: + print("DEBUG: Project missing expected start or end date, marking as unscheduled") + doc.is_scheduled = 0 + event = TaskService.determine_event(doc) + if event: + TaskService.calculate_and_set_due_dates( + [task.task for task in doc.tasks], + event, + current_triggering_dict=doc.as_dict() + ) + +def after_save(doc, method): + print("DEBUG: After Save Triggered for Project:", doc.name) + if doc.project_template == "SNW Install": + print("DEBUG: Project template is SNW Install, updating Address Job Status based on Project status") + status_mapping = { + "Open": "In Progress", + "Completed": "Completed", + "Closed": "Completed" + } + new_status = status_mapping.get(doc.status, "In Progress") + if frappe.db.get_value("Address", doc.job_address, "job_status") != new_status: + print("DEBUG: Updating Address job_status to:", new_status) + AddressService.update_value( + doc.job_address, + "job_status", + new_status + ) \ No newline at end of file diff --git a/custom_ui/events/onsite_meeting.py b/custom_ui/events/onsite_meeting.py index 32a0262..aa4797a 100644 --- a/custom_ui/events/onsite_meeting.py +++ b/custom_ui/events/onsite_meeting.py @@ -8,7 +8,8 @@ def before_insert(doc, method): # Address.onsite_meetings is a child table with two fields: onsite_meeting (Link) and project_template (Link). Iterate through to see if there is already an SNW Install meeting linked. for link in address_doc.onsite_meetings: if link.project_template == "SNW Install": - raise frappe.ValidationError("An On-Site Meeting with project template 'SNW Install' is already linked to this address.") + if frappe.db.get_value("On-Site Meeting", link.onsite_meeting, "status") != "Cancelled": + raise frappe.ValidationError("An On-Site Meeting with project template 'SNW Install' is already linked to this address.") def after_insert(doc, method): print("DEBUG: After Insert Triggered for On-Site Meeting") @@ -22,17 +23,19 @@ def after_insert(doc, method): def before_save(doc, method): + print("DEBUG: Before Save Triggered for On-Site Meeting") - if doc.status != "Scheduled" and doc.start_time and doc.end_time and doc.status != "Completed": + if doc.status != "Scheduled" and doc.start_time and doc.end_time and doc.status != "Completed" and doc.status != "Cancelled": print("DEBUG: Meeting has start and end time, setting status to Scheduled") doc.status = "Scheduled" if doc.project_template == "SNW Install": print("DEBUG: Project template is SNW Install") if doc.status == "Completed": print("DEBUG: Meeting marked as Completed, updating Address status") - current_status = AddressService.get_value(doc.address, "onsite_meeting_scheduled") - if current_status != doc.status: - AddressService.update_value(doc.address, "onsite_meeting_scheduled", "Completed") + AddressService.update_value(doc.address, "onsite_meeting_scheduled", "Completed") + if doc.status == "Cancelled": + print("DEBUG: Meeting marked as Cancelled, updating Address status") + AddressService.update_value(doc.address, "onsite_meeting_scheduled", "Not Started") def validate_address_link(doc, method): print("DEBUG: Validating Address link for On-Site Meeting") diff --git a/custom_ui/events/sales_order.py b/custom_ui/events/sales_order.py index 9c4499c..1fffdb4 100644 --- a/custom_ui/events/sales_order.py +++ b/custom_ui/events/sales_order.py @@ -1,13 +1,24 @@ import frappe from custom_ui.services import DbService, AddressService, ClientService + +def on_save(doc, method): + print("DEBUG: on_save hook triggered for Sales Order", doc.name) + if doc.advance_paid >= doc.grand_total/2: + if doc.project and doc.half_down_required: + print("DEBUG: Advance payments exceed required threshold of half down, setting project half down paid.") + project = frappe.get_doc("Project", doc.project) + project.is_half_down_paid = True + + def before_insert(doc, method): - print("DEBUG: before_insert hook triggered for Sales Order:", doc.name) - if doc.custom_project_template == "SNW Install": - print("DEBUG: Sales Order uses SNW Install template, checking for duplicate linked sales orders.") - address_doc = AddressService.get_or_throw(doc.custom_job_address) - if "SNW Install" in [link.project_template for link in address_doc.sales_orders]: - raise frappe.ValidationError("A Sales Order with project template 'SNW Install' is already linked to this address.") + print("DEBUG: before_insert hook triggered for Sales Order") + # if doc.custom_project_template == "SNW Install": + # print("DEBUG: Sales Order uses SNW Install template, checking for duplicate linked sales orders.") + # address_doc = AddressService.get_or_throw(doc.custom_job_address) + # if "SNW Install" in [link.project_template for link in address_doc.sales_orders]: + # raise frappe.ValidationError("A Sales Order with project template 'SNW Install' is already linked to this address.") + def on_submit(doc, method): print("DEBUG: Info from Sales Order") @@ -29,14 +40,16 @@ def on_submit(doc, method): "custom_warranty_duration_days": 90, "customer": doc.customer, "job_address": doc.custom_job_address, - "sales_order": doc.name + "sales_order": doc.name, + "requires_half_payment": doc.requires_half_payment }) # attatch the job to the sales_order links new_job.insert() - frappe.db.commit() + # frappe.db.commit() except Exception as e: print("ERROR creating Project from Sales Order:", str(e)) + def after_insert(doc, method): print("DEBUG: after_insert hook triggered for Sales Order:", doc.name) AddressService.append_link_v2( @@ -49,41 +62,43 @@ def after_insert(doc, method): doc.customer, "sales_orders", {"sales_order": doc.name, "project_template": doc.custom_project_template} ) -def create_sales_invoice_from_sales_order(doc, method): - try: - print("DEBUG: after_submit hook triggered for Sales Order:", doc.name) - invoice_ammount = doc.grand_total / 2 if doc.requires_half_payment else doc.grand_total - items = [] - for so_item in doc.items: - # proportionally reduce rate if half-payment - rate = so_item.rate / 2 if doc.requires_half_payment else so_item.rate - qty = so_item.qty # usually full qty, but depends on half-payment rules - items.append({ - "item_code": so_item.item_code, - "qty": qty, - "rate": rate, - "income_account": so_item.income_account, - "cost_center": so_item.cost_center, - "so_detail": so_item.name # links item to Sales Order - }) - invoice = frappe.get_doc({ - "doctype": "Sales Invoice", - "customer": doc.customer, - "company": doc.company, - "posting_date": frappe.utils.nowdate(), - "due_date": frappe.utils.nowdate(), # or calculate from payment terms - "currency": doc.currency, - "update_stock": 0, - "items": items, - "sales_order": doc.name, # link invoice to Sales Order - "ignore_pricing_rule": 1, - "payment_schedule": doc.payment_schedule if not half_payment else [] # optional - }) - invoice.insert() - invoice.submit() - frappe.db.commit() - return invoice - except Exception as e: - print("ERROR creating Sales Invoice from Sales Order:", str(e)) - frappe.log_error(f"Error creating Sales Invoice from Sales Order {doc.name}: {str(e)}", "Sales Order after_submit Error") +def create_sales_invoice_from_sales_order(doc, method): + pass + # try: + # print("DEBUG: after_submit hook triggered for Sales Order:", doc.name) + # invoice_ammount = doc.grand_total / 2 if doc.requires_half_payment else doc.grand_total + # items = [] + # for so_item in doc.items: + # # proportionally reduce rate if half-payment + # rate = so_item.rate / 2 if doc.requires_half_payment else so_item.rate + # qty = so_item.qty # usually full qty, but depends on half-payment rules + # items.append({ + # "item_code": so_item.item_code, + # "qty": qty, + # "rate": rate, + # "income_account": so_item.income_account, + # "cost_center": so_item.cost_center, + # "so_detail": so_item.name # links item to Sales Order + # }) + # invoice = frappe.get_doc({ + # "doctype": "Sales Invoice", + # "customer": doc.customer, + # "company": doc.company, + # "posting_date": frappe.utils.nowdate(), + # "due_date": frappe.utils.nowdate(), # or calculate from payment terms + # "currency": doc.currency, + # "update_stock": 0, + # "items": items, + # "sales_order": doc.name, # link invoice to Sales Order + # "ignore_pricing_rule": 1, + # "payment_schedule": doc.payment_schedule if not half_payment else [] # optional + # }) + + # invoice.insert() + # invoice.submit() + # frappe.db.commit() + # return invoice + # except Exception as e: + # print("ERROR creating Sales Invoice from Sales Order:", str(e)) + # frappe.log_error(f"Error creating Sales Invoice from Sales Order {doc.name}: {str(e)}", "Sales Order after_submit Error") diff --git a/custom_ui/events/service_appointment.py b/custom_ui/events/service_appointment.py new file mode 100644 index 0000000..d0f04de --- /dev/null +++ b/custom_ui/events/service_appointment.py @@ -0,0 +1,31 @@ +import frappe + +from custom_ui.services import TaskService + +def on_update(doc, method): + print("DEBUG: On Update Triggered for Service Appointment") + # event = TaskService.determine_event(doc) + # if event: + # tasks = TaskService.get_tasks_by_project(doc.project) + # task_names = [task.name for task in tasks] + # TaskService.calculate_and_set_due_dates(task_names=task_names, event=event, triggering_doctype="Service Address 2") + +def after_insert(doc, method): + print("DEBUG: After Insert Triggered for Service Appointment") + task_names = [task.name for task in TaskService.get_tasks_by_project(doc.project)] + TaskService.calculate_and_set_due_dates(task_names=task_names, event="Created", current_triggering_dict=doc.as_dict()) + +def before_save(doc, method): + print("DEBUG: Before Save Triggered for Service Appointment") + if doc.status == "Open" and doc.expected_start_date: + doc.status = "Scheduled" + elif doc.status == "Scheduled" and not doc.expected_start_date: + doc.status = "Open" + if doc.status == "Scheduled" and doc.actual_start_date: + doc.status = "Started" + elif doc.status != "Completed" and doc.status != "Canceled" and doc.actual_end_date: + doc.status = "Completed" + event = TaskService.determine_event(doc) + if event: + task_names = [task.name for task in TaskService.get_tasks_by_project(doc.project)] + TaskService.calculate_and_set_due_dates(task_names=task_names, event=event, current_triggering_dict=doc.as_dict()) \ No newline at end of file diff --git a/custom_ui/events/task.py b/custom_ui/events/task.py index 2e32836..a5e24df 100644 --- a/custom_ui/events/task.py +++ b/custom_ui/events/task.py @@ -1,7 +1,34 @@ import frappe +from custom_ui.services import AddressService, ClientService, TaskService def before_insert(doc, method): """Set values before inserting a Task.""" + print("DEBUG: Before Insert Triggered for Task") project_doc = frappe.get_doc("Project", doc.project) - if project_doc.custom_installation_address: - doc.custom_property = project_doc.custom_installation_address \ No newline at end of file + doc.project_template = project_doc.project_template + doc.customer = project_doc.customer + if project_doc.job_address: + doc.custom_property = project_doc.job_address + +def after_insert(doc, method): + print("DEBUG: After Insert Triggered for Task") + print("DEBUG: Linking Task to Customer and Address") + AddressService.append_link_v2( + doc.custom_property, "tasks", {"task": doc.name, "project_template": doc.project_template } + ) + AddressService.append_link_v2( + doc.custom_property, "links", {"link_doctype": "Task", "link_name": doc.name} + ) + ClientService.append_link_v2( + doc.customer, "tasks", {"task": doc.name, "project_template": doc.project_template } + ) + task_names = [task.name for task in TaskService.get_tasks_by_project(doc.project)] + TaskService.calculate_and_set_due_dates(task_names, "Created", current_triggering_dict=doc.as_dict()) + +def before_save(doc, method): + print("DEBUG: Before Save Triggered for Task:", doc.name) + event = TaskService.determine_event(doc) + if event: + task_names = [task.name for task in TaskService.get_tasks_by_project(doc.project)] + TaskService.calculate_and_set_due_dates(task_names, event, current_triggering_dict=doc.as_dict()) + \ No newline at end of file diff --git a/custom_ui/fixtures/custom_field.json b/custom_ui/fixtures/custom_field.json index 3c84506..f6789da 100644 --- a/custom_ui/fixtures/custom_field.json +++ b/custom_ui/fixtures/custom_field.json @@ -1,289 +1,4 @@ [ - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Supplier", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "irs_1099", - "fieldtype": "Check", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "tax_id", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Is IRS 1099 reporting required for supplier?", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-04-03 13:53:07.662611", - "module": null, - "name": "Supplier-irs_1099", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Sales Order", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "exempt_from_sales_tax", - "fieldtype": "Check", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "taxes_and_charges", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Is customer exempted from sales tax?", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-04-03 13:53:07.674608", - "module": null, - "name": "Sales Order-exempt_from_sales_tax", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Sales Invoice", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "exempt_from_sales_tax", - "fieldtype": "Check", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "taxes_section", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Is customer exempted from sales tax?", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-04-03 13:53:07.681896", - "module": null, - "name": "Sales Invoice-exempt_from_sales_tax", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Customer", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "exempt_from_sales_tax", - "fieldtype": "Check", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "dn_required", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Is customer exempted from sales tax?", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-04-03 13:53:07.688051", - "module": null, - "name": "Customer-exempt_from_sales_tax", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Quotation", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "exempt_from_sales_tax", - "fieldtype": "Check", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "taxes_and_charges", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Is customer exempted from sales tax?", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-04-03 13:53:07.693990", - "module": null, - "name": "Quotation-exempt_from_sales_tax", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, { "allow_in_quick_entry": 0, "allow_on_submit": 1, @@ -455,2001 +170,6 @@ "unique": 0, "width": null }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Company", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "hr_and_payroll_tab", - "fieldtype": "Tab Break", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "credit_limit", - "is_system_generated": 1, - "is_virtual": 0, - "label": "HR & Payroll", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.433359", - "module": null, - "name": "Company-hr_and_payroll_tab", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Company", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "hr_settings_section", - "fieldtype": "Section Break", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "hr_and_payroll_tab", - "is_system_generated": 1, - "is_virtual": 0, - "label": "HR & Payroll Settings", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.436024", - "module": null, - "name": "Company-hr_settings_section", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": "eval:!doc.__islocal", - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Company", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "default_expense_claim_payable_account", - "fieldtype": "Link", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 1, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "hr_settings_section", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Default Expense Claim Payable Account", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.438547", - "module": null, - "name": "Company-default_expense_claim_payable_account", - "no_copy": 1, - "non_negative": 0, - "options": "Account", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Company", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "default_employee_advance_account", - "fieldtype": "Link", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "default_expense_claim_payable_account", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Default Employee Advance Account", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.441022", - "module": null, - "name": "Company-default_employee_advance_account", - "no_copy": 1, - "non_negative": 0, - "options": "Account", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Company", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "column_break_10", - "fieldtype": "Column Break", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "default_employee_advance_account", - "is_system_generated": 1, - "is_virtual": 0, - "label": null, - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.443591", - "module": null, - "name": "Company-column_break_10", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": "eval:!doc.__islocal", - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Company", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "default_payroll_payable_account", - "fieldtype": "Link", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 1, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "column_break_10", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Default Payroll Payable Account", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.446176", - "module": null, - "name": "Company-default_payroll_payable_account", - "no_copy": 1, - "non_negative": 0, - "options": "Account", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Department", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "section_break_4", - "fieldtype": "Section Break", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "disabled", - "is_system_generated": 1, - "is_virtual": 0, - "label": null, - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.449181", - "module": null, - "name": "Department-section_break_4", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Department", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "payroll_cost_center", - "fieldtype": "Link", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "section_break_4", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Payroll Cost Center", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.451603", - "module": null, - "name": "Department-payroll_cost_center", - "no_copy": 0, - "non_negative": 0, - "options": "Cost Center", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Department", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "column_break_9", - "fieldtype": "Column Break", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "payroll_cost_center", - "is_system_generated": 1, - "is_virtual": 0, - "label": null, - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.454100", - "module": null, - "name": "Department-column_break_9", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": "Days for which Holidays are blocked for this department.", - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Department", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "leave_block_list", - "fieldtype": "Link", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 1, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "column_break_9", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Leave Block List", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.456536", - "module": null, - "name": "Department-leave_block_list", - "no_copy": 0, - "non_negative": 0, - "options": "Leave Block List", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": "The first Approver in the list will be set as the default Approver.", - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Department", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "approvers", - "fieldtype": "Section Break", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "leave_block_list", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Approvers", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.459239", - "module": null, - "name": "Department-approvers", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Department", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "shift_request_approver", - "fieldtype": "Table", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "approvers", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Shift Request Approver", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.461983", - "module": null, - "name": "Department-shift_request_approver", - "no_copy": 0, - "non_negative": 0, - "options": "Department Approver", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Department", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "leave_approvers", - "fieldtype": "Table", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "shift_request_approver", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Leave Approver", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.464648", - "module": null, - "name": "Department-leave_approvers", - "no_copy": 0, - "non_negative": 0, - "options": "Department Approver", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Department", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "expense_approvers", - "fieldtype": "Table", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "leave_approvers", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Expense Approver", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.467296", - "module": null, - "name": "Department-expense_approvers", - "no_copy": 0, - "non_negative": 0, - "options": "Department Approver", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 1, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Designation", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "appraisal_template", - "fieldtype": "Link", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "description", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Appraisal Template", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.470396", - "module": null, - "name": "Designation-appraisal_template", - "no_copy": 0, - "non_negative": 0, - "options": "Appraisal Template", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Designation", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "required_skills_section", - "fieldtype": "Section Break", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "appraisal_template", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Required Skills", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.473045", - "module": null, - "name": "Designation-required_skills_section", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Designation", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "skills", - "fieldtype": "Table", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "required_skills_section", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Skills", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.475468", - "module": null, - "name": "Designation-skills", - "no_copy": 0, - "non_negative": 0, - "options": "Designation Skill", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Employee", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "employment_type", - "fieldtype": "Link", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 1, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "department", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Employment Type", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.478437", - "module": null, - "name": "Employee-employment_type", - "no_copy": 0, - "non_negative": 0, - "options": "Employment Type", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Employee", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "job_applicant", - "fieldtype": "Link", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "employment_details", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Job Applicant", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.480900", - "module": null, - "name": "Employee-job_applicant", - "no_copy": 0, - "non_negative": 0, - "options": "Job Applicant", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Employee", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "grade", - "fieldtype": "Link", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "branch", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Grade", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.483327", - "module": null, - "name": "Employee-grade", - "no_copy": 0, - "non_negative": 0, - "options": "Employee Grade", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Employee", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "default_shift", - "fieldtype": "Link", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "holiday_list", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Default Shift", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.485623", - "module": null, - "name": "Employee-default_shift", - "no_copy": 0, - "non_negative": 0, - "options": "Shift Type", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Employee", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "health_insurance_section", - "fieldtype": "Section Break", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "health_details", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Health Insurance", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.487995", - "module": null, - "name": "Employee-health_insurance_section", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Employee", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "health_insurance_provider", - "fieldtype": "Link", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "health_insurance_section", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Health Insurance Provider", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.490407", - "module": null, - "name": "Employee-health_insurance_provider", - "no_copy": 0, - "non_negative": 0, - "options": "Employee Health Insurance", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": "eval:doc.health_insurance_provider", - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Employee", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "health_insurance_no", - "fieldtype": "Data", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "health_insurance_provider", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Health Insurance No", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.492944", - "module": null, - "name": "Employee-health_insurance_no", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Employee", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "approvers_section", - "fieldtype": "Section Break", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "default_shift", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Approvers", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.495454", - "module": null, - "name": "Employee-approvers_section", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Employee", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "expense_approver", - "fieldtype": "Link", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "approvers_section", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Expense Approver", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.497897", - "module": null, - "name": "Employee-expense_approver", - "no_copy": 0, - "non_negative": 0, - "options": "User", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Employee", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "leave_approver", - "fieldtype": "Link", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "expense_approver", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Leave Approver", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.500408", - "module": null, - "name": "Employee-leave_approver", - "no_copy": 0, - "non_negative": 0, - "options": "User", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Employee", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "column_break_45", - "fieldtype": "Column Break", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "leave_approver", - "is_system_generated": 1, - "is_virtual": 0, - "label": null, - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.502956", - "module": null, - "name": "Employee-column_break_45", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Employee", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "shift_request_approver", - "fieldtype": "Link", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "column_break_45", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Shift Request Approver", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.505415", - "module": null, - "name": "Employee-shift_request_approver", - "no_copy": 0, - "non_negative": 0, - "options": "User", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Employee", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "salary_cb", - "fieldtype": "Column Break", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "salary_mode", - "is_system_generated": 1, - "is_virtual": 0, - "label": null, - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.508551", - "module": null, - "name": "Employee-salary_cb", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Employee", - "fetch_from": "department.payroll_cost_center", - "fetch_if_empty": 1, - "fieldname": "payroll_cost_center", - "fieldtype": "Link", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "salary_cb", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Payroll Cost Center", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.512094", - "module": null, - "name": "Employee-payroll_cost_center", - "no_copy": 0, - "non_negative": 0, - "options": "Cost Center", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Project", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "total_expense_claim", - "fieldtype": "Currency", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "total_costing_amount", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Total Expense Claim (via Expense Claims)", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.515040", - "module": null, - "name": "Project-total_expense_claim", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 1, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Task", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "total_expense_claim", - "fieldtype": "Currency", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "total_costing_amount", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Total Expense Claim (via Expense Claim)", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.518146", - "module": null, - "name": "Task-total_expense_claim", - "no_copy": 0, - "non_negative": 0, - "options": "Company:company:default_currency", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 1, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Timesheet", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "salary_slip", - "fieldtype": "Link", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "column_break_3", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Salary Slip", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.520522", - "module": null, - "name": "Timesheet-salary_slip", - "no_copy": 1, - "non_negative": 0, - "options": "Salary Slip", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 1, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 1, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": "1", - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Terms and Conditions", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "hr", - "fieldtype": "Check", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "buying", - "is_system_generated": 1, - "is_virtual": 0, - "label": "HR", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.523444", - "module": null, - "name": "Terms and Conditions-hr", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -2507,234 +227,6 @@ "unique": 0, "width": null }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Lead", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "customer_type", - "fieldtype": "Select", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "lead_name", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Customer Type", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-12-13 04:03:02.507746", - "module": null, - "name": "Lead-customer_type", - "no_copy": 0, - "non_negative": 0, - "options": "Individual\nCompany\nPartnership", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Address", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "lead_name", - "fieldtype": "Data", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "custom_customer_to_bill", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Lead Name", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-12-16 03:25:37.095066", - "module": null, - "name": "Address-lead_name", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Lead", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "onsite_meetings", - "fieldtype": "Table", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "quotations", - "is_system_generated": 1, - "is_virtual": 0, - "label": "On-Site Meetings", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2026-01-13 08:37:09.135185", - "module": null, - "name": "Lead-onsite_meetings", - "no_copy": 0, - "non_negative": 0, - "options": "Lead On-Site Meeting Link", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Lead", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "quotations", - "fieldtype": "Table", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "companies", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Quotations", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2026-01-13 08:37:09.177390", - "module": null, - "name": "Lead-quotations", - "no_copy": 0, - "non_negative": 0, - "options": "Lead Quotation Link", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -2792,177 +284,6 @@ "unique": 0, "width": null }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Address", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "projects", - "fieldtype": "Table", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "onsite_meetings", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Projects", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2026-01-13 08:37:09.361328", - "module": null, - "name": "Address-projects", - "no_copy": 0, - "non_negative": 0, - "options": "Address Project Link", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Address", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "onsite_meetings", - "fieldtype": "Table", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "quotations", - "is_system_generated": 1, - "is_virtual": 0, - "label": "On-Site Meetings", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2026-01-13 08:37:09.489089", - "module": null, - "name": "Address-onsite_meetings", - "no_copy": 0, - "non_negative": 0, - "options": "Address On-Site Meeting Link", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Address", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "quotations", - "fieldtype": "Table", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "companies", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Quotations", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2026-01-13 08:37:09.541169", - "module": null, - "name": "Address-quotations", - "no_copy": 0, - "non_negative": 0, - "options": "Address Quotation Link", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -3020,63 +341,6 @@ "unique": 0, "width": null }, - { - "allow_in_quick_entry": 1, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Quotation", - "fetch_from": ".address_line1", - "fetch_if_empty": 0, - "fieldname": "custom_installation_address", - "fieldtype": "Link", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 1, - "in_list_view": 0, - "in_preview": 1, - "in_standard_filter": 0, - "insert_after": "shipping_address_name", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Installation Address", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-11-01 11:52:10.662566", - "module": null, - "name": "Quotation-custom_installation_address", - "no_copy": 0, - "non_negative": 0, - "options": "Address", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, { "allow_in_quick_entry": 0, "allow_on_submit": 1, @@ -3135,7 +399,7 @@ "width": null }, { - "allow_in_quick_entry": 0, + "allow_in_quick_entry": 1, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -3146,11 +410,11 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Delivery Note", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_installation_address", - "fieldtype": "Link", + "dt": "Service Appointment", + "fetch_from": "contact.mobile_no", + "fetch_if_empty": 1, + "fieldname": "custom_phone_number", + "fieldtype": "Data", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -3158,22 +422,79 @@ "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, + "in_list_view": 1, + "in_preview": 1, "in_standard_filter": 0, - "insert_after": "address_and_contact_tab", + "insert_after": "contact", "is_system_generated": 0, "is_virtual": 0, - "label": "Installation Address", + "label": "Phone Number", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-02-19 06:34:25.019577", + "modified": "2025-01-06 16:50:41.564255", "module": null, - "name": "Delivery Note-custom_installation_address", + "name": "Service Appointment-custom_phone_number", "no_copy": 0, "non_negative": 0, - "options": "Address", + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 1, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 1, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": "Kris Sims", + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Service Appointment", + "fetch_from": null, + "fetch_if_empty": 1, + "fieldname": "custom_assigned_to", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 1, + "in_list_view": 1, + "in_preview": 1, + "in_standard_filter": 0, + "insert_after": "service_details", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Assigned to", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-06 16:56:08.644464", + "module": null, + "name": "Service Appointment-custom_assigned_to", + "no_copy": 0, + "non_negative": 0, + "options": "Sales Person", "permlevel": 0, "placeholder": null, "precision": "", @@ -3339,7 +660,7 @@ "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2026-01-16 04:11:39.714163", + "modified": "2026-01-26 01:52:42.708762", "module": null, "name": "Quotation-requires_half_payment", "no_copy": 0, @@ -3419,177 +740,6 @@ "unique": 0, "width": null }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Contact", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_column_break_g4zvy", - "fieldtype": "Column Break", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "sb_01", - "is_system_generated": 0, - "is_virtual": 0, - "label": "", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-12-27 15:15:18.076019", - "module": null, - "name": "Contact-custom_column_break_g4zvy", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 1, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Service Appointment", - "fetch_from": "contact.custom_service_address", - "fetch_if_empty": 0, - "fieldname": "custom_location_of_meeting", - "fieldtype": "Link", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 1, - "in_preview": 1, - "in_standard_filter": 0, - "insert_after": "section_break_toee", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Service Address", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-06 16:50:41.472790", - "module": null, - "name": "Service Appointment-custom_location_of_meeting", - "no_copy": 0, - "non_negative": 0, - "options": "Address", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 1, - "width": null - }, - { - "allow_in_quick_entry": 1, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Activity Type", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_company", - "fieldtype": "Link", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 1, - "in_preview": 0, - "in_standard_filter": 1, - "insert_after": "costing_rate", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Company", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-24 11:01:20.861860", - "module": null, - "name": "Activity Type-custom_company", - "no_copy": 0, - "non_negative": 0, - "options": "Company", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -3704,63 +854,6 @@ "unique": 0, "width": null }, - { - "allow_in_quick_entry": 1, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Project", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_installation_address", - "fieldtype": "Link", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 1, - "in_list_view": 0, - "in_preview": 1, - "in_standard_filter": 1, - "insert_after": "custom_column_break_k7sgq", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Installation Address", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-03-04 19:46:31.746315", - "module": null, - "name": "Project-custom_installation_address", - "no_copy": 0, - "non_negative": 0, - "options": "Address", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -3875,6 +968,120 @@ "unique": 0, "width": null }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Contact", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_column_break_g4zvy", + "fieldtype": "Column Break", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "sb_01", + "is_system_generated": 0, + "is_virtual": 0, + "label": "", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-12-27 15:15:18.076019", + "module": null, + "name": "Contact-custom_column_break_g4zvy", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 1, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Project", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_installation_address", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 1, + "in_list_view": 0, + "in_preview": 1, + "in_standard_filter": 1, + "insert_after": "custom_column_break_k7sgq", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Installation Address", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-03-04 19:46:31.746315", + "module": null, + "name": "Project-custom_installation_address", + "no_copy": 0, + "non_negative": 0, + "options": "Address", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -3932,6 +1139,63 @@ "unique": 0, "width": null }, + { + "allow_in_quick_entry": 1, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Activity Type", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_company", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 1, + "insert_after": "costing_rate", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Company", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-24 11:01:20.861860", + "module": null, + "name": "Activity Type-custom_company", + "no_copy": 0, + "non_negative": 0, + "options": "Company", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -4118,7 +1382,7 @@ "dt": "Task", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_property", + "fieldname": "project_template", "fieldtype": "Link", "hidden": 0, "hide_border": 0, @@ -4131,18 +1395,75 @@ "in_preview": 0, "in_standard_filter": 0, "insert_after": "project", - "is_system_generated": 0, + "is_system_generated": 1, "is_virtual": 0, - "label": "Property", + "label": "Project Template", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2024-07-08 05:37:46.181477", + "modified": "2026-01-19 18:17:40.981211", "module": null, - "name": "Task-custom_property", + "name": "Task-project_template", "no_copy": 0, "non_negative": 0, - "options": "Address", + "options": "Project Template", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 1, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Designation", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "appraisal_template", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "description", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Appraisal Template", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-13 10:13:26.470396", + "module": null, + "name": "Designation-appraisal_template", + "no_copy": 0, + "non_negative": 0, + "options": "Appraisal Template", "permlevel": 0, "placeholder": null, "precision": "", @@ -4172,12 +1493,12 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Address", + "dt": "Task", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_column_break_jw2ty", - "fieldtype": "Column Break", - "hidden": 1, + "fieldname": "custom_property", + "fieldtype": "Link", + "hidden": 0, "hide_border": 0, "hide_days": 0, "hide_seconds": 0, @@ -4187,19 +1508,19 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "custom_column_break_vqa4d", + "insert_after": "project", "is_system_generated": 0, "is_virtual": 0, - "label": "", + "label": "Property", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2024-12-06 12:51:45.652483", + "modified": "2024-07-08 05:37:46.181477", "module": null, - "name": "Address-custom_column_break_jw2ty", + "name": "Task-custom_property", "no_copy": 0, "non_negative": 0, - "options": null, + "options": "Address", "permlevel": 0, "placeholder": null, "precision": "", @@ -4457,12 +1778,12 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Quotation", + "dt": "Address", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_column_break_dza9b", + "fieldname": "custom_column_break_jw2ty", "fieldtype": "Column Break", - "hidden": 0, + "hidden": 1, "hide_border": 0, "hide_days": 0, "hide_seconds": 0, @@ -4472,16 +1793,16 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "requires_half_payment", + "insert_after": "custom_column_break_vqa4d", "is_system_generated": 0, "is_virtual": 0, "label": "", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-04-17 11:17:08.532471", + "modified": "2024-12-06 12:51:45.652483", "module": null, - "name": "Quotation-custom_column_break_dza9b", + "name": "Address-custom_column_break_jw2ty", "no_copy": 0, "non_negative": 0, "options": null, @@ -4536,7 +1857,7 @@ "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2026-01-16 04:11:39.820190", + "modified": "2026-01-26 01:52:42.807278", "module": null, "name": "Sales Order-requires_half_payment", "no_copy": 0, @@ -4845,7 +2166,7 @@ "width": null }, { - "allow_in_quick_entry": 1, + "allow_in_quick_entry": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -4856,11 +2177,11 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Service Appointment", - "fetch_from": "contact.mobile_no", - "fetch_if_empty": 1, - "fieldname": "custom_phone_number", - "fieldtype": "Data", + "dt": "Project Template", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "calendar_color", + "fieldtype": "Color", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -4868,19 +2189,19 @@ "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_global_search": 0, - "in_list_view": 1, - "in_preview": 1, + "in_list_view": 0, + "in_preview": 0, "in_standard_filter": 0, - "insert_after": "contact", - "is_system_generated": 0, + "insert_after": "company", + "is_system_generated": 1, "is_virtual": 0, - "label": "Phone Number", + "label": "Calendar Color", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-01-06 16:50:41.564255", + "modified": "2026-01-21 04:32:32.810298", "module": null, - "name": "Service Appointment-custom_phone_number", + "name": "Project Template-calendar_color", "no_copy": 0, "non_negative": 0, "options": null, @@ -4897,7 +2218,64 @@ "search_index": 0, "show_dashboard": 0, "sort_options": 0, - "translatable": 1, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Designation", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "required_skills_section", + "fieldtype": "Section Break", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "appraisal_template", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Required Skills", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-13 10:13:26.473045", + "module": null, + "name": "Designation-required_skills_section", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, "unique": 0, "width": null }, @@ -4958,63 +2336,6 @@ "unique": 0, "width": null }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Contact", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_column_break_hpz5b", - "fieldtype": "Column Break", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "first_name", - "is_system_generated": 0, - "is_virtual": 0, - "label": "", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-14 18:03:58.483385", - "module": null, - "name": "Contact-custom_column_break_hpz5b", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, { "allow_in_quick_entry": 1, "allow_on_submit": 0, @@ -5129,120 +2450,6 @@ "unique": 0, "width": null }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Address", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_installationservice_address", - "fieldtype": "Check", - "hidden": 1, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "custom_column_break_jw2ty", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Installation/Service Address", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-03-04 20:12:00.846188", - "module": null, - "name": "Address-custom_installationservice_address", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Quotation", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_response", - "fieldtype": "Select", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "custom_column_break_dza9b", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Response", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-04-17 11:17:08.732534", - "module": null, - "name": "Quotation-custom_response", - "no_copy": 0, - "non_negative": 0, - "options": "\nAccepted\nRejected\nRequested call", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 1, - "unique": 0, - "width": null - }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -5307,16 +2514,16 @@ "collapsible": 0, "collapsible_depends_on": null, "columns": 0, - "default": "Unscheduled", + "default": null, "depends_on": null, "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "On-Site Meeting", + "dt": "Contact", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "status", - "fieldtype": "Select", + "fieldname": "custom_column_break_hpz5b", + "fieldtype": "Column Break", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -5327,19 +2534,76 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "start_time", - "is_system_generated": 1, + "insert_after": "first_name", + "is_system_generated": 0, "is_virtual": 0, - "label": "Status", + "label": "", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-11-21 08:47:51.213693", + "modified": "2025-01-14 18:03:58.483385", "module": null, - "name": "On-Site Meeting-status", + "name": "Contact-custom_column_break_hpz5b", "no_copy": 0, "non_negative": 0, - "options": "Unscheduled\nScheduled\nCompleted\nCancelled", + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Address", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_installationservice_address", + "fieldtype": "Check", + "hidden": 1, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "custom_column_break_jw2ty", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Installation/Service Address", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-03-04 20:12:00.846188", + "module": null, + "name": "Address-custom_installationservice_address", + "no_copy": 0, + "non_negative": 0, + "options": null, "permlevel": 0, "placeholder": null, "precision": "", @@ -5642,6 +2906,63 @@ "unique": 0, "width": null }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Designation", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "skills", + "fieldtype": "Table", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "required_skills_section", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Skills", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-13 10:13:26.475468", + "module": null, + "name": "Designation-skills", + "no_copy": 0, + "non_negative": 0, + "options": "Designation Skill", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -5699,63 +3020,6 @@ "unique": 0, "width": null }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Maintenance Visit", - "fetch_from": "customer_address.address_title", - "fetch_if_empty": 0, - "fieldname": "custom_service_address", - "fieldtype": "Link", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "customer_name", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Service Address", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-02-13 17:03:23.691597", - "module": null, - "name": "Maintenance Visit-custom_service_address", - "no_copy": 0, - "non_negative": 0, - "options": "Address", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -5825,67 +3089,10 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Service Appointment", - "fetch_from": null, + "dt": "Maintenance Visit", + "fetch_from": "customer_address.address_title", "fetch_if_empty": 0, - "fieldname": "custom_sms_optin", - "fieldtype": "Check", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "custom_phone_number", - "is_system_generated": 0, - "is_virtual": 0, - "label": "SMS Opt-In", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-09-02 10:21:59.145925", - "module": null, - "name": "Service Appointment-custom_sms_optin", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "On-Site Meeting", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "completed_by", + "fieldname": "custom_service_address", "fieldtype": "Link", "hidden": 0, "hide_border": 0, @@ -5897,19 +3104,19 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "status", - "is_system_generated": 1, + "insert_after": "customer_name", + "is_system_generated": 0, "is_virtual": 0, - "label": "Completed By", + "label": "Service Address", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-11-21 08:47:51.316999", + "modified": "2025-02-13 17:03:23.691597", "module": null, - "name": "On-Site Meeting-completed_by", + "name": "Maintenance Visit-custom_service_address", "no_copy": 0, "non_negative": 0, - "options": "Employee", + "options": "Address", "permlevel": 0, "placeholder": null, "precision": "", @@ -5927,63 +3134,6 @@ "unique": 0, "width": null }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Lead", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_customer_name", - "fieldtype": "Data", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "last_name", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Customer Name", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2026-01-07 04:41:50.654606", - "module": null, - "name": "Lead-custom_customer_name", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 1, - "unique": 0, - "width": null - }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -6041,6 +3191,63 @@ "unique": 0, "width": null }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": "1", + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Terms and Conditions", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "hr", + "fieldtype": "Check", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "buying", + "is_system_generated": 1, + "is_virtual": 0, + "label": "HR", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-13 10:13:26.523444", + "module": null, + "name": "Terms and Conditions-hr", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -6098,120 +3305,6 @@ "unique": 0, "width": null }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Service Appointment", - "fetch_from": "contact.email_id", - "fetch_if_empty": 1, - "fieldname": "custom_email_address", - "fieldtype": "Data", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 1, - "in_standard_filter": 0, - "insert_after": "custom_sms_optin", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Email Address", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-06 16:50:41.658096", - "module": null, - "name": "Service Appointment-custom_email_address", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 1, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Contact", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_column_break_3pehb", - "fieldtype": "Column Break", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "middle_name", - "is_system_generated": 0, - "is_virtual": 0, - "label": "", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-14 18:03:58.603921", - "module": null, - "name": "Contact-custom_column_break_3pehb", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -6334,15 +3427,15 @@ "collapsible_depends_on": null, "columns": 0, "default": null, - "depends_on": "eval:doc.project_template == \"SNW Install\"", - "description": "The number of days the warranty is valid for.", + "depends_on": null, + "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Project", + "dt": "Lead", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_warranty_duration_days", - "fieldtype": "Int", + "fieldname": "custom_customer_name", + "fieldtype": "Data", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -6353,18 +3446,18 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "status", + "insert_after": "last_name", "is_system_generated": 0, "is_virtual": 0, - "label": "Warranty Duration (Days)", + "label": "Customer Name", "length": 0, "link_filters": null, - "mandatory_depends_on": "eval:doc.project_template == \"SNW Install\"", - "modified": "2025-08-26 09:24:10.707198", + "mandatory_depends_on": null, + "modified": "2026-01-07 04:41:50.654606", "module": null, - "name": "Project-custom_warranty_duration_days", + "name": "Lead-custom_customer_name", "no_copy": 0, - "non_negative": 1, + "non_negative": 0, "options": null, "permlevel": 0, "placeholder": null, @@ -6375,7 +3468,121 @@ "read_only": 0, "read_only_depends_on": null, "report_hide": 0, - "reqd": 1, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 1, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Contact", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_column_break_3pehb", + "fieldtype": "Column Break", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "middle_name", + "is_system_generated": 0, + "is_virtual": 0, + "label": "", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-14 18:03:58.603921", + "module": null, + "name": "Contact-custom_column_break_3pehb", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Quotation", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_column_break_dza9b", + "fieldtype": "Column Break", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "requires_half_payment", + "is_system_generated": 0, + "is_virtual": 0, + "label": "", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-04-17 11:17:08.532471", + "module": null, + "name": "Quotation-custom_column_break_dza9b", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, "search_index": 0, "show_dashboard": 0, "sort_options": 0, @@ -6509,11 +3716,11 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Item", + "dt": "Department", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_markup_percentage", - "fieldtype": "Percent", + "fieldname": "section_break_4", + "fieldtype": "Section Break", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -6524,16 +3731,16 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "stock_uom", - "is_system_generated": 0, + "insert_after": "disabled", + "is_system_generated": 1, "is_virtual": 0, - "label": "Markup Percentage", + "label": null, "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2024-09-27 07:25:10.974212", + "modified": "2025-01-13 10:13:26.449181", "module": null, - "name": "Item-custom_markup_percentage", + "name": "Department-section_break_4", "no_copy": 0, "non_negative": 0, "options": null, @@ -6566,12 +3773,12 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Customer", + "dt": "Item", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_appointment_date", - "fieldtype": "Date", - "hidden": 1, + "fieldname": "custom_markup_percentage", + "fieldtype": "Percent", + "hidden": 0, "hide_border": 0, "hide_days": 0, "hide_seconds": 0, @@ -6581,16 +3788,16 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "customer_group", + "insert_after": "stock_uom", "is_system_generated": 0, "is_virtual": 0, - "label": "Appointment Date", + "label": "Markup Percentage", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2024-10-21 04:06:47.935309", + "modified": "2024-09-27 07:25:10.974212", "module": null, - "name": "Customer-custom_appointment_date", + "name": "Item-custom_markup_percentage", "no_copy": 0, "non_negative": 0, "options": null, @@ -6668,6 +3875,120 @@ "unique": 0, "width": null }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": "eval:doc.project_template == \"SNW Install\"", + "description": "The number of days the warranty is valid for.", + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Project", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_warranty_duration_days", + "fieldtype": "Int", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "status", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Warranty Duration (Days)", + "length": 0, + "link_filters": null, + "mandatory_depends_on": "eval:doc.project_template == \"SNW Install\"", + "modified": "2025-08-26 09:24:10.707198", + "module": null, + "name": "Project-custom_warranty_duration_days", + "no_copy": 0, + "non_negative": 1, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Quotation", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_response", + "fieldtype": "Select", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "custom_column_break_dza9b", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Response", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-04-17 11:17:08.732534", + "module": null, + "name": "Quotation-custom_response", + "no_copy": 0, + "non_negative": 0, + "options": "\nAccepted\nRejected\nRequested call", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 1, + "unique": 0, + "width": null + }, { "allow_in_quick_entry": 1, "allow_on_submit": 0, @@ -6725,120 +4046,6 @@ "unique": 0, "width": null }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Service Appointment", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_column_break_dsqvk", - "fieldtype": "Column Break", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "custom_email_address", - "is_system_generated": 0, - "is_virtual": 0, - "label": "", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-06 16:50:41.381550", - "module": null, - "name": "Service Appointment-custom_column_break_dsqvk", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": "eval:doc.status == \"Completed\";\neval:doc.project_template == \"SNW Install\"", - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Project", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_warranty_expiration_date", - "fieldtype": "Date", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "custom_warranty_duration_days", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Warranty Expiration Date", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-08-26 18:07:02.087534", - "module": null, - "name": "Project-custom_warranty_expiration_date", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": "eval:doc.status != \"Completed\";", - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -6953,6 +4160,63 @@ "unique": 0, "width": null }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Department", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "payroll_cost_center", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "section_break_4", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Payroll Cost Center", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-13 10:13:26.451603", + "module": null, + "name": "Department-payroll_cost_center", + "no_copy": 0, + "non_negative": 0, + "options": "Cost Center", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -7010,6 +4274,120 @@ "unique": 0, "width": null }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": "0", + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Address", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_is_compnay_address", + "fieldtype": "Check", + "hidden": 1, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "is_primary_address", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Is company address-hidden", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-12-10 04:16:38.338226", + "module": null, + "name": "Address-custom_is_compnay_address", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": "eval:doc.status == \"Completed\";\neval:doc.project_template == \"SNW Install\"", + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Project", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_warranty_expiration_date", + "fieldtype": "Date", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "custom_warranty_duration_days", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Warranty Expiration Date", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-08-26 18:07:02.087534", + "module": null, + "name": "Project-custom_warranty_expiration_date", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": "eval:doc.status != \"Completed\";", + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -7074,17 +4452,17 @@ "collapsible": 0, "collapsible_depends_on": null, "columns": 0, - "default": "0", + "default": null, "depends_on": null, "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Address", + "dt": "Contact", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_is_compnay_address", - "fieldtype": "Check", - "hidden": 1, + "fieldname": "customer_type", + "fieldtype": "Select", + "hidden": 0, "hide_border": 0, "hide_days": 0, "hide_seconds": 0, @@ -7094,16 +4472,73 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "is_primary_address", - "is_system_generated": 0, + "insert_after": "email", + "is_system_generated": 1, "is_virtual": 0, - "label": "Is company address-hidden", + "label": "Customer Type", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2024-12-10 04:16:38.338226", + "modified": "2026-01-13 08:37:09.588836", "module": null, - "name": "Address-custom_is_compnay_address", + "name": "Contact-customer_type", + "no_copy": 0, + "non_negative": 0, + "options": "Customer\nLead", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Department", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "column_break_9", + "fieldtype": "Column Break", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "payroll_cost_center", + "is_system_generated": 1, + "is_virtual": 0, + "label": null, + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-13 10:13:26.454100", + "module": null, + "name": "Department-column_break_9", "no_copy": 0, "non_negative": 0, "options": null, @@ -7124,6 +4559,348 @@ "unique": 0, "width": null }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Lead", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "customer_type", + "fieldtype": "Select", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "lead_name", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Customer Type", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-12-13 04:03:02.507746", + "module": null, + "name": "Lead-customer_type", + "no_copy": 0, + "non_negative": 0, + "options": "Individual\nCompany\nPartnership", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Calendar View", + "fetch_from": "", + "fetch_if_empty": 0, + "fieldname": "custom_cost", + "fieldtype": "Select", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "all_day", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Cost", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-07-08 04:24:58.780228", + "module": null, + "name": "Calendar View-custom_cost", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 1, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Appointment", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_company", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "status", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Internal Company", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-15 09:28:41.432600", + "module": null, + "name": "Appointment-custom_company", + "no_copy": 0, + "non_negative": 0, + "options": "Company", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Address", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_column_break_ky1zo", + "fieldtype": "Column Break", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "custom_is_compnay_address", + "is_system_generated": 0, + "is_virtual": 0, + "label": "", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-14 09:56:58.070846", + "module": null, + "name": "Address-custom_column_break_ky1zo", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": "eval:doc.status == \"Completed\";\neval:doc.project_template == \"SNW Install\"", + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Project", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_warranty_information", + "fieldtype": "Small Text", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "custom_warranty_expiration_date", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Warranty Information", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-08-26 10:01:42.692240", + "module": null, + "name": "Project-custom_warranty_information", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 1, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 1, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": "Unscheduled", + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "On-Site Meeting", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "status", + "fieldtype": "Select", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "start_time", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Status", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-11-21 08:47:51.213693", + "module": null, + "name": "On-Site Meeting-status", + "no_copy": 0, + "non_negative": 0, + "options": "Unscheduled\nScheduled\nCompleted\nCancelled", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -7181,120 +4958,6 @@ "unique": 0, "width": null }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": "eval:doc.status == \"Completed\";\neval:doc.project_template == \"SNW Install\"", - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Project", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_warranty_information", - "fieldtype": "Small Text", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "custom_warranty_expiration_date", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Warranty Information", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-08-26 10:01:42.692240", - "module": null, - "name": "Project-custom_warranty_information", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 1, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 1, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Contact", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "customer_type", - "fieldtype": "Select", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "email", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Customer Type", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2026-01-13 08:37:09.588836", - "module": null, - "name": "Contact-customer_type", - "no_copy": 0, - "non_negative": 0, - "options": "Customer\nLead", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -7352,63 +5015,6 @@ "unique": 0, "width": null }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Calendar View", - "fetch_from": "", - "fetch_if_empty": 0, - "fieldname": "custom_cost", - "fieldtype": "Select", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 1, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "all_day", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Cost", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-07-08 04:24:58.780228", - "module": null, - "name": "Calendar View-custom_cost", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 1, - "unique": 0, - "width": null - }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -7523,120 +5129,6 @@ "unique": 0, "width": null }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Address", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_column_break_ky1zo", - "fieldtype": "Column Break", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "custom_is_compnay_address", - "is_system_generated": 0, - "is_virtual": 0, - "label": "", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-14 09:56:58.070846", - "module": null, - "name": "Address-custom_column_break_ky1zo", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Appointment", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_company", - "fieldtype": "Link", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "status", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Internal Company", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-15 09:28:41.432600", - "module": null, - "name": "Appointment-custom_company", - "no_copy": 0, - "non_negative": 0, - "options": "Company", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -7751,6 +5243,291 @@ "unique": 0, "width": null }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": "Days for which Holidays are blocked for this department.", + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Department", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "leave_block_list", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "column_break_9", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Leave Block List", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-13 10:13:26.456536", + "module": null, + "name": "Department-leave_block_list", + "no_copy": 0, + "non_negative": 0, + "options": "Leave Block List", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Timesheet", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "salary_slip", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "column_break_3", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Salary Slip", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-13 10:13:26.520522", + "module": null, + "name": "Timesheet-salary_slip", + "no_copy": 1, + "non_negative": 0, + "options": "Salary Slip", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 1, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 1, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 1, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": "Not Started", + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Address", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_estimate_sent_status", + "fieldtype": "Select", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "custom_column_break_ky1zo", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Estimate Sent Status", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-11-07 10:12:52.379735", + "module": null, + "name": "Address-custom_estimate_sent_status", + "no_copy": 0, + "non_negative": 0, + "options": "Not Started\nIn Progress\nCompleted", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 1, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "On-Site Meeting", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "completed_by", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "status", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Completed By", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-11-21 08:47:51.316999", + "module": null, + "name": "On-Site Meeting-completed_by", + "no_copy": 0, + "non_negative": 0, + "options": "Employee", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Customer", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_appointment_date", + "fieldtype": "Date", + "hidden": 1, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "customer_group", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Appointment Date", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-10-21 04:06:47.935309", + "module": null, + "name": "Customer-custom_appointment_date", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -7865,63 +5642,6 @@ "unique": 0, "width": null }, - { - "allow_in_quick_entry": 1, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": "Not Started", - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Address", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_estimate_sent_status", - "fieldtype": "Select", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "custom_column_break_ky1zo", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Estimate Sent Status", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-11-07 10:12:52.379735", - "module": null, - "name": "Address-custom_estimate_sent_status", - "no_copy": 0, - "non_negative": 0, - "options": "Not Started\nIn Progress\nCompleted", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 1, - "unique": 0, - "width": null - }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -7988,14 +5708,14 @@ "columns": 0, "default": null, "depends_on": null, - "description": null, + "description": "The first Approver in the list will be set as the default Approver.", "docstatus": 0, "doctype": "Custom Field", - "dt": "Service Appointment", + "dt": "Department", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_internal_company", - "fieldtype": "Link", + "fieldname": "approvers", + "fieldtype": "Section Break", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -8003,22 +5723,79 @@ "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_global_search": 0, - "in_list_view": 1, + "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "status", - "is_system_generated": 0, + "insert_after": "leave_block_list", + "is_system_generated": 1, "is_virtual": 0, - "label": "Internal Company", + "label": "Approvers", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-01-06 16:53:41.538535", + "modified": "2025-01-13 10:13:26.459239", "module": null, - "name": "Service Appointment-custom_internal_company", + "name": "Department-approvers", "no_copy": 0, "non_negative": 0, - "options": "Company", + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Lead", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "quotations", + "fieldtype": "Table", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "companies", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Quotations", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2026-01-13 08:37:09.177390", + "module": null, + "name": "Lead-quotations", + "no_copy": 0, + "non_negative": 0, + "options": "Lead Quotation Link", "permlevel": 0, "placeholder": null, "precision": "", @@ -8093,6 +5870,177 @@ "unique": 0, "width": null }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Service Appointment", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_sms_optin", + "fieldtype": "Check", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "custom_phone_number", + "is_system_generated": 0, + "is_virtual": 0, + "label": "SMS Opt-In", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-09-02 10:21:59.145925", + "module": null, + "name": "Service Appointment-custom_sms_optin", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Department", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "shift_request_approver", + "fieldtype": "Table", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "approvers", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Shift Request Approver", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-13 10:13:26.461983", + "module": null, + "name": "Department-shift_request_approver", + "no_copy": 0, + "non_negative": 0, + "options": "Department Approver", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Lead", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "onsite_meetings", + "fieldtype": "Table", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "quotations", + "is_system_generated": 1, + "is_virtual": 0, + "label": "On-Site Meetings", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2026-01-13 08:37:09.135185", + "module": null, + "name": "Lead-onsite_meetings", + "no_copy": 0, + "non_negative": 0, + "options": "Lead On-Site Meeting Link", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -8150,120 +6098,6 @@ "unique": 0, "width": null }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Contact", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_column_break_nfqbi", - "fieldtype": "Column Break", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "email_ids", - "is_system_generated": 0, - "is_virtual": 0, - "label": "", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-12-27 15:15:17.985562", - "module": null, - "name": "Contact-custom_column_break_nfqbi", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Service Appointment", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_section_break_gndxh", - "fieldtype": "Section Break", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "custom_internal_company", - "is_system_generated": 0, - "is_virtual": 0, - "label": "", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-06 16:50:41.747787", - "module": null, - "name": "Service Appointment-custom_section_break_gndxh", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -8321,6 +6155,120 @@ "unique": 0, "width": null }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Service Appointment", + "fetch_from": "contact.email_id", + "fetch_if_empty": 1, + "fieldname": "custom_email_address", + "fieldtype": "Data", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 1, + "in_standard_filter": 0, + "insert_after": "custom_sms_optin", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Email Address", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-06 16:50:41.658096", + "module": null, + "name": "Service Appointment-custom_email_address", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 1, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Department", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "leave_approvers", + "fieldtype": "Table", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "shift_request_approver", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Leave Approver", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-13 10:13:26.464648", + "module": null, + "name": "Department-leave_approvers", + "no_copy": 0, + "non_negative": 0, + "options": "Department Approver", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -8393,8 +6341,8 @@ "dt": "Service Appointment", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "auto_repeat", - "fieldtype": "Link", + "fieldname": "custom_column_break_dsqvk", + "fieldtype": "Column Break", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -8405,244 +6353,16 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "custom_assigned_to", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Auto Repeat", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-07 12:01:01.971054", - "module": null, - "name": "Service Appointment-auto_repeat", - "no_copy": 1, - "non_negative": 0, - "options": "Auto Repeat", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 1, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 1, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Quotation", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "customer_type", - "fieldtype": "Select", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "customer_name", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Customer Type", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2026-01-15 12:29:56.949985", - "module": null, - "name": "Quotation-customer_type", - "no_copy": 0, - "non_negative": 0, - "options": "Customer\nLead", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Quotation", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_pricing_rule_markup", - "fieldtype": "Link", - "hidden": 1, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "valid_till", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Pricing Rule- Markup", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-09-20 13:05:36.506612", - "module": null, - "name": "Quotation-custom_pricing_rule_markup", - "no_copy": 0, - "non_negative": 0, - "options": "Pricing Rule", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Sales Order", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_department_type", - "fieldtype": "Select", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "delivery_date", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Department Type", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-10-25 12:36:40.959573", - "module": null, - "name": "Sales Order-custom_department_type", - "no_copy": 0, - "non_negative": 0, - "options": "\nFencing Install\nWarranty\nSprinkler Service \nLandscape Installation\nLawn Maintenance\n\n", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 1, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Address", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_section_break_fvgdt", - "fieldtype": "Section Break", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "custom_payment_received_status", + "insert_after": "custom_email_address", "is_system_generated": 0, "is_virtual": 0, "label": "", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2024-12-06 12:51:45.744682", + "modified": "2025-01-06 16:50:41.381550", "module": null, - "name": "Address-custom_section_break_fvgdt", + "name": "Service Appointment-custom_column_break_dsqvk", "no_copy": 0, "non_negative": 0, "options": null, @@ -8664,45 +6384,45 @@ "width": null }, { - "allow_in_quick_entry": 1, + "allow_in_quick_entry": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, "collapsible_depends_on": null, "columns": 0, - "default": "Kris Sims", + "default": null, "depends_on": null, "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Service Appointment", + "dt": "Department", "fetch_from": null, - "fetch_if_empty": 1, - "fieldname": "custom_assigned_to", - "fieldtype": "Link", + "fetch_if_empty": 0, + "fieldname": "expense_approvers", + "fieldtype": "Table", "hidden": 0, "hide_border": 0, "hide_days": 0, "hide_seconds": 0, "ignore_user_permissions": 0, "ignore_xss_filter": 0, - "in_global_search": 1, - "in_list_view": 1, - "in_preview": 1, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, "in_standard_filter": 0, - "insert_after": "service_details", - "is_system_generated": 0, + "insert_after": "leave_approvers", + "is_system_generated": 1, "is_virtual": 0, - "label": "Assigned to", + "label": "Expense Approver", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-01-06 16:56:08.644464", + "modified": "2025-01-13 10:13:26.467296", "module": null, - "name": "Service Appointment-custom_assigned_to", + "name": "Department-expense_approvers", "no_copy": 0, "non_negative": 0, - "options": "Sales Person", + "options": "Department Approver", "permlevel": 0, "placeholder": null, "precision": "", @@ -8792,8 +6512,8 @@ "dt": "Address", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "tax_category", - "fieldtype": "Link", + "fieldname": "custom_section_break_fvgdt", + "fieldtype": "Section Break", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -8804,19 +6524,19 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "fax", + "insert_after": "custom_payment_received_status", "is_system_generated": 0, "is_virtual": 0, - "label": "Tax Category", + "label": "", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2018-12-28 22:29:21.828090", + "modified": "2024-12-06 12:51:45.744682", "module": null, - "name": "Address-tax_category", + "name": "Address-custom_section_break_fvgdt", "no_copy": 0, "non_negative": 0, - "options": "Tax Category", + "options": null, "permlevel": 0, "placeholder": null, "precision": "", @@ -8849,9 +6569,9 @@ "dt": "Quotation", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_current_status", + "fieldname": "customer_type", "fieldtype": "Select", - "hidden": 1, + "hidden": 0, "hide_border": 0, "hide_days": 0, "hide_seconds": 0, @@ -8861,19 +6581,19 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "custom_pricing_rule_markup", - "is_system_generated": 0, + "insert_after": "customer_name", + "is_system_generated": 1, "is_virtual": 0, - "label": "Status", + "label": "Customer Type", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2024-10-25 10:43:13.969581", + "modified": "2026-01-15 12:29:56.949985", "module": null, - "name": "Quotation-custom_current_status", + "name": "Quotation-customer_type", "no_copy": 0, "non_negative": 0, - "options": "Draft\nSubmitted\nEstimate Accepted\nLost\nWon", + "options": "Customer\nLead", "permlevel": 0, "placeholder": null, "precision": "", @@ -8887,63 +6607,6 @@ "search_index": 0, "show_dashboard": 0, "sort_options": 0, - "translatable": 1, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Contact", - "fetch_from": "address.address_title", - "fetch_if_empty": 1, - "fieldname": "custom_service_address", - "fieldtype": "Link", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 1, - "in_list_view": 1, - "in_preview": 0, - "in_standard_filter": 1, - "insert_after": "is_billing_contact", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Service/Installation Address", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-14 17:40:19.828715", - "module": null, - "name": "Contact-custom_service_address", - "no_copy": 0, - "non_negative": 0, - "options": "Address", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": "100", - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, "translatable": 0, "unique": 0, "width": null @@ -9007,7 +6670,7 @@ }, { "allow_in_quick_entry": 0, - "allow_on_submit": 1, + "allow_on_submit": 0, "bold": 0, "collapsible": 0, "collapsible_depends_on": null, @@ -9017,11 +6680,11 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Sales Order", + "dt": "Service Appointment", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_project_complete", - "fieldtype": "Check", + "fieldname": "custom_internal_company", + "fieldtype": "Link", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -9029,29 +6692,29 @@ "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_global_search": 0, - "in_list_view": 0, + "in_list_view": 1, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "custom_department_type", + "insert_after": "status", "is_system_generated": 0, "is_virtual": 0, - "label": "Project Complete", + "label": "Internal Company", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-04-18 10:32:51.404815", + "modified": "2025-01-06 16:53:41.538535", "module": null, - "name": "Sales Order-custom_project_complete", + "name": "Service Appointment-custom_internal_company", "no_copy": 0, "non_negative": 0, - "options": null, + "options": "Company", "permlevel": 0, "placeholder": null, "precision": "", "print_hide": 0, "print_hide_if_no_value": 0, "print_width": null, - "read_only": 1, + "read_only": 0, "read_only_depends_on": null, "report_hide": 0, "reqd": 0, @@ -9119,6 +6782,177 @@ "unique": 0, "width": null }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Project", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "expected_start_time", + "fieldtype": "Time", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "expected_start_date", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Expected Start Time", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2026-01-19 19:14:45.777127", + "module": null, + "name": "Project-expected_start_time", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Contact", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_column_break_nfqbi", + "fieldtype": "Column Break", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "email_ids", + "is_system_generated": 0, + "is_virtual": 0, + "label": "", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-12-27 15:15:17.985562", + "module": null, + "name": "Contact-custom_column_break_nfqbi", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Sales Order", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_department_type", + "fieldtype": "Select", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "delivery_date", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Department Type", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-10-25 12:36:40.959573", + "module": null, + "name": "Sales Order-custom_department_type", + "no_copy": 0, + "non_negative": 0, + "options": "\nFencing Install\nWarranty\nSprinkler Service \nLandscape Installation\nLawn Maintenance\n\n", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 1, + "unique": 0, + "width": null + }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -9235,7 +7069,7 @@ }, { "allow_in_quick_entry": 0, - "allow_on_submit": 1, + "allow_on_submit": 0, "bold": 0, "collapsible": 0, "collapsible_depends_on": null, @@ -9245,11 +7079,11 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Quotation", + "dt": "Employee", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_sent", - "fieldtype": "Check", + "fieldname": "custom_crew", + "fieldtype": "Select", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -9260,19 +7094,19 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "custom_current_status", + "insert_after": "status", "is_system_generated": 0, "is_virtual": 0, - "label": "Sent", + "label": "Crew", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-04-18 11:26:54.099834", + "modified": "2025-04-17 11:42:40.168686", "module": null, - "name": "Quotation-custom_sent", + "name": "Employee-custom_crew", "no_copy": 0, "non_negative": 0, - "options": null, + "options": "\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15", "permlevel": 0, "placeholder": null, "precision": "", @@ -9286,7 +7120,7 @@ "search_index": 0, "show_dashboard": 0, "sort_options": 0, - "translatable": 0, + "translatable": 1, "unique": 0, "width": null }, @@ -9349,21 +7183,21 @@ }, { "allow_in_quick_entry": 0, - "allow_on_submit": 0, + "allow_on_submit": 1, "bold": 0, "collapsible": 0, "collapsible_depends_on": null, "columns": 0, "default": null, - "depends_on": "eval:doc.status == \"Completed\";", + "depends_on": null, "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Project", + "dt": "Sales Order", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_completion_date", - "fieldtype": "Date", + "fieldname": "custom_project_complete", + "fieldtype": "Check", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -9374,16 +7208,16 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "expected_end_date", + "insert_after": "custom_department_type", "is_system_generated": 0, "is_virtual": 0, - "label": "Completion Date", + "label": "Project Complete", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-08-26 10:24:42.361467", + "modified": "2025-04-18 10:32:51.404815", "module": null, - "name": "Project-custom_completion_date", + "name": "Sales Order-custom_project_complete", "no_copy": 0, "non_negative": 0, "options": null, @@ -9416,11 +7250,11 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Employee", + "dt": "Project", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_crew", - "fieldtype": "Select", + "fieldname": "expected_end_time", + "fieldtype": "Time", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -9431,73 +7265,16 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "status", - "is_system_generated": 0, + "insert_after": "expected_end_date", + "is_system_generated": 1, "is_virtual": 0, - "label": "Crew", + "label": "Expected End Time", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-04-17 11:42:40.168686", + "modified": "2026-01-19 19:14:45.810187", "module": null, - "name": "Employee-custom_crew", - "no_copy": 0, - "non_negative": 0, - "options": "\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 1, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Quotation", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_followup_needed", - "fieldtype": "Check", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "custom_sent", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Follow-up Needed", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-04-18 05:28:40.683046", - "module": null, - "name": "Quotation-custom_followup_needed", + "name": "Project-expected_end_time", "no_copy": 0, "non_negative": 0, "options": null, @@ -9530,11 +7307,11 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Project", + "dt": "Contact", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_foreman", - "fieldtype": "Link", + "fieldname": "is_billing_contact", + "fieldtype": "Check", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -9545,76 +7322,19 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "priority", + "insert_after": "is_primary_contact", "is_system_generated": 0, "is_virtual": 0, - "label": "Foreman", + "label": "Is Billing Contact", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-06-17 03:36:11.223101", + "modified": "2019-12-02 11:00:03.432994", "module": null, - "name": "Project-custom_foreman", + "name": "Contact-is_billing_contact", "no_copy": 0, "non_negative": 0, - "options": "Employee", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 1, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Address", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_linked_city", - "fieldtype": "Link", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "address_line2", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Linked City", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-12-05 11:54:10.862148", - "module": null, - "name": "Address-custom_linked_city", - "no_copy": 0, - "non_negative": 0, - "options": "City", + "options": null, "permlevel": 0, "placeholder": null, "precision": "", @@ -9644,11 +7364,68 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Contact", + "dt": "Quotation", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_column_break_sn9hu", - "fieldtype": "Column Break", + "fieldname": "custom_pricing_rule_markup", + "fieldtype": "Link", + "hidden": 1, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "valid_till", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Pricing Rule- Markup", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-09-20 13:05:36.506612", + "module": null, + "name": "Quotation-custom_pricing_rule_markup", + "no_copy": 0, + "non_negative": 0, + "options": "Pricing Rule", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": "0", + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Project", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "is_scheduled", + "fieldtype": "Check", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -9659,16 +7436,16 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "more_info", - "is_system_generated": 0, + "insert_after": "expected_end_time", + "is_system_generated": 1, "is_virtual": 0, - "label": "", + "label": "Is Scheduled", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2024-12-27 15:15:17.875587", + "modified": "2026-01-26 01:52:42.896307", "module": null, - "name": "Contact-custom_column_break_sn9hu", + "name": "Project-is_scheduled", "no_copy": 0, "non_negative": 0, "options": null, @@ -9746,63 +7523,6 @@ "unique": 0, "width": null }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Appointment", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "auto_repeat", - "fieldtype": "Link", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "calendar_event", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Auto Repeat", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-15 10:45:54.748690", - "module": null, - "name": "Appointment-auto_repeat", - "no_copy": 1, - "non_negative": 0, - "options": "Auto Repeat", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 1, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 1, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -9872,11 +7592,125 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Project", + "dt": "Contact", + "fetch_from": "address.address_title", + "fetch_if_empty": 1, + "fieldname": "custom_service_address", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 1, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 1, + "insert_after": "is_billing_contact", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Service/Installation Address", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-14 17:40:19.828715", + "module": null, + "name": "Contact-custom_service_address", + "no_copy": 0, + "non_negative": 0, + "options": "Address", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": "100", + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Service Appointment", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_hidden_fields", - "fieldtype": "Heading", + "fieldname": "custom_section_break_gndxh", + "fieldtype": "Section Break", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "custom_internal_company", + "is_system_generated": 0, + "is_virtual": 0, + "label": "", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-06 16:50:41.747787", + "module": null, + "name": "Service Appointment-custom_section_break_gndxh", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Quotation", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_current_status", + "fieldtype": "Select", "hidden": 1, "hide_border": 0, "hide_days": 0, @@ -9887,16 +7721,244 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "custom_foreman", + "insert_after": "custom_pricing_rule_markup", "is_system_generated": 0, "is_virtual": 0, - "label": "Hidden Fields", + "label": "Status", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-06-17 03:37:21.354610", + "modified": "2024-10-25 10:43:13.969581", "module": null, - "name": "Project-custom_hidden_fields", + "name": "Quotation-custom_current_status", + "no_copy": 0, + "non_negative": 0, + "options": "Draft\nSubmitted\nEstimate Accepted\nLost\nWon", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 1, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": "Not Ready", + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Project", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "invoice_status", + "fieldtype": "Select", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "is_scheduled", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Invoice Status", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2026-01-26 01:52:42.399715", + "module": null, + "name": "Project-invoice_status", + "no_copy": 0, + "non_negative": 0, + "options": "Not Ready\nReady to Invoice\nInvoice Created\nInvoice Sent", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": "eval:doc.status == \"Completed\";", + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Project", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_completion_date", + "fieldtype": "Date", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "invoice_status", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Completion Date", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-08-26 10:24:42.361467", + "module": null, + "name": "Project-custom_completion_date", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 1, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 1, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Address", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_linked_city", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "address_line2", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Linked City", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-12-05 11:54:10.862148", + "module": null, + "name": "Address-custom_linked_city", + "no_copy": 0, + "non_negative": 0, + "options": "City", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Quotation", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_sent", + "fieldtype": "Check", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "custom_current_status", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Sent", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-04-18 11:26:54.099834", + "module": null, + "name": "Quotation-custom_sent", "no_copy": 0, "non_negative": 0, "options": null, @@ -9934,7 +7996,7 @@ "fetch_if_empty": 0, "fieldname": "is_your_company_address", "fieldtype": "Check", - "hidden": 0, + "hidden": 1, "hide_border": 0, "hide_days": 0, "hide_seconds": 0, @@ -9944,7 +8006,7 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "linked_with", + "insert_after": "custom_subdivision", "is_system_generated": 0, "is_virtual": 0, "label": "Is Your Company Address", @@ -9974,63 +8036,6 @@ "unique": 0, "width": null }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Customer", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_previous_year_price", - "fieldtype": "Currency", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "default_price_list", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Previous Year Price", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-10-21 04:06:48.267280", - "module": null, - "name": "Customer-custom_previous_year_price", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -10100,12 +8105,12 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Sales Order", + "dt": "Service Appointment", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_section_break_htf05", - "fieldtype": "Section Break", - "hidden": 1, + "fieldname": "auto_repeat", + "fieldtype": "Link", + "hidden": 0, "hide_border": 0, "hide_days": 0, "hide_seconds": 0, @@ -10115,16 +8120,244 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "amended_from", + "insert_after": "custom_assigned_to", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Auto Repeat", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-07 12:01:01.971054", + "module": null, + "name": "Service Appointment-auto_repeat", + "no_copy": 1, + "non_negative": 0, + "options": "Auto Repeat", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 1, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 1, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Quotation", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_followup_needed", + "fieldtype": "Check", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "custom_sent", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Follow-up Needed", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-04-18 05:28:40.683046", + "module": null, + "name": "Quotation-custom_followup_needed", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Appointment", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "auto_repeat", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "calendar_event", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Auto Repeat", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-15 10:45:54.748690", + "module": null, + "name": "Appointment-auto_repeat", + "no_copy": 1, + "non_negative": 0, + "options": "Auto Repeat", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 1, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 1, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Project", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_foreman", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "priority", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Foreman", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-06-17 03:36:11.223101", + "module": null, + "name": "Project-custom_foreman", + "no_copy": 0, + "non_negative": 0, + "options": "Employee", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Contact", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_column_break_sn9hu", + "fieldtype": "Column Break", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "more_info", "is_system_generated": 0, "is_virtual": 0, "label": "", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2024-11-02 05:36:39.898012", + "modified": "2024-12-27 15:15:17.875587", "module": null, - "name": "Sales Order-custom_section_break_htf05", + "name": "Contact-custom_column_break_sn9hu", "no_copy": 0, "non_negative": 0, "options": null, @@ -10215,10 +8448,10 @@ "docstatus": 0, "doctype": "Custom Field", "dt": "Project", - "fetch_from": "sales_order.dispatch_address_name", + "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_address", - "fieldtype": "Link", + "fieldname": "custom_hidden_fields", + "fieldtype": "Heading", "hidden": 1, "hide_border": 0, "hide_days": 0, @@ -10226,22 +8459,250 @@ "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_global_search": 0, - "in_list_view": 1, + "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "is_active", + "insert_after": "custom_foreman", "is_system_generated": 0, "is_virtual": 0, - "label": "Address", + "label": "Hidden Fields", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-01-24 11:16:06.559672", + "modified": "2025-06-17 03:37:21.354610", "module": null, - "name": "Project-custom_address", + "name": "Project-custom_hidden_fields", "no_copy": 0, "non_negative": 0, - "options": "Address", + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Customer", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_previous_year_price", + "fieldtype": "Currency", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "default_price_list", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Previous Year Price", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-10-21 04:06:48.267280", + "module": null, + "name": "Customer-custom_previous_year_price", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Maintenance Schedule", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "auto_repeat", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "amended_from", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Auto Repeat", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-12-18 13:16:03.969725", + "module": null, + "name": "Maintenance Schedule-auto_repeat", + "no_copy": 1, + "non_negative": 0, + "options": "Auto Repeat", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 1, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 1, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Employee", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "employment_type", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 1, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "department", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Employment Type", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-13 10:13:26.478437", + "module": null, + "name": "Employee-employment_type", + "no_copy": 0, + "non_negative": 0, + "options": "Employment Type", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Sales Order", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_section_break_htf05", + "fieldtype": "Section Break", + "hidden": 1, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "amended_from", + "is_system_generated": 0, + "is_virtual": 0, + "label": "", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-11-02 05:36:39.898012", + "module": null, + "name": "Sales Order-custom_section_break_htf05", + "no_copy": 0, + "non_negative": 0, + "options": null, "permlevel": 0, "placeholder": null, "precision": "", @@ -10432,22 +8893,22 @@ }, { "allow_in_quick_entry": 0, - "allow_on_submit": 0, + "allow_on_submit": 1, "bold": 0, "collapsible": 0, "collapsible_depends_on": null, "columns": 0, "default": null, "depends_on": null, - "description": null, + "description": "The project template to use when creating a project from this quotation.", "docstatus": 0, "doctype": "Custom Field", - "dt": "Project", + "dt": "Quotation", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_section_break_lgkpd", - "fieldtype": "Section Break", - "hidden": 1, + "fieldname": "custom_project_template", + "fieldtype": "Link", + "hidden": 0, "hide_border": 0, "hide_days": 0, "hide_seconds": 0, @@ -10457,19 +8918,19 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "custom_address", - "is_system_generated": 0, + "insert_after": "custom_quotation_template", + "is_system_generated": 1, "is_virtual": 0, - "label": "", + "label": "Project Template", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2024-11-02 06:56:14.687381", + "modified": "2026-01-09 04:08:58.715196", "module": null, - "name": "Project-custom_section_break_lgkpd", + "name": "Quotation-custom_project_template", "no_copy": 0, "non_negative": 0, - "options": null, + "options": "Project Template", "permlevel": 0, "placeholder": null, "precision": "", @@ -10499,11 +8960,11 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Fencing Job Queue", + "dt": "Supplier", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "auto_repeat", - "fieldtype": "Link", + "fieldname": "irs_1099", + "fieldtype": "Check", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -10514,26 +8975,26 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "linked_tasks", + "insert_after": "tax_id", "is_system_generated": 1, "is_virtual": 0, - "label": "Auto Repeat", + "label": "Is IRS 1099 reporting required for supplier?", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2024-12-09 17:16:59.566883", + "modified": "2024-04-03 13:53:07.662611", "module": null, - "name": "Fencing Job Queue-auto_repeat", - "no_copy": 1, + "name": "Supplier-irs_1099", + "no_copy": 0, "non_negative": 0, - "options": "Auto Repeat", + "options": null, "permlevel": 0, "placeholder": null, "precision": "", - "print_hide": 1, + "print_hide": 0, "print_hide_if_no_value": 0, "print_width": null, - "read_only": 1, + "read_only": 0, "read_only_depends_on": null, "report_hide": 0, "reqd": 0, @@ -10658,177 +9119,6 @@ "unique": 0, "width": null }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Project", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_workflow_related_custom_fields__landry", - "fieldtype": "Heading", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "custom_section_break_lgkpd", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Workflow related custom fields - Landry", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-11-02 06:56:14.941205", - "module": null, - "name": "Project-custom_workflow_related_custom_fields__landry", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Maintenance Schedule", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "auto_repeat", - "fieldtype": "Link", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "amended_from", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Auto Repeat", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-12-18 13:16:03.969725", - "module": null, - "name": "Maintenance Schedule-auto_repeat", - "no_copy": 1, - "non_negative": 0, - "options": "Auto Repeat", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 1, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 1, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Quotation", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_workflow_related_custom_fields__landry", - "fieldtype": "Heading", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "custom_section_break_0muxw", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Workflow Related Custom Fields - Landry", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-11-02 05:01:49.582481", - "module": null, - "name": "Quotation-custom_workflow_related_custom_fields__landry", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, { "allow_in_quick_entry": 0, "allow_on_submit": 1, @@ -10886,462 +9176,6 @@ "unique": 0, "width": null }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": "Permit Pending", - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Project", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_permit_status", - "fieldtype": "Select", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 1, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "custom_workflow_related_custom_fields__landry", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Permit Status", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-11-02 06:56:15.183277", - "module": null, - "name": "Project-custom_permit_status", - "no_copy": 0, - "non_negative": 0, - "options": "Not necessary\nPermit Pending\nPermit Obtained\nPermit Issue", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 1, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": "The project template to use when creating a project from this quotation.", - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Quotation", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_project_template", - "fieldtype": "Link", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "custom_quotation_template", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Project Template", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2026-01-09 04:08:58.715196", - "module": null, - "name": "Quotation-custom_project_template", - "no_copy": 0, - "non_negative": 0, - "options": "Project Template", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 1, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Quotation", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "workflow_state", - "fieldtype": "Link", - "hidden": 1, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "custom_workflow_related_custom_fields__landry", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Workflow State", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-10-25 10:56:40.988295", - "module": null, - "name": "Quotation-workflow_state", - "no_copy": 1, - "non_negative": 0, - "options": "Workflow State", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": "Locate incomplete", - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Project", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_utlity_locate_status", - "fieldtype": "Select", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 1, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "custom_permit_status", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Utlity Locate Status", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-11-02 07:07:12.654207", - "module": null, - "name": "Project-custom_utlity_locate_status", - "no_copy": 0, - "non_negative": 0, - "options": "Locate incomplete\nNeed More Information\nLocate Not Necessary\nUtility Locate complete", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 1, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Contact", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "is_billing_contact", - "fieldtype": "Check", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "is_primary_contact", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Is Billing Contact", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2019-12-02 11:00:03.432994", - "module": null, - "name": "Contact-is_billing_contact", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": "Enter why the bid was lost", - "depends_on": "eval:doc.custom_current_status == 'Lost'", - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Quotation", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_follow_up_reason", - "fieldtype": "Text", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "workflow_state", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Follow Up Reason", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-11-02 05:02:32.008967", - "module": null, - "name": "Quotation-custom_follow_up_reason", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 1, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Project", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_crew_scheduling", - "fieldtype": "Table", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "custom_utlity_locate_status", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Crew Scheduling", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-11-04 11:51:00.400929", - "module": null, - "name": "Project-custom_crew_scheduling", - "no_copy": 0, - "non_negative": 0, - "options": "Crew Schedule Detail", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Contact", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_column_break_kmlkz", - "fieldtype": "Column Break", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "sb_00", - "is_system_generated": 0, - "is_virtual": 0, - "label": "", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-12-23 16:27:55.413283", - "module": null, - "name": "Contact-custom_column_break_kmlkz", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -11411,91 +9245,34 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Quotation", - "fetch_from": null, + "dt": "Project", + "fetch_from": "sales_order.dispatch_address_name", "fetch_if_empty": 0, - "fieldname": "custom_initial_deposit_required", - "fieldtype": "Check", - "hidden": 0, + "fieldname": "custom_address", + "fieldtype": "Link", + "hidden": 1, "hide_border": 0, "hide_days": 0, "hide_seconds": 0, "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_global_search": 0, - "in_list_view": 0, + "in_list_view": 1, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "custom_follow_up_reason", + "insert_after": "is_active", "is_system_generated": 0, "is_virtual": 0, - "label": "Initial Deposit Required", + "label": "Address", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2024-11-02 05:27:11.398353", + "modified": "2025-01-24 11:16:06.559672", "module": null, - "name": "Quotation-custom_initial_deposit_required", + "name": "Project-custom_address", "no_copy": 0, "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Address", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_column_break_rrto0", - "fieldtype": "Column Break", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "country", - "is_system_generated": 0, - "is_virtual": 0, - "label": "", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-13 16:23:39.062267", - "module": null, - "name": "Address-custom_column_break_rrto0", - "no_copy": 0, - "non_negative": 0, - "options": null, + "options": "Address", "permlevel": 0, "placeholder": null, "precision": "", @@ -11547,7 +9324,7 @@ "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2026-01-16 04:11:39.444664", + "modified": "2026-01-26 01:52:42.503478", "module": null, "name": "Address-latitude", "no_copy": 0, @@ -11571,7 +9348,7 @@ "width": null }, { - "allow_in_quick_entry": 1, + "allow_in_quick_entry": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -11582,34 +9359,34 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Address", + "dt": "Project", "fetch_from": null, - "fetch_if_empty": 1, - "fieldname": "custom_customer_to_bill", - "fieldtype": "Link", - "hidden": 0, + "fetch_if_empty": 0, + "fieldname": "custom_section_break_lgkpd", + "fieldtype": "Section Break", + "hidden": 1, "hide_border": 0, "hide_days": 0, "hide_seconds": 0, "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_global_search": 0, - "in_list_view": 1, - "in_preview": 1, - "in_standard_filter": 1, - "insert_after": "custom_column_break_rrto0", + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "custom_address", "is_system_generated": 0, "is_virtual": 0, - "label": "Customer to Bill", + "label": "", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2024-12-06 09:22:26.497131", + "modified": "2024-11-02 06:56:14.687381", "module": null, - "name": "Address-custom_customer_to_bill", + "name": "Project-custom_section_break_lgkpd", "no_copy": 0, "non_negative": 0, - "options": "Customer", + "options": null, "permlevel": 0, "placeholder": null, "precision": "", @@ -11661,7 +9438,7 @@ "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2026-01-16 04:11:39.584406", + "modified": "2026-01-26 01:52:42.600227", "module": null, "name": "Address-longitude", "no_copy": 0, @@ -11742,22 +9519,22 @@ "width": null }, { - "allow_in_quick_entry": 1, + "allow_in_quick_entry": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, "collapsible_depends_on": null, "columns": 0, "default": null, - "depends_on": "", + "depends_on": null, "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Address", + "dt": "Project", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_contact_name", - "fieldtype": "Data", + "fieldname": "custom_workflow_related_custom_fields__landry", + "fieldtype": "Heading", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -11768,16 +9545,16 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "custom_customer_to_bill", + "insert_after": "custom_section_break_lgkpd", "is_system_generated": 0, "is_virtual": 0, - "label": "Contact Name", + "label": "Workflow related custom fields - Landry", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-04-24 06:43:30.576103", + "modified": "2024-11-02 06:56:14.941205", "module": null, - "name": "Address-custom_contact_name", + "name": "Project-custom_workflow_related_custom_fields__landry", "no_copy": 0, "non_negative": 0, "options": null, @@ -11794,7 +9571,7 @@ "search_index": 0, "show_dashboard": 0, "sort_options": 0, - "translatable": 1, + "translatable": 0, "unique": 0, "width": null }, @@ -11912,6 +9689,234 @@ "unique": 0, "width": null }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Employee", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "grade", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "branch", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Grade", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-13 10:13:26.483327", + "module": null, + "name": "Employee-grade", + "no_copy": 0, + "non_negative": 0, + "options": "Employee Grade", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": "Permit Pending", + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Project", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_permit_status", + "fieldtype": "Select", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "custom_workflow_related_custom_fields__landry", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Permit Status", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-11-02 06:56:15.183277", + "module": null, + "name": "Project-custom_permit_status", + "no_copy": 0, + "non_negative": 0, + "options": "Not necessary\nPermit Pending\nPermit Obtained\nPermit Issue", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 1, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Contact", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_column_break_kmlkz", + "fieldtype": "Column Break", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "sb_00", + "is_system_generated": 0, + "is_virtual": 0, + "label": "", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-12-23 16:27:55.413283", + "module": null, + "name": "Contact-custom_column_break_kmlkz", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Quotation", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_workflow_related_custom_fields__landry", + "fieldtype": "Heading", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "custom_section_break_0muxw", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Workflow Related Custom Fields - Landry", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-11-02 05:01:49.582481", + "module": null, + "name": "Quotation-custom_workflow_related_custom_fields__landry", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -12026,63 +10031,6 @@ "unique": 0, "width": null }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": "Not Started", - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Address", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "job_status", - "fieldtype": "Select", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "estimate_sent_status", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Job Status", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-11-21 08:47:50.681916", - "module": null, - "name": "Address-job_status", - "no_copy": 0, - "non_negative": 0, - "options": "Not Started\nIn Progress\nCompleted", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -12140,6 +10088,177 @@ "unique": 0, "width": null }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": "Locate incomplete", + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Project", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_utlity_locate_status", + "fieldtype": "Select", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "custom_permit_status", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Utlity Locate Status", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-11-02 07:07:12.654207", + "module": null, + "name": "Project-custom_utlity_locate_status", + "no_copy": 0, + "non_negative": 0, + "options": "Locate incomplete\nNeed More Information\nLocate Not Necessary\nUtility Locate complete", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 1, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Quotation", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "workflow_state", + "fieldtype": "Link", + "hidden": 1, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "custom_workflow_related_custom_fields__landry", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Workflow State", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-10-25 10:56:40.988295", + "module": null, + "name": "Quotation-workflow_state", + "no_copy": 1, + "non_negative": 0, + "options": "Workflow State", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": "Not Started", + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Address", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "job_status", + "fieldtype": "Select", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "estimate_sent_status", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Job Status", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-11-21 08:47:50.681916", + "module": null, + "name": "Address-job_status", + "no_copy": 0, + "non_negative": 0, + "options": "Not Started\nIn Progress\nCompleted", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -12197,6 +10316,234 @@ "unique": 0, "width": null }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Customer", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "tasks", + "fieldtype": "Table", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "projects", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Tasks", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2026-01-19 18:17:40.894547", + "module": null, + "name": "Customer-tasks", + "no_copy": 0, + "non_negative": 0, + "options": "Customer Task Link", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Employee", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "job_applicant", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "employment_details", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Job Applicant", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-13 10:13:26.480900", + "module": null, + "name": "Employee-job_applicant", + "no_copy": 0, + "non_negative": 0, + "options": "Job Applicant", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Project", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_crew_scheduling", + "fieldtype": "Table", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "custom_utlity_locate_status", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Crew Scheduling", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-11-04 11:51:00.400929", + "module": null, + "name": "Project-custom_crew_scheduling", + "no_copy": 0, + "non_negative": 0, + "options": "Crew Schedule Detail", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": "Enter why the bid was lost", + "depends_on": "eval:doc.custom_current_status == 'Lost'", + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Quotation", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_follow_up_reason", + "fieldtype": "Text", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "workflow_state", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Follow Up Reason", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-11-02 05:02:32.008967", + "module": null, + "name": "Quotation-custom_follow_up_reason", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 1, + "unique": 0, + "width": null + }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -12254,6 +10601,519 @@ "unique": 0, "width": null }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Quotation", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_initial_deposit_required", + "fieldtype": "Check", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "custom_follow_up_reason", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Initial Deposit Required", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-11-02 05:27:11.398353", + "module": null, + "name": "Quotation-custom_initial_deposit_required", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Address", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_column_break_rrto0", + "fieldtype": "Column Break", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "payment_received_status", + "is_system_generated": 0, + "is_virtual": 0, + "label": "", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-13 16:23:39.062267", + "module": null, + "name": "Address-custom_column_break_rrto0", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 1, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Address", + "fetch_from": null, + "fetch_if_empty": 1, + "fieldname": "custom_customer_to_bill", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 1, + "in_standard_filter": 1, + "insert_after": "custom_column_break_rrto0", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Customer to Bill", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-12-06 09:22:26.497131", + "module": null, + "name": "Address-custom_customer_to_bill", + "no_copy": 0, + "non_negative": 0, + "options": "Customer", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Address", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "lead_name", + "fieldtype": "Data", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "custom_customer_to_bill", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Lead Name", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-12-16 03:25:37.095066", + "module": null, + "name": "Address-lead_name", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Fencing Job Queue", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "auto_repeat", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "linked_tasks", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Auto Repeat", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-12-09 17:16:59.566883", + "module": null, + "name": "Fencing Job Queue-auto_repeat", + "no_copy": 1, + "non_negative": 0, + "options": "Auto Repeat", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 1, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 1, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Address", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "customer_type", + "fieldtype": "Select", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "lead_name", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Customer Type", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2026-01-13 04:14:36.111823", + "module": null, + "name": "Address-customer_type", + "no_copy": 0, + "non_negative": 0, + "options": "Customer\nLead", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Task", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "total_expense_claim", + "fieldtype": "Currency", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "total_costing_amount", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Total Expense Claim (via Expense Claim)", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-13 10:13:26.518146", + "module": null, + "name": "Task-total_expense_claim", + "no_copy": 0, + "non_negative": 0, + "options": "Company:company:default_currency", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 1, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Address", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "customer_name", + "fieldtype": "Dynamic Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "customer_type", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Customer Name", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2026-01-13 04:14:36.153732", + "module": null, + "name": "Address-customer_name", + "no_copy": 0, + "non_negative": 0, + "options": "customer_type", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Address", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "contacts", + "fieldtype": "Table", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "customer_name", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Contacts", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2026-01-14 11:21:15.878551", + "module": null, + "name": "Address-contacts", + "no_copy": 0, + "non_negative": 0, + "options": "Address Contact Link", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -12326,8 +11186,8 @@ "dt": "Address", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_section_break_aecpx", - "fieldtype": "Section Break", + "fieldname": "companies", + "fieldtype": "Table", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -12338,16 +11198,415 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "disabled", + "insert_after": "contacts", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Companies", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2026-01-13 11:55:04.461069", + "module": null, + "name": "Address-companies", + "no_copy": 0, + "non_negative": 0, + "options": "Address Company Link", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Address", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "quotations", + "fieldtype": "Table", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "companies", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Quotations", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2026-01-13 08:37:09.541169", + "module": null, + "name": "Address-quotations", + "no_copy": 0, + "non_negative": 0, + "options": "Address Quotation Link", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Address", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "onsite_meetings", + "fieldtype": "Table", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "quotations", + "is_system_generated": 1, + "is_virtual": 0, + "label": "On-Site Meetings", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2026-01-13 08:37:09.489089", + "module": null, + "name": "Address-onsite_meetings", + "no_copy": 0, + "non_negative": 0, + "options": "Address On-Site Meeting Link", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Project", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "actual_start_time", + "fieldtype": "Time", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "actual_start_date", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Actual Start Time", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2026-01-19 19:14:45.841411", + "module": null, + "name": "Project-actual_start_time", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Address", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "projects", + "fieldtype": "Table", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "onsite_meetings", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Projects", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2026-01-13 08:37:09.361328", + "module": null, + "name": "Address-projects", + "no_copy": 0, + "non_negative": 0, + "options": "Address Project Link", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Address", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "tasks", + "fieldtype": "Table", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "projects", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Tasks", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2026-01-19 18:17:40.940689", + "module": null, + "name": "Address-tasks", + "no_copy": 0, + "non_negative": 0, + "options": "Address Task Link", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Address", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "sales_orders", + "fieldtype": "Table", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "projects", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Sales Orders", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2026-01-13 08:37:09.438342", + "module": null, + "name": "Address-sales_orders", + "no_copy": 0, + "non_negative": 0, + "options": "Address Sales Order Link", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Contact", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_column_break_ejxjz", + "fieldtype": "Column Break", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "pulled_from_google_contacts", "is_system_generated": 0, "is_virtual": 0, "label": "", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-01-13 16:23:39.204178", + "modified": "2024-12-23 16:27:55.210309", "module": null, - "name": "Address-custom_section_break_aecpx", + "name": "Contact-custom_column_break_ejxjz", "no_copy": 0, "non_negative": 0, "options": null, @@ -12369,22 +11628,22 @@ "width": null }, { - "allow_in_quick_entry": 0, + "allow_in_quick_entry": 1, "allow_on_submit": 0, "bold": 0, "collapsible": 0, "collapsible_depends_on": null, "columns": 0, "default": null, - "depends_on": null, + "depends_on": "", "description": null, "docstatus": 0, "doctype": "Custom Field", "dt": "Address", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "customer_type", - "fieldtype": "Select", + "fieldname": "custom_contact_name", + "fieldtype": "Data", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -12395,73 +11654,16 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "lead_name", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Customer Type", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2026-01-13 04:14:36.111823", - "module": null, - "name": "Address-customer_type", - "no_copy": 0, - "non_negative": 0, - "options": "Customer\nLead", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Address", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_show_irrigation_district", - "fieldtype": "Check", - "hidden": 1, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "column_break0", + "insert_after": "tasks", "is_system_generated": 0, "is_virtual": 0, - "label": "show irrigation district", + "label": "Contact Name", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2024-12-06 05:07:10.675995", + "modified": "2025-04-24 06:43:30.576103", "module": null, - "name": "Address-custom_show_irrigation_district", + "name": "Address-custom_contact_name", "no_copy": 0, "non_negative": 0, "options": null, @@ -12478,7 +11680,7 @@ "search_index": 0, "show_dashboard": 0, "sort_options": 0, - "translatable": 0, + "translatable": 1, "unique": 0, "width": null }, @@ -12494,11 +11696,11 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Address", + "dt": "Project", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "customer_name", - "fieldtype": "Dynamic Link", + "fieldname": "actual_end_time", + "fieldtype": "Time", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -12509,73 +11711,16 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "customer_type", + "insert_after": "actual_end_date", "is_system_generated": 1, "is_virtual": 0, - "label": "Customer Name", + "label": "Actual End Time", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2026-01-13 04:14:36.153732", + "modified": "2026-01-19 19:14:45.872272", "module": null, - "name": "Address-customer_name", - "no_copy": 0, - "non_negative": 0, - "options": "customer_type", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Address", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_google_map", - "fieldtype": "HTML", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "custom_show_irrigation_district", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Google Map", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-12-06 05:34:24.226193", - "module": null, - "name": "Address-custom_google_map", + "name": "Project-actual_end_time", "no_copy": 0, "non_negative": 0, "options": null, @@ -12653,120 +11798,6 @@ "unique": 0, "width": null }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Address", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "contacts", - "fieldtype": "Table", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "customer_name", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Contacts", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2026-01-14 11:21:15.878551", - "module": null, - "name": "Address-contacts", - "no_copy": 0, - "non_negative": 0, - "options": "Address Contact Link", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Address", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_latitude", - "fieldtype": "Data", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "custom_google_map", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Latitude", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-12-13 07:17:59.819553", - "module": null, - "name": "Address-custom_latitude", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 1, - "unique": 0, - "width": null - }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -12824,63 +11855,6 @@ "unique": 0, "width": null }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Address", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_longitude", - "fieldtype": "Data", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "custom_latitude", - "is_system_generated": 0, - "is_virtual": 0, - "label": "longitude", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-12-13 07:17:59.942073", - "module": null, - "name": "Address-custom_longitude", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 1, - "unique": 0, - "width": null - }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -12938,120 +11912,6 @@ "unique": 0, "width": null }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Address", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "companies", - "fieldtype": "Table", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "contacts", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Companies", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2026-01-13 11:55:04.461069", - "module": null, - "name": "Address-companies", - "no_copy": 0, - "non_negative": 0, - "options": "Address Company Link", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Contact", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_column_break_ejxjz", - "fieldtype": "Column Break", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "pulled_from_google_contacts", - "is_system_generated": 0, - "is_virtual": 0, - "label": "", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-12-23 16:27:55.210309", - "module": null, - "name": "Contact-custom_column_break_ejxjz", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -13124,9 +11984,9 @@ "dt": "Address", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_address_for_coordinates", - "fieldtype": "Data", - "hidden": 1, + "fieldname": "tax_category", + "fieldtype": "Link", + "hidden": 0, "hide_border": 0, "hide_days": 0, "hide_seconds": 0, @@ -13136,16 +11996,73 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "custom_longitude", + "insert_after": "fax", "is_system_generated": 0, "is_virtual": 0, - "label": "Address For Coordinates", + "label": "Tax Category", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-05-15 11:37:40.846923", + "modified": "2018-12-28 22:29:21.828090", "module": null, - "name": "Address-custom_address_for_coordinates", + "name": "Address-tax_category", + "no_copy": 0, + "non_negative": 0, + "options": "Tax Category", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Project", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "total_expense_claim", + "fieldtype": "Currency", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "total_costing_amount", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Total Expense Claim (via Expense Claims)", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-13 10:13:26.515040", + "module": null, + "name": "Project-total_expense_claim", "no_copy": 0, "non_negative": 0, "options": null, @@ -13155,7 +12072,7 @@ "print_hide": 0, "print_hide_if_no_value": 0, "print_width": null, - "read_only": 0, + "read_only": 1, "read_only_depends_on": null, "report_hide": 0, "reqd": 0, @@ -13235,12 +12152,12 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Address", + "dt": "Customer", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_linked_contacts", - "fieldtype": "Table", - "hidden": 1, + "fieldname": "custom_billing_address", + "fieldtype": "Link", + "hidden": 0, "hide_border": 0, "hide_days": 0, "hide_seconds": 0, @@ -13250,19 +12167,19 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "linked_with", + "insert_after": "custom_primary_billing_and_contact_details", "is_system_generated": 0, "is_virtual": 0, - "label": "Linked Contacts", + "label": "Select Billing Address", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2024-12-09 05:20:08.566488", + "modified": "2025-02-05 05:55:12.670769", "module": null, - "name": "Address-custom_linked_contacts", + "name": "Customer-custom_billing_address", "no_copy": 0, "non_negative": 0, - "options": "Address Contact Role", + "options": "Address", "permlevel": 0, "placeholder": null, "precision": "", @@ -13292,11 +12209,11 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Customer", + "dt": "Address", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_billing_address", - "fieldtype": "Link", + "fieldname": "custom_section_break_aecpx", + "fieldtype": "Section Break", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -13307,19 +12224,19 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "custom_primary_billing_and_contact_details", + "insert_after": "disabled", "is_system_generated": 0, "is_virtual": 0, - "label": "Select Billing Address", + "label": "", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-02-05 05:55:12.670769", + "modified": "2025-01-13 16:23:39.204178", "module": null, - "name": "Customer-custom_billing_address", + "name": "Address-custom_section_break_aecpx", "no_copy": 0, "non_negative": 0, - "options": "Address", + "options": null, "permlevel": 0, "placeholder": null, "precision": "", @@ -13451,6 +12368,519 @@ "unique": 0, "width": null }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Address", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_show_irrigation_district", + "fieldtype": "Check", + "hidden": 1, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "column_break0", + "is_system_generated": 0, + "is_virtual": 0, + "label": "show irrigation district", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-12-06 05:07:10.675995", + "module": null, + "name": "Address-custom_show_irrigation_district", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Sales Invoice", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "exempt_from_sales_tax", + "fieldtype": "Check", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "taxes_section", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Is customer exempted from sales tax?", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-04-03 13:53:07.681896", + "module": null, + "name": "Sales Invoice-exempt_from_sales_tax", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Address", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_google_map", + "fieldtype": "HTML", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "custom_show_irrigation_district", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Google Map", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-12-06 05:34:24.226193", + "module": null, + "name": "Address-custom_google_map", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Address", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_latitude", + "fieldtype": "Data", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "custom_google_map", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Latitude", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-12-13 07:17:59.819553", + "module": null, + "name": "Address-custom_latitude", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 1, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Address", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_longitude", + "fieldtype": "Data", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "custom_latitude", + "is_system_generated": 0, + "is_virtual": 0, + "label": "longitude", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-12-13 07:17:59.942073", + "module": null, + "name": "Address-custom_longitude", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 1, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Address", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_address_for_coordinates", + "fieldtype": "Data", + "hidden": 1, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "custom_longitude", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Address For Coordinates", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-05-15 11:37:40.846923", + "module": null, + "name": "Address-custom_address_for_coordinates", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Quotation", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "exempt_from_sales_tax", + "fieldtype": "Check", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "taxes_and_charges", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Is customer exempted from sales tax?", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-04-03 13:53:07.693990", + "module": null, + "name": "Quotation-exempt_from_sales_tax", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Sales Order", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "exempt_from_sales_tax", + "fieldtype": "Check", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "taxes_and_charges", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Is customer exempted from sales tax?", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-04-03 13:53:07.674608", + "module": null, + "name": "Sales Order-exempt_from_sales_tax", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Address", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_linked_contacts", + "fieldtype": "Table", + "hidden": 1, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "linked_with", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Linked Contacts", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-12-09 05:20:08.566488", + "module": null, + "name": "Address-custom_linked_contacts", + "no_copy": 0, + "non_negative": 0, + "options": "Address Contact Role", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -13622,6 +13052,63 @@ "unique": 0, "width": null }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Employee", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "default_shift", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "holiday_list", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Default Shift", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-13 10:13:26.485623", + "module": null, + "name": "Employee-default_shift", + "no_copy": 0, + "non_negative": 0, + "options": "Shift Type", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -13679,6 +13166,63 @@ "unique": 0, "width": null }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Employee", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "approvers_section", + "fieldtype": "Section Break", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "default_shift", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Approvers", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-13 10:13:26.495454", + "module": null, + "name": "Employee-approvers_section", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -13736,6 +13280,63 @@ "unique": 0, "width": null }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Employee", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "expense_approver", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "approvers_section", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Expense Approver", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-13 10:13:26.497897", + "module": null, + "name": "Employee-expense_approver", + "no_copy": 0, + "non_negative": 0, + "options": "User", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -13793,6 +13394,120 @@ "unique": 0, "width": null }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Employee", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "leave_approver", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "expense_approver", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Leave Approver", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-13 10:13:26.500408", + "module": null, + "name": "Employee-leave_approver", + "no_copy": 0, + "non_negative": 0, + "options": "User", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Opportunity", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_section_break_vmzsw", + "fieldtype": "Section Break", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "items_section", + "is_system_generated": 0, + "is_virtual": 0, + "label": "", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-06-28 02:45:42.212078", + "module": null, + "name": "Opportunity-custom_section_break_vmzsw", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -13850,6 +13565,63 @@ "unique": 0, "width": null }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Employee", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "column_break_45", + "fieldtype": "Column Break", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "leave_approver", + "is_system_generated": 1, + "is_virtual": 0, + "label": null, + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-13 10:13:26.502956", + "module": null, + "name": "Employee-column_break_45", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -13907,6 +13679,63 @@ "unique": 0, "width": null }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Employee", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "shift_request_approver", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "column_break_45", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Shift Request Approver", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-13 10:13:26.505415", + "module": null, + "name": "Employee-shift_request_approver", + "no_copy": 0, + "non_negative": 0, + "options": "User", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -14021,6 +13850,120 @@ "unique": 0, "width": null }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Work Order", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_address__contacts", + "fieldtype": "Tab Break", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "connections_tab", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Address & Contacts", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-02-19 06:33:27.771582", + "module": null, + "name": "Work Order-custom_address__contacts", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Lead", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "primary_contact", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "contacts", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Primary Contact", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2026-01-13 11:55:04.344937", + "module": null, + "name": "Lead-primary_contact", + "no_copy": 0, + "non_negative": 0, + "options": "Contact", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -14078,6 +14021,63 @@ "unique": 0, "width": null }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Lead", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "contacts", + "fieldtype": "Table", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "properties", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Contacts", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2026-01-13 08:37:09.312068", + "module": null, + "name": "Lead-contacts", + "no_copy": 0, + "non_negative": 0, + "options": "Lead Contact Link", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -14135,6 +14135,63 @@ "unique": 0, "width": null }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Payment Entry", + "fetch_from": ".", + "fetch_if_empty": 0, + "fieldname": "custom_invoice", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "project", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Invoice", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-24 11:51:56.270413", + "module": null, + "name": "Payment Entry-custom_invoice", + "no_copy": 0, + "non_negative": 0, + "options": "Sales Invoice", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -14192,6 +14249,63 @@ "unique": 0, "width": null }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Employee", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "salary_cb", + "fieldtype": "Column Break", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "salary_mode", + "is_system_generated": 1, + "is_virtual": 0, + "label": null, + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-13 10:13:26.508551", + "module": null, + "name": "Employee-salary_cb", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -14249,6 +14363,63 @@ "unique": 0, "width": null }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Employee", + "fetch_from": "department.payroll_cost_center", + "fetch_if_empty": 1, + "fieldname": "payroll_cost_center", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "salary_cb", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Payroll Cost Center", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-13 10:13:26.512094", + "module": null, + "name": "Employee-payroll_cost_center", + "no_copy": 0, + "non_negative": 0, + "options": "Cost Center", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -14648,6 +14819,120 @@ "unique": 0, "width": null }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Quotation", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_column_break_wwhxd", + "fieldtype": "Column Break", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "section_break_44", + "is_system_generated": 0, + "is_virtual": 0, + "label": "", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-09-26 05:42:46.471845", + "module": null, + "name": "Quotation-custom_column_break_wwhxd", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 1, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Delivery Note", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_installation_address", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "address_and_contact_tab", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Installation Address", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-02-19 06:34:25.019577", + "module": null, + "name": "Delivery Note-custom_installation_address", + "no_copy": 0, + "non_negative": 0, + "options": "Address", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -14819,63 +15104,6 @@ "unique": 0, "width": null }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Opportunity", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_section_break_vmzsw", - "fieldtype": "Section Break", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "items_section", - "is_system_generated": 0, - "is_virtual": 0, - "label": "", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-06-28 02:45:42.212078", - "module": null, - "name": "Opportunity-custom_section_break_vmzsw", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -14990,6 +15218,63 @@ "unique": 0, "width": null }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Employee", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "health_insurance_section", + "fieldtype": "Section Break", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "health_details", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Health Insurance", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-13 10:13:26.487995", + "module": null, + "name": "Employee-health_insurance_section", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -15059,11 +15344,11 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Work Order", + "dt": "Employee", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_address__contacts", - "fieldtype": "Tab Break", + "fieldname": "health_insurance_provider", + "fieldtype": "Link", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -15074,19 +15359,19 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "connections_tab", - "is_system_generated": 0, + "insert_after": "health_insurance_section", + "is_system_generated": 1, "is_virtual": 0, - "label": "Address & Contacts", + "label": "Health Insurance Provider", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-02-19 06:33:27.771582", + "modified": "2025-01-13 10:13:26.490407", "module": null, - "name": "Work Order-custom_address__contacts", + "name": "Employee-health_insurance_provider", "no_copy": 0, "non_negative": 0, - "options": null, + "options": "Employee Health Insurance", "permlevel": 0, "placeholder": null, "precision": "", @@ -15173,11 +15458,11 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Lead", + "dt": "Customer", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "contacts", - "fieldtype": "Table", + "fieldname": "exempt_from_sales_tax", + "fieldtype": "Check", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -15188,19 +15473,19 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "properties", + "insert_after": "dn_required", "is_system_generated": 1, "is_virtual": 0, - "label": "Contacts", + "label": "Is customer exempted from sales tax?", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2026-01-13 08:37:09.312068", + "modified": "2024-04-03 13:53:07.688051", "module": null, - "name": "Lead-contacts", + "name": "Customer-exempt_from_sales_tax", "no_copy": 0, "non_negative": 0, - "options": "Lead Contact Link", + "options": null, "permlevel": 0, "placeholder": null, "precision": "", @@ -15226,15 +15511,15 @@ "collapsible_depends_on": null, "columns": 0, "default": null, - "depends_on": null, + "depends_on": "eval:doc.health_insurance_provider", "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Lead", + "dt": "Employee", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "primary_contact", - "fieldtype": "Link", + "fieldname": "health_insurance_no", + "fieldtype": "Data", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -15245,19 +15530,19 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "contacts", + "insert_after": "health_insurance_provider", "is_system_generated": 1, "is_virtual": 0, - "label": "Primary Contact", + "label": "Health Insurance No", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2026-01-13 11:55:04.344937", + "modified": "2025-01-13 10:13:26.492944", "module": null, - "name": "Lead-primary_contact", + "name": "Employee-health_insurance_no", "no_copy": 0, "non_negative": 0, - "options": "Contact", + "options": null, "permlevel": 0, "placeholder": null, "precision": "", @@ -15446,120 +15731,6 @@ "unique": 0, "width": null }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Payment Entry", - "fetch_from": ".", - "fetch_if_empty": 0, - "fieldname": "custom_invoice", - "fieldtype": "Link", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "project", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Invoice", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-24 11:51:56.270413", - "module": null, - "name": "Payment Entry-custom_invoice", - "no_copy": 0, - "non_negative": 0, - "options": "Sales Invoice", - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, - { - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "collapsible_depends_on": null, - "columns": 0, - "default": null, - "depends_on": null, - "description": null, - "docstatus": 0, - "doctype": "Custom Field", - "dt": "Quotation", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_column_break_wwhxd", - "fieldtype": "Column Break", - "hidden": 0, - "hide_border": 0, - "hide_days": 0, - "hide_seconds": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "section_break_44", - "is_system_generated": 0, - "is_virtual": 0, - "label": "", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2024-09-26 05:42:46.471845", - "module": null, - "name": "Quotation-custom_column_break_wwhxd", - "no_copy": 0, - "non_negative": 0, - "options": null, - "permlevel": 0, - "placeholder": null, - "precision": "", - "print_hide": 1, - "print_hide_if_no_value": 0, - "print_width": null, - "read_only": 0, - "read_only_depends_on": null, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "show_dashboard": 0, - "sort_options": 0, - "translatable": 0, - "unique": 0, - "width": null - }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -15731,6 +15902,120 @@ "unique": 0, "width": null }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Quotation", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "custom_column_break_holw9", + "fieldtype": "Column Break", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "pricing_rule_details", + "is_system_generated": 0, + "is_virtual": 0, + "label": "", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-09-26 05:01:09.652660", + "module": null, + "name": "Quotation-custom_column_break_holw9", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 1, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Company", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "hr_and_payroll_tab", + "fieldtype": "Tab Break", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "credit_limit", + "is_system_generated": 1, + "is_virtual": 0, + "label": "HR & Payroll", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-13 10:13:26.433359", + "module": null, + "name": "Company-hr_and_payroll_tab", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -15788,6 +16073,63 @@ "unique": 0, "width": null }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Company", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "hr_settings_section", + "fieldtype": "Section Break", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "hr_and_payroll_tab", + "is_system_generated": 1, + "is_virtual": 0, + "label": "HR & Payroll Settings", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-13 10:13:26.436024", + "module": null, + "name": "Company-hr_settings_section", + "no_copy": 0, + "non_negative": 0, + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, { "allow_in_quick_entry": 0, "allow_on_submit": 0, @@ -15853,42 +16195,42 @@ "collapsible_depends_on": null, "columns": 0, "default": null, - "depends_on": null, + "depends_on": "eval:!doc.__islocal", "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Quotation", + "dt": "Company", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_column_break_holw9", - "fieldtype": "Column Break", + "fieldname": "default_expense_claim_payable_account", + "fieldtype": "Link", "hidden": 0, "hide_border": 0, "hide_days": 0, "hide_seconds": 0, - "ignore_user_permissions": 0, + "ignore_user_permissions": 1, "ignore_xss_filter": 0, "in_global_search": 0, "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "pricing_rule_details", - "is_system_generated": 0, + "insert_after": "hr_settings_section", + "is_system_generated": 1, "is_virtual": 0, - "label": "", + "label": "Default Expense Claim Payable Account", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2024-09-26 05:01:09.652660", + "modified": "2025-01-13 10:13:26.438547", "module": null, - "name": "Quotation-custom_column_break_holw9", - "no_copy": 0, + "name": "Company-default_expense_claim_payable_account", + "no_copy": 1, "non_negative": 0, - "options": null, + "options": "Account", "permlevel": 0, "placeholder": null, "precision": "", - "print_hide": 1, + "print_hide": 0, "print_hide_if_no_value": 0, "print_width": null, "read_only": 0, @@ -15914,11 +16256,11 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Address", + "dt": "Company", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "sales_orders", - "fieldtype": "Table", + "fieldname": "default_employee_advance_account", + "fieldtype": "Link", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -15929,19 +16271,190 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "projects", + "insert_after": "default_expense_claim_payable_account", "is_system_generated": 1, "is_virtual": 0, - "label": "Sales Orders", + "label": "Default Employee Advance Account", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2026-01-13 08:37:09.438342", + "modified": "2025-01-13 10:13:26.441022", "module": null, - "name": "Address-sales_orders", + "name": "Company-default_employee_advance_account", + "no_copy": 1, + "non_negative": 0, + "options": "Account", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Company", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "column_break_10", + "fieldtype": "Column Break", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "default_employee_advance_account", + "is_system_generated": 1, + "is_virtual": 0, + "label": null, + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-13 10:13:26.443591", + "module": null, + "name": "Company-column_break_10", "no_copy": 0, "non_negative": 0, - "options": "Address Sales Order Link", + "options": null, + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": "eval:!doc.__islocal", + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Company", + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "default_payroll_payable_account", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 1, + "ignore_xss_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "column_break_10", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Default Payroll Payable Account", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-01-13 10:13:26.446176", + "module": null, + "name": "Company-default_payroll_payable_account", + "no_copy": 1, + "non_negative": 0, + "options": "Account", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "show_dashboard": 0, + "sort_options": 0, + "translatable": 0, + "unique": 0, + "width": null + }, + { + "allow_in_quick_entry": 1, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "docstatus": 0, + "doctype": "Custom Field", + "dt": "Quotation", + "fetch_from": ".address_line1", + "fetch_if_empty": 0, + "fieldname": "custom_installation_address", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_global_search": 1, + "in_list_view": 0, + "in_preview": 1, + "in_standard_filter": 0, + "insert_after": "shipping_address_name", + "is_system_generated": 0, + "is_virtual": 0, + "label": "Installation Address", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2024-11-01 11:52:10.662566", + "module": null, + "name": "Quotation-custom_installation_address", + "no_copy": 0, + "non_negative": 0, + "options": "Address", "permlevel": 0, "placeholder": null, "precision": "", diff --git a/custom_ui/fixtures/doctype.json b/custom_ui/fixtures/doctype.json index 79499dd..b56d2a8 100644 --- a/custom_ui/fixtures/doctype.json +++ b/custom_ui/fixtures/doctype.json @@ -1408,8 +1408,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": null, - "modified": "2024-10-31 17:29:58.039141", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:12.948757", "module": "CRM", "name": "Properties", "naming_rule": "By fieldname", @@ -3186,8 +3186,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": null, - "modified": "2024-07-18 03:32:52.993791", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:13.056788", "module": "CRM", "name": "SNW Jobs", "naming_rule": "Autoincrement", @@ -4109,8 +4109,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": null, - "modified": "2024-07-08 05:15:56.923325", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:13.154567", "module": "Projects", "name": "Work Schedule", "naming_rule": "", @@ -9151,8 +9151,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": null, - "modified": "2024-10-29 17:21:58.680491", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:13.303974", "module": "CRM", "name": "Follow Up Checklist", "naming_rule": "By fieldname", @@ -9457,8 +9457,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": null, - "modified": "2024-09-12 05:58:35.694822", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:13.377143", "module": "CRM", "name": "Follow Check List Fields", "naming_rule": "By fieldname", @@ -10147,8 +10147,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": null, - "modified": "2024-10-24 22:57:47.139294", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:13.498788", "module": "Brotherton SOP", "name": "SOP-Documentation", "naming_rule": "Set by user", @@ -10348,8 +10348,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": null, - "modified": "2024-10-21 04:48:18.090677", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:13.568354", "module": "Desk", "name": "SOP Notes", "naming_rule": "", @@ -10694,8 +10694,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": null, - "modified": "2024-10-21 05:32:44.820703", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:13.644007", "module": "Desk", "name": "Tutorials", "naming_rule": "By fieldname", @@ -11064,8 +11064,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": null, - "modified": "2024-10-25 09:51:30.432578", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:13.714534", "module": "Desk", "name": "Brotherton Meetings Scheduler", "naming_rule": "", @@ -11242,8 +11242,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": null, - "modified": "2024-10-25 09:50:36.974725", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:13.776408", "module": "Desk", "name": "Meeting Participants", "naming_rule": "", @@ -11588,8 +11588,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": null, - "modified": "2024-11-02 06:39:30.176298", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:13.863897", "module": "Desk", "name": "Add-On Job Detail", "naming_rule": "By fieldname", @@ -11870,8 +11870,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": null, - "modified": "2024-11-04 11:49:34.179652", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:13.938332", "module": "Desk", "name": "Crew Schedule Detail", "naming_rule": "", @@ -12152,8 +12152,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": null, - "modified": "2025-01-13 18:06:22.980310", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:14.015669", "module": "Setup", "name": "City", "naming_rule": "By fieldname", @@ -14738,8 +14738,8 @@ "make_attachments_public": 1, "max_attachments": 5, "menu_index": null, - "migration_hash": null, - "modified": "2025-03-03 15:35:08.799864", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:14.167954", "module": "Projects", "name": "Fencing Job Queue", "naming_rule": "Set by user", @@ -15630,8 +15630,8 @@ "make_attachments_public": 1, "max_attachments": 0, "menu_index": null, - "migration_hash": null, - "modified": "2024-12-13 15:31:00.508799", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:14.271176", "module": "Setup", "name": "Irrigation District", "naming_rule": "By fieldname", @@ -15808,8 +15808,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": null, - "modified": "2024-12-06 04:53:08.468584", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:14.346591", "module": "Setup", "name": "Linked Companies", "naming_rule": "", @@ -16154,8 +16154,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": null, - "modified": "2025-01-24 13:58:54.796901", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:14.429267", "module": "Contacts", "name": "Address Contact Role", "naming_rule": "", @@ -16799,6 +16799,326 @@ "trigger": null, "unique": 0, "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "amended_from", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Amended From", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 1, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Backflow Test Form", + "parent": "Backflow Test Form", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": null, + "print_hide": 1, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 1, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 1, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "amended_from", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Amended From", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 1, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Backflow Test Form", + "parent": "Backflow Test Form", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": null, + "print_hide": 1, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 1, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 1, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "amended_from", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Amended From", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 1, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Backflow Test Form", + "parent": "Backflow Test Form", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": null, + "print_hide": 1, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 1, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 1, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "amended_from", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Amended From", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 1, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Backflow Test Form", + "parent": "Backflow Test Form", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": null, + "print_hide": 1, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 1, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 1, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "amended_from", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Amended From", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 1, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Backflow Test Form", + "parent": "Backflow Test Form", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": null, + "print_hide": 1, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 1, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 1, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null } ], "force_re_route_to_default_view": 0, @@ -16820,8 +17140,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": null, - "modified": "2025-01-28 13:52:05.066470", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:14.536984", "module": "Selling", "name": "Backflow Test Form", "naming_rule": "", @@ -17510,8 +17830,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": null, - "modified": "2025-06-17 02:11:29.355430", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:14.668256", "module": "Selling", "name": "Pre-Built Routes", "naming_rule": "By \"Naming Series\" field", @@ -18031,8 +18351,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": null, - "modified": "2025-06-17 01:35:18.821798", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:14.752785", "module": "Contacts", "name": "Assigned Address", "naming_rule": "By fieldname", @@ -18996,6 +19316,326 @@ "trigger": null, "unique": 0, "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "amended_from", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Amended From", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 1, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Locate Log", + "parent": "Locate Log", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": null, + "print_hide": 1, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 1, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 1, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "amended_from", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Amended From", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 1, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Locate Log", + "parent": "Locate Log", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": null, + "print_hide": 1, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 1, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 1, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "amended_from", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Amended From", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 1, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Locate Log", + "parent": "Locate Log", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": null, + "print_hide": 1, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 1, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 1, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "amended_from", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Amended From", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 1, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Locate Log", + "parent": "Locate Log", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": null, + "print_hide": 1, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 1, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 1, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "amended_from", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Amended From", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 1, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Locate Log", + "parent": "Locate Log", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": null, + "print_hide": 1, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 1, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 1, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null } ], "force_re_route_to_default_view": 0, @@ -19031,8 +19671,8 @@ "make_attachments_public": 1, "max_attachments": 0, "menu_index": null, - "migration_hash": null, - "modified": "2025-01-28 13:51:17.016686", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:14.894391", "module": "Projects", "name": "Locate Log", "naming_rule": "", @@ -19283,6 +19923,326 @@ "unique": 0, "width": null }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "amended_from", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Amended From", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 1, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Backflow test report form", + "parent": "Backflow test report form", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": null, + "print_hide": 1, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 1, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 1, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "amended_from", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Amended From", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 1, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Backflow test report form", + "parent": "Backflow test report form", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": null, + "print_hide": 1, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 1, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 1, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "amended_from", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Amended From", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 1, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Backflow test report form", + "parent": "Backflow test report form", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": null, + "print_hide": 1, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 1, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 1, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "amended_from", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Amended From", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 1, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Backflow test report form", + "parent": "Backflow test report form", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": null, + "print_hide": 1, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 1, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 1, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "amended_from", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Amended From", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 1, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Backflow test report form", + "parent": "Backflow test report form", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": null, + "print_hide": 1, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 1, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 1, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, { "allow_bulk_edit": 0, "allow_in_quick_entry": 0, @@ -19367,8 +20327,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": null, - "modified": "2024-12-18 13:55:10.265610", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:14.974731", "module": "Brotherton SOP", "name": "Backflow test report form", "naming_rule": "", @@ -19673,8 +20633,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": null, - "modified": "2025-02-04 03:14:29.980804", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:15.060171", "module": "Accounts", "name": "QB Export Entry", "naming_rule": "Autoincrement", @@ -20211,8 +21171,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": null, - "modified": "2025-02-04 03:33:45.335883", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:15.161301", "module": "Accounts", "name": "QB Export", "naming_rule": "Expression", @@ -20709,8 +21669,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": null, - "modified": "2025-03-04 19:51:53.469690", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:15.226771", "module": "Desk", "name": "Custom Customer Address Link", "naming_rule": "", @@ -20970,6 +21930,70 @@ "trigger": null, "unique": 0, "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "bid_notes", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Bid Notes", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Bid Meeting Note", + "parent": "On-Site Meeting", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null } ], "force_re_route_to_default_view": 0, @@ -20991,8 +22015,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": null, - "modified": "2025-11-21 08:47:51.984630", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:15.293419", "module": "Selling", "name": "On-Site Meeting", "naming_rule": "Expression", @@ -21169,8 +22193,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": null, - "modified": "2025-06-17 01:34:26.423883", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:15.349611", "module": "Selling", "name": "Route Technician Assignment", "naming_rule": "", @@ -21323,8 +22347,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": null, - "modified": "2025-08-11 11:17:44.795641", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:15.412654", "module": "Desk", "name": "Test Doctype", "naming_rule": "", @@ -21501,8 +22525,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "5f481f64a0f53ad40b09d8b5694265c1", - "modified": "2026-01-15 00:40:39.197431", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:15.467707", "module": "Custom", "name": "Lead Company Link", "naming_rule": "", @@ -21540,6 +22564,442 @@ "translated_doctype": 0, "website_search_field": null }, + { + "_assign": null, + "_comments": null, + "_last_update": null, + "_liked_by": null, + "_user_tags": null, + "actions": [], + "allow_auto_repeat": 0, + "allow_copy": 0, + "allow_events_in_timeline": 0, + "allow_guest_to_view": 0, + "allow_import": 0, + "allow_rename": 1, + "app": null, + "autoname": null, + "beta": 0, + "color": null, + "colour": null, + "custom": 1, + "default_email_template": null, + "default_print_format": null, + "default_view": null, + "description": null, + "docstatus": 0, + "doctype": "DocType", + "document_type": "", + "documentation": null, + "editable_grid": 1, + "email_append_to": 0, + "engine": "InnoDB", + "fields": [ + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "task", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Task", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Task", + "parent": "Customer Task Link", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "project_template", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Project Template", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Project Template", + "parent": "Customer Task Link", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + } + ], + "force_re_route_to_default_view": 0, + "grid_page_length": 50, + "has_web_view": 0, + "hide_toolbar": 0, + "icon": null, + "image_field": null, + "in_create": 0, + "index_web_pages_for_search": 1, + "is_calendar_and_gantt": 0, + "is_published_field": null, + "is_submittable": 0, + "is_tree": 0, + "is_virtual": 0, + "issingle": 0, + "istable": 1, + "links": [], + "make_attachments_public": 0, + "max_attachments": 0, + "menu_index": null, + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:15.520767", + "module": "Custom UI", + "name": "Customer Task Link", + "naming_rule": "", + "nsm_parent_field": null, + "parent_node": null, + "permissions": [], + "print_outline": null, + "protect_attached_files": 0, + "queue_in_background": 0, + "quick_entry": 0, + "read_only": 0, + "recipient_account_field": null, + "restrict_to_domain": null, + "route": null, + "row_format": "Dynamic", + "rows_threshold_for_grid_search": 20, + "search_fields": null, + "sender_field": null, + "sender_name_field": null, + "show_name_in_global_search": 0, + "show_preview_popup": 0, + "show_title_field_in_link": 0, + "smallicon": null, + "sort_field": "modified", + "sort_order": "DESC", + "states": [], + "subject": null, + "subject_field": null, + "tag_fields": null, + "timeline_field": null, + "title_field": null, + "track_changes": 0, + "track_seen": 0, + "track_views": 0, + "translated_doctype": 0, + "website_search_field": null + }, + { + "_assign": null, + "_comments": null, + "_last_update": null, + "_liked_by": null, + "_user_tags": null, + "actions": [], + "allow_auto_repeat": 0, + "allow_copy": 0, + "allow_events_in_timeline": 0, + "allow_guest_to_view": 0, + "allow_import": 0, + "allow_rename": 1, + "app": null, + "autoname": null, + "beta": 0, + "color": null, + "colour": null, + "custom": 1, + "default_email_template": null, + "default_print_format": null, + "default_view": null, + "description": null, + "docstatus": 0, + "doctype": "DocType", + "document_type": "", + "documentation": null, + "editable_grid": 1, + "email_append_to": 0, + "engine": "InnoDB", + "fields": [ + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "task", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Task", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Task", + "parent": "Address Task Link", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "project_template", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Project Template", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Project Template", + "parent": "Address Task Link", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + } + ], + "force_re_route_to_default_view": 0, + "grid_page_length": 50, + "has_web_view": 0, + "hide_toolbar": 0, + "icon": null, + "image_field": null, + "in_create": 0, + "index_web_pages_for_search": 1, + "is_calendar_and_gantt": 0, + "is_published_field": null, + "is_submittable": 0, + "is_tree": 0, + "is_virtual": 0, + "issingle": 0, + "istable": 1, + "links": [], + "make_attachments_public": 0, + "max_attachments": 0, + "menu_index": null, + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:15.580338", + "module": "Custom UI", + "name": "Address Task Link", + "naming_rule": "", + "nsm_parent_field": null, + "parent_node": null, + "permissions": [], + "print_outline": null, + "protect_attached_files": 0, + "queue_in_background": 0, + "quick_entry": 0, + "read_only": 0, + "recipient_account_field": null, + "restrict_to_domain": null, + "route": null, + "row_format": "Dynamic", + "rows_threshold_for_grid_search": 20, + "search_fields": null, + "sender_field": null, + "sender_name_field": null, + "show_name_in_global_search": 0, + "show_preview_popup": 0, + "show_title_field_in_link": 0, + "smallicon": null, + "sort_field": "modified", + "sort_order": "DESC", + "states": [], + "subject": null, + "subject_field": null, + "tag_fields": null, + "timeline_field": null, + "title_field": null, + "track_changes": 0, + "track_seen": 0, + "track_views": 0, + "translated_doctype": 0, + "website_search_field": null + }, { "_assign": null, "_comments": null, @@ -21655,8 +23115,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", - "modified": "2026-01-16 04:11:34.521684", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:15.635575", "module": "Custom", "name": "Lead Companies Link", "naming_rule": "", @@ -21873,8 +23333,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", - "modified": "2026-01-16 04:11:34.576521", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:15.692709", "module": "Custom", "name": "Address Project Link", "naming_rule": "", @@ -22091,8 +23551,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", - "modified": "2026-01-16 04:11:34.628136", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:15.753245", "module": "Custom", "name": "Address Quotation Link", "naming_rule": "", @@ -22309,8 +23769,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", - "modified": "2026-01-16 04:11:34.681893", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:15.813569", "module": "Custom", "name": "Address On-Site Meeting Link", "naming_rule": "", @@ -22527,8 +23987,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", - "modified": "2026-01-16 04:11:34.737017", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:15.869381", "module": "Custom", "name": "Address Sales Order Link", "naming_rule": "", @@ -22681,8 +24141,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", - "modified": "2026-01-16 04:11:34.787995", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:15.926523", "module": "Custom", "name": "Contact Address Link", "naming_rule": "", @@ -22835,8 +24295,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", - "modified": "2026-01-16 04:11:34.837721", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:15.982944", "module": "Custom", "name": "Lead On-Site Meeting Link", "naming_rule": "", @@ -23437,8 +24897,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", - "modified": "2026-01-16 04:11:34.906370", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:16.051786", "module": "Selling", "name": "Quotation Template", "naming_rule": "", @@ -23935,8 +25395,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", - "modified": "2026-01-16 04:11:34.977831", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:16.131703", "module": "Selling", "name": "Quotation Template Item", "naming_rule": "", @@ -24089,8 +25549,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", - "modified": "2026-01-16 04:11:35.031029", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:16.186884", "module": "Custom UI", "name": "Customer Company Link", "naming_rule": "", @@ -24243,8 +25703,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", - "modified": "2026-01-16 04:11:35.084461", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:16.242217", "module": "Custom UI", "name": "Customer Address Link", "naming_rule": "", @@ -24397,8 +25857,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", - "modified": "2026-01-16 04:11:35.135851", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:16.295479", "module": "Custom UI", "name": "Customer Contact Link", "naming_rule": "", @@ -24551,8 +26011,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", - "modified": "2026-01-16 04:11:35.184768", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:16.349430", "module": "Custom", "name": "Address Contact Link", "naming_rule": "", @@ -24705,8 +26165,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", - "modified": "2026-01-16 04:11:35.236428", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:16.402648", "module": "Custom", "name": "Customer On-Site Meeting Link", "naming_rule": "", @@ -24859,8 +26319,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", - "modified": "2026-01-16 04:11:35.287145", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:16.453671", "module": "Custom", "name": "Customer Project Link", "naming_rule": "", @@ -25013,8 +26473,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", - "modified": "2026-01-16 04:11:35.338967", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:16.510653", "module": "Custom", "name": "Customer Quotation Link", "naming_rule": "", @@ -25167,8 +26627,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", - "modified": "2026-01-16 04:11:35.388711", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:16.565855", "module": "Custom", "name": "Customer Sales Order Link", "naming_rule": "", @@ -25321,8 +26781,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", - "modified": "2026-01-16 04:11:35.441876", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:16.623951", "module": "Custom", "name": "Lead Address Link", "naming_rule": "", @@ -25475,8 +26935,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", - "modified": "2026-01-16 04:11:35.492936", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:16.678981", "module": "Custom", "name": "Lead Contact Link", "naming_rule": "", @@ -25629,8 +27089,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", - "modified": "2026-01-16 04:11:35.545465", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:16.735725", "module": "Custom", "name": "Lead Quotation Link", "naming_rule": "", @@ -25783,8 +27243,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", - "modified": "2026-01-16 04:11:35.604415", + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:16.790139", "module": "Custom", "name": "Address Company Link", "naming_rule": "", @@ -25821,5 +27281,5479 @@ "track_views": 0, "translated_doctype": 0, "website_search_field": null + }, + { + "_assign": null, + "_comments": null, + "_last_update": null, + "_liked_by": null, + "_user_tags": null, + "actions": [], + "allow_auto_repeat": 0, + "allow_copy": 0, + "allow_events_in_timeline": 0, + "allow_guest_to_view": 0, + "allow_import": 0, + "allow_rename": 1, + "app": null, + "autoname": "format:SA-{MM}-{YYYY}-{####}", + "beta": 0, + "color": null, + "colour": null, + "custom": 1, + "default_email_template": null, + "default_print_format": null, + "default_view": null, + "description": null, + "docstatus": 0, + "doctype": "DocType", + "document_type": "", + "documentation": null, + "editable_grid": 0, + "email_append_to": 0, + "engine": "InnoDB", + "fields": [ + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "expected_start_date", + "fieldtype": "Date", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Expected Start Date", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Service Appointment", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "expected_end_date", + "fieldtype": "Date", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Expected End Date", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Service Appointment", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "project_template", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Project Template", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Project Template", + "parent": "Service Appointment", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "project", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Project", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Project", + "parent": "Service Appointment", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "actual_start_date", + "fieldtype": "Date", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Actual Start Date", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Service Appointment", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "actual_end_date", + "fieldtype": "Date", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Actual End Date", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Service Appointment", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "expected_start_time", + "fieldtype": "Time", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Expected Start Time", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Service Appointment", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "expected_end_time", + "fieldtype": "Time", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Expected End Time", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Service Appointment", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "actual_end_time", + "fieldtype": "Time", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Actual End Time", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Service Appointment", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "actual_start_time", + "fieldtype": "Time", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Actual Start Time", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Service Appointment", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": "Open", + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "status", + "fieldtype": "Select", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Status", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Open\nScheduled\nStarted\nCompleted\nCanceled", + "parent": "Service Appointment", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "customer", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Customer", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Customer", + "parent": "Service Appointment", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "company", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Company", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Company", + "parent": "Service Appointment", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "service_address", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Service Address", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Address", + "parent": "Service Appointment", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + } + ], + "force_re_route_to_default_view": 0, + "grid_page_length": 50, + "has_web_view": 0, + "hide_toolbar": 0, + "icon": null, + "image_field": null, + "in_create": 0, + "index_web_pages_for_search": 1, + "is_calendar_and_gantt": 0, + "is_published_field": null, + "is_submittable": 0, + "is_tree": 0, + "is_virtual": 0, + "issingle": 0, + "istable": 0, + "links": [], + "make_attachments_public": 0, + "max_attachments": 0, + "menu_index": null, + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 10:35:03.150818", + "module": "Custom UI", + "name": "Service Appointment", + "naming_rule": "Expression", + "nsm_parent_field": null, + "parent_node": null, + "permissions": [ + { + "amend": 0, + "cancel": 0, + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "if_owner": 0, + "import": 0, + "match": null, + "parent": "Service Appointment", + "parentfield": "permissions", + "parenttype": "DocType", + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "System Manager", + "select": 0, + "share": 1, + "submit": 0, + "write": 1 + } + ], + "print_outline": null, + "protect_attached_files": 0, + "queue_in_background": 0, + "quick_entry": 0, + "read_only": 0, + "recipient_account_field": null, + "restrict_to_domain": null, + "route": null, + "row_format": "Dynamic", + "rows_threshold_for_grid_search": 20, + "search_fields": null, + "sender_field": null, + "sender_name_field": null, + "show_name_in_global_search": 0, + "show_preview_popup": 0, + "show_title_field_in_link": 0, + "smallicon": null, + "sort_field": "modified", + "sort_order": "DESC", + "states": [], + "subject": null, + "subject_field": null, + "tag_fields": null, + "timeline_field": null, + "title_field": null, + "track_changes": 0, + "track_seen": 0, + "track_views": 0, + "translated_doctype": 0, + "website_search_field": null + }, + { + "_assign": null, + "_comments": null, + "_last_update": null, + "_liked_by": null, + "_user_tags": null, + "actions": [], + "allow_auto_repeat": 0, + "allow_copy": 0, + "allow_events_in_timeline": 0, + "allow_guest_to_view": 0, + "allow_import": 0, + "allow_rename": 1, + "app": null, + "autoname": null, + "beta": 0, + "color": null, + "colour": null, + "custom": 1, + "default_email_template": null, + "default_print_format": null, + "default_view": null, + "description": null, + "docstatus": 0, + "doctype": "DocType", + "document_type": "", + "documentation": null, + "editable_grid": 1, + "email_append_to": 0, + "engine": "InnoDB", + "fields": [ + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "label", + "fieldtype": "Data", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Label", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Bid Meeting Note Form Field", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "type", + "fieldtype": "Select", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Type", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Data\nText\nCheck\nDate\nDatetime\nTime\nSelect\nMulti-Select\nNumber\nMulti-Select w/ Quantity", + "parent": "Bid Meeting Note Form Field", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 1, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": "", + "description": "Comma separated options for select fields", + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "options", + "fieldtype": "Small Text", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Options", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": "", + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Bid Meeting Note Form Field", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 1, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": "0", + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "required", + "fieldtype": "Check", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Required", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Bid Meeting Note Form Field", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 1, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "default_value", + "fieldtype": "Data", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Default Value", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Bid Meeting Note Form Field", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 1, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": "0", + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "read_only", + "fieldtype": "Check", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Read Only", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Bid Meeting Note Form Field", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 1, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "order", + "fieldtype": "Int", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Order", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Bid Meeting Note Form Field", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 1, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "help_text", + "fieldtype": "Small Text", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Help Text", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Bid Meeting Note Form Field", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 1, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": "The doctype for a select or multi-select if it's options are doctypes.", + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "doctype_for_select", + "fieldtype": "Data", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Doctype For Select", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Bid Meeting Note Form Field", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": "0", + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "include_options", + "fieldtype": "Check", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Include Options", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Bid Meeting Note Form Field", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": "If a value is entered in this field, then the field this describes is conditional based on the value in the provided field. ", + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "conditional_on_field", + "fieldtype": "Data", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Conditional On Field", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Bid Meeting Note Form Field", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": "The value in which conditional should evaluate to True. If no value is provided here and a value exists in Conditional On Field, then the condition will just simply be if \"truthy\" (meaning, not null, emtpy, false, or 0)", + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "conditional_on_value", + "fieldtype": "Data", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Conditional On Value", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Bid Meeting Note Form Field", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 1, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "doctype_label_field", + "fieldtype": "Data", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Doctype Label Field", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Bid Meeting Note Form Field", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 1, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "row", + "fieldtype": "Int", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Row", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Bid Meeting Note Form Field", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 1, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "column", + "fieldtype": "Int", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Column", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Bid Meeting Note Form Field", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + } + ], + "force_re_route_to_default_view": 0, + "grid_page_length": 50, + "has_web_view": 0, + "hide_toolbar": 0, + "icon": null, + "image_field": null, + "in_create": 0, + "index_web_pages_for_search": 1, + "is_calendar_and_gantt": 0, + "is_published_field": null, + "is_submittable": 0, + "is_tree": 0, + "is_virtual": 0, + "issingle": 0, + "istable": 1, + "links": [], + "make_attachments_public": 0, + "max_attachments": 0, + "menu_index": null, + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:16.929388", + "module": "Custom UI", + "name": "Bid Meeting Note Form Field", + "naming_rule": "", + "nsm_parent_field": null, + "parent_node": null, + "permissions": [], + "print_outline": null, + "protect_attached_files": 0, + "queue_in_background": 0, + "quick_entry": 0, + "read_only": 0, + "recipient_account_field": null, + "restrict_to_domain": null, + "route": null, + "row_format": "Dynamic", + "rows_threshold_for_grid_search": 20, + "search_fields": null, + "sender_field": null, + "sender_name_field": null, + "show_name_in_global_search": 0, + "show_preview_popup": 0, + "show_title_field_in_link": 0, + "smallicon": null, + "sort_field": "modified", + "sort_order": "DESC", + "states": [], + "subject": null, + "subject_field": null, + "tag_fields": null, + "timeline_field": null, + "title_field": null, + "track_changes": 0, + "track_seen": 0, + "track_views": 0, + "translated_doctype": 0, + "website_search_field": null + }, + { + "_assign": null, + "_comments": null, + "_last_update": null, + "_liked_by": null, + "_user_tags": null, + "actions": [], + "allow_auto_repeat": 0, + "allow_copy": 0, + "allow_events_in_timeline": 0, + "allow_guest_to_view": 0, + "allow_import": 0, + "allow_rename": 1, + "app": null, + "autoname": null, + "beta": 0, + "color": null, + "colour": null, + "custom": 1, + "default_email_template": null, + "default_print_format": null, + "default_view": null, + "description": null, + "docstatus": 0, + "doctype": "DocType", + "document_type": "", + "documentation": null, + "editable_grid": 0, + "email_append_to": 0, + "engine": "InnoDB", + "fields": [ + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "title", + "fieldtype": "Data", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Title", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Bid Meeting Note Form", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "project_template", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Project Template", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Project Template", + "parent": "Bid Meeting Note Form", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "notes", + "fieldtype": "Small Text", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Notes", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Bid Meeting Note Form", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "fields", + "fieldtype": "Table", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Fields", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Bid Meeting Note Form Field", + "parent": "Bid Meeting Note Form", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "company", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Company", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Company", + "parent": "Bid Meeting Note Form", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + } + ], + "force_re_route_to_default_view": 0, + "grid_page_length": 50, + "has_web_view": 0, + "hide_toolbar": 0, + "icon": null, + "image_field": null, + "in_create": 0, + "index_web_pages_for_search": 1, + "is_calendar_and_gantt": 0, + "is_published_field": null, + "is_submittable": 0, + "is_tree": 0, + "is_virtual": 0, + "issingle": 0, + "istable": 0, + "links": [], + "make_attachments_public": 0, + "max_attachments": 0, + "menu_index": null, + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:16.999820", + "module": "Custom UI", + "name": "Bid Meeting Note Form", + "naming_rule": "", + "nsm_parent_field": null, + "parent_node": null, + "permissions": [ + { + "amend": 0, + "cancel": 0, + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "if_owner": 0, + "import": 0, + "match": null, + "parent": "Bid Meeting Note Form", + "parentfield": "permissions", + "parenttype": "DocType", + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "System Manager", + "select": 0, + "share": 1, + "submit": 0, + "write": 1 + } + ], + "print_outline": null, + "protect_attached_files": 0, + "queue_in_background": 0, + "quick_entry": 0, + "read_only": 0, + "recipient_account_field": null, + "restrict_to_domain": null, + "route": null, + "row_format": "Dynamic", + "rows_threshold_for_grid_search": 20, + "search_fields": null, + "sender_field": null, + "sender_name_field": null, + "show_name_in_global_search": 0, + "show_preview_popup": 0, + "show_title_field_in_link": 0, + "smallicon": null, + "sort_field": "modified", + "sort_order": "DESC", + "states": [], + "subject": null, + "subject_field": null, + "tag_fields": null, + "timeline_field": null, + "title_field": null, + "track_changes": 0, + "track_seen": 0, + "track_views": 0, + "translated_doctype": 0, + "website_search_field": null + }, + { + "_assign": null, + "_comments": null, + "_last_update": null, + "_liked_by": null, + "_user_tags": null, + "actions": [], + "allow_auto_repeat": 0, + "allow_copy": 0, + "allow_events_in_timeline": 0, + "allow_guest_to_view": 0, + "allow_import": 0, + "allow_rename": 1, + "app": null, + "autoname": null, + "beta": 0, + "color": null, + "colour": null, + "custom": 1, + "default_email_template": null, + "default_print_format": null, + "default_view": null, + "description": null, + "docstatus": 0, + "doctype": "DocType", + "document_type": "", + "documentation": null, + "editable_grid": 1, + "email_append_to": 0, + "engine": "InnoDB", + "fields": [ + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "label", + "fieldtype": "Data", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Label", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Bid Meeting Note Field", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "type", + "fieldtype": "Select", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Type", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Data\nText\nCheck\nDate\nDatetime\nTime\nSelect\nMulti-Select\nMulti-Select w/ Quantity", + "parent": "Bid Meeting Note Field", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "value", + "fieldtype": "Data", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Value", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Bid Meeting Note Field", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "order", + "fieldtype": "Int", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Order", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Bid Meeting Note Field", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": "Holds the doctype if this field is a link to either a single doctype or a list of doctypes. If this field has a value, then the Value field will hold the name(s) of the Doctype(s)", + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "value_doctype", + "fieldtype": "Data", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Doctype", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Bid Meeting Note Field", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "available_options", + "fieldtype": "Small Text", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Available Options", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Bid Meeting Note Field", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": "0", + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "include_available_options", + "fieldtype": "Check", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Include Available Options", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Bid Meeting Note Field", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "row", + "fieldtype": "Int", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Row", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Bid Meeting Note Field", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "column", + "fieldtype": "Int", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Column", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Bid Meeting Note Field", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "conditional_on_field", + "fieldtype": "Data", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Conditional On Field", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Bid Meeting Note Field", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "conditional_on_value", + "fieldtype": "Data", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Conditional On Value", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Bid Meeting Note Field", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "doctype_label_field", + "fieldtype": "Data", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Doctype Label Field", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Bid Meeting Note Field", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + } + ], + "force_re_route_to_default_view": 0, + "grid_page_length": 50, + "has_web_view": 0, + "hide_toolbar": 0, + "icon": null, + "image_field": null, + "in_create": 0, + "index_web_pages_for_search": 1, + "is_calendar_and_gantt": 0, + "is_published_field": null, + "is_submittable": 0, + "is_tree": 0, + "is_virtual": 0, + "issingle": 0, + "istable": 1, + "links": [], + "make_attachments_public": 0, + "max_attachments": 0, + "menu_index": null, + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:17.067503", + "module": "Custom UI", + "name": "Bid Meeting Note Field", + "naming_rule": "", + "nsm_parent_field": null, + "parent_node": null, + "permissions": [], + "print_outline": null, + "protect_attached_files": 0, + "queue_in_background": 0, + "quick_entry": 0, + "read_only": 0, + "recipient_account_field": null, + "restrict_to_domain": null, + "route": null, + "row_format": "Dynamic", + "rows_threshold_for_grid_search": 20, + "search_fields": null, + "sender_field": null, + "sender_name_field": null, + "show_name_in_global_search": 0, + "show_preview_popup": 0, + "show_title_field_in_link": 0, + "smallicon": null, + "sort_field": "modified", + "sort_order": "DESC", + "states": [], + "subject": null, + "subject_field": null, + "tag_fields": null, + "timeline_field": null, + "title_field": null, + "track_changes": 0, + "track_seen": 0, + "track_views": 0, + "translated_doctype": 0, + "website_search_field": null + }, + { + "_assign": null, + "_comments": null, + "_last_update": null, + "_liked_by": null, + "_user_tags": null, + "actions": [], + "allow_auto_repeat": 0, + "allow_copy": 0, + "allow_events_in_timeline": 0, + "allow_guest_to_view": 0, + "allow_import": 0, + "allow_rename": 1, + "app": null, + "autoname": null, + "beta": 0, + "color": null, + "colour": null, + "custom": 1, + "default_email_template": null, + "default_print_format": null, + "default_view": null, + "description": null, + "docstatus": 0, + "doctype": "DocType", + "document_type": "", + "documentation": null, + "editable_grid": 0, + "email_append_to": 0, + "engine": "InnoDB", + "fields": [ + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "form_template", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Form Template", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Bid Meeting Note Form", + "parent": "Bid Meeting Note", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "bid_meeting", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Bid Meeting", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "On-Site Meeting", + "parent": "Bid Meeting Note", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "notes", + "fieldtype": "Small Text", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Notes", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Bid Meeting Note", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "fields", + "fieldtype": "Table", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Fields", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Bid Meeting Note Field", + "parent": "Bid Meeting Note", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "quantities", + "fieldtype": "Table", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Quantities", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Bid Meeting Note Field Quantity", + "parent": "Bid Meeting Note", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + } + ], + "force_re_route_to_default_view": 0, + "grid_page_length": 50, + "has_web_view": 0, + "hide_toolbar": 0, + "icon": null, + "image_field": null, + "in_create": 0, + "index_web_pages_for_search": 1, + "is_calendar_and_gantt": 0, + "is_published_field": null, + "is_submittable": 0, + "is_tree": 0, + "is_virtual": 0, + "issingle": 0, + "istable": 0, + "links": [], + "make_attachments_public": 0, + "max_attachments": 0, + "menu_index": null, + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:17.135078", + "module": "Custom UI", + "name": "Bid Meeting Note", + "naming_rule": "", + "nsm_parent_field": null, + "parent_node": null, + "permissions": [ + { + "amend": 0, + "cancel": 0, + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "if_owner": 0, + "import": 0, + "match": null, + "parent": "Bid Meeting Note", + "parentfield": "permissions", + "parenttype": "DocType", + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "System Manager", + "select": 0, + "share": 1, + "submit": 0, + "write": 1 + } + ], + "print_outline": null, + "protect_attached_files": 0, + "queue_in_background": 0, + "quick_entry": 0, + "read_only": 0, + "recipient_account_field": null, + "restrict_to_domain": null, + "route": null, + "row_format": "Dynamic", + "rows_threshold_for_grid_search": 20, + "search_fields": null, + "sender_field": null, + "sender_name_field": null, + "show_name_in_global_search": 0, + "show_preview_popup": 0, + "show_title_field_in_link": 0, + "smallicon": null, + "sort_field": "modified", + "sort_order": "DESC", + "states": [], + "subject": null, + "subject_field": null, + "tag_fields": null, + "timeline_field": null, + "title_field": null, + "track_changes": 0, + "track_seen": 0, + "track_views": 0, + "translated_doctype": 0, + "website_search_field": null + }, + { + "_assign": null, + "_comments": null, + "_last_update": null, + "_liked_by": null, + "_user_tags": null, + "actions": [], + "allow_auto_repeat": 0, + "allow_copy": 0, + "allow_events_in_timeline": 0, + "allow_guest_to_view": 0, + "allow_import": 0, + "allow_rename": 1, + "app": null, + "autoname": null, + "beta": 0, + "color": null, + "colour": null, + "custom": 1, + "default_email_template": null, + "default_print_format": null, + "default_view": null, + "description": null, + "docstatus": 0, + "doctype": "DocType", + "document_type": "", + "documentation": null, + "editable_grid": 1, + "email_append_to": 0, + "engine": "InnoDB", + "fields": [ + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "task", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Task", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Task", + "parent": "Project Task Link", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + } + ], + "force_re_route_to_default_view": 0, + "grid_page_length": 50, + "has_web_view": 0, + "hide_toolbar": 0, + "icon": null, + "image_field": null, + "in_create": 0, + "index_web_pages_for_search": 1, + "is_calendar_and_gantt": 0, + "is_published_field": null, + "is_submittable": 0, + "is_tree": 0, + "is_virtual": 0, + "issingle": 0, + "istable": 1, + "links": [], + "make_attachments_public": 0, + "max_attachments": 0, + "menu_index": null, + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:17.193504", + "module": "Custom UI", + "name": "Project Task Link", + "naming_rule": "", + "nsm_parent_field": null, + "parent_node": null, + "permissions": [], + "print_outline": null, + "protect_attached_files": 0, + "queue_in_background": 0, + "quick_entry": 0, + "read_only": 0, + "recipient_account_field": null, + "restrict_to_domain": null, + "route": null, + "row_format": "Dynamic", + "rows_threshold_for_grid_search": 20, + "search_fields": null, + "sender_field": null, + "sender_name_field": null, + "show_name_in_global_search": 0, + "show_preview_popup": 0, + "show_title_field_in_link": 0, + "smallicon": null, + "sort_field": "modified", + "sort_order": "DESC", + "states": [], + "subject": null, + "subject_field": null, + "tag_fields": null, + "timeline_field": null, + "title_field": null, + "track_changes": 0, + "track_seen": 0, + "track_views": 0, + "translated_doctype": 0, + "website_search_field": null + }, + { + "_assign": null, + "_comments": null, + "_last_update": null, + "_liked_by": null, + "_user_tags": null, + "actions": [], + "allow_auto_repeat": 0, + "allow_copy": 0, + "allow_events_in_timeline": 0, + "allow_guest_to_view": 0, + "allow_import": 0, + "allow_rename": 1, + "app": null, + "autoname": null, + "beta": 0, + "color": null, + "colour": null, + "custom": 1, + "default_email_template": null, + "default_print_format": null, + "default_view": null, + "description": null, + "docstatus": 0, + "doctype": "DocType", + "document_type": "", + "documentation": null, + "editable_grid": 0, + "email_append_to": 0, + "engine": "InnoDB", + "fields": [ + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "section_break_thqn", + "fieldtype": "Section Break", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": null, + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Condition", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + } + ], + "force_re_route_to_default_view": 0, + "grid_page_length": 50, + "has_web_view": 0, + "hide_toolbar": 0, + "icon": null, + "image_field": null, + "in_create": 0, + "index_web_pages_for_search": 1, + "is_calendar_and_gantt": 0, + "is_published_field": null, + "is_submittable": 0, + "is_tree": 0, + "is_virtual": 0, + "issingle": 0, + "istable": 0, + "links": [], + "make_attachments_public": 0, + "max_attachments": 0, + "menu_index": null, + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:17.253714", + "module": "Custom UI", + "name": "Condition", + "naming_rule": "", + "nsm_parent_field": null, + "parent_node": null, + "permissions": [ + { + "amend": 0, + "cancel": 0, + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "if_owner": 0, + "import": 0, + "match": null, + "parent": "Condition", + "parentfield": "permissions", + "parenttype": "DocType", + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "System Manager", + "select": 0, + "share": 1, + "submit": 0, + "write": 1 + } + ], + "print_outline": null, + "protect_attached_files": 0, + "queue_in_background": 0, + "quick_entry": 0, + "read_only": 0, + "recipient_account_field": null, + "restrict_to_domain": null, + "route": null, + "row_format": "Dynamic", + "rows_threshold_for_grid_search": 20, + "search_fields": null, + "sender_field": null, + "sender_name_field": null, + "show_name_in_global_search": 0, + "show_preview_popup": 0, + "show_title_field_in_link": 0, + "smallicon": null, + "sort_field": "modified", + "sort_order": "DESC", + "states": [], + "subject": null, + "subject_field": null, + "tag_fields": null, + "timeline_field": null, + "title_field": null, + "track_changes": 0, + "track_seen": 0, + "track_views": 0, + "translated_doctype": 0, + "website_search_field": null + }, + { + "_assign": null, + "_comments": null, + "_last_update": null, + "_liked_by": null, + "_user_tags": null, + "actions": [], + "allow_auto_repeat": 0, + "allow_copy": 0, + "allow_events_in_timeline": 0, + "allow_guest_to_view": 0, + "allow_import": 0, + "allow_rename": 1, + "app": null, + "autoname": null, + "beta": 0, + "color": null, + "colour": null, + "custom": 1, + "default_email_template": null, + "default_print_format": null, + "default_view": null, + "description": null, + "docstatus": 0, + "doctype": "DocType", + "document_type": "", + "documentation": null, + "editable_grid": 1, + "email_append_to": 0, + "engine": "InnoDB", + "fields": [ + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "quantity", + "fieldtype": "Int", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Quantity", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Bid Meeting Note Field Quantity", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "meeting_note_field", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Meeting Note Field", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Bid Meeting Note Field", + "parent": "Bid Meeting Note Field Quantity", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "item", + "fieldtype": "Data", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Item", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Bid Meeting Note Field Quantity", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + } + ], + "force_re_route_to_default_view": 0, + "grid_page_length": 50, + "has_web_view": 0, + "hide_toolbar": 0, + "icon": null, + "image_field": null, + "in_create": 0, + "index_web_pages_for_search": 1, + "is_calendar_and_gantt": 0, + "is_published_field": null, + "is_submittable": 0, + "is_tree": 0, + "is_virtual": 0, + "issingle": 0, + "istable": 1, + "links": [], + "make_attachments_public": 0, + "max_attachments": 0, + "menu_index": null, + "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", + "modified": "2026-01-26 01:52:17.308226", + "module": "Custom UI", + "name": "Bid Meeting Note Field Quantity", + "naming_rule": "", + "nsm_parent_field": null, + "parent_node": null, + "permissions": [], + "print_outline": null, + "protect_attached_files": 0, + "queue_in_background": 0, + "quick_entry": 0, + "read_only": 0, + "recipient_account_field": null, + "restrict_to_domain": null, + "route": null, + "row_format": "Dynamic", + "rows_threshold_for_grid_search": 20, + "search_fields": null, + "sender_field": null, + "sender_name_field": null, + "show_name_in_global_search": 0, + "show_preview_popup": 0, + "show_title_field_in_link": 0, + "smallicon": null, + "sort_field": "modified", + "sort_order": "DESC", + "states": [], + "subject": null, + "subject_field": null, + "tag_fields": null, + "timeline_field": null, + "title_field": null, + "track_changes": 0, + "track_seen": 0, + "track_views": 0, + "translated_doctype": 0, + "website_search_field": null + }, + { + "_assign": null, + "_comments": null, + "_last_update": null, + "_liked_by": null, + "_user_tags": null, + "actions": [], + "allow_auto_repeat": 0, + "allow_copy": 0, + "allow_events_in_timeline": 0, + "allow_guest_to_view": 0, + "allow_import": 0, + "allow_rename": 1, + "app": null, + "autoname": null, + "beta": 0, + "color": null, + "colour": null, + "custom": 1, + "default_email_template": null, + "default_print_format": null, + "default_view": null, + "description": null, + "docstatus": 0, + "doctype": "DocType", + "document_type": "", + "documentation": null, + "editable_grid": 0, + "email_append_to": 0, + "engine": "InnoDB", + "fields": [ + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "expected_end_date", + "fieldtype": "Date", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Expected End Date", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Service Address 2", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "expected_end_time", + "fieldtype": "Time", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Expected End Time", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Service Address 2", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "actual_end_date", + "fieldtype": "Date", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Actual End Date", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Service Address 2", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "actual_end_time", + "fieldtype": "Time", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Actual End Time", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Service Address 2", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "project_template", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Project Template", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Project Template", + "parent": "Service Address 2", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "project", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Project", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Project", + "parent": "Service Address 2", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": "Open", + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "status", + "fieldtype": "Select", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Status", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Open\nScheduled\nStarted\nCompleted\nCanceled", + "parent": "Service Address 2", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "expected_start_date", + "fieldtype": "Date", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Expected Start Date", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Service Address 2", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "expected_start_time", + "fieldtype": "Time", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Expected Start Time", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Service Address 2", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "actual_start_date", + "fieldtype": "Date", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Actual Start Date", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Service Address 2", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "actual_start_time", + "fieldtype": "Time", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Actual Start Time", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": null, + "parent": "Service Address 2", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "customer", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Customer", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Customer", + "parent": "Service Address 2", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "company", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Company", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Company", + "parent": "Service Address 2", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "service_address", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Service Address", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Address", + "parent": "Service Address 2", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "collapsible_depends_on": null, + "columns": 0, + "default": null, + "depends_on": null, + "description": null, + "documentation_url": null, + "fetch_from": null, + "fetch_if_empty": 0, + "fieldname": "foreman", + "fieldtype": "Link", + "hidden": 0, + "hide_border": 0, + "hide_days": 0, + "hide_seconds": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "is_virtual": 0, + "label": "Foreman", + "length": 0, + "link_filters": null, + "make_attachment_public": 0, + "mandatory_depends_on": null, + "max_height": null, + "no_copy": 0, + "non_negative": 0, + "oldfieldname": null, + "oldfieldtype": null, + "options": "Employee", + "parent": "Service Address 2", + "parentfield": "fields", + "parenttype": "DocType", + "permlevel": 0, + "placeholder": null, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "print_width": null, + "read_only": 0, + "read_only_depends_on": null, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "show_dashboard": 0, + "show_on_timeline": 0, + "show_preview_popup": 0, + "sort_options": 0, + "translatable": 0, + "trigger": null, + "unique": 0, + "width": null + } + ], + "force_re_route_to_default_view": 0, + "grid_page_length": 50, + "has_web_view": 0, + "hide_toolbar": 0, + "icon": null, + "image_field": null, + "in_create": 0, + "index_web_pages_for_search": 1, + "is_calendar_and_gantt": 0, + "is_published_field": null, + "is_submittable": 0, + "is_tree": 0, + "is_virtual": 0, + "issingle": 0, + "istable": 0, + "links": [], + "make_attachments_public": 0, + "max_attachments": 0, + "menu_index": null, + "migration_hash": null, + "modified": "2026-01-27 04:34:52.205293", + "module": "Custom UI", + "name": "Service Address 2", + "naming_rule": "", + "nsm_parent_field": null, + "parent_node": null, + "permissions": [ + { + "amend": 0, + "cancel": 0, + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "if_owner": 0, + "import": 0, + "match": null, + "parent": "Service Address 2", + "parentfield": "permissions", + "parenttype": "DocType", + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "System Manager", + "select": 0, + "share": 1, + "submit": 0, + "write": 1 + } + ], + "print_outline": null, + "protect_attached_files": 0, + "queue_in_background": 0, + "quick_entry": 0, + "read_only": 0, + "recipient_account_field": null, + "restrict_to_domain": null, + "route": null, + "row_format": "Dynamic", + "rows_threshold_for_grid_search": 20, + "search_fields": null, + "sender_field": null, + "sender_name_field": null, + "show_name_in_global_search": 0, + "show_preview_popup": 0, + "show_title_field_in_link": 0, + "smallicon": null, + "sort_field": "modified", + "sort_order": "DESC", + "states": [], + "subject": null, + "subject_field": null, + "tag_fields": null, + "timeline_field": null, + "title_field": null, + "track_changes": 0, + "track_seen": 0, + "track_views": 0, + "translated_doctype": 0, + "website_search_field": null } ] \ No newline at end of file diff --git a/custom_ui/fixtures/email_template.json b/custom_ui/fixtures/email_template.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/custom_ui/fixtures/email_template.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/custom_ui/fixtures/property_setter.json b/custom_ui/fixtures/property_setter.json index acfc8ca..f3d55ca 100644 --- a/custom_ui/fixtures/property_setter.json +++ b/custom_ui/fixtures/property_setter.json @@ -1,4 +1,20 @@ [ + { + "default_value": null, + "doc_type": "Pre-Built Routes", + "docstatus": 0, + "doctype": "Property Setter", + "doctype_or_field": "DocField", + "field_name": "naming_series", + "is_system_generated": 1, + "modified": "2026-01-21 10:16:27.072272", + "module": null, + "name": "Pre-Built Routes-naming_series-options", + "property": "options", + "property_type": "Text", + "row_name": null, + "value": "Route - .#####" + }, { "default_value": null, "doc_type": "Item", @@ -7327,22 +7343,6 @@ "row_name": null, "value": "1" }, - { - "default_value": null, - "doc_type": "Contact", - "docstatus": 0, - "doctype": "Property Setter", - "doctype_or_field": "DocType", - "field_name": null, - "is_system_generated": 0, - "modified": "2024-12-23 13:33:08.995392", - "module": null, - "name": "Contact-main-naming_rule", - "property": "naming_rule", - "property_type": "Data", - "row_name": null, - "value": "Set by user" - }, { "default_value": null, "doc_type": "Contact", @@ -7375,22 +7375,6 @@ "row_name": null, "value": "creation" }, - { - "default_value": null, - "doc_type": "Contact", - "docstatus": 0, - "doctype": "Property Setter", - "doctype_or_field": "DocType", - "field_name": null, - "is_system_generated": 0, - "modified": "2024-12-23 16:11:50.106128", - "module": null, - "name": "Contact-main-autoname", - "property": "autoname", - "property_type": "Data", - "row_name": null, - "value": "full_name" - }, { "default_value": null, "doc_type": "Contact", @@ -10975,22 +10959,6 @@ "row_name": null, "value": "1" }, - { - "default_value": null, - "doc_type": "Project", - "docstatus": 0, - "doctype": "Property Setter", - "doctype_or_field": "DocType", - "field_name": null, - "is_system_generated": 0, - "modified": "2025-03-04 19:46:31.636284", - "module": null, - "name": "Project-main-autoname", - "property": "autoname", - "property_type": "Data", - "row_name": null, - "value": ".custom_installation_address.-PRO-.#####.-.YYYY." - }, { "default_value": null, "doc_type": "Payment Entry", @@ -11711,38 +11679,6 @@ "row_name": null, "value": "1" }, - { - "default_value": null, - "doc_type": "Address", - "docstatus": 0, - "doctype": "Property Setter", - "doctype_or_field": "DocType", - "field_name": null, - "is_system_generated": 0, - "modified": "2025-04-25 12:53:57.474107", - "module": null, - "name": "Address-main-naming_rule", - "property": "naming_rule", - "property_type": "Data", - "row_name": null, - "value": "" - }, - { - "default_value": null, - "doc_type": "Address", - "docstatus": 0, - "doctype": "Property Setter", - "doctype_or_field": "DocType", - "field_name": null, - "is_system_generated": 0, - "modified": "2025-04-25 12:53:57.545546", - "module": null, - "name": "Address-main-autoname", - "property": "autoname", - "property_type": "Data", - "row_name": null, - "value": "" - }, { "default_value": null, "doc_type": "Address", @@ -12175,22 +12111,6 @@ "row_name": null, "value": "[\"subject\", \"project\", \"custom_property\", \"issue\", \"type\", \"color\", \"is_group\", \"is_template\", \"column_break0\", \"status\", \"priority\", \"task_weight\", \"parent_task\", \"completed_by\", \"completed_on\", \"custom_foreman\", \"sb_timeline\", \"exp_start_date\", \"expected_time\", \"start\", \"column_break_11\", \"exp_end_date\", \"progress\", \"duration\", \"is_milestone\", \"sb_details\", \"description\", \"sb_depends_on\", \"depends_on\", \"depends_on_tasks\", \"sb_actual\", \"act_start_date\", \"actual_time\", \"column_break_15\", \"act_end_date\", \"sb_costing\", \"total_costing_amount\", \"total_expense_claim\", \"column_break_20\", \"total_billing_amount\", \"sb_more_info\", \"review_date\", \"closing_date\", \"column_break_22\", \"department\", \"company\", \"lft\", \"rgt\", \"old_parent\", \"template_task\"]" }, - { - "default_value": null, - "doc_type": "Project", - "docstatus": 0, - "doctype": "Property Setter", - "doctype_or_field": "DocType", - "field_name": null, - "is_system_generated": 0, - "modified": "2025-08-26 18:57:43.989451", - "module": null, - "name": "Project-main-field_order", - "property": "field_order", - "property_type": "Data", - "row_name": null, - "value": "[\"custom_column_break_k7sgq\", \"custom_installation_address\", \"naming_series\", \"project_name\", \"status\", \"custom_warranty_duration_days\", \"custom_warranty_expiration_date\", \"custom_warranty_information\", \"project_type\", \"percent_complete_method\", \"percent_complete\", \"column_break_5\", \"project_template\", \"expected_start_date\", \"expected_end_date\", \"custom_completion_date\", \"priority\", \"custom_foreman\", \"custom_hidden_fields\", \"department\", \"is_active\", \"custom_address\", \"custom_section_break_lgkpd\", \"custom_workflow_related_custom_fields__landry\", \"custom_permit_status\", \"custom_utlity_locate_status\", \"custom_crew_scheduling\", \"customer_details\", \"customer\", \"column_break_14\", \"sales_order\", \"users_section\", \"users\", \"copied_from\", \"section_break0\", \"notes\", \"section_break_18\", \"actual_start_date\", \"actual_time\", \"column_break_20\", \"actual_end_date\", \"project_details\", \"estimated_costing\", \"total_costing_amount\", \"total_expense_claim\", \"total_purchase_cost\", \"company\", \"column_break_28\", \"total_sales_amount\", \"total_billable_amount\", \"total_billed_amount\", \"total_consumed_material_cost\", \"cost_center\", \"margin\", \"gross_margin\", \"column_break_37\", \"per_gross_margin\", \"monitor_progress\", \"collect_progress\", \"holiday_list\", \"frequency\", \"from_time\", \"to_time\", \"first_email\", \"second_email\", \"daily_time_to_send\", \"day_to_send\", \"weekly_time_to_send\", \"column_break_45\", \"message\"]" - }, { "default_value": null, "doc_type": "Attendance", @@ -12303,54 +12223,6 @@ "row_name": null, "value": "[\"section_break_toee\", \"custom_location_of_meeting\", \"contact\", \"custom_phone_number\", \"custom_sms_optin\", \"custom_email_address\", \"custom_column_break_dsqvk\", \"appointment_date\", \"appointment_time\", \"status\", \"custom_internal_company\", \"custom_section_break_gndxh\", \"service_details\", \"custom_assigned_to\", \"auto_repeat\"]" }, - { - "default_value": null, - "doc_type": "Address", - "docstatus": 0, - "doctype": "Property Setter", - "doctype_or_field": "DocType", - "field_name": null, - "is_system_generated": 0, - "modified": "2025-11-10 01:29:00.331516", - "module": null, - "name": "Address-main-field_order", - "property": "field_order", - "property_type": "Data", - "row_name": null, - "value": "[\"address_details\", \"custom_column_break_vqa4d\", \"custom_column_break_jw2ty\", \"custom_installationservice_address\", \"custom_billing_address\", \"is_shipping_address\", \"is_primary_address\", \"custom_is_compnay_address\", \"custom_column_break_ky1zo\", \"custom_estimate_sent_status\", \"custom_onsite_meeting_scheduled\", \"custom_job_status\", \"custom_payment_received_status\", \"custom_section_break_fvgdt\", \"address_title\", \"address_type\", \"address_line1\", \"address_line2\", \"custom_linked_city\", \"custom_subdivision\", \"is_your_company_address\", \"custom_column_break_3mo7x\", \"state\", \"city\", \"pincode\", \"county\", \"country\", \"custom_column_break_rrto0\", \"custom_customer_to_bill\", \"custom_contact_name\", \"phone\", \"email_id\", \"fax\", \"tax_category\", \"disabled\", \"custom_section_break_aecpx\", \"column_break0\", \"custom_show_irrigation_district\", \"custom_google_map\", \"custom_latitude\", \"custom_longitude\", \"custom_address_for_coordinates\", \"linked_with\", \"custom_linked_contacts\", \"links\", \"custom_column_break_9cbvb\", \"custom_linked_companies\", \"custom_irrigation\", \"custom_upcoming_services\", \"custom_service_type\", \"custom_service_route\", \"custom_confirmation_status\", \"custom_backflow_test_form_filed\", \"custom_column_break_j79td\", \"custom_technician_assigned\", \"custom_scheduled_date\", \"custom_column_break_sqplk\", \"custom_test_route\", \"custom_tech\", \"custom_column_break_wcs7g\", \"custom_section_break_zruvq\", \"custom_irrigation_district\", \"custom_serial_\", \"custom_makemodel_\", \"custom_column_break_djjw3\", \"custom_backflow_location\", \"custom_shutoff_location\", \"custom_valve_boxes\", \"custom_timer_type_and_location\", \"custom_column_break_slusf\", \"custom_section_break_5d1cf\", \"custom_installed_by_sprinklers_nw\", \"custom_column_break_th7rq\", \"custom_installed_for\", \"custom_install_month\", \"custom_install_year\", \"custom_column_break_4itse\", \"custom_section_break_xfdtv\", \"custom_backflow_test_report\", \"custom_column_break_oxppn\", \"custom_photo_attachment\"]" - }, - { - "default_value": null, - "doc_type": "Address", - "docstatus": 0, - "doctype": "Property Setter", - "doctype_or_field": "DocType", - "field_name": null, - "is_system_generated": 0, - "modified": "2025-11-10 01:29:00.632202", - "module": null, - "name": "Address-main-links_order", - "property": "links_order", - "property_type": "Small Text", - "row_name": null, - "value": "[\"21ddd8462e\", \"c26b89d0d3\", \"ee207f2316\"]" - }, - { - "default_value": null, - "doc_type": "Address", - "docstatus": 0, - "doctype": "Property Setter", - "doctype_or_field": "DocType", - "field_name": null, - "is_system_generated": 0, - "modified": "2025-11-10 01:29:00.867308", - "module": null, - "name": "Address-main-states_order", - "property": "states_order", - "property_type": "Small Text", - "row_name": null, - "value": "[\"62m56h85vo\", \"62m5uugrvr\", \"62m57bgpkf\", \"62m5fgrjb0\"]" - }, { "default_value": null, "doc_type": "Payment Entry", @@ -12671,22 +12543,6 @@ "row_name": null, "value": "ISS-.YYYY.-" }, - { - "default_value": null, - "doc_type": "Contact", - "docstatus": 0, - "doctype": "Property Setter", - "doctype_or_field": "DocType", - "field_name": null, - "is_system_generated": 0, - "modified": "2025-11-26 03:43:13.493067", - "module": null, - "name": "Contact-main-field_order", - "property": "field_order", - "property_type": "Data", - "row_name": null, - "value": "[\"sb_01\", \"custom_column_break_g4zvy\", \"first_name\", \"custom_column_break_hpz5b\", \"middle_name\", \"custom_column_break_3pehb\", \"last_name\", \"contact_section\", \"links\", \"phone_nos\", \"email_ids\", \"custom_column_break_nfqbi\", \"is_primary_contact\", \"is_billing_contact\", \"custom_service_address\", \"user\", \"unsubscribed\", \"more_info\", \"custom_column_break_sn9hu\", \"full_name\", \"address\", \"company_name\", \"designation\", \"department\", \"image\", \"sb_00\", \"custom_column_break_kmlkz\", \"email_id\", \"mobile_no\", \"phone\", \"status\", \"gender\", \"salutation\", \"contact_details\", \"cb_00\", \"custom_test_label\", \"google_contacts\", \"google_contacts_id\", \"sync_with_google_contacts\", \"cb00\", \"pulled_from_google_contacts\", \"custom_column_break_ejxjz\"]" - }, { "default_value": null, "doc_type": "Contact", @@ -12735,22 +12591,6 @@ "row_name": null, "value": "[\"qagt2h4psk\"]" }, - { - "default_value": null, - "doc_type": "Lead", - "docstatus": 0, - "doctype": "Property Setter", - "doctype_or_field": "DocType", - "field_name": null, - "is_system_generated": 0, - "modified": "2026-01-07 04:42:08.600100", - "module": null, - "name": "Lead-main-field_order", - "property": "field_order", - "property_type": "Data", - "row_name": null, - "value": "[\"naming_series\", \"salutation\", \"first_name\", \"middle_name\", \"last_name\", \"custom_customer_name\", \"column_break_1\", \"lead_name\", \"customer_type\", \"job_title\", \"gender\", \"source\", \"col_break123\", \"lead_owner\", \"status\", \"customer\", \"type\", \"request_type\", \"contact_info_tab\", \"email_id\", \"website\", \"column_break_20\", \"mobile_no\", \"whatsapp_no\", \"column_break_16\", \"phone\", \"phone_ext\", \"organization_section\", \"company_name\", \"no_of_employees\", \"column_break_28\", \"annual_revenue\", \"industry\", \"market_segment\", \"column_break_31\", \"territory\", \"fax\", \"address_section\", \"address_html\", \"column_break_38\", \"city\", \"state\", \"country\", \"column_break2\", \"contact_html\", \"qualification_tab\", \"qualification_status\", \"column_break_64\", \"qualified_by\", \"qualified_on\", \"other_info_tab\", \"campaign_name\", \"company\", \"column_break_22\", \"language\", \"image\", \"title\", \"column_break_50\", \"disabled\", \"unsubscribed\", \"blog_subscriber\", \"activities_tab\", \"open_activities_html\", \"all_activities_section\", \"all_activities_html\", \"notes_tab\", \"notes_html\", \"notes\", \"dashboard_tab\"]" - }, { "default_value": null, "doc_type": "Address", @@ -12767,6 +12607,102 @@ "row_name": null, "value": "Billing\nShipping\nOffice\nPersonal\nPlant\nPostal\nShop\nSubsidiary\nWarehouse\nCurrent\nPermanent\nOther\nService" }, + { + "default_value": null, + "doc_type": "Lead", + "docstatus": 0, + "doctype": "Property Setter", + "doctype_or_field": "DocType", + "field_name": null, + "is_system_generated": 0, + "modified": "2026-01-19 15:35:00.062846", + "module": null, + "name": "Lead-main-field_order", + "property": "field_order", + "property_type": "Data", + "row_name": null, + "value": "[\"naming_series\", \"salutation\", \"first_name\", \"middle_name\", \"last_name\", \"custom_customer_name\", \"column_break_1\", \"lead_name\", \"customer_type\", \"companies\", \"quotations\", \"onsite_meetings\", \"job_title\", \"gender\", \"source\", \"col_break123\", \"lead_owner\", \"status\", \"customer\", \"type\", \"request_type\", \"contact_info_tab\", \"email_id\", \"website\", \"column_break_20\", \"mobile_no\", \"whatsapp_no\", \"column_break_16\", \"phone\", \"phone_ext\", \"organization_section\", \"company_name\", \"no_of_employees\", \"column_break_28\", \"annual_revenue\", \"industry\", \"market_segment\", \"column_break_31\", \"territory\", \"fax\", \"address_section\", \"address_html\", \"column_break_38\", \"city\", \"state\", \"country\", \"column_break2\", \"contact_html\", \"qualification_tab\", \"qualification_status\", \"column_break_64\", \"qualified_by\", \"qualified_on\", \"other_info_tab\", \"campaign_name\", \"company\", \"column_break_22\", \"language\", \"image\", \"title\", \"column_break_50\", \"disabled\", \"unsubscribed\", \"blog_subscriber\", \"activities_tab\", \"open_activities_html\", \"all_activities_section\", \"all_activities_html\", \"notes_tab\", \"notes_html\", \"notes\", \"dashboard_tab\", \"contacts\", \"primary_contact\", \"properties\", \"custom_billing_address\"]" + }, + { + "default_value": null, + "doc_type": "Address", + "docstatus": 0, + "doctype": "Property Setter", + "doctype_or_field": "DocType", + "field_name": null, + "is_system_generated": 0, + "modified": "2026-01-21 03:31:53.715660", + "module": null, + "name": "Address-main-naming_rule", + "property": "naming_rule", + "property_type": "Data", + "row_name": null, + "value": "Expression" + }, + { + "default_value": null, + "doc_type": "Address", + "docstatus": 0, + "doctype": "Property Setter", + "doctype_or_field": "DocType", + "field_name": null, + "is_system_generated": 0, + "modified": "2026-01-21 03:31:53.785594", + "module": null, + "name": "Address-main-autoname", + "property": "autoname", + "property_type": "Data", + "row_name": null, + "value": "format:{full_address)-#-{MM}-{YYYY}-{####}" + }, + { + "default_value": null, + "doc_type": "Address", + "docstatus": 0, + "doctype": "Property Setter", + "doctype_or_field": "DocType", + "field_name": null, + "is_system_generated": 0, + "modified": "2026-01-21 03:31:53.827100", + "module": null, + "name": "Address-main-field_order", + "property": "field_order", + "property_type": "Data", + "row_name": null, + "value": "[\"address_details\", \"custom_column_break_vqa4d\", \"custom_column_break_jw2ty\", \"custom_installationservice_address\", \"custom_billing_address\", \"is_shipping_address\", \"is_primary_address\", \"custom_is_compnay_address\", \"custom_column_break_ky1zo\", \"custom_estimate_sent_status\", \"custom_onsite_meeting_scheduled\", \"custom_job_status\", \"custom_payment_received_status\", \"custom_section_break_fvgdt\", \"address_title\", \"primary_contact\", \"address_type\", \"address_line1\", \"address_line2\", \"custom_linked_city\", \"custom_subdivision\", \"is_your_company_address\", \"custom_column_break_3mo7x\", \"state\", \"city\", \"pincode\", \"county\", \"country\", \"full_address\", \"latitude\", \"longitude\", \"onsite_meeting_scheduled\", \"estimate_sent_status\", \"job_status\", \"payment_received_status\", \"custom_column_break_rrto0\", \"custom_customer_to_bill\", \"lead_name\", \"customer_type\", \"customer_name\", \"contacts\", \"companies\", \"quotations\", \"onsite_meetings\", \"projects\", \"sales_orders\", \"tasks\", \"custom_contact_name\", \"phone\", \"email_id\", \"fax\", \"tax_category\", \"disabled\", \"custom_section_break_aecpx\", \"column_break0\", \"custom_show_irrigation_district\", \"custom_google_map\", \"custom_latitude\", \"custom_longitude\", \"custom_address_for_coordinates\", \"linked_with\", \"custom_linked_contacts\", \"links\", \"custom_column_break_9cbvb\", \"custom_linked_companies\", \"custom_irrigation\", \"custom_upcoming_services\", \"custom_service_type\", \"custom_service_route\", \"custom_confirmation_status\", \"custom_backflow_test_form_filed\", \"custom_column_break_j79td\", \"custom_technician_assigned\", \"custom_scheduled_date\", \"custom_column_break_sqplk\", \"custom_test_route\", \"custom_tech\", \"custom_column_break_wcs7g\", \"custom_section_break_zruvq\", \"custom_irrigation_district\", \"custom_serial_\", \"custom_makemodel_\", \"custom_column_break_djjw3\", \"custom_backflow_location\", \"custom_shutoff_location\", \"custom_valve_boxes\", \"custom_timer_type_and_location\", \"custom_column_break_slusf\", \"custom_section_break_5d1cf\", \"custom_installed_by_sprinklers_nw\", \"custom_column_break_th7rq\", \"custom_installed_for\", \"custom_install_month\", \"custom_install_year\", \"custom_column_break_4itse\", \"custom_section_break_xfdtv\", \"custom_backflow_test_report\", \"custom_column_break_oxppn\", \"custom_photo_attachment\"]" + }, + { + "default_value": null, + "doc_type": "Project Template", + "docstatus": 0, + "doctype": "Property Setter", + "doctype_or_field": "DocType", + "field_name": null, + "is_system_generated": 0, + "modified": "2026-01-21 04:34:22.663180", + "module": null, + "name": "Project Template-main-field_order", + "property": "field_order", + "property_type": "Data", + "row_name": null, + "value": "[\"project_type\", \"tasks\", \"company\", \"calendar_color\"]" + }, + { + "default_value": null, + "doc_type": "Project Template", + "docstatus": 0, + "doctype": "Property Setter", + "doctype_or_field": "DocField", + "field_name": "calendar_color", + "is_system_generated": 0, + "modified": "2026-01-21 04:34:22.740335", + "module": null, + "name": "Project Template-calendar_color-in_list_view", + "property": "in_list_view", + "property_type": "Check", + "row_name": null, + "value": "1" + }, { "default_value": null, "doc_type": "Project", @@ -15022,5 +14958,181 @@ "property_type": "Check", "row_name": null, "value": "1" + }, + { + "default_value": null, + "doc_type": "Task Type", + "docstatus": 0, + "doctype": "Property Setter", + "doctype_or_field": "DocType", + "field_name": null, + "is_system_generated": 0, + "modified": "2026-01-22 06:23:06.078264", + "module": null, + "name": "Task Type-main-naming_rule", + "property": "naming_rule", + "property_type": "Data", + "row_name": null, + "value": "Expression" + }, + { + "default_value": null, + "doc_type": "Task Type", + "docstatus": 0, + "doctype": "Property Setter", + "doctype_or_field": "DocType", + "field_name": null, + "is_system_generated": 0, + "modified": "2026-01-22 06:23:06.134175", + "module": null, + "name": "Task Type-main-autoname", + "property": "autoname", + "property_type": "Data", + "row_name": null, + "value": "format:{title}" + }, + { + "default_value": null, + "doc_type": "Task Type", + "docstatus": 0, + "doctype": "Property Setter", + "doctype_or_field": "DocField", + "field_name": "task_type_calculate_from", + "is_system_generated": 0, + "modified": "2026-01-22 09:31:29.877718", + "module": null, + "name": "Task Type-task_type_calculate_from-mandatory_depends_on", + "property": "mandatory_depends_on", + "property_type": "Data", + "row_name": null, + "value": "eval:doc.calculate_from == \"Task\"" + }, + { + "default_value": null, + "doc_type": "Lead", + "docstatus": 0, + "doctype": "Property Setter", + "doctype_or_field": "DocType", + "field_name": null, + "is_system_generated": 0, + "modified": "2026-01-26 01:51:02.536818", + "module": null, + "name": "Lead-main-autoname", + "property": "autoname", + "property_type": "Data", + "row_name": null, + "value": "format:{custom_customer_name}-#-{YYYY}-{MM}-{####}" + }, + { + "default_value": null, + "doc_type": "Address", + "docstatus": 0, + "doctype": "Property Setter", + "doctype_or_field": "DocType", + "field_name": null, + "is_system_generated": 0, + "modified": "2026-01-26 02:35:09.522811", + "module": null, + "name": "Address-main-links_order", + "property": "links_order", + "property_type": "Small Text", + "row_name": null, + "value": "[\"21ddd8462e\", \"c26b89d0d3\", \"ee207f2316\"]" + }, + { + "default_value": null, + "doc_type": "Address", + "docstatus": 0, + "doctype": "Property Setter", + "doctype_or_field": "DocType", + "field_name": null, + "is_system_generated": 0, + "modified": "2026-01-26 02:35:09.598292", + "module": null, + "name": "Address-main-states_order", + "property": "states_order", + "property_type": "Small Text", + "row_name": null, + "value": "[\"62m56h85vo\", \"62m5uugrvr\", \"62m57bgpkf\", \"62m5fgrjb0\"]" + }, + { + "default_value": null, + "doc_type": "Contact", + "docstatus": 0, + "doctype": "Property Setter", + "doctype_or_field": "DocType", + "field_name": null, + "is_system_generated": 0, + "modified": "2026-01-26 02:40:01.394710", + "module": null, + "name": "Contact-main-naming_rule", + "property": "naming_rule", + "property_type": "Data", + "row_name": null, + "value": "Expression" + }, + { + "default_value": null, + "doc_type": "Contact", + "docstatus": 0, + "doctype": "Property Setter", + "doctype_or_field": "DocType", + "field_name": null, + "is_system_generated": 0, + "modified": "2026-01-26 02:40:01.427255", + "module": null, + "name": "Contact-main-autoname", + "property": "autoname", + "property_type": "Data", + "row_name": null, + "value": "format:{full-name}-#-{MM}-{YYYY}-{####}" + }, + { + "default_value": null, + "doc_type": "Contact", + "docstatus": 0, + "doctype": "Property Setter", + "doctype_or_field": "DocType", + "field_name": null, + "is_system_generated": 0, + "modified": "2026-01-26 02:40:01.458831", + "module": null, + "name": "Contact-main-field_order", + "property": "field_order", + "property_type": "Data", + "row_name": null, + "value": "[\"sb_01\", \"custom_column_break_g4zvy\", \"first_name\", \"custom_column_break_hpz5b\", \"middle_name\", \"custom_column_break_3pehb\", \"last_name\", \"email\", \"customer_type\", \"customer_name\", \"addresses\", \"contact_section\", \"links\", \"phone_nos\", \"email_ids\", \"custom_column_break_nfqbi\", \"is_primary_contact\", \"is_billing_contact\", \"custom_service_address\", \"user\", \"unsubscribed\", \"more_info\", \"custom_column_break_sn9hu\", \"full_name\", \"address\", \"company_name\", \"designation\", \"role\", \"department\", \"image\", \"sb_00\", \"custom_column_break_kmlkz\", \"email_id\", \"mobile_no\", \"phone\", \"status\", \"gender\", \"salutation\", \"contact_details\", \"cb_00\", \"custom_test_label\", \"google_contacts\", \"google_contacts_id\", \"sync_with_google_contacts\", \"cb00\", \"pulled_from_google_contacts\", \"custom_column_break_ejxjz\"]" + }, + { + "default_value": null, + "doc_type": "Project", + "docstatus": 0, + "doctype": "Property Setter", + "doctype_or_field": "DocType", + "field_name": null, + "is_system_generated": 0, + "modified": "2026-01-26 10:42:06.682515", + "module": null, + "name": "Project-main-autoname", + "property": "autoname", + "property_type": "Data", + "row_name": null, + "value": "format:{project_template}-#-PRO-{#####}-{YYYY}" + }, + { + "default_value": null, + "doc_type": "Project", + "docstatus": 0, + "doctype": "Property Setter", + "doctype_or_field": "DocType", + "field_name": null, + "is_system_generated": 0, + "modified": "2026-01-26 10:42:06.862234", + "module": null, + "name": "Project-main-field_order", + "property": "field_order", + "property_type": "Data", + "row_name": null, + "value": "[\"custom_column_break_k7sgq\", \"custom_installation_address\", \"naming_series\", \"project_name\", \"job_address\", \"status\", \"custom_warranty_duration_days\", \"custom_warranty_expiration_date\", \"custom_warranty_information\", \"project_type\", \"percent_complete_method\", \"percent_complete\", \"column_break_5\", \"project_template\", \"expected_start_date\", \"expected_start_time\", \"expected_end_date\", \"expected_end_time\", \"is_scheduled\", \"invoice_status\", \"custom_completion_date\", \"priority\", \"custom_foreman\", \"custom_hidden_fields\", \"department\", \"service_appointment\", \"tasks\", \"is_active\", \"custom_address\", \"custom_section_break_lgkpd\", \"custom_workflow_related_custom_fields__landry\", \"custom_permit_status\", \"custom_utlity_locate_status\", \"custom_crew_scheduling\", \"customer_details\", \"customer\", \"column_break_14\", \"sales_order\", \"users_section\", \"users\", \"copied_from\", \"section_break0\", \"notes\", \"section_break_18\", \"actual_start_date\", \"actual_start_time\", \"actual_time\", \"column_break_20\", \"actual_end_date\", \"actual_end_time\", \"project_details\", \"estimated_costing\", \"total_costing_amount\", \"total_expense_claim\", \"total_purchase_cost\", \"company\", \"column_break_28\", \"total_sales_amount\", \"total_billable_amount\", \"total_billed_amount\", \"total_consumed_material_cost\", \"cost_center\", \"margin\", \"gross_margin\", \"column_break_37\", \"per_gross_margin\", \"monitor_progress\", \"collect_progress\", \"holiday_list\", \"frequency\", \"from_time\", \"to_time\", \"first_email\", \"second_email\", \"daily_time_to_send\", \"day_to_send\", \"weekly_time_to_send\", \"column_break_45\", \"subject\", \"message\"]" } ] \ No newline at end of file diff --git a/custom_ui/hooks.py b/custom_ui/hooks.py index 184b82c..9bd60cf 100644 --- a/custom_ui/hooks.py +++ b/custom_ui/hooks.py @@ -26,6 +26,10 @@ add_to_apps_screen = [ # "has_permission": "custom_ui.api.permission.has_app_permission" } ] + +requires = [ + "holidays==0.89" +] # Apps # ------------------ @@ -33,13 +37,13 @@ add_to_apps_screen = [ # Each item in the list will be shown as an app in the apps page # add_to_apps_screen = [ -# { -# "name": "custom_ui", -# "logo": "/assets/custom_ui/logo.png", -# "title": "Custom Ui", -# "route": "/custom_ui", -# "has_permission": "custom_ui.api.permission.has_app_permission" -# } +# { +# "name": "custom_ui", +# "logo": "/assets/custom_ui/logo.png", +# "title": "Custom Ui", +# "route": "/custom_ui", +# "has_permission": "custom_ui.api.permission.has_app_permission" +# } # ] # Includes in @@ -82,7 +86,7 @@ add_to_apps_screen = [ # website user home page (by Role) # role_home_page = { -# "Role": "home_page" +# "Role": "home_page" # } # Generators @@ -96,8 +100,8 @@ add_to_apps_screen = [ # add methods and filters to jinja environment # jinja = { -# "methods": "custom_ui.utils.jinja_methods", -# "filters": "custom_ui.utils.jinja_filters" +# "methods": "custom_ui.utils.jinja_methods", +# "filters": "custom_ui.utils.jinja_filters" # } # Installation @@ -139,11 +143,11 @@ add_to_apps_screen = [ # Permissions evaluated in scripted ways # permission_query_conditions = { -# "Event": "frappe.desk.doctype.event.event.get_permission_query_conditions", +# "Event": "frappe.desk.doctype.event.event.get_permission_query_conditions", # } # # has_permission = { -# "Event": "frappe.desk.doctype.event.event.has_permission", +# "Event": "frappe.desk.doctype.event.event.has_permission", # } # DocType Class @@ -151,7 +155,7 @@ add_to_apps_screen = [ # Override standard doctype classes # override_doctype_class = { -# "ToDo": "custom_app.overrides.CustomToDo" +# "ToDo": "custom_app.overrides.CustomToDo" # } # Document Events @@ -159,11 +163,11 @@ add_to_apps_screen = [ # Hook on document methods and events doc_events = { - "On-Site Meeting": { - "after_insert": "custom_ui.events.onsite_meeting.after_insert", + "On-Site Meeting": { + "after_insert": "custom_ui.events.onsite_meeting.after_insert", "before_save": "custom_ui.events.onsite_meeting.before_save", "before_insert": "custom_ui.events.onsite_meeting.before_insert" - }, + }, "Address": { "before_insert": "custom_ui.events.address.before_insert" }, @@ -181,32 +185,48 @@ doc_events = { }, "Project": { "before_insert": "custom_ui.events.jobs.before_insert", - "after_insert": "custom_ui.events.jobs.after_insert" + "after_insert": "custom_ui.events.jobs.after_insert", + "before_save": "custom_ui.events.jobs.before_save", + "on_update": "custom_ui.events.jobs.after_save" }, "Task": { - "before_insert": "custom_ui.events.task.before_insert" + "before_insert": "custom_ui.events.task.before_insert", + "after_insert": "custom_ui.events.task.after_insert", + "before_save": "custom_ui.events.task.before_save" + }, + "Bid Meeting Note Form": { + "after_insert": "custom_ui.events.general.attach_bid_note_form_to_project_template" + }, + "Service Address 2": { + "before_save": "custom_ui.events.service_appointment.before_save", + "after_insert": "custom_ui.events.service_appointment.after_insert", + "on_update": "custom_ui.events.service_appointment.on_update" } } fixtures = [ + { + "dt": "Email Template", + "filters": [ + ["name", "in", ["Customer Invoice"]] + ] + }, { "dt": "DocType", "filters": [ ["custom", "=", 1] ] }, - { - "dt": "Custom Field" - }, - { - "dt": "Property Setter" - }, - { - "dt": "Client Script" - }, - { - "dt": "Server Script" - } + + # These don't have reliable flags → export all + {"dt": "Custom Field"}, + {"dt": "Property Setter"}, + {"dt": "Client Script"}, + {"dt": "Server Script"}, + # {"dt": "Report"}, + # {"dt": "Print Format"}, + # {"dt": "Dashboard"}, + # {"dt": "Workspace"}, ] @@ -218,21 +238,21 @@ fixtures = [ # --------------- # scheduler_events = { -# "all": [ -# "custom_ui.tasks.all" -# ], -# "daily": [ -# "custom_ui.tasks.daily" -# ], -# "hourly": [ -# "custom_ui.tasks.hourly" -# ], -# "weekly": [ -# "custom_ui.tasks.weekly" -# ], -# "monthly": [ -# "custom_ui.tasks.monthly" -# ], +# "all": [ +# "custom_ui.tasks.all" +# ], +# "daily": [ +# "custom_ui.tasks.daily" +# ], +# "hourly": [ +# "custom_ui.tasks.hourly" +# ], +# "weekly": [ +# "custom_ui.tasks.weekly" +# ], +# "monthly": [ +# "custom_ui.tasks.monthly" +# ], # } # Testing @@ -244,14 +264,14 @@ fixtures = [ # ------------------------------ # # override_whitelisted_methods = { -# "frappe.desk.doctype.event.event.get_events": "custom_ui.event.get_events" +# "frappe.desk.doctype.event.event.get_events": "custom_ui.event.get_events" # } # # each overriding function accepts a `data` argument; # generated from the base implementation of the doctype dashboard, # along with any modifications made in other Frappe apps # override_doctype_dashboards = { -# "Task": "custom_ui.task.get_dashboard_data" +# "Task": "custom_ui.task.get_dashboard_data" # } # exempt linked doctypes from being automatically cancelled @@ -277,37 +297,37 @@ fixtures = [ # -------------------- # user_data_fields = [ -# { -# "doctype": "{doctype_1}", -# "filter_by": "{filter_by}", -# "redact_fields": ["{field_1}", "{field_2}"], -# "partial": 1, -# }, -# { -# "doctype": "{doctype_2}", -# "filter_by": "{filter_by}", -# "partial": 1, -# }, -# { -# "doctype": "{doctype_3}", -# "strict": False, -# }, -# { -# "doctype": "{doctype_4}" -# } +# { +# "doctype": "{doctype_1}", +# "filter_by": "{filter_by}", +# "redact_fields": ["{field_1}", "{field_2}"], +# "partial": 1, +# }, +# { +# "doctype": "{doctype_2}", +# "filter_by": "{filter_by}", +# "partial": 1, +# }, +# { +# "doctype": "{doctype_3}", +# "strict": False, +# }, +# { +# "doctype": "{doctype_4}" +# } # ] # Authentication and authorization # -------------------------------- # auth_hooks = [ -# "custom_ui.auth.validate" +# "custom_ui.auth.validate" # ] # Automatically update python controller files with type annotations for this app. # export_python_type_annotations = True # default_log_clearing_doctypes = { -# "Logging DocType Name": 30 # days to retain logs +# "Logging DocType Name": 30 # days to retain logs # } diff --git a/custom_ui/install.py b/custom_ui/install.py index 014cf70..c4a42ae 100644 --- a/custom_ui/install.py +++ b/custom_ui/install.py @@ -4,6 +4,8 @@ import subprocess import sys import frappe from .utils import create_module +import holidays +from datetime import date, timedelta def after_install(): create_module() @@ -17,6 +19,11 @@ def after_install(): frappe.reload_doctype("On-Site Meeting") update_onsite_meeting_fields() update_address_fields() + check_and_create_holiday_list() + create_project_templates() + create_task_types() + # create_tasks() + create_bid_meeting_note_form_templates() build_frontend() def after_migrate(): @@ -30,7 +37,13 @@ def after_migrate(): frappe.clear_cache(doctype=doctype) frappe.reload_doctype(doctype) - update_address_fields() + check_and_create_holiday_list() + # create_project_templates() + create_task_types() + # create_tasks() + create_bid_meeting_note_form_templates() + + # update_address_fields() # build_frontend() @@ -52,7 +65,7 @@ def build_frontend(): frappe.log_error(message="No frontend directory found for custom_ui", title="Frontend Build Skipped") print(f"⚠️ Frontend directory does not exist. Skipping build. Path was {frontend_path}") return - + dist_path = os.path.join(app_root, "custom_ui", "public", "dist") should_build = True @@ -65,10 +78,10 @@ def build_frontend(): except subprocess.CalledProcessError as e: frappe.log_error(message=str(e), title="Frontend Build Failed") print(f"\n❌ Frontend build failed: {e}\n") - + def add_custom_fields(): from frappe.custom.doctype.custom_field.custom_field import create_custom_fields - + print("\n🔧 Adding custom fields to doctypes...") try: @@ -81,7 +94,7 @@ def add_custom_fields(): print(" ✅ Added 'Service' to Address address_type options.") except Exception as e: print(f" ⚠️ Failed to update Address address_type: {e}") - + custom_fields = { "Customer": [ dict( @@ -146,6 +159,13 @@ def add_custom_fields(): fieldtype="Link", options="Contact", insert_after="contacts" + ), + dict( + fieldname="tasks", + label="Tasks", + fieldtype="Table", + options="Customer Task Link", + insert_after="projects" ) ], "Lead": [ @@ -256,7 +276,7 @@ def add_custom_fields(): insert_after="full_address" ), dict( - fieldname="longitude", + fieldname="longitude", label="Longitude", fieldtype="Float", precision=8, @@ -266,7 +286,7 @@ def add_custom_fields(): fieldname="onsite_meeting_scheduled", label="On-Site Meeting Scheduled", fieldtype="Select", - options="Not Started\nIn Progress\nCompleted", + options="Not Started\nIn Progress\nCompleted", default="Not Started", insert_after="longitude" ), @@ -280,7 +300,7 @@ def add_custom_fields(): ), dict( fieldname="job_status", - label="Job Status", + label="Job Status", fieldtype="Select", options="Not Started\nIn Progress\nCompleted", default="Not Started", @@ -291,7 +311,7 @@ def add_custom_fields(): label="Payment Received Status", fieldtype="Select", options="Not Started\nIn Progress\nCompleted", - default="Not Started", + default="Not Started", insert_after="job_status" ), dict( @@ -327,6 +347,13 @@ def add_custom_fields(): fieldtype="Table", options="Address Company Link", insert_after="contacts" + ), + dict( + fieldname="tasks", + label="Tasks", + fieldtype="Table", + options="Address Task Link", + insert_after="projects" ) ], "Contact": [ @@ -539,7 +566,60 @@ def add_custom_fields(): options="Customer", insert_after="job_address", description="The customer for whom the project is being executed." - ) + ), + dict( + fieldname="expected_start_time", + label="Expected Start Time", + fieldtype="Time", + insert_after="expected_start_date" + ), + dict( + fieldname="expected_end_time", + label="Expected End Time", + fieldtype="Time", + insert_after="expected_end_date" + ), + dict( + fieldname="actual_start_time", + label="Actual Start Time", + fieldtype="Time", + insert_after="actual_start_date" + ), + dict( + fieldname="actual_end_time", + label="Actual End Time", + fieldtype="Time", + insert_after="actual_end_date" + ), + dict( + fieldname="is_scheduled", + label="Is Scheduled", + fieldtype="Check", + default=0, + insert_after="is_half_down_paid" + ), + dict( + fieldname="invoice_status", + label="Invoice Status", + fieldtype="Select", + default="Not Ready", + options="Not Ready\nReady to Invoice\nInvoice Created\nInvoice Sent", + insert_after="is_scheduled" + ), + dict( + fieldname="requires_half_payment", + label="Requires Half Payment", + fieldtype="Check", + default=0, + insert_after="expected_end_time" + ), + dict( + fieldname="is_half_down_paid", + label="Is Half Down Paid", + fieldtype="Check", + default=0, + insert_after="requires_half_payment" + ), ], "Project Template": [ dict( @@ -549,18 +629,33 @@ def add_custom_fields(): options="Company", insert_after="project_type", description="The company associated with this project template." + ), + dict( + fieldname="calendar_color", + label="Calendar Color", + fieldtype="Color", + insert_after="company" + ) + ], + "Task": [ + dict( + fieldname="project_template", + label="Project Template", + fieldtype="Link", + options="Project Template", + insert_after="project" ) ] } - + print("🔧 Custom fields to check per doctype:") for key, value in custom_fields.items(): print(f" • {key}: {len(value)} fields") print(f" Total fields to check: {sum(len(v) for v in custom_fields.values())}\n") - + missing_fields = [] fields_to_update = [] - + for doctype, field_options in custom_fields.items(): meta = frappe.get_meta(doctype) for field_spec in field_options: @@ -573,7 +668,7 @@ def add_custom_fields(): if frappe.db.exists("Custom Field", custom_field_name): custom_field_doc = frappe.get_doc("Custom Field", custom_field_name) needs_update = False - + # Compare important properties for key, desired_value in field_spec.items(): if key == "fieldname": @@ -582,10 +677,10 @@ def add_custom_fields(): if current_value != desired_value: needs_update = True break - + if needs_update: fields_to_update.append((doctype, fieldname, field_spec)) - + if missing_fields: print("\n❌ Missing custom fields:") for entry in missing_fields: @@ -594,36 +689,36 @@ def add_custom_fields(): missing_field_specs = build_missing_field_specs(custom_fields, missing_fields) create_custom_fields(missing_field_specs) print("✅ Missing custom fields created.") - + if fields_to_update: print("\n🔧 Updating custom fields with mismatched specs:") for doctype, fieldname, field_spec in fields_to_update: print(f" • {doctype}: {fieldname}") custom_field_name = f"{doctype}-{fieldname}" custom_field_doc = frappe.get_doc("Custom Field", custom_field_name) - + # Update all properties from field_spec for key, value in field_spec.items(): if key != "fieldname": setattr(custom_field_doc, key, value) - + custom_field_doc.save(ignore_permissions=True) - + frappe.db.commit() print("✅ Custom fields updated.") - + if not missing_fields and not fields_to_update: print("✅ All custom fields verified.") - + def update_onsite_meeting_fields(): """Update On-Site Meeting doctype fields to make start_time and end_time optional.""" print("\n🔧 Updating On-Site Meeting doctype fields...") - + try: # Get the doctype doctype = frappe.get_doc("DocType", "On-Site Meeting") - + # Find and update start_time and end_time fields updated_fields = [] for field in doctype.fields: @@ -631,20 +726,20 @@ def update_onsite_meeting_fields(): if field.reqd == 1: field.reqd = 0 updated_fields.append(field.fieldname) - + if updated_fields: # Save the doctype doctype.save(ignore_permissions=True) print(f"✅ Updated fields: {', '.join(updated_fields)} (set to not required)") else: print("✅ Fields already configured correctly") - + print("🔧 On-Site Meeting field update complete.\n") except Exception as e: print(f"❌ Error updating On-Site Meeting fields: {str(e)}") frappe.log_error(message=str(e), title="On-Site Meeting Field Update Failed") # Don't raise - this is not critical enough to stop migration - + def update_address_fields(): quotations = frappe.get_all("Quotation", pluck="name") addresses = frappe.get_all("Address", pluck="name") @@ -664,9 +759,9 @@ def update_address_fields(): combined_doctypes.append({"doctype": "Address", "name": address}) for task in tasks: combined_doctypes.append({"doctype": "Task", "name": task}) - + print(f"\n📍 Updating field values for {total_addresses} addresses, {total_quotations} quotations, {total_sales_orders} sales orders, and {total_tasks} tasks...") - + # Field update counters field_counters = { 'quotation_addresses_updated': 0, @@ -687,7 +782,7 @@ def update_address_fields(): 'contacts_updated': 0, 'tasks_updated': 0 } - + onsite_meta = frappe.get_meta("On-Site Meeting") onsite_status_field = "custom_status" if onsite_meta.has_field("custom_status") else "status" @@ -697,7 +792,7 @@ def update_address_fields(): bar_length = 30 filled_length = int(bar_length * index // total_doctypes) bar = '█' * filled_length + '░' * (bar_length - filled_length) - + # Print a three-line, refreshing progress block without adding new lines each loop progress_line = f"📊 Progress: [{bar}] {progress_percentage:3d}% ({index}/{total_doctypes})" counters_line = f" Fields updated: {field_counters['total_field_updates']} | DocTypes updated: {field_counters['addresses_updated'] + field_counters['quotations_updated'] + field_counters['sales_orders_updated'] + field_counters['customers_updated']}" @@ -728,7 +823,7 @@ def update_address_fields(): custom_installation_address = getattr(quotation_doc, 'custom_installation_address', None) custom_job_address = getattr(quotation_doc, 'custom_job_address', None) custom_project_template = getattr(quotation_doc, 'custom_project_template', None) - + updates = {} if custom_installation_address and not custom_job_address: updates['custom_job_address'] = custom_installation_address @@ -738,15 +833,15 @@ def update_address_fields(): updates['custom_project_template'] = "SNW Install" field_counters[f"{dict_field}_project_templates_updated"] += 1 field_counters['total_field_updates'] += 1 - + if updates: frappe.db.set_value(doc['doctype'], doc['name'], updates) field_counters[f"{dict_field}s_updated"] += 1 - + if doc['doctype'] == "Address": address_doc = frappe.get_doc("Address", doc['name']) updates = {} - + # Use getattr with default values instead of direct attribute access if not getattr(address_doc, 'full_address', None): address_parts_1 = [ @@ -758,57 +853,57 @@ def update_address_fields(): address_doc.state or "", address_doc.pincode or "", ] - + full_address = ", ".join([ " ".join(filter(None, address_parts_1)), " ".join(filter(None, address_parts_2)) - ]).strip() + ]).strip() updates['full_address'] = full_address field_counters['full_address'] += 1 field_counters['total_field_updates'] += 1 - + onsite_meeting = "Not Started" estimate_sent = "Not Started" job_status = "Not Started" payment_received = "Not Started" - - + + onsite_meetings = frappe.get_all("On-Site Meeting", fields=[onsite_status_field], filters={"address": address_doc.address_title}) if onsite_meetings and onsite_meetings[0]: status_value = onsite_meetings[0].get(onsite_status_field) onsite_meeting = "Completed" if status_value == "Completed" else "In Progress" - + estimates = frappe.get_all("Quotation", fields=["custom_sent", "docstatus", "custom_response"], filters={"custom_job_address": address_doc.address_title}) if estimates and estimates[0] and estimates[0]["custom_sent"] == 1 and estimates[0]["custom_response"]: estimate_sent = "Completed" elif estimates and estimates[0] and not (estimates[0]["custom_sent"] == 1 and estimates[0]["custom_response"]): estimate_sent = "In Progress" - + jobs = frappe.get_all("Project", fields=["status"], filters={"custom_installation_address": address_doc.address_title, "project_template": "SNW Install"}) if jobs and jobs[0] and jobs[0]["status"] == "Completed": job_status = "Completed" elif jobs and jobs[0]: job_status = "In Progress" - + sales_invoices = frappe.get_all("Sales Invoice", fields=["outstanding_amount"], filters={"custom_installation_address": address_doc.address_title}) # payments = frappe.get_all("Payment Entry", filters={"custom_installation_address": address_doc.address_title}) if sales_invoices and sales_invoices[0] and sales_invoices[0]["outstanding_amount"] == 0: payment_received = "Completed" elif sales_invoices and sales_invoices[0]: payment_received = "In Progress" - + customer_name = getattr(address_doc, 'custom_customer_to_bill', None) links = address_doc.get("links", []) customer_links = [link for link in links if link.link_doctype == "Customer"] needs_link_update = False - + if customer_name and frappe.db.exists("Customer", customer_name): customer_doc = frappe.get_doc("Customer", customer_name) - + # Check if address needs link update if not customer_links: needs_link_update = True - + if not address_doc.name in [link.address_name for link in customer_doc.get("custom_select_address", [])]: customer_doc.append("custom_select_address", { "address_name": address_doc.name @@ -816,7 +911,7 @@ def update_address_fields(): customer_doc.save(ignore_permissions=True) field_counters['customers_updated'] += 1 field_counters['total_field_updates'] += 1 - + if getattr(address_doc, 'custom_onsite_meeting_scheduled', None) != onsite_meeting: updates['custom_onsite_meeting_scheduled'] = onsite_meeting field_counters['custom_onsite_meeting_scheduled'] += 1 @@ -833,11 +928,11 @@ def update_address_fields(): updates['custom_payment_received_status'] = payment_received field_counters['custom_payment_received_status'] += 1 field_counters['total_field_updates'] += 1 - + if updates: frappe.db.set_value("Address", doc['name'], updates) field_counters['addresses_updated'] += 1 - + # Handle address links after db.set_value to avoid timestamp mismatch if needs_link_update: # Reload the document to get the latest version @@ -858,13 +953,13 @@ def update_address_fields(): frappe.db.set_value("Task", doc["name"], "custom_property", project_address if project_address else alt_project_address) field_counters['tasks_updated'] += 1 field_counters['total_field_updates'] += 1 - - - + + + # Commit every 100 records to avoid long transactions if index % 100 == 0: frappe.db.commit() - + # Print completion summary print(f"\n\n✅ DocType field value update completed!") print(f"📊 Summary:") @@ -886,7 +981,7 @@ def update_address_fields(): print(f" • Sales Order Addresses Updated: {field_counters['sales_order_addresses_updated']:,}") print(f" • Sales Order Project Templates Updated: {field_counters['sales_order_project_templates_updated']:,}") print("📍 DocType field value updates complete.\n") - + def build_missing_field_specs(custom_fields, missing_fields): missing_field_specs = {} for entry in missing_fields: @@ -896,5 +991,390 @@ def build_missing_field_specs(custom_fields, missing_fields): if field_spec["fieldname"] == fieldname: missing_field_specs[doctype].append(field_spec) break - - return missing_field_specs \ No newline at end of file + + return missing_field_specs + +def check_and_create_holiday_list(year=2026, country="US", weekly_off="Sunday"): + """Check if Holiday List for the given year exists, if not create it.""" + print(f"\n🔧 Checking for Holiday List for {country} in {year}...") + holiday_list_name = f"{country} Holidays {year}" + + if frappe.db.exists("Holiday List", holiday_list_name): + print(f"✅ Holiday List '{holiday_list_name}' already exists.") + return + else: + print(f"❌ Holiday List '{holiday_list_name}' does not exist. Creating...") + us_holidays = holidays.US(years=[year]) + sundays = get_all_sundays(year) + hl = frappe.get_doc({ + "doctype": "Holiday List", + "holiday_list_name": holiday_list_name, + "country": country, + "year": year, + "from_date": f"{year}-01-01", + "to_date": f"{year}-12-31", + "weekly_off": weekly_off, + "holidays": [ + { + "holiday_date": holiday_date, + "description": holiday_name + } for holiday_date, holiday_name in us_holidays.items() + ] + }) + for sunday in sundays: + hl.append("holidays", { + "holiday_date": sunday, + "description": "Sunday" + }) + hl.insert() + # hl.make_holiday_entries() + frappe.db.commit() + print(f"✅ Holiday List '{holiday_list_name}' created successfully.") + +def get_all_sundays(year): + sundays = [] + d = date(year, 1, 1) + + while d.weekday() != 6: + d += timedelta(days=1) + + while d.year == year: + sundays.append(d) + d += timedelta(days=7) + + return sundays + +def create_task_types(): + task_types = [ + { + "title": "811/Locate", + "name": "811/Locate", + "description": "Utility locate request prior to installation start.", + "base_date": "Start", + "offset_days": 7, + "offset_direction": "Before", + "calculate_from": "Service Address 2", + "trigger": "Scheduled", + "triggering_doctype": "Service Address 2", + }, + { + "title": "Permit", + "name": "Permit", + "description": "Permits required prior to installation start.", + "base_date": "Start", + "offset_days": 7, + "offset_direction": "Before", + "calculate_from": "Service Address 2", + "trigger": "Scheduled", + "triggering_doctype": "Service Address 2", + }, + { + "title": "1/2 Down Payment", + "name": "1/2 Down Payment", + "description": "Collect half down payment on project creation.", + "calculate_from": "Project", + "trigger": "Created", + "triggering_doctype": "Project", + "no_due_date": 1, + }, + { + "title": "Machine Staging", + "name": "Machine Staging", + "description": "Stage machinery one day before installation start.", + "base_date": "Start", + "offset_days": 1, + "offset_direction": "Before", + "calculate_from": "Service Address 2", + "triggering_doctype": "Service Address 2", + "trigger": "Scheduled", + }, + { + "title": "Final Invoice", + "name": "Final Invoice", + "description": "Send final invoice within 5 days of job completion.", + "base_date": "Completion", + "offset_days": 5, + "offset_direction": "After", + "calculate_from": "Service Address 2", + "triggering_doctype": "Service Address 2", + "trigger": "Completed", + }, + { + "title": "Backflow Test", + "name": "Backflow Test", + "description": "Backflow test after job completion if quoted.", + "base_date": "Completion", + "offset_days": 0, + "offset_direction": "After", + "calculate_from": "Service Address 2", + "triggering_doctype": "Service Address 2", + "trigger": "Completed", + }, + { + "title": "Schedule Permit Inspection", + "name": "Schedule Permit Inspection", + "description": "Schedule permit inspection 5 days after completion.", + "base_date": "Completion", + "offset_days": 5, + "offset_direction": "After", + "calculate_from": "Service Address 2", + "trigger": "Completed", + "triggering_doctype": "Service Address 2" + }, + { + "title": "15 Day Warranty Follow-Up", + "name": "15 Day Warranty Follow-Up", + "description": "15-day warranty follow-up after completion.", + "base_date": "Completion", + "offset_days": 15, + "offset_direction": "After", + "calculate_from": "Service Address 2", + "trigger": "Completed", + "triggering_doctype": "Service Address 2" + }, + { + "title": "30 Day Warranty Check", + "name": "30 Day Warranty Check", + "description": "30-day warranty check after completion.", + "base_date": "Completion", + "offset_days": 30, + "offset_direction": "After", + "calculate_from": "Service Address 2", + "triggering_doctype": "Service Address 2", + "trigger": "Completed", + }, + { + "title": "30 Day Payment Reminder", + "name": "30 Day Payment Reminder", + "description": "Payment reminder sent 30 days after completion.", + "base_date": "Completion", + "offset_days": 30, + "offset_direction": "After", + "calculate_from": "Service Address 2", + "trigger": "Completed", + "triggering_doctype": "Service Address 2" + }, + { + "title": "60 Day Late Payment Notice", + "name": "60 Day Late Payment Notice", + "description": "Late payment notification at 60 days post completion.", + "base_date": "Completion", + "offset_days": 60, + "offset_direction": "After", + "calculate_from": "Service Address 2", + "trigger": "Completed", + "triggering_doctype": "Service Address 2" + + }, + { + "title": "80 Day Lien Notice", + "name": "80 Day Lien Notice", + "description": "Lien notice if payment is still late after 80 days.", + "base_date": "Completion", + "offset_days": 80, + "offset_direction": "After", + "calculate_from": "Service Address 2", + "trigger": "Completed", + "triggering_doctype": "Service Address 2" + }, + { + "title": "365 Day Warranty Call / Walk", + "name": "365 Day Warranty Call / Walk", + "description": "One-year warranty call or walk-through.", + "base_date": "Completion", + "offset_days": 365, + "offset_direction": "After", + "calculate_from": "Service Address 2", + "trigger": "Completed", + "triggering_doctype": "Service Address 2" + }, + ] + + for task_type in task_types: + # Idempotency check + if frappe.db.exists("Task Type", task_type["name"]): + continue + + doc = frappe.get_doc({ + "doctype": "Task Type", + "title": task_type["title"], + "name": task_type["name"], + "description": task_type["description"], + "base_date": task_type.get("base_date"), + "offset_days": task_type.get("offset_days", 0), + "offset_direction": task_type.get("offset_direction"), + "calculate_from": task_type.get("calculate_from", "Service Address 2"), + "trigger": task_type["trigger"], + "no_due_date": task_type.get("no_due_date", 0), + "triggering_doctype": task_type.get("triggering_doctype", "Service Address 2") + }) + + doc.insert(ignore_permissions=True) + + + frappe.db.commit() + +def create_tasks(): + print("\n🔧 Creating default Tasks if they do not exist...") + default_tasks = [ + { + "task_name": "Initial Consultation", + "description": "Conduct an initial consultation with the client to discuss project requirements.", + "status": "Open", + "priority": "High", + "type": "Consultation" + }, + { + "task_name": "Site Survey", + "description": "Perform a site survey to assess conditions and gather necessary data.", + "status": "Open", + "priority": "Medium" + }, + { + "task_name": "Design Proposal", + "description": "Prepare and present a design proposal based on client needs and site survey findings.", + "status": "Open", + "priority": "High" + } + ] + + for task in default_tasks: + if frappe.db.exists("Task", task["task_name"]): + continue + doc = frappe.get_doc({ + "doctype": "Task", + "is_template": 1, + "task_name": task["task_name"], + "description": task["description"], + "status": task["status"], + "priority": task["priority"], + "type": task["type"] + }) + doc.insert(ignore_permissions=True) + +def create_project_templates(): + """Create default Project Templates if they do not exist.""" + print("\n🔧 Checking for default Project Templates...") + templates = { + "snw_templates": [ + { + "name": "SNW Install", + "project_type": "Service", + "company": "Sprinklers Northwest", + "calendar_color": "#FF5733" # Example color + } + ] + } + + +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": [ + { + "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", + "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: + # Idempotency check + if frappe.db.exists( + "Bid Meeting Note Form", + {"title": form["title"], "company": company}, + ): + continue + + 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) diff --git a/custom_ui/services/__init__.py b/custom_ui/services/__init__.py index ba04b9d..1fb0a17 100644 --- a/custom_ui/services/__init__.py +++ b/custom_ui/services/__init__.py @@ -3,4 +3,6 @@ from .contact_service import ContactService from .db_service import DbService from .client_service import ClientService from .estimate_service import EstimateService -from .onsite_meeting_service import OnSiteMeetingService \ No newline at end of file +from .onsite_meeting_service import OnSiteMeetingService +from .task_service import TaskService +from .service_appointment_service import ServiceAppointmentService \ No newline at end of file diff --git a/custom_ui/services/client_service.py b/custom_ui/services/client_service.py index 3207dd2..099b4d2 100644 --- a/custom_ui/services/client_service.py +++ b/custom_ui/services/client_service.py @@ -122,7 +122,6 @@ class ClientService: print(f"DEBUG: Linked quotation {quotation.get('quotation')} to customer") except Exception as e: print(f"ERROR: Failed to link quotation {quotation.get('quotation')}: {str(e)}") - frappe.log_error(f"Quotation linking error: {str(e)}", "convert_lead_to_customer") if update_onsite_meetings: print(f"DEBUG: Updating onsite meetings. Count: {len(lead_doc.get('onsite_meetings', []))}") diff --git a/custom_ui/services/service_appointment_service.py b/custom_ui/services/service_appointment_service.py new file mode 100644 index 0000000..a4d45d0 --- /dev/null +++ b/custom_ui/services/service_appointment_service.py @@ -0,0 +1,54 @@ +import frappe +from custom_ui.services import ContactService, AddressService, ClientService, DbService + +class ServiceAppointmentService: + + @staticmethod + def create(data): + """Create a new Service Appointment document.""" + print("DEBUG: Creating Service Appointment with data:", data) + service_appointment_doc = frappe.get_doc({ + "doctype": "Service Address 2", + **data + }) + service_appointment_doc.insert() + print("DEBUG: Created Service Appointment with name:", service_appointment_doc.name) + return service_appointment_doc + + @staticmethod + def get_full_dict(service_appointment_name: str) -> dict: + """Retrieve a Service Appointment document as a full dictionary.""" + print(f"DEBUG: Retrieving Service Appointment document with name: {service_appointment_name}") + service_appointment = frappe.get_doc("Service Address 2", service_appointment_name).as_dict() + service_appointment["service_address"] = AddressService.get_or_throw(service_appointment["service_address"]).as_dict() + service_appointment["customer"] = ClientService.get_client_or_throw(service_appointment["customer"]).as_dict() + service_appointment["project"] = DbService.get_or_throw("Project", service_appointment["project"]).as_dict() + + return service_appointment + + @staticmethod + def update_scheduled_dates(service_appointment_name: str, crew_lead_name: str,start_date, end_date, start_time=None, end_time=None): + """Update the scheduled start and end dates of a Service Appointment.""" + print(f"DEBUG: Updating scheduled dates for Service Appointment {service_appointment_name} to start: {start_date}, end: {end_date}") + service_appointment = DbService.get_or_throw("Service Address 2", service_appointment_name) + service_appointment.expected_start_date = start_date + service_appointment.expected_end_date = end_date + service_appointment.foreman = crew_lead_name + if start_time: + service_appointment.expected_start_time = start_time + if end_time: + service_appointment.expected_end_time = end_time + service_appointment.save() + print(f"DEBUG: Updated scheduled dates for Service Appointment {service_appointment_name}") + return service_appointment + + @staticmethod + def update_field(service_appointment_name: str, updates: list[tuple[str, any]]): + """Update specific fields of a Service Appointment.""" + print(f"DEBUG: Updating fields for Service Appointment {service_appointment_name} with updates: {updates}") + service_appointment = DbService.get_or_throw("Service Address 2", service_appointment_name) + for field, value in updates: + setattr(service_appointment, field, value) + service_appointment.save() + print(f"DEBUG: Updated fields for Service Appointment {service_appointment_name}") + return service_appointment \ No newline at end of file diff --git a/custom_ui/services/task_service.py b/custom_ui/services/task_service.py new file mode 100644 index 0000000..f03028b --- /dev/null +++ b/custom_ui/services/task_service.py @@ -0,0 +1,171 @@ +import frappe +from frappe.utils.safe_exec import safe_eval +from datetime import timedelta, datetime, date +from frappe.utils import getdate +class TaskService: + + + @staticmethod + def calculate_and_set_due_dates(task_names: list[str], event: str, current_triggering_dict=None): + """Calculate the due date for a list of tasks based on their expected end dates.""" + for task_name in task_names: + TaskService.check_and_update_task_due_date(task_name, event, current_triggering_dict) + + + @staticmethod + def get_tasks_by_project(project_name: str): + """Retrieve all tasks associated with a given project.""" + task_names = frappe.get_all("Task", filters={"project": project_name}, pluck="name") + tasks = [frappe.get_doc("Task", task_name) for task_name in task_names] + return tasks + + @staticmethod + def check_and_update_task_due_date(task_name: str, event: str, current_triggering_dict=None): + """Determine the triggering configuration for a given task.""" + task_type_doc = TaskService.get_task_type_doc(task_name) + if task_type_doc.no_due_date: + print(f"DEBUG: Task {task_name} is marked as no due date, skipping calculation.") + return + if task_type_doc.triggering_doctype != current_triggering_dict.get("doctype") and current_triggering_dict: + print(f"DEBUG: Task {task_name} triggering doctype {task_type_doc.triggering_doctype} does not match triggering doctype {current_triggering_dict.get('doctype')}, skipping calculation.") + return + if task_type_doc.trigger != event: + print(f"DEBUG: Task {task_name} trigger {task_type_doc.trigger} does not match event {event}, skipping calculation.") + return + if task_type_doc.logic_key: + print(f"DEBUG: Task {task_name} has a logic key set, skipping calculations and running logic.") + safe_eval(task_type_doc.logic_key, {"task_name": task_name, "task_type_doc": task_type_doc}) + if task_type_doc.no_due_date: + print(f"DEBUG: Task {task_name} is marked as no due date, skipping calculation.") + return + calculate_from = task_type_doc.calculate_from + trigger = task_type_doc.trigger + print(f"DEBUG: Calculating triggering data for Task {task_name} from {calculate_from} on trigger {trigger}") + + + triggering_doc_dict = current_triggering_dict if current_triggering_dict else TaskService.get_triggering_doc_dict(task_name=task_name, task_type_doc=task_type_doc) + + + calculated_due_date, calculated_start_date = TaskService.calculate_dates( + task_name=task_name, + triggering_doc_dict=triggering_doc_dict, + task_type_doc=task_type_doc + ) + + update_required = TaskService.determine_update_required( + task_name=task_name, + calculated_due_date=calculated_due_date, + calculated_start_date=calculated_start_date + ) + if update_required: + TaskService.update_task_dates( + task_name=task_name, + calculated_due_date=calculated_due_date, + calculated_start_date=calculated_start_date + ) + + @staticmethod + def get_task_type_doc(task_name: str): + task_type_name = frappe.get_value("Task", task_name, "type") + return frappe.get_doc("Task Type", task_type_name) + + @staticmethod + def calculate_dates(task_name: str, triggering_doc_dict: dict, task_type_doc) -> tuple[date | None, date | None]: + offset_direction = task_type_doc.offset_direction + offset_days = task_type_doc.offset_days + base_date_field = TaskService.map_base_date_to_field(task_type_doc.base_date, task_type_doc.triggering_doctype) + print(f"DEBUG: base_date_field for Task {task_name} is {base_date_field}") + if offset_direction == "Before": + offset_days = -offset_days + + base_date_field_value = triggering_doc_dict.get(base_date_field) + print(f"DEBUG: base_date_field_value for Task {task_name} is {base_date_field_value}") + + if isinstance(base_date_field_value, datetime): + base_date_field_value = base_date_field_value + else: + base_date_field_value = getdate(base_date_field_value) + + calculated_due_date = base_date_field_value + timedelta(days=offset_days) + calculated_start_date = None + if task_type_doc.days > 1: + calculated_start_date = calculated_due_date - timedelta(days=task_type_doc.days) + print(f"DEBUG: Calculated dates for Task {task_name} - Due Date: {calculated_due_date}, Start Date: {calculated_start_date}") + return calculated_due_date, calculated_start_date + + @staticmethod + def determine_update_required(task_name: str, calculated_due_date: date | None, calculated_start_date: date | None) -> bool: + current_due_date = frappe.get_value("Task", task_name, "exp_end_date") + current_start_date = frappe.get_value("Task", task_name, "exp_start_date") + if current_due_date != calculated_due_date or current_start_date != calculated_start_date: + print(f"DEBUG: Update required for Task {task_name}. Current due date: {current_due_date}, Calculated due date: {calculated_due_date}. Current start date: {current_start_date}, Calculated start date: {calculated_start_date}") + return True + else: + print(f"DEBUG: No update required for Task {task_name}. Dates are up to date.") + return False + + + @staticmethod + def get_triggering_doc_dict(task_name: str, task_type_doc) -> dict | None: + project_name = frappe.get_value("Task", task_name, "project") + print(f"DEBUG: Project name: {project_name}") + dict = None + if task_type_doc.calculate_from == "Project": + dict = frappe.get_doc("Project", project_name).as_dict() + if task_type_doc.calculate_from == "Service Address 2": + service_name = frappe.get_value("Project", project_name, "service_appointment") + dict = frappe.get_doc("Service Address 2", service_name).as_dict() + if task_type_doc.calculate_from == "Task": + project_doc = frappe.get_doc("Project", project_name) + for task in project_doc.tasks: + if task.task_type == task_type_doc.task_type_calculate_from: + dict = frappe.get_doc("Task", task.task).as_dict() + print(f"DEBUG: Triggering doc dict for Task {task_name}: {dict}") + return dict + + @staticmethod + def update_task_dates(task_name: str, calculated_due_date: date | None, calculated_start_date: date | None): + task_doc = frappe.get_doc("Task", task_name) + task_doc.exp_end_date = calculated_due_date + task_doc.exp_start_date = calculated_start_date + task_doc.save(ignore_permissions=True) + print(f"DEBUG: Updated Task {task_name} with new dates - Start: {calculated_start_date}, End: {calculated_due_date}") + + @staticmethod + def map_base_date_to_field(base_date: str, triggering_doctype: str) -> str: + """Map a base date configuration to a corresponding field name.""" + base_date_field_map = { + "Start": "expected_start_date", + "End": "expected_end_date", + "Creation": "creation", + "Completion": "actual_end_date" + } + task_date_field_map = { + "Start": "exp_start_date", + "End": "exp_end_date", + "Creation": "creation", + "Completion": "actual_end_date" + } + if triggering_doctype == "Task": + return task_date_field_map.get(base_date, "exp_end_date") + return base_date_field_map.get(base_date, "expected_end_date") + + @staticmethod + def determine_event(triggering_doc) -> str | None: + print("DEBUG: Current Document:", triggering_doc.as_dict()) + if not frappe.db.exists(triggering_doc.doctype, triggering_doc.name): + print("DEBUG: Document does not exist in database, returning None for event.") + return None + prev_doc = frappe.get_doc(triggering_doc.doctype, triggering_doc.name, as_dict=False, ignore_if_missing=True) + start_date_field = "expected_start_date" if triggering_doc.doctype != "Task" else "exp_start_date" + end_date_field = "expected_end_date" if triggering_doc.doctype != "Task" else "exp_end_date" + print("DEBUG: Previous Document:", prev_doc.as_dict() if prev_doc else "None") + if not prev_doc: + return None + if getattr(prev_doc, end_date_field) != getattr(triggering_doc, end_date_field) or getattr(prev_doc, start_date_field) != getattr(triggering_doc, start_date_field): + return "Scheduled" + elif prev_doc.status != triggering_doc.status and triggering_doc.status == "Completed": + return "Completed" + else: + return None + \ No newline at end of file diff --git a/frontend/src/api.js b/frontend/src/api.js index a6bb5e8..01e1baf 100644 --- a/frontend/src/api.js +++ b/frontend/src/api.js @@ -5,47 +5,73 @@ import { useErrorStore } from "./stores/errors"; const ZIPPOPOTAMUS_BASE_URL = "https://api.zippopotam.us/us"; // Proxy method for external API calls const FRAPPE_PROXY_METHOD = "custom_ui.api.proxy.request"; +// On-Site Meeting methods +const FRAPPE_GET_INCOMPLETE_BIDS_METHOD = "custom_ui.api.db.on_site_meetings.get_incomplete_bids"; // Estimate methods const FRAPPE_UPSERT_ESTIMATE_METHOD = "custom_ui.api.db.estimates.upsert_estimate"; const FRAPPE_GET_ESTIMATES_METHOD = "custom_ui.api.db.estimates.get_estimate_table_data"; +const FRAPPE_GET_ESTIMATES_TABLE_DATA_V2_METHOD = "custom_ui.api.db.estimates.get_estimate_table_data_v2"; const FRAPPE_GET_ESTIMATE_BY_ADDRESS_METHOD = "custom_ui.api.db.estimates.get_estimate_from_address"; const FRAPPE_SEND_ESTIMATE_EMAIL_METHOD = "custom_ui.api.db.estimates.send_estimate_email"; 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_unapproved_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"; const FRAPPE_UPSERT_JOB_METHOD = "custom_ui.api.db.jobs.upsert_job"; -const FRAPPE_GET_JOB_TASK_LIST_METHOD = "custom_ui.api.db.jobs.get_job_task_table_data"; +const FRAPPE_GET_JOB_TASK_TABLE_DATA_METHOD = "custom_ui.api.db.jobs.get_job_task_table_data"; +const FRAPPE_GET_JOB_TASK_LIST_METHOD = "custom_ui.api.db.jobs.get_job_task_list"; const FRAPPE_GET_INSTALL_PROJECTS_METHOD = "custom_ui.api.db.jobs.get_install_projects"; +const FRAPPE_GET_JOBS_FOR_CALENDAR_METHOD = "custom_ui.api.db.jobs.get_projects_for_calendar"; const FRAPPE_GET_JOB_TEMPLATES_METHOD = "custom_ui.api.db.jobs.get_job_templates"; +const FRAPPE_UPDATE_JOB_SCHEDULED_DATES_METHOD = "custom_ui.api.db.jobs.update_job_scheduled_dates"; +const FRAPPE_GET_JOBS_IN_QUEUE_METHOD = "custom_ui.api.db.jobs.get_jobs_in_queue_count"; +const FRAPPE_GET_JOBS_IN_PROGRESS_METHOD = "custom_ui.api.db.jobs.get_jobs_in_progress_count"; +const FRAPPE_GET_JOBS_LATE_METHOD = "custom_ui.api.db.jobs.get_jobs_late_count"; +const FRAPPE_GET_JOBS_TO_INVOICE_METHOD = "custom_ui.api.db.jobs.get_jobs_to_invoice_count"; // Task methods 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"; // 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"; +const FRAPPE_GET_INVOICES_LATE_METHOD = "custom_ui.api.db.invoices.get_invoices_late_count"; +const FRAPPE_CREATE_INVOICE_FOR_JOB = "custom_ui.api.db.invoices.create_invoice_for_job"; // Warranty methods const FRAPPE_GET_WARRANTY_CLAIMS_METHOD = "custom_ui.api.db.warranties.get_warranty_claims"; // On-Site Meeting methods const FRAPPE_GET_WEEK_ONSITE_MEETINGS_METHOD = "custom_ui.api.db.bid_meetings.get_week_bid_meetings"; +const FRAPPE_GET_BID_MEETING_NOTE_FORM_METHOD = "custom_ui.api.db.bid_meetings.get_bid_meeting_note_form"; const FRAPPE_GET_ONSITE_MEETINGS_METHOD = "custom_ui.api.db.bid_meetings.get_bid_meetings"; +const FRAPPE_SUBMIT_BID_MEETING_NOTE_FORM_METHOD = "custom_ui.api.db.bid_meetings.submit_bid_meeting_note_form"; // Address methods const FRAPPE_GET_ADDRESSES_METHOD = "custom_ui.api.db.addresses.get_addresses"; // Client methods const FRAPPE_UPSERT_CLIENT_METHOD = "custom_ui.api.db.clients.upsert_client"; const FRAPPE_GET_CLIENT_STATUS_COUNTS_METHOD = "custom_ui.api.db.clients.get_client_status_counts"; const FRAPPE_GET_CLIENT_TABLE_DATA_METHOD = "custom_ui.api.db.clients.get_clients_table_data"; +const FRAPPE_GET_CLIENT_TABLE_DATA_V2_METHOD = "custom_ui.api.db.clients.get_clients_table_data_v2"; const FRAPPE_GET_CLIENT_METHOD = "custom_ui.api.db.clients.get_client_v2"; const FRAPPE_GET_CLIENT_NAMES_METHOD = "custom_ui.api.db.clients.get_client_names"; - +// Employee methods +const FRAPPE_GET_EMPLOYEES_METHOD = "custom_ui.api.db.employees.get_employees"; +const FRAPPE_GET_EMPLOYEES_ORGANIZED_METHOD = "custom_ui.api.db.employees.get_employees_organized"; +// Other methods +const FRAPPE_GET_WEEK_HOLIDAYS_METHOD = "custom_ui.api.db.general.get_week_holidays"; +const FRAPPE_GET_DOC_LIST_METHOD = "custom_ui.api.db.general.get_doc_list"; +// Service Appointment methods +const FRAPPE_GET_SERVICE_APPOINTMENTS_METHOD = "custom_ui.api.db.service_appointments.get_service_appointments"; +const FRAPPE_UPDATE_SERVICE_APPOINTMENT_SCHEDULED_DATES_METHOD = "custom_ui.api.db.service_appointments.update_service_appointment_scheduled_dates"; class Api { // ============================================================================ - // CORE REQUEST METHOD + // CORE REQUEST METHOPD // ============================================================================ static async request(frappeMethod, args = {}) { @@ -85,6 +111,17 @@ class Api { return await this.request(FRAPPE_GET_CLIENT_METHOD, { clientName }); } + static async getPaginatedClientDetailsV2(paginationParams = {}, filters = {}, sortings = []) { + const { page = 0, pageSize = 10 } = paginationParams; + const result = await this.request(FRAPPE_GET_CLIENT_TABLE_DATA_V2_METHOD, { + filters, + sortings, + page: page + 1, + pageSize, + }); + return result; + } + /** * Get paginated client data with filtering and sorting * @param {Object} paginationParams - Pagination parameters from store @@ -136,9 +173,22 @@ class Api { // ON-SITE MEETING METHODS // ============================================================================ - static async getUnscheduledBidMeetings() { + static async getBidMeetingNoteForm(projectTemplate) { + return await this.request(FRAPPE_GET_BID_MEETING_NOTE_FORM_METHOD, { projectTemplate }); + } + + static async submitBidMeetingNoteForm(data) { + return await this.request(FRAPPE_SUBMIT_BID_MEETING_NOTE_FORM_METHOD, { + bidMeeting: data.bidMeeting, + projectTemplate: data.projectTemplate, + formTemplate: data.formTemplate, + fields: data.fields}); + } + + static async getUnscheduledBidMeetings(company) { return await this.request( "custom_ui.api.db.bid_meetings.get_unscheduled_bid_meetings", + { company } ); } @@ -146,8 +196,8 @@ class Api { return await this.request(FRAPPE_GET_ONSITE_MEETINGS_METHOD, { fields, filters }); } - static async getWeekBidMeetings(weekStart, weekEnd) { - return await this.request(FRAPPE_GET_WEEK_ONSITE_MEETINGS_METHOD, { weekStart, weekEnd }); + static async getWeekBidMeetings(weekStart, weekEnd, company) { + return await this.request(FRAPPE_GET_WEEK_ONSITE_MEETINGS_METHOD, { weekStart, weekEnd, company }); } static async updateBidMeeting(name, data) { @@ -169,6 +219,12 @@ class Api { }); } + static async getBidMeetingNote(name) { + return await this.request("custom_ui.api.db.bid_meetings.get_bid_meeting_note", { + name, + }); + } + // ============================================================================ // ESTIMATE / QUOTATION METHODS // ============================================================================ @@ -213,7 +269,12 @@ class Api { console.log("DEBUG: API - Sending estimate options to backend:", page, pageSize, filters, sorting); - const result = await this.request(FRAPPE_GET_ESTIMATES_METHOD, { page, pageSize, filters, sorting}); + const result = await this.request(FRAPPE_GET_ESTIMATES_TABLE_DATA_V2_METHOD, { page, pageSize, filters, sorting}); + return result; + } + + static async getIncompleteBidsCount(currentCompany) { + const result = await this.request(FRAPPE_GET_INCOMPLETE_BIDS_METHOD, { company: currentCompany }); return result; } @@ -242,6 +303,14 @@ class Api { return await this.request(FRAPPE_CREATE_ESTIMATE_TEMPLATE_METHOD, { data }); } + static async getUnapprovedEstimatesCount(currentCompany) { + return await this.request(FRAPPE_GET_UNAPPROVED_ESTIMATES_COUNT_METHOD, {company: currentCompany}); + } + + static async getEstimatesHalfDownCount(currentCompany) { + return await this.request(FRAPPE_GET_ESTIMATES_HALF_DOWN_COUNT_METHOD, {company: currentCompany}); + } + // ============================================================================ // JOB / PROJECT METHODS // ============================================================================ @@ -298,6 +367,39 @@ class Api { return result; } + static async getJobsForCalendar(startDate, endDate, company = null, projectTemplates = []) { + return await this.request(FRAPPE_GET_JOBS_FOR_CALENDAR_METHOD, { startDate, endDate, company, projectTemplates }); + } + + static async updateJobScheduledDates(jobName, newStartDate, newEndDate, foremanName) { + return await this.request(FRAPPE_UPDATE_JOB_SCHEDULED_DATES_METHOD, { + jobName, + newStartDate, + newEndDate, + foremanName, + }); + } + + static async getJobsInQueueCount(currentCompany) { + return await this.request(FRAPPE_GET_JOBS_IN_QUEUE_METHOD, {company: currentCompany}); + } + + static async getJobsInProgressCount(currentCompany) { + return await this.request(FRAPPE_GET_JOBS_IN_PROGRESS_METHOD, {company: currentCompany}); + } + + static async getJobsLateCount(currentCompany) { + return await this.request(FRAPPE_GET_JOBS_LATE_METHOD, {company: currentCompany}); + } + + static async getJobsToInvoiceCount(currentCompany) { + return await this.request(FRAPPE_GET_JOBS_TO_INVOICE_METHOD, {company: currentCompany}); + } + + static async setJobCompleted(jobName) { + return await this.request(FRAPPE_SET_JOB_COMPLETE_METHOD, {jobName: jobName}); + } + static async getJob(jobName) { if (frappe.db.exists("Project", jobName)) { const result = await this.request(FRAPPE_GET_JOB_METHOD, { jobId: jobName }) @@ -344,10 +446,29 @@ class Api { console.log("DEBUG: API - Sending job task options to backend:", options); - const result = await this.request(FRAPPE_GET_JOB_TASK_LIST_METHOD, { options, filters }); + const result = await this.request(FRAPPE_GET_JOB_TASK_TABLE_DATA_METHOD, { filters, sortings: sorting, page:page+1, pageSize }); return result; } + // ============================================================================ + // SERVICE APPOINTMENT METHODS + // ============================================================================ + + static async getServiceAppointments(companies = [], filters = {}) { + return await this.request(FRAPPE_GET_SERVICE_APPOINTMENTS_METHOD, { companies, filters }); + } + + static async updateServiceAppointmentScheduledDates(serviceAppointmentName, startDate, endDate, crewLeadName, startTime = null, endTime = null) { + return await this.request(FRAPPE_UPDATE_SERVICE_APPOINTMENT_SCHEDULED_DATES_METHOD, { + serviceAppointmentName, + startDate, + endDate, + crewLeadName, + startTime, + endTime + }) + } + // ============================================================================ // TASK METHODS // ============================================================================ @@ -401,6 +522,16 @@ 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}); + return result; + } + + static async getTasksCompleted(subjectFilter) { + const result = await this.request(FRAPPE_GET_TASKS_COMPLETED_METHOD, {subjectFilter}); + return result; + } + // ============================================================================ // INVOICE / PAYMENT METHODS // ============================================================================ @@ -437,6 +568,16 @@ class Api { return result; } + static async getInvoicesLateCount(currentCompany) { + const result = await this.request(FRAPPE_GET_INVOICES_LATE_METHOD, { company: currentCompany }); + return result; + } + + static async createInvoiceForJob(jobName) { + const result = await this.request(FRAPPE_CREATE_INVOICE_FOR_JOB, { jobName: jobName }); + return result; + } + // ============================================================================ // WARRANTY METHODS // ============================================================================ @@ -558,6 +699,26 @@ class Api { return data; } + // ============================================================================ + // EMPLOYEE METHODS + // ============================================================================ + + static async getEmployees(company, roles = []) { + return await this.request(FRAPPE_GET_EMPLOYEES_METHOD, { company, roles }); + } + + static async getEmployeesOrganized (company, roles = []) { + return await this.request(FRAPPE_GET_EMPLOYEES_ORGANIZED_METHOD, { company, roles }); + } + + // ============================================================================ + // OTHER METHODS + // ============================================================================ + + static async getWeekHolidays(startDate) { + return await this.request(FRAPPE_GET_WEEK_HOLIDAYS_METHOD, { weekStartDate: startDate }); + } + // ============================================================================ // GENERIC DOCTYPE METHODS // ============================================================================ @@ -572,20 +733,21 @@ class Api { */ static async getDocsList( doctype, - fields = [], + fields = ["*"], filters = {}, - page = 0, - start = 0, - pageLength = 0, + pluck = null, ) { - const docs = await frappe.db.get_list(doctype, { - fields, - filters, - start: start, - limit: pageLength, - }); + const docs = await this.request( + FRAPPE_GET_DOC_LIST_METHOD, + { + doctype, + fields, + filters, + pluck, + } + ); console.log( - `DEBUG: API - Fetched ${doctype} list (page ${page + 1}, start ${start}): `, + `DEBUG: API - Fetched ${doctype} list: `, docs, ); return docs; diff --git a/frontend/src/components/calendar/CalendarNavigation.vue b/frontend/src/components/calendar/CalendarNavigation.vue index 6d8993a..a415e8a 100644 --- a/frontend/src/components/calendar/CalendarNavigation.vue +++ b/frontend/src/components/calendar/CalendarNavigation.vue @@ -1,42 +1,24 @@ @@ -56,15 +69,35 @@ import TabPanel from 'primevue/tabpanel'; import TabPanels from 'primevue/tabpanels'; import ScheduleBid from '../calendar/bids/ScheduleBid.vue'; import JobsCalendar from '../calendar/jobs/JobsCalendar.vue'; -import InstallsCalendar from '../calendar/jobs/InstallsCalendar.vue'; +import SNWProjectCalendar from './jobs/SNWProjectCalendar.vue'; import { useNotificationStore } from '../../stores/notifications-primevue'; +import { useCompanyStore } from '../../stores/company'; const notifications = useNotificationStore(); +const companyStore = useCompanyStore(); \ No newline at end of file diff --git a/frontend/src/components/calendar/jobs/SNWProjectCalendar.vue b/frontend/src/components/calendar/jobs/SNWProjectCalendar.vue new file mode 100644 index 0000000..978ca0c --- /dev/null +++ b/frontend/src/components/calendar/jobs/SNWProjectCalendar.vue @@ -0,0 +1,1850 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/components/clientSubPages/AddressInformationForm.vue b/frontend/src/components/clientSubPages/AddressInformationForm.vue index 622bfb9..632979d 100644 --- a/frontend/src/components/clientSubPages/AddressInformationForm.vue +++ b/frontend/src/components/clientSubPages/AddressInformationForm.vue @@ -59,6 +59,15 @@ style="margin-top: 0" /> + +
@@ -120,7 +129,7 @@