diff options
| author | trisusilo48 <tri.susilo@altama.co.id> | 2024-10-02 09:44:39 +0700 |
|---|---|---|
| committer | trisusilo48 <tri.susilo@altama.co.id> | 2024-10-02 09:44:39 +0700 |
| commit | 2739d3040a69228192096ee16373610149a2fb47 (patch) | |
| tree | 545aa797d7407e8f22250dff15648495b891928f /indoteknik_custom/models/res_partner.py | |
| parent | 4d3d219b5f1002822a16067a28261fd59b170ff8 (diff) | |
| parent | 7d3780ede67579b5891218efc370dc82eef510a1 (diff) | |
Merge branch 'production' of https://bitbucket.org/altafixco/indoteknik-addons into production
Diffstat (limited to 'indoteknik_custom/models/res_partner.py')
| -rw-r--r-- | indoteknik_custom/models/res_partner.py | 97 |
1 files changed, 88 insertions, 9 deletions
diff --git a/indoteknik_custom/models/res_partner.py b/indoteknik_custom/models/res_partner.py index ac126337..2846c14b 100644 --- a/indoteknik_custom/models/res_partner.py +++ b/indoteknik_custom/models/res_partner.py @@ -18,7 +18,8 @@ class ResPartner(models.Model): ('pkp', 'PKP'), ('nonpkp', 'Non PKP') ]) - sppkp = fields.Char(string="SPPKP") + sppkp = fields.Char(string="SPPKP", tracking=3) + npwp = fields.Char(string="NPWP", tracking=3) counter = fields.Integer(string="Counter", default=0) leadtime = fields.Integer(string="Leadtime", default=0) digital_invoice_tax = fields.Boolean(string="Digital Invoice & Faktur Pajak") @@ -58,20 +59,98 @@ class ResPartner(models.Model): default=_default_payment_term ) + @api.depends("street", "street2", "city", "state_id", "country_id", "blok", "nomor", "rt", "rw", "kelurahan_id", + "kecamatan_id") + def _alamat_lengkap_text(self): + for partner in self: + if partner.company_type == 'person' and not partner.parent_id: + partner.alamat_lengkap_text = partner.street + # if partner.company_type == 'person' and partner.parent_id: + # partner.alamat_lengkap_text = partner.parent_id.alamat_lengkap_text + + + alamat_lengkap_text = fields.Text(string="Alamat Lengkap", required=False , tracking=3) + def write(self, vals): res = super(ResPartner, self).write(vals) + # + # # if 'property_payment_term_id' in vals: + # # if not self.env.user.is_accounting and vals['property_payment_term_id'] != 26: + # # raise UserError('Hanya Finance Accounting yang dapat merubah payment term') + # + # # group_id = self.env.ref('indoteknik_custom.group_role_merchandiser').id + # # users_in_group = self.env['res.users'].search([('groups_id', 'in', [group_id])]) + # # if self.env.user.id not in users_in_group.mapped('id'): + # # raise UserError('You name it') + # + return res - # if 'property_payment_term_id' in vals: - # if not self.env.user.is_accounting and vals['property_payment_term_id'] != 26: - # raise UserError('Hanya Finance Accounting yang dapat merubah payment term') - - # group_id = self.env.ref('indoteknik_custom.group_role_merchandiser').id - # users_in_group = self.env['res.users'].search([('groups_id', 'in', [group_id])]) - # if self.env.user.id not in users_in_group.mapped('id'): - # raise UserError('You name it') + def write(self, vals): + # Fungsi rekursif untuk meng-update semua child, termasuk child dari child + def update_children_recursively(partner, vals_for_child): + # Lakukan update pada partner saat ini hanya dengan field yang diizinkan + partner.write(vals_for_child) + + # Untuk setiap child dari partner ini, update juga child-nya + for child in partner.child_ids: + update_children_recursively(child, vals_for_child) + + # Jika self tidak memiliki parent_id, artinya self adalah parent + if not self.parent_id: + # Ambil semua child dari parent ini + children = self.child_ids + + # Perbarui vals dengan nilai dari parent jika tidak ada dalam vals + vals['customer_type'] = vals.get('customer_type', self.customer_type) + vals['nama_wajib_pajak'] = vals.get('nama_wajib_pajak', self.nama_wajib_pajak) + vals['npwp'] = vals.get('npwp', self.npwp) + vals['sppkp'] = vals.get('sppkp', self.sppkp) + vals['alamat_lengkap_text'] = vals.get('alamat_lengkap_text', self.alamat_lengkap_text) + vals['industry_id'] = vals.get('industry_id', self.industry_id.id if self.industry_id else None) + vals['company_type_id'] = vals.get('company_type_id', + self.company_type_id.id if self.company_type_id else None) + + # Simpan hanya field yang perlu di-update pada child + vals_for_child = { + 'customer_type': vals.get('customer_type'), + 'nama_wajib_pajak': vals.get('nama_wajib_pajak'), + 'npwp': vals.get('npwp'), + 'sppkp': vals.get('sppkp'), + 'alamat_lengkap_text': vals.get('alamat_lengkap_text'), + 'industry_id': vals.get('industry_id'), + 'company_type_id': vals.get('company_type_id') + } + + # Lakukan update pada semua child secara rekursif + for child in children: + update_children_recursively(child, vals_for_child) + + # Lakukan write untuk parent dengan vals asli + res = super(ResPartner, self).write(vals) return res + # if self.company_type == 'person' and not partner.parent_id: + # if self.parent_id: + # parent = self.parent_id + # vals['industry_id'] = parent.industry_id.id + # vals['company_type_id'] = parent.company_type_id.id + # + # res = super(ResPartner, self).write(vals) + # return res + + @api.depends('company_type', 'parent_id', 'npwp', 'sppkp', 'nama_wajib_pajak','alamat_lengkap_text', 'industry_id', 'company_type_id') + def _related_fields(self): + for partner in self: + if partner.company_type == 'person' and partner.parent_id: + partner.customer_type = partner.parent_id.customer_type + partner.npwp = partner.parent_id.npwp + partner.sppkp = partner.parent_id.sppkp + partner.nama_wajib_pajak = partner.parent_id.nama_wajib_pajak + partner.alamat_lengkap_text = partner.parent_id.alamat_lengkap_text + partner.industry_id = partner.parent_id.industry_id.id + partner.company_type_id = partner.parent_id.company_type_id.id + @api.constrains('property_payment_term_id') def updated_by_payment_term(self): for rec in self: |
