diff options
| author | Miqdad <ahmadmiqdad27@gmail.com> | 2025-07-22 16:42:10 +0700 |
|---|---|---|
| committer | Miqdad <ahmadmiqdad27@gmail.com> | 2025-07-22 16:42:10 +0700 |
| commit | 1de8ad79dd0f0832dd14de9c1d004884f153bec4 (patch) | |
| tree | cfba46f7d80b67243b4cee52101356944e1dd382 /indoteknik_custom/models | |
| parent | 69f0fbf98183ea00bb069df3ecd40e91df7081c3 (diff) | |
<miqdad> Chatter and sequence
Diffstat (limited to 'indoteknik_custom/models')
| -rw-r--r-- | indoteknik_custom/models/tukar_guling.py | 40 |
1 files changed, 31 insertions, 9 deletions
diff --git a/indoteknik_custom/models/tukar_guling.py b/indoteknik_custom/models/tukar_guling.py index e546ad9c..f27446d0 100644 --- a/indoteknik_custom/models/tukar_guling.py +++ b/indoteknik_custom/models/tukar_guling.py @@ -1,15 +1,25 @@ from odoo import models, fields, api, _ from odoo.exceptions import UserError, ValidationError import logging +from datetime import datetime _logger = logging.getLogger(__name__) +#TODO +# 1. tracking status dokumen BU [X] +# 2. ganti nama dokumen +# 3. Tracking ketika create dokumen [X] +# 4. Tracking ketika ganti field operations, date approval (sales, finance, logistic) [X] +# 5. Ganti proses approval ke Sales, Finance, Logistic [X] +# 6. Make sure bu pick dan out tidak bisa diedit ketika ort dan srt blm done +# 7. change approval class TukarGuling(models.Model): _name = 'tukar.guling' _description = 'Tukar Guling' _order = 'date desc, id desc' _rec_name = 'name' + _inherit = ['mail.thread', 'mail.activity.mixin'] origin = fields.Char(string='Origin SO') if_so = fields.Boolean('Is SO', default=True) @@ -38,24 +48,28 @@ class TukarGuling(models.Model): ('state', '=', 'done'), ('linked_manual_bu_out', '!=', 'done'), ], - help='Nomor BU/OUT atau BU/PICK' + help='Nomor BU/OUT atau BU/PICK', tracking=3, + required=True ) ba_num = fields.Text('Nomor BA') notes = fields.Text('Notes') return_type = fields.Selection(String='Return Type', selection=[ ('tukar_guling', 'Tukar Guling'), # -> barang yang sama - ('revisi_so', 'Revisi SO')], required=True) + ('revisi_so', 'Revisi SO')], required=True, tracking=3) state = fields.Selection(string='Status', selection=[ ('draft', 'Draft'), ('approval_sales', ' Approval Sales'), - ('approval_logistic', 'Approval Logistic'), ('approval_finance', 'Approval Finance'), + ('approval_logistic', 'Approval Logistic'), ('done', 'Done'), ('cancel', 'Canceled') ], default='draft', tracking=True, required=True) line_ids = fields.One2many('tukar.guling.line', 'tukar_guling_id', string='Product Lines') mapping_koli_ids = fields.One2many('tukar.guling.mapping.koli', 'tukar_guling_id', string='Mapping Koli') + date_done = fields.Datetime('Approved Date Finance', tracking=3, readonly=True) + date_sales = fields.Datetime('Approved Date Sales', tracking=3, readonly=True) + date_logistic = fields.Datetime('Approved Date Logistic', tracking=3, readonly=True) def _check_mapping_koli(self): for record in self: @@ -295,7 +309,9 @@ class TukarGuling(models.Model): if picking.origin: vals['origin'] = picking.origin - return super(TukarGuling, self).create(vals) + res = super(TukarGuling, self).create(vals) + res.message_post(body=_("CCM Created By %s" ) % self.env.user.name) + return res def copy(self, default=None): if default is None: @@ -457,23 +473,29 @@ class TukarGuling(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_sales': 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_logistic' - - 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 = 'approval_finance' + rec.date_sales = 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 = 'done' + rec.date_done = now rec._create_pickings() + + 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 = 'approval_finance' + rec.date_logistic = now + else: raise UserError("Status ini tidak bisa di-approve.") |
