diff options
| author | Simon Lejeune <sle@openerp.com> | 2019-08-22 09:31:02 +0000 |
|---|---|---|
| committer | Simon Lejeune <sle@openerp.com> | 2019-09-03 15:05:03 +0000 |
| commit | 4a031781462d27bb35e1ad81c6d981da1b9f6f77 (patch) | |
| tree | 96f992f95e5a47ac39c86a8f72b7cea0c14bffdb /addons/stock_picking_batch | |
| parent | d43d25020ec4e42d7451bdf9213c8d3e933e8a78 (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')
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"> |
