Metadata-Version: 2.1
Name: odoo-addon-product_logistics_uom_net_weight
Version: 16.0.1.0.0.4
Summary: Integration module for product_logistics_uom and product_net_weight compatibility
Home-page: https://github.com/OCA/product-attribute
Author: Factor Libre, Odoo Community Association (OCA)
Author-email: support@odoo-community.org
License: AGPL-3
Classifier: Programming Language :: Python
Classifier: Framework :: Odoo
Classifier: Framework :: Odoo :: 16.0
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
Classifier: Development Status :: 4 - Beta
Requires-Python: >=3.10
Requires-Dist: odoo-addon-product-logistics-uom<16.1dev,>=16.0dev
Requires-Dist: odoo-addon-product-net-weight<16.1dev,>=16.0dev
Requires-Dist: odoo<16.1dev,>=16.0a

.. image:: https://odoo-community.org/readme-banner-image
   :target: https://odoo-community.org/get-involved?utm_source=readme
   :alt: Odoo Community Association

============================================
Product Logistics UoM Net Weight Integration
============================================

.. 
   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   !! This file is generated by oca-gen-addon-readme !!
   !! changes will be overwritten.                   !!
   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   !! source digest: sha256:8ae7b8e405db0d6e8ea92a79a0ac580d9ba6d155aeb485bb63806af5d6e4123d
   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
    :target: https://odoo-community.org/page/development-status
    :alt: Beta
.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
    :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
    :alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fproduct--attribute-lightgray.png?logo=github
    :target: https://github.com/OCA/product-attribute/tree/16.0/product_logistics_uom_net_weight
    :alt: OCA/product-attribute
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
    :target: https://translation.odoo-community.org/projects/product-attribute-16-0/product-attribute-16-0-product_logistics_uom_net_weight
    :alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
    :target: https://runboat.odoo-community.org/builds?repo=OCA/product-attribute&target_branch=16.0
    :alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

This module solves compatibility issues between ``product_logistics_uom`` and ``product_net_weight``
when both modules are installed simultaneously and products use different Units of Measure (UoM) for weight.

The problem occurs because:

* ``product_logistics_uom`` stores weight values converted to the system's base UoM
* ``product_net_weight`` assumes all weight fields use the same UoM for validation
* This causes ``ValidationError`` when comparing net weight vs gross weight in different UoM

This integration module provides:

* A new ``product_net_weight`` field that displays net weight in the product's configured UoM
* Proper UoM conversion between product-specific and system UoM
* Maintains compatibility with existing data through a migration hook
* Preserves all functionality from both original modules
* **Automatic installation** when both dependency modules are present

**Auto-Installation Behavior**

This module is configured for automatic installation when both ``product_logistics_uom`` 
and ``product_net_weight`` are installed in the same database. This ensures seamless 
compatibility without manual intervention, preventing ValidationError issues from occurring.

The validation logic is corrected to compare weights in the same UoM, preventing false
validation errors while maintaining data integrity.

**Table of contents**

.. contents::
   :local:

Installation
============

This module includes a pre-installation hook that migrates existing ``net_weight`` data 
to the new ``product_net_weight`` field.

Migration Process
~~~~~~~~~~~~~~~~~

The hook performs the following operations:

1. **Database Schema**: Creates the new ``product_net_weight`` columns
2. **Data Migration**: Copies existing ``net_weight`` values to ``product_net_weight``
3. **No UoM Conversion**: Direct value copy is safe because existing ``net_weight`` data
   is already stored in the system's base UoM

Why No UoM Conversion is Needed
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The migration performs a direct copy without UoM conversion due to architectural analysis:

**1. Impossibility of Different UoM Data**

Before this integration module, it was impossible to have ``net_weight`` values 
in a UoM different from the system's base UoM:

* **Without product_logistics_uom**: Products always use system UoM for weight
* **With product_logistics_uom**: Only display UoM changes, storage remains in system UoM
* **The compatibility bug**: Prevented users from successfully entering net_weight with custom UoM

**2. Data Integrity Guarantee**

Existing ``net_weight`` values are guaranteed to be in the system's base UoM, 
making direct migration both safe and correct.

**3. Post-Installation Behavior**

After installation, computed fields automatically handle proper UoM conversions 
for new data entry and display, ensuring future data consistency.

**4. Performance Optimization**

Direct SQL migration is significantly faster than computed field recalculation 
for databases with many existing products.

This approach ensures data consistency while maintaining optimal performance 
during the migration process.

Configuration
=============

No additional configuration is required. This module installs automatically when dependencies are met.

Auto-Installation
~~~~~~~~~~~~~~~~~

This module is configured with ``auto_install=True`` and will be automatically 
installed when both dependencies are present:

* ``product_logistics_uom``
* ``product_net_weight``

Manual installation is not required - the system will automatically detect when 
both modules are installed and provide the compatibility layer seamlessly.

System Requirements
~~~~~~~~~~~~~~~~~~~

* Enable "Manage Multiple Units of Measure" in Inventory settings
* Ensure proper weight UoM categories are configured in your system

The integration works automatically once dependencies are met.

Usage
=====

This module automatically integrates ``product_logistics_uom`` and ``product_net_weight`` functionality.
It installs automatically when both dependency modules are present in your system.

After automatic installation, you can:

* Configure different weight UoM per product in the Inventory tab
* Set net weight values that will be properly converted and validated
* View net weight in the product's configured UoM while maintaining system consistency

Example scenario:

* System UoM: kg (kilograms)
* Product UoM: g (grams) 
* Product weight: 1000 g → stored as 1 kg in system
* Net weight: 800 g → displayed as 800 g, stored as 0.8 kg, validated correctly

The module ensures that weight comparisons are made in the same UoM, preventing
validation errors that occurred when using both modules independently.

**Note**: Existing net weight values are migrated automatically during installation.
The migration assumes existing data is in the system's base UoM, which is the standard
behavior before this integration module.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/product-attribute/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/product-attribute/issues/new?body=module:%20product_logistics_uom_net_weight%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
~~~~~~~

* Factor Libre

Contributors
~~~~~~~~~~~~

* Adrián Cifuentes <adrian.cifuentes@gmail.com>

Maintainers
~~~~~~~~~~~

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
   :alt: Odoo Community Association
   :target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

.. |maintainer-factorlibre| image:: https://github.com/factorlibre.png?size=40px
    :target: https://github.com/factorlibre
    :alt: factorlibre

Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:

|maintainer-factorlibre| 

This module is part of the `OCA/product-attribute <https://github.com/OCA/product-attribute/tree/16.0/product_logistics_uom_net_weight>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
