summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiqdad <ahmadmiqdad27@gmail.com>2025-07-23 13:34:28 +0700
committerMiqdad <ahmadmiqdad27@gmail.com>2025-07-23 13:34:28 +0700
commitaa3b585bb0531c8d7af4402a58dd297ab2a17e9a (patch)
treed18093b6a214a72885dfe5cf4a80797ec73f290e
parentc7c058bcffef14b7fc08ee459d4198f1dd89dfc2 (diff)
<miqdad> approved date
-rw-r--r--indoteknik_custom/models/tukar_guling_po.py21
-rw-r--r--indoteknik_custom/views/tukar_guling_po.xml3
2 files changed, 18 insertions, 6 deletions
diff --git a/indoteknik_custom/models/tukar_guling_po.py b/indoteknik_custom/models/tukar_guling_po.py
index 6a349a09..3f072b88 100644
--- a/indoteknik_custom/models/tukar_guling_po.py
+++ b/indoteknik_custom/models/tukar_guling_po.py
@@ -3,6 +3,7 @@ from email.policy import default
from odoo import models, fields, api, _
from odoo.exceptions import UserError, ValidationError
import logging
+from datetime import datetime
_logger = logging.getLogger(__name__)
@@ -24,22 +25,25 @@ class TukarGulingPO(models.Model):
)
name = fields.Char('Number', required=True, copy=False, readonly=True, default='New')
date = fields.Datetime('Date', default=fields.Datetime.now, required=True)
+ date_purchase = fields.Datetime('Date Approve Purchase', required=True, readonly=True)
+ date_finance = fields.Datetime('Date Approve Finance', required=True, readonly=True)
+ date_logistic = fields.Datetime('Date Approve Logistic', required=True, readonly=True)
operations = fields.Many2one(
'stock.picking',
string='Operations',
domain=[
('picking_type_id.id', 'in', [75, 28]),
('state', '=', 'done')
- ], help='Nomor BU INPUT atau BU PUT'
+ ], help='Nomor BU INPUT atau BU PUT', tracking=3
)
- ba_num = fields.Char('Nomor BA')
+ ba_num = fields.Char('Nomor BA', tracking=3)
return_type = fields.Selection([
('revisi_po', 'Revisi PO'),
('tukar_guling', 'Tukar Guling'),
- ], string='Return Type', required=True)
- notes = fields.Text('Notes')
+ ], string='Return Type', required=True, tracking=3)
+ notes = fields.Text('Notes', tracking=3)
tukar_guling_po_id = fields.Many2one('tukar.guling.po', string='Tukar Guling PO', ondelete='cascade')
- line_ids = fields.One2many('tukar.guling.line.po', 'tukar_guling_po_id', string='Product Lines')
+ line_ids = fields.One2many('tukar.guling.line.po', 'tukar_guling_po_id', string='Product Lines', tracking=3)
state = fields.Selection([
('draft', 'Draft'),
('approval_purchase', 'Approval Purchasing'),
@@ -47,7 +51,7 @@ class TukarGulingPO(models.Model):
('approval_logistic', 'Approval Logistic'),
('done', 'Done'),
('cancel', 'Cancel'),
- ], string='Status', default='draft')
+ ], string='Status', default='draft', tracking=3)
@api.model
def create(self, vals):
@@ -375,23 +379,28 @@ class TukarGulingPO(models.Model):
if not self.return_type:
raise UserError("Return Type harus diisi!")
+ now = datetime.now()
+
# Cek hak akses berdasarkan state
for rec in self:
if rec.state == 'approval_purchase':
if not rec.env.user.has_group('indoteknik_custom.group_role_sales'):
raise UserError("Hanya Sales Manager yang boleh approve tahap ini.")
rec.state = 'approval_finance'
+ rec.date_purchase = now
elif rec.state == 'approval_finance':
if not rec.env.user.has_group('indoteknik_custom.group_role_fat'):
raise UserError("Hanya Finance Manager yang boleh approve tahap ini.")
rec.state = 'approval_logistic'
+ rec.date_finance = now
elif rec.state == 'approval_logistic':
if not rec.env.user.has_group('indoteknik_custom.group_role_logistic'):
raise UserError("Hanya Logistic Manager yang boleh approve tahap ini.")
rec.state = 'done'
rec._create_pickings()
+ rec.date_logistic = now
else:
raise UserError("Status ini tidak bisa di-approve.")
diff --git a/indoteknik_custom/views/tukar_guling_po.xml b/indoteknik_custom/views/tukar_guling_po.xml
index 266f4eea..78bd9479 100644
--- a/indoteknik_custom/views/tukar_guling_po.xml
+++ b/indoteknik_custom/views/tukar_guling_po.xml
@@ -91,6 +91,9 @@
<group>
<field name="ba_num" string="Nomor BA"/>
<field name="notes"/>
+ <field name="date_purchase"/>
+ <field name="date_finance"/>
+ <field name="date_logistic"/>
</group>
</group>
<!-- Product Lines -->