Commit 4e782117 by Owo Sugiana

Tambah Daftar Hubungan Keluarga

1 parent 49cf39c9
...@@ -8,6 +8,11 @@ from odoo.exceptions import ValidationError ...@@ -8,6 +8,11 @@ from odoo.exceptions import ValidationError
from .res_company import range_validation from .res_company import range_validation
# https://qasp2020.bps.go.id/posts/c54cdd0f12634e1c8fd114eda67e21b0/konsep-definisi/hubungan-keluarga
HUBUNGAN_KELUARGA = [
'Kepala Keluarga', 'Suami', 'Istri', 'Anak', 'Menantu', 'Cucu',
'Orang Tua', 'Mertua', 'Famili Lain']
ERR_NIK = ValidationError(f'NIK harus 16 angka') ERR_NIK = ValidationError(f'NIK harus 16 angka')
...@@ -24,6 +29,14 @@ def nik_validation(val): ...@@ -24,6 +29,14 @@ def nik_validation(val):
raise ERR_NIK raise ERR_NIK
class HubunganKeluarga(models.Model):
_name = 'hubungan.keluarga'
_order = 'name'
_description = 'Hubungan Keluarga'
name = fields.Char(string='Hubungan Keluarga')
class Partner(models.Model): class Partner(models.Model):
_inherit = 'res.partner' _inherit = 'res.partner'
...@@ -45,7 +58,10 @@ class Partner(models.Model): ...@@ -45,7 +58,10 @@ class Partner(models.Model):
domain="[('kecamatan_id', '=?', kecamatan_id)]") domain="[('kecamatan_id', '=?', kecamatan_id)]")
rw = fields.Char(string='RW') rw = fields.Char(string='RW')
rt = fields.Char(string='RT') rt = fields.Char(string='RT')
hubungan_keluarga = fields.Char() # Kepala Keluarga / Istri / Anak # Kepala Keluarga / Istri / Anak
hubungan_keluarga_id = fields.Many2one('hubungan.keluarga')
hubungan_keluarga = fields.Char(
related='hubungan_keluarga_id.name', store=True, string="Hub. Kel.")
# https://github.com/OCA/partner-contact/tree/15.0/partner_contact_gender # https://github.com/OCA/partner-contact/tree/15.0/partner_contact_gender
gender = fields.Selection( gender = fields.Selection(
[('male', 'Laki-laki'), ('female', 'Perempuan')]) [('male', 'Laki-laki'), ('female', 'Perempuan')])
...@@ -55,6 +71,27 @@ class Partner(models.Model): ...@@ -55,6 +71,27 @@ class Partner(models.Model):
# https://github.com/OCA/partner-contact/blob/15.0/partner_contact_nationality # https://github.com/OCA/partner-contact/blob/15.0/partner_contact_nationality
nationality_id = fields.Many2one('res.country', 'Warga Negara') nationality_id = fields.Many2one('res.country', 'Warga Negara')
@api.model
def create(self, vals):
hk = vals.get('hubungan_keluarga')
if hk:
res = self.env['hubungan.keluarga'].search(
[('name', '=', hk)], limit=1)
if res:
vals['hubungan_keluarga_id'] = res.id
res = super().create(vals)
# RT ?
if self.env.ref('warga.res_partner_category_warga_rt') == \
res.category_id:
# Buat daftar Hubungan Keluarga
for name in HUBUNGAN_KELUARGA:
hk = self.env['hubungan.keluarga'].search(
[('name', '=', name)], limit=1)
if not hk:
d = dict(name=name)
self.env['hubungan.keluarga'].create(d)
return res
@api.depends("birthdate_date") @api.depends("birthdate_date")
def _compute_age(self): def _compute_age(self):
for record in self: for record in self:
...@@ -64,9 +101,9 @@ class Partner(models.Model): ...@@ -64,9 +101,9 @@ class Partner(models.Model):
age = age.years age = age.years
record.age = age record.age = age
@api.onchange('l10n_id_nik') # @api.onchange('l10n_id_nik')
def _onchange_nik(self): # def _onchange_nik(self):
self.l10n_id_nik = nik_validation(self.l10n_id_nik) # self.l10n_id_nik = nik_validation(self.l10n_id_nik)
@api.onchange('country_id') @api.onchange('country_id')
def _onchange_country_id(self): def _onchange_country_id(self):
......
...@@ -3,3 +3,4 @@ access_undangan_user,access_undangan_dari_user,model_warga_undangan,base.group_u ...@@ -3,3 +3,4 @@ access_undangan_user,access_undangan_dari_user,model_warga_undangan,base.group_u
access_undangan_portal,access_undangan_dari_portal,model_warga_undangan,base.group_portal,1,1,1,0 access_undangan_portal,access_undangan_dari_portal,model_warga_undangan,base.group_portal,1,1,1,0
access_pop_message_user,access_pop_message_user,model_custom_pop_message,base.group_user,1,0,0,0 access_pop_message_user,access_pop_message_user,model_custom_pop_message,base.group_user,1,0,0,0
access_pop_message_portal,access_pop_message_portal,model_custom_pop_message,base.group_portal,1,0,0,0 access_pop_message_portal,access_pop_message_portal,model_custom_pop_message,base.group_portal,1,0,0,0
access_hubungan_keluarga,access_hubungan_keluarga,model_hubungan_keluarga,base.group_user,1,1,1,1
...@@ -15,6 +15,13 @@ ...@@ -15,6 +15,13 @@
</field> </field>
<field name="groups" eval="[Command.link(ref('warga.group_warga'))]"/> <field name="groups" eval="[Command.link(ref('warga.group_warga'))]"/>
</record> </record>
<record model="ir.rule" id="akses_hubungan_keluarga">
<field name="name">Hak Akses Hubungan Keluarga"</field>
<field name="model_id" ref="model_hubungan_keluarga"/>
<field name="domain_force">
[('create_uid', '=', user.id)]
</field>
</record>
<record model="ir.rule" id="base.res_partner_rule_private_employee"> <record model="ir.rule" id="base.res_partner_rule_private_employee">
<field name="groups" eval="[Command.unlink(ref('base.group_user')), Command.link(ref('base.group_erp_manager'))]"/> <field name="groups" eval="[Command.unlink(ref('base.group_user')), Command.link(ref('base.group_erp_manager'))]"/>
</record> </record>
......
...@@ -49,7 +49,6 @@ ...@@ -49,7 +49,6 @@
<field name="child_ids" context="{'default_parent_id': active_id, <field name="child_ids" context="{'default_parent_id': active_id,
'default_category_id': [2], 'default_category_id': [2],
'default_type': 'other', 'default_type': 'other',
'default_hubungan_keluarga': 'Kepala Keluarga',
'default_street': street, 'default_street': street,
'default_nationality_id': country_id, 'default_nationality_id': country_id,
'default_country_id': country_id, 'default_country_id': country_id,
...@@ -70,10 +69,10 @@ ...@@ -70,10 +69,10 @@
<field name="type" invisible="1"/> <field name="type" invisible="1"/>
<field name="city" invisible="1"/> <field name="city" invisible="1"/>
<field name="category_id" invisible="1"/> <field name="category_id" invisible="1"/>
<field name="hubungan_keluarga" invisible="1"/>
<group> <group>
<group> <group>
<field name="name"/> <field name="name"/>
<!-- field name="title" options='{"no_open": True}'/-->
<field name="gender"/> <field name="gender"/>
<field name="birthdate_date" placeholder="17-8-1945"/> <field name="birthdate_date" placeholder="17-8-1945"/>
<field name="age" attrs="{'invisible': [('birthdate_date', '=', False)]}"/> <field name="age" attrs="{'invisible': [('birthdate_date', '=', False)]}"/>
...@@ -85,17 +84,17 @@ ...@@ -85,17 +84,17 @@
<group> <group>
<label for="street" string="Alamat"/> <label for="street" string="Alamat"/>
<div class="o_address_format"> <div class="o_address_format">
<field name="street" string="Jalan / No."/> <field name="street" placeholder="Jalan / No."/>
<label for="rt" string="RT"/> <label for="rt" string="RT" attrs="{'invisible': [('rt', '=', False)]}"/>
<field name="rt"/> <field name="rt" placeholder="RT"/>
<label for="rw" string="RW"/> <label for="rw" string="RW" attrs="{'invisible': [('rw', '=', False)]}"/>
<field name="rw"/> <field name="rw" placeholder="RW"/>
<field name="kelurahan_id" placeholder="Kelurahan"/> <field name="kelurahan_id" placeholder="Kelurahan"/>
<field name="kecamatan_id" placeholder="Kecamatan"/> <field name="kecamatan_id" placeholder="Kecamatan"/>
<field name="kabupaten_id" placeholder="Kabupaten"/> <field name="kabupaten_id" placeholder="Kabupaten"/>
<field name="state_id" placeholder="Provinsi"/> <field name="state_id" placeholder="Provinsi"/>
<field name="country_id" placeholder="Negara"/> <field name="country_id" placeholder="Negara"/>
<field name="zip"/> <field name="zip" placeholder="Kode Pos"/>
</div> </div>
</group> </group>
</group> </group>
...@@ -131,7 +130,7 @@ ...@@ -131,7 +130,7 @@
<field name="gender"/> <field name="gender"/>
<field name="birthdate_date" placeholder="17-8-1945"/> <field name="birthdate_date" placeholder="17-8-1945"/>
<field name="age" attrs="{'invisible': [('birthdate_date', '=', False)]}"/> <field name="age" attrs="{'invisible': [('birthdate_date', '=', False)]}"/>
<field name="hubungan_keluarga" placeholder="Istri / Anak / Ibu / Bapak"/> <field name="hubungan_keluarga_id" domain="[('name', '!=', 'Kepala Keluarga')]"/>
<field name="mobile" widget="phone"/> <field name="mobile" widget="phone"/>
<field name="email" widget="email"/> <field name="email" widget="email"/>
<field name="phone" widget="phone"/> <field name="phone" widget="phone"/>
...@@ -150,7 +149,7 @@ ...@@ -150,7 +149,7 @@
<field name="kabupaten_id" placeholder="Kabupaten"/> <field name="kabupaten_id" placeholder="Kabupaten"/>
<field name="state_id" placeholder="Provinsi"/> <field name="state_id" placeholder="Provinsi"/>
<field name="country_id" placeholder="Negara"/> <field name="country_id" placeholder="Negara"/>
<field name="zip"/> <field name="zip" placeholder="Kode Pos"/>
</div> </div>
</group> </group>
</group> </group>
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!