diff options
| author | Indoteknik . <it@fixcomart.co.id> | 2025-08-09 16:08:18 +0700 |
|---|---|---|
| committer | Indoteknik . <it@fixcomart.co.id> | 2025-08-09 16:08:18 +0700 |
| commit | 2f31e36104c0b92bf022dc78b3952f08815dd1cc (patch) | |
| tree | cf7e3b7a438fdb5426e778697f88cae3c665c8f9 | |
| parent | 979ffc90fffe2f09788016376d71a940a28f8fed (diff) | |
(andri) fix validasi sisa PUM & nominal
| -rw-r--r-- | indoteknik_custom/models/down_payment.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/indoteknik_custom/models/down_payment.py b/indoteknik_custom/models/down_payment.py index 5c7c3f49..e0828968 100644 --- a/indoteknik_custom/models/down_payment.py +++ b/indoteknik_custom/models/down_payment.py @@ -116,6 +116,19 @@ class DownPayment(models.Model): default=lambda self: self.env.company.currency_id ) + @api.onchange('nominal') + def _onchange_nominal_no_minus(self): + if self.nominal and self.nominal < 0: + self.nominal = 0 + return { + 'warning': { + 'title': _('Nominal Tidak Valid'), + 'message': _( + "Nominal tidak boleh diisi minus.\n" + "Nilai di set menjadi nol." + ) + } + } def _get_jasper_attachment(self): self.ensure_one() @@ -636,6 +649,20 @@ class RealizationDownPaymentUseLine(models.Model): 'message': _('Hanya user AP yang bisa mencentang Done Attachment.') } } + + @api.onchange('nominal') + def _onchange_nominal_no_minus(self): + if self.nominal and self.nominal < 0: + self.nominal = 0 + return { + 'warning': { + 'title': _('Nominal Tidak Valid'), + 'message': _( + "Nominal penggunaan PUM tidak boleh diisi minus.\n" + "Nilai di Set menjadi nol." + ) + } + } class RealizationDownPayment(models.Model): _name = 'realization.down.payment' @@ -965,6 +992,26 @@ class RealizationDownPayment(models.Model): # rec.message_post(body=f"Approval oleh {self.env.user.name} pada tahap <b>{rec.status}</b>.") + def _check_remaining_value(self): + for rec in self: + # Cek sisa PUM + if rec.remaining_value < 0: + raise ValidationError( + "Sisa uang PUM tidak boleh kurang dari 0.\n" + "Jika ada penggunaan uang pribadi, maka ajukan dengan sistem reimburse." + ) + + @api.model + def create(self, vals): + rec = super().create(vals) + rec._check_remaining_value() + return rec + + def write(self, vals): + res = super().write(vals) + self._check_remaining_value() + return res + class RejectReasonDownPayment(models.TransientModel): _name = 'reject.reason.downpayment' _description = 'Wizard for Reject Reason Down Payment' |
