Skip to content

Commit eb68e0d

Browse files
committed
fix(spp_dci_demo): invalidate membership cache before enrollment and add system parameter
Invalidate household group_membership_ids cache before iterating so the newly created child membership is included in auto-enrollment. Add missing spp_dci_demo.default_crvs_data_source system parameter with an empty default to system_parameters.xml so the parameter is defined on module install.
1 parent 7fc2ad9 commit eb68e0d

2 files changed

Lines changed: 27 additions & 14 deletions

File tree

spp_dci_demo/data/system_parameters.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,16 @@
1212
<field name="value">True</field>
1313
</record>
1414

15+
<!--
16+
Default CRVS data source for birth verification.
17+
Leave empty to fall back to the first active CRVS data source.
18+
To set a specific source, enter its numeric database ID here.
19+
-->
20+
<record id="param_default_crvs_data_source" model="ir.config_parameter">
21+
<field name="key">spp_dci_demo.default_crvs_data_source</field>
22+
<field name="value" />
23+
</record>
24+
1525
<!--
1626
Program ID for auto-enrollment is set by post_init_hook
1727
since programs are created via wizard, not XML data.

spp_dci_demo/models/cr_apply_add_member.py

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -135,11 +135,7 @@ def _auto_enroll_in_household_programs(self, individual, household):
135135
household: The household/group (res.partner)
136136
"""
137137
# Get program ID from system parameter
138-
program_id_str = (
139-
self.env["ir.config_parameter"]
140-
.sudo()
141-
.get_param("spp_dci_demo.enrollment_program_id", "")
142-
)
138+
program_id_str = self.env["ir.config_parameter"].sudo().get_param("spp_dci_demo.enrollment_program_id", "")
143139
if not program_id_str:
144140
_logger.info("No enrollment program configured (spp_dci_demo.enrollment_program_id)")
145141
return
@@ -171,6 +167,8 @@ def _auto_enroll_in_household_programs(self, individual, household):
171167
self._enroll_partner_in_program(household, program)
172168

173169
# Enroll all household members including the new child
170+
# Invalidate cache so the newly created membership is included
171+
household.invalidate_recordset(["group_membership_ids"])
174172
if hasattr(household, "group_membership_ids"):
175173
for membership in household.group_membership_ids:
176174
if membership.individual:
@@ -184,10 +182,13 @@ def _enroll_partner_in_program(self, partner, program):
184182
program: The program to enroll in (spp.program)
185183
"""
186184
# Check if already enrolled
187-
existing = self.env["spp.program.membership"].search([
188-
("partner_id", "=", partner.id),
189-
("program_id", "=", program.id),
190-
], limit=1)
185+
existing = self.env["spp.program.membership"].search(
186+
[
187+
("partner_id", "=", partner.id),
188+
("program_id", "=", program.id),
189+
],
190+
limit=1,
191+
)
191192

192193
if existing:
193194
_logger.info(
@@ -200,11 +201,13 @@ def _enroll_partner_in_program(self, partner, program):
200201

201202
# Create enrollment
202203
try:
203-
self.env["spp.program.membership"].create({
204-
"partner_id": partner.id,
205-
"program_id": program.id,
206-
"state": "enrolled",
207-
})
204+
self.env["spp.program.membership"].create(
205+
{
206+
"partner_id": partner.id,
207+
"program_id": program.id,
208+
"state": "enrolled",
209+
}
210+
)
208211
_logger.info(
209212
"Enrolled partner %s in program %s",
210213
partner.id,

0 commit comments

Comments
 (0)