summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndriFP <andrifebriyadiputra@gmail.com>2025-09-06 14:04:27 +0700
committerAndriFP <andrifebriyadiputra@gmail.com>2025-09-06 14:04:27 +0700
commit4cdb3a7b89d5e93449fadafec015e80dad1cf47f (patch)
tree2564c2dca5de37e24c9871d411c111fad5c05aa3
parent70dfadc9aa8274e8f9aafa4ec594af0b5a37343b (diff)
(andri) add validasi di SO dan respartner
-rw-r--r--indoteknik_custom/models/res_partner.py16
-rwxr-xr-xindoteknik_custom/models/sale_order.py17
2 files changed, 26 insertions, 7 deletions
diff --git a/indoteknik_custom/models/res_partner.py b/indoteknik_custom/models/res_partner.py
index 80fe643b..b5ce9266 100644
--- a/indoteknik_custom/models/res_partner.py
+++ b/indoteknik_custom/models/res_partner.py
@@ -183,13 +183,6 @@ class ResPartner(models.Model):
is_cbd_locked = fields.Boolean("Locked to CBD?", default=False, tracking=True, help="Jika dicentang, maka partner ini terkunci pada payment term CBD karena memiliki invoice yang sudah jatuh tempo lebih dari 30 hari.")
- # centang manual is_cbd_locked jika payment term diubah ke CBD
- # @api.onchange('is_cbd_locked')
- # def _onchange_is_cbd_locked(self):
- # if self.is_cbd_locked:
- # cbd_term = self.env['account.payment.term'].browse(26)
- # if cbd_term:
- # self.property_payment_term_id = cbd_term.id
@api.model
def _default_payment_term(self):
@@ -201,6 +194,15 @@ class ResPartner(models.Model):
default=_default_payment_term, tracking=3
)
+ @api.constrains('property_payment_term_id', 'is_cbd_locked')
+ def _check_cbd_lock_partner(self):
+ cbd_term = self.env['account.payment.term'].browse(26)
+ for rec in self:
+ if rec.is_cbd_locked and rec.property_payment_term_id and rec.property_payment_term_id != cbd_term:
+ raise ValidationError(
+ "Partner ini terkunci ke CBD, hanya boleh pakai Payment Term CBD."
+ )
+
@api.depends("street", "street2", "city", "state_id", "country_id", "blok", "nomor", "rt", "rw", "kelurahan_id",
"kecamatan_id")
def _alamat_lengkap_text(self):
diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py
index 992c1a5d..8a595d8e 100755
--- a/indoteknik_custom/models/sale_order.py
+++ b/indoteknik_custom/models/sale_order.py
@@ -404,6 +404,23 @@ class SaleOrder(models.Model):
for order in self:
order.partner_is_cbd_locked = order.partner_id.is_cbd_locked
+ @api.onchange('payment_term_id')
+ def _onchange_partner_payment_term(self):
+ cbd_term = self.env['account.payment.term'].browse(26)
+ for rec in self:
+ if rec.partner_id and rec.partner_id.is_cbd_locked and cbd_term:
+ rec.payment_term_id = cbd_term
+
+ @api.constrains('payment_term_id', 'partner_id', 'state')
+ def _check_cbd_lock_sale_order(self):
+ cbd_term = self.env['account.payment.term'].browse(26)
+ for rec in self:
+ if rec.state == 'draft' and rec.partner_id.is_cbd_locked:
+ if rec.payment_term_id and rec.payment_term_id != cbd_term:
+ raise ValidationError(
+ "Customer ini terkunci ke CBD, hanya boleh pakai Payment Term CBD."
+ )
+
@api.depends('invoice_ids.payment_state', 'invoice_ids.amount_total', 'invoice_ids.amount_residual')
def _compute_payment_state_custom(self):
for order in self: