better handle spouse linking/unlinking

This commit is contained in:
meichthys 2025-09-30 04:27:03 +00:00
parent c69d1b6df1
commit 575fd1e789

View File

@ -11,9 +11,7 @@ class ChurchPerson(Document):
def before_save(self):
# We set this here since virtual fields do not work with
# View Settings -> Title Field as of 2025-08-26
self.full_name = f"{self.first_name}" + (
(" " + self.last_name) if self.last_name else ""
)
self.full_name = f"{self.first_name}" + ((" " + self.last_name) if self.last_name else "")
def validate(self):
if self.is_head_of_household:
@ -35,26 +33,27 @@ class ChurchPerson(Document):
head_doc.save()
# Sync spouses
if self.spouse:
if self.spouse and self.is_married:
# Sync spouses
spouse = frappe.get_doc("Church Person", self.spouse)
if spouse.spouse != self.name:
# Unlink spouse's old spouse if there was one
frappe.db.set_value("Church Person", spouse.spouse, "spouse", None)
frappe.db.set_value("Church Person", spouse.spouse, "anniversary", None)
frappe.db.set_value("Church Person", spouse.spouse, "is_married", False)
# Link spouses
frappe.db.set_value("Church Person", spouse.name, "spouse", self.name)
frappe.db.set_value("Church Person", spouse.name, "is_married", True)
frappe.msgprint(
f"Spouses have been linked:<br>"
f"{self.full_name} 👩‍❤️‍👨 {spouse.full_name}"
)
frappe.msgprint(f"Spouses have been linked:<br>{self.full_name} 👩‍❤️‍👨 {spouse.full_name}")
else:
if self._doc_before_save and self._doc_before_save.spouse:
if self._doc_before_save and self._doc_before_save.is_married and self._doc_before_save.spouse:
spouse = frappe.get_doc("Church Person", self._doc_before_save.spouse)
frappe.db.set_value("Church Person", spouse.name, "is_married", False)
frappe.db.set_value("Church Person", spouse.name, "spouse", None)
frappe.db.set_value("Church Person", spouse.name, "is_married", False)
self.spouse = None
self.anniversary = None
self.is_married = False
frappe.msgprint(
f"Spouses have been unlinked:<br>"
f"{self.full_name} 💔 {spouse.full_name}"
)
frappe.msgprint(f"Spouses have been unlinked:<br>{self.full_name} 💔 {spouse.full_name}")
@frappe.whitelist()
def new_family_from_person(self):
@ -73,10 +72,7 @@ class ChurchPerson(Document):
frappe.utils.get_datetime(role.start_date)
< datetime.now()
< frappe.utils.get_datetime(role.end_date)
) or (
not role.end_date
and frappe.utils.get_datetime(role.start_date) < datetime.now()
):
) or (not role.end_date and frappe.utils.get_datetime(role.start_date) < datetime.now()):
role.is_current_role = 1
else:
role.is_current_role = 0