diff options
| author | Indoteknik . <it@fixcomart.co.id> | 2025-07-23 11:06:12 +0700 |
|---|---|---|
| committer | Indoteknik . <it@fixcomart.co.id> | 2025-07-23 11:06:12 +0700 |
| commit | d02c3d5d0522e6ec5a43d1380c078f0dd5fd1275 (patch) | |
| tree | 44d12ba59e29d9eea91a119abdbfbadc6447a1ed /indoteknik_custom/models/down_payment.py | |
| parent | 7e6927b4fd7bcd9981ce56f3fc24f8a1b685be0d (diff) | |
(andri) add reject & set to draft Pengajuan PUM
Diffstat (limited to 'indoteknik_custom/models/down_payment.py')
| -rw-r--r-- | indoteknik_custom/models/down_payment.py | 55 |
1 files changed, 50 insertions, 5 deletions
diff --git a/indoteknik_custom/models/down_payment.py b/indoteknik_custom/models/down_payment.py index afb8ca73..8f449566 100644 --- a/indoteknik_custom/models/down_payment.py +++ b/indoteknik_custom/models/down_payment.py @@ -95,6 +95,8 @@ class DownPayment(models.Model): move_id = fields.Many2one('account.move', string='Journal Entries', domain=[('move_type', '=', 'entry')]) is_cab_visible = fields.Boolean(string='Is Journal Uang Muka Visible', compute='_compute_is_cab_visible') + reason_reject = fields.Text(string='Alasan Penolakan') + @api.depends('move_id.state') def _compute_is_cab_visible(self): for rec in self: @@ -268,13 +270,42 @@ class DownPayment(models.Model): def action_reject(self): - # Logic untuk konfirmasi pembayaran - return + return { + 'type': 'ir.actions.act_window', + 'name': 'Alasan Penolakan', + 'res_model': 'reject.reason.downpayment', + 'view_mode': 'form', + 'target': 'new', + 'context': {'default_request_id': self.id}, + } def action_draft(self): for record in self: - record.status = record.last_status if record.last_status else 'draft' - return + # Pastikan hanya yang statusnya 'reject' yang bisa di-reset + if record.status != 'reject': + raise UserError("Hanya data dengan status 'Reject' yang bisa dikembalikan ke Draft atau status sebelumnya.") + + # Jika ada last_status, gunakan itu; jika tidak, fallback ke 'draft' + new_status = record.last_status or 'draft' + + # Reset field-field approval & alasan reject + record.write({ + 'status': new_status, + 'reason_reject': False, + 'last_status': False, + 'name_approval_departement': False, + 'name_approval_ap': False, + 'name_approval_pimpinan': False, + 'date_approved_department': False, + 'date_approved_ap': False, + 'date_approved_pimpinan': False, + 'position_department': False, + 'position_ap': False, + 'position_pimpinan': False, + }) + + record.message_post(body=f"Status dikembalikan ke <b>{new_status.capitalize()}</b> oleh {self.env.user.name}.") + def action_ap_only(self): # if self.env.user.id != 23: @@ -657,7 +688,21 @@ class RealizationDownPayment(models.Model): # rec.message_post(body=f"Approval oleh {self.env.user.name} pada tahap <b>{rec.status}</b>.") - +class RejectReasonDownPayment(models.TransientModel): + _name = 'reject.reason.downpayment' + _description = 'Wizard for Reject Reason Down Payment' + + request_id = fields.Many2one('down.payment', string='Pengajuan PUM') + reason_reject = fields.Text(string='Alasan Penolakan', required=True) + + def confirm_reject(self): + if self.request_id: + self.request_id.write({ + 'status': 'reject', + 'last_status': self.request_id.status, + 'reason_reject': self.reason_reject, + }) + return {'type': 'ir.actions.act_window_close'} class DownPaymentApOnly(models.TransientModel): _name = 'down.payment.ap.only' |
