diff options
| author | Miqdad <ahmadmiqdad27@gmail.com> | 2025-07-22 19:51:47 +0700 |
|---|---|---|
| committer | Miqdad <ahmadmiqdad27@gmail.com> | 2025-07-22 19:51:47 +0700 |
| commit | 158c89a5048669f46d561aef3505042cc8c68a37 (patch) | |
| tree | 3fc14c01db0efed6a32060c0ca4276432c0cf011 | |
| parent | 1de8ad79dd0f0832dd14de9c1d004884f153bec4 (diff) | |
<miqdad> change approval flow
| -rw-r--r-- | indoteknik_custom/models/tukar_guling.py | 48 | ||||
| -rw-r--r-- | indoteknik_custom/views/tukar_guling.xml | 7 |
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> |
