From f25df533f936a0d667e84476f0011408072bea09 Mon Sep 17 00:00:00 2001
From: Jonathan Guerne
Date: Mon, 2 Aug 2021 15:26:34 +0200
Subject: [PATCH 01/15] CO-3711 new donors onboarding process
---
mass_mailing_switzerland/data/smart_tags.xml | 4 +
.../__manifest__.py | 2 +
.../data/onboarding_new_donors_process.xml | 179 ++++++++++++++++++
partner_communication_switzerland/i18n/de.po | 106 +++++++++++
.../i18n/fr_CH.po | 179 ++++++++++++++++++
.../models/account_invoice_line.py | 8 +-
.../models/res_partner.py | 79 ++++++--
.../views/onboarding_settings_view.xml | 25 +++
.../views/partner_compassion_view.xml | 13 ++
.../wizards/__init__.py | 1 +
.../wizards/onboarding_settings.py | 39 ++++
11 files changed, 618 insertions(+), 17 deletions(-)
create mode 100644 partner_communication_switzerland/data/onboarding_new_donors_process.xml
create mode 100644 partner_communication_switzerland/views/onboarding_settings_view.xml
create mode 100644 partner_communication_switzerland/wizards/onboarding_settings.py
diff --git a/mass_mailing_switzerland/data/smart_tags.xml b/mass_mailing_switzerland/data/smart_tags.xml
index feb87a845..54f677774 100644
--- a/mass_mailing_switzerland/data/smart_tags.xml
+++ b/mass_mailing_switzerland/data/smart_tags.xml
@@ -7,6 +7,10 @@
FROM recurring_contract c JOIN res_partner p ON c.correspondent_id = p.id
WHERE (now()::date - start_date::date) <= 60 and is_first_sponsorship = true
AND child_id IS NOT NULL
+ UNION
+ SELECT id
+ FROM res_partner
+ WHERE (now()::date - onboarding_new_donor_start_date::date) <= 60
diff --git a/partner_communication_switzerland/__manifest__.py b/partner_communication_switzerland/__manifest__.py
index b8ec842e2..1193f6aed 100644
--- a/partner_communication_switzerland/__manifest__.py
+++ b/partner_communication_switzerland/__manifest__.py
@@ -75,6 +75,7 @@
"report/onboarding_photo_by_post.xml",
"data/onboarding_process.xml",
"data/onboarding_survey.xml",
+ "data/onboarding_new_donors_process.xml",
"report/child_picture.xml",
"views/communication_job_view.xml",
"views/download_child_pictures_view.xml",
@@ -90,6 +91,7 @@
"views/field_office_view.xml",
"views/communication_test_case_view.xml",
"views/notification_settings_view.xml",
+ "views/onboarding_settings_view.xml",
"wizards/res_partner_create_portal_wizard.xml",
"templates/zoom_registration_form.xml",
],
diff --git a/partner_communication_switzerland/data/onboarding_new_donors_process.xml b/partner_communication_switzerland/data/onboarding_new_donors_process.xml
new file mode 100644
index 000000000..58b8a523e
--- /dev/null
+++ b/partner_communication_switzerland/data/onboarding_new_donors_process.xml
@@ -0,0 +1,179 @@
+
+
+
+
+ New Donors Onboarding - Postcard & Magazine
+
+ "${object.user_id.company_id.with_context(lang=object.partner_id.lang).address_name}" <compassion@compassion.ch>
+ info@compassion.ch
+
+
+
+ % set partner = object.partner_id
+ % set is_plural = partner.title.plural or partner.title.id == 29
+ % set dir = 'euch' if is_plural else 'dir'
+ % set du = 'ihr' if is_plural else 'du'
+ % set dich = 'euch' if is_plural else 'dich'
+ % set hast = 'habt' if is_plural else 'hast'
+ % set kennst = 'kennt' if is_plural else 'kennst'
+ % set Melde = 'Meldet' if is_plural else 'Melde'
+ ${partner.salutation}
+
+
+ Danke!
+
+
+ Wir freuen uns, ${dir} das aktuelle Compassion-Magazin zu senden. Einmal pro Jahr berichten wir in diesem Format über den Impact, den wir gemeinsam erreicht haben, was unsere Herausforderungen und Ziele sind und was Menschen im globalen Süden und in der Schweiz bewegt. Viel Freude beim Schmökern und Entdecken!
+
+
+ Wenn ${du} Compassion noch nicht ${kennst}, ${hast} ${du} vielleicht noch viele Fragen. ${Melde} ${dich} gerne jederzeit bei uns.
+
+
+ Herzliche Grüsse
+
+
+ Debora Alder-Gasser und das Team von Compassion
+
+
+
+
+
+ New Donors Onboarding - 1st Blog Post
+
+ "${object.user_id.company_id.with_context(lang=object.partner_id.lang).address_name}" <compassion@compassion.ch>
+ info@compassion.ch
+
+ Neu bei Compassion?
+
+
+ % set partner = object.partner_id
+ % set is_plural = partner.title.plural or partner.title.id == 29
+ % set dir = 'euch' if is_plural else 'dir'
+ % set du = 'ihr' if is_plural else 'du'
+ % set du_upper = 'Ihr' if is_plural else 'Du'
+ % set dich = 'euch' if is_plural else 'dich'
+ % set deine = 'eure' if is_plural else 'deine'
+ % set hast = 'habt' if is_plural else 'hast'
+ % set fragst = 'fragt' if is_plural else 'fragst'
+ ${partner.salutation}
+
+
+ Wir freuen uns, ${dich} kennenzulernen und ${dir} mehr davon zu erzählen, wie wir Kinder und Familien unterstützen, extreme Armut zu überwinden. ${du_upper} ${fragst} ${dich} vielleicht, was Kinderpatenschaften bringen, vielleicht sogar, ob sie sinnvoll sind oder ob nur christliche Kinder unterstützt werden? Gerne nehmen wir ${dich} mit und beantworten ${deine} Fragen.
+
+ Nochmals vielen Dank: mit ${dir} zusammen befreien wir zurzeit mit rund 8'000 Partnerkirchen in 25 Ländern 2,2 Millionen Kinder aus extremer Armut. Gemeinsam ermöglichen wir den Kindern ein Leben mit Hoffnung und Zukunft.
+
+
+ Herzliche Grüsse
+
+
+ Debora Alder-Gasser und das Team von Compassion
+
+
+
+
+
+ New Donors Onboarding - 2nd Blog Post
+
+ "${object.user_id.company_id.with_context(lang=object.partner_id.lang).address_name}" <compassion@compassion.ch>
+ info@compassion.ch
+
+ Warum sind Kinderpatenschaften nachhaltig und relevant?
+
+
+ % set partner = object.partner_id
+ % set is_plural = partner.title.plural or partner.title.id == 29
+ % set dir = 'euch' if is_plural else 'dir'
+ % set du = 'ihr' if is_plural else 'du'
+ % set du_upper = 'Ihr' if is_plural else 'Du'
+ % set dich = 'euch' if is_plural else 'dich'
+ % set deine = 'eure' if is_plural else 'deine'
+ % set findest = 'findet' if is_plural else 'findest'
+ % set fragst = 'fragt' if is_plural else 'fragst'
+ ${partner.salutation}
+
+
+ ${du_upper} ${fragst} ${dich} vielleicht: "Kinderpatenschaften kommen mir ein bisschen altmodisch vor. Sind sie wirklich noch relevant?"
+
+
+ Es wird ${dich} wahrscheinlich nicht überraschen, dass wir hier bei Compassion sagen, dass Kinderpatenschaften relevanter sind als je zuvor. Mit fast 70 Jahren Erfahrung glauben wir immer noch, dass eine Kinderpatenschaft eine lohnenswerte Investition ist, die effektiv, nachhaltig und engagiert ist - sogar in Krisenzeiten wie einer globalen Pandemie. Aber warum? Lass es uns gemeinsam auspacken.
+
+ Nochmals vielen Dank, denn gemeinsam verändern wir das Leben von Kindern - eins nach dem anderen.
+
+
+ Herzliche Grüsse
+
+
+ Debora Alder-Gasser und das Team von Compassion
+
+
+
+
+
+
+ New Donors Onboarding - Postcard & Magazine
+ physical
+
+
+
+
+
+
+ New Donors Onboarding - 1st Blog Post
+ auto_digital_only
+
+
+
+
+
+
+ New Donors Onboarding - 2nd Blog Post
+ auto_digital_only
+
+
+
+
+
+
+
+ New Donors Onboarding: 1st blog post
+
+ on_time
+
+
+ 1
+ month
+ communication
+
+ self
+
+
+
+ New Donors Onboarding: 2nd blog post
+
+ on_time
+
+
+ 2
+ month
+ communication
+
+ self
+
+
+
\ No newline at end of file
diff --git a/partner_communication_switzerland/i18n/de.po b/partner_communication_switzerland/i18n/de.po
index 836fc3b88..413e0b230 100644
--- a/partner_communication_switzerland/i18n/de.po
+++ b/partner_communication_switzerland/i18n/de.po
@@ -7598,3 +7598,109 @@ msgstr "Willkommen in der Familie von Compassion!"
#: model_terms:ir.ui.view,arch_db:partner_communication_switzerland.zoom_registration_template
msgid "um"
msgstr ""
+
+#. module: partner_communication_switzerland
+#: model:mail.template,body_html:partner_communication_switzerland.mail_new_donors_onboarding_postcard_and_magazine
+msgid "
\n"
+" % set partner = object.partner_id\n"
+" % set is_plural = partner.title.plural or partner.title.id == 29\n"
+" % set dir = 'euch' if is_plural else 'dir'\n"
+" % set du = 'ihr' if is_plural else 'du'\n"
+" % set dich = 'euch' if is_plural else 'dich'\n"
+" % set hast = 'habt' if is_plural else 'hast'\n"
+" % set kennst = 'kennt' if is_plural else 'kennst'\n"
+" % set Melde = 'Meldet' if is_plural else 'Melde'\n"
+" ${partner.salutation}\n"
+"
\n"
+"
\n"
+" Danke!\n"
+"
\n"
+"
\n"
+" Wir freuen uns, ${dir} das aktuelle Compassion-Magazin zu senden. Einmal pro Jahr berichten wir in diesem Format über den Impact, den wir gemeinsam erreicht haben, was unsere Herausforderungen und Ziele sind und was Menschen im globalen Süden und in der Schweiz bewegt. Viel Freude beim Schmökern und Entdecken!\n"
+"
\n"
+"
\n"
+" Wenn ${du} Compassion noch nicht ${kennst}, ${hast} ${du} vielleicht noch viele Fragen. ${Melde} ${dich} gerne jederzeit bei uns.\n"
+"
\n"
+"
\n"
+" Herzliche Grüsse\n"
+"
\n"
+"
\n"
+" Debora Alder-Gasser und das Team von Compassion\n"
+"
\n"
+" % set partner = object.partner_id\n"
+" % set is_plural = partner.title.plural or partner.title.id == 29\n"
+" % set dir = 'euch' if is_plural else 'dir'\n"
+" % set du = 'ihr' if is_plural else 'du'\n"
+" % set du_upper = 'Ihr' if is_plural else 'Du'\n"
+" % set dich = 'euch' if is_plural else 'dich'\n"
+" % set deine = 'eure' if is_plural else 'deine'\n"
+" % set findest = 'findet' if is_plural else 'findest'\n"
+" % set fragst = 'fragt' if is_plural else 'fragst'\n"
+" ${partner.salutation}\n"
+"
\n"
+"
\n"
+" ${du_upper} ${fragst} ${dich} vielleicht: \"Kinderpatenschaften kommen mir ein bisschen altmodisch vor. Sind sie wirklich noch relevant?\"\n"
+"
\n"
+"
\n"
+" Es wird ${dich} wahrscheinlich nicht überraschen, dass wir hier bei Compassion sagen, dass Kinderpatenschaften relevanter sind als je zuvor. Mit fast 70 Jahren Erfahrung glauben wir immer noch, dass eine Kinderpatenschaft eine lohnenswerte Investition ist, die effektiv, nachhaltig und engagiert ist - sogar in Krisenzeiten wie einer globalen Pandemie. Aber warum? Lass es uns gemeinsam auspacken.\n"
+"
\n"
+" % set partner = object.partner_id\n"
+" % set is_plural = partner.title.plural or partner.title.id == 29\n"
+" % set dir = 'euch' if is_plural else 'dir'\n"
+" % set du = 'ihr' if is_plural else 'du'\n"
+" % set du_upper = 'Ihr' if is_plural else 'Du'\n"
+" % set dich = 'euch' if is_plural else 'dich'\n"
+" % set deine = 'eure' if is_plural else 'deine'\n"
+" % set hast = 'habt' if is_plural else 'hast'\n"
+" % set fragst = 'fragt' if is_plural else 'fragst'\n"
+" ${partner.salutation}\n"
+"
\n"
+"
\n"
+" Wir freuen uns, ${dich} kennenzulernen und ${dir} mehr davon zu erzählen, wie wir Kinder und Familien unterstützen, extreme Armut zu überwinden. ${du_upper} ${fragst} ${dich} vielleicht, was Kinderpatenschaften bringen, vielleicht sogar, ob sie sinnvoll sind oder ob nur christliche Kinder unterstützt werden? Gerne nehmen wir ${dich} mit und beantworten ${deine} Fragen.\n"
+"
\n"
+" Nochmals vielen Dank: mit ${dir} zusammen befreien wir zurzeit mit rund 8'000 Partnerkirchen in 25 Ländern 2,2 Millionen Kinder aus extremer Armut. Gemeinsam ermöglichen wir den Kindern ein Leben mit Hoffnung und Zukunft.\n"
+"
\n"
+"
\n"
+" Herzliche Grüsse\n"
+"
\n"
+"
\n"
+" Debora Alder-Gasser und das Team von Compassion\n"
+"
\n"
+" "
+msgstr ""
\ No newline at end of file
diff --git a/partner_communication_switzerland/i18n/fr_CH.po b/partner_communication_switzerland/i18n/fr_CH.po
index 82bc90814..5d40389d6 100644
--- a/partner_communication_switzerland/i18n/fr_CH.po
+++ b/partner_communication_switzerland/i18n/fr_CH.po
@@ -8474,3 +8474,182 @@ msgstr "Bienvenue dans la famille de Compassion"
#: model_terms:ir.ui.view,arch_db:partner_communication_switzerland.zoom_registration_template
msgid "um"
msgstr ""
+
+#. module: partner_communication_switzerland
+#: model:mail.template,body_html:partner_communication_switzerland.mail_new_donors_onboarding_postcard_and_magazine
+msgid "
\n"
+" % set partner = object.partner_id\n"
+" % set is_plural = partner.title.plural or partner.title.id == 29\n"
+" % set dir = 'euch' if is_plural else 'dir'\n"
+" % set du = 'ihr' if is_plural else 'du'\n"
+" % set dich = 'euch' if is_plural else 'dich'\n"
+" % set hast = 'habt' if is_plural else 'hast'\n"
+" % set kennst = 'kennt' if is_plural else 'kennst'\n"
+" % set Melde = 'Meldet' if is_plural else 'Melde'\n"
+" ${partner.salutation}\n"
+"
\n"
+"
\n"
+" Danke!\n"
+"
\n"
+"
\n"
+" Wir freuen uns, ${dir} das aktuelle Compassion-Magazin zu senden. Einmal pro Jahr berichten wir in diesem Format über den Impact, den wir gemeinsam erreicht haben, was unsere Herausforderungen und Ziele sind und was Menschen im globalen Süden und in der Schweiz bewegt. Viel Freude beim Schmökern und Entdecken!\n"
+"
\n"
+"
\n"
+" Wenn ${du} Compassion noch nicht ${kennst}, ${hast} ${du} vielleicht noch viele Fragen. ${Melde} ${dich} gerne jederzeit bei uns.\n"
+"
\n"
+"
\n"
+" Herzliche Grüsse\n"
+"
\n"
+"
\n"
+" Debora Alder-Gasser und das Team von Compassion\n"
+"
\n"
+" "
+msgstr "
\n"
+" % set partner = object.partner_id\n"
+" % set is_plural = partner.title.plural or partner.title.id == 29\n"
+" ${partner.salutation}\n"
+"
\n"
+"
\n"
+" Merci!\n"
+"
\n"
+"
\n"
+" C’est une grande joie pour nous de vous adresser le dernier Magazine Compassion. Vous y découvrirez un aperçu de l'impact que nous avons obtenu ensemble, des défis de Compassion et de ce qui fait bouger les gens dans le Sud et en Suisse. Bonne lecture!\n"
+"Vous ne connaissez pas encore bien Compassion? Vous avez peut-être des questions sur notre engagement, notre action. N'hésitez pas à prendre contact avec nous.\n"
+"
\n"
+"
\n"
+" Christian Willi et l'équipe de Compassion vous saluent chaleureusement.\n"
+"
\n"
+" % set partner = object.partner_id\n"
+" % set is_plural = partner.title.plural or partner.title.id == 29\n"
+" % set dir = 'euch' if is_plural else 'dir'\n"
+" % set du = 'ihr' if is_plural else 'du'\n"
+" % set du_upper = 'Ihr' if is_plural else 'Du'\n"
+" % set dich = 'euch' if is_plural else 'dich'\n"
+" % set deine = 'eure' if is_plural else 'deine'\n"
+" % set findest = 'findet' if is_plural else 'findest'\n"
+" % set fragst = 'fragt' if is_plural else 'fragst'\n"
+" ${partner.salutation}\n"
+"
\n"
+"
\n"
+" ${du_upper} ${fragst} ${dich} vielleicht: \"Kinderpatenschaften kommen mir ein bisschen altmodisch vor. Sind sie wirklich noch relevant?\"\n"
+"
\n"
+"
\n"
+" Es wird ${dich} wahrscheinlich nicht überraschen, dass wir hier bei Compassion sagen, dass Kinderpatenschaften relevanter sind als je zuvor. Mit fast 70 Jahren Erfahrung glauben wir immer noch, dass eine Kinderpatenschaft eine lohnenswerte Investition ist, die effektiv, nachhaltig und engagiert ist - sogar in Krisenzeiten wie einer globalen Pandemie. Aber warum? Lass es uns gemeinsam auspacken.\n"
+"
\n"
+" Nochmals vielen Dank, denn gemeinsam verändern wir das Leben von Kindern - eins nach dem anderen.\n"
+"
\n"
+"
\n"
+" Herzliche Grüsse\n"
+"
\n"
+"
\n"
+" Debora Alder-Gasser und das Team von Compassion\n"
+"
\n"
+" "
+msgstr "
\n"
+" % set partner = object.partner_id\n"
+" % set is_plural = partner.title.plural or partner.title.id == 29\n"
+" ${partner.salutation}\n"
+"
\n"
+"
\n"
+"Vous vous demandez peut-être si le parrainage d'enfants est encore vraiment pertinent à notre époque.\n"
+"
\n"
+"
\n"
+" Vous ne serez probablement pas surpris d'apprendre qu'ici, à Compassion, nous affirmons que le parrainage d'enfants est une forme d’aide au développement plus pertinente que jamais. \n"
+"
\n"
+"
\n"
+"Avec près de 70 ans d'expérience, nous observons que le parrainage d'enfants est un investissement utile, efficace et durable et ce, même en temps de crise comme une pandémie mondiale. Mais pourquoi? Découvrons-le de plus près.\n"
+"
\n"
+" % set partner = object.partner_id\n"
+" % set is_plural = partner.title.plural or partner.title.id == 29\n"
+" % set dir = 'euch' if is_plural else 'dir'\n"
+" % set du = 'ihr' if is_plural else 'du'\n"
+" % set du_upper = 'Ihr' if is_plural else 'Du'\n"
+" % set dich = 'euch' if is_plural else 'dich'\n"
+" % set deine = 'eure' if is_plural else 'deine'\n"
+" % set hast = 'habt' if is_plural else 'hast'\n"
+" % set fragst = 'fragt' if is_plural else 'fragst'\n"
+" ${partner.salutation}\n"
+"
\n"
+"
\n"
+" Wir freuen uns, ${dich} kennenzulernen und ${dir} mehr davon zu erzählen, wie wir Kinder und Familien unterstützen, extreme Armut zu überwinden. ${du_upper} ${fragst} ${dich} vielleicht, was Kinderpatenschaften bringen, vielleicht sogar, ob sie sinnvoll sind oder ob nur christliche Kinder unterstützt werden? Gerne nehmen wir ${dich} mit und beantworten ${deine} Fragen.\n"
+"
\n"
+" Nochmals vielen Dank: mit ${dir} zusammen befreien wir zurzeit mit rund 8'000 Partnerkirchen in 25 Ländern 2,2 Millionen Kinder aus extremer Armut. Gemeinsam ermöglichen wir den Kindern ein Leben mit Hoffnung und Zukunft.\n"
+"
\n"
+"
\n"
+" Herzliche Grüsse\n"
+"
\n"
+"
\n"
+" Debora Alder-Gasser und das Team von Compassion\n"
+"
\n"
+" "
+msgstr "
\n"
+" % set partner = object.partner_id\n"
+" % set is_plural = partner.title.plural or partner.title.id == 29\n"
+" ${partner.salutation}\n"
+"
\n"
+"
\n"
+" Nous nous réjouissons de faire votre connaissance et de vous en dire plus sur la manière dont nous aidons les enfants et les familles à surmonter l'extrême pauvreté. \n"
+"Vous vous demandez peut-être ce qu'est le parrainage d'enfants, peut-être même s'il fait sens ou encore si seuls les enfants chrétiens sont soutenus? C’est un plaisir pour nous d’accompagner votre découverte de Compassion et de répondre à vos questions.\n"
+"
\n"
+" Encore une fois, merci: avec vous, nous sommes actuellement en train de soutenir 2,2 millions d'enfants, afin de les libérer de l'extrême pauvreté. Cet engagement, nous le menons en partenariat avec 8000 Eglises partenaires dans 25 pays.\n"
+"
\n"
+"
\n"
+"Ensemble, nous pouvons donner à ces enfants une vie digne, pleine d'espoir pour un avenir meilleur. \n"
+"
\n"
+"
\n"
+"Chaleureuses salutations et à bientôt.\n"
+"
\n"
+"
\n"
+"Sarah et l'équipe de Compassion\n"
+"
\n"
+" "
\ No newline at end of file
diff --git a/partner_communication_switzerland/models/account_invoice_line.py b/partner_communication_switzerland/models/account_invoice_line.py
index 573504d8c..44333c70d 100644
--- a/partner_communication_switzerland/models/account_invoice_line.py
+++ b/partner_communication_switzerland/models/account_invoice_line.py
@@ -68,7 +68,7 @@ def generate_thank_you(self):
default_communication_config = self.env.ref(
"partner_communication_switzerland.config_event_standard"
)
- return super(
+ res = super(
AccountInvoiceLine,
self.with_context(
same_job_search=[("event_id", "=", event.id)],
@@ -79,6 +79,12 @@ def generate_thank_you(self):
),
).generate_thank_you()
+ # filter and start new donors onboarding for matching partners
+ new_donors = self.mapped("partner_id").filter_onboarding_new_donors()
+ new_donors.start_new_donors_onboarding()
+
+ return res
+
@api.multi
def send_receipt_to_ambassador(self):
"""
diff --git a/partner_communication_switzerland/models/res_partner.py b/partner_communication_switzerland/models/res_partner.py
index d01393abb..a7e63f9ae 100644
--- a/partner_communication_switzerland/models/res_partner.py
+++ b/partner_communication_switzerland/models/res_partner.py
@@ -47,6 +47,10 @@ class ResPartner(models.Model):
informal_salutation = fields.Char(compute="_compute_informal_salutation",
help="Informal salutation used in French")
+ onboarding_new_donor_start_date = fields.Date(help="Indicates when the first email of "
+ "the new donor onboarding process was sent.",
+ copy=False)
+
def _get_salutation_fr_CH(self, informal=False):
self.ensure_one()
family_title = self.env.ref("partner_compassion.res_partner_title_family")
@@ -81,7 +85,7 @@ def _get_salutation_de_DE(self):
if title == family_title:
return f"Liebe Familie {self.lastname}"
elif title == mister_madam_title:
- return f"Hallo {self.firstname}"
+ return f"Hallo {self.firstname}"
elif is_company:
return "Liebe Freundinnen und Freunde von Compassion"
else:
@@ -157,19 +161,19 @@ def _compute_new_donor(self):
def _compute_no_physical_letter(self):
for partner in self:
partner.no_physical_letter = (
- "only" in partner.global_communication_delivery_preference
- or partner.global_communication_delivery_preference == "none"
- ) and (
- "only" in partner.letter_delivery_preference
- or partner.letter_delivery_preference == "none"
- ) and (
- "only" in partner.photo_delivery_preference
- or partner.photo_delivery_preference == "none"
- ) and (
- "only" in partner.thankyou_preference
- or partner.thankyou_preference == "none"
- ) and partner.tax_certificate != "paper" and partner.nbmag in (
- "email", "no_mag")
+ "only" in partner.global_communication_delivery_preference
+ or partner.global_communication_delivery_preference == "none"
+ ) and (
+ "only" in partner.letter_delivery_preference
+ or partner.letter_delivery_preference == "none"
+ ) and (
+ "only" in partner.photo_delivery_preference
+ or partner.photo_delivery_preference == "none"
+ ) and (
+ "only" in partner.thankyou_preference
+ or partner.thankyou_preference == "none"
+ ) and partner.tax_certificate != "paper" and partner.nbmag in (
+ "email", "no_mag")
def _inverse_no_physical_letter(self):
for partner in self:
@@ -177,7 +181,7 @@ def _inverse_no_physical_letter(self):
vals = {
"nbmag": "no_mag" if partner.nbmag == "no_mag" else "email",
"tax_certificate": "no"
- if partner.tax_certificate == "no"else "only_email",
+ if partner.tax_certificate == "no" else "only_email",
"calendar": False,
"christmas_card": False
}
@@ -218,10 +222,33 @@ def _compute_last_completed_tax_receipt(self):
("state", "=", "done")
], limit=1)
if last_tax_receipt.date:
- partner.last_completed_tax_receipt = last_tax_receipt.date.year-1
+ partner.last_completed_tax_receipt = last_tax_receipt.date.year - 1
else:
partner.last_completed_tax_receipt = 1979
+ @api.multi
+ def write(self, vals):
+
+ is_optout = 'onboarding_new_donor_start_date' in vals and not vals['onboarding_new_donor_start_date']
+ new_donors_user = self.env['res.config.settings'].get_values()['new_donors_user']
+ optout_partners = self.filtered(
+ lambda p: p.onboarding_new_donor_start_date != False) if is_optout and new_donors_user else self.env[
+ self._name]
+
+ res = super(ResPartner, self).write(vals)
+
+ for partner in optout_partners:
+ partner.activity_schedule(
+ "mail.mail_activity_data_email",
+ summary=_("Someone opt out of the new donor onboarding process"),
+ note=_("{} just opt out of the onboarding process for new donors.".
+ format(partner.name)
+ ),
+ user_id=new_donors_user
+ )
+
+ return res
+
@api.model
def generate_tax_receipts(self):
"""
@@ -359,3 +386,23 @@ def action_reset_password(self):
"res_id": comm.id,
"target": "current",
}
+
+ @api.multi
+ def filter_onboarding_new_donors(self):
+ return self.filtered(lambda p: p.is_new_donor and not p.is_church)
+
+ def start_new_donors_onboarding(self):
+
+ config = self.env.ref(
+ "partner_communication_switzerland.config_new_donors_onboarding_postcard_and_magazine"
+ )
+
+ for partner in self:
+ self.env["partner.communication.job"].create(
+ {
+ "partner_id": partner.id,
+ "config_id": config.id,
+ "auto_send": False,
+ })
+
+ partner.onboarding_new_donor_start_date = fields.Date.today()
diff --git a/partner_communication_switzerland/views/onboarding_settings_view.xml b/partner_communication_switzerland/views/onboarding_settings_view.xml
new file mode 100644
index 000000000..bdd9c5825
--- /dev/null
+++ b/partner_communication_switzerland/views/onboarding_settings_view.xml
@@ -0,0 +1,25 @@
+
+
+
+ onboarding.settings.form
+ res.config.settings
+
+
+
+
+
New Donors Onboarding Process
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/partner_communication_switzerland/views/partner_compassion_view.xml b/partner_communication_switzerland/views/partner_compassion_view.xml
index 5dc4ff527..0bcc88380 100644
--- a/partner_communication_switzerland/views/partner_compassion_view.xml
+++ b/partner_communication_switzerland/views/partner_compassion_view.xml
@@ -32,4 +32,17 @@
action
+
+
+ new donors partners view
+ res.partner
+
+
+
+
+
+
+
+
+
diff --git a/partner_communication_switzerland/wizards/__init__.py b/partner_communication_switzerland/wizards/__init__.py
index 413e4c1c5..a1c6c61fe 100644
--- a/partner_communication_switzerland/wizards/__init__.py
+++ b/partner_communication_switzerland/wizards/__init__.py
@@ -18,3 +18,4 @@
from . import res_partner_create_portal_wizard
from . import communication_test_cases_wizard
from . import staff_notification_settings
+from . import onboarding_settings
\ No newline at end of file
diff --git a/partner_communication_switzerland/wizards/onboarding_settings.py b/partner_communication_switzerland/wizards/onboarding_settings.py
new file mode 100644
index 000000000..951ae846b
--- /dev/null
+++ b/partner_communication_switzerland/wizards/onboarding_settings.py
@@ -0,0 +1,39 @@
+##############################################################################
+#
+# Copyright (C) 2021 Compassion CH (http://www.compassion.ch)
+# Releasing children from poverty in Jesus' name
+# @author: Jonathan Guerne
+#
+# The licence is in the file __manifest__.py
+#
+##############################################################################
+
+from odoo import api, models, fields
+
+
+class DemandPlanningSettings(models.TransientModel):
+ _inherit = "res.config.settings"
+
+ new_donors_user = fields.Many2one(
+ "res.users", "User to notify on new donors onboarding opt out", readonly=False
+ )
+
+ @api.multi
+ def set_values(self):
+ super().set_values()
+ self.env["ir.config_parameter"].set_param(
+ "partner_communication_switzerland.new_donors_user",
+ str(self.new_donors_user.id or 0),
+ )
+
+ @api.model
+ def get_values(self):
+ res = super().get_values()
+ param_obj = self.env["ir.config_parameter"].sudo()
+ new_donors_user_id = int(
+ param_obj.get_param("partner_communication_switzerland.new_donors_user", "0")
+ )
+ res.update(
+ {"new_donors_user": new_donors_user_id, }
+ )
+ return res
From 3dfbad21f9ea8607236c24e865bb4e57dd270fd9 Mon Sep 17 00:00:00 2001
From: Jonathan Guerne
Date: Tue, 3 Aug 2021 12:21:04 +0200
Subject: [PATCH 02/15] CO-3711 remove notif on write and check if partner has
already been a sponsor
---
.../models/res_partner.py | 51 +++++--------------
1 file changed, 14 insertions(+), 37 deletions(-)
diff --git a/partner_communication_switzerland/models/res_partner.py b/partner_communication_switzerland/models/res_partner.py
index a7e63f9ae..55961c152 100644
--- a/partner_communication_switzerland/models/res_partner.py
+++ b/partner_communication_switzerland/models/res_partner.py
@@ -161,19 +161,19 @@ def _compute_new_donor(self):
def _compute_no_physical_letter(self):
for partner in self:
partner.no_physical_letter = (
- "only" in partner.global_communication_delivery_preference
- or partner.global_communication_delivery_preference == "none"
- ) and (
- "only" in partner.letter_delivery_preference
- or partner.letter_delivery_preference == "none"
- ) and (
- "only" in partner.photo_delivery_preference
- or partner.photo_delivery_preference == "none"
- ) and (
- "only" in partner.thankyou_preference
- or partner.thankyou_preference == "none"
- ) and partner.tax_certificate != "paper" and partner.nbmag in (
- "email", "no_mag")
+ "only" in partner.global_communication_delivery_preference
+ or partner.global_communication_delivery_preference == "none"
+ ) and (
+ "only" in partner.letter_delivery_preference
+ or partner.letter_delivery_preference == "none"
+ ) and (
+ "only" in partner.photo_delivery_preference
+ or partner.photo_delivery_preference == "none"
+ ) and (
+ "only" in partner.thankyou_preference
+ or partner.thankyou_preference == "none"
+ ) and partner.tax_certificate != "paper" and partner.nbmag in (
+ "email", "no_mag")
def _inverse_no_physical_letter(self):
for partner in self:
@@ -226,29 +226,6 @@ def _compute_last_completed_tax_receipt(self):
else:
partner.last_completed_tax_receipt = 1979
- @api.multi
- def write(self, vals):
-
- is_optout = 'onboarding_new_donor_start_date' in vals and not vals['onboarding_new_donor_start_date']
- new_donors_user = self.env['res.config.settings'].get_values()['new_donors_user']
- optout_partners = self.filtered(
- lambda p: p.onboarding_new_donor_start_date != False) if is_optout and new_donors_user else self.env[
- self._name]
-
- res = super(ResPartner, self).write(vals)
-
- for partner in optout_partners:
- partner.activity_schedule(
- "mail.mail_activity_data_email",
- summary=_("Someone opt out of the new donor onboarding process"),
- note=_("{} just opt out of the onboarding process for new donors.".
- format(partner.name)
- ),
- user_id=new_donors_user
- )
-
- return res
-
@api.model
def generate_tax_receipts(self):
"""
@@ -389,7 +366,7 @@ def action_reset_password(self):
@api.multi
def filter_onboarding_new_donors(self):
- return self.filtered(lambda p: p.is_new_donor and not p.is_church)
+ return self.filtered(lambda p: p.is_new_donor and not p.is_church and not p.sponsorship_ids)
def start_new_donors_onboarding(self):
From c0ddb9be9a7f7c3173d66113a49b9938795d20bf Mon Sep 17 00:00:00 2001
From: Jonathan Guerne
Date: Wed, 4 Aug 2021 08:55:49 +0200
Subject: [PATCH 03/15] CO-3725 add an unsubscribe route for new donors
onboarding process
---
.../__manifest__.py | 1 +
.../controllers/__init__.py | 1 +
.../controllers/onboarding.py | 51 +++++
.../data/onboarding_new_donors_process.xml | 12 +-
partner_communication_switzerland/i18n/de.po | 106 ----------
.../i18n/fr_CH.po | 181 +-----------------
.../models/res_partner.py | 3 +
.../templates/onboarding_unsubscribe.xml | 41 ++++
8 files changed, 108 insertions(+), 288 deletions(-)
create mode 100644 partner_communication_switzerland/controllers/onboarding.py
create mode 100644 partner_communication_switzerland/templates/onboarding_unsubscribe.xml
diff --git a/partner_communication_switzerland/__manifest__.py b/partner_communication_switzerland/__manifest__.py
index 1193f6aed..f482d1773 100644
--- a/partner_communication_switzerland/__manifest__.py
+++ b/partner_communication_switzerland/__manifest__.py
@@ -94,6 +94,7 @@
"views/onboarding_settings_view.xml",
"wizards/res_partner_create_portal_wizard.xml",
"templates/zoom_registration_form.xml",
+ "templates/onboarding_unsubscribe.xml"
],
"demo": [],
"installable": True,
diff --git a/partner_communication_switzerland/controllers/__init__.py b/partner_communication_switzerland/controllers/__init__.py
index 9a0e2b41d..2fbac350e 100644
--- a/partner_communication_switzerland/controllers/__init__.py
+++ b/partner_communication_switzerland/controllers/__init__.py
@@ -9,3 +9,4 @@
##############################################################################
from . import b2s_image
from . import zoom_registration
+from . import onboarding
diff --git a/partner_communication_switzerland/controllers/onboarding.py b/partner_communication_switzerland/controllers/onboarding.py
new file mode 100644
index 000000000..621da798b
--- /dev/null
+++ b/partner_communication_switzerland/controllers/onboarding.py
@@ -0,0 +1,51 @@
+##############################################################################
+#
+# Copyright (C) 2021 Compassion CH (http://www.compassion.ch)
+# Releasing children from poverty in Jesus' name
+# @author: Jonathan Guerne
+#
+# The licence is in the file __manifest__.py
+#
+##############################################################################
+import logging
+
+from odoo import http, _
+from odoo.http import request, Controller
+
+from odoo.addons.cms_form.controllers.main import FormControllerMixin
+
+_logger = logging.getLogger(__name__)
+
+
+class OnboardingController(Controller, FormControllerMixin):
+
+ @http.route(
+ [
+ "/onboarding//unsubscribe/"
+ ],
+ type="http", auth="public", methods=["GET", "POST"], website=True,
+ sitemap=False)
+ def onboarding_unsubscribe(self, onboarding_type, onboarding_hash, confirm_opt_out=False, **kwargs):
+
+ if onboarding_type == "new_donors":
+ return self._new_donors_onboarding_unsubscribe(onboarding_hash, confirm_opt_out)
+ else:
+ return http.request.render("website.404")
+
+ def _new_donors_onboarding_unsubscribe(self, onboarding_hash, confirm_opt_out):
+ partner = request.env["res.partner"].sudo().search(
+ [("onboarding_new_donor_hash", "=", onboarding_hash)]
+ )
+
+ if not partner:
+ return http.request.render("website.404")
+
+ if not confirm_opt_out:
+ return request.render(
+ "partner_communication_switzerland.new_donors_onboarding_unsubscribe_template"
+ )
+
+ partner.opt_out = True
+
+ return request.render(
+ "partner_communication_switzerland.confirmation_onboarding_unsubscribe_template")
diff --git a/partner_communication_switzerland/data/onboarding_new_donors_process.xml b/partner_communication_switzerland/data/onboarding_new_donors_process.xml
index 58b8a523e..966c33b8d 100644
--- a/partner_communication_switzerland/data/onboarding_new_donors_process.xml
+++ b/partner_communication_switzerland/data/onboarding_new_donors_process.xml
@@ -55,6 +55,7 @@
% set deine = 'eure' if is_plural else 'deine'
% set hast = 'habt' if is_plural else 'hast'
% set fragst = 'fragt' if is_plural else 'fragst'
+ % set base_url = object.env['ir.config_parameter'].sudo().get_param('web.external.url')
${partner.salutation}
\n"
-" % set partner = object.partner_id\n"
-" % set is_plural = partner.title.plural or partner.title.id == 29\n"
-" % set dir = 'euch' if is_plural else 'dir'\n"
-" % set du = 'ihr' if is_plural else 'du'\n"
-" % set dich = 'euch' if is_plural else 'dich'\n"
-" % set hast = 'habt' if is_plural else 'hast'\n"
-" % set kennst = 'kennt' if is_plural else 'kennst'\n"
-" % set Melde = 'Meldet' if is_plural else 'Melde'\n"
-" ${partner.salutation}\n"
-"
\n"
-"
\n"
-" Danke!\n"
-"
\n"
-"
\n"
-" Wir freuen uns, ${dir} das aktuelle Compassion-Magazin zu senden. Einmal pro Jahr berichten wir in diesem Format über den Impact, den wir gemeinsam erreicht haben, was unsere Herausforderungen und Ziele sind und was Menschen im globalen Süden und in der Schweiz bewegt. Viel Freude beim Schmökern und Entdecken!\n"
-"
\n"
-"
\n"
-" Wenn ${du} Compassion noch nicht ${kennst}, ${hast} ${du} vielleicht noch viele Fragen. ${Melde} ${dich} gerne jederzeit bei uns.\n"
-"
\n"
-"
\n"
-" Herzliche Grüsse\n"
-"
\n"
-"
\n"
-" Debora Alder-Gasser und das Team von Compassion\n"
-"
\n"
-" % set partner = object.partner_id\n"
-" % set is_plural = partner.title.plural or partner.title.id == 29\n"
-" % set dir = 'euch' if is_plural else 'dir'\n"
-" % set du = 'ihr' if is_plural else 'du'\n"
-" % set du_upper = 'Ihr' if is_plural else 'Du'\n"
-" % set dich = 'euch' if is_plural else 'dich'\n"
-" % set deine = 'eure' if is_plural else 'deine'\n"
-" % set findest = 'findet' if is_plural else 'findest'\n"
-" % set fragst = 'fragt' if is_plural else 'fragst'\n"
-" ${partner.salutation}\n"
-"
\n"
-"
\n"
-" ${du_upper} ${fragst} ${dich} vielleicht: \"Kinderpatenschaften kommen mir ein bisschen altmodisch vor. Sind sie wirklich noch relevant?\"\n"
-"
\n"
-"
\n"
-" Es wird ${dich} wahrscheinlich nicht überraschen, dass wir hier bei Compassion sagen, dass Kinderpatenschaften relevanter sind als je zuvor. Mit fast 70 Jahren Erfahrung glauben wir immer noch, dass eine Kinderpatenschaft eine lohnenswerte Investition ist, die effektiv, nachhaltig und engagiert ist - sogar in Krisenzeiten wie einer globalen Pandemie. Aber warum? Lass es uns gemeinsam auspacken.\n"
-"
\n"
-" % set partner = object.partner_id\n"
-" % set is_plural = partner.title.plural or partner.title.id == 29\n"
-" % set dir = 'euch' if is_plural else 'dir'\n"
-" % set du = 'ihr' if is_plural else 'du'\n"
-" % set du_upper = 'Ihr' if is_plural else 'Du'\n"
-" % set dich = 'euch' if is_plural else 'dich'\n"
-" % set deine = 'eure' if is_plural else 'deine'\n"
-" % set hast = 'habt' if is_plural else 'hast'\n"
-" % set fragst = 'fragt' if is_plural else 'fragst'\n"
-" ${partner.salutation}\n"
-"
\n"
-"
\n"
-" Wir freuen uns, ${dich} kennenzulernen und ${dir} mehr davon zu erzählen, wie wir Kinder und Familien unterstützen, extreme Armut zu überwinden. ${du_upper} ${fragst} ${dich} vielleicht, was Kinderpatenschaften bringen, vielleicht sogar, ob sie sinnvoll sind oder ob nur christliche Kinder unterstützt werden? Gerne nehmen wir ${dich} mit und beantworten ${deine} Fragen.\n"
-"
\n"
-" Nochmals vielen Dank: mit ${dir} zusammen befreien wir zurzeit mit rund 8'000 Partnerkirchen in 25 Ländern 2,2 Millionen Kinder aus extremer Armut. Gemeinsam ermöglichen wir den Kindern ein Leben mit Hoffnung und Zukunft.\n"
-"
\n"
-"
\n"
-" Herzliche Grüsse\n"
-"
\n"
-"
\n"
-" Debora Alder-Gasser und das Team von Compassion\n"
-"
\n"
-" "
msgstr ""
\ No newline at end of file
diff --git a/partner_communication_switzerland/i18n/fr_CH.po b/partner_communication_switzerland/i18n/fr_CH.po
index 5d40389d6..83333c34e 100644
--- a/partner_communication_switzerland/i18n/fr_CH.po
+++ b/partner_communication_switzerland/i18n/fr_CH.po
@@ -8473,183 +8473,4 @@ msgstr "Bienvenue dans la famille de Compassion"
#. module: partner_communication_switzerland
#: model_terms:ir.ui.view,arch_db:partner_communication_switzerland.zoom_registration_template
msgid "um"
-msgstr ""
-
-#. module: partner_communication_switzerland
-#: model:mail.template,body_html:partner_communication_switzerland.mail_new_donors_onboarding_postcard_and_magazine
-msgid "
\n"
-" % set partner = object.partner_id\n"
-" % set is_plural = partner.title.plural or partner.title.id == 29\n"
-" % set dir = 'euch' if is_plural else 'dir'\n"
-" % set du = 'ihr' if is_plural else 'du'\n"
-" % set dich = 'euch' if is_plural else 'dich'\n"
-" % set hast = 'habt' if is_plural else 'hast'\n"
-" % set kennst = 'kennt' if is_plural else 'kennst'\n"
-" % set Melde = 'Meldet' if is_plural else 'Melde'\n"
-" ${partner.salutation}\n"
-"
\n"
-"
\n"
-" Danke!\n"
-"
\n"
-"
\n"
-" Wir freuen uns, ${dir} das aktuelle Compassion-Magazin zu senden. Einmal pro Jahr berichten wir in diesem Format über den Impact, den wir gemeinsam erreicht haben, was unsere Herausforderungen und Ziele sind und was Menschen im globalen Süden und in der Schweiz bewegt. Viel Freude beim Schmökern und Entdecken!\n"
-"
\n"
-"
\n"
-" Wenn ${du} Compassion noch nicht ${kennst}, ${hast} ${du} vielleicht noch viele Fragen. ${Melde} ${dich} gerne jederzeit bei uns.\n"
-"
\n"
-"
\n"
-" Herzliche Grüsse\n"
-"
\n"
-"
\n"
-" Debora Alder-Gasser und das Team von Compassion\n"
-"
\n"
-" "
-msgstr "
\n"
-" % set partner = object.partner_id\n"
-" % set is_plural = partner.title.plural or partner.title.id == 29\n"
-" ${partner.salutation}\n"
-"
\n"
-"
\n"
-" Merci!\n"
-"
\n"
-"
\n"
-" C’est une grande joie pour nous de vous adresser le dernier Magazine Compassion. Vous y découvrirez un aperçu de l'impact que nous avons obtenu ensemble, des défis de Compassion et de ce qui fait bouger les gens dans le Sud et en Suisse. Bonne lecture!\n"
-"Vous ne connaissez pas encore bien Compassion? Vous avez peut-être des questions sur notre engagement, notre action. N'hésitez pas à prendre contact avec nous.\n"
-"
\n"
-"
\n"
-" Christian Willi et l'équipe de Compassion vous saluent chaleureusement.\n"
-"
\n"
-" % set partner = object.partner_id\n"
-" % set is_plural = partner.title.plural or partner.title.id == 29\n"
-" % set dir = 'euch' if is_plural else 'dir'\n"
-" % set du = 'ihr' if is_plural else 'du'\n"
-" % set du_upper = 'Ihr' if is_plural else 'Du'\n"
-" % set dich = 'euch' if is_plural else 'dich'\n"
-" % set deine = 'eure' if is_plural else 'deine'\n"
-" % set findest = 'findet' if is_plural else 'findest'\n"
-" % set fragst = 'fragt' if is_plural else 'fragst'\n"
-" ${partner.salutation}\n"
-"
\n"
-"
\n"
-" ${du_upper} ${fragst} ${dich} vielleicht: \"Kinderpatenschaften kommen mir ein bisschen altmodisch vor. Sind sie wirklich noch relevant?\"\n"
-"
\n"
-"
\n"
-" Es wird ${dich} wahrscheinlich nicht überraschen, dass wir hier bei Compassion sagen, dass Kinderpatenschaften relevanter sind als je zuvor. Mit fast 70 Jahren Erfahrung glauben wir immer noch, dass eine Kinderpatenschaft eine lohnenswerte Investition ist, die effektiv, nachhaltig und engagiert ist - sogar in Krisenzeiten wie einer globalen Pandemie. Aber warum? Lass es uns gemeinsam auspacken.\n"
-"
\n"
-" Nochmals vielen Dank, denn gemeinsam verändern wir das Leben von Kindern - eins nach dem anderen.\n"
-"
\n"
-"
\n"
-" Herzliche Grüsse\n"
-"
\n"
-"
\n"
-" Debora Alder-Gasser und das Team von Compassion\n"
-"
\n"
-" "
-msgstr "
\n"
-" % set partner = object.partner_id\n"
-" % set is_plural = partner.title.plural or partner.title.id == 29\n"
-" ${partner.salutation}\n"
-"
\n"
-"
\n"
-"Vous vous demandez peut-être si le parrainage d'enfants est encore vraiment pertinent à notre époque.\n"
-"
\n"
-"
\n"
-" Vous ne serez probablement pas surpris d'apprendre qu'ici, à Compassion, nous affirmons que le parrainage d'enfants est une forme d’aide au développement plus pertinente que jamais. \n"
-"
\n"
-"
\n"
-"Avec près de 70 ans d'expérience, nous observons que le parrainage d'enfants est un investissement utile, efficace et durable et ce, même en temps de crise comme une pandémie mondiale. Mais pourquoi? Découvrons-le de plus près.\n"
-"
\n"
-" % set partner = object.partner_id\n"
-" % set is_plural = partner.title.plural or partner.title.id == 29\n"
-" % set dir = 'euch' if is_plural else 'dir'\n"
-" % set du = 'ihr' if is_plural else 'du'\n"
-" % set du_upper = 'Ihr' if is_plural else 'Du'\n"
-" % set dich = 'euch' if is_plural else 'dich'\n"
-" % set deine = 'eure' if is_plural else 'deine'\n"
-" % set hast = 'habt' if is_plural else 'hast'\n"
-" % set fragst = 'fragt' if is_plural else 'fragst'\n"
-" ${partner.salutation}\n"
-"
\n"
-"
\n"
-" Wir freuen uns, ${dich} kennenzulernen und ${dir} mehr davon zu erzählen, wie wir Kinder und Familien unterstützen, extreme Armut zu überwinden. ${du_upper} ${fragst} ${dich} vielleicht, was Kinderpatenschaften bringen, vielleicht sogar, ob sie sinnvoll sind oder ob nur christliche Kinder unterstützt werden? Gerne nehmen wir ${dich} mit und beantworten ${deine} Fragen.\n"
-"
\n"
-" Nochmals vielen Dank: mit ${dir} zusammen befreien wir zurzeit mit rund 8'000 Partnerkirchen in 25 Ländern 2,2 Millionen Kinder aus extremer Armut. Gemeinsam ermöglichen wir den Kindern ein Leben mit Hoffnung und Zukunft.\n"
-"
\n"
-"
\n"
-" Herzliche Grüsse\n"
-"
\n"
-"
\n"
-" Debora Alder-Gasser und das Team von Compassion\n"
-"
\n"
-" "
-msgstr "
\n"
-" % set partner = object.partner_id\n"
-" % set is_plural = partner.title.plural or partner.title.id == 29\n"
-" ${partner.salutation}\n"
-"
\n"
-"
\n"
-" Nous nous réjouissons de faire votre connaissance et de vous en dire plus sur la manière dont nous aidons les enfants et les familles à surmonter l'extrême pauvreté. \n"
-"Vous vous demandez peut-être ce qu'est le parrainage d'enfants, peut-être même s'il fait sens ou encore si seuls les enfants chrétiens sont soutenus? C’est un plaisir pour nous d’accompagner votre découverte de Compassion et de répondre à vos questions.\n"
-"
\n"
-" Encore une fois, merci: avec vous, nous sommes actuellement en train de soutenir 2,2 millions d'enfants, afin de les libérer de l'extrême pauvreté. Cet engagement, nous le menons en partenariat avec 8000 Eglises partenaires dans 25 pays.\n"
-"
\n"
-"
\n"
-"Ensemble, nous pouvons donner à ces enfants une vie digne, pleine d'espoir pour un avenir meilleur. \n"
-"
\n"
-"
\n"
-"Chaleureuses salutations et à bientôt.\n"
-"
\n"
-"
\n"
-"Sarah et l'équipe de Compassion\n"
-"
\n"
-" "
\ No newline at end of file
+msgstr ""
\ No newline at end of file
diff --git a/partner_communication_switzerland/models/res_partner.py b/partner_communication_switzerland/models/res_partner.py
index 55961c152..29f234680 100644
--- a/partner_communication_switzerland/models/res_partner.py
+++ b/partner_communication_switzerland/models/res_partner.py
@@ -9,6 +9,7 @@
##############################################################################
import logging
from datetime import date
+import hashlib
from odoo import api, models, fields, _
from odoo.addons.auth_signup.models.res_partner import now
@@ -50,6 +51,7 @@ class ResPartner(models.Model):
onboarding_new_donor_start_date = fields.Date(help="Indicates when the first email of "
"the new donor onboarding process was sent.",
copy=False)
+ onboarding_new_donor_hash = fields.Char()
def _get_salutation_fr_CH(self, informal=False):
self.ensure_one()
@@ -383,3 +385,4 @@ def start_new_donors_onboarding(self):
})
partner.onboarding_new_donor_start_date = fields.Date.today()
+ partner.onboarding_new_donor_hash = hashlib.md5(f"{partner.id}".encode()).hexdigest()
diff --git a/partner_communication_switzerland/templates/onboarding_unsubscribe.xml b/partner_communication_switzerland/templates/onboarding_unsubscribe.xml
new file mode 100644
index 000000000..e0e11270d
--- /dev/null
+++ b/partner_communication_switzerland/templates/onboarding_unsubscribe.xml
@@ -0,0 +1,41 @@
+
+
+
+
+ Unsubscribe from further mailing ?
+
+
+
Unsubscribe from further mailing ?
+
+ If you chose to unsubscribe from the mailing process you won't receive any of the remaining communication
+ nor any of the upcoming mass mailing.
+
+
+ Are you sure you want to proceed ?
+
+
+
+
+
+
+
+
+
+ Unsubscribe Confirmation
+
+
+
You have successfully been unsubscribe
+
+ You have successfully been unsubscribe from further Compassion's mailing.
+
+
+ Don't hesitate to get in touch with us if you decide to change your mind down the road.
+