@@ -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