From 7b7e6e99fa88804a931125b500d02ac23082147c Mon Sep 17 00:00:00 2001 From: FIN-IT_AndriFP Date: Wed, 7 Jan 2026 12:44:00 +0700 Subject: (andri) add cancel PUM reimburse --- .../models/advance_payment_request.py | 46 ++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'indoteknik_custom/models/advance_payment_request.py') diff --git a/indoteknik_custom/models/advance_payment_request.py b/indoteknik_custom/models/advance_payment_request.py index f973a9da..d0805598 100644 --- a/indoteknik_custom/models/advance_payment_request.py +++ b/indoteknik_custom/models/advance_payment_request.py @@ -55,6 +55,7 @@ class AdvancePaymentRequest(models.Model): ('pengajuan2', 'Menunggu Approval AP'), ('pengajuan3', 'Menunggu Approval Pimpinan'), ('approved', 'Approved'), + ('cancel','Cancel') ], string='Status', default='draft', tracking=3, index=True, track_visibility='onchange') @@ -816,6 +817,51 @@ class AdvancePaymentRequest(models.Model): rec._compute_grand_total_reimburse() rec.nominal = rec.grand_total_reimburse return rec + + def action_open_cancel_wizard(self): + """Membuka Wizard Pop-up untuk Cancel PUM/Reimburse""" + self.ensure_one() + + if self.move_id: + raise UserError(_("Pengajuan tidak dapat dibatalkan karena Journal sudah terbentuk.")) + + if self.settlement_ids and any(s.status != 'draft' for s in self.settlement_ids): + raise UserError(_("Pengajuan tidak dapat dibatalkan karena sudah ada proses realisasi.")) + + return { + 'name': _('Alasan Pembatalan'), + 'type': 'ir.actions.act_window', + 'res_model': 'advance.payment.cancel.wizard', + 'view_mode': 'form', + 'target': 'new', + 'context': { + 'default_request_id': self.id, + } + } + +class AdvancePaymentCancelWizard(models.TransientModel): + _name = 'advance.payment.cancel.wizard' + _description = 'Wizard untuk Membatalkan PUM/Reimburse' + + request_id = fields.Many2one('advance.payment.request', string='Dokumen', readonly=True) + reason = fields.Text(string='Alasan Pembatalan', required=True) + + def action_confirm_cancel(self): + self.ensure_one() + request = self.request_id + if request.move_id: + raise UserError("Tidak bisa melakukan cancel karena Jurnal (Move ID) sudah terbentuk.") + + request.write({'status': 'cancel'}) + + request.message_post( + body=f"Pengajuan telah DIBATALKAN oleh {self.env.user.name}.
" + f"Alasan: {self.reason}", + message_type="comment", + subtype_xmlid="mail.mt_note", + ) + + return {'type': 'ir.actions.act_window_close'} class AdvancePaymentUsageLine(models.Model): -- cgit v1.2.3 From 6c5e3f59d14efe691e581fb7524a013737215fb3 Mon Sep 17 00:00:00 2001 From: FIN-IT_AndriFP Date: Thu, 15 Jan 2026 14:36:40 +0700 Subject: (andri) add cancel pada status payment reimburse --- indoteknik_custom/models/advance_payment_request.py | 2 ++ 1 file changed, 2 insertions(+) (limited to 'indoteknik_custom/models/advance_payment_request.py') diff --git a/indoteknik_custom/models/advance_payment_request.py b/indoteknik_custom/models/advance_payment_request.py index d0805598..ed0b0809 100644 --- a/indoteknik_custom/models/advance_payment_request.py +++ b/indoteknik_custom/models/advance_payment_request.py @@ -62,6 +62,7 @@ class AdvancePaymentRequest(models.Model): status_pay_down_payment = fields.Selection([ ('pending', 'Pending'), ('payment', 'Payment'), + ('cancel','Cancel') ], string='Status Pembayaran', default='pending', tracking=3) name_approval_departement = fields.Char(string='Approval Departement') @@ -853,6 +854,7 @@ class AdvancePaymentCancelWizard(models.TransientModel): raise UserError("Tidak bisa melakukan cancel karena Jurnal (Move ID) sudah terbentuk.") request.write({'status': 'cancel'}) + request.write({'status_pay_down_payment': 'cancel'}) request.message_post( body=f"Pengajuan telah DIBATALKAN oleh {self.env.user.name}.
" -- cgit v1.2.3 From 750cdae1141d0039ab2c8d5796c5fb7bb2726bcc Mon Sep 17 00:00:00 2001 From: FIN-IT_AndriFP Date: Mon, 2 Feb 2026 14:54:14 +0700 Subject: (andri) fix compute when PUM is canceled --- indoteknik_custom/models/advance_payment_request.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'indoteknik_custom/models/advance_payment_request.py') diff --git a/indoteknik_custom/models/advance_payment_request.py b/indoteknik_custom/models/advance_payment_request.py index ed0b0809..8cadb1b6 100644 --- a/indoteknik_custom/models/advance_payment_request.py +++ b/indoteknik_custom/models/advance_payment_request.py @@ -641,10 +641,16 @@ class AdvancePaymentRequest(models.Model): today = date.today() for rec in self: - current_days = rec.days_remaining or 0 - current_due_date = rec.estimated_return_date or False - if rec.type_request == 'pum': - is_settlement_approved = any(s.status == 'approved' for s in rec.settlement_ids) + # current_days = rec.days_remaining or 0 + # current_due_date = rec.estimated_return_date or False + current_days = 0 + current_due_date = False + + is_settlement_approved = any(s.status == 'approved' for s in rec.settlement_ids) + is_pum_canceled = (rec.status == 'cancel') + + if rec.type_request == 'pum' and not is_pum_canceled and not is_settlement_approved: + if not is_settlement_approved: due_date = False -- cgit v1.2.3