Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: link contact_person (LAN-699) #226

Closed
wants to merge 17 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions landa/fixtures/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -7662,5 +7662,21 @@
"parenttype": null,
"source_text": "Email (Shipping Contact)",
"translated_text": "E-Mail (Versandkontakt)"
},
{
"context": null,
"contributed": 0,
"contribution_docname": null,
"contribution_status": "",
"docstatus": 0,
"doctype": "Translation",
"language": "de",
"modified": "2023-07-18 12:02:48.226796",
"name": "92b45c5c78",
"parent": null,
"parentfield": null,
"parenttype": null,
"source_text": "Contact person successfully added.",
"translated_text": "Kontaktperson erfolgreich hinzugef\u00fcgt."
}
]
20 changes: 20 additions & 0 deletions landa/organization_management/doctype/landa_member/landa_member.js
diePuppe marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ frappe.ui.form.on("LANDA Member", {
};
});


frm.make_methods = {
"User": () => {
frappe.new_doc("User", {
Expand All @@ -24,6 +25,7 @@ frappe.ui.form.on("LANDA Member", {
}
},
refresh: function (frm) {

// Automatically add the backlink to LANDA Member when a new Address or
// Contact is added.
frappe.dynamic_link = { doc: frm.doc, fieldname: "name", doctype: "LANDA Member" };
Expand Down Expand Up @@ -54,5 +56,23 @@ frappe.ui.form.on("LANDA Member", {
});
});
}
frm.add_custom_button(__("Set as Contact Person"), function() {
if (frm.doc.name) {
console.log(frm.doc.name);
frappe.call({
method: "landa.organization_management.doctype.landa_member.landa_member.link_contact_person",
args: {
member_name: frm.doc.name
}
});
}});
frm.add_custom_button(__('Remove as Contact Person'), function() {
frappe.call({
method: "landa.organization_management.doctype.landa_member.landa_member.unlink_contact_person",
args: {
member_name: frm.doc.name
}
});
});
},
});
105 changes: 105 additions & 0 deletions landa/organization_management/doctype/landa_member/landa_member.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,5 +66,110 @@ def revert_series(self):
revert_series_if_last(key, self.name)


def on_update(self):
if self.address:
organization = frappe.get_doc("Organization", self.organization)
organization.address = self.address
organization.save()


def get_full_name(first_name, last_name):
return (first_name or "") + (" " if (last_name and first_name) else "") + (last_name or "")


def link_member_contacts_and_addresses_to_organization(member, organization):
for address in frappe.get_all(
"Address", filters={"link_doctype": "LANDA Member", "link_name": member.name}
):
if not frappe.db.exists(
"Dynamic Link",
{
"link_doctype": "Organization",
"link_name": organization.name,
"parenttype": "Address",
"parent": address.name,
},
):
link = frappe.get_doc(
{
"doctype": "Dynamic Link",
"link_doctype": "Organization",
"link_name": organization.name,
"parenttype": "Address",
"parent": address.name,
}
)
link.insert()

for contact in frappe.get_all(
"Contact", filters={"link_doctype": "LANDA Member", "link_name": member.name}
):
if not frappe.db.exists(
"Dynamic Link",
{
"link_doctype": "Organization",
"link_name": organization.name,
"parenttype": "Contact",
"parent": contact.name,
},
):
link = frappe.get_doc(
{
"doctype": "Dynamic Link",
"link_doctype": "Organization",
"link_name": organization.name,
"parenttype": "Contact",
"parent": contact.name,
}
)
link.insert()


@frappe.whitelist()
def link_contact_person(member_name):
member = frappe.get_doc("LANDA Member", member_name)
organization = frappe.get_doc("Organization", member.organization)
link_member_contacts_and_addresses_to_organization(member, organization)
frappe.msgprint(_("Contact person successfully added."))


def unlink_member_contacts_and_addresses_from_organization(member, organization):
for address in frappe.get_all(
"Address", filters={"link_doctype": "LANDA Member", "link_name": member.name}
):
link = frappe.db.exists(
"Dynamic Link",
{
"link_doctype": "Organization",
"link_name": organization.name,
"parenttype": "Address",
"parent": address.name,
},
)
if link:
frappe.delete_doc("Dynamic Link", link)

for contact in frappe.get_all(
"Contact", filters={"link_doctype": "LANDA Member", "link_name": member.name}
):
link = frappe.db.exists(
"Dynamic Link",
{
"link_doctype": "Organization",
"link_name": organization.name,
"parenttype": "Contact",
"parent": contact.name,
},
)
if link:
frappe.delete_doc("Dynamic Link", link)


@frappe.whitelist()
def unlink_contact_person(member_name):
member = frappe.get_doc("LANDA Member", member_name)
organization = frappe.get_doc("Organization", member.organization)

unlink_member_contacts_and_addresses_from_organization(member, organization)

frappe.msgprint(_("Contact person successfully removed."))
Loading