initial integrations

unifi
booked
This commit is contained in:
2025-11-14 15:13:36 +00:00
parent c1b5496095
commit 6ce57462a2
30 changed files with 705 additions and 4 deletions

View File

@@ -1 +1 @@
__version__ = "0.0.1"
__version__ = "0.0.5"

View File

@@ -0,0 +1,8 @@
// Copyright (c) 2025, Haddon Kitchen Incubator LLC and contributors
// For license information, please see license.txt
// frappe.ui.form.on("Booked Group", {
// refresh(frm) {
// },
// });

View File

@@ -0,0 +1,60 @@
{
"actions": [],
"allow_rename": 1,
"autoname": "field:group_label",
"creation": "2025-11-13 23:06:55.027840",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"groupid",
"group_label"
],
"fields": [
{
"fieldname": "group_label",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Group Label",
"reqd": 1,
"unique": 1
},
{
"fieldname": "groupid",
"fieldtype": "Int",
"in_list_view": 1,
"label": "Group ID",
"non_negative": 1,
"reqd": 1,
"unique": 1
}
],
"grid_page_length": 50,
"index_web_pages_for_search": 1,
"links": [],
"modified": "2025-11-13 23:28:08.843972",
"modified_by": "Administrator",
"module": "Member Management",
"name": "Booked Group",
"naming_rule": "By fieldname",
"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) 2025, Haddon Kitchen Incubator LLC and contributors
# For license information, please see license.txt
# import frappe
from frappe.model.document import Document
class BookedGroup(Document):
pass

View File

@@ -0,0 +1,9 @@
# Copyright (c) 2025, Haddon Kitchen Incubator LLC and Contributors
# See license.txt
# import frappe
from frappe.tests.utils import FrappeTestCase
class TestBookedGroup(FrappeTestCase):
pass

View File

@@ -0,0 +1,34 @@
{
"actions": [],
"allow_rename": 1,
"creation": "2025-11-13 23:21:54.581573",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"booked_group"
],
"fields": [
{
"fieldname": "booked_group",
"fieldtype": "Link",
"label": "Group",
"options": "Booked Group"
}
],
"grid_page_length": 50,
"index_web_pages_for_search": 1,
"istable": 1,
"links": [],
"modified": "2025-11-13 23:22:59.561662",
"modified_by": "Administrator",
"module": "Member Management",
"name": "Booked GroupId",
"owner": "Administrator",
"permissions": [],
"row_format": "Dynamic",
"rows_threshold_for_grid_search": 20,
"sort_field": "modified",
"sort_order": "DESC",
"states": []
}

View File

@@ -0,0 +1,9 @@
# Copyright (c) 2025, Haddon Kitchen Incubator LLC and contributors
# For license information, please see license.txt
# import frappe
from frappe.model.document import Document
class BookedGroupId(Document):
pass

View File

@@ -0,0 +1,8 @@
// Copyright (c) 2025, Haddon Kitchen Incubator LLC and contributors
// For license information, please see license.txt
// frappe.ui.form.on("Booked Member", {
// refresh(frm) {
// },
// });

View File

@@ -0,0 +1,127 @@
{
"actions": [],
"autoname": "field:booked_contact",
"creation": "2025-11-13 21:19:39.193998",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"booked_contact",
"firstname",
"lastname",
"emailaddress",
"phonecountrycode",
"phone",
"column_break_smfo",
"username",
"password",
"groupid",
"position"
],
"fields": [
{
"fieldname": "username",
"fieldtype": "Data",
"in_list_view": 1,
"label": "User Name",
"reqd": 1
},
{
"fetch_from": "booked_contact.email_id",
"fieldname": "emailaddress",
"fieldtype": "Read Only",
"in_list_view": 1,
"label": "Email",
"reqd": 1
},
{
"fieldname": "password",
"fieldtype": "Password",
"label": "Password",
"reqd": 1
},
{
"fieldname": "column_break_smfo",
"fieldtype": "Column Break"
},
{
"fetch_from": "booked_contact.first_name",
"fieldname": "firstname",
"fieldtype": "Read Only",
"in_list_view": 1,
"label": "First Name",
"reqd": 1
},
{
"fetch_from": "booked_contact.last_name",
"fieldname": "lastname",
"fieldtype": "Read Only",
"in_list_view": 1,
"label": "Last Name",
"reqd": 1
},
{
"fetch_from": "booked_contact.phone",
"fieldname": "phone",
"fieldtype": "Read Only",
"label": "Phone",
"reqd": 1
},
{
"default": "US",
"fieldname": "phonecountrycode",
"fieldtype": "Data",
"label": "Phone Country Code",
"read_only": 1,
"reqd": 1
},
{
"fetch_from": "booked_contact.designation",
"fieldname": "position",
"fieldtype": "Read Only",
"label": "Position"
},
{
"fieldname": "groupid",
"fieldtype": "Table MultiSelect",
"label": "Groups",
"options": "Booked GroupId"
},
{
"fieldname": "booked_contact",
"fieldtype": "Link",
"in_list_view": 1,
"label": "Contact",
"options": "Contact",
"reqd": 1,
"unique": 1
}
],
"grid_page_length": 50,
"index_web_pages_for_search": 1,
"istable": 1,
"links": [
{
"group": "Users",
"link_doctype": "Member Profile",
"link_fieldname": "member_id"
},
{
"group": "Users",
"link_doctype": "Onboarding",
"link_fieldname": "member_id"
}
],
"modified": "2025-11-14 00:31:54.667540",
"modified_by": "Administrator",
"module": "Member Management",
"name": "Booked Member",
"naming_rule": "By fieldname",
"owner": "Administrator",
"permissions": [],
"row_format": "Dynamic",
"rows_threshold_for_grid_search": 20,
"sort_field": "modified",
"sort_order": "DESC",
"states": []
}

View File

@@ -0,0 +1,9 @@
# Copyright (c) 2025, Haddon Kitchen Incubator LLC and contributors
# For license information, please see license.txt
# import frappe
from frappe.model.document import Document
class BookedMember(Document):
pass

View File

@@ -0,0 +1,9 @@
# Copyright (c) 2025, Haddon Kitchen Incubator LLC and Contributors
# See license.txt
# import frappe
from frappe.tests.utils import FrappeTestCase
class TestBookedMember(FrappeTestCase):
pass

View File

@@ -1,5 +1,12 @@
{
"actions": [],
"actions": [
{
"action": "Onboarding",
"action_type": "Route",
"group": "User",
"label": "Tasks"
}
],
"autoname": "format:{member_id}",
"creation": "2025-11-09 09:55:16.302059",
"default_view": "List",
@@ -23,6 +30,10 @@
"onboard_date",
"join_date",
"approve_date",
"column_break_ivvj",
"button_tasks",
"access_card_count",
"wifi_codes_issued",
"dashboard_tab",
"documents",
"agreements_section",
@@ -39,7 +50,10 @@
"tempattach",
"associates_tab",
"associates_section",
"table_cdln"
"table_cdln",
"tab_5_tab",
"unifi_profile",
"booked_member"
],
"fields": [
{
@@ -227,6 +241,44 @@
"fieldname": "onboarding_section",
"fieldtype": "Section Break",
"label": "Onboarding"
},
{
"fieldname": "button_tasks",
"fieldtype": "Button",
"label": "Codes",
"options": "Onboarding"
},
{
"fieldname": "column_break_ivvj",
"fieldtype": "Column Break"
},
{
"fieldname": "access_card_count",
"fieldtype": "Int",
"label": "Number of Access Cards Issued",
"non_negative": 1
},
{
"fieldname": "wifi_codes_issued",
"fieldtype": "Text",
"label": "Wifi Codes Issued"
},
{
"fieldname": "tab_5_tab",
"fieldtype": "Tab Break",
"label": "Provisioning"
},
{
"fieldname": "unifi_profile",
"fieldtype": "Table",
"label": "Facility Access",
"options": "UniFi Access Profile"
},
{
"fieldname": "booked_member",
"fieldtype": "Table",
"label": "Schedule Access",
"options": "Booked Member"
}
],
"grid_page_length": 50,
@@ -240,9 +292,14 @@
"group": "User",
"link_doctype": "Customer",
"link_fieldname": "customer_name"
},
{
"group": "User",
"link_doctype": "Onboarding",
"link_fieldname": "member_id"
}
],
"modified": "2025-11-11 18:35:14.522070",
"modified": "2025-11-14 00:19:01.685822",
"modified_by": "Administrator",
"module": "Member Management",
"name": "Member Profile",

View File

@@ -0,0 +1,8 @@
// Copyright (c) 2025, Haddon Kitchen Incubator LLC and contributors
// For license information, please see license.txt
// frappe.ui.form.on("Offboarding", {
// refresh(frm) {
// },
// });

View File

@@ -0,0 +1,48 @@
{
"actions": [],
"allow_rename": 1,
"creation": "2025-11-13 22:50:54.370722",
"doctype": "DocType",
"engine": "InnoDB",
"field_order": [
"member_id"
],
"fields": [
{
"fieldname": "member_id",
"fieldtype": "Link",
"in_list_view": 1,
"label": "Member",
"link_filters": "[[\"Member Profile\",\"status\",\"=\",\"Offboarding\"]]",
"options": "Member Profile",
"reqd": 1
}
],
"grid_page_length": 50,
"index_web_pages_for_search": 1,
"links": [],
"modified": "2025-11-13 22:53:03.268661",
"modified_by": "Administrator",
"module": "Member Management",
"name": "Offboarding",
"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) 2025, Haddon Kitchen Incubator LLC and contributors
# For license information, please see license.txt
# import frappe
from frappe.model.document import Document
class Offboarding(Document):
pass

View File

@@ -0,0 +1,9 @@
# Copyright (c) 2025, Haddon Kitchen Incubator LLC and Contributors
# See license.txt
# import frappe
from frappe.tests.utils import FrappeTestCase
class TestOffboarding(FrappeTestCase):
pass

View File

@@ -0,0 +1,8 @@
// Copyright (c) 2025, Haddon Kitchen Incubator LLC and contributors
// For license information, please see license.txt
// frappe.ui.form.on("Onboarding", {
// refresh(frm) {
// },
// });

View File

@@ -0,0 +1,120 @@
{
"actions": [],
"allow_rename": 1,
"autoname": "field:member_id",
"creation": "2025-11-11 19:14:43.300935",
"default_view": "Kanban",
"doctype": "DocType",
"engine": "InnoDB",
"field_order": [
"member_id",
"column_break_leyy",
"onboarding_step",
"payments_section",
"security_deposit_amount",
"security_paid",
"column_break_xbmx",
"app_fee",
"app_paid",
"dashboard_tab"
],
"fields": [
{
"fieldname": "member_id",
"fieldtype": "Link",
"in_list_view": 1,
"label": "Member",
"link_filters": "[[\"Member Profile\",\"status\",\"=\",\"Onboarding\"]]",
"options": "Member Profile",
"reqd": 1,
"set_only_once": 1,
"unique": 1
},
{
"fieldname": "column_break_leyy",
"fieldtype": "Column Break"
},
{
"fieldname": "payments_section",
"fieldtype": "Section Break",
"label": "Payments"
},
{
"fieldname": "security_deposit_amount",
"fieldtype": "Currency",
"label": "Security Deposit",
"non_negative": 1
},
{
"default": "0",
"fieldname": "security_paid",
"fieldtype": "Check",
"label": "Paid"
},
{
"fieldname": "column_break_xbmx",
"fieldtype": "Column Break"
},
{
"fieldname": "app_fee",
"fieldtype": "Currency",
"label": "Application Fee"
},
{
"default": "0",
"fieldname": "app_paid",
"fieldtype": "Check",
"label": "Paid"
},
{
"allow_in_quick_entry": 1,
"default": "Login Setup",
"fieldname": "onboarding_step",
"fieldtype": "Select",
"label": "Onboarding Status",
"options": "Login Setup\nAwaiting Documentation\nDocument Approval\nSchedule Onboarding\nAwaiting Payment\nPending Onboarding Meeting\nDOH Application\nDOH Approval\nSchedule Orientation\nCredit Bank Invoicing\nCheck-In\nComplete",
"reqd": 1
},
{
"fieldname": "dashboard_tab",
"fieldtype": "Tab Break",
"label": "Dashboard",
"show_dashboard": 1
}
],
"grid_page_length": 50,
"index_web_pages_for_search": 1,
"links": [
{
"link_doctype": "Member Profile",
"link_fieldname": "member_id"
}
],
"modified": "2025-11-11 22:47:23.901625",
"modified_by": "Administrator",
"module": "Member Management",
"name": "Onboarding",
"naming_rule": "By fieldname",
"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,
"show_title_field_in_link": 1,
"sort_field": "modified",
"sort_order": "DESC",
"states": [],
"title_field": "member_id"
}

View File

@@ -0,0 +1,9 @@
# Copyright (c) 2025, Haddon Kitchen Incubator LLC and contributors
# For license information, please see license.txt
# import frappe
from frappe.model.document import Document
class Onboarding(Document):
pass

View File

@@ -0,0 +1,9 @@
# Copyright (c) 2025, Haddon Kitchen Incubator LLC and Contributors
# See license.txt
# import frappe
from frappe.tests.utils import FrappeTestCase
class TestOnboarding(FrappeTestCase):
pass

View File

@@ -0,0 +1,9 @@
# Copyright (c) 2025, Haddon Kitchen Incubator LLC and Contributors
# See license.txt
# import frappe
from frappe.tests.utils import FrappeTestCase
class TestUniFiAccessProfile(FrappeTestCase):
pass

View File

@@ -0,0 +1,8 @@
// Copyright (c) 2025, Haddon Kitchen Incubator LLC and contributors
// For license information, please see license.txt
// frappe.ui.form.on("UniFi Access Profile", {
// refresh(frm) {
// },
// });

View File

@@ -0,0 +1,116 @@
{
"actions": [],
"autoname": "field:contact_name",
"creation": "2025-11-13 23:43:02.590767",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"contact_section",
"contact_name",
"acess_status_section",
"unifi_status",
"column_break_felf",
"unifi_profile_section",
"first_name",
"last_name",
"email",
"column_break_rhfh",
"unifi_pin",
"unifi_policy",
"unifi_id"
],
"fields": [
{
"fieldname": "contact_name",
"fieldtype": "Link",
"in_list_view": 1,
"label": "Contact",
"options": "Contact",
"unique": 1
},
{
"fetch_from": "contact_name.first_name",
"fieldname": "first_name",
"fieldtype": "Data",
"label": "First Name"
},
{
"fetch_from": "contact_name.last_name",
"fieldname": "last_name",
"fieldtype": "Data",
"label": "Last Name"
},
{
"fetch_from": "contact_name.email_id",
"fieldname": "email",
"fieldtype": "Data",
"label": "Email"
},
{
"fieldname": "unifi_id",
"fieldtype": "Data",
"label": "UniFi ID",
"unique": 1
},
{
"fieldname": "unifi_pin",
"fieldtype": "Data",
"label": "PIN Code"
},
{
"fieldname": "unifi_status",
"fieldtype": "Select",
"in_list_view": 1,
"label": "Status",
"options": "ACTIVE\nPENDING\nDEACTIVATED",
"reqd": 1
},
{
"default": "ID HERE",
"fieldname": "unifi_policy",
"fieldtype": "Data",
"label": "Access Policy ID",
"read_only": 1
},
{
"fieldname": "column_break_rhfh",
"fieldtype": "Column Break"
},
{
"fieldname": "contact_section",
"fieldtype": "Section Break",
"label": "Contact"
},
{
"fieldname": "column_break_felf",
"fieldtype": "Column Break"
},
{
"fieldname": "acess_status_section",
"fieldtype": "Section Break",
"label": "Acess Status"
},
{
"fieldname": "unifi_profile_section",
"fieldtype": "Section Break",
"label": "UniFi Profile"
}
],
"grid_page_length": 50,
"index_web_pages_for_search": 1,
"istable": 1,
"links": [],
"modified": "2025-11-14 00:28:38.504479",
"modified_by": "Administrator",
"module": "Member Management",
"name": "UniFi Access Profile",
"naming_rule": "By fieldname",
"owner": "Administrator",
"permissions": [],
"row_format": "Dynamic",
"rows_threshold_for_grid_search": 20,
"sort_field": "modified",
"sort_order": "DESC",
"states": []
}

View File

@@ -0,0 +1,9 @@
# Copyright (c) 2025, Haddon Kitchen Incubator LLC and contributors
# For license information, please see license.txt
# import frappe
from frappe.model.document import Document
class UniFiAccessProfile(Document):
pass