summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiqdad <ahmadmiqdad27@gmail.com>2025-08-09 13:59:11 +0700
committerMiqdad <ahmadmiqdad27@gmail.com>2025-08-09 13:59:11 +0700
commitb6ae7b2c9f1c564f3bf2a471f4871fda745d215d (patch)
tree589c3fd61a0175fdc9ccffe2abc708a367f7b195
parentb5433f491d8dd8e8a11df31be53ad15538155904 (diff)
<miqdad> origin so can be clicked
-rw-r--r--indoteknik_custom/models/tukar_guling.py27
-rw-r--r--indoteknik_custom/views/tukar_guling.xml5
2 files changed, 24 insertions, 8 deletions
diff --git a/indoteknik_custom/models/tukar_guling.py b/indoteknik_custom/models/tukar_guling.py
index 4c7722d5..6aedb70e 100644
--- a/indoteknik_custom/models/tukar_guling.py
+++ b/indoteknik_custom/models/tukar_guling.py
@@ -32,7 +32,7 @@ class TukarGuling(models.Model):
'tukar_guling_id',
string='Transfers'
)
- # origin_so = fields.Many2one('sale.order', string='Origin SO')
+ origin_so = fields.Many2one('sale.order', string='Origin SO', compute='_compute_origin_so')
name = fields.Char('Number', required=True, copy=False, readonly=True, default='New')
date = fields.Datetime('Date', default=fields.Datetime.now, required=True)
operations = fields.Many2one(
@@ -83,6 +83,15 @@ class TukarGuling(models.Model):
invoice_id = fields.Many2many('account.move', string='Invoice Ref', readonly=True)
+ @api.depends('origin', 'operations')
+ def _compute_origin_so(self):
+ for rec in self:
+ rec.origin_so = False
+ origin_str = rec.origin or rec.operations.origin
+ if origin_str:
+ so = self.env['sale.order'].search([('name', '=', origin_str)], limit=1)
+ rec.origin_so = so.id if so else False
+
@api.depends('origin')
def _compute_is_has_invoice(self):
for rec in self:
@@ -144,8 +153,6 @@ class TukarGuling(models.Model):
if self.line_ids and from_return_picking:
# Hanya update origin, jangan ubah lines
- if self.operations.origin:
- self.origin = self.operations.origin
_logger.info("📌 Menggunakan product lines dari return wizard, tidak populate ulang.")
# 🚀 Tapi tetap populate mapping koli jika BU/OUT
@@ -177,6 +184,7 @@ class TukarGuling(models.Model):
# Set origin dari operations
if self.operations.origin:
self.origin = self.operations.origin
+ self.origin_so = self.operations.group_id.id
# Auto-populate lines dari move_ids operations
lines_data = []
@@ -332,17 +340,20 @@ class TukarGuling(models.Model):
# _("Tidak bisa memilih Return Type 'Revisi SO' karena dokumen %s sudah dibuat invoice.") % record.origin
# )
+
@api.model
def create(self, vals):
- # Generate sequence number
if not vals.get('name') or vals['name'] == 'New':
vals['name'] = self.env['ir.sequence'].next_by_code('tukar.guling')
- # Auto-fill origin from operations
- if not vals.get('origin') and vals.get('operations'):
+ if vals.get('operations'):
picking = self.env['stock.picking'].browse(vals['operations'])
if picking.origin:
vals['origin'] = picking.origin
+ # Find matching SO
+ so = self.env['sale.order'].search([('name', '=', picking.origin)], limit=1)
+ if so:
+ vals['origin_so'] = so.id
if picking.partner_id:
vals['partner_id'] = picking.partner_id.id
@@ -350,6 +361,10 @@ class TukarGuling(models.Model):
res.message_post(body=_("CCM Created By %s") % self.env.user.name)
return res
+ 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:
default = {}
diff --git a/indoteknik_custom/views/tukar_guling.xml b/indoteknik_custom/views/tukar_guling.xml
index 20aa2eef..a8d8b7b7 100644
--- a/indoteknik_custom/views/tukar_guling.xml
+++ b/indoteknik_custom/views/tukar_guling.xml
@@ -21,7 +21,7 @@
<field name="name">pengajuan.tukar.guling.tree</field>
<field name="model">tukar.guling</field>
<field name="arch" type="xml">
- <tree create="1" delete="1" default_order="create_date desc">
+ <tree create="0" delete="1" default_order="create_date desc">
<field name="name"/>
<field name="partner_id" string="Customer"/>
<field name="origin" string="SO Number"/>
@@ -83,7 +83,8 @@
<field name="return_type" attrs="{'readonly': [('state', 'not in', 'draft')]}"/>
<field name="operations"
attrs="{'readonly': [('state', 'not in', 'draft')]}"/>
- <field name="origin" readonly="1"/>
+<!-- <field name="origin" readonly="1"/>-->
+ <field name="origin_so" readonly="1"/>
<field name="is_has_invoice" readonly="1"/>
<field name="invoice_id" readonly="1" widget="many2many_tags"/>
</group>