diff options
| author | Miqdad <ahmadmiqdad27@gmail.com> | 2025-07-23 13:34:28 +0700 |
|---|---|---|
| committer | Miqdad <ahmadmiqdad27@gmail.com> | 2025-07-23 13:34:28 +0700 |
| commit | aa3b585bb0531c8d7af4402a58dd297ab2a17e9a (patch) | |
| tree | d18093b6a214a72885dfe5cf4a80797ec73f290e | |
| parent | c7c058bcffef14b7fc08ee459d4198f1dd89dfc2 (diff) | |
<miqdad> approved date
| -rw-r--r-- | indoteknik_custom/models/tukar_guling_po.py | 21 | ||||
| -rw-r--r-- | indoteknik_custom/views/tukar_guling_po.xml | 3 |
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 --> |
