[IMP] stock_picking_batch: cancel empty batch picking

As pickings can be moved from a batch into an another one, a batch can suddenly
be emptied or having no more active pickings.In such case, we cancel it.
This way, empty batches won't be displayed by default as there is a default
filter showing only draft or in progress batches.
If we manually remove all pickings from a batch or create a empty batch, we
consider it intentional, and won't cancel it automatically.

Task-2464457
PR #66600

Signed-off-by: Arnold Moyaux <amoyaux@users.noreply.github.com>
This commit is contained in:
yhu-odoo
2021-05-18 12:59:25 +00:00
parent d1448b666b
commit e310d92958
2 changed files with 14 additions and 14 deletions
@@ -1,15 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo><data noupdate="1">
<!-- Add batch picking -->
<record id="stock_picking_batch_1" model="stock.picking.batch">
<field name="picking_type_id" ref="stock.picking_type_out"/>
<field name="company_id" ref="base.main_company"/>
</record>
<record id="stock_picking_batch_2" model="stock.picking.batch">
<field name="picking_type_id" ref="stock.picking_type_out"/>
<field name="company_id" ref="base.main_company"/>
</record>
<!-- Starting inventory -->
<record id="stock_inventory_batch_1" model="stock.quant">
<field name="product_id" ref="product.consu_delivery_01"/>
@@ -40,7 +30,6 @@
<field name="priority">1</field>
<field name="user_id" eval="False"/>
<field name="picking_type_id" ref="stock.picking_type_out"/>
<field name="batch_id" ref="stock_picking_batch_2"/>
<field name="location_id" ref="stock.stock_location_stock"/>
<field name="location_dest_id" ref="stock.stock_location_customers"/>
<field name="company_id" ref="base.main_company"/>
@@ -50,7 +39,6 @@
<field name="priority">0</field>
<field name="user_id" eval="False"/>
<field name="picking_type_id" ref="stock.picking_type_out"/>
<field name="batch_id" ref="stock_picking_batch_2"/>
<field name="location_id" ref="stock.stock_location_stock"/>
<field name="location_dest_id" ref="stock.stock_location_customers"/>
<field name="company_id" ref="base.main_company"/>
@@ -60,7 +48,6 @@
<field name="priority">0</field>
<field name="user_id" eval="False"/>
<field name="picking_type_id" ref="stock.picking_type_out"/>
<field name="batch_id" ref="stock_picking_batch_1"/>
<field name="location_id" ref="stock.stock_location_stock"/>
<field name="location_dest_id" ref="stock.stock_location_customers"/>
<field name="company_id" ref="base.main_company"/>
@@ -70,12 +57,23 @@
<field name="priority">1</field>
<field name="user_id" eval="False"/>
<field name="picking_type_id" ref="stock.picking_type_out"/>
<field name="batch_id" ref="stock_picking_batch_1"/>
<field name="location_id" ref="stock.stock_location_stock"/>
<field name="location_dest_id" ref="stock.stock_location_customers"/>
<field name="company_id" ref="base.main_company"/>
</record>
<!-- Add batch picking -->
<record id="stock_picking_batch_1" model="stock.picking.batch">
<field name="picking_type_id" ref="stock.picking_type_out"/>
<field name="company_id" ref="base.main_company"/>
<field name="picking_ids" eval="[(6, 0, [ref('stock_picking_batch.Picking_C'), ref('stock_picking_batch.Picking_D')])]"/>
</record>
<record id="stock_picking_batch_2" model="stock.picking.batch">
<field name="picking_type_id" ref="stock.picking_type_out"/>
<field name="company_id" ref="base.main_company"/>
<field name="picking_ids" eval="[(6, 0, [ref('stock_picking_batch.Picking_A'), ref('stock_picking_batch.Picking_B')])]"/>
</record>
<!-- Add stock move -->
<record id="stock_move1" model="stock.move">
<field name="name">A first stock move</field>
@@ -21,8 +21,10 @@ class StockPicking(models.Model):
return res
def write(self, vals):
batches = self.batch_id
res = super().write(vals)
if vals.get('batch_id'):
batches.filtered(lambda b: not b.picking_ids).state = 'cancel'
if not self.batch_id.picking_type_id:
self.batch_id.picking_type_id = self.picking_type_id[0]
self.batch_id._sanity_check()