summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2024-10-02 08:46:22 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2024-10-02 08:46:22 +0700
commit7d3780ede67579b5891218efc370dc82eef510a1 (patch)
treee88dccfeec83b6351546d273576f2c9561c0728e
parent8dc7080cc6ed7cac6aee57a2891885f524867917 (diff)
parentd3d354b67fe8865d29521f8c23d336176e394f64 (diff)
Merge branch 'production' of bitbucket.org:altafixco/indoteknik-addons into production
-rw-r--r--indoteknik_custom/models/res_partner.py53
1 files changed, 46 insertions, 7 deletions
diff --git a/indoteknik_custom/models/res_partner.py b/indoteknik_custom/models/res_partner.py
index ef857c55..2846c14b 100644
--- a/indoteknik_custom/models/res_partner.py
+++ b/indoteknik_custom/models/res_partner.py
@@ -85,15 +85,54 @@ class ResPartner(models.Model):
#
return res
- # def write(self, vals):
- # if self.company_type == 'person':
+ 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['customer_type'] = parent.customer_type
- # vals['nama_wajib_pajak'] = parent.nama_wajib_pajak
- # vals['npwp'] = parent.npwp
- # vals['sppkp'] = parent.sppkp
- # vals['alamat_lengkap_text'] = parent.alamat_lengkap_text
# vals['industry_id'] = parent.industry_id.id
# vals['company_type_id'] = parent.company_type_id.id
#