diff --git a/custom_ui/api/db/addresses.py b/custom_ui/api/db/addresses.py index bb99ff7..3d3fe96 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, ContactService +from custom_ui.services import ClientService, AddressService @frappe.whitelist() def get_address_by_full_address(full_address): @@ -35,33 +35,6 @@ 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 e12636a..bc73060 100644 --- a/custom_ui/api/db/bid_meetings.py +++ b/custom_ui/api/db/bid_meetings.py @@ -4,17 +4,15 @@ 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, company): +def get_week_bid_meetings(week_start, week_end): """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], - ["company", "=", company] + ["start_time", "<=", week_end] ], order_by="start_time asc" ) @@ -27,21 +25,9 @@ def get_week_bid_meetings(week_start, week_end, company): 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={}, company=None): +def get_bid_meetings(fields=["*"], filters={}): """Get paginated On-Site Meetings with filtering and sorting support.""" try: print("DEBUG: Raw bid meeting options received:", filters) @@ -65,26 +51,15 @@ def get_bid_meetings(fields=["*"], filters={}, company=None): frappe.log_error(message=str(e), title="Get On-Site Meetings Failed") return build_error_response(str(e), 500) + @frappe.whitelist() -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): +def get_unscheduled_bid_meetings(): """Get On-Site Meetings that are unscheduled.""" try: meetings = frappe.db.get_all( "On-Site Meeting", fields=["*"], - filters={"status": "Unscheduled", "company": company}, + filters={"status": "Unscheduled"}, order_by="creation desc" ) for meeting in meetings: @@ -99,62 +74,6 @@ def get_unscheduled_bid_meetings(company): 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): @@ -170,9 +89,6 @@ 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 c1c6194..0edb984 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, normalize_name +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 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,81 +167,6 @@ 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() @@ -445,16 +370,12 @@ 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", @@ -484,12 +405,13 @@ 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(client_dict) + 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] + }) 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 deleted file mode 100644 index 1263c19..0000000 --- a/custom_ui/api/db/employees.py +++ /dev/null @@ -1,49 +0,0 @@ -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 678200b..bf7e260 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 DbUtils, process_query_conditions, build_datatable_dict, get_count_or_filters, build_success_response, build_error_response +from custom_ui.db_utils import 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,38 +10,6 @@ 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): @@ -177,7 +145,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) @@ -430,7 +398,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.requires_half_payment = data.get("requires_half_payment", 0) + estimate.custom_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") @@ -440,7 +408,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", []): @@ -453,7 +421,6 @@ 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}") @@ -471,7 +438,7 @@ def upsert_estimate(data): # print("DEBUG: No billing address found for client:", client_doc.name) new_estimate = frappe.get_doc({ "doctype": "Quotation", - "requires_half_payment": data.get("requires_half_payment", 0), + "custom_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"), @@ -485,7 +452,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("from_onsite_meeting", None) + "from_onsite_meeting": data.get("onsite_meeting", None) }) for item in data.get("items", []): item = json.loads(item) if isinstance(item, str) else item @@ -507,31 +474,6 @@ 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 13d170b..8e2524c 100644 --- a/custom_ui/api/db/general.py +++ b/custom_ui/api/db/general.py @@ -1,7 +1,5 @@ import frappe -from custom_ui.db_utils import build_history_entries, build_success_response, build_error_response -from datetime import datetime, timedelta -import json +from custom_ui.db_utils import build_history_entries def get_doc_history(doctype, docname): """Get the history of changes for a specific document.""" @@ -58,43 +56,4 @@ def search_any_field(doctype, text): query, [like] * len(conditions), as_dict=True - ) - -@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 + ) \ No newline at end of file diff --git a/custom_ui/api/db/invoices.py b/custom_ui/api/db/invoices.py index b024808..4b7c3ef 100644 --- a/custom_ui/api/db/invoices.py +++ b/custom_ui/api/db/invoices.py @@ -1,36 +1,11 @@ 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.""" @@ -43,7 +18,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 invoices returned: {count}") + print(f"DEBUG: Number of invoice 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 affeb74..9b7b419 100644 --- a/custom_ui/api/db/jobs.py +++ b/custom_ui/api/db/jobs.py @@ -1,70 +1,11 @@ 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, ServiceAppointmentService -from frappe.utils import getdate +from custom_ui.services import AddressService, ClientService # =============================================================================== # 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.""" @@ -77,14 +18,13 @@ 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_project = frappe.get_doc({ + new_job = frappe.get_doc({ "doctype": "Project", "custom_address": sales_order.custom_job_address, # "custom_installation_address": sales_order.custom_installation_address, @@ -94,22 +34,8 @@ def create_job_from_sales_order(sales_order_name): "sales_order": sales_order, "custom_company": sales_order.company }) - 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()) + new_job.insert() + return build_success_response(new_job.as_dict()) except Exception as e: return build_error_response(str(e), 500) @@ -124,8 +50,6 @@ 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) @@ -156,15 +80,12 @@ 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"] = full_address + tableRow["address"] = task.get("custom_property", "") tableRow["status"] = task.get("status", "") tableRows.append(tableRow) @@ -211,10 +132,9 @@ def get_jobs_table_data(filters={}, sortings=[], page=1, page_size=10): tableRow = {} tableRow["id"] = project["name"] tableRow["name"] = project["name"] - tableRow["job_address"] = project["job_address"] + tableRow["installation_address"] = project.get("custom_installation_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) @@ -247,56 +167,55 @@ def upsert_job(data): return {"status": "error", "message": str(e)} @frappe.whitelist() -def get_projects_for_calendar(start_date, end_date, company=None, project_templates=[]): +def get_install_projects(start_date=None, end_date=None): """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 = { - "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)] + filters = {"project_template": "SNW Install"} # 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 - 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 }) + 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} except Exception as e: - return build_error_response(str(e), 500) - + return {"status": "error", "message": str(e)} + @frappe.whitelist() -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) +def get_project_templates_for_company(company_name): + """Get project templates for a specific company.""" try: - 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()) + templates = frappe.get_all( + "Project Template", + fields=["*"], + filters={"company": company_name} + ) + return build_success_response(templates) 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 deleted file mode 100644 index fc6d7fa..0000000 --- a/custom_ui/api/db/on_site_meetings.py +++ /dev/null @@ -1,15 +0,0 @@ -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 deleted file mode 100644 index 2ac4b63..0000000 --- a/custom_ui/api/db/service_appointments.py +++ /dev/null @@ -1,69 +0,0 @@ -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 a08ba9b..e53dd37 100644 --- a/custom_ui/api/db/tasks.py +++ b/custom_ui/api/db/tasks.py @@ -1,5 +1,4 @@ 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 @@ -13,7 +12,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=""): @@ -43,42 +42,6 @@ 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.""" @@ -98,12 +61,10 @@ def get_tasks_table_data(filters={}, sortings=[], page=1, page_size=10): fields=["*"], filters=processed_filters, limit=page_size, - start=(page-1) * page_size, + start=page * 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 deleted file mode 100644 index 476dfe6..0000000 --- a/custom_ui/api/payments.py +++ /dev/null @@ -1,6 +0,0 @@ -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 e9be1be..3c577a8 100644 --- a/custom_ui/db_utils.py +++ b/custom_ui/db_utils.py @@ -229,20 +229,3 @@ 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 cfae092..f7d212b 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) + new_customer = ClientService.convert_lead_to_customer(doc.actual_customer_name, update_quotations=False) 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 deleted file mode 100644 index f76c13d..0000000 --- a/custom_ui/events/general.py +++ /dev/null @@ -1,6 +0,0 @@ -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 378018e..aa80dc0 100644 --- a/custom_ui/events/jobs.py +++ b/custom_ui/events/jobs.py @@ -1,7 +1,6 @@ import frappe -from custom_ui.services import AddressService, ClientService, ServiceAppointmentService, TaskService -from datetime import timedelta -import traceback +from custom_ui.services import AddressService, ClientService + def after_insert(doc, method): print("DEBUG: After Insert Triggered for Project") @@ -16,81 +15,14 @@ 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, creating Service Appointment") + print("DEBUG: Project template is SNW Install, updating Address status to In Progress") 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 - -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 + pass \ No newline at end of file diff --git a/custom_ui/events/onsite_meeting.py b/custom_ui/events/onsite_meeting.py index aa4797a..32a0262 100644 --- a/custom_ui/events/onsite_meeting.py +++ b/custom_ui/events/onsite_meeting.py @@ -8,8 +8,7 @@ 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": - 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.") + 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") @@ -23,19 +22,17 @@ 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" and doc.status != "Cancelled": + if doc.status != "Scheduled" and doc.start_time and doc.end_time and doc.status != "Completed": 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") - 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") + current_status = AddressService.get_value(doc.address, "onsite_meeting_scheduled") + if current_status != doc.status: + AddressService.update_value(doc.address, "onsite_meeting_scheduled", "Completed") 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 1fffdb4..9c4499c 100644 --- a/custom_ui/events/sales_order.py +++ b/custom_ui/events/sales_order.py @@ -1,24 +1,13 @@ 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") - # 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:", 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.") def on_submit(doc, method): print("DEBUG: Info from Sales Order") @@ -40,16 +29,14 @@ def on_submit(doc, method): "custom_warranty_duration_days": 90, "customer": doc.customer, "job_address": doc.custom_job_address, - "sales_order": doc.name, - "requires_half_payment": doc.requires_half_payment + "sales_order": doc.name }) # 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( @@ -62,43 +49,41 @@ 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): - 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 - # }) + 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") + 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 deleted file mode 100644 index d0f04de..0000000 --- a/custom_ui/events/service_appointment.py +++ /dev/null @@ -1,31 +0,0 @@ -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 a5e24df..2e32836 100644 --- a/custom_ui/events/task.py +++ b/custom_ui/events/task.py @@ -1,34 +1,7 @@ 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) - 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 + if project_doc.custom_installation_address: + doc.custom_property = project_doc.custom_installation_address \ No newline at end of file diff --git a/custom_ui/fixtures/custom_field.json b/custom_ui/fixtures/custom_field.json index f6789da..3c84506 100644 --- a/custom_ui/fixtures/custom_field.json +++ b/custom_ui/fixtures/custom_field.json @@ -1,4 +1,289 @@ [ + { + "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, @@ -170,6 +455,2001 @@ "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, @@ -227,6 +2507,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": "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, @@ -284,6 +2792,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": "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, @@ -341,6 +3020,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": "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, @@ -399,7 +3135,7 @@ "width": null }, { - "allow_in_quick_entry": 1, + "allow_in_quick_entry": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -410,67 +3146,10 @@ "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", - "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": "contact", - "is_system_generated": 0, - "is_virtual": 0, - "label": "Phone Number", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-01-06 16:50:41.564255", - "module": null, - "name": "Service Appointment-custom_phone_number", - "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": 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", + "dt": "Delivery Note", "fetch_from": null, - "fetch_if_empty": 1, - "fieldname": "custom_assigned_to", + "fetch_if_empty": 0, + "fieldname": "custom_installation_address", "fieldtype": "Link", "hidden": 0, "hide_border": 0, @@ -478,23 +3157,23 @@ "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", + "insert_after": "address_and_contact_tab", "is_system_generated": 0, "is_virtual": 0, - "label": "Assigned to", + "label": "Installation Address", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-01-06 16:56:08.644464", + "modified": "2025-02-19 06:34:25.019577", "module": null, - "name": "Service Appointment-custom_assigned_to", + "name": "Delivery Note-custom_installation_address", "no_copy": 0, "non_negative": 0, - "options": "Sales Person", + "options": "Address", "permlevel": 0, "placeholder": null, "precision": "", @@ -660,7 +3339,7 @@ "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2026-01-26 01:52:42.708762", + "modified": "2026-01-16 04:11:39.714163", "module": null, "name": "Quotation-requires_half_payment", "no_copy": 0, @@ -740,6 +3419,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": "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, @@ -854,6 +3704,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": "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, @@ -968,120 +3875,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": "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, @@ -1139,63 +3932,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": "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, @@ -1382,7 +4118,7 @@ "dt": "Task", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "project_template", + "fieldname": "custom_property", "fieldtype": "Link", "hidden": 0, "hide_border": 0, @@ -1395,75 +4131,18 @@ "in_preview": 0, "in_standard_filter": 0, "insert_after": "project", - "is_system_generated": 1, + "is_system_generated": 0, "is_virtual": 0, - "label": "Project Template", + "label": "Property", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2026-01-19 18:17:40.981211", + "modified": "2024-07-08 05:37:46.181477", "module": null, - "name": "Task-project_template", + "name": "Task-custom_property", "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": 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", + "options": "Address", "permlevel": 0, "placeholder": null, "precision": "", @@ -1493,12 +4172,12 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Task", + "dt": "Address", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_property", - "fieldtype": "Link", - "hidden": 0, + "fieldname": "custom_column_break_jw2ty", + "fieldtype": "Column Break", + "hidden": 1, "hide_border": 0, "hide_days": 0, "hide_seconds": 0, @@ -1508,19 +4187,19 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "project", + "insert_after": "custom_column_break_vqa4d", "is_system_generated": 0, "is_virtual": 0, - "label": "Property", + "label": "", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2024-07-08 05:37:46.181477", + "modified": "2024-12-06 12:51:45.652483", "module": null, - "name": "Task-custom_property", + "name": "Address-custom_column_break_jw2ty", "no_copy": 0, "non_negative": 0, - "options": "Address", + "options": null, "permlevel": 0, "placeholder": null, "precision": "", @@ -1778,12 +4457,12 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Address", + "dt": "Quotation", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_column_break_jw2ty", + "fieldname": "custom_column_break_dza9b", "fieldtype": "Column Break", - "hidden": 1, + "hidden": 0, "hide_border": 0, "hide_days": 0, "hide_seconds": 0, @@ -1793,16 +4472,16 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "custom_column_break_vqa4d", + "insert_after": "requires_half_payment", "is_system_generated": 0, "is_virtual": 0, "label": "", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2024-12-06 12:51:45.652483", + "modified": "2025-04-17 11:17:08.532471", "module": null, - "name": "Address-custom_column_break_jw2ty", + "name": "Quotation-custom_column_break_dza9b", "no_copy": 0, "non_negative": 0, "options": null, @@ -1857,7 +4536,7 @@ "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2026-01-26 01:52:42.807278", + "modified": "2026-01-16 04:11:39.820190", "module": null, "name": "Sales Order-requires_half_payment", "no_copy": 0, @@ -2166,7 +4845,7 @@ "width": null }, { - "allow_in_quick_entry": 0, + "allow_in_quick_entry": 1, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -2177,11 +4856,11 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Project Template", - "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "calendar_color", - "fieldtype": "Color", + "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, @@ -2189,19 +4868,19 @@ "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": "company", - "is_system_generated": 1, + "insert_after": "contact", + "is_system_generated": 0, "is_virtual": 0, - "label": "Calendar Color", + "label": "Phone Number", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2026-01-21 04:32:32.810298", + "modified": "2025-01-06 16:50:41.564255", "module": null, - "name": "Project Template-calendar_color", + "name": "Service Appointment-custom_phone_number", "no_copy": 0, "non_negative": 0, "options": null, @@ -2218,64 +4897,7 @@ "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, + "translatable": 1, "unique": 0, "width": null }, @@ -2336,6 +4958,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": "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, @@ -2450,6 +5129,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": "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, @@ -2514,16 +5307,16 @@ "collapsible": 0, "collapsible_depends_on": null, "columns": 0, - "default": null, + "default": "Unscheduled", "depends_on": null, "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Contact", + "dt": "On-Site Meeting", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_column_break_hpz5b", - "fieldtype": "Column Break", + "fieldname": "status", + "fieldtype": "Select", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -2534,76 +5327,19 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "first_name", - "is_system_generated": 0, + "insert_after": "start_time", + "is_system_generated": 1, "is_virtual": 0, - "label": "", + "label": "Status", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-01-14 18:03:58.483385", + "modified": "2025-11-21 08:47:51.213693", "module": null, - "name": "Contact-custom_column_break_hpz5b", + "name": "On-Site Meeting-status", "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_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, + "options": "Unscheduled\nScheduled\nCompleted\nCancelled", "permlevel": 0, "placeholder": null, "precision": "", @@ -2906,63 +5642,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": "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, @@ -3020,6 +5699,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": "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, @@ -3089,11 +5825,11 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Maintenance Visit", - "fetch_from": "customer_address.address_title", + "dt": "Service Appointment", + "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_service_address", - "fieldtype": "Link", + "fieldname": "custom_sms_optin", + "fieldtype": "Check", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -3104,19 +5840,19 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "customer_name", + "insert_after": "custom_phone_number", "is_system_generated": 0, "is_virtual": 0, - "label": "Service Address", + "label": "SMS Opt-In", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-02-13 17:03:23.691597", + "modified": "2025-09-02 10:21:59.145925", "module": null, - "name": "Maintenance Visit-custom_service_address", + "name": "Service Appointment-custom_sms_optin", "no_copy": 0, "non_negative": 0, - "options": "Address", + "options": null, "permlevel": 0, "placeholder": null, "precision": "", @@ -3134,6 +5870,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": "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": "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, @@ -3191,63 +6041,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": "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, @@ -3305,6 +6098,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": "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, @@ -3427,15 +6334,15 @@ "collapsible_depends_on": null, "columns": 0, "default": null, - "depends_on": null, - "description": 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": "Lead", + "dt": "Project", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_customer_name", - "fieldtype": "Data", + "fieldname": "custom_warranty_duration_days", + "fieldtype": "Int", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -3446,18 +6353,18 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "last_name", + "insert_after": "status", "is_system_generated": 0, "is_virtual": 0, - "label": "Customer Name", + "label": "Warranty Duration (Days)", "length": 0, "link_filters": null, - "mandatory_depends_on": null, - "modified": "2026-01-07 04:41:50.654606", + "mandatory_depends_on": "eval:doc.project_template == \"SNW Install\"", + "modified": "2025-08-26 09:24:10.707198", "module": null, - "name": "Lead-custom_customer_name", + "name": "Project-custom_warranty_duration_days", "no_copy": 0, - "non_negative": 0, + "non_negative": 1, "options": null, "permlevel": 0, "placeholder": null, @@ -3468,121 +6375,7 @@ "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, - "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, + "reqd": 1, "search_index": 0, "show_dashboard": 0, "sort_options": 0, @@ -3716,11 +6509,11 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Department", + "dt": "Item", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "section_break_4", - "fieldtype": "Section Break", + "fieldname": "custom_markup_percentage", + "fieldtype": "Percent", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -3731,16 +6524,16 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "disabled", - "is_system_generated": 1, + "insert_after": "stock_uom", + "is_system_generated": 0, "is_virtual": 0, - "label": null, + "label": "Markup Percentage", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.449181", + "modified": "2024-09-27 07:25:10.974212", "module": null, - "name": "Department-section_break_4", + "name": "Item-custom_markup_percentage", "no_copy": 0, "non_negative": 0, "options": null, @@ -3773,12 +6566,12 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Item", + "dt": "Customer", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_markup_percentage", - "fieldtype": "Percent", - "hidden": 0, + "fieldname": "custom_appointment_date", + "fieldtype": "Date", + "hidden": 1, "hide_border": 0, "hide_days": 0, "hide_seconds": 0, @@ -3788,16 +6581,16 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "stock_uom", + "insert_after": "customer_group", "is_system_generated": 0, "is_virtual": 0, - "label": "Markup Percentage", + "label": "Appointment Date", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2024-09-27 07:25:10.974212", + "modified": "2024-10-21 04:06:47.935309", "module": null, - "name": "Item-custom_markup_percentage", + "name": "Customer-custom_appointment_date", "no_copy": 0, "non_negative": 0, "options": null, @@ -3875,120 +6668,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.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, @@ -4046,6 +6725,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": 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, @@ -4160,63 +6953,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": "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, @@ -4274,120 +7010,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": "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, @@ -4452,292 +7074,7 @@ "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, - "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": 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, + "default": "0", "depends_on": null, "description": null, "docstatus": 0, @@ -4745,9 +7082,9 @@ "dt": "Address", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_column_break_ky1zo", - "fieldtype": "Column Break", - "hidden": 0, + "fieldname": "custom_is_compnay_address", + "fieldtype": "Check", + "hidden": 1, "hide_border": 0, "hide_days": 0, "hide_seconds": 0, @@ -4757,16 +7094,16 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "custom_is_compnay_address", + "insert_after": "is_primary_address", "is_system_generated": 0, "is_virtual": 0, - "label": "", + "label": "Is company address-hidden", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-01-14 09:56:58.070846", + "modified": "2024-12-10 04:16:38.338226", "module": null, - "name": "Address-custom_column_break_ky1zo", + "name": "Address-custom_is_compnay_address", "no_copy": 0, "non_negative": 0, "options": null, @@ -4787,120 +7124,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": "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, @@ -4958,6 +7181,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.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, @@ -5015,6 +7352,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": "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, @@ -5129,6 +7523,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": "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, @@ -5243,291 +7751,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": "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, @@ -5642,6 +7865,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": "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, @@ -5699,63 +7979,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": "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, @@ -5768,11 +7991,11 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Lead", + "dt": "Service Appointment", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "quotations", - "fieldtype": "Table", + "fieldname": "custom_internal_company", + "fieldtype": "Link", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -5780,22 +8003,22 @@ "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": "companies", - "is_system_generated": 1, + "insert_after": "status", + "is_system_generated": 0, "is_virtual": 0, - "label": "Quotations", + "label": "Internal Company", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2026-01-13 08:37:09.177390", + "modified": "2025-01-06 16:53:41.538535", "module": null, - "name": "Lead-quotations", + "name": "Service Appointment-custom_internal_company", "no_copy": 0, "non_negative": 0, - "options": "Lead Quotation Link", + "options": "Company", "permlevel": 0, "placeholder": null, "precision": "", @@ -5882,11 +8105,11 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Service Appointment", + "dt": "Opportunity", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_sms_optin", - "fieldtype": "Check", + "fieldname": "custom_property", + "fieldtype": "Link", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -5897,16 +8120,73 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "custom_phone_number", + "insert_after": "custom_email", "is_system_generated": 0, "is_virtual": 0, - "label": "SMS Opt-In", + "label": "Property", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-09-02 10:21:59.145925", + "modified": "2024-10-30 13:05:45.725732", "module": null, - "name": "Service Appointment-custom_sms_optin", + "name": "Opportunity-custom_property", + "no_copy": 0, + "non_negative": 0, + "options": "Properties", + "permlevel": 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, @@ -5939,11 +8219,11 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Department", + "dt": "Service Appointment", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "shift_request_approver", - "fieldtype": "Table", + "fieldname": "custom_section_break_gndxh", + "fieldtype": "Section Break", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -5954,133 +8234,19 @@ "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, - "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_property", - "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_email", + "insert_after": "custom_internal_company", "is_system_generated": 0, "is_virtual": 0, - "label": "Property", + "label": "", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2024-10-30 13:05:45.725732", + "modified": "2025-01-06 16:50:41.747787", "module": null, - "name": "Opportunity-custom_property", + "name": "Service Appointment-custom_section_break_gndxh", "no_copy": 0, "non_negative": 0, - "options": "Properties", + "options": null, "permlevel": 0, "placeholder": null, "precision": "", @@ -6155,120 +8321,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": "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, @@ -6341,8 +8393,8 @@ "dt": "Service Appointment", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_column_break_dsqvk", - "fieldtype": "Column Break", + "fieldname": "auto_repeat", + "fieldtype": "Link", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -6353,19 +8405,76 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "custom_email_address", - "is_system_generated": 0, + "insert_after": "custom_assigned_to", + "is_system_generated": 1, "is_virtual": 0, - "label": "", + "label": "Auto Repeat", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-01-06 16:50:41.381550", + "modified": "2025-01-07 12:01:01.971054", "module": null, - "name": "Service Appointment-custom_column_break_dsqvk", + "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": null, + "options": "Customer\nLead", "permlevel": 0, "placeholder": null, "precision": "", @@ -6395,11 +8504,68 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Department", + "dt": "Quotation", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "expense_approvers", - "fieldtype": "Table", + "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, @@ -6410,19 +8576,133 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "leave_approvers", - "is_system_generated": 1, + "insert_after": "delivery_date", + "is_system_generated": 0, "is_virtual": 0, - "label": "Expense Approver", + "label": "Department Type", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.467296", + "modified": "2024-10-25 12:36:40.959573", "module": null, - "name": "Department-expense_approvers", + "name": "Sales Order-custom_department_type", "no_copy": 0, "non_negative": 0, - "options": "Department Approver", + "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", + "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", + "module": null, + "name": "Address-custom_section_break_fvgdt", + "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": "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": "", @@ -6512,8 +8792,8 @@ "dt": "Address", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_section_break_fvgdt", - "fieldtype": "Section Break", + "fieldname": "tax_category", + "fieldtype": "Link", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -6524,19 +8804,19 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "custom_payment_received_status", + "insert_after": "fax", "is_system_generated": 0, "is_virtual": 0, - "label": "", + "label": "Tax Category", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2024-12-06 12:51:45.744682", + "modified": "2018-12-28 22:29:21.828090", "module": null, - "name": "Address-custom_section_break_fvgdt", + "name": "Address-tax_category", "no_copy": 0, "non_negative": 0, - "options": null, + "options": "Tax Category", "permlevel": 0, "placeholder": null, "precision": "", @@ -6569,9 +8849,9 @@ "dt": "Quotation", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "customer_type", + "fieldname": "custom_current_status", "fieldtype": "Select", - "hidden": 0, + "hidden": 1, "hide_border": 0, "hide_days": 0, "hide_seconds": 0, @@ -6581,19 +8861,19 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "customer_name", - "is_system_generated": 1, + "insert_after": "custom_pricing_rule_markup", + "is_system_generated": 0, "is_virtual": 0, - "label": "Customer Type", + "label": "Status", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2026-01-15 12:29:56.949985", + "modified": "2024-10-25 10:43:13.969581", "module": null, - "name": "Quotation-customer_type", + "name": "Quotation-custom_current_status", "no_copy": 0, "non_negative": 0, - "options": "Customer\nLead", + "options": "Draft\nSubmitted\nEstimate Accepted\nLost\nWon", "permlevel": 0, "placeholder": null, "precision": "", @@ -6607,6 +8887,63 @@ "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 @@ -6670,7 +9007,7 @@ }, { "allow_in_quick_entry": 0, - "allow_on_submit": 0, + "allow_on_submit": 1, "bold": 0, "collapsible": 0, "collapsible_depends_on": null, @@ -6680,11 +9017,11 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Service Appointment", + "dt": "Sales Order", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_internal_company", - "fieldtype": "Link", + "fieldname": "custom_project_complete", + "fieldtype": "Check", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -6692,29 +9029,29 @@ "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", + "insert_after": "custom_department_type", "is_system_generated": 0, "is_virtual": 0, - "label": "Internal Company", + "label": "Project Complete", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-01-06 16:53:41.538535", + "modified": "2025-04-18 10:32:51.404815", "module": null, - "name": "Service Appointment-custom_internal_company", + "name": "Sales Order-custom_project_complete", "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": 1, "read_only_depends_on": null, "report_hide": 0, "reqd": 0, @@ -6782,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": "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, @@ -7069,7 +9235,7 @@ }, { "allow_in_quick_entry": 0, - "allow_on_submit": 0, + "allow_on_submit": 1, "bold": 0, "collapsible": 0, "collapsible_depends_on": null, @@ -7079,11 +9245,11 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Employee", + "dt": "Quotation", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_crew", - "fieldtype": "Select", + "fieldname": "custom_sent", + "fieldtype": "Check", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -7094,19 +9260,19 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "status", + "insert_after": "custom_current_status", "is_system_generated": 0, "is_virtual": 0, - "label": "Crew", + "label": "Sent", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-04-17 11:42:40.168686", + "modified": "2025-04-18 11:26:54.099834", "module": null, - "name": "Employee-custom_crew", + "name": "Quotation-custom_sent", "no_copy": 0, "non_negative": 0, - "options": "\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15", + "options": null, "permlevel": 0, "placeholder": null, "precision": "", @@ -7120,7 +9286,7 @@ "search_index": 0, "show_dashboard": 0, "sort_options": 0, - "translatable": 1, + "translatable": 0, "unique": 0, "width": null }, @@ -7183,21 +9349,21 @@ }, { "allow_in_quick_entry": 0, - "allow_on_submit": 1, + "allow_on_submit": 0, "bold": 0, "collapsible": 0, "collapsible_depends_on": null, "columns": 0, "default": null, - "depends_on": null, + "depends_on": "eval:doc.status == \"Completed\";", "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Sales Order", + "dt": "Project", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_project_complete", - "fieldtype": "Check", + "fieldname": "custom_completion_date", + "fieldtype": "Date", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -7208,16 +9374,16 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "custom_department_type", + "insert_after": "expected_end_date", "is_system_generated": 0, "is_virtual": 0, - "label": "Project Complete", + "label": "Completion Date", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-04-18 10:32:51.404815", + "modified": "2025-08-26 10:24:42.361467", "module": null, - "name": "Sales Order-custom_project_complete", + "name": "Project-custom_completion_date", "no_copy": 0, "non_negative": 0, "options": null, @@ -7250,11 +9416,11 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Project", + "dt": "Employee", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "expected_end_time", - "fieldtype": "Time", + "fieldname": "custom_crew", + "fieldtype": "Select", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -7265,16 +9431,73 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "expected_end_date", - "is_system_generated": 1, + "insert_after": "status", + "is_system_generated": 0, "is_virtual": 0, - "label": "Expected End Time", + "label": "Crew", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2026-01-19 19:14:45.810187", + "modified": "2025-04-17 11:42:40.168686", "module": null, - "name": "Project-expected_end_time", + "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", "no_copy": 0, "non_negative": 0, "options": null, @@ -7295,6 +9518,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": "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": 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": 0, @@ -7310,8 +9647,8 @@ "dt": "Contact", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "is_billing_contact", - "fieldtype": "Check", + "fieldname": "custom_column_break_sn9hu", + "fieldtype": "Column Break", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -7322,130 +9659,16 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "is_primary_contact", + "insert_after": "more_info", "is_system_generated": 0, "is_virtual": 0, - "label": "Is Billing Contact", + "label": "", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2019-12-02 11:00:03.432994", + "modified": "2024-12-27 15:15:17.875587", "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": 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": "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, - "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_end_time", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Is Scheduled", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2026-01-26 01:52:42.896307", - "module": null, - "name": "Project-is_scheduled", + "name": "Contact-custom_column_break_sn9hu", "no_copy": 0, "non_negative": 0, "options": null, @@ -7523,6 +9746,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": "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, @@ -7592,125 +9872,11 @@ "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 - }, - { - "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", + "dt": "Project", "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": 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", + "fieldname": "custom_hidden_fields", + "fieldtype": "Heading", "hidden": 1, "hide_border": 0, "hide_days": 0, @@ -7721,244 +9887,16 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "custom_pricing_rule_markup", + "insert_after": "custom_foreman", "is_system_generated": 0, "is_virtual": 0, - "label": "Status", + "label": "Hidden Fields", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2024-10-25 10:43:13.969581", + "modified": "2025-06-17 03:37:21.354610", "module": null, - "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", + "name": "Project-custom_hidden_fields", "no_copy": 0, "non_negative": 0, "options": null, @@ -7996,7 +9934,7 @@ "fetch_if_empty": 0, "fieldname": "is_your_company_address", "fieldtype": "Check", - "hidden": 1, + "hidden": 0, "hide_border": 0, "hide_days": 0, "hide_seconds": 0, @@ -8006,7 +9944,7 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "custom_subdivision", + "insert_after": "linked_with", "is_system_generated": 0, "is_virtual": 0, "label": "Is Your Company Address", @@ -8036,6 +9974,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": "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, @@ -8105,12 +10100,12 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Service Appointment", + "dt": "Sales Order", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "auto_repeat", - "fieldtype": "Link", - "hidden": 0, + "fieldname": "custom_section_break_htf05", + "fieldtype": "Section Break", + "hidden": 1, "hide_border": 0, "hide_days": 0, "hide_seconds": 0, @@ -8120,244 +10115,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": "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", + "insert_after": "amended_from", "is_system_generated": 0, "is_virtual": 0, "label": "", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2024-12-27 15:15:17.875587", + "modified": "2024-11-02 05:36:39.898012", "module": null, - "name": "Contact-custom_column_break_sn9hu", + "name": "Sales Order-custom_section_break_htf05", "no_copy": 0, "non_negative": 0, "options": null, @@ -8448,10 +10215,10 @@ "docstatus": 0, "doctype": "Custom Field", "dt": "Project", - "fetch_from": null, + "fetch_from": "sales_order.dispatch_address_name", "fetch_if_empty": 0, - "fieldname": "custom_hidden_fields", - "fieldtype": "Heading", + "fieldname": "custom_address", + "fieldtype": "Link", "hidden": 1, "hide_border": 0, "hide_days": 0, @@ -8459,250 +10226,22 @@ "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_foreman", + "insert_after": "is_active", "is_system_generated": 0, "is_virtual": 0, - "label": "Hidden Fields", + "label": "Address", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-06-17 03:37:21.354610", + "modified": "2025-01-24 11:16:06.559672", "module": null, - "name": "Project-custom_hidden_fields", + "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": "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, + "options": "Address", "permlevel": 0, "placeholder": null, "precision": "", @@ -8893,22 +10432,22 @@ }, { "allow_in_quick_entry": 0, - "allow_on_submit": 1, + "allow_on_submit": 0, "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.", + "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Quotation", + "dt": "Project", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_project_template", - "fieldtype": "Link", - "hidden": 0, + "fieldname": "custom_section_break_lgkpd", + "fieldtype": "Section Break", + "hidden": 1, "hide_border": 0, "hide_days": 0, "hide_seconds": 0, @@ -8918,19 +10457,19 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "custom_quotation_template", - "is_system_generated": 1, + "insert_after": "custom_address", + "is_system_generated": 0, "is_virtual": 0, - "label": "Project Template", + "label": "", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2026-01-09 04:08:58.715196", + "modified": "2024-11-02 06:56:14.687381", "module": null, - "name": "Quotation-custom_project_template", + "name": "Project-custom_section_break_lgkpd", "no_copy": 0, "non_negative": 0, - "options": "Project Template", + "options": null, "permlevel": 0, "placeholder": null, "precision": "", @@ -8960,11 +10499,11 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Supplier", + "dt": "Fencing Job Queue", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "irs_1099", - "fieldtype": "Check", + "fieldname": "auto_repeat", + "fieldtype": "Link", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -8975,26 +10514,26 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "tax_id", + "insert_after": "linked_tasks", "is_system_generated": 1, "is_virtual": 0, - "label": "Is IRS 1099 reporting required for supplier?", + "label": "Auto Repeat", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2024-04-03 13:53:07.662611", + "modified": "2024-12-09 17:16:59.566883", "module": null, - "name": "Supplier-irs_1099", - "no_copy": 0, + "name": "Fencing Job Queue-auto_repeat", + "no_copy": 1, "non_negative": 0, - "options": null, + "options": "Auto Repeat", "permlevel": 0, "placeholder": null, "precision": "", - "print_hide": 0, + "print_hide": 1, "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, @@ -9119,6 +10658,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": "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, @@ -9176,6 +10886,462 @@ "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, @@ -9245,34 +11411,91 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Project", - "fetch_from": "sales_order.dispatch_address_name", + "dt": "Quotation", + "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_address", - "fieldtype": "Link", - "hidden": 1, + "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": 1, + "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "is_active", + "insert_after": "custom_follow_up_reason", "is_system_generated": 0, "is_virtual": 0, - "label": "Address", + "label": "Initial Deposit Required", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-01-24 11:16:06.559672", + "modified": "2024-11-02 05:27:11.398353", "module": null, - "name": "Project-custom_address", + "name": "Quotation-custom_initial_deposit_required", "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": "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, "permlevel": 0, "placeholder": null, "precision": "", @@ -9324,7 +11547,7 @@ "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2026-01-26 01:52:42.503478", + "modified": "2026-01-16 04:11:39.444664", "module": null, "name": "Address-latitude", "no_copy": 0, @@ -9348,7 +11571,7 @@ "width": null }, { - "allow_in_quick_entry": 0, + "allow_in_quick_entry": 1, "allow_on_submit": 0, "bold": 0, "collapsible": 0, @@ -9359,34 +11582,34 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Project", + "dt": "Address", "fetch_from": null, - "fetch_if_empty": 0, - "fieldname": "custom_section_break_lgkpd", - "fieldtype": "Section Break", - "hidden": 1, + "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": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "custom_address", + "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": "", + "label": "Customer to Bill", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2024-11-02 06:56:14.687381", + "modified": "2024-12-06 09:22:26.497131", "module": null, - "name": "Project-custom_section_break_lgkpd", + "name": "Address-custom_customer_to_bill", "no_copy": 0, "non_negative": 0, - "options": null, + "options": "Customer", "permlevel": 0, "placeholder": null, "precision": "", @@ -9438,7 +11661,7 @@ "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2026-01-26 01:52:42.600227", + "modified": "2026-01-16 04:11:39.584406", "module": null, "name": "Address-longitude", "no_copy": 0, @@ -9519,22 +11742,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": "Project", + "dt": "Address", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_workflow_related_custom_fields__landry", - "fieldtype": "Heading", + "fieldname": "custom_contact_name", + "fieldtype": "Data", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -9545,16 +11768,16 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "custom_section_break_lgkpd", + "insert_after": "custom_customer_to_bill", "is_system_generated": 0, "is_virtual": 0, - "label": "Workflow related custom fields - Landry", + "label": "Contact Name", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2024-11-02 06:56:14.941205", + "modified": "2025-04-24 06:43:30.576103", "module": null, - "name": "Project-custom_workflow_related_custom_fields__landry", + "name": "Address-custom_contact_name", "no_copy": 0, "non_negative": 0, "options": null, @@ -9571,7 +11794,7 @@ "search_index": 0, "show_dashboard": 0, "sort_options": 0, - "translatable": 0, + "translatable": 1, "unique": 0, "width": null }, @@ -9689,234 +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": "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, @@ -10031,177 +12026,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": "Communication", - "fetch_from": "email_account.company", - "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_global_search": 0, - "in_list_view": 0, - "in_preview": 0, - "in_standard_filter": 0, - "insert_after": "email_account", - "is_system_generated": 1, - "is_virtual": 0, - "label": "Company", - "length": 0, - "link_filters": null, - "mandatory_depends_on": null, - "modified": "2025-11-25 12:46:13.407890", - "module": null, - "name": "Communication-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": 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": "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, @@ -10259,6 +12083,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": "Communication", + "fetch_from": "email_account.company", + "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_global_search": 0, + "in_list_view": 0, + "in_preview": 0, + "in_standard_filter": 0, + "insert_after": "email_account", + "is_system_generated": 1, + "is_virtual": 0, + "label": "Company", + "length": 0, + "link_filters": null, + "mandatory_depends_on": null, + "modified": "2025-11-25 12:46:13.407890", + "module": null, + "name": "Communication-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": 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, @@ -10316,234 +12197,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": "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, @@ -10601,519 +12254,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": "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, @@ -11186,8 +12326,8 @@ "dt": "Address", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "companies", - "fieldtype": "Table", + "fieldname": "custom_section_break_aecpx", + "fieldtype": "Section Break", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -11198,415 +12338,16 @@ "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": "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", + "insert_after": "disabled", "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", + "modified": "2025-01-13 16:23:39.204178", "module": null, - "name": "Contact-custom_column_break_ejxjz", + "name": "Address-custom_section_break_aecpx", "no_copy": 0, "non_negative": 0, "options": null, @@ -11628,22 +12369,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", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_contact_name", - "fieldtype": "Data", + "fieldname": "customer_type", + "fieldtype": "Select", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -11654,16 +12395,73 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "tasks", - "is_system_generated": 0, + "insert_after": "lead_name", + "is_system_generated": 1, "is_virtual": 0, - "label": "Contact Name", + "label": "Customer Type", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-04-24 06:43:30.576103", + "modified": "2026-01-13 04:14:36.111823", "module": null, - "name": "Address-custom_contact_name", + "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", + "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, @@ -11680,7 +12478,7 @@ "search_index": 0, "show_dashboard": 0, "sort_options": 0, - "translatable": 1, + "translatable": 0, "unique": 0, "width": null }, @@ -11696,11 +12494,11 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Project", + "dt": "Address", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "actual_end_time", - "fieldtype": "Time", + "fieldname": "customer_name", + "fieldtype": "Dynamic Link", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -11711,16 +12509,73 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "actual_end_date", + "insert_after": "customer_type", "is_system_generated": 1, "is_virtual": 0, - "label": "Actual End Time", + "label": "Customer Name", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2026-01-19 19:14:45.872272", + "modified": "2026-01-13 04:14:36.153732", "module": null, - "name": "Project-actual_end_time", + "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", "no_copy": 0, "non_negative": 0, "options": null, @@ -11798,6 +12653,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": "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, @@ -11855,6 +12824,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": "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, @@ -11912,6 +12938,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": "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, @@ -11984,9 +13124,9 @@ "dt": "Address", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "tax_category", - "fieldtype": "Link", - "hidden": 0, + "fieldname": "custom_address_for_coordinates", + "fieldtype": "Data", + "hidden": 1, "hide_border": 0, "hide_days": 0, "hide_seconds": 0, @@ -11996,73 +13136,16 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "fax", + "insert_after": "custom_longitude", "is_system_generated": 0, "is_virtual": 0, - "label": "Tax Category", + "label": "Address For Coordinates", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2018-12-28 22:29:21.828090", + "modified": "2025-05-15 11:37:40.846923", "module": null, - "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", + "name": "Address-custom_address_for_coordinates", "no_copy": 0, "non_negative": 0, "options": null, @@ -12072,7 +13155,7 @@ "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, @@ -12152,12 +13235,12 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Customer", + "dt": "Address", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_billing_address", - "fieldtype": "Link", - "hidden": 0, + "fieldname": "custom_linked_contacts", + "fieldtype": "Table", + "hidden": 1, "hide_border": 0, "hide_days": 0, "hide_seconds": 0, @@ -12167,19 +13250,19 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "custom_primary_billing_and_contact_details", + "insert_after": "linked_with", "is_system_generated": 0, "is_virtual": 0, - "label": "Select Billing Address", + "label": "Linked Contacts", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-02-05 05:55:12.670769", + "modified": "2024-12-09 05:20:08.566488", "module": null, - "name": "Customer-custom_billing_address", + "name": "Address-custom_linked_contacts", "no_copy": 0, "non_negative": 0, - "options": "Address", + "options": "Address Contact Role", "permlevel": 0, "placeholder": null, "precision": "", @@ -12209,11 +13292,11 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Address", + "dt": "Customer", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_section_break_aecpx", - "fieldtype": "Section Break", + "fieldname": "custom_billing_address", + "fieldtype": "Link", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -12224,19 +13307,19 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "disabled", + "insert_after": "custom_primary_billing_and_contact_details", "is_system_generated": 0, "is_virtual": 0, - "label": "", + "label": "Select Billing Address", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-01-13 16:23:39.204178", + "modified": "2025-02-05 05:55:12.670769", "module": null, - "name": "Address-custom_section_break_aecpx", + "name": "Customer-custom_billing_address", "no_copy": 0, "non_negative": 0, - "options": null, + "options": "Address", "permlevel": 0, "placeholder": null, "precision": "", @@ -12368,519 +13451,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_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, @@ -13052,63 +13622,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": "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, @@ -13166,63 +13679,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": "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, @@ -13280,63 +13736,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": "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, @@ -13394,120 +13793,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": "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, @@ -13565,63 +13850,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": "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, @@ -13679,63 +13907,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": "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, @@ -13850,120 +14021,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": "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, @@ -14021,63 +14078,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": "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,63 +14135,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, @@ -14249,63 +14192,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": "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, @@ -14363,63 +14249,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": "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, @@ -14819,120 +14648,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": "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, @@ -15104,6 +14819,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": "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, @@ -15218,63 +14990,6 @@ "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, @@ -15344,11 +15059,11 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Employee", + "dt": "Work Order", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "health_insurance_provider", - "fieldtype": "Link", + "fieldname": "custom_address__contacts", + "fieldtype": "Tab Break", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -15359,19 +15074,19 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "health_insurance_section", - "is_system_generated": 1, + "insert_after": "connections_tab", + "is_system_generated": 0, "is_virtual": 0, - "label": "Health Insurance Provider", + "label": "Address & Contacts", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.490407", + "modified": "2025-02-19 06:33:27.771582", "module": null, - "name": "Employee-health_insurance_provider", + "name": "Work Order-custom_address__contacts", "no_copy": 0, "non_negative": 0, - "options": "Employee Health Insurance", + "options": null, "permlevel": 0, "placeholder": null, "precision": "", @@ -15458,11 +15173,11 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Customer", + "dt": "Lead", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "exempt_from_sales_tax", - "fieldtype": "Check", + "fieldname": "contacts", + "fieldtype": "Table", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -15473,19 +15188,19 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "dn_required", + "insert_after": "properties", "is_system_generated": 1, "is_virtual": 0, - "label": "Is customer exempted from sales tax?", + "label": "Contacts", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2024-04-03 13:53:07.688051", + "modified": "2026-01-13 08:37:09.312068", "module": null, - "name": "Customer-exempt_from_sales_tax", + "name": "Lead-contacts", "no_copy": 0, "non_negative": 0, - "options": null, + "options": "Lead Contact Link", "permlevel": 0, "placeholder": null, "precision": "", @@ -15511,15 +15226,15 @@ "collapsible_depends_on": null, "columns": 0, "default": null, - "depends_on": "eval:doc.health_insurance_provider", + "depends_on": null, "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Employee", + "dt": "Lead", "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "health_insurance_no", - "fieldtype": "Data", + "fieldname": "primary_contact", + "fieldtype": "Link", "hidden": 0, "hide_border": 0, "hide_days": 0, @@ -15530,19 +15245,19 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "health_insurance_provider", + "insert_after": "contacts", "is_system_generated": 1, "is_virtual": 0, - "label": "Health Insurance No", + "label": "Primary Contact", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.492944", + "modified": "2026-01-13 11:55:04.344937", "module": null, - "name": "Employee-health_insurance_no", + "name": "Lead-primary_contact", "no_copy": 0, "non_negative": 0, - "options": null, + "options": "Contact", "permlevel": 0, "placeholder": null, "precision": "", @@ -15731,6 +15446,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": "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, @@ -15902,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": "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, @@ -16073,63 +15788,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_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, @@ -16187,63 +15845,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.__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, @@ -16256,67 +15857,10 @@ "description": null, "docstatus": 0, "doctype": "Custom Field", - "dt": "Company", + "dt": "Quotation", "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", + "fieldname": "custom_column_break_holw9", "fieldtype": "Column Break", "hidden": 0, "hide_border": 0, @@ -16328,23 +15872,23 @@ "in_list_view": 0, "in_preview": 0, "in_standard_filter": 0, - "insert_after": "default_employee_advance_account", - "is_system_generated": 1, + "insert_after": "pricing_rule_details", + "is_system_generated": 0, "is_virtual": 0, - "label": null, + "label": "", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2025-01-13 10:13:26.443591", + "modified": "2024-09-26 05:01:09.652660", "module": null, - "name": "Company-column_break_10", + "name": "Quotation-custom_column_break_holw9", "no_copy": 0, "non_negative": 0, "options": null, "permlevel": 0, "placeholder": null, "precision": "", - "print_hide": 0, + "print_hide": 1, "print_hide_if_no_value": 0, "print_width": null, "read_only": 0, @@ -16366,95 +15910,38 @@ "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", + "dt": "Address", + "fetch_from": null, "fetch_if_empty": 0, - "fieldname": "custom_installation_address", - "fieldtype": "Link", + "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": 1, + "in_global_search": 0, "in_list_view": 0, - "in_preview": 1, + "in_preview": 0, "in_standard_filter": 0, - "insert_after": "shipping_address_name", - "is_system_generated": 0, + "insert_after": "projects", + "is_system_generated": 1, "is_virtual": 0, - "label": "Installation Address", + "label": "Sales Orders", "length": 0, "link_filters": null, "mandatory_depends_on": null, - "modified": "2024-11-01 11:52:10.662566", + "modified": "2026-01-13 08:37:09.438342", "module": null, - "name": "Quotation-custom_installation_address", + "name": "Address-sales_orders", "no_copy": 0, "non_negative": 0, - "options": "Address", + "options": "Address Sales Order Link", "permlevel": 0, "placeholder": null, "precision": "", diff --git a/custom_ui/fixtures/doctype.json b/custom_ui/fixtures/doctype.json index b56d2a8..79499dd 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": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:12.948757", + "migration_hash": null, + "modified": "2024-10-31 17:29:58.039141", "module": "CRM", "name": "Properties", "naming_rule": "By fieldname", @@ -3186,8 +3186,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:13.056788", + "migration_hash": null, + "modified": "2024-07-18 03:32:52.993791", "module": "CRM", "name": "SNW Jobs", "naming_rule": "Autoincrement", @@ -4109,8 +4109,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:13.154567", + "migration_hash": null, + "modified": "2024-07-08 05:15:56.923325", "module": "Projects", "name": "Work Schedule", "naming_rule": "", @@ -9151,8 +9151,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:13.303974", + "migration_hash": null, + "modified": "2024-10-29 17:21:58.680491", "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": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:13.377143", + "migration_hash": null, + "modified": "2024-09-12 05:58:35.694822", "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": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:13.498788", + "migration_hash": null, + "modified": "2024-10-24 22:57:47.139294", "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": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:13.568354", + "migration_hash": null, + "modified": "2024-10-21 04:48:18.090677", "module": "Desk", "name": "SOP Notes", "naming_rule": "", @@ -10694,8 +10694,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:13.644007", + "migration_hash": null, + "modified": "2024-10-21 05:32:44.820703", "module": "Desk", "name": "Tutorials", "naming_rule": "By fieldname", @@ -11064,8 +11064,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:13.714534", + "migration_hash": null, + "modified": "2024-10-25 09:51:30.432578", "module": "Desk", "name": "Brotherton Meetings Scheduler", "naming_rule": "", @@ -11242,8 +11242,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:13.776408", + "migration_hash": null, + "modified": "2024-10-25 09:50:36.974725", "module": "Desk", "name": "Meeting Participants", "naming_rule": "", @@ -11588,8 +11588,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:13.863897", + "migration_hash": null, + "modified": "2024-11-02 06:39:30.176298", "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": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:13.938332", + "migration_hash": null, + "modified": "2024-11-04 11:49:34.179652", "module": "Desk", "name": "Crew Schedule Detail", "naming_rule": "", @@ -12152,8 +12152,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:14.015669", + "migration_hash": null, + "modified": "2025-01-13 18:06:22.980310", "module": "Setup", "name": "City", "naming_rule": "By fieldname", @@ -14738,8 +14738,8 @@ "make_attachments_public": 1, "max_attachments": 5, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:14.167954", + "migration_hash": null, + "modified": "2025-03-03 15:35:08.799864", "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": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:14.271176", + "migration_hash": null, + "modified": "2024-12-13 15:31:00.508799", "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": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:14.346591", + "migration_hash": null, + "modified": "2024-12-06 04:53:08.468584", "module": "Setup", "name": "Linked Companies", "naming_rule": "", @@ -16154,8 +16154,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:14.429267", + "migration_hash": null, + "modified": "2025-01-24 13:58:54.796901", "module": "Contacts", "name": "Address Contact Role", "naming_rule": "", @@ -16799,326 +16799,6 @@ "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, @@ -17140,8 +16820,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:14.536984", + "migration_hash": null, + "modified": "2025-01-28 13:52:05.066470", "module": "Selling", "name": "Backflow Test Form", "naming_rule": "", @@ -17830,8 +17510,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:14.668256", + "migration_hash": null, + "modified": "2025-06-17 02:11:29.355430", "module": "Selling", "name": "Pre-Built Routes", "naming_rule": "By \"Naming Series\" field", @@ -18351,8 +18031,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:14.752785", + "migration_hash": null, + "modified": "2025-06-17 01:35:18.821798", "module": "Contacts", "name": "Assigned Address", "naming_rule": "By fieldname", @@ -19316,326 +18996,6 @@ "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, @@ -19671,8 +19031,8 @@ "make_attachments_public": 1, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:14.894391", + "migration_hash": null, + "modified": "2025-01-28 13:51:17.016686", "module": "Projects", "name": "Locate Log", "naming_rule": "", @@ -19923,326 +19283,6 @@ "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, @@ -20327,8 +19367,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:14.974731", + "migration_hash": null, + "modified": "2024-12-18 13:55:10.265610", "module": "Brotherton SOP", "name": "Backflow test report form", "naming_rule": "", @@ -20633,8 +19673,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:15.060171", + "migration_hash": null, + "modified": "2025-02-04 03:14:29.980804", "module": "Accounts", "name": "QB Export Entry", "naming_rule": "Autoincrement", @@ -21171,8 +20211,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:15.161301", + "migration_hash": null, + "modified": "2025-02-04 03:33:45.335883", "module": "Accounts", "name": "QB Export", "naming_rule": "Expression", @@ -21669,8 +20709,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:15.226771", + "migration_hash": null, + "modified": "2025-03-04 19:51:53.469690", "module": "Desk", "name": "Custom Customer Address Link", "naming_rule": "", @@ -21930,70 +20970,6 @@ "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, @@ -22015,8 +20991,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:15.293419", + "migration_hash": null, + "modified": "2025-11-21 08:47:51.984630", "module": "Selling", "name": "On-Site Meeting", "naming_rule": "Expression", @@ -22193,8 +21169,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:15.349611", + "migration_hash": null, + "modified": "2025-06-17 01:34:26.423883", "module": "Selling", "name": "Route Technician Assignment", "naming_rule": "", @@ -22347,8 +21323,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:15.412654", + "migration_hash": null, + "modified": "2025-08-11 11:17:44.795641", "module": "Desk", "name": "Test Doctype", "naming_rule": "", @@ -22525,8 +21501,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:15.467707", + "migration_hash": "5f481f64a0f53ad40b09d8b5694265c1", + "modified": "2026-01-15 00:40:39.197431", "module": "Custom", "name": "Lead Company Link", "naming_rule": "", @@ -22564,442 +21540,6 @@ "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, @@ -23115,8 +21655,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:15.635575", + "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", + "modified": "2026-01-16 04:11:34.521684", "module": "Custom", "name": "Lead Companies Link", "naming_rule": "", @@ -23333,8 +21873,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:15.692709", + "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", + "modified": "2026-01-16 04:11:34.576521", "module": "Custom", "name": "Address Project Link", "naming_rule": "", @@ -23551,8 +22091,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:15.753245", + "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", + "modified": "2026-01-16 04:11:34.628136", "module": "Custom", "name": "Address Quotation Link", "naming_rule": "", @@ -23769,8 +22309,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:15.813569", + "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", + "modified": "2026-01-16 04:11:34.681893", "module": "Custom", "name": "Address On-Site Meeting Link", "naming_rule": "", @@ -23987,8 +22527,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:15.869381", + "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", + "modified": "2026-01-16 04:11:34.737017", "module": "Custom", "name": "Address Sales Order Link", "naming_rule": "", @@ -24141,8 +22681,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:15.926523", + "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", + "modified": "2026-01-16 04:11:34.787995", "module": "Custom", "name": "Contact Address Link", "naming_rule": "", @@ -24295,8 +22835,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:15.982944", + "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", + "modified": "2026-01-16 04:11:34.837721", "module": "Custom", "name": "Lead On-Site Meeting Link", "naming_rule": "", @@ -24897,8 +23437,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:16.051786", + "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", + "modified": "2026-01-16 04:11:34.906370", "module": "Selling", "name": "Quotation Template", "naming_rule": "", @@ -25395,8 +23935,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:16.131703", + "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", + "modified": "2026-01-16 04:11:34.977831", "module": "Selling", "name": "Quotation Template Item", "naming_rule": "", @@ -25549,8 +24089,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:16.186884", + "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", + "modified": "2026-01-16 04:11:35.031029", "module": "Custom UI", "name": "Customer Company Link", "naming_rule": "", @@ -25703,8 +24243,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:16.242217", + "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", + "modified": "2026-01-16 04:11:35.084461", "module": "Custom UI", "name": "Customer Address Link", "naming_rule": "", @@ -25857,8 +24397,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:16.295479", + "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", + "modified": "2026-01-16 04:11:35.135851", "module": "Custom UI", "name": "Customer Contact Link", "naming_rule": "", @@ -26011,8 +24551,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:16.349430", + "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", + "modified": "2026-01-16 04:11:35.184768", "module": "Custom", "name": "Address Contact Link", "naming_rule": "", @@ -26165,8 +24705,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:16.402648", + "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", + "modified": "2026-01-16 04:11:35.236428", "module": "Custom", "name": "Customer On-Site Meeting Link", "naming_rule": "", @@ -26319,8 +24859,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:16.453671", + "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", + "modified": "2026-01-16 04:11:35.287145", "module": "Custom", "name": "Customer Project Link", "naming_rule": "", @@ -26473,8 +25013,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:16.510653", + "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", + "modified": "2026-01-16 04:11:35.338967", "module": "Custom", "name": "Customer Quotation Link", "naming_rule": "", @@ -26627,8 +25167,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:16.565855", + "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", + "modified": "2026-01-16 04:11:35.388711", "module": "Custom", "name": "Customer Sales Order Link", "naming_rule": "", @@ -26781,8 +25321,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:16.623951", + "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", + "modified": "2026-01-16 04:11:35.441876", "module": "Custom", "name": "Lead Address Link", "naming_rule": "", @@ -26935,8 +25475,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:16.678981", + "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", + "modified": "2026-01-16 04:11:35.492936", "module": "Custom", "name": "Lead Contact Link", "naming_rule": "", @@ -27089,8 +25629,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:16.735725", + "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", + "modified": "2026-01-16 04:11:35.545465", "module": "Custom", "name": "Lead Quotation Link", "naming_rule": "", @@ -27243,8 +25783,8 @@ "make_attachments_public": 0, "max_attachments": 0, "menu_index": null, - "migration_hash": "c9094ea959c7b6ff11522d064fe04b35", - "modified": "2026-01-26 01:52:16.790139", + "migration_hash": "7c3c71cf20b258daa783e541cb045a4b", + "modified": "2026-01-16 04:11:35.604415", "module": "Custom", "name": "Address Company Link", "naming_rule": "", @@ -27281,5479 +25821,5 @@ "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 deleted file mode 100644 index 0637a08..0000000 --- a/custom_ui/fixtures/email_template.json +++ /dev/null @@ -1 +0,0 @@ -[] \ No newline at end of file diff --git a/custom_ui/fixtures/property_setter.json b/custom_ui/fixtures/property_setter.json index f3d55ca..acfc8ca 100644 --- a/custom_ui/fixtures/property_setter.json +++ b/custom_ui/fixtures/property_setter.json @@ -1,20 +1,4 @@ [ - { - "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", @@ -7343,6 +7327,22 @@ "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,6 +7375,22 @@ "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", @@ -10959,6 +10975,22 @@ "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", @@ -11679,6 +11711,38 @@ "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", @@ -12111,6 +12175,22 @@ "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", @@ -12223,6 +12303,54 @@ "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", @@ -12543,6 +12671,22 @@ "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", @@ -12591,6 +12735,22 @@ "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", @@ -12607,102 +12767,6 @@ "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", @@ -14958,181 +15022,5 @@ "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 9bd60cf..184b82c 100644 --- a/custom_ui/hooks.py +++ b/custom_ui/hooks.py @@ -26,10 +26,6 @@ add_to_apps_screen = [ # "has_permission": "custom_ui.api.permission.has_app_permission" } ] - -requires = [ - "holidays==0.89" -] # Apps # ------------------ @@ -37,13 +33,13 @@ requires = [ # 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 @@ -86,7 +82,7 @@ requires = [ # website user home page (by Role) # role_home_page = { -# "Role": "home_page" +# "Role": "home_page" # } # Generators @@ -100,8 +96,8 @@ requires = [ # 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 @@ -143,11 +139,11 @@ requires = [ # 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 @@ -155,7 +151,7 @@ requires = [ # Override standard doctype classes # override_doctype_class = { -# "ToDo": "custom_app.overrides.CustomToDo" +# "ToDo": "custom_app.overrides.CustomToDo" # } # Document Events @@ -163,11 +159,11 @@ requires = [ # 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" }, @@ -185,48 +181,32 @@ doc_events = { }, "Project": { "before_insert": "custom_ui.events.jobs.before_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" + "after_insert": "custom_ui.events.jobs.after_insert" }, "Task": { - "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" + "before_insert": "custom_ui.events.task.before_insert" } } fixtures = [ - { - "dt": "Email Template", - "filters": [ - ["name", "in", ["Customer Invoice"]] - ] - }, { "dt": "DocType", "filters": [ ["custom", "=", 1] ] }, - - # 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"}, + { + "dt": "Custom Field" + }, + { + "dt": "Property Setter" + }, + { + "dt": "Client Script" + }, + { + "dt": "Server Script" + } ] @@ -238,21 +218,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 @@ -264,14 +244,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 @@ -297,37 +277,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 c4a42ae..014cf70 100644 --- a/custom_ui/install.py +++ b/custom_ui/install.py @@ -4,8 +4,6 @@ import subprocess import sys import frappe from .utils import create_module -import holidays -from datetime import date, timedelta def after_install(): create_module() @@ -19,11 +17,6 @@ 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(): @@ -37,13 +30,7 @@ def after_migrate(): frappe.clear_cache(doctype=doctype) frappe.reload_doctype(doctype) - check_and_create_holiday_list() - # create_project_templates() - create_task_types() - # create_tasks() - create_bid_meeting_note_form_templates() - - # update_address_fields() + update_address_fields() # build_frontend() @@ -65,7 +52,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 @@ -78,10 +65,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: @@ -94,7 +81,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( @@ -159,13 +146,6 @@ 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": [ @@ -276,7 +256,7 @@ def add_custom_fields(): insert_after="full_address" ), dict( - fieldname="longitude", + fieldname="longitude", label="Longitude", fieldtype="Float", precision=8, @@ -286,7 +266,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" ), @@ -300,7 +280,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", @@ -311,7 +291,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( @@ -347,13 +327,6 @@ 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": [ @@ -566,60 +539,7 @@ 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( @@ -629,33 +549,18 @@ 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: @@ -668,7 +573,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": @@ -677,10 +582,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: @@ -689,36 +594,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: @@ -726,20 +631,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") @@ -759,9 +664,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, @@ -782,7 +687,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" @@ -792,7 +697,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']}" @@ -823,7 +728,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 @@ -833,15 +738,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 = [ @@ -853,57 +758,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 @@ -911,7 +816,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 @@ -928,11 +833,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 @@ -953,13 +858,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:") @@ -981,7 +886,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: @@ -991,390 +896,5 @@ 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 - -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) + + return missing_field_specs \ No newline at end of file diff --git a/custom_ui/services/__init__.py b/custom_ui/services/__init__.py index 1fb0a17..ba04b9d 100644 --- a/custom_ui/services/__init__.py +++ b/custom_ui/services/__init__.py @@ -3,6 +3,4 @@ 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 -from .task_service import TaskService -from .service_appointment_service import ServiceAppointmentService \ No newline at end of file +from .onsite_meeting_service import OnSiteMeetingService \ No newline at end of file diff --git a/custom_ui/services/client_service.py b/custom_ui/services/client_service.py index 099b4d2..3207dd2 100644 --- a/custom_ui/services/client_service.py +++ b/custom_ui/services/client_service.py @@ -122,6 +122,7 @@ 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 deleted file mode 100644 index a4d45d0..0000000 --- a/custom_ui/services/service_appointment_service.py +++ /dev/null @@ -1,54 +0,0 @@ -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 deleted file mode 100644 index f03028b..0000000 --- a/custom_ui/services/task_service.py +++ /dev/null @@ -1,171 +0,0 @@ -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 01e1baf..a6bb5e8 100644 --- a/frontend/src/api.js +++ b/frontend/src/api.js @@ -5,73 +5,47 @@ 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_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_JOB_TASK_LIST_METHOD = "custom_ui.api.db.jobs.get_job_task_table_data"; 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 METHOPD + // CORE REQUEST METHOD // ============================================================================ static async request(frappeMethod, args = {}) { @@ -111,17 +85,6 @@ 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 @@ -173,22 +136,9 @@ class Api { // ON-SITE MEETING METHODS // ============================================================================ - 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) { + static async getUnscheduledBidMeetings() { return await this.request( "custom_ui.api.db.bid_meetings.get_unscheduled_bid_meetings", - { company } ); } @@ -196,8 +146,8 @@ class Api { return await this.request(FRAPPE_GET_ONSITE_MEETINGS_METHOD, { fields, filters }); } - static async getWeekBidMeetings(weekStart, weekEnd, company) { - return await this.request(FRAPPE_GET_WEEK_ONSITE_MEETINGS_METHOD, { weekStart, weekEnd, company }); + static async getWeekBidMeetings(weekStart, weekEnd) { + return await this.request(FRAPPE_GET_WEEK_ONSITE_MEETINGS_METHOD, { weekStart, weekEnd }); } static async updateBidMeeting(name, data) { @@ -219,12 +169,6 @@ class Api { }); } - static async getBidMeetingNote(name) { - return await this.request("custom_ui.api.db.bid_meetings.get_bid_meeting_note", { - name, - }); - } - // ============================================================================ // ESTIMATE / QUOTATION METHODS // ============================================================================ @@ -269,12 +213,7 @@ class Api { console.log("DEBUG: API - Sending estimate options to backend:", 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 }); + const result = await this.request(FRAPPE_GET_ESTIMATES_METHOD, { page, pageSize, filters, sorting}); return result; } @@ -303,14 +242,6 @@ 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 // ============================================================================ @@ -367,39 +298,6 @@ 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 }) @@ -446,29 +344,10 @@ class Api { console.log("DEBUG: API - Sending job task options to backend:", options); - const result = await this.request(FRAPPE_GET_JOB_TASK_TABLE_DATA_METHOD, { filters, sortings: sorting, page:page+1, pageSize }); + const result = await this.request(FRAPPE_GET_JOB_TASK_LIST_METHOD, { options, filters }); 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 // ============================================================================ @@ -522,16 +401,6 @@ 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 // ============================================================================ @@ -568,16 +437,6 @@ 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 // ============================================================================ @@ -699,26 +558,6 @@ 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 // ============================================================================ @@ -733,21 +572,20 @@ class Api { */ static async getDocsList( doctype, - fields = ["*"], + fields = [], filters = {}, - pluck = null, + page = 0, + start = 0, + pageLength = 0, ) { - const docs = await this.request( - FRAPPE_GET_DOC_LIST_METHOD, - { - doctype, - fields, - filters, - pluck, - } - ); + const docs = await frappe.db.get_list(doctype, { + fields, + filters, + start: start, + limit: pageLength, + }); console.log( - `DEBUG: API - Fetched ${doctype} list: `, + `DEBUG: API - Fetched ${doctype} list (page ${page + 1}, start ${start}): `, docs, ); return docs; diff --git a/frontend/src/components/calendar/CalendarNavigation.vue b/frontend/src/components/calendar/CalendarNavigation.vue index a415e8a..6d8993a 100644 --- a/frontend/src/components/calendar/CalendarNavigation.vue +++ b/frontend/src/components/calendar/CalendarNavigation.vue @@ -1,24 +1,42 @@ @@ -69,35 +56,15 @@ 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 SNWProjectCalendar from './jobs/SNWProjectCalendar.vue'; +import InstallsCalendar from '../calendar/jobs/InstallsCalendar.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 deleted file mode 100644 index 978ca0c..0000000 --- a/frontend/src/components/calendar/jobs/SNWProjectCalendar.vue +++ /dev/null @@ -1,1850 +0,0 @@ - - - - - \ No newline at end of file diff --git a/frontend/src/components/clientSubPages/AddressInformationForm.vue b/frontend/src/components/clientSubPages/AddressInformationForm.vue index 632979d..622bfb9 100644 --- a/frontend/src/components/clientSubPages/AddressInformationForm.vue +++ b/frontend/src/components/clientSubPages/AddressInformationForm.vue @@ -59,15 +59,6 @@ style="margin-top: 0" /> - -
@@ -129,7 +120,7 @@