Skip to content
Merged
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
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ addon | version | maintainers | summary
[g2p_payment_interop_layer](g2p_payment_interop_layer/) | 17.0.0.0.0 | | OpenG2P Program Payment (Payment Interoperability Layer)
[g2p_payment_phee](g2p_payment_phee/) | 17.0.0.0.0 | | OpenG2P Program Payment (Payment Hub EE)
[g2p_payment_simple_mpesa](g2p_payment_simple_mpesa/) | 17.0.0.0.0 | | OpenG2P Program Payment: Simple Mpesa Payment Manager
[g2p_pbms_socio_economic_model](g2p_pbms_socio_economic_model/) | 17.0.0.0.0 | | G2P PBMS Socio-Economic Model
[g2p_pbms_student_model](g2p_pbms_student_model/) | 17.0.0.0.0 | | G2P PBMS Student Model
[g2p_program_approval](g2p_program_approval/) | 17.0.0.0.0 | | OpenG2P Program: Approval
[g2p_program_assessment](g2p_program_assessment/) | 17.0.0.0.0 | | OpenG2P Program: Assessment
[g2p_program_autoenrol](g2p_program_autoenrol/) | 17.0.0.0.0 | | OpenG2P Programs: Autoenrol
Expand Down
3 changes: 3 additions & 0 deletions g2p_pbms_socio_economic_model/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# G2P PBMS Socio-Economic Model

Refer to https://docs.openg2p.org.
3 changes: 3 additions & 0 deletions g2p_pbms_socio_economic_model/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Part of OpenG2P. See LICENSE file for full copyright and licensing details.

from . import models
18 changes: 18 additions & 0 deletions g2p_pbms_socio_economic_model/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Part of OpenG2P. See LICENSE file for full copyright and licensing details.
{
"name": "G2P PBMS Socio-Economic Model",
"category": "G2P",
"version": "17.0.0.0.0",
"sequence": 1,
"author": "OpenG2P",
"website": "https://openg2p.org",
"license": "LGPL-3",
"depends": ["g2p_registry_individual", "g2p_registry_group", "g2p_registry_membership", "g2p_programs"],
"data": ["views/group_view.xml", "views/individual_view.xml", "views/menu_view.xml"],
"assets": {},
"demo": [],
"images": [],
"application": True,
"installable": True,
"auto_install": False,
}
68 changes: 68 additions & 0 deletions g2p_pbms_socio_economic_model/data/sr_pbms_import_jq_mapping.jq
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
{
"name": .name,
"is_group": .isGroup,
"address": .address,
"registration_date": .registrationDate,
"group_membership_ids": (
if .groupMembershipIds? then
[
.groupMembershipIds[] | {
"individual": {
"name": .individual.name,
"given_name": .individual.givenName,
"family_name": .individual.familyName,
"addl_name": .individual.addlName,
"email": .individual.email,
"address": .individual.address,
"registration_date": .individual.registrationDate,
"birth_place": .individual.birthPlace,
"birthdate": .individual.birthdate,
"create_date": .individual.createDate,
"write_date": .individual.writeDate,
"reg_ids": (
if .individual.regIds? then
[.individual.regIds[] | {id_type: {name:.idTypeAsStr}, value: .value}]
else
[]
end
),
"phone_number_ids": (
if .individual.phoneNumberIds? then
[.individual.phoneNumberIds[] | {
phone_no: .phoneNo,
phone_sanitized: .phoneSanitized,
date_collected: .dateCollected,
disabled: .disabled
}]
else
[]
end
)
},
"kind": {name:.kind.name}
}
]
else
[]
end
),
"reg_ids": (
if .regIds? then
[.regIds[] | {id_type: {name:.idTypeAsStr}, value: .value}]
else
[]
end
),
"phone_number_ids": (
if .phoneNumberIds? then
[.phoneNumberIds[] | {
phone_no: .phoneNo,
phone_sanitized: .phoneSanitized,
date_collected: .dateCollected,
disabled: .disabled
}]
else
[]
end
)
}
4 changes: 4 additions & 0 deletions g2p_pbms_socio_economic_model/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Part of OpenG2P. See LICENSE file for full copyright and licensing details.

from . import group_membership
from . import res_partner
24 changes: 24 additions & 0 deletions g2p_pbms_socio_economic_model/models/group_membership.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Part of OpenG2P Registry. See LICENSE file for full copyright and licensing details.

import logging

from odoo import fields, models

_logger = logging.getLogger(__name__)


class G2PGroupMembershipInherit(models.Model):
_inherit = "g2p.group.membership"

employment_status = fields.Selection(related="individual.employment_status")

def get_household_head(self, registrant):
if registrant.is_group:
for member in registrant.group_membership_ids:
if member.kind and "Head" in [kind.name for kind in member.kind]:
return member.individual

else:
for member in registrant.individual_membership_ids:
if member.kind and "Head" in [kind.name for kind in member.kind]:
return member.individual
127 changes: 127 additions & 0 deletions g2p_pbms_socio_economic_model/models/res_partner.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
# Part of OpenG2P. See LICENSE file for full copyright and licensing details.
import logging

from odoo import api, fields, models

_logger = logging.getLogger(__name__)


class G2PResPartnerInherited(models.Model):
_inherit = "res.partner"

#######################################################
##### Social Status Information #####
#######################################################

num_preg_lact_women = fields.Integer()
num_malnourished_children = fields.Integer()
num_disabled = fields.Integer()
type_of_disability = fields.Selection(
[
("visual_impairment", "Visual Impairment"),
("hearing_impairment", "Hearing Impairment"),
("physical_disability", "Physical Disability"),
("cognitive_disability", "Cognitive Disability"),
]
)
caste_ethnic_group = fields.Selection(
[
("bantu", "Bantu"),
("nilotic", "Nilotic"),
("afro_asian", "Afro-Asiatic"),
("khoisan", "Khoisan"),
("pygmy", "Pygmy"),
("other", "Other"),
],
)
belong_to_protected_groups = fields.Selection([("yes", "Yes"), ("no", "No")])
other_vulnerable_status = fields.Selection([("yes", "Yes"), ("no", "No")])

#######################################################
##### Household Details #####
#######################################################

education_level = fields.Selection(
[
("primary", "Primary"),
("secondary", "Secondary"),
("higher_secondary", "Higher Secondary"),
("bachelors", "Bachelors"),
("masters", "Masters"),
]
)
employment_status = fields.Selection(
[
("employed_full", "Employed - Full Time"),
("employed_part", "Employed - Part Time"),
("self_employed", "Self-employed"),
("unemployed", "Unemployed"),
]
)
marital_status = fields.Selection(
[("single", "Single"), ("married", "Married"), ("divorced", "divorced")]
)

#######################################################
##### Economic Status Information #####
#######################################################

income_sources = fields.Selection(
[
("agriculture", "Agriculture"),
("business", "Business"),
("mining", "Mining"),
("manufacturing", "Manufacturing"),
("construction", "Construction"),
]
)
# Income field was of INT type and it has validation which will cause the errors.
annual_income = fields.Selection(
[("below_5000", "Below 5000"), ("5001_10000", "5001-10,000"), ("above_10000", "Above 10,000")],
)
owns_two_wheeler = fields.Selection([("yes", "Yes"), ("no", "No")])
owns_three_wheeler = fields.Selection([("yes", "Yes"), ("no", "No")])
owns_four_wheeler = fields.Selection([("yes", "Yes"), ("no", "No")])
owns_cart = fields.Selection([("yes", "Yes"), ("no", "No")])
land_ownership = fields.Selection([("yes", "Yes"), ("no", "No")])
type_of_land_owned = fields.Selection(
[
("agricultural", "Agricultural Land"),
("residential", "Residential Land"),
("pastoral", "Pastoral Land"),
("forest", "Forest Land"),
("commercial", "Commercial Land"),
("communal", "Communal Land"),
("other", "Other"),
]
)
land_size = fields.Float()
owns_house = fields.Selection([("yes", "Yes"), ("no", "No")])
owns_livestock = fields.Selection([("yes", "Yes"), ("no", "No")])

#######################################################
##### Housing Condition Information #####
#######################################################

housing_type = fields.Selection(
[("permanent", "Permanent"), ("temporary", "Temporary")], "Type of Housing"
)
house_condition = fields.Selection([("mud", "Mud"), ("cement", "Cement")])
sanitation_condition = fields.Selection([("yes", "Yes"), ("no", "No")])
water_access = fields.Selection([("yes", "Yes"), ("no", "No")])
electricity_access = fields.Selection([("yes", "Yes"), ("no", "No")])

#######################################################
##### Computed Fields #####
#######################################################

is_hh_unemployed = fields.Boolean(compute="_compute_hh_is_unemployed", store=True)

@api.constrains("group_membership_ids", "employment_status")
def _compute_hh_is_unemployed(self):
for rec in self:
group_head = self.env["g2p.group.membership"].get_household_head(rec)
if group_head:
rec.is_hh_unemployed = group_head.employment_status == "unemployed"
else:
rec.is_hh_unemployed = False
3 changes: 3 additions & 0 deletions g2p_pbms_socio_economic_model/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
41 changes: 41 additions & 0 deletions g2p_pbms_socio_economic_model/views/group_view.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
Part of OpenG2P. See LICENSE file for full copyright and licensing details.
-->
<odoo>
<record id="view_group_view_pbms_model" model="ir.ui.view">
<field name="name">view_group_view_pbms_model</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="g2p_registry_group.view_groups_form" />
<field name="arch" type="xml">
<xpath expr="//page[@name='ids']" position="after">
<page string="Economic Status Information" name="economic_status_info">
<group>
<field name="income_sources" string="Source Of Income" />
<field name="annual_income" />
<field name="owns_two_wheeler" string="Owns a Two-Wheeler" />
<field name="owns_three_wheeler" string="Owns a Three-Wheeler" />
<field name="owns_four_wheeler" string="Owns a Four-Wheeler" />
<field name="owns_cart" string="Owns a Cart" />
<field name="land_ownership" />
<field name="type_of_land_owned" />
<field name="land_size" />
<field name="owns_house" />
<field name="owns_livestock" />
</group>
</page>
<page string="Social Status Information" name="social_status_info">
<group>
<field name="num_preg_lact_women" string="Pregnant &amp; Lactating Women" />
<field name="num_malnourished_children" string="Malnourished Children Under 5" />
<field name="num_disabled" string="No. of member with Disability" />
<field name="type_of_disability" />
<field name="caste_ethnic_group" string="Caste/Ethnic Group" />
<field name="belong_to_protected_groups" string="Belong to any protected groups?" />
<field name="other_vulnerable_status" string="Under any other vulnerable status?" />
</group>
</page>
</xpath>
</field>
</record>
</odoo>
18 changes: 18 additions & 0 deletions g2p_pbms_socio_economic_model/views/individual_view.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
Part of OpenG2P. See LICENSE file for full copyright and licensing details.
-->
<odoo>
<record id="view_individual_form_pbms_model" model="ir.ui.view">
<field name="name">view_individual_form_pbms_model</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="g2p_registry_individual.view_individuals_form" />
<field name="arch" type="xml">
<xpath expr="//field[@name='income']" position="after">
<field name="marital_status" />
<field name="employment_status" />
<field name="education_level" />
</xpath>
</field>
</record>
</odoo>
15 changes: 15 additions & 0 deletions g2p_pbms_socio_economic_model/views/menu_view.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
Part of OpenG2P. See LICENSE file for full copyright and licensing details.
-->
<odoo>
<menuitem id="g2p_programs.g2p_program_menu_root" name="Programs" web_icon="" sequence="-1" />

<menuitem
id="g2p_registry_base.g2p_main_menu_root"
name="Beneficiary Registry"
web_icon=""
active="True"
sequence="0"
/>
</odoo>
3 changes: 3 additions & 0 deletions g2p_pbms_student_model/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# G2P PBMS Student Model

Refer to https://docs.openg2p.org.
3 changes: 3 additions & 0 deletions g2p_pbms_student_model/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Part of OpenG2P. See LICENSE file for full copyright and licensing details.

from . import models
18 changes: 18 additions & 0 deletions g2p_pbms_student_model/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Part of OpenG2P. See LICENSE file for full copyright and licensing details.
{
"name": "G2P PBMS Student Model",
"category": "G2P",
"version": "17.0.0.0.0",
"sequence": 1,
"author": "OpenG2P",
"website": "https://openg2p.org",
"license": "LGPL-3",
"depends": ["g2p_registry_individual", "g2p_programs"],
"data": ["views/individual_view.xml"],
"assets": {},
"demo": [],
"images": [],
"application": True,
"installable": True,
"auto_install": False,
}
3 changes: 3 additions & 0 deletions g2p_pbms_student_model/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Part of OpenG2P. See LICENSE file for full copyright and licensing details.

from . import res_partner
Loading