Skip to content
Snippets Groups Projects
Commit 4a031781 authored by Simon Lejeune's avatar Simon Lejeune
Browse files

[REF] stock_picking_batch: multi company

Ensure proper domains are applied and enforced on relation fields thanks
to the `check_company` attributes.

task-1985992
parent d43d2502
No related branches found
No related tags found
No related merge requests found
......@@ -4,9 +4,11 @@
<!-- Add batch picking -->
<record id="stock_picking_batch_dry_1" model="stock.picking.batch">
<field name="state">in_progress</field>
<field name="company_id" ref="base.main_company"/>
</record>
<record id="stock_picking_batch_freeze_1" model="stock.picking.batch">
<field name="state">in_progress</field>
<field name="company_id" ref="base.main_company"/>
</record>
<!-- Resource: stock.inventory -->
......@@ -56,6 +58,7 @@
<field name="batch_id" ref="stock_picking_batch_freeze_1"/>
<field name="location_id" ref="stock.stock_location_stock"/>
<field name="location_dest_id" ref="stock.stock_location_output"/>
<field name="company_id" ref="base.main_company"/>
</record>
<record id="Picking_B" model="stock.picking">
<field name="move_type">one</field>
......@@ -65,6 +68,7 @@
<field name="batch_id" ref="stock_picking_batch_freeze_1"/>
<field name="location_id" ref="stock.stock_location_stock"/>
<field name="location_dest_id" ref="stock.stock_location_output"/>
<field name="company_id" ref="base.main_company"/>
</record>
<record id="Picking_C" model="stock.picking">
<field name="move_type">one</field>
......@@ -74,6 +78,7 @@
<field name="batch_id" ref="stock_picking_batch_dry_1"/>
<field name="location_id" ref="stock.stock_location_stock"/>
<field name="location_dest_id" ref="stock.stock_location_output"/>
<field name="company_id" ref="base.main_company"/>
</record>
<!-- Add stock move -->
......
......@@ -16,10 +16,14 @@ class StockPickingBatch(models.Model):
copy=False, required=True,
help='Name of the batch transfer')
user_id = fields.Many2one(
'res.users', string='Responsible', tracking=True,
'res.users', string='Responsible', tracking=True, check_company=True,
help='Person responsible for this batch transfer')
company_id = fields.Many2one(
'res.company', string="Company", required=True, readonly=True,
index=True)
picking_ids = fields.One2many(
'stock.picking', 'batch_id', string='Transfers',
domain="[('company_id', '=', company_id), ('state', 'not in', ('done', 'cancel'))]",
help='List of transfers associated to this batch')
state = fields.Selection([
('draft', 'Draft'),
......@@ -35,6 +39,7 @@ class StockPickingBatch(models.Model):
return super(StockPickingBatch, self).create(vals)
def confirm_picking(self):
self._check_company()
pickings_todo = self.mapped('picking_ids')
self.write({'state': 'in_progress'})
return pickings_todo.action_assign()
......@@ -50,6 +55,7 @@ class StockPickingBatch(models.Model):
return self.env.ref('stock_picking_batch.action_report_picking_batch').report_action(self)
def done(self):
self._check_company()
pickings = self.mapped('picking_ids').filtered(lambda picking: picking.state not in ('cancel', 'done'))
if any(picking.state not in ('assigned') for picking in pickings):
raise UserError(_('Some transfers are still waiting for goods. Please check or force their availability before setting this batch to done.'))
......@@ -110,5 +116,7 @@ class StockPicking(models.Model):
batch_id = fields.Many2one(
'stock.picking.batch', string='Batch Transfer',
check_company=True,
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]},
help='Batch associated to this transfer', copy=False)
......@@ -24,6 +24,7 @@ class TestBatchPicking(TransactionCase):
'location_id': self.stock_location.id,
'location_dest_id': self.customer_location.id,
'picking_type_id': self.picking_type_out,
'company_id': self.env.company.id,
})
self.env['stock.move'].create({
......@@ -40,6 +41,7 @@ class TestBatchPicking(TransactionCase):
'location_id': self.stock_location.id,
'location_dest_id': self.customer_location.id,
'picking_type_id': self.picking_type_out,
'company_id': self.env.company.id,
})
self.env['stock.move'].create({
......@@ -54,6 +56,7 @@ class TestBatchPicking(TransactionCase):
self.batch = self.env['stock.picking.batch'].create({
'name': 'Batch 1',
'company_id': self.env.company.id,
'picking_ids': [(4, self.picking_client_1.id), (4, self.picking_client_2.id)]
})
......
......@@ -20,10 +20,11 @@
<group>
<group>
<field name="user_id"/>
<field name="company_id" groups="base.group_multi_company" attrs="{'readonly': [('picking_ids', '!=', [])]}" force_save="1"/>
</group>
</group>
<separator string="Transfers"/>
<field name="picking_ids" widget="many2many" domain="[('state', 'not in', ('done', 'cancel'))]" options="{'not_delete': True}">
<field name="picking_ids" widget="many2many" options="{'not_delete': True}">
<tree>
<field name="name"/>
<field name="scheduled_date"/>
......@@ -52,6 +53,7 @@
<field name="name"/>
<field name="user_id"/>
<field name="state"/>
<field name="company_id" groups="base.group_multi_company"/>
<field name="activity_exception_decoration" widget="activity_exception"/>
</tree>
</field>
......@@ -117,7 +119,7 @@
<field name="type">ir.actions.act_window</field>
<field name="res_model">stock.picking.batch</field>
<field name="view_mode">tree,kanban,form</field>
<field name="context">{"search_default_in_progress" : True,}</field>
<field name="context">{"search_default_in_progress" : True, 'default_company_id': allowed_company_ids[0]}</field>
<field name="search_view_id" ref="stock_picking_batch_filter"/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment