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
38 changes: 38 additions & 0 deletions sale_account_line_ipnr_split/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
.. image:: https://img.shields.io/badge/license-AGPL--3-blue.svg
:target: https://opensource.org/licenses/AGPL-3.0
:alt: License: AGPL-3

============================
Sale Account Line IPNR Split
============================

Splits the IPNR amount embedded in the sale price into a separate line
for each product containing non-recyclable plastic.

Features:
- IPNR split on sale orders
- IPNR split on invoices
- Split reversal (order and invoice), restoring the original gross price
- Preserves analytic accounting, taxes and line order

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

Bugs are tracked on `GitHub Issues
<https://github.com/avanzosc/sale-addons/issues>`_. In case of trouble,
please check there if your issue has already been reported. If you spotted
it first, help us smash it by providing detailed and welcomed feedback.

Credits
=======

Contributors
------------

* Ana Juaristi <[email protected]>
* Lucía Echeverría <[email protected]>

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



1 change: 1 addition & 0 deletions sale_account_line_ipnr_split/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
22 changes: 22 additions & 0 deletions sale_account_line_ipnr_split/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Copyright 2026 Lucía Echeverría - AvanzOSC
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
{
"name": "Sale Account Line IPNR Split",
"summary": "Breakdown of IPNR into separate lines on invoices and sales orders",
"version": "16.0.1.0.0",
"category": "Accounting/Invoicing",
"license": "AGPL-3",
"author": "AvanzOSC",
"website": "https://github.com/avanzosc/sale-addons",
"depends": [
"sale",
"account",
"l10n_es_aeat_mod592",
],
"data": [
"views/account_move_views.xml",
"views/sale_order_views.xml",
"views/res_config_settings_views.xml",
],
"installable": True,
}
168 changes: 168 additions & 0 deletions sale_account_line_ipnr_split/i18n/ca_ES.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_account_line_ipnr_split
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-03-09 13:54+0000\n"
"PO-Revision-Date: 2026-03-09 13:54+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

#. module: sale_account_line_ipnr_split
#: model:ir.model.fields,help:sale_account_line_ipnr_split.field_account_move_line__x_ipnr_parent_line_id
msgid "Bill line to which this IPNR line belongs."
msgstr "Línia de factura a la qual pertany aquesta línia d'IPNR."

#. module: sale_account_line_ipnr_split
#: model:ir.model,name:sale_account_line_ipnr_split.model_res_config_settings
msgid "Config Settings"
msgstr "Ajustos de configuració"

#. module: sale_account_line_ipnr_split
#: model_terms:ir.ui.view,arch_db:sale_account_line_ipnr_split.res_config_settings_view_form
msgid "Decimal places used when rounding IPNR prices."
msgstr "Nombre de decimals utilitzats en arrodonir els preus de l'IPNR."

#. module: sale_account_line_ipnr_split
#: model_terms:ir.ui.view,arch_db:sale_account_line_ipnr_split.res_config_settings_view_form
msgid "IPNR"
msgstr ""

#. module: sale_account_line_ipnr_split
#: model:ir.model.fields,field_description:sale_account_line_ipnr_split.field_res_config_settings__x_ipnr_product_id
#: model_terms:ir.ui.view,arch_db:sale_account_line_ipnr_split.res_config_settings_view_form
msgid "IPNR Product"
msgstr "Producte IPNR"

#. module: sale_account_line_ipnr_split
#. odoo-python
#: code:addons/sale_account_line_ipnr_split/models/account_move.py:0
#: code:addons/sale_account_line_ipnr_split/models/sale_order.py:0
#, python-format
msgid "IPNR product not configured. Please set it in Sales Settings → IPNR."
msgstr "Producte IPNR no configurat. Si us plau, configureu-lo a Configuració de Vendes → IPNR."

#. module: sale_account_line_ipnr_split
#: model:ir.actions.server,name:sale_account_line_ipnr_split.action_account_move_ipnr_split
#: model:ir.actions.server,name:sale_account_line_ipnr_split.action_sale_order_ipnr_split
msgid "IPNR – Line Breakdown"
msgstr "IPNR – Desglossament de línies"

#. module: sale_account_line_ipnr_split
#: model:ir.actions.server,name:sale_account_line_ipnr_split.action_account_move_ipnr_reverse
#: model:ir.actions.server,name:sale_account_line_ipnr_split.action_sale_order_ipnr_reverse
msgid "IPNR – Line Breakdown REVERT"
msgstr "IPNR – Desglossament de línies REVERTIR"

#. module: sale_account_line_ipnr_split
#: model:ir.model,name:sale_account_line_ipnr_split.model_account_move
msgid "Journal Entry"
msgstr "Apunt comptable"

#. module: sale_account_line_ipnr_split
#: model:ir.model,name:sale_account_line_ipnr_split.model_account_move_line
msgid "Journal Item"
msgstr "Apunt comptable"

#. module: sale_account_line_ipnr_split
#. odoo-python
#: code:addons/sale_account_line_ipnr_split/models/account_move.py:0
#: code:addons/sale_account_line_ipnr_split/models/sale_order.py:0
#, python-format
msgid "No record found in l10n.es.aeat.mod592.report. Cannot read amount_plastic_tax."
msgstr "No s'ha trobat cap registre a l10n.es.aeat.mod592.report. No es pot llegir amount_plastic_tax."

#. module: sale_account_line_ipnr_split
#: model:ir.model.fields,help:sale_account_line_ipnr_split.field_res_config_settings__x_ipnr_rounding_digits
msgid ""
"Number of decimal places used when rounding IPNR unit prices (default: 6)."
msgstr ""
"Nombre de decimals utilitzats en arrodonir els preus unitaris de l'IPNR (per"
" defecte: 6)."

#. module: sale_account_line_ipnr_split
#: model:ir.model.fields,field_description:sale_account_line_ipnr_split.field_sale_order_line__x_ipnr_gross_price_unit
msgid "Original unit price (with IPNR)"
msgstr "Preu unitari original (amb IPNR)"

#. module: sale_account_line_ipnr_split
#: model:ir.model.fields,help:sale_account_line_ipnr_split.field_sale_order_line__x_ipnr_gross_price_unit
msgid ""
"Original unit price before IPNR breakdown (IPNR included). It is used to "
"reverse the breakdown and to transfer the gross price to the invoice."
msgstr ""
"Preu unitari original abans del desglossament de l'IPNR (IPNR inclòs). "
"S'utilitza per revertir el desglossament i transferir el preu brut a la "
"factura."

#. module: sale_account_line_ipnr_split
#: model:ir.model.fields,help:sale_account_line_ipnr_split.field_account_move_line__x_ipnr_gross_price_unit
msgid ""
"Original unit price before IPNR breakdown (IPNR included). It is used to "
"reverse the breakdown."
msgstr ""
"Preu unitari original abans del desglossament de l'IPNR (IPNR inclòs). "
"S'utilitza per revertir el desglossament."

#. module: sale_account_line_ipnr_split
#: model:ir.model.fields,field_description:sale_account_line_ipnr_split.field_account_move_line__x_ipnr_parent_line_id
msgid "Parent invoice line ID"
msgstr "ID de línia de factura mare"

#. module: sale_account_line_ipnr_split
#: model:ir.model.fields,field_description:sale_account_line_ipnr_split.field_sale_order_line__x_ipnr_parent_line_id
msgid "Parent order line ID"
msgstr "ID de línia de comanda mare"

#. module: sale_account_line_ipnr_split
#: model_terms:ir.ui.view,arch_db:sale_account_line_ipnr_split.res_config_settings_view_form
msgid "Product used for IPNR breakdown lines."
msgstr "Producte utilitzat per a les línies de desglossament de l'IPNR."

#. module: sale_account_line_ipnr_split
#: model:ir.model.fields,help:sale_account_line_ipnr_split.field_res_config_settings__x_ipnr_product_id
msgid "Product used to represent the IPNR line in sales orders and invoices."
msgstr ""
"Producte utilitzat per representar la línia d'IPNR en comandes de venda i "
"factures."

#. module: sale_account_line_ipnr_split
#: model:ir.model.fields,field_description:sale_account_line_ipnr_split.field_res_config_settings__x_ipnr_rounding_digits
#: model_terms:ir.ui.view,arch_db:sale_account_line_ipnr_split.res_config_settings_view_form
msgid "Rounding decimals"
msgstr "Decimals d'arrodoniment"

#. module: sale_account_line_ipnr_split
#: model:ir.model,name:sale_account_line_ipnr_split.model_sale_order
msgid "Sales Order"
msgstr "Comanda de venda"

#. module: sale_account_line_ipnr_split
#: model:ir.model,name:sale_account_line_ipnr_split.model_sale_order_line
msgid "Sales Order Line"
msgstr "Línia comanda de venda"

#. module: sale_account_line_ipnr_split
#: model:ir.model.fields,help:sale_account_line_ipnr_split.field_sale_order_line__x_ipnr_parent_line_id
msgid "Sales order line to which this IPNR line belongs."
msgstr "Línia de comanda de venda a la qual pertany aquesta línia d'IPNR."

#. module: sale_account_line_ipnr_split
#. odoo-python
#: code:addons/sale_account_line_ipnr_split/models/account_move.py:0
#: code:addons/sale_account_line_ipnr_split/models/sale_order.py:0
#, python-format
msgid "The configured IPNR product no longer exists. Please update it in Sales Settings → IPNR."
msgstr "El producte IPNR configurat ja no existeix. Si us plau, actualitzeu-lo a Configuració de Vendes → IPNR."

#. module: sale_account_line_ipnr_split
#: model:ir.model.fields,field_description:sale_account_line_ipnr_split.field_account_move_line__x_ipnr_gross_price_unit
msgid "Unit price including IPNR"
msgstr "Preu unitari amb IPNR inclòs"
163 changes: 163 additions & 0 deletions sale_account_line_ipnr_split/i18n/en_US.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_account_line_ipnr_split
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-03-09 13:54+0000\n"
"PO-Revision-Date: 2026-03-09 13:54+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

#. module: sale_account_line_ipnr_split
#: model:ir.model.fields,help:sale_account_line_ipnr_split.field_account_move_line__x_ipnr_parent_line_id
msgid "Bill line to which this IPNR line belongs."
msgstr ""

#. module: sale_account_line_ipnr_split
#: model:ir.model,name:sale_account_line_ipnr_split.model_res_config_settings
msgid "Config Settings"
msgstr ""

#. module: sale_account_line_ipnr_split
#: model_terms:ir.ui.view,arch_db:sale_account_line_ipnr_split.res_config_settings_view_form
msgid "Decimal places used when rounding IPNR prices."
msgstr ""

#. module: sale_account_line_ipnr_split
#: model_terms:ir.ui.view,arch_db:sale_account_line_ipnr_split.res_config_settings_view_form
msgid "IPNR"
msgstr ""

#. module: sale_account_line_ipnr_split
#: model:ir.model.fields,field_description:sale_account_line_ipnr_split.field_res_config_settings__x_ipnr_product_id
#: model_terms:ir.ui.view,arch_db:sale_account_line_ipnr_split.res_config_settings_view_form
msgid "IPNR Product"
msgstr ""

#. module: sale_account_line_ipnr_split
#. odoo-python
#: code:addons/sale_account_line_ipnr_split/models/account_move.py:0
#: code:addons/sale_account_line_ipnr_split/models/sale_order.py:0
#, python-format
msgid "IPNR product not configured. Please set it in Sales Settings → IPNR."
msgstr ""

#. module: sale_account_line_ipnr_split
#: model:ir.actions.server,name:sale_account_line_ipnr_split.action_account_move_ipnr_split
#: model:ir.actions.server,name:sale_account_line_ipnr_split.action_sale_order_ipnr_split
msgid "IPNR – Line Breakdown"
msgstr ""

#. module: sale_account_line_ipnr_split
#: model:ir.actions.server,name:sale_account_line_ipnr_split.action_account_move_ipnr_reverse
#: model:ir.actions.server,name:sale_account_line_ipnr_split.action_sale_order_ipnr_reverse
msgid "IPNR – Line Breakdown REVERT"
msgstr ""

#. module: sale_account_line_ipnr_split
#: model:ir.model,name:sale_account_line_ipnr_split.model_account_move
msgid "Journal Entry"
msgstr ""

#. module: sale_account_line_ipnr_split
#: model:ir.model,name:sale_account_line_ipnr_split.model_account_move_line
msgid "Journal Item"
msgstr ""

#. module: sale_account_line_ipnr_split
#. odoo-python
#: code:addons/sale_account_line_ipnr_split/models/account_move.py:0
#: code:addons/sale_account_line_ipnr_split/models/sale_order.py:0
#, python-format
msgid ""
"No record found in l10n.es.aeat.mod592.report. Cannot read "
"amount_plastic_tax."
msgstr ""

#. module: sale_account_line_ipnr_split
#: model:ir.model.fields,help:sale_account_line_ipnr_split.field_res_config_settings__x_ipnr_rounding_digits
msgid ""
"Number of decimal places used when rounding IPNR unit prices (default: 6)."
msgstr ""

#. module: sale_account_line_ipnr_split
#: model:ir.model.fields,field_description:sale_account_line_ipnr_split.field_sale_order_line__x_ipnr_gross_price_unit
msgid "Original unit price (with IPNR)"
msgstr ""

#. module: sale_account_line_ipnr_split
#: model:ir.model.fields,help:sale_account_line_ipnr_split.field_sale_order_line__x_ipnr_gross_price_unit
msgid ""
"Original unit price before IPNR breakdown (IPNR included). It is used to "
"reverse the breakdown and to transfer the gross price to the invoice."
msgstr ""

#. module: sale_account_line_ipnr_split
#: model:ir.model.fields,help:sale_account_line_ipnr_split.field_account_move_line__x_ipnr_gross_price_unit
msgid ""
"Original unit price before IPNR breakdown (IPNR included). It is used to "
"reverse the breakdown."
msgstr ""

#. module: sale_account_line_ipnr_split
#: model:ir.model.fields,field_description:sale_account_line_ipnr_split.field_account_move_line__x_ipnr_parent_line_id
msgid "Parent invoice line ID"
msgstr ""

#. module: sale_account_line_ipnr_split
#: model:ir.model.fields,field_description:sale_account_line_ipnr_split.field_sale_order_line__x_ipnr_parent_line_id
msgid "Parent order line ID"
msgstr ""

#. module: sale_account_line_ipnr_split
#: model_terms:ir.ui.view,arch_db:sale_account_line_ipnr_split.res_config_settings_view_form
msgid "Product used for IPNR breakdown lines."
msgstr ""

#. module: sale_account_line_ipnr_split
#: model:ir.model.fields,help:sale_account_line_ipnr_split.field_res_config_settings__x_ipnr_product_id
msgid "Product used to represent the IPNR line in sales orders and invoices."
msgstr ""

#. module: sale_account_line_ipnr_split
#: model:ir.model.fields,field_description:sale_account_line_ipnr_split.field_res_config_settings__x_ipnr_rounding_digits
#: model_terms:ir.ui.view,arch_db:sale_account_line_ipnr_split.res_config_settings_view_form
msgid "Rounding decimals"
msgstr ""

#. module: sale_account_line_ipnr_split
#: model:ir.model,name:sale_account_line_ipnr_split.model_sale_order
msgid "Sales Order"
msgstr ""

#. module: sale_account_line_ipnr_split
#: model:ir.model,name:sale_account_line_ipnr_split.model_sale_order_line
msgid "Sales Order Line"
msgstr ""

#. module: sale_account_line_ipnr_split
#: model:ir.model.fields,help:sale_account_line_ipnr_split.field_sale_order_line__x_ipnr_parent_line_id
msgid "Sales order line to which this IPNR line belongs."
msgstr ""

#. module: sale_account_line_ipnr_split
#. odoo-python
#: code:addons/sale_account_line_ipnr_split/models/account_move.py:0
#: code:addons/sale_account_line_ipnr_split/models/sale_order.py:0
#, python-format
msgid ""
"The configured IPNR product no longer exists. Please update it in Sales "
"Settings → IPNR."
msgstr ""

#. module: sale_account_line_ipnr_split
#: model:ir.model.fields,field_description:sale_account_line_ipnr_split.field_account_move_line__x_ipnr_gross_price_unit
msgid "Unit price including IPNR"
msgstr ""
Loading