summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorit-fixcomart <it@fixcomart.co.id>2024-10-01 17:07:00 +0700
committerit-fixcomart <it@fixcomart.co.id>2024-10-01 17:07:00 +0700
commite909d345ecd58d933e7236d45b6994512c601748 (patch)
treefcccd424e14d0a4646f9094a03fa05b7cde9e5f0
parent9da8f3d5b2bd966bf873d8d760b179ba41f26542 (diff)
<iman> update jika efaktur BP nya diubah maka child efakturnya juga berubah
-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
#