diff options
| author | svs-odoo <svs@odoo.com> | 2019-12-11 15:20:33 +0000 |
|---|---|---|
| committer | svs-odoo <svs@odoo.com> | 2020-01-31 12:40:09 +0000 |
| commit | 9ac12ebb38ef012d88e4c7b234d2feb6c7a1eecb (patch) | |
| tree | e31618874512055be5e1441efdff0ccb570eadcb | |
| parent | 15b6fa6a06f6ba69ad9e7deb35712323a60be06b (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.
| -rw-r--r-- | addons/stock_picking_batch/models/stock_picking_batch.py | 15 |
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): |
