From 545d32974a0d18a4a6560ad222ca5ab7cd0552f6 Mon Sep 17 00:00:00 2001 From: FIN-IT_AndriFP Date: Tue, 14 Oct 2025 13:23:26 +0700 Subject: (andri) add realisasi di oe button, revisi make CAB, add date upload bukti tf --- .../models/advance_payment_request.py | 64 ++++++++++++++++------ .../views/advance_payment_request.xml | 20 +++++-- 2 files changed, 63 insertions(+), 21 deletions(-) diff --git a/indoteknik_custom/models/advance_payment_request.py b/indoteknik_custom/models/advance_payment_request.py index 5e8bd88e..c511f2e7 100644 --- a/indoteknik_custom/models/advance_payment_request.py +++ b/indoteknik_custom/models/advance_payment_request.py @@ -43,7 +43,7 @@ class AdvancePaymentRequest(models.Model): ) days_remaining = fields.Integer( - string='Sisa Hari Pengajuan', + string='Sisa Hari Realisasi', compute='_compute_days_remaining', help='Sisa hari batas maksimal pengajuan realisasi setelah kembali ke kantor. ' '7 hari setelah tanggal kembali.' @@ -136,6 +136,33 @@ class AdvancePaymentRequest(models.Model): apr_perjalanan = fields.Boolean(string = "PUM Perjalanan?", default = False) reimburse_line_ids = fields.One2many('reimburse.line', 'request_id', string='Rincian Reimburse') + upload_attachment_date = fields.Datetime(string='Upload Attachment Date', tracking=3) + settlement_ids = fields.One2many( + 'advance.payment.settlement', + 'pum_id', + string='Realisasi' + ) + has_settlement = fields.Boolean( + string='Has Settlement', + compute='_compute_has_settlement' + ) + settlement_name = fields.Char( + string="Nama Realisasi", + compute='_compute_settlement_name' + ) + + @api.depends('settlement_ids') + def _compute_has_settlement(self): + for rec in self: + rec.has_settlement = bool(rec.settlement_ids) + + @api.depends('settlement_ids', 'settlement_ids.name') + def _compute_settlement_name(self): + for request in self: + if request.settlement_ids: + request.settlement_name = request.settlement_ids[0].name + else: + request.settlement_name = False @api.onchange('is_represented') def _onchange_is_represented(self): @@ -281,9 +308,9 @@ class AdvancePaymentRequest(models.Model): def action_view_journal_uangmuka(self): self.ensure_one() - ap_user_ids = [23, 9468] - if self.env.user.id not in ap_user_ids: - raise UserError('Hanya User AP yang dapat menggunakan fitur ini.') + # ap_user_ids = [23, 9468] + # if self.env.user.id not in ap_user_ids: + # raise UserError('Hanya User AP yang dapat menggunakan fitur ini.') if not self.move_id: raise UserError("Journal Uang Muka belum tersedia.") @@ -403,6 +430,9 @@ class AdvancePaymentRequest(models.Model): def action_confirm_payment(self): + jakarta_tz = pytz.timezone('Asia/Jakarta') + now = datetime.now(jakarta_tz).replace(tzinfo=None) + ap_user_ids = [23, 9468] if self.env.user.id not in ap_user_ids: raise UserError('Hanya User AP yang dapat menggunakan fitur ini.') @@ -415,6 +445,7 @@ class AdvancePaymentRequest(models.Model): ) rec.status_pay_down_payment = 'payment' + rec.upload_attachment_date = now rec.message_post( body="Status pembayaran telah dikonfirmasi oleh AP.", @@ -555,9 +586,9 @@ class AdvancePaymentRequest(models.Model): def action_ap_only(self): self.ensure_one() - ap_user_ids = [23, 9468] # Ganti sesuai kebutuhan - if self.env.user.id not in ap_user_ids: - raise UserError('Hanya User AP yang dapat menggunakan fitur ini.') + # ap_user_ids = [23, 9468] # Ganti sesuai kebutuhan + # if self.env.user.id not in ap_user_ids: + # raise UserError('Hanya User AP yang dapat menggunakan fitur ini.') if self.move_id: raise UserError('CAB / Jurnal sudah pernah dibuat untuk PUM ini.') @@ -570,7 +601,7 @@ class AdvancePaymentRequest(models.Model): 'target': 'new', 'context': { 'default_nominal': self.nominal, - 'default_down_payment_id': self.id, + 'default_apr_id': self.id, } } @@ -850,6 +881,7 @@ class AdvancePaymentSettlement(models.Model): _name = 'advance.payment.settlement' _description = 'Advance Payment Settlement' _inherit = ['mail.thread'] + _rec_name = 'name' pum_id = fields.Many2one('advance.payment.request', string='No PUM') name = fields.Char(string='Nama', readonly=True, tracking=3) @@ -1224,12 +1256,12 @@ class AdvancePaymentCreateBill(models.TransientModel): _name = 'advance.payment.create.bill' _description = 'Create Bill from Advance Payment' - down_payment_id = fields.Many2one('advance.payment.request', string='Down Payment', required=True) + apr_id = fields.Many2one('advance.payment.request', string='Advance Payment Request', required=True) account_id = fields.Many2one( 'account.account', string='Bank Intransit', required=True, domain="[('id', 'in', [573, 389, 392])]" # ID Bank Intransit ) - nominal = fields.Float(string='Nominal', related='down_payment_id.nominal') + nominal = fields.Float(string='Nominal', related='apr_id.nominal') def action_create_cab(self): self.ensure_one() @@ -1237,10 +1269,10 @@ class AdvancePaymentCreateBill(models.TransientModel): # if self.env.user.id != 23: # raise UserError('Hanya AP yang dapat menggunakan ini.') - dp = self.down_payment_id - partner_id = dp.user_id.partner_id.id + apr = self.apr_id + partner_id = apr.user_id.partner_id.id - ref_label = f'{dp.number} - Biaya {dp.detail_note or "-"}' + ref_label = f'{apr.number} - Biaya {apr.detail_note or "-"}' move = self.env['account.move'].create({ 'ref': ref_label, @@ -1251,7 +1283,7 @@ class AdvancePaymentCreateBill(models.TransientModel): 'account_id': 403, # Uang Muka Operasional 'partner_id': partner_id, 'name': ref_label, - 'debit': dp.nominal, + 'debit': apr.nominal, 'credit': 0, }), (0, 0, { @@ -1259,12 +1291,12 @@ class AdvancePaymentCreateBill(models.TransientModel): 'partner_id': partner_id, 'name': ref_label, 'debit': 0, - 'credit': dp.nominal, + 'credit': apr.nominal, }) ] }) - dp.move_id = move.id # jika ada field untuk menampung move_id + apr.move_id = move.id # jika ada field untuk menampung move_id return { 'name': _('Journal Entry'), diff --git a/indoteknik_custom/views/advance_payment_request.xml b/indoteknik_custom/views/advance_payment_request.xml index 297d2a7a..a8eec4f3 100644 --- a/indoteknik_custom/views/advance_payment_request.xml +++ b/indoteknik_custom/views/advance_payment_request.xml @@ -8,9 +8,9 @@