summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiqdad <ahmadmiqdad27@gmail.com>2025-07-22 19:51:47 +0700
committerMiqdad <ahmadmiqdad27@gmail.com>2025-07-22 19:51:47 +0700
commit158c89a5048669f46d561aef3505042cc8c68a37 (patch)
tree3fc14c01db0efed6a32060c0ca4276432c0cf011
parent1de8ad79dd0f0832dd14de9c1d004884f153bec4 (diff)
<miqdad> change approval flow
-rw-r--r--indoteknik_custom/models/tukar_guling.py48
-rw-r--r--indoteknik_custom/views/tukar_guling.xml7
2 files changed, 33 insertions, 22 deletions
diff --git a/indoteknik_custom/models/tukar_guling.py b/indoteknik_custom/models/tukar_guling.py
index f27446d0..2aaadecf 100644
--- a/indoteknik_custom/models/tukar_guling.py
+++ b/indoteknik_custom/models/tukar_guling.py
@@ -20,7 +20,8 @@ class TukarGuling(models.Model):
_order = 'date desc, id desc'
_rec_name = 'name'
_inherit = ['mail.thread', 'mail.activity.mixin']
-
+
+ partner_id = fields.Many2one('res.partner', string='Customer', readonly=True)
origin = fields.Char(string='Origin SO')
if_so = fields.Boolean('Is SO', default=True)
if_po = fields.Boolean('Is PO', default=False)
@@ -67,10 +68,15 @@ class TukarGuling(models.Model):
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_finance = 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)
+ # @api.onchange('operations')
+ # def get_partner_id(self):
+ # if self.operations and self.operations.partner_id and self.operations.partner_id.name:
+ # self.partner_id == self.operations.partner_id.name
+
def _check_mapping_koli(self):
for record in self:
if record.operations.picking_type_id.id == 29: # Only for BU/OUT
@@ -308,6 +314,8 @@ class TukarGuling(models.Model):
picking = self.env['stock.picking'].browse(vals['operations'])
if picking.origin:
vals['origin'] = picking.origin
+ if picking.partner_id:
+ vals['partner_id'] = picking.partner_id.id
res = super(TukarGuling, self).create(vals)
res.message_post(body=_("CCM Created By %s" ) % self.env.user.name)
@@ -430,12 +438,13 @@ class TukarGuling(models.Model):
if self._is_already_returned(self.operations):
raise UserError("BU ini sudah pernah diretur oleh dokumen lain.")
- for line in self.line_ids:
- mapping_lines = self.mapping_koli_ids.filtered(lambda x: x.product_id == line.product_id)
- total_qty = sum(l.qty_return for l in mapping_lines)
- if total_qty != line.product_uom_qty:
- raise UserError(
- _("Qty di Koli tidak sesuai dengan qty retur untuk produk %s") % line.product_id.display_name)
+ if self.operations.picking_type_id.id == 29:
+ for line in self.line_ids:
+ mapping_lines = self.mapping_koli_ids.filtered(lambda x: x.product_id == line.product_id)
+ total_qty = sum(l.qty_return for l in mapping_lines)
+ if total_qty != line.product_uom_qty:
+ raise UserError(
+ _("Qty di Koli tidak sesuai dengan qty retur untuk produk %s") % line.product_id.display_name)
self._check_invoice_on_revisi_so()
self._validate_product_lines()
@@ -453,12 +462,13 @@ class TukarGuling(models.Model):
operasi = self.operations.picking_type_id.id
tipe = self.return_type
- for line in self.line_ids:
- mapping_lines = self.mapping_koli_ids.filtered(lambda x: x.product_id == line.product_id)
- total_qty = sum(l.qty_return for l in mapping_lines)
- if total_qty != line.product_uom_qty:
- raise UserError(
- _("Qty di Koli tidak sesuai dengan qty retur untuk produk %s") % line.product_id.display_name)
+ if self.operations.picking_type_id.id == 29:
+ for line in self.line_ids:
+ mapping_lines = self.mapping_koli_ids.filtered(lambda x: x.product_id == line.product_id)
+ total_qty = sum(l.qty_return for l in mapping_lines)
+ if total_qty != line.product_uom_qty:
+ raise UserError(
+ _("Qty di Koli tidak sesuai dengan qty retur untuk produk %s") % line.product_id.display_name)
if operasi == 30 and self.operations.linked_manual_bu_out.state == 'done':
raise UserError("❌ Tidak bisa retur BU/PICK karena BU/OUT sudah done")
@@ -480,21 +490,21 @@ class TukarGuling(models.Model):
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'
+ 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()
+ 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 = 'approval_finance'
+ rec.state = 'done'
rec.date_logistic = now
+ rec._create_pickings()
else:
raise UserError("Status ini tidak bisa di-approve.")
diff --git a/indoteknik_custom/views/tukar_guling.xml b/indoteknik_custom/views/tukar_guling.xml
index 6b3492ae..95f36090 100644
--- a/indoteknik_custom/views/tukar_guling.xml
+++ b/indoteknik_custom/views/tukar_guling.xml
@@ -28,12 +28,12 @@
<field name="operations" string="Operations"/>
<field name="return_type" string="Return Type"/>
<field name="state" widget="badge"
- decoration-info="state in ('draft', 'approval_sales', 'approval_logistic','approval_finance')"
+ decoration-info="state in ('draft', 'approval_sales', 'approval_finance','approval_logistic')"
decoration-success="state == 'done'"
decoration-muted="state == 'cancel'"
/>
<field name="ba_num" string="Nomor BA"/>
- <field name="date_done" string="Approved Date"/>
+ <field name="date_logistic" string="Approved Date"/>
</tree>
</field>
</record>
@@ -77,6 +77,7 @@
<group>
<group>
<field name="date" string="Date" readonly="1"/>
+ <field name="partner_id" readonly="1"/>
<field name="return_type" attrs="{'readonly': [('state', 'not in', 'draft')]}"/>
<field name="operations"
attrs="{'readonly': [('state', 'not in', 'draft')]}"/>
@@ -86,8 +87,8 @@
<field name="ba_num" string="Nomor BA"/>
<field name="notes"/>
<field name="date_sales" readonly="1"/>
+ <field name="date_finance" readonly="1"/>
<field name="date_logistic" readonly="1"/>
- <field name="date_done" readonly="1"/>
</group>
</group>
<notebook>