Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion stock_move_line_divide/__manifest__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Copyright 2022 Berezi Amubieta - AvanzOSC
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html)
{
"name": "Stock Move Line Divide",
"version": "16.0.1.0.0",
Expand All @@ -15,6 +15,8 @@
"views/stock_move_line_views.xml",
"views/res_config_settings_view.xml",
"views/uom_uom_view.xml",
"views/stock_quant_views.xml",
"views/stock_quant_package_views.xml",
],
"license": "AGPL-3",
"installable": True,
Expand Down
10 changes: 10 additions & 0 deletions stock_move_line_divide/i18n/ca_ES.po
Original file line number Diff line number Diff line change
Expand Up @@ -63,3 +63,13 @@ msgstr "La quantitat de divisió no pot ser 0."
#: model:ir.model,name:stock_move_line_divide.model_stock_picking
msgid "Transfer"
msgstr "Trasllat"

#. module: stock_move_line_divide
#: model:ir.model.fields,field_description:stock_move_line_divide.field_stock_move_line__partner_id
#: model:ir.model.fields,field_description:stock_move_line_divide.field_stock_quant__partner_id
#: model_terms:ir.ui.view,arch_db:stock_move_line_divide.view_stock_move_line_detailed_operation_tree
#: model_terms:ir.ui.view,arch_db:stock_move_line_divide.view_stock_move_line_operation_tree
#: model_terms:ir.ui.view,arch_db:stock_move_line_divide.view_stock_quant_tree_editable_partner_on_package
#: model_terms:ir.ui.view,arch_db:stock_move_line_divide.view_stock_quant_tree_partner_on_package
msgid "Partner (package)"
msgstr "Client"
45 changes: 38 additions & 7 deletions stock_move_line_divide/i18n/es.po
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-07-21 10:03+0000\n"
"PO-Revision-Date: 2025-07-21 10:03+0000\n"
"POT-Creation-Date: 2025-10-13 10:19+0000\n"
"PO-Revision-Date: 2025-10-13 10:19+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
Expand All @@ -18,7 +18,7 @@ msgstr ""
#. module: stock_move_line_divide
#: model:ir.model,name:stock_move_line_divide.model_res_config_settings
msgid "Config Settings"
msgstr "Ajustes de configuración"
msgstr "Opciones de configuración"

#. module: stock_move_line_divide
#: model_terms:ir.ui.view,arch_db:stock_move_line_divide.view_stock_move_line_detailed_operation_tree
Expand All @@ -34,7 +34,8 @@ msgstr "Dividir en"
#. module: stock_move_line_divide
#: model_terms:ir.ui.view,arch_db:stock_move_line_divide.res_config_settings_view_form
msgid "Enable automatic naming of packages based on reference."
msgstr "Activar el nombrado automático de los paquetes en función de la referencia."
msgstr ""
"Activar el nombrado automático de los paquetes en función de la referencia."

#. module: stock_move_line_divide
#: model:ir.model.fields,field_description:stock_move_line_divide.field_uom_uom__is_unit
Expand All @@ -46,20 +47,50 @@ msgstr "Es unidad"
msgid "Name packages by reference"
msgstr "Nombrar paquetes por referencia"

#. module: stock_move_line_divide
#: model:ir.model,name:stock_move_line_divide.model_stock_quant_package
msgid "Packages"
msgstr "Paquetes"

#. module: stock_move_line_divide
#: model:ir.model.fields,field_description:stock_move_line_divide.field_stock_quant_package__partner_id
#: model_terms:ir.ui.view,arch_db:stock_move_line_divide.view_quant_package_tree_partner
msgid "Partner"
msgstr "Dirección de entrega"

#. module: stock_move_line_divide
#: model:ir.model.fields,field_description:stock_move_line_divide.field_stock_move_line__partner_id
#: model:ir.model.fields,field_description:stock_move_line_divide.field_stock_quant__partner_id
#: model_terms:ir.ui.view,arch_db:stock_move_line_divide.view_stock_move_line_detailed_operation_tree
#: model_terms:ir.ui.view,arch_db:stock_move_line_divide.view_stock_move_line_operation_tree
#: model_terms:ir.ui.view,arch_db:stock_move_line_divide.view_stock_quant_tree_editable_partner_on_package
#: model_terms:ir.ui.view,arch_db:stock_move_line_divide.view_stock_quant_tree_partner_on_package
msgid "Partner (package)"
msgstr "Cliente"

#. module: stock_move_line_divide
#: model:ir.model,name:stock_move_line_divide.model_stock_move_line
msgid "Product Moves (Stock Move Line)"
msgstr "Movimientos de producto (línea de movimiento de stock)"
msgstr "Movimientos de Producto (Stock Move Line)"

#. module: stock_move_line_divide
#: model:ir.model,name:stock_move_line_divide.model_uom_uom
msgid "Product Unit of Measure"
msgstr "Unidad de medida del producto"

#. module: stock_move_line_divide
#: model:ir.model,name:stock_move_line_divide.model_stock_quant
msgid "Quants"
msgstr ""

#. module: stock_move_line_divide
#. odoo-python
#: code:addons/stock_move_line_divide/models/stock_move_line.py:0
#: code:addons/stock_move_line_divide/models/stock_move_line.py:0
#, python-format
msgid "The dividing amount or done quantity can not be 0."
msgstr "El importe de la división o la cantidad hecha no puedes ser 0."

#. module: stock_move_line_divide
#: model:ir.model,name:stock_move_line_divide.model_stock_picking
msgid "Transfer"
msgstr "Traslado"
msgstr "Transferir"
10 changes: 10 additions & 0 deletions stock_move_line_divide/i18n/fr.po
Original file line number Diff line number Diff line change
Expand Up @@ -63,3 +63,13 @@ msgstr "Le montant de la division ne peut pas être nul."
#: model:ir.model,name:stock_move_line_divide.model_stock_picking
msgid "Transfer"
msgstr "Transfert"

#. module: stock_move_line_divide
#: model:ir.model.fields,field_description:stock_move_line_divide.field_stock_move_line__partner_id
#: model:ir.model.fields,field_description:stock_move_line_divide.field_stock_quant__partner_id
#: model_terms:ir.ui.view,arch_db:stock_move_line_divide.view_stock_move_line_detailed_operation_tree
#: model_terms:ir.ui.view,arch_db:stock_move_line_divide.view_stock_move_line_operation_tree
#: model_terms:ir.ui.view,arch_db:stock_move_line_divide.view_stock_quant_tree_editable_partner_on_package
#: model_terms:ir.ui.view,arch_db:stock_move_line_divide.view_stock_quant_tree_partner_on_package
msgid "Partner (package)"
msgstr "Client"
10 changes: 10 additions & 0 deletions stock_move_line_divide/i18n/stock_move_line_divide.pot
Original file line number Diff line number Diff line change
Expand Up @@ -63,3 +63,13 @@ msgstr ""
#: model:ir.model,name:stock_move_line_divide.model_stock_picking
msgid "Transfer"
msgstr ""

#. module: stock_move_line_divide
#: model:ir.model.fields,field_description:stock_move_line_divide.field_stock_move_line__partner_id
#: model:ir.model.fields,field_description:stock_move_line_divide.field_stock_quant__partner_id
#: model_terms:ir.ui.view,arch_db:stock_move_line_divide.view_stock_move_line_detailed_operation_tree
#: model_terms:ir.ui.view,arch_db:stock_move_line_divide.view_stock_move_line_operation_tree
#: model_terms:ir.ui.view,arch_db:stock_move_line_divide.view_stock_quant_tree_editable_partner_on_package
#: model_terms:ir.ui.view,arch_db:stock_move_line_divide.view_stock_quant_tree_partner_on_package
msgid "Partner (package)"
msgstr ""
2 changes: 2 additions & 0 deletions stock_move_line_divide/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,5 @@
from . import stock_picking
from . import res_config_settings
from . import uom_uom
from . import stock_quant
from . import stock_quant_package
66 changes: 64 additions & 2 deletions stock_move_line_divide/models/stock_move_line.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,16 @@ class StockMoveLine(models.Model):

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

partner_id = fields.Many2one(
"res.partner",
string="Partner (package)",
related="result_package_id.partner_id",
)

def _get_partner_from_mo(self):
production = self.move_id.production_id
return getattr(production, "manual_partner_id", False)

def _get_default_dest_location(self):
if self.location_dest_id != self.move_id.location_dest_id:
return self.location_dest_id
Expand Down Expand Up @@ -42,8 +52,31 @@ def action_create_package(self, base_prefix=None):
name = f"{prefix} - {next_seq:03}"
pack_vals.update({"name": name})

package = self.env["stock.quant.package"].create(pack_vals)
return package
partner = self._get_partner_from_mo()
if partner and self.move_id.picking_type_id.code != "incoming":
pack_vals["partner_id"] = partner.id

return self.env["stock.quant.package"].create(pack_vals)

def _ensure_partner_on_packages(self, packages):
partner = self._get_partner_from_mo()
if (
partner
and packages
and all(
picking.picking_type_id.code != "incoming"
for picking in self.mapped("move_id.picking_id")
)
):
packages.filtered(lambda p: p and not p.partner_id).write(
{"partner_id": partner.id}
)

def write(self, vals):
res = super().write(vals)
if "result_package_id" in vals:
self._ensure_partner_on_packages(self.mapped("result_package_id"))
return res

def action_divide(self):
self.ensure_one()
Expand Down Expand Up @@ -84,9 +117,12 @@ def action_divide(self):
self.result_package_id.name if self.result_package_id else self.reference
)

created_packages = []

first_qty = qty_quantities.pop(0)
first_packaging_qty = packaging_qty_quantities.pop(0)
first_package = self.action_create_package(base_prefix=base_prefix)
created_packages.append(first_package)

self.write(
{
Expand All @@ -102,6 +138,7 @@ def action_divide(self):

for i, qty in enumerate(qty_quantities):
package = self.action_create_package(base_prefix=base_prefix)
created_packages.append(package)
new_vals = self.copy_data()[0]
new_vals.update(
{
Expand All @@ -118,6 +155,10 @@ def action_divide(self):
new_vals
)

self._ensure_partner_on_packages(
self.env["stock.quant.package"].browse([p.id for p in created_packages])
)

@api.onchange("product_packaging_id")
def _onchange_product_packaging_id(self):
packaging = self.product_packaging_id
Expand All @@ -137,6 +178,27 @@ def _onchange_product_packaging_id(self):
self.product_packaging_qty = 0
self.qty_done = 1

@api.onchange("result_package_id")
def _onchange_result_package_id_set_partner(self):
for line in self:
pkg = line.result_package_id
if not pkg:
continue
picking = line.move_id.picking_id
picking_code = (
picking.picking_type_code
or (picking.picking_type_id and picking.picking_type_id.code)
or False
)

if picking_code == "incoming":
if pkg.partner_id:
pkg.sudo().write({"partner_id": False})
continue
partner = line._get_partner_from_mo()
if partner and not pkg.partner_id:
pkg.sudo().write({"partner_id": partner.id})

@api.model_create_multi
def create(self, vals_list):
for vals in vals_list:
Expand Down
12 changes: 12 additions & 0 deletions stock_move_line_divide/models/stock_quant.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from odoo import fields, models


class StockQuant(models.Model):
_inherit = "stock.quant"

partner_id = fields.Many2one(
"res.partner",
string="Partner (package)",
related="package_id.partner_id",
store=True,
)
28 changes: 28 additions & 0 deletions stock_move_line_divide/models/stock_quant_package.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
from odoo import api, fields, models


class StockQuantPackage(models.Model):
_inherit = "stock.quant.package"

partner_id = fields.Many2one(
"res.partner",
string="Partner",
)

@api.model_create_multi
def create(self, vals_list):
cleaned = []
for vals in vals_list:
v = dict(vals)
if (
not self.env.context.get("force_mo_package_partner")
and v.get("partner_id")
and self.env.context.get("active_model") == "stock.picking"
):
picking = self.env["stock.picking"].browse(
self.env.context.get("active_id")
)
if picking.exists() and picking.picking_type_code == "incoming":
v.pop("partner_id", None)
cleaned.append(v)
return super().create(cleaned)
22 changes: 22 additions & 0 deletions stock_move_line_divide/views/stock_move_line_views.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,17 @@
<field name="package_id" position="attributes">
<attribute name="invisible">1</attribute>
</field>

<xpath expr="//tree/field[@name='owner_id']" position="attributes">
<attribute name="invisible">1</attribute>
</xpath>

<xpath
expr="//tree/field[@name='result_package_id' and @groups='stock.group_tracking_lot']"
position="after"
>
<field name="partner_id" string="Partner (package)" optional="show" />
</xpath>
</field>
</record>

Expand All @@ -48,6 +59,17 @@
<field name="package_id" position="attributes">
<attribute name="invisible">1</attribute>
</field>

<xpath expr="//tree/field[@name='owner_id']" position="attributes">
<attribute name="invisible">1</attribute>
</xpath>

<xpath
expr="//tree/field[@name='result_package_id' and @groups='stock.group_tracking_lot']"
position="after"
>
<field name="partner_id" string="Partner (package)" optional="show" />
</xpath>
</field>
</record>

Expand Down
14 changes: 14 additions & 0 deletions stock_move_line_divide/views/stock_quant_package_views.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="view_quant_package_tree_partner" model="ir.ui.view">
<field name="name">stock.quant.package.tree.partner</field>
<field name="model">stock.quant.package</field>
<field name="inherit_id" ref="stock.view_quant_package_tree" />
<field name="arch" type="xml">
<xpath expr="//tree/field[@name='display_name']" position="after">
<field name="partner_id" string="Partner" optional="show" />
</xpath>

</field>
</record>
</odoo>
Loading