summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models
diff options
context:
space:
mode:
authorMiqdad <ahmadmiqdad27@gmail.com>2025-07-22 16:42:10 +0700
committerMiqdad <ahmadmiqdad27@gmail.com>2025-07-22 16:42:10 +0700
commit1de8ad79dd0f0832dd14de9c1d004884f153bec4 (patch)
treecfba46f7d80b67243b4cee52101356944e1dd382 /indoteknik_custom/models
parent69f0fbf98183ea00bb069df3ecd40e91df7081c3 (diff)
<miqdad> Chatter and sequence
Diffstat (limited to 'indoteknik_custom/models')
-rw-r--r--indoteknik_custom/models/tukar_guling.py40
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.")