From fe3c5f3215d659da0e18cf1ba9eb5383e69a9da9 Mon Sep 17 00:00:00 2001 From: meichthys Date: Fri, 13 Feb 2026 06:01:12 +0000 Subject: [PATCH 1/3] remove family table from directory --- .../print_format/church_directory/church_directory.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/church/church_people/print_format/church_directory/church_directory.json b/church/church_people/print_format/church_directory/church_directory.json index d3945b7..e54983f 100644 --- a/church/church_people/print_format/church_directory/church_directory.json +++ b/church/church_people/print_format/church_directory/church_directory.json @@ -10,14 +10,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "\n\n
\n

Church Directory

\n
\n\n\n \n \n\n \n \n
\n {% if doc.photo %}\n \n {% else %}\n \n {% endif %}\n \n\n
\n {{ doc.full_name or (doc.first_name + \" \" + doc.last_name) }}\n
\n\n \n {% if doc.church_roles %}\n {% for role in doc.church_roles %}\n
\n Role\n {{ role.role }}\n
\n {% endfor %}\n {% endif %}\n\n {% if doc.primary_phone %}\n
\n Phone\n {{ doc.primary_phone }}\n
\n {% endif %}\n\n {% if doc.email %}\n
\n Email\n {{ doc.email }}\n
\n {% endif %}\n\n {% if doc.home_address %}\n
\n Address\n {{ doc.home_address }}\n
\n {% endif %}\n\n {% if doc.birthday %}\n
\n Birthday\n \n {{ frappe.utils.formatdate(doc.birthday, \"MMMM d\") }}\n \n
\n {% endif %}\n\n {% if doc.anniversary %}\n
\n Anniversary\n \n {{ frappe.utils.formatdate(doc.anniversary, \"MMMM d, yyyy\") }}\n \n
\n {% endif %}\n\n {% if doc.membership_date %}\n
\n Member Since\n \n {{ frappe.utils.formatdate(doc.membership_date, \"MMMM d, yyyy\") }}\n \n
\n {% endif %}\n\n \n {% if doc.family %}\n {% for fam in doc.family %}\n
\n Family\n {{ fam.family_member_name }}{% if fam.relationship %} ({{ fam.relationship }}){% endif %}\n
\n {% endfor %}\n {% endif %}\n\n
\n\n
\n {{ frappe.utils.formatdate(frappe.utils.nowdate(), \"MMMM yyyy\") }}\n
\n", + "html": "\n\n
\n

Church Directory

\n
\n\n\n \n \n\n \n \n
\n {% if doc.photo %}\n \n {% else %}\n \n {% endif %}\n \n\n
\n {{ doc.full_name or (doc.first_name + \" \" + doc.last_name) }}\n
\n\n \n {% if doc.church_roles %}\n {% for role in doc.church_roles %}\n
\n Role\n {{ role.role }}\n
\n {% endfor %}\n {% endif %}\n\n {% if doc.primary_phone %}\n
\n Phone\n {{ doc.primary_phone }}\n
\n {% endif %}\n\n {% if doc.email %}\n
\n Email\n {{ doc.email }}\n
\n {% endif %}\n\n {% if doc.home_address %}\n
\n Address\n {{ doc.home_address }}\n
\n {% endif %}\n\n {% if doc.birthday %}\n
\n Birthday\n \n {{ frappe.utils.formatdate(doc.birthday, \"MMMM d\") }}\n \n
\n {% endif %}\n\n {% if doc.anniversary %}\n
\n Anniversary\n \n {{ frappe.utils.formatdate(doc.anniversary, \"MMMM d, yyyy\") }}\n \n
\n {% endif %}\n\n {% if doc.membership_date %}\n
\n Member Since\n \n {{ frappe.utils.formatdate(doc.membership_date, \"MMMM d, yyyy\") }}\n \n
\n {% endif %}\n
\n\n
\n {{ frappe.utils.formatdate(frappe.utils.nowdate(), \"MMMM yyyy\") }}\n
\n", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2026-02-13 00:16:34.957246", + "modified": "2026-02-13 01:00:58.501895", "modified_by": "Administrator", "module": "Church People", "name": "Church Directory", From 8aa7b76361e5570ee6d262c96ab009f7b179e298 Mon Sep 17 00:00:00 2001 From: meichthys Date: Sun, 15 Feb 2026 02:32:55 +0000 Subject: [PATCH 2/3] add print_format __init__ --- church/church_people/print_format/__init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 church/church_people/print_format/__init__.py diff --git a/church/church_people/print_format/__init__.py b/church/church_people/print_format/__init__.py new file mode 100644 index 0000000..e69de29 From 86880ef206c1914fcfda2f2b277850460586f9fc Mon Sep 17 00:00:00 2001 From: meichthys Date: Sun, 15 Feb 2026 02:53:33 +0000 Subject: [PATCH 3/3] Fix #98 --- .../doctype/church_person/church_person.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/church/church_people/doctype/church_person/church_person.py b/church/church_people/doctype/church_person/church_person.py index b5f4b0a..e54cbc1 100644 --- a/church/church_people/doctype/church_person/church_person.py +++ b/church/church_people/doctype/church_person/church_person.py @@ -106,6 +106,22 @@ class ChurchPerson(Document): @frappe.whitelist() def new_family_from_person(self): + # Check if a family with this person's name already exists + existing_family = frappe.db.exists( + "Church Family", {"family_name": f"{self.last_name} - {self.first_name}"} + ) + + if existing_family: + # Set this person's family to the existing one + self.family = existing_family + self.is_head_of_household = False # Not head of household in an existing family + self.save() + frappe.msgprint( + f"⚠️ The {self.last_name} - {self.first_name} family already exists. This person has been added to that family." + ) + + return # Don't create a new family + doc = frappe.new_doc("Church Family") doc.family_name = f"{self.last_name} - {self.first_name}" doc.save()