Skip to content

Commit 2f30703

Browse files
Merge pull request #488 from OpenSPP/294-individual-change-request
add change info change request to test cr for individual
2 parents 446a226 + fe4d58d commit 2f30703

23 files changed

+1372
-8
lines changed

spp_change_request/models/change_request.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -208,14 +208,18 @@ def _compute_applicant_id_domain(self):
208208
for rec in self:
209209
domain = [("id", "=", 0)]
210210
if rec.registrant_id:
211-
# TODO: Use the is_ended field to filter
212-
# Get only the members with non-expired membership
213-
group_memberships = rec.registrant_id.group_membership_ids.filtered(
214-
lambda a: not a.ended_date or a.ended_date > fields.Datetime.now()
215-
)
216-
if group_memberships:
217-
group_membership_ids = group_memberships.mapped("individual.id")
218-
domain = [("id", "in", group_membership_ids)]
211+
if rec.registrant_id.is_group:
212+
# TODO: Use the is_ended field to filter
213+
# Get only the members with non-expired membership
214+
group_memberships = rec.registrant_id.group_membership_ids.filtered(
215+
lambda a: not a.ended_date or a.ended_date > fields.Datetime.now()
216+
)
217+
if group_memberships:
218+
group_membership_ids = group_memberships.mapped("individual.id")
219+
domain = [("id", "in", group_membership_ids)]
220+
else:
221+
domain = [("is_registrant", "=", True), ("is_group", "=", False)]
222+
219223
rec.applicant_id_domain = domain
220224

221225
@api.onchange("registrant_id")

spp_change_request_change_info/README.rst

Whitespace-only changes.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from . import models
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
{
2+
"name": "Change Information Change Request",
3+
"category": "OpenSPP",
4+
"version": "17.0.1.0.0",
5+
"sequence": 1,
6+
"author": "OpenSPP.org",
7+
"website": "https://github.com/OpenSPP/openspp-modules",
8+
"license": "LGPL-3",
9+
"development_status": "Alpha",
10+
"maintainers": ["jeremi", "gonzalesedwin1123"],
11+
"depends": [
12+
"spp_change_request",
13+
"g2p_registry_individual",
14+
"g2p_registry_group",
15+
"g2p_registry_membership",
16+
"spp_service_points",
17+
],
18+
"data": [
19+
"security/change_request_security.xml",
20+
"security/ir.model.access.csv",
21+
"data/dms.xml",
22+
"data/change_request_stage.xml",
23+
"data/change_request_sequence.xml",
24+
"views/change_request_change_info_view.xml",
25+
"views/dms_file_view.xml",
26+
],
27+
"assets": {},
28+
"demo": [],
29+
"images": [],
30+
"application": True,
31+
"installable": True,
32+
"auto_install": False,
33+
}
34+
35+
# "data/id_type.xml",
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<!--
3+
Part of OpenSPP. See LICENSE file for full copyright and licensing details.
4+
-->
5+
<odoo noupdate="0">
6+
7+
<record id="spp_cr_change_info_val_seq_local" model="spp.change.request.validation.sequence">
8+
<field name="sequence">10</field>
9+
<field name="stage_id" ref="spp_change_request_change_info.spp_cr_val_stage_local" />
10+
<field name="request_type">spp.change.request.change.info</field>
11+
<field name="validation_group_id" ref="spp_change_request.group_spp_change_request_local_validator" />
12+
<field name="validation_group_state">both</field>
13+
</record>
14+
15+
<record id="spp_cr_change_info_val_seq_hq" model="spp.change.request.validation.sequence">
16+
<field name="sequence">20</field>
17+
<field name="stage_id" ref="spp_change_request_change_info.spp_cr_val_stage_hq" />
18+
<field name="request_type">spp.change.request.change.info</field>
19+
<field name="validation_group_id" ref="spp_change_request.group_spp_change_request_hq_validator" />
20+
<field name="validation_group_state">both</field>
21+
</record>
22+
23+
</odoo>
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<!--
3+
Part of OpenSPP. See LICENSE file for full copyright and licensing details.
4+
-->
5+
<odoo noupdate="0">
6+
7+
<record id="spp_cr_val_stage_local" model="spp.change.request.validation.stage">
8+
<field name="name">Local</field>
9+
</record>
10+
11+
<record id="spp_cr_val_stage_hq" model="spp.change.request.validation.stage">
12+
<field name="name">HQ</field>
13+
</record>
14+
15+
</odoo>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<odoo noupdate="0">
3+
4+
<!-- Category Documents-->
5+
<record id="spp_dms_change_info" model="spp.dms.category">
6+
<field name="name">Change Info Request Form</field>
7+
</record>
8+
9+
</odoo>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<odoo noupdate="1">
2+
3+
<!-- ID Type -->
4+
<record id="national_id_type" model="g2p.id.type">
5+
<field name="name">National ID</field>
6+
<field name="target_type">individual</field>
7+
</record>
8+
9+
</odoo>
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
from . import change_request
2+
from . import change_request_change_info
3+
from . import change_request_change_info_validation_sequence
4+
from . import dms
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
import logging
2+
3+
from odoo import Command, api, models
4+
5+
_logger = logging.getLogger(__name__)
6+
7+
8+
class ChangeRequestBaseCustomDemo(models.Model):
9+
_inherit = "spp.change.request"
10+
11+
def create_request_detail_demo(self):
12+
"""
13+
A version of spp.change.request create_request_detail function
14+
that does not check the applicant's phone number and
15+
does not load the CR details form
16+
:return:
17+
"""
18+
for rec in self:
19+
if rec.state in ("draft", "pending"):
20+
# Set the request_type_ref_id
21+
res_model = rec.request_type
22+
# Set the dms directory
23+
_logger.debug("Change Request: DMS Directory Creation (%s)" % len(self.dms_directory_ids))
24+
self.env.ref(self.env[res_model].DMS_STORAGE)
25+
dmsval = {
26+
"is_root_directory": True,
27+
"name": rec.name,
28+
}
29+
30+
# Prepare CR type model data
31+
cr_type_vals = {
32+
"registrant_id": rec.registrant_id.id,
33+
"applicant_id": rec.applicant_id.id,
34+
"change_request_id": rec.id,
35+
"dms_directory_ids": [(Command.create(dmsval))],
36+
}
37+
38+
# Create the change request detail record
39+
ref_id = self.env[res_model].create(cr_type_vals)
40+
directory_id = ref_id.dms_directory_ids[0].id
41+
42+
self.env["spp.dms.directory"].create(
43+
{
44+
"name": "Applicant",
45+
"parent_id": directory_id,
46+
"is_root_directory": False,
47+
}
48+
)
49+
50+
# Upload Scanned IDs to DMS
51+
dms_file_ids = []
52+
for id_fld in ["id_document_details", "qr_code_details"]:
53+
if rec[id_fld]:
54+
dms_id_doc = rec._get_id_doc_vals(directory_id, id_fld)
55+
if dms_id_doc:
56+
dms_file_ids.append(Command.create(dms_id_doc))
57+
if dms_file_ids:
58+
ref_id.update({"dms_file_ids": dms_file_ids})
59+
60+
ref_id._onchange_registrant_id()
61+
request_type_ref_id = f"{res_model},{ref_id.id}"
62+
_logger.debug("DEBUG! request_type_ref_id: %s", request_type_ref_id)
63+
rec.update(
64+
{
65+
"request_type_ref_id": request_type_ref_id,
66+
"id_document_details": "",
67+
}
68+
)
69+
70+
# Temporary solution to phone number fo
71+
# def _check_phone_exist(self):
72+
# pass
73+
74+
@api.constrains("registrant_id", "applicant_phone")
75+
def _check_applicant_phone(self):
76+
# Temporary solution to phone number format error
77+
pass

0 commit comments

Comments
 (0)