Commit 6e903196 by Owo Sugiana

Tidak bisa kirim undangan bila tujuan sudah login

1 parent 4e782117
......@@ -13,6 +13,11 @@ HUBUNGAN_KELUARGA = [
'Kepala Keluarga', 'Suami', 'Istri', 'Anak', 'Menantu', 'Cucu',
'Orang Tua', 'Mertua', 'Famili Lain']
# https://gis.dukcapil.kemendagri.go.id/arcgis/apps/MapSeries/index.html?appid=0510ddf68e094d56a07a7bf9f5330dfe
RELIGIONS = [
'Islam', 'Kristen', 'Katholik', 'Hindu', 'Budha', 'Konghucu',
'Kepercayaan Lain']
ERR_NIK = ValidationError(f'NIK harus 16 angka')
......@@ -34,7 +39,16 @@ class HubunganKeluarga(models.Model):
_order = 'name'
_description = 'Hubungan Keluarga'
name = fields.Char(string='Hubungan Keluarga')
name = fields.Char(string='Hubungan Keluarga', required=True)
# https://github.com/open-synergy/opnsynid-partner-contact/tree/8.0/partner_contact_religion/models
class PartnerReligion(models.Model):
_name = 'partner.religion'
_order = 'id'
_description = 'Agama'
name = fields.Char(string='Religion', required=True)
class Partner(models.Model):
......@@ -67,9 +81,28 @@ class Partner(models.Model):
[('male', 'Laki-laki'), ('female', 'Perempuan')])
# https://github.com/OCA/partner-contact/blob/15.0/partner_contact_birthdate
birthdate_date = fields.Date('Tanggal Lahir')
age = fields.Integer(readonly=True, compute='_compute_age')
age = fields.Integer(string='Usia', readonly=True, compute='_compute_age')
# https://github.com/OCA/partner-contact/blob/15.0/partner_contact_nationality
nationality_id = fields.Many2one('res.country', 'Warga Negara')
religion_id = fields.Many2one('partner.religion', 'Agama')
def _create_hubungan_keluarga(self):
# Buat daftar Hubungan Keluarga
for name in HUBUNGAN_KELUARGA:
res = self.env['hubungan.keluarga'].search(
[('name', '=', name)], limit=1)
if not res:
d = dict(name=name)
self.env['hubungan.keluarga'].create(d)
def _create_religion(self):
# Buat daftar Agama
for name in RELIGIONS:
res = self.env['partner.religion'].search(
[('name', '=', name)], limit=1)
if not res:
d = dict(name=name)
self.env['partner.religion'].create(d)
@api.model
def create(self, vals):
......@@ -83,13 +116,8 @@ class Partner(models.Model):
# 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)
self._create_hubungan_keluarga()
self._create_religion()
return res
@api.depends("birthdate_date")
......
......@@ -4,3 +4,4 @@ access_undangan_portal,access_undangan_dari_portal,model_warga_undangan,base.gro
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
access_partner_religion,access_partner_religion,model_partner_religion,base.group_user,1,1,1,1
......@@ -22,6 +22,13 @@
[('create_uid', '=', user.id)]
</field>
</record>
<record model="ir.rule" id="akses_partner_religion">
<field name="name">Hak Akses Agama</field>
<field name="model_id" ref="model_partner_religion"/>
<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>
......
......@@ -60,6 +60,7 @@
'default_zip': zip}">
<tree>
<field name="name"/>
<field name="ref" string="Panggilan"/>
<field name="age"/>
<field name="street" string="Jalan / No."/>
<field name="mobile"/>
......@@ -72,7 +73,8 @@
<group>
<group>
<field name="name"/>
<!-- field name="title" options='{"no_open": True}'/-->
<!-- https://www.odoo.com/id_ID/forum/help-1/can-contacts-have-a-nickname-197033 -->
<field name="ref" string="Panggilan"/>
<field name="gender"/>
<field name="birthdate_date" placeholder="17-8-1945"/>
<field name="age" attrs="{'invisible': [('birthdate_date', '=', False)]}"/>
......@@ -80,6 +82,8 @@
<field name="email" widget="email"/>
<field name="phone" widget="phone"/>
<field name="nationality_id"/>
<field name="function" string="Pekerjaan"/>
<field name="religion_id"/>
</group>
<group>
<label for="street" string="Alamat"/>
......@@ -111,9 +115,11 @@
'default_kecamatan_id': kecamatan_id,
'default_kelurahan_id': kelurahan_id,
'default_rw': rw, 'default_rt': rt,
'default_zip': zip}">
'default_zip': zip,
'default_religion_id': religion_id}">
<tree>
<field name="name"/>
<field name="ref" string="Panggilan"/>
<field name="gender"/>
<field name="age"/>
<field name="hubungan_keluarga"/>
......@@ -127,6 +133,7 @@
<group>
<group>
<field name="name"/>
<field name="ref" string="Panggilan"/>
<field name="gender"/>
<field name="birthdate_date" placeholder="17-8-1945"/>
<field name="age" attrs="{'invisible': [('birthdate_date', '=', False)]}"/>
......@@ -135,6 +142,8 @@
<field name="email" widget="email"/>
<field name="phone" widget="phone"/>
<field name="nationality_id"/>
<field name="function" string="Pekerjaan"/>
<field name="religion_id"/>
</group>
<group>
<label for="rt" string="Alamat"/>
......
......@@ -28,13 +28,19 @@ class KirimUndangan(models.TransientModel):
t = self.email.split('@')
if len(t) != 2:
raise ValidationError(f'Email {self.email} tidak benar')
partner = self.env['res.partner'].sudo().search(
[('email', '=', self.email)], limit=1)
if partner and not partner.signup_token:
raise ValidationError(f'Email {self.email} sudah terdaftar')
template = self.env.ref('warga.warga_undangan_email')
if not template:
raise UserError(
_('The template "Portal: new user" not found for sending '
'email to the portal user.'))
d = dict(name=self.name, email=self.email, user_id=self.env.user.id)
partner = self.env['res.partner'].create(d)
if not partner:
d = dict(
name=self.name, email=self.email, user_id=self.env.user.id)
partner = self.env['res.partner'].create(d)
lang = partner.sudo().lang
portal_url = partner.with_context(
signup_force_type_in_url='', lang=lang).\
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!