diff options
| author | FIN-IT_AndriFP <it@fixcomart.co.id> | 2025-10-14 13:23:26 +0700 |
|---|---|---|
| committer | FIN-IT_AndriFP <it@fixcomart.co.id> | 2025-10-14 13:23:26 +0700 |
| commit | 545d32974a0d18a4a6560ad222ca5ab7cd0552f6 (patch) | |
| tree | b8e09100b70c3d1daf8ea8e2b0fa95ee6133b6af | |
| parent | 8934f93e02ca6c0616c7932b4cc615adbde3d3e0 (diff) | |
(andri) add realisasi di oe button, revisi make CAB, add date upload bukti tf
| -rw-r--r-- | indoteknik_custom/models/advance_payment_request.py | 64 | ||||
| -rw-r--r-- | indoteknik_custom/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 <b>dikonfirmasi</b> oleh <b>AP</b>.", @@ -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 @@ <header> <button name="action_realisasi_pum" type="object" - string="Settlement" + string="Realisasi" class="btn-primary" - attrs="{'invisible': [('status', 'not in', 'approved')]}"/> + attrs="{'invisible': ['|', ('status', '!=', 'approved'), ('has_settlement', '=', True)]}"/> <button name="action_draft" string="Reset to Draft" attrs="{'invisible': [('status', '!=', 'reject')]}" @@ -43,7 +43,16 @@ <sheet> <widget name="web_ribbon" title="Payment" attrs="{'invisible': ['|', ('status_pay_down_payment', '!=', 'payment'), ('status', '=', 'draft')]}"/> <widget name="web_ribbon" title="Pending" bg_color="bg-danger" attrs="{'invisible': ['|', ('status_pay_down_payment', '!=', 'pending'), ('status', '=', 'draft')]}"/> - <div class="oe_button_box" name="button_box"> + <div class="oe_button_box" name="button_box" style="right: 150px;"> + <field name="has_settlement" invisible="1"/> + <button name="action_realisasi_pum" + type="object" + class="oe_stat_button" + icon="fa-check-square-o" + attrs="{'invisible': [('status', '!=', 'approved')]}"> + <!-- <field name="settlement_ids" widget="statinfo" string="Realisasi PUM"/> --> + <field name="settlement_name" class="o_stat_text" nolabel="1"/> + </button> <field name="is_cab_visible" invisible="1"/> <button type="object" name="action_view_journal_uangmuka" @@ -81,8 +90,8 @@ <field name="apr_perjalanan" attrs="{'invisible': [('type_request', '=', 'reimburse')]}"/> <field name="date_back_to_office" attrs="{'invisible': [('apr_perjalanan', '=', False)]}"/> <p style="font-size: 10px; color: grey; font-style: italic" attrs="{'invisible': [('apr_perjalanan', '=', False)]}">*Setelah tanggal kembali, pemohon diharapkan untuk segera memproses realisasi PUM</p> - <field name="estimated_return_date" readonly="1" widget="badge"/> - <field name="days_remaining" readonly="1" widget="badge"/> + <field name="estimated_return_date" readonly="1" widget="badge" attrs="{'invisible': [('type_request', '=', 'reimburse')]}"/> + <field name="days_remaining" readonly="1" widget="badge" attrs="{'invisible': [('type_request', '=', 'reimburse')]}"/> <field name="approved_by" readonly="1"/> <field name="create_date" readonly="1"/> <field name="status_pay_down_payment" @@ -93,6 +102,7 @@ <field name="reason_reject" attrs="{'invisible': [('status', '!=', 'reject')], 'readonly': True}"/> </group> <group string="Bukti Transfer"> + <field name="upload_attachment_date" readonly="1"/> <field name="attachment_type" attrs="{'readonly': [('status', '=', 'approved')]}"/> <field name="attachment_file_pdf" filename="attachment_filename" widget="pdf_viewer" |
