Skip to content

Commit d917aae

Browse files
committed
[IMP] stock_move_line_divide: Assign manufacturing customer to package
1 parent e259ac5 commit d917aae

File tree

2 files changed

+41
-3
lines changed

2 files changed

+41
-3
lines changed

stock_move_line_divide/__manifest__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Copyright 2022 Berezi Amubieta - AvanzOSC
2-
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
2+
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html)
33
{
44
"name": "Stock Move Line Divide",
55
"version": "16.0.1.0.0",

stock_move_line_divide/models/stock_move_line.py

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ class StockMoveLine(models.Model):
1010

1111
divide = fields.Integer(string="Divide in", default=1)
1212

13+
def _get_partner_from_mo(self):
14+
production = self.move_id.production_id
15+
return getattr(production, "manual_partner_id", False)
16+
1317
def _get_default_dest_location(self):
1418
if self.location_dest_id != self.move_id.location_dest_id:
1519
return self.location_dest_id
@@ -42,8 +46,24 @@ def action_create_package(self, base_prefix=None):
4246
name = f"{prefix} - {next_seq:03}"
4347
pack_vals.update({"name": name})
4448

45-
package = self.env["stock.quant.package"].create(pack_vals)
46-
return package
49+
partner = self._get_partner_from_mo()
50+
if partner:
51+
pack_vals["partner_id"] = partner.id
52+
53+
return self.env["stock.quant.package"].create(pack_vals)
54+
55+
def _ensure_partner_on_packages(self, packages):
56+
partner = self._get_partner_from_mo()
57+
if partner and packages:
58+
packages.filtered(lambda p: p and not p.partner_id).write(
59+
{"partner_id": partner.id}
60+
)
61+
62+
def write(self, vals):
63+
res = super().write(vals)
64+
if "result_package_id" in vals:
65+
self._ensure_partner_on_packages(self.mapped("result_package_id"))
66+
return res
4767

4868
def action_divide(self):
4969
self.ensure_one()
@@ -84,9 +104,12 @@ def action_divide(self):
84104
self.result_package_id.name if self.result_package_id else self.reference
85105
)
86106

107+
created_packages = []
108+
87109
first_qty = qty_quantities.pop(0)
88110
first_packaging_qty = packaging_qty_quantities.pop(0)
89111
first_package = self.action_create_package(base_prefix=base_prefix)
112+
created_packages.append(first_package)
90113

91114
self.write(
92115
{
@@ -102,6 +125,7 @@ def action_divide(self):
102125

103126
for i, qty in enumerate(qty_quantities):
104127
package = self.action_create_package(base_prefix=base_prefix)
128+
created_packages.append(package)
105129
new_vals = self.copy_data()[0]
106130
new_vals.update(
107131
{
@@ -118,6 +142,10 @@ def action_divide(self):
118142
new_vals
119143
)
120144

145+
self._ensure_partner_on_packages(
146+
self.env["stock.quant.package"].browse([p.id for p in created_packages])
147+
)
148+
121149
@api.onchange("product_packaging_id")
122150
def _onchange_product_packaging_id(self):
123151
packaging = self.product_packaging_id
@@ -137,6 +165,16 @@ def _onchange_product_packaging_id(self):
137165
self.product_packaging_qty = 0
138166
self.qty_done = 1
139167

168+
@api.onchange("result_package_id")
169+
def _onchange_result_package_id_set_partner(self):
170+
for line in self:
171+
pkg = line.result_package_id
172+
if not pkg:
173+
continue
174+
partner = line._get_partner_from_mo()
175+
if partner and not pkg.partner_id:
176+
pkg.sudo().write({"partner_id": partner.id})
177+
140178
@api.model_create_multi
141179
def create(self, vals_list):
142180
for vals in vals_list:

0 commit comments

Comments
 (0)