summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIndoteknik . <it@fixcomart.co.id>2025-07-25 17:43:00 +0700
committerIndoteknik . <it@fixcomart.co.id>2025-07-25 17:43:00 +0700
commit213d4a2e63f393b08b49d9b0da1f30396f717c77 (patch)
tree19997e22891a28d7be1e220b1a9b10a9f6c0564d
parent1f5366bece1c1237d078c63926b5f95de49b2c28 (diff)
(andri) fix days remaining terhitung dari tanggal pulang hingga 7 hari kedepan + fix status
-rw-r--r--indoteknik_custom/models/down_payment.py45
-rw-r--r--indoteknik_custom/views/down_payment.xml1
2 files changed, 25 insertions, 21 deletions
diff --git a/indoteknik_custom/models/down_payment.py b/indoteknik_custom/models/down_payment.py
index 4ed7d91c..81f2044f 100644
--- a/indoteknik_custom/models/down_payment.py
+++ b/indoteknik_custom/models/down_payment.py
@@ -28,13 +28,23 @@ class DownPayment(models.Model):
bank_account = fields.Char(string='No. Rekening', tracking=3, required=True)
detail_note = fields.Text(string='Keterangan Penggunaan Rinci', tracking=3)
+ date_back_to_office = fields.Date(
+ string='Tanggal Kembali ke Kantor',
+ tracking=3,
+ required=True
+ )
+
estimated_return_date = fields.Date(
- string='Estimasi Batas Durasi Pengajuan'
+ string='Batas Pengajuan',
+ help='Tanggal batas maksimal pengajuan realisasi setelah kembali ke kantor. '
+ '7 hari setelah tanggal kembali.'
)
days_remaining = fields.Integer(
- string='Due Date',
+ string='Sisa Hari Pengajuan',
compute='_compute_days_remaining',
+ help='Sisa hari batas maksimal pengajuan realisasi setelah kembali ke kantor. '
+ '7 hari setelah tanggal kembali.'
)
status = fields.Selection([
@@ -292,7 +302,7 @@ class DownPayment(models.Model):
raise UserError("Hanya data dengan status 'Reject' yang bisa dikembalikan ke Draft atau status sebelumnya.")
# Jika ada last_status, gunakan itu; jika tidak, fallback ke 'draft'
- new_status = record.last_status or 'draft'
+ new_status = 'pengajuan1'
# Reset field-field approval & alasan reject
record.write({
@@ -336,22 +346,26 @@ class DownPayment(models.Model):
}
- @api.depends('create_date')
+ @api.depends('date_back_to_office')
def _compute_days_remaining(self):
today = date.today()
for rec in self:
- if rec.create_date:
- due_date = rec.create_date.date() + timedelta(days=7)
- rec.days_remaining = (due_date - today).days
+ if rec.date_back_to_office:
+ due_date = rec.date_back_to_office + timedelta(days=7)
+ rec.estimated_return_date = due_date
+
+ # Jika hari ini sebelum tanggal kembali, maka anggap belum mulai dihitung
+ effective_today = max(today, rec.date_back_to_office)
+ rec.days_remaining = (due_date - effective_today).days
else:
+ rec.estimated_return_date = False
rec.days_remaining = 0
+
@api.model
def create(self, vals):
if not vals.get('number') or vals['number'] == 'New Draft':
vals['number'] = self.env['ir.sequence'].next_by_code('down.payment') or 'New Draft'
- if not vals.get('estimated_return_date'):
- vals['estimated_return_date'] = date.today() + timedelta(days=7)
vals['status'] = 'pengajuan1'
return super(DownPayment, self).create(vals)
@@ -455,22 +469,11 @@ class RealizationDownPayment(models.Model):
position_pimpinan = fields.Char(string='Position Pimpinan', tracking=True)
status = fields.Selection([
- ('draft', 'Draft'),
- ('pengajuan1', 'Menunggu Approval Departement'),
- ('pengajuan2', 'Menunggu Pengecekan AP'),
- ('pengajuan3', 'Menunggu Approval Pimpinan'),
- ('approved', 'Approved'),
- ('reject', 'Rejected')
- ], string='Status', default='draft', tracking=3, index=True, track_visibility='onchange')
-
- last_status = fields.Selection([
- ('draft', 'Draft'),
('pengajuan1', 'Menunggu Approval Departement'),
('pengajuan2', 'Menunggu Pengecekan AP'),
('pengajuan3', 'Menunggu Approval Pimpinan'),
('approved', 'Approved'),
- ('reject', 'Rejected')
- ], string='Status')
+ ], string='Status', default='pengajuan1', tracking=3, index=True, track_visibility='onchange')
done_status = fields.Selection([
('remaining', 'Remaining'),
diff --git a/indoteknik_custom/views/down_payment.xml b/indoteknik_custom/views/down_payment.xml
index 467697a4..49306550 100644
--- a/indoteknik_custom/views/down_payment.xml
+++ b/indoteknik_custom/views/down_payment.xml
@@ -75,6 +75,7 @@
decoration-danger="status_pay_down_payment == 'pending'"
widget="badge"/>
<field name="create_date" readonly="1"/>
+ <field name="date_back_to_office"/>
<field name="estimated_return_date" readonly="1" widget="badge"/>
<field name="days_remaining" readonly="1" widget="badge"/>
<field name="detail_note" attrs="{'readonly': [('status', '=', 'approved')]}"/>