summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFIN-IT_AndriFP <it@fixcomart.co.id>2025-10-14 13:23:26 +0700
committerFIN-IT_AndriFP <it@fixcomart.co.id>2025-10-14 13:23:26 +0700
commit545d32974a0d18a4a6560ad222ca5ab7cd0552f6 (patch)
treeb8e09100b70c3d1daf8ea8e2b0fa95ee6133b6af
parent8934f93e02ca6c0616c7932b4cc615adbde3d3e0 (diff)
(andri) add realisasi di oe button, revisi make CAB, add date upload bukti tf
-rw-r--r--indoteknik_custom/models/advance_payment_request.py64
-rw-r--r--indoteknik_custom/views/advance_payment_request.xml20
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"