summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/shipment_group.py
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2024-07-05 15:08:02 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2024-07-05 15:08:02 +0700
commit074f7e6c0190c1ae5e08db6db0dd3f4f3e28e941 (patch)
treed2561768d57fa32ede8cabbe249990f9db880cf4 /indoteknik_custom/models/shipment_group.py
parent0cbdf05b4fce0460cdc951cb60d4bd00cac51a13 (diff)
change request
Diffstat (limited to 'indoteknik_custom/models/shipment_group.py')
-rw-r--r--indoteknik_custom/models/shipment_group.py55
1 files changed, 39 insertions, 16 deletions
diff --git a/indoteknik_custom/models/shipment_group.py b/indoteknik_custom/models/shipment_group.py
index bc593437..92f76db7 100644
--- a/indoteknik_custom/models/shipment_group.py
+++ b/indoteknik_custom/models/shipment_group.py
@@ -13,6 +13,7 @@ class ShipmentGroup(models.Model):
number = fields.Char(string='Document No', index=True, copy=False, readonly=True, tracking=True)
shipment_line = fields.One2many('shipment.group.line', 'shipment_id', string='Shipment Group Lines', auto_join=True)
+ partner_id = fields.Many2one('res.partner', string='Customer')
@api.model
def create(self, vals):
@@ -29,30 +30,52 @@ class ShipmentGroupLine(models.Model):
partner_id = fields.Many2one('res.partner', string='Customer')
picking_id = fields.Many2one('stock.picking', string='Picking')
sale_id = fields.Many2one('sale.order', string='Sale Order')
- state = fields.Char(string='Status', readonly=True, compute='_get_state')
+ state = fields.Char(string='Status', readonly=True, compute='_compute_state')
- def _get_state(self):
+ @api.depends('picking_id.state')
+ def _compute_state(self):
for rec in self:
- if rec.picking_id.state == 'assigned':
- rec.state = 'Ready'
- elif rec.picking_id.state == 'done':
- rec.state = 'Done'
- elif rec.picking_id.state == 'cancel':
- rec.state = 'Cancelled'
- elif rec.picking_id.state == 'confirmed':
- rec.state = 'Waiting'
- elif rec.picking_id.state == 'waiting':
- rec.state = 'Waiting Another Operation'
+ if rec.picking_id:
+ if rec.picking_id.state == 'assigned':
+ rec.state = 'Ready'
+ elif rec.picking_id.state == 'done':
+ rec.state = 'Done'
+ elif rec.picking_id.state == 'cancel':
+ rec.state = 'Cancelled'
+ elif rec.picking_id.state == 'confirmed':
+ rec.state = 'Waiting'
+ elif rec.picking_id.state == 'waiting':
+ rec.state = 'Waiting Another Operation'
+ else:
+ rec.state = 'draft'
else:
rec.state = 'draft'
@api.onchange('picking_id')
def onchange_picking_id(self):
- picking = self.env['stock.picking'].search([('id', '=', self.picking_id.id)], limit=1)
+ if self.picking_id:
+ picking = self.env['stock.picking'].browse(self.picking_id.id)
+
+ if self.shipment_id.partner_id and self.shipment_id.partner_id != picking.partner_id:
+ raise UserError('Partner must be same as shipment group')
+
+ self.partner_id = picking.partner_id
- self.partner_id = picking.partner_id
+ if not self.shipment_id.partner_id:
+ self.shipment_id.partner_id = picking.partner_id
- self.state = picking.state
+ self.sale_id = picking.sale_id
+
+ @api.model
+ def create(self, vals):
+ record = super(ShipmentGroupLine, self).create(vals)
+ if record.picking_id:
+ record.onchange_picking_id()
+ return record
- self.sale_id = picking.sale_id
+ def write(self, vals):
+ res = super(ShipmentGroupLine, self).write(vals)
+ if 'picking_id' in vals:
+ self.onchange_picking_id()
+ return res