summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorsvs-odoo <svs@odoo.com>2019-12-11 15:20:33 +0000
committersvs-odoo <svs@odoo.com>2020-01-31 12:40:09 +0000
commit9ac12ebb38ef012d88e4c7b234d2feb6c7a1eecb (patch)
treee31618874512055be5e1441efdff0ccb570eadcb /addons
parent15b6fa6a06f6ba69ad9e7deb35712323a60be06b (diff)
[IMP] stock_picking_batch: compute state
About the batch picking state, makes it canceled if all its pickings are canceled, and makes it done if all its non-canceled pickings are done.
Diffstat (limited to 'addons')
-rw-r--r--addons/stock_picking_batch/models/stock_picking_batch.py15
1 files changed, 13 insertions, 2 deletions
diff --git a/addons/stock_picking_batch/models/stock_picking_batch.py b/addons/stock_picking_batch/models/stock_picking_batch.py
index 5e13a4649a9..3f2f4755298 100644
--- a/addons/stock_picking_batch/models/stock_picking_batch.py
+++ b/addons/stock_picking_batch/models/stock_picking_batch.py
@@ -42,6 +42,7 @@ class StockPickingBatch(models.Model):
('in_progress', 'In progress'),
('done', 'Done'),
('cancel', 'Cancelled')], default='draft',
+ store=True, compute='_compute_state',
copy=False, tracking=True, required=True, readonly=True)
picking_type_id = fields.Many2one(
'stock.picking.type', 'Operation Type', check_company=True, copy=False,
@@ -81,6 +82,18 @@ class StockPickingBatch(models.Model):
batch.move_line_ids = batch.picking_ids.move_line_ids
batch.show_check_availability = any(m.state != 'assigned' for m in batch.move_ids)
+ @api.depends('picking_ids', 'picking_ids.state')
+ def _compute_state(self):
+ batchs = self.filtered(lambda batch: batch.state not in ['cancel', 'done'])
+ for batch in batchs:
+ if not batch.picking_ids:
+ return
+ # Cancels automatically the batch picking if all its transfers are cancelled.
+ if all(picking.state == 'cancel' for picking in batch.picking_ids):
+ batch.state = 'cancel'
+ # Batch picking is marked as done if all its not canceled transfers are done.
+ elif all(picking.state in ['cancel', 'done'] for picking in batch.picking_ids):
+ batch.state = 'done'
def _set_move_line_ids(self):
new_move_lines = self[0].move_line_ids
@@ -152,8 +165,6 @@ class StockPickingBatch(models.Model):
_("Batch Transfer"),
picking.batch_id.id,
picking.batch_id.name))
-
- self.write({'state': 'done'})
return self.picking_ids.button_validate()
def action_assign(self):