Commit 4e782117 by Owo Sugiana

Tambah Daftar Hubungan Keluarga

1 parent 49cf39c9
......@@ -8,6 +8,11 @@ from odoo.exceptions import ValidationError
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')
......@@ -24,6 +29,14 @@ def nik_validation(val):
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):
_inherit = 'res.partner'
......@@ -45,7 +58,10 @@ class Partner(models.Model):
domain="[('kecamatan_id', '=?', kecamatan_id)]")
rw = fields.Char(string='RW')
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
gender = fields.Selection(
[('male', 'Laki-laki'), ('female', 'Perempuan')])
......@@ -55,6 +71,27 @@ class Partner(models.Model):
# https://github.com/OCA/partner-contact/blob/15.0/partner_contact_nationality
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")
def _compute_age(self):
for record in self:
......@@ -64,9 +101,9 @@ class Partner(models.Model):
age = age.years
record.age = age
@api.onchange('l10n_id_nik')
def _onchange_nik(self):
self.l10n_id_nik = nik_validation(self.l10n_id_nik)
# @api.onchange('l10n_id_nik')
# def _onchange_nik(self):
# self.l10n_id_nik = nik_validation(self.l10n_id_nik)
@api.onchange('country_id')
def _onchange_country_id(self):
......
......@@ -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_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_hubungan_keluarga,access_hubungan_keluarga,model_hubungan_keluarga,base.group_user,1,1,1,1
......@@ -15,6 +15,13 @@
</field>
<field name="groups" eval="[Command.link(ref('warga.group_warga'))]"/>
</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">
<field name="groups" eval="[Command.unlink(ref('base.group_user')), Command.link(ref('base.group_erp_manager'))]"/>
</record>
......
......@@ -49,7 +49,6 @@
<field name="child_ids" context="{'default_parent_id': active_id,
'default_category_id': [2],
'default_type': 'other',
'default_hubungan_keluarga': 'Kepala Keluarga',
'default_street': street,
'default_nationality_id': country_id,
'default_country_id': country_id,
......@@ -70,10 +69,10 @@
<field name="type" invisible="1"/>
<field name="city" invisible="1"/>
<field name="category_id" invisible="1"/>
<field name="hubungan_keluarga" invisible="1"/>
<group>
<group>
<field name="name"/>
<!-- field name="title" options='{"no_open": True}'/-->
<field name="gender"/>
<field name="birthdate_date" placeholder="17-8-1945"/>
<field name="age" attrs="{'invisible': [('birthdate_date', '=', False)]}"/>
......@@ -85,17 +84,17 @@
<group>
<label for="street" string="Alamat"/>
<div class="o_address_format">
<field name="street" string="Jalan / No."/>
<label for="rt" string="RT"/>
<field name="rt"/>
<label for="rw" string="RW"/>
<field name="rw"/>
<field name="street" placeholder="Jalan / No."/>
<label for="rt" string="RT" attrs="{'invisible': [('rt', '=', False)]}"/>
<field name="rt" placeholder="RT"/>
<label for="rw" string="RW" attrs="{'invisible': [('rw', '=', False)]}"/>
<field name="rw" placeholder="RW"/>
<field name="kelurahan_id" placeholder="Kelurahan"/>
<field name="kecamatan_id" placeholder="Kecamatan"/>
<field name="kabupaten_id" placeholder="Kabupaten"/>
<field name="state_id" placeholder="Provinsi"/>
<field name="country_id" placeholder="Negara"/>
<field name="zip"/>
<field name="zip" placeholder="Kode Pos"/>
</div>
</group>
</group>
......@@ -131,7 +130,7 @@
<field name="gender"/>
<field name="birthdate_date" placeholder="17-8-1945"/>
<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="email" widget="email"/>
<field name="phone" widget="phone"/>
......@@ -150,7 +149,7 @@
<field name="kabupaten_id" placeholder="Kabupaten"/>
<field name="state_id" placeholder="Provinsi"/>
<field name="country_id" placeholder="Negara"/>
<field name="zip"/>
<field name="zip" placeholder="Kode Pos"/>
</div>
</group>
</group>
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!