diff options
| author | it-fixcomart <it@fixcomart.co.id> | 2024-10-01 17:07:00 +0700 |
|---|---|---|
| committer | it-fixcomart <it@fixcomart.co.id> | 2024-10-01 17:07:00 +0700 |
| commit | e909d345ecd58d933e7236d45b6994512c601748 (patch) | |
| tree | fcccd424e14d0a4646f9094a03fa05b7cde9e5f0 | |
| parent | 9da8f3d5b2bd966bf873d8d760b179ba41f26542 (diff) | |
<iman> update jika efaktur BP nya diubah maka child efakturnya juga berubah
| -rw-r--r-- | indoteknik_custom/models/res_partner.py | 53 |
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 # |
