diff --git a/l10n_it_delivery_note/models/stock_delivery_note.py b/l10n_it_delivery_note/models/stock_delivery_note.py index fcfcc5d93cf9..b99dccecf0b2 100644 --- a/l10n_it_delivery_note/models/stock_delivery_note.py +++ b/l10n_it_delivery_note/models/stock_delivery_note.py @@ -49,13 +49,18 @@ class StockDeliveryNote(models.Model): ] _description = "Delivery Note" _order = "date DESC, id DESC" + _check_company_auto = True def _default_company(self): return self.env.company def _default_type(self): return self.env["stock.delivery.note.type"].search( - [("code", "=", DOMAIN_PICKING_TYPES[1])], limit=1 + [ + ("code", "=", DOMAIN_PICKING_TYPES[1]), + ("company_id", "=", self.env.company.id), + ], + limit=1, ) def _default_volume_uom(self): @@ -241,12 +246,16 @@ def _domain_weight_uom(self): ) picking_ids = fields.One2many( - "stock.picking", "delivery_note_id", string="Pickings" + "stock.picking", + "delivery_note_id", + string="Pickings", + check_company=True, ) pickings_picker = fields.Many2many( "stock.picking", compute="_compute_get_pickings", inverse="_inverse_set_pickings", + check_company=True, ) picking_type = fields.Selection( diff --git a/l10n_it_delivery_note/models/stock_picking.py b/l10n_it_delivery_note/models/stock_picking.py index 63050605e338..28b527896e54 100644 --- a/l10n_it_delivery_note/models/stock_picking.py +++ b/l10n_it_delivery_note/models/stock_picking.py @@ -41,7 +41,9 @@ class StockPicking(models.Model): ) delivery_note_type_id = fields.Many2one( - "stock.delivery.note.type", related="delivery_note_id.type_id" + "stock.delivery.note.type", + related="delivery_note_id.type_id", + check_company=True, ) delivery_note_type_code = fields.Selection(related="delivery_note_type_id.code") delivery_note_date = fields.Date(string="DN Date", related="delivery_note_id.date") @@ -336,6 +338,7 @@ def _create_delivery_note(self): ) return self.env["stock.delivery.note"].create( { + "company_id": self.company_id.id, "partner_sender_id": partners[0].id, "partner_id": self.sale_id.partner_id.id if self.sale_id diff --git a/l10n_it_delivery_note/tests/test_stock_delivery_note.py b/l10n_it_delivery_note/tests/test_stock_delivery_note.py index bc9df7e62bb9..fc8b7ba24b1e 100644 --- a/l10n_it_delivery_note/tests/test_stock_delivery_note.py +++ b/l10n_it_delivery_note/tests/test_stock_delivery_note.py @@ -1,6 +1,7 @@ # Copyright 2021 Alex Comba - Agile Business Group # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo.exceptions import UserError from odoo.tests import new_test_user from odoo.tests.common import Form @@ -101,7 +102,7 @@ def test_delivery_without_so(self): # create delivery note with advanced mode dn_form = Form( self.env["stock.delivery.note.create.wizard"].with_context( - {"active_ids": [picking.id]} + {"active_id": picking.id, "active_ids": picking.ids} ) ) dn = dn_form.save() @@ -110,3 +111,11 @@ def test_delivery_without_so(self): picking.delivery_note_id.action_confirm() self.assertEqual(picking.delivery_note_id.state, "confirm") self.assertEqual(picking.delivery_note_id.invoice_status, "no") + + test_company = self.env["res.company"].create({"name": "Test Company"}) + with self.assertRaises(UserError) as exc: + picking.delivery_note_id.write({"company_id": test_company.id}) + exc_message = exc.exception.args[0] + self.assertIn("type_id", exc_message) + self.assertIn("picking_ids", exc_message) + self.assertIn("belongs to another company", exc_message) diff --git a/l10n_it_delivery_note/views/stock_delivery_note.xml b/l10n_it_delivery_note/views/stock_delivery_note.xml index 39929cb83d1a..af27e90b7318 100644 --- a/l10n_it_delivery_note/views/stock_delivery_note.xml +++ b/l10n_it_delivery_note/views/stock_delivery_note.xml @@ -136,6 +136,7 @@