Skip to content

Commit 86d0767

Browse files
committed
[FIX] l10n_it_delivery_note: fix validate multiple picking with advanced delivery note features disabled
1 parent e095f39 commit 86d0767

File tree

2 files changed

+48
-11
lines changed

2 files changed

+48
-11
lines changed

l10n_it_delivery_note/models/stock_picking.py

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -332,49 +332,50 @@ def button_validate(self):
332332
if delivery_note_to_create and not self.delivery_note_id:
333333
delivery_note = self._create_delivery_note()
334334
self.write({"delivery_note_id": delivery_note.id})
335-
if self.sale_id:
336-
self.sale_id._assign_delivery_notes_invoices(self.sale_id.invoice_ids)
335+
if self.mapped("sale_id"):
336+
self.mapped("sale_id")._assign_delivery_notes_invoices(
337+
self.mapped("sale_id").invoice_ids
338+
)
337339
return res
338340

339341
def _create_delivery_note(self):
340342
partners = self._get_partners()
341343
type_id = self.env["stock.delivery.note.type"].search(
342344
[
343-
("code", "=", self.picking_type_code),
345+
("code", "=", self[0].picking_type_code),
344346
("company_id", "=", self.company_id.id),
345347
],
346348
limit=1,
347349
)
348350
delivery_method_id = self.mapped("carrier_id")[:1]
351+
sale_id = self[0].sale_id
349352
return self.env["stock.delivery.note"].create(
350353
{
351354
"company_id": self.company_id.id,
352355
"partner_sender_id": partners[0].id,
353-
"partner_id": self.sale_id.partner_id.id
354-
if self.sale_id
355-
else partners[1].id,
356+
"partner_id": sale_id.partner_id.id if sale_id else partners[1].id,
356357
"partner_shipping_id": partners[1].id,
357358
"type_id": type_id.id,
358-
"date": self.date_done,
359+
"date": self[0].date_done,
359360
"carrier_id": delivery_method_id.partner_id.id,
360361
"delivery_method_id": delivery_method_id.id,
361362
"transport_condition_id": (
362-
self.sale_id.default_transport_condition_id.id
363+
sale_id.default_transport_condition_id.id
363364
or partners[1].default_transport_condition_id.id
364365
or type_id.default_transport_condition_id.id
365366
),
366367
"goods_appearance_id": (
367-
self.sale_id.default_goods_appearance_id.id
368+
sale_id.default_goods_appearance_id.id
368369
or partners[1].default_goods_appearance_id.id
369370
or type_id.default_goods_appearance_id.id
370371
),
371372
"transport_reason_id": (
372-
self.sale_id.default_transport_reason_id.id
373+
sale_id.default_transport_reason_id.id
373374
or partners[1].default_transport_reason_id.id
374375
or type_id.default_transport_reason_id.id
375376
),
376377
"transport_method_id": (
377-
self.sale_id.default_transport_method_id.id
378+
sale_id.default_transport_method_id.id
378379
or partners[1].default_transport_method_id.id
379380
or type_id.default_transport_method_id.id
380381
),

l10n_it_delivery_note/tests/test_stock_delivery_note.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,42 @@ def test_partial_delivering_single_so(self):
5757
picking_backorder.button_validate()
5858
self.assertTrue(picking_backorder.delivery_note_id)
5959

60+
# Test validazione di più picking (ad es nel caso di batch picking)
61+
def test_multiple_picking(self):
62+
user = new_test_user(
63+
self.env,
64+
login="test",
65+
groups="stock.group_stock_manager",
66+
)
67+
# change user in order to automatically create delivery note
68+
# when picking is validated
69+
self.env.user = user
70+
# creo ordine 1
71+
sale_order1 = self.create_sales_order(
72+
[
73+
self.desk_combination_line, # 1
74+
],
75+
)
76+
77+
# creo ordine 2
78+
sale_order1.action_confirm()
79+
sale_order2 = self.create_sales_order(
80+
[
81+
self.large_desk_line, # 1
82+
],
83+
)
84+
85+
sale_order2.action_confirm()
86+
picking_ids = sale_order1.picking_ids | sale_order2.picking_ids
87+
88+
# verifico creazione di due ricezioni
89+
self.assertEqual(len(picking_ids), 2)
90+
sale_order1.picking_ids.move_ids.quantity_done = 1
91+
sale_order2.picking_ids.move_ids.quantity_done = 1
92+
picking_ids.button_validate()
93+
# verifico che la generazione del ddt sia ok
94+
self.assertEqual(len(picking_ids.mapped("delivery_note_id")), 1)
95+
6096
# ⇒ "Consegna senza ordine"
6197
def test_delivery_without_so(self):
6298
#

0 commit comments

Comments
 (0)