add church missionary and church letters (from people and missionaries)

This commit is contained in:
meichthys 2025-09-24 04:07:39 +00:00
parent b999c1dc91
commit 425f404f72
16 changed files with 546 additions and 254 deletions

View File

@ -31,6 +31,7 @@ The following features have been implemented in this app (see the [🗺️ Roadm
- Church Belief tracking
- Basic Church Website
- About Page
- Church Letter tracking (from people & missionaries)
## 📥 Installing Frappe
@ -104,9 +105,9 @@ Contributions are very welcome! If you plan any large contributions, please let
- Make sure the doctype name is pre-pended with `Church `
- Add a doctype description on the settings tab
- Add fields for the doctype (if necessary add field descriptions).
- Add permissions for the new doctype to the `Church User` and `Church Admin` roles.
- After adding permisssions, export the permissions by going to the DocType and chosing ... > Customize > Action > Export Customizations. Select the `Church` module and check both the 'Sync on Migrate' and `Export Custom Permissions` options and lick 'Submit'.
- Add the doctype to the relevant workspace.
- Add permissions for the new doctype to the `Church User` and `Church Admin` roles. (Not necessary for child tables)
- After adding permissions, export the permissions by going to the DocType and chosing ... > Customize > Action > Export Customizations. Select the relevant `Church` module and check both the 'Sync on Migrate' and `Export Custom Permissions` options and click 'Submit'.
- Add the doctype to the relevant workspace. (not necessary for child tables)
- If necessary, add an onboarding step & form tour to explain specific fields.
- If any default records for this doctype should be shipped with the app, add fixtures for them in `hooks.py`.

View File

@ -1,25 +1,122 @@
{
"actions": [],
"allow_rename": 1,
"autoname": "format:{title}",
"creation": "2025-09-18 22:33:05.489158",
"description": "Missionaries of the church.",
"doctype": "DocType",
"engine": "InnoDB",
"field_order": [
"section_break_ddv4"
"title",
"agency",
"photo",
"data_btqw",
"website",
"column_break_vedu",
"country",
"mailing_address",
"physical_address",
"notes",
"section_break_qxbh",
"letters",
"related_documents"
],
"fields": [
{
"fieldname": "section_break_ddv4",
"fieldname": "agency",
"fieldtype": "Data",
"in_filter": 1,
"in_list_view": 1,
"in_preview": 1,
"in_standard_filter": 1,
"label": "Agency"
},
{
"fieldname": "country",
"fieldtype": "Link",
"in_filter": 1,
"in_list_view": 1,
"in_preview": 1,
"in_standard_filter": 1,
"label": "Country",
"options": "Country"
},
{
"fieldname": "mailing_address",
"fieldtype": "Link",
"label": "Mailing Address",
"options": "Address"
},
{
"fieldname": "physical_address",
"fieldtype": "Link",
"label": "Physical Address",
"options": "Address"
},
{
"fieldname": "column_break_vedu",
"fieldtype": "Column Break"
},
{
"fieldname": "section_break_qxbh",
"fieldtype": "Section Break"
},
{
"description": "Link related documents here (i.e. `Church Person`s, `Church Event`s, `Church Collection`s, etc.)",
"fieldname": "related_documents",
"fieldtype": "Table",
"label": "Related Documents",
"options": "Dynamic Link"
},
{
"fieldname": "photo",
"fieldtype": "Attach Image",
"label": "Photo"
},
{
"fieldname": "title",
"fieldtype": "Data",
"in_filter": 1,
"in_list_view": 1,
"in_preview": 1,
"in_standard_filter": 1,
"label": "Title",
"reqd": 1,
"unique": 1
},
{
"fieldname": "data_btqw",
"fieldtype": "Data",
"label": "Email",
"options": "Email"
},
{
"fieldname": "website",
"fieldtype": "Data",
"label": "Website",
"options": "URL"
},
{
"fieldname": "notes",
"fieldtype": "Small Text",
"label": "Notes"
},
{
"fieldname": "letters",
"fieldtype": "Table",
"label": "Letters to the Church",
"options": "Church Letter"
}
],
"grid_page_length": 50,
"image_field": "photo",
"index_web_pages_for_search": 1,
"links": [],
"modified": "2025-09-18 22:33:05.489158",
"modified": "2025-09-23 22:20:41.577985",
"modified_by": "Administrator",
"module": "Church Missions",
"name": "Church Missionary",
"naming_rule": "Expression",
"owner": "Administrator",
"permissions": [
{
@ -38,5 +135,6 @@
"row_format": "Dynamic",
"sort_field": "modified",
"sort_order": "DESC",
"states": []
}
"states": [],
"track_changes": 1
}

View File

@ -0,0 +1,81 @@
{
"add_total_row": 0,
"add_translate_data": 0,
"columns": [
{
"fieldname": "parent",
"fieldtype": "Link",
"label": "From",
"options": "Church Missionary",
"width": 0
},
{
"fieldname": "date",
"fieldtype": "Date",
"label": "Date",
"width": 0
},
{
"fieldname": "read_to_church",
"fieldtype": "Check",
"label": "Read to Church?",
"width": 0
},
{
"fieldname": "is_private",
"fieldtype": "Check",
"label": "Is Private?",
"width": 0
},
{
"fieldname": "file",
"fieldtype": "Link",
"label": "File",
"options": "File",
"width": 0
},
{
"fieldname": "content",
"fieldtype": "Data",
"label": "Content",
"width": 0
}
],
"creation": "2025-09-24 00:00:27.738959",
"disabled": 0,
"docstatus": 0,
"doctype": "Report",
"filters": [
{
"default": "",
"fieldname": "missionary",
"fieldtype": "Link",
"label": "Church Missionary",
"mandatory": 1,
"options": "Church Missionary",
"wildcard_filter": 0
}
],
"idx": 0,
"is_standard": "Yes",
"letterhead": null,
"modified": "2025-09-24 00:01:07.037178",
"modified_by": "Administrator",
"module": "Church Missions",
"name": "Church Missionary Letters",
"owner": "Administrator",
"prepared_report": 0,
"query": "SELECT parent, date, read_to_church, is_private, file, content\nFROM `tabChurch Letter`\nWHERE parent = %(missionary)s\nORDER BY parent",
"ref_doctype": "Church Missionary",
"report_name": "Church Missionary Letters",
"report_type": "Query Report",
"roles": [
{
"role": "Church Manager"
},
{
"role": "Church User"
}
],
"timeout": 0
}

View File

@ -1,6 +1,6 @@
{
"charts": [],
"content": "[{\"id\":\"T2NecsUQOb\",\"type\":\"paragraph\",\"data\":{\"text\":\"<i>\\\"Go and make disciples of all nations, baptizing them in the name of the Father and of the Son and of the Holy Spirit,\\nand teaching them to obey all that I have commanded you.\\\"</i>\",\"col\":12}},{\"id\":\"YWaCShFabd\",\"type\":\"card\",\"data\":{\"card_name\":\"Church Missions Documents\",\"col\":4}}]",
"content": "[{\"id\":\"T2NecsUQOb\",\"type\":\"paragraph\",\"data\":{\"text\":\"<i>\\\"Go and make disciples of all nations, baptizing them in the name of the Father and of the Son and of the Holy Spirit,\\nand teaching them to obey all that I have commanded you.\\\"</i>\",\"col\":12}},{\"id\":\"YWaCShFabd\",\"type\":\"card\",\"data\":{\"card_name\":\"Church Missions Documents\",\"col\":4}},{\"id\":\"iUdtHBDilm\",\"type\":\"card\",\"data\":{\"card_name\":\"Church Missionary Reports\",\"col\":4}}]",
"creation": "2025-09-21 22:14:24.423520",
"custom_blocks": [],
"docstatus": 0,
@ -31,9 +31,28 @@
"link_type": "DocType",
"onboard": 0,
"type": "Link"
},
{
"hidden": 0,
"is_query_report": 0,
"label": "Church Missionary Reports",
"link_count": 1,
"link_type": "DocType",
"onboard": 0,
"type": "Card Break"
},
{
"hidden": 0,
"is_query_report": 1,
"label": "Church Missionary Letters",
"link_count": 0,
"link_to": "Church Missionary Letters",
"link_type": "Report",
"onboard": 0,
"type": "Link"
}
],
"modified": "2025-09-21 22:50:54.996477",
"modified": "2025-09-24 00:02:07.315513",
"modified_by": "Administrator",
"module": "Church Missions",
"name": "Missions",

View File

@ -0,0 +1,96 @@
{
"actions": [],
"allow_rename": 1,
"autoname": "format:{date} - {#####}",
"creation": "2025-09-23 21:49:59.122163",
"description": "A letter sent to the church.",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"date",
"column_break_zdbp",
"is_private",
"read_to_church",
"section_break_qmpt",
"file",
"content"
],
"fields": [
{
"fieldname": "column_break_zdbp",
"fieldtype": "Column Break"
},
{
"allow_in_quick_entry": 1,
"fieldname": "date",
"fieldtype": "Date",
"in_filter": 1,
"in_list_view": 1,
"in_preview": 1,
"in_standard_filter": 1,
"label": "Date",
"reqd": 1
},
{
"fieldname": "section_break_qmpt",
"fieldtype": "Section Break"
},
{
"allow_in_quick_entry": 1,
"fieldname": "file",
"fieldtype": "Attach",
"in_filter": 1,
"in_list_view": 1,
"in_preview": 1,
"in_standard_filter": 1,
"label": "File"
},
{
"allow_in_quick_entry": 1,
"description": "Content of letter (if not sent as a file)",
"fieldname": "content",
"fieldtype": "Text Editor",
"in_list_view": 1,
"in_preview": 1,
"label": "Content"
},
{
"allow_in_quick_entry": 1,
"default": "0",
"fieldname": "read_to_church",
"fieldtype": "Check",
"in_filter": 1,
"in_list_view": 1,
"in_preview": 1,
"in_standard_filter": 1,
"label": "Read to Church?"
},
{
"default": "0",
"description": "Check this to prevent the letter from being displayed publicly (i.e. on the website).",
"fieldname": "is_private",
"fieldtype": "Check",
"in_filter": 1,
"in_list_view": 1,
"in_preview": 1,
"in_standard_filter": 1,
"label": "Is Private?"
}
],
"grid_page_length": 50,
"index_web_pages_for_search": 1,
"istable": 1,
"links": [],
"modified": "2025-09-23 22:41:59.658717",
"modified_by": "Administrator",
"module": "Church People",
"name": "Church Letter",
"naming_rule": "Expression",
"owner": "Administrator",
"permissions": [],
"row_format": "Dynamic",
"sort_field": "modified",
"sort_order": "DESC",
"states": []
}

View File

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

View File

@ -33,6 +33,8 @@
"column_break_vzrz",
"primary_phone",
"email",
"section_break_eqre",
"letters",
"family_tab",
"column_break_gwhd",
"family",
@ -158,7 +160,7 @@
{
"fieldname": "contact_information_tab",
"fieldtype": "Tab Break",
"label": "Contact Information"
"label": "Contact"
},
{
"fieldname": "alergies",
@ -264,6 +266,16 @@
"fieldtype": "Select",
"label": "Gender",
"options": "Female\nMale\nUnknown"
},
{
"fieldname": "section_break_eqre",
"fieldtype": "Section Break"
},
{
"fieldname": "letters",
"fieldtype": "Table",
"label": "Letters to the Church",
"options": "Church Letter"
}
],
"grid_page_length": 50,
@ -275,7 +287,7 @@
"link_fieldname": "related_person"
}
],
"modified": "2025-09-15 23:46:22.721788",
"modified": "2025-09-23 22:16:37.429684",
"modified_by": "Administrator",
"module": "Church People",
"name": "Church Person",
@ -303,4 +315,4 @@
"states": [],
"title_field": "full_name",
"track_changes": 1
}
}

View File

@ -0,0 +1,81 @@
{
"add_total_row": 0,
"add_translate_data": 0,
"columns": [
{
"fieldname": "parent",
"fieldtype": "Link",
"label": "From",
"options": "Church Person",
"width": 0
},
{
"fieldname": "date",
"fieldtype": "Date",
"label": "Date",
"width": 0
},
{
"fieldname": "read_to_church",
"fieldtype": "Check",
"label": "Read to Church?",
"width": 0
},
{
"fieldname": "is_private",
"fieldtype": "Check",
"label": "Is Private?",
"width": 0
},
{
"fieldname": "file",
"fieldtype": "Link",
"label": "File",
"options": "File",
"width": 0
},
{
"fieldname": "content",
"fieldtype": "Data",
"label": "Content",
"width": 0
}
],
"creation": "2025-09-23 22:52:51.796888",
"disabled": 0,
"docstatus": 0,
"doctype": "Report",
"filters": [
{
"default": "Church Person",
"fieldname": "person",
"fieldtype": "Link",
"label": "Church Person",
"mandatory": 1,
"options": "Church Person",
"wildcard_filter": 0
}
],
"idx": 0,
"is_standard": "Yes",
"letterhead": null,
"modified": "2025-09-23 23:56:51.124106",
"modified_by": "Administrator",
"module": "Church People",
"name": "Church Letters",
"owner": "Administrator",
"prepared_report": 0,
"query": "SELECT parent, date, read_to_church, is_private, file, content\nFROM `tabChurch Letter`\nWHERE parent = %(person)s\nORDER BY parent",
"ref_doctype": "Church Person",
"report_name": "Church Letters",
"report_type": "Query Report",
"roles": [
{
"role": "Church Manager"
},
{
"role": "Church User"
}
],
"timeout": 0
}

View File

@ -0,0 +1,81 @@
{
"add_total_row": 0,
"add_translate_data": 0,
"columns": [
{
"fieldname": "parent",
"fieldtype": "Link",
"label": "From",
"options": "Church Person",
"width": 0
},
{
"fieldname": "date",
"fieldtype": "Date",
"label": "Date",
"width": 0
},
{
"fieldname": "read_to_church",
"fieldtype": "Check",
"label": "Read to Church?",
"width": 0
},
{
"fieldname": "is_private",
"fieldtype": "Check",
"label": "Is Private?",
"width": 0
},
{
"fieldname": "file",
"fieldtype": "Link",
"label": "File",
"options": "File",
"width": 0
},
{
"fieldname": "content",
"fieldtype": "Data",
"label": "Content",
"width": 0
}
],
"creation": "2025-09-23 23:57:47.370175",
"disabled": 0,
"docstatus": 0,
"doctype": "Report",
"filters": [
{
"default": "Church Person",
"fieldname": "person",
"fieldtype": "Link",
"label": "Church Person",
"mandatory": 1,
"options": "Church Person",
"wildcard_filter": 0
}
],
"idx": 0,
"is_standard": "Yes",
"letterhead": null,
"modified": "2025-09-23 23:57:47.370175",
"modified_by": "Administrator",
"module": "Church People",
"name": "Church Person Letters",
"owner": "Administrator",
"prepared_report": 0,
"query": "SELECT parent, date, read_to_church, is_private, file, content\nFROM `tabChurch Letter`\nWHERE parent = %(person)s\nORDER BY parent",
"ref_doctype": "Church Person",
"report_name": "Church Person Letters",
"report_type": "Query Report",
"roles": [
{
"role": "Church Manager"
},
{
"role": "Church User"
}
],
"timeout": 0
}

View File

@ -22,49 +22,6 @@
"is_hidden": 0,
"label": "People",
"links": [
{
"description": "These are some pre-prepared reports. You can always create your own reports by going to `[Document] Report`, filtering the report, then choosing `save as` in the `...` menu.",
"hidden": 0,
"is_query_report": 0,
"label": "Person Reports",
"link_count": 3,
"link_type": "DocType",
"onboard": 0,
"type": "Card Break"
},
{
"hidden": 0,
"is_query_report": 0,
"label": "Current Church Person Roles",
"link_count": 0,
"link_to": "Current Church Person Roles",
"link_type": "Report",
"onboard": 0,
"report_ref_doctype": "Church Person",
"type": "Link"
},
{
"hidden": 0,
"is_query_report": 0,
"label": "Church Person Birthdays (This Week)",
"link_count": 0,
"link_to": "Church Person Birthdays (This Week)",
"link_type": "Report",
"onboard": 0,
"report_ref_doctype": "Church Person",
"type": "Link"
},
{
"hidden": 0,
"is_query_report": 0,
"label": "Church Person Roles Ending This Month",
"link_count": 0,
"link_to": "Church Person Roles Ending This Month",
"link_type": "Report",
"onboard": 0,
"report_ref_doctype": "Church Person",
"type": "Link"
},
{
"description": "Click on shortcuts below to see full lists.",
"hidden": 0,
@ -124,9 +81,62 @@
"link_type": "DocType",
"onboard": 0,
"type": "Link"
},
{
"description": "These are some pre-prepared reports. You can always create your own reports by going to `[Document] Report`, filtering the report, then choosing `save as` in the `...` menu.",
"hidden": 0,
"is_query_report": 0,
"label": "Person Reports",
"link_count": 4,
"link_type": "DocType",
"onboard": 0,
"type": "Card Break"
},
{
"hidden": 0,
"is_query_report": 0,
"label": "Current Church Person Roles",
"link_count": 0,
"link_to": "Current Church Person Roles",
"link_type": "Report",
"onboard": 0,
"report_ref_doctype": "Church Person",
"type": "Link"
},
{
"hidden": 0,
"is_query_report": 0,
"label": "Church Person Birthdays (This Week)",
"link_count": 0,
"link_to": "Church Person Birthdays (This Week)",
"link_type": "Report",
"onboard": 0,
"report_ref_doctype": "Church Person",
"type": "Link"
},
{
"hidden": 0,
"is_query_report": 0,
"label": "Church Person Roles Ending This Month",
"link_count": 0,
"link_to": "Church Person Roles Ending This Month",
"link_type": "Report",
"onboard": 0,
"report_ref_doctype": "Church Person",
"type": "Link"
},
{
"hidden": 0,
"is_query_report": 1,
"label": "Church Person Letters",
"link_count": 0,
"link_to": "Church Person Letters",
"link_type": "Report",
"onboard": 0,
"type": "Link"
}
],
"modified": "2025-09-21 22:51:57.721553",
"modified": "2025-09-23 23:58:34.374510",
"modified_by": "Administrator",
"module": "Church People",
"name": "People",

View File

@ -1,197 +1 @@
[
{
"aggregate_function_based_on": null,
"based_on": "creation",
"chart_name": "Church Persons Count",
"chart_type": "Count",
"color": null,
"currency": "USD",
"custom_options": null,
"docstatus": 0,
"doctype": "Dashboard Chart",
"document_type": "Church Person",
"dynamic_filters_json": "[]",
"filters_json": "[]",
"from_date": null,
"group_by_based_on": null,
"group_by_type": "Count",
"heatmap_year": null,
"is_public": 0,
"is_standard": 1,
"last_synced_on": "2025-09-18 22:26:53.523957",
"modified": "2025-09-07 00:54:39.868404",
"module": "Church People",
"name": "Church Persons Count",
"number_of_groups": 0,
"parent_document_type": "",
"report_name": null,
"roles": [],
"show_values_over_chart": 1,
"source": "",
"time_interval": "Monthly",
"timeseries": 1,
"timespan": "Last Year",
"to_date": null,
"type": "Line",
"use_report_chart": 0,
"value_based_on": "",
"x_field": null,
"y_axis": []
},
{
"aggregate_function_based_on": null,
"based_on": "membership_date",
"chart_name": "Church Members Count (New by Month)",
"chart_type": "Count",
"color": "#29CD42",
"currency": "",
"custom_options": null,
"docstatus": 0,
"doctype": "Dashboard Chart",
"document_type": "Church Person",
"dynamic_filters_json": "[]",
"filters_json": "[[\"Church Person\",\"is_member\",\"=\",1,false]]",
"from_date": null,
"group_by_based_on": null,
"group_by_type": "Count",
"heatmap_year": null,
"is_public": 1,
"is_standard": 1,
"last_synced_on": "2025-09-18 22:26:53.618580",
"modified": "2025-09-07 00:50:04.955468",
"module": "Church",
"name": "Church Members Count (New by Month)",
"number_of_groups": 0,
"parent_document_type": "",
"report_name": null,
"roles": [],
"show_values_over_chart": 0,
"source": "",
"time_interval": "Monthly",
"timeseries": 1,
"timespan": "Last Year",
"to_date": null,
"type": "Bar",
"use_report_chart": 0,
"value_based_on": "",
"x_field": null,
"y_axis": []
},
{
"aggregate_function_based_on": null,
"based_on": "creation",
"chart_name": "Church Prayer Request Count (Active)",
"chart_type": "Count",
"color": "#ECAD4B",
"currency": "USD",
"custom_options": null,
"docstatus": 0,
"doctype": "Dashboard Chart",
"document_type": "Church Prayer Request",
"dynamic_filters_json": "[]",
"filters_json": "[[\"Church Prayer Request\",\"status\",\"in\",[\"Requested\",\"Intercession\"],false]]",
"from_date": null,
"group_by_based_on": null,
"group_by_type": "Count",
"heatmap_year": null,
"is_public": 1,
"is_standard": 1,
"last_synced_on": "2025-09-18 22:56:44.332210",
"modified": "2025-09-14 23:14:26.147339",
"module": "Church",
"name": "Church Prayer Request Count (Active)",
"number_of_groups": 0,
"parent_document_type": "",
"report_name": null,
"roles": [],
"show_values_over_chart": 1,
"source": "",
"time_interval": "Daily",
"timeseries": 1,
"timespan": "Last Year",
"to_date": null,
"type": "Line",
"use_report_chart": 0,
"value_based_on": "",
"x_field": null,
"y_axis": []
},
{
"aggregate_function_based_on": null,
"based_on": "creation",
"chart_name": "Church Collections Sum",
"chart_type": "Sum",
"color": "#138a25",
"currency": "USD",
"custom_options": null,
"docstatus": 0,
"doctype": "Dashboard Chart",
"document_type": "Church Donation",
"dynamic_filters_json": "[]",
"filters_json": "[]",
"from_date": null,
"group_by_based_on": null,
"group_by_type": "Count",
"heatmap_year": null,
"is_public": 0,
"is_standard": 1,
"last_synced_on": "2025-09-18 22:26:53.677820",
"modified": "2025-09-07 00:55:38.760521",
"module": "Church",
"name": "Church Collections Sum",
"number_of_groups": 0,
"parent_document_type": "Church Collection",
"report_name": null,
"roles": [],
"show_values_over_chart": 1,
"source": "",
"time_interval": "Weekly",
"timeseries": 1,
"timespan": "Last Year",
"to_date": null,
"type": "Bar",
"use_report_chart": 0,
"value_based_on": "amount",
"x_field": null,
"y_axis": []
},
{
"aggregate_function_based_on": null,
"based_on": "modified",
"chart_name": "Church Prayer Requests (Answered)",
"chart_type": "Count",
"color": "#29CD42",
"currency": "USD",
"custom_options": null,
"docstatus": 0,
"doctype": "Dashboard Chart",
"document_type": "Church Prayer Request",
"dynamic_filters_json": "[]",
"filters_json": "[[\"Church Prayer Request\",\"status\",\"=\",\"Answered\",false]]",
"from_date": null,
"group_by_based_on": null,
"group_by_type": "Count",
"heatmap_year": null,
"is_public": 1,
"is_standard": 1,
"last_synced_on": "2025-09-18 22:56:44.692933",
"modified": "2025-09-14 23:14:16.569027",
"module": "Church",
"name": "Church Prayer Requests (Answered)",
"number_of_groups": 0,
"parent_document_type": "",
"report_name": null,
"roles": [],
"show_values_over_chart": 1,
"source": "",
"time_interval": "Daily",
"timeseries": 1,
"timespan": "Last Year",
"to_date": null,
"type": "Line",
"use_report_chart": 0,
"value_based_on": "",
"x_field": null,
"y_axis": []
}
]
[]