summaryrefslogtreecommitdiff
path: root/addons/stock_picking_batch
diff options
context:
space:
mode:
authorSimon Lejeune <sle@openerp.com>2019-08-22 09:31:02 +0000
committerSimon Lejeune <sle@openerp.com>2019-09-03 15:05:03 +0000
commit4a031781462d27bb35e1ad81c6d981da1b9f6f77 (patch)
tree96f992f95e5a47ac39c86a8f72b7cea0c14bffdb /addons/stock_picking_batch
parentd43d25020ec4e42d7451bdf9213c8d3e933e8a78 (diff)
[REF] stock_picking_batch: multi company
Ensure proper domains are applied and enforced on relation fields thanks to the `check_company` attributes. task-1985992
Diffstat (limited to 'addons/stock_picking_batch')
-rw-r--r--addons/stock_picking_batch/data/stock_picking_batch_demo.xml5
-rw-r--r--addons/stock_picking_batch/models/stock_picking_batch.py10
-rw-r--r--addons/stock_picking_batch/tests/test_batch_picking.py3
-rw-r--r--addons/stock_picking_batch/views/stock_picking_batch_views.xml6
4 files changed, 21 insertions, 3 deletions
diff --git a/addons/stock_picking_batch/data/stock_picking_batch_demo.xml b/addons/stock_picking_batch/data/stock_picking_batch_demo.xml
index 0f18d93d030..b4f00288029 100644
--- a/addons/stock_picking_batch/data/stock_picking_batch_demo.xml
+++ b/addons/stock_picking_batch/data/stock_picking_batch_demo.xml
@@ -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 -->
diff --git a/addons/stock_picking_batch/models/stock_picking_batch.py b/addons/stock_picking_batch/models/stock_picking_batch.py
index 4e659302bf5..fe12ddd52ec 100644
--- a/addons/stock_picking_batch/models/stock_picking_batch.py
+++ b/addons/stock_picking_batch/models/stock_picking_batch.py
@@ -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)
+
diff --git a/addons/stock_picking_batch/tests/test_batch_picking.py b/addons/stock_picking_batch/tests/test_batch_picking.py
index c870a6f5faf..0c477f88dc0 100644
--- a/addons/stock_picking_batch/tests/test_batch_picking.py
+++ b/addons/stock_picking_batch/tests/test_batch_picking.py
@@ -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)]
})
diff --git a/addons/stock_picking_batch/views/stock_picking_batch_views.xml b/addons/stock_picking_batch/views/stock_picking_batch_views.xml
index df80adc0550..53960b737a3 100644
--- a/addons/stock_picking_batch/views/stock_picking_batch_views.xml
+++ b/addons/stock_picking_batch/views/stock_picking_batch_views.xml
@@ -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">