Make sure the service appointment doctype is added to code so we can migrate new clean slate.

This commit is contained in:
rocketdebris 2026-02-11 11:10:04 -05:00
parent abee8ac4c8
commit a24aac3262
6 changed files with 164 additions and 0 deletions

View File

View File

@ -0,0 +1,8 @@
// Copyright (c) 2026, Shiloh Code LLC and contributors
// For license information, please see license.txt
// frappe.ui.form.on("Service Appointment", {
// refresh(frm) {
// },
// });

View File

@ -0,0 +1,138 @@
{
"actions": [],
"allow_rename": 1,
"autoname": "format:SA-{MM}-{YYYY}-{####}",
"creation": "2026-02-11 05:12:39.498845",
"doctype": "DocType",
"engine": "InnoDB",
"field_order": [
"expected_start_date",
"expected_end_date",
"project_template",
"project",
"actual_start_date",
"actual_end_date",
"expected_start_time",
"expected_end_time",
"actual_end_time",
"actual_start_time",
"status",
"customer",
"company",
"service_address"
],
"fields": [
{
"fieldname": "expected_start_date",
"fieldtype": "Date",
"label": "Expected Start Date"
},
{
"fieldname": "expected_end_date",
"fieldtype": "Date",
"label": "Expected End Date"
},
{
"fieldname": "project_template",
"fieldtype": "Link",
"label": "Project Template",
"options": "Project Template"
},
{
"fieldname": "project",
"fieldtype": "Link",
"in_list_view": 1,
"label": "Project",
"options": "Project",
"reqd": 1
},
{
"fieldname": "actual_start_date",
"fieldtype": "Date",
"label": "Actual Start Date"
},
{
"fieldname": "actual_end_date",
"fieldtype": "Date",
"label": "Actual End Date"
},
{
"fieldname": "expected_start_time",
"fieldtype": "Time",
"label": "Expected Start Time"
},
{
"fieldname": "expected_end_time",
"fieldtype": "Time",
"label": "Expected End Time"
},
{
"fieldname": "actual_end_time",
"fieldtype": "Time",
"label": "Actual End Time"
},
{
"fieldname": "actual_start_time",
"fieldtype": "Time",
"label": "Actual Start Time"
},
{
"default": "Open",
"fieldname": "status",
"fieldtype": "Select",
"in_list_view": 1,
"label": "Status",
"options": "Open\nScheduled\nStarted\nCompleted\nCanceled",
"reqd": 1
},
{
"fieldname": "customer",
"fieldtype": "Link",
"label": "Customer",
"options": "Customer",
"reqd": 1
},
{
"fieldname": "company",
"fieldtype": "Link",
"label": "Company",
"options": "Company",
"reqd": 1
},
{
"fieldname": "service_address",
"fieldtype": "Link",
"label": "Service Address",
"options": "Address",
"reqd": 1
}
],
"grid_page_length": 50,
"index_web_pages_for_search": 1,
"links": [],
"modified": "2026-02-11 06:01:13.520710",
"modified_by": "Administrator",
"module": "Custom UI",
"name": "Service Appointment",
"naming_rule": "Expression",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"share": 1,
"write": 1
}
],
"row_format": "Dynamic",
"rows_threshold_for_grid_search": 20,
"sort_field": "modified",
"sort_order": "DESC",
"states": []
}

View File

@ -0,0 +1,9 @@
# Copyright (c) 2026, Shiloh Code LLC and contributors
# For license information, please see license.txt
# import frappe
from frappe.model.document import Document
class ServiceAppointment(Document):
pass

View File

@ -0,0 +1,9 @@
# Copyright (c) 2026, Shiloh Code LLC and Contributors
# See license.txt
# import frappe
from frappe.tests.utils import FrappeTestCase
class TestServiceAppointment(FrappeTestCase):
pass