diff options
| author | IT Fixcomart <it@fixcomart.co.id> | 2026-01-07 05:46:16 +0000 |
|---|---|---|
| committer | IT Fixcomart <it@fixcomart.co.id> | 2026-01-07 05:46:16 +0000 |
| commit | 33f7dd2834c7ec70ac927878bb12b104ddb232a2 (patch) | |
| tree | 274e03ba64c09a8dd9c1483cb192b40c3be23c09 | |
| parent | 7b0a84a6e834fc20784812536e17adb5f7817cc4 (diff) | |
| parent | 7b7e6e99fa88804a931125b500d02ac23082147c (diff) | |
Merged in pum-v4 (pull request #476)
(andri) add cancel PUM reimburse
| -rw-r--r-- | indoteknik_custom/models/advance_payment_request.py | 46 | ||||
| -rwxr-xr-x | indoteknik_custom/security/ir.model.access.csv | 1 | ||||
| -rw-r--r-- | indoteknik_custom/views/advance_payment_request.xml | 35 |
3 files changed, 82 insertions, 0 deletions
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 <b>DIBATALKAN</b> oleh {self.env.user.name}.<br/>" + f"<b>Alasan:</b> {self.reason}", + message_type="comment", + subtype_xmlid="mail.mt_note", + ) + + return {'type': 'ir.actions.act_window_close'} class AdvancePaymentUsageLine(models.Model): diff --git a/indoteknik_custom/security/ir.model.access.csv b/indoteknik_custom/security/ir.model.access.csv index bc8dc2a4..d501de1a 100755 --- a/indoteknik_custom/security/ir.model.access.csv +++ b/indoteknik_custom/security/ir.model.access.csv @@ -199,6 +199,7 @@ access_advance_payment_settlement,access.advance.payment.settlement,model_advanc access_advance_payment_usage_line,access.advance.payment.usage.line,model_advance_payment_usage_line,,1,1,1,1 access_advance_payment_create_bill,access.advance.payment.create.bill,model_advance_payment_create_bill,,1,1,1,1 access_create_reimburse_cab_wizard_user,create.reimburse.cab.wizard user,model_create_reimburse_cab_wizard,,1,1,1,1 +access_advance_payment_cancel_wizard,advance.payment.cancel.wizard,model_advance_payment_cancel_wizard,,1,1,1,1 access_purchasing_job_seen,purchasing.job.seen,model_purchasing_job_seen,,1,1,1,1 access_tukar_guling_all_users,tukar.guling.all.users,model_tukar_guling,base.group_user,1,1,1,1 diff --git a/indoteknik_custom/views/advance_payment_request.xml b/indoteknik_custom/views/advance_payment_request.xml index dd6370c7..5abcf996 100644 --- a/indoteknik_custom/views/advance_payment_request.xml +++ b/indoteknik_custom/views/advance_payment_request.xml @@ -44,6 +44,11 @@ ('is_cab_visible', '=', True), ('type_request', '!=', 'reimburse') ]}"/> + <button name="action_open_cancel_wizard" + string="Cancel" + type="object" + class="btn-danger" + attrs="{'invisible': [('status', 'in', ['draft', 'cancel'])]}"/> <field name="status" widget="statusbar" statusbar_visible="draft,pengajuan1,pengajuan2,pengajuan3,approved" statusbar_colors='{"reject":"red"}' @@ -316,4 +321,34 @@ <field name="view_id" ref="view_form_create_reimburse_cab_wizard"/> <field name="target">new</field> </record> + + <record id="view_advance_payment_cancel_wizard_form" model="ir.ui.view"> + <field name="name">advance.payment.cancel.wizard.form</field> + <field name="model">advance.payment.cancel.wizard</field> + <field name="arch" type="xml"> + <form string="Batalkan Pengajuan"> + <sheet> + <group> + <div class="alert alert-warning" role="alert" style="margin-bottom: 10px;"> + Apakah Anda yakin ingin membatalkan pengajuan ini? + Silakan isi alasan pembatalan di bawah ini. + </div> + </group> + <group> + <field name="reason"/> + </group> + </sheet> + <footer> + <button name="action_confirm_cancel" + string="Konfirmasi Cancel" + type="object" + class="btn-danger"/> + + <button string="Tutup" + class="btn-secondary" + special="cancel"/> + </footer> + </form> + </field> + </record> </odoo>
\ No newline at end of file |
