Skip to content

Commit f653dbb

Browse files
committed
T3096 Refactor letters display
- ADD new field for tracking date of Exit communication sent to sponsor - FIX is_final_letter field
1 parent 2af8fcd commit f653dbb

6 files changed

Lines changed: 63 additions & 6 deletions

File tree

partner_communication_compassion/__manifest__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
# pylint: disable=C8101
3030
{
3131
"name": "Compassion Partner Communications",
32-
"version": "14.0.1.1.1",
32+
"version": "14.0.1.2.0",
3333
"category": "Other",
3434
"author": "Compassion CH",
3535
"license": "AGPL-3",
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
from datetime import datetime
2+
3+
from dateutil.relativedelta import relativedelta
4+
from openupgradelib import openupgrade
5+
6+
7+
@openupgrade.migrate()
8+
def migrate(env, version):
9+
openupgrade.logged_query(
10+
env.cr,
11+
"""
12+
UPDATE recurring_contract
13+
SET exit_communication_sent = COALESCE (sds_state_date, end_date, write_date)
14+
WHERE state = 'terminated'
15+
AND (end_date IS NULL OR end_date <= CURRENT_DATE - INTERVAL '6 months')
16+
""",
17+
)
18+
six_month_ago = datetime.today() - relativedelta(months=6)
19+
terminated_sponsorships = env["recurring.contract"].search(
20+
[
21+
("state", "=", "terminated"),
22+
("end_date", ">", six_month_ago),
23+
]
24+
)
25+
exit_configs = env.ref(
26+
"partner_communication_compassion.lifecycle_child_planned_exit"
27+
) + env.ref("partner_communication_compassion.lifecycle_child_unplanned_exit")
28+
for contract in terminated_sponsorships:
29+
exit_dates = env["partner.communication.job"].search_read(
30+
[
31+
("config_id", "in", exit_configs.ids),
32+
("state", "=", "done"),
33+
("sent_date", "!=", False),
34+
(
35+
"partner_id",
36+
"in",
37+
(contract.partner_id + contract.correspondent_id).ids,
38+
),
39+
("object_ids", "like", contract.id),
40+
],
41+
["sent_date"],
42+
)
43+
if exit_dates:
44+
contract.exit_communication_sent = max(r["sent_date"] for r in exit_dates)

partner_communication_compassion/models/contracts.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ class RecurringContract(models.Model):
3535
help="Indicates a new picture was received and not yet "
3636
"transmitted to the sponsor."
3737
)
38+
exit_communication_sent = fields.Datetime()
3839

3940
@api.onchange("origin_id", "correspondent_id")
4041
def _do_not_send_letter_to_transfer(self):

partner_communication_compassion/models/partner_communication.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,16 @@ def send(self):
163163
if biennials:
164164
for child in biennials.get_objects():
165165
child.sponsorship_ids[0].new_picture = False
166+
exit_confs = self.env.ref(
167+
"partner_communication_compassion.lifecycle_child_planned_exit"
168+
) + self.env.ref(
169+
"partner_communication_compassion.lifecycle_child_unplanned_exit"
170+
)
171+
exits = self.filtered(lambda j: j.state == "done" and j.config_id in exit_confs)
172+
if exits:
173+
exits.get_objects().write(
174+
{"exit_communication_sent": fields.Datetime.now()}
175+
)
166176
return res
167177

168178
def cancel(self):

sbc_compassion/models/correspondence.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -427,11 +427,9 @@ def _get_uuid(self):
427427
return str(uuid.uuid4())
428428

429429
def _compute_is_final_letter(self):
430+
final_type = self.env.ref("sbc_compassion.correspondence_type_final")
430431
for letter in self:
431-
letter.is_final_letter = (
432-
"Final Letter" in letter.communication_type_ids.mapped("name")
433-
or letter.sponsorship_state != "active"
434-
)
432+
letter.is_final_letter = final_type in letter.communication_type_ids
435433

436434
def _compute_preferred_dpi(self):
437435
for letter in self:

sbc_compassion/views/correspondence_view.xml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,18 @@
33
<field name="name">correspondence.tree</field>
44
<field name="model">correspondence</field>
55
<field name="arch" type="xml">
6-
<tree string="Correspondence" decoration-danger="is_final_letter">
6+
<tree
7+
string="Correspondence"
8+
decoration-danger="is_final_letter or sponsorship_state != 'active'"
9+
>
710
<field name="scanned_date" />
811
<field name="sponsorship_id" />
912
<field name="kit_identifier" />
1013
<field name="direction" />
1114
<field name="status_date" />
1215
<field name="state" />
1316
<field name="is_final_letter" invisible="1" />
17+
<field name="sponsorship_state" invisible="1" />
1418
</tree>
1519
</field>
1620
</record>

0 commit comments

Comments
 (0)