diff options
| author | Indoteknik . <it@fixcomart.co.id> | 2025-07-25 17:43:00 +0700 |
|---|---|---|
| committer | Indoteknik . <it@fixcomart.co.id> | 2025-07-25 17:43:00 +0700 |
| commit | 213d4a2e63f393b08b49d9b0da1f30396f717c77 (patch) | |
| tree | 19997e22891a28d7be1e220b1a9b10a9f6c0564d | |
| parent | 1f5366bece1c1237d078c63926b5f95de49b2c28 (diff) | |
(andri) fix days remaining terhitung dari tanggal pulang hingga 7 hari kedepan + fix status
| -rw-r--r-- | indoteknik_custom/models/down_payment.py | 45 | ||||
| -rw-r--r-- | indoteknik_custom/views/down_payment.xml | 1 |
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')]}"/> |
