Skip to content

Commit 8cc0211

Browse files
committed
Merge PR OCA#3727 into 14.0
Signed-off-by tafaRU
2 parents 20e726e + 0936893 commit 8cc0211

6 files changed

+38
-7
lines changed

l10n_it_delivery_note/models/stock_delivery_note.py

+11-2
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,18 @@ class StockDeliveryNote(models.Model):
4949
]
5050
_description = "Delivery Note"
5151
_order = "date DESC, id DESC"
52+
_check_company_auto = True
5253

5354
def _default_company(self):
5455
return self.env.company
5556

5657
def _default_type(self):
5758
return self.env["stock.delivery.note.type"].search(
58-
[("code", "=", DOMAIN_PICKING_TYPES[1])], limit=1
59+
[
60+
("code", "=", DOMAIN_PICKING_TYPES[1]),
61+
("company_id", "=", self.env.company.id),
62+
],
63+
limit=1,
5964
)
6065

6166
def _default_volume_uom(self):
@@ -241,12 +246,16 @@ def _domain_weight_uom(self):
241246
)
242247

243248
picking_ids = fields.One2many(
244-
"stock.picking", "delivery_note_id", string="Pickings"
249+
"stock.picking",
250+
"delivery_note_id",
251+
string="Pickings",
252+
check_company=True,
245253
)
246254
pickings_picker = fields.Many2many(
247255
"stock.picking",
248256
compute="_compute_get_pickings",
249257
inverse="_inverse_set_pickings",
258+
check_company=True,
250259
)
251260

252261
picking_type = fields.Selection(

l10n_it_delivery_note/models/stock_picking.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@ class StockPicking(models.Model):
4141
)
4242

4343
delivery_note_type_id = fields.Many2one(
44-
"stock.delivery.note.type", related="delivery_note_id.type_id"
44+
"stock.delivery.note.type",
45+
related="delivery_note_id.type_id",
46+
check_company=True,
4547
)
4648
delivery_note_type_code = fields.Selection(related="delivery_note_type_id.code")
4749
delivery_note_date = fields.Date(string="DN Date", related="delivery_note_id.date")
@@ -336,6 +338,7 @@ def _create_delivery_note(self):
336338
)
337339
return self.env["stock.delivery.note"].create(
338340
{
341+
"company_id": self.company_id.id,
339342
"partner_sender_id": partners[0].id,
340343
"partner_id": self.sale_id.partner_id.id
341344
if self.sale_id

l10n_it_delivery_note/tests/test_stock_delivery_note.py

+10-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# Copyright 2021 Alex Comba - Agile Business Group
22
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
33

4+
from odoo.exceptions import UserError
45
from odoo.tests import new_test_user
56
from odoo.tests.common import Form
67

@@ -101,7 +102,7 @@ def test_delivery_without_so(self):
101102
# create delivery note with advanced mode
102103
dn_form = Form(
103104
self.env["stock.delivery.note.create.wizard"].with_context(
104-
{"active_ids": [picking.id]}
105+
{"active_id": picking.id, "active_ids": picking.ids}
105106
)
106107
)
107108
dn = dn_form.save()
@@ -110,3 +111,11 @@ def test_delivery_without_so(self):
110111
picking.delivery_note_id.action_confirm()
111112
self.assertEqual(picking.delivery_note_id.state, "confirm")
112113
self.assertEqual(picking.delivery_note_id.invoice_status, "no")
114+
115+
test_company = self.env["res.company"].create({"name": "Test Company"})
116+
with self.assertRaises(UserError) as exc:
117+
picking.delivery_note_id.write({"company_id": test_company.id})
118+
exc_message = exc.exception.args[0]
119+
self.assertIn("type_id", exc_message)
120+
self.assertIn("picking_ids", exc_message)
121+
self.assertIn("belongs to another company", exc_message)

l10n_it_delivery_note/views/stock_delivery_note.xml

+1
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@
136136
<field
137137
name="company_id"
138138
options="{'no_create': True}"
139+
attrs="{'readonly': [('pickings_picker', '!=', [])]}"
139140
groups="base.group_multi_company"
140141
/>
141142
<field

l10n_it_delivery_note/wizard/delivery_note_base.py

+8-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ def _default_stock_pickings(self):
1515

1616
return self.env["stock.picking"].browse(active_ids)
1717

18+
def _domain_type_id(self):
19+
return [("company_id", "in", [False, self.env.company.id])]
20+
1821
selected_picking_ids = fields.Many2many(
1922
"stock.picking", default=_default_stock_pickings, readonly=True
2023
)
@@ -28,7 +31,11 @@ def _default_stock_pickings(self):
2831
partner_shipping_id = fields.Many2one("res.partner", string="Shipping address")
2932

3033
date = fields.Date(string="Date")
31-
type_id = fields.Many2one("stock.delivery.note.type", string="Type")
34+
type_id = fields.Many2one(
35+
"stock.delivery.note.type",
36+
string="Type",
37+
domain=_domain_type_id,
38+
)
3239

3340
error_message = fields.Html(compute="_compute_fields")
3441

l10n_it_delivery_note/wizard/delivery_note_create.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ def _default_type(self):
2121
picking_ids = self.env["stock.picking"].browse(active_ids)
2222
if picking_ids:
2323
type_code = picking_ids[0].picking_type_id.code
24-
24+
company_id = picking_ids[0].company_id
2525
return self.env["stock.delivery.note.type"].search(
26-
[("code", "=", type_code)], limit=1
26+
[("code", "=", type_code), ("company_id", "=", company_id.id)], limit=1
2727
)
2828

2929
else:
@@ -82,6 +82,8 @@ def confirm(self):
8282

8383
delivery_note = self.env["stock.delivery.note"].create(
8484
{
85+
"company_id": self.selected_picking_ids.mapped("company_id")[:1].id
86+
or False,
8587
"partner_sender_id": self.partner_sender_id.id,
8688
"partner_id": self.selected_picking_ids.mapped("sale_id.partner_id").id
8789
if self.selected_picking_ids.mapped("sale_id.partner_id").id

0 commit comments

Comments
 (0)