diff --git a/stock_picking_invoice_link/README.rst b/stock_picking_invoice_link/README.rst new file mode 100644 index 000000000000..d88a4f867c01 --- /dev/null +++ b/stock_picking_invoice_link/README.rst @@ -0,0 +1,137 @@ +========================== +Stock Picking Invoice Link +========================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:b84770438e83e728fc3e438a5542c07883adb15b786fff744733439c6992bcd4 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png + :target: https://odoo-community.org/page/development-status + :alt: Mature +.. |badge2| image:: https://img.shields.io/badge/licence-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%2Fstock--logistics--workflow-lightgray.png?logo=github + :target: https://github.com/OCA/stock-logistics-workflow/tree/18.0/stock_picking_invoice_link + :alt: OCA/stock-logistics-workflow +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/stock-logistics-workflow-18-0/stock-logistics-workflow-18-0-stock_picking_invoice_link + :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/stock-logistics-workflow&target_branch=18.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds a link between pickings and invoices as well as on the +lines. Invoices are generated from sales orders. With this module, you +can find back which deliveries an invoice relates to. + +In standard, if you make a partial delivery and invoice it, then make +remaining delivery and invoice it, it is impossible to known to what +delivery the invoices relate to. You only have the quantity. + +This module is also useful if you want to present data on the invoice +report grouped by deliveries. + +Note that the links are only for products with an invoicing policy set +on delivery. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +- Create a Sales Order and confirm. +- Deliver its pickings totally or partially. +- Create an invoice of the goods delivered. +- If you open invoice form, you must see a new Pickings tab with + information about them. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub 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 `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* Agile Business Group +* Tecnativa +* BCIM sprl +* Softdil S.L + +Contributors +------------ + +- `Agile Business Group `__ + + - Lorenzo Battistini + - Alex Comba + +- `Akretion `__ + + - Alexis de Lattre + +- `AvanzOsc `__ + + - Oihane Crucelaegui + - Ana Juaristi + - Alfredo de la Fuente + - Ainara Galdona + +- `Tecnativa `__ + + - Pedro M. Baeza + - David Vidal + - Sergio Teruel + - João Marques + +- Unai Alkorta +- Iñaki Zabala +- Jacques-Etienne Baudoux +- Aitor Bouzas Naveira +- Carlos Lopez Mite +- Joel Matías Zilli +- `Trobz `__: + + - Thao Le + +Other credits +------------- + +The migration of this module from 16.0 to 17.0 was financially supported +by Camptocamp. + +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. + +This module is part of the `OCA/stock-logistics-workflow `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/stock_picking_invoice_link/__init__.py b/stock_picking_invoice_link/__init__.py new file mode 100644 index 000000000000..9dd4211ea965 --- /dev/null +++ b/stock_picking_invoice_link/__init__.py @@ -0,0 +1,4 @@ +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from . import models +from . import wizards diff --git a/stock_picking_invoice_link/__manifest__.py b/stock_picking_invoice_link/__manifest__.py new file mode 100644 index 000000000000..6264b221839f --- /dev/null +++ b/stock_picking_invoice_link/__manifest__.py @@ -0,0 +1,24 @@ +# Copyright 2013-17 Agile Business Group () +# Copyright 2016 AvanzOSC () +# Copyright 2016 Pedro M. Baeza +# Copyright 2017 Jacques-Etienne Baudoux +# Copyright 2021 Tecnativa - João Marques +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +{ + "name": "Stock Picking Invoice Link", + "version": "18.0.1.0.0", + "category": "Warehouse Management", + "summary": "Adds link between pickings and invoices", + "author": "Agile Business Group, " + "Tecnativa, " + "BCIM sprl, " + "Softdil S.L, " + "Odoo Community Association (OCA)", + "website": "https://github.com/OCA/stock-logistics-workflow", + "license": "AGPL-3", + "development_status": "Mature", + "depends": ["sale_stock"], + "data": ["views/stock_view.xml", "views/account_invoice_view.xml"], + "installable": True, +} diff --git a/stock_picking_invoice_link/i18n/ca.po b/stock_picking_invoice_link/i18n/ca.po new file mode 100644 index 000000000000..e52dd84866e7 --- /dev/null +++ b/stock_picking_invoice_link/i18n/ca.po @@ -0,0 +1,122 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_picking_invoice_link +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-12-18 03:48+0000\n" +"PO-Revision-Date: 2017-12-18 03:48+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Catalan (https://www.transifex.com/oca/teams/23907/ca/)\n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move_reversal +msgid "Account Move Reversal" +msgstr "" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.invoice_form +msgid "Delivery" +msgstr "" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_picking_form +msgid "Invoice" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_move__invoice_line_ids +msgid "Invoice Line" +msgstr "" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_move_form +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_move_picking_form +msgid "Invoice Lines" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_picking__invoice_ids +msgid "Invoices" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move +msgid "Journal Entry" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move_line +msgid "Journal Item" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_picking__invoice_count +msgid "Number of Invoices" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_bank_statement_line__picking_count +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move__picking_count +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_payment__picking_count +msgid "Pickings count" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_bank_statement_line__picking_ids +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move__picking_ids +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_payment__picking_ids +msgid "Related Pickings" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move_line__move_line_ids +msgid "Related Stock Moves" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_bank_statement_line__picking_ids +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_move__picking_ids +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_payment__picking_ids +msgid "" +"Related pickings (only when the invoice has been generated from a sale " +"order)." +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_move_line__move_line_ids +msgid "" +"Related stock moves (only when the invoice has been generated from a sale " +"order)." +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_stock_move +msgid "Stock Move" +msgstr "Moure l'estoc" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_stock_picking +msgid "Transfer" +msgstr "" + +#. module: stock_picking_invoice_link +#. odoo-python +#: code:addons/stock_picking_invoice_link/models/stock_move.py:0 +#, python-format +msgid "You can not modify an invoiced stock move" +msgstr "" diff --git a/stock_picking_invoice_link/i18n/de.po b/stock_picking_invoice_link/i18n/de.po new file mode 100644 index 000000000000..dfee573ce970 --- /dev/null +++ b/stock_picking_invoice_link/i18n/de.po @@ -0,0 +1,133 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_picking_invoice_link +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-23 11:56+0000\n" +"PO-Revision-Date: 2024-03-05 16:34+0000\n" +"Last-Translator: Nils Coenen \n" +"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move_reversal +msgid "Account Move Reversal" +msgstr "Umkehrung Rechnungsübertragung" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.invoice_form +msgid "Delivery" +msgstr "Lieferung" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_picking_form +msgid "Invoice" +msgstr "Rechnung" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_move__invoice_line_ids +msgid "Invoice Line" +msgstr "Rechnungszeile" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_move_form +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_move_picking_form +msgid "Invoice Lines" +msgstr "Rechnungszeilen" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_picking__invoice_ids +msgid "Invoices" +msgstr "Rechnungen" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move +msgid "Journal Entry" +msgstr "Journaleintrag" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move_line +msgid "Journal Item" +msgstr "Journalelement" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_picking__invoice_count +msgid "Number of Invoices" +msgstr "Anzahl der Rechnungen" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_bank_statement_line__picking_count +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move__picking_count +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_payment__picking_count +msgid "Pickings count" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_bank_statement_line__picking_ids +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move__picking_ids +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_payment__picking_ids +msgid "Related Pickings" +msgstr "Verbundene Lieferungen" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move_line__move_line_ids +msgid "Related Stock Moves" +msgstr "Verbundene Lagerbewegungen" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_bank_statement_line__picking_ids +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_move__picking_ids +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_payment__picking_ids +msgid "" +"Related pickings (only when the invoice has been generated from a sale " +"order)." +msgstr "" +"Verbundene Lieferungen (nur wenn die Rechnung aus einem Verkaufsauftrag " +"generiert wurde)." + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_move_line__move_line_ids +msgid "" +"Related stock moves (only when the invoice has been generated from a sale " +"order)." +msgstr "" +"Verbundene Lagerbewegungen (nur wenn die Rechnung aus einem Verkaufsauftrag " +"generiert wurde)." + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_sale_order_line +msgid "Sales Order Line" +msgstr "Verkaufsauftragsposition" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_stock_move +msgid "Stock Move" +msgstr "Lagerbuchung" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_stock_picking +msgid "Transfer" +msgstr "Lieferung vornehmen" + +#. module: stock_picking_invoice_link +#. odoo-python +#: code:addons/stock_picking_invoice_link/models/stock_move.py:0 +#, python-format +msgid "You can not modify an invoiced stock move" +msgstr "Sie können eine in Rechnung gestellte Lagerbewegung nicht ändern" + +#~ msgid "Delivery Orders" +#~ msgstr "Lieferaufträge" + +#~ msgid "Pickings" +#~ msgstr "Pickaufträge" diff --git a/stock_picking_invoice_link/i18n/es.po b/stock_picking_invoice_link/i18n/es.po new file mode 100644 index 000000000000..1f3944edc2d4 --- /dev/null +++ b/stock_picking_invoice_link/i18n/es.po @@ -0,0 +1,140 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_picking_invoice_link +# +# Translators: +# OCA Transbot , 2017 +# Pedro M. Baeza , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-09-26 08:45+0000\n" +"PO-Revision-Date: 2023-11-11 18:37+0000\n" +"Last-Translator: Ivorra78 \n" +"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move_reversal +msgid "Account Move Reversal" +msgstr "Reversión de movimiento de cuenta" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.invoice_form +msgid "Delivery" +msgstr "Entrega" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_picking_form +msgid "Invoice" +msgstr "Factura" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_move__invoice_line_ids +msgid "Invoice Line" +msgstr "Línea de factura" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_move_form +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_move_picking_form +msgid "Invoice Lines" +msgstr "Líneas de factura" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_picking__invoice_ids +msgid "Invoices" +msgstr "Facturas" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move +msgid "Journal Entry" +msgstr "Entrada Diaria" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move_line +msgid "Journal Item" +msgstr "Apunte contable" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_picking__invoice_count +msgid "Number of Invoices" +msgstr "Número de facturas" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_bank_statement_line__picking_count +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move__picking_count +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_payment__picking_count +msgid "Pickings count" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_bank_statement_line__picking_ids +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move__picking_ids +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_payment__picking_ids +msgid "Related Pickings" +msgstr "Albaranes relacionados" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move_line__move_line_ids +msgid "Related Stock Moves" +msgstr "Movimientos de existencias relacionados" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_bank_statement_line__picking_ids +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_move__picking_ids +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_payment__picking_ids +msgid "" +"Related pickings (only when the invoice has been generated from a sale " +"order)." +msgstr "" +"Albaranes relacionados (solo cuando la factura ha sido generada desde un " +"pedido de venta)." + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_move_line__move_line_ids +msgid "" +"Related stock moves (only when the invoice has been generated from a sale " +"order)." +msgstr "" +"Movimientos de existencias relacionados (solo cuando la factura ha sido " +"generada desde un pedido de venta)." + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_sale_order_line +msgid "Sales Order Line" +msgstr "Línea de pedido de venta" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_stock_move +msgid "Stock Move" +msgstr "Movimiento de existencias" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_stock_picking +msgid "Transfer" +msgstr "Transferir" + +#. module: stock_picking_invoice_link +#. odoo-python +#: code:addons/stock_picking_invoice_link/models/stock_move.py:0 +#, python-format +msgid "You can not modify an invoiced stock move" +msgstr "No puede modificar un movimiento de existencias facturado" + +#~ msgid "Delivery Orders" +#~ msgstr "Órdenes de entrega" + +#~ msgid "Invoices Orders" +#~ msgstr "Facturas de Pedidos" + +#~ msgid "Journal Entries" +#~ msgstr "Asientos contables" + +#~ msgid "Pickings" +#~ msgstr "Albaranes" diff --git a/stock_picking_invoice_link/i18n/es_MX.po b/stock_picking_invoice_link/i18n/es_MX.po new file mode 100644 index 000000000000..eb92eee32b1d --- /dev/null +++ b/stock_picking_invoice_link/i18n/es_MX.po @@ -0,0 +1,123 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_picking_invoice_link +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-12-18 03:48+0000\n" +"PO-Revision-Date: 2017-12-18 03:48+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Spanish (Mexico) (https://www.transifex.com/oca/teams/23907/" +"es_MX/)\n" +"Language: es_MX\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move_reversal +msgid "Account Move Reversal" +msgstr "" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.invoice_form +msgid "Delivery" +msgstr "" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_picking_form +msgid "Invoice" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_move__invoice_line_ids +msgid "Invoice Line" +msgstr "" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_move_form +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_move_picking_form +msgid "Invoice Lines" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_picking__invoice_ids +msgid "Invoices" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move +msgid "Journal Entry" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move_line +msgid "Journal Item" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_picking__invoice_count +msgid "Number of Invoices" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_bank_statement_line__picking_count +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move__picking_count +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_payment__picking_count +msgid "Pickings count" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_bank_statement_line__picking_ids +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move__picking_ids +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_payment__picking_ids +msgid "Related Pickings" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move_line__move_line_ids +msgid "Related Stock Moves" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_bank_statement_line__picking_ids +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_move__picking_ids +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_payment__picking_ids +msgid "" +"Related pickings (only when the invoice has been generated from a sale " +"order)." +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_move_line__move_line_ids +msgid "" +"Related stock moves (only when the invoice has been generated from a sale " +"order)." +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_stock_move +msgid "Stock Move" +msgstr "Movimiento bursátil" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_stock_picking +msgid "Transfer" +msgstr "" + +#. module: stock_picking_invoice_link +#. odoo-python +#: code:addons/stock_picking_invoice_link/models/stock_move.py:0 +#, python-format +msgid "You can not modify an invoiced stock move" +msgstr "" diff --git a/stock_picking_invoice_link/i18n/fi.po b/stock_picking_invoice_link/i18n/fi.po new file mode 100644 index 000000000000..59eec55e8a94 --- /dev/null +++ b/stock_picking_invoice_link/i18n/fi.po @@ -0,0 +1,122 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_picking_invoice_link +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: stock-logistics-workflow (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-09-13 22:02+0000\n" +"PO-Revision-Date: 2016-09-15 12:44+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: Finnish (http://www.transifex.com/oca/OCA-stock-logistics-" +"workflow-8-0/language/fi/)\n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move_reversal +msgid "Account Move Reversal" +msgstr "" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.invoice_form +msgid "Delivery" +msgstr "" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_picking_form +msgid "Invoice" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_move__invoice_line_ids +msgid "Invoice Line" +msgstr "" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_move_form +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_move_picking_form +msgid "Invoice Lines" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_picking__invoice_ids +msgid "Invoices" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move +msgid "Journal Entry" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move_line +msgid "Journal Item" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_picking__invoice_count +msgid "Number of Invoices" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_bank_statement_line__picking_count +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move__picking_count +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_payment__picking_count +msgid "Pickings count" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_bank_statement_line__picking_ids +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move__picking_ids +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_payment__picking_ids +msgid "Related Pickings" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move_line__move_line_ids +msgid "Related Stock Moves" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_bank_statement_line__picking_ids +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_move__picking_ids +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_payment__picking_ids +msgid "" +"Related pickings (only when the invoice has been generated from a sale " +"order)." +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_move_line__move_line_ids +msgid "" +"Related stock moves (only when the invoice has been generated from a sale " +"order)." +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_stock_move +msgid "Stock Move" +msgstr "Varastosiirto" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_stock_picking +msgid "Transfer" +msgstr "" + +#. module: stock_picking_invoice_link +#. odoo-python +#: code:addons/stock_picking_invoice_link/models/stock_move.py:0 +#, python-format +msgid "You can not modify an invoiced stock move" +msgstr "" diff --git a/stock_picking_invoice_link/i18n/fr.po b/stock_picking_invoice_link/i18n/fr.po new file mode 100644 index 000000000000..f67ed67f096e --- /dev/null +++ b/stock_picking_invoice_link/i18n/fr.po @@ -0,0 +1,136 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_picking_invoice_link +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-23 11:56+0000\n" +"PO-Revision-Date: 2023-11-03 00:03+0000\n" +"Last-Translator: Alexis de Lattre \n" +"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move_reversal +msgid "Account Move Reversal" +msgstr "Extourne de la pièce comptable" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.invoice_form +msgid "Delivery" +msgstr "Livraison" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_picking_form +msgid "Invoice" +msgstr "Facture" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_move__invoice_line_ids +msgid "Invoice Line" +msgstr "Ligne de facture" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_move_form +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_move_picking_form +msgid "Invoice Lines" +msgstr "Lignes de facture" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_picking__invoice_ids +msgid "Invoices" +msgstr "Factures" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move +msgid "Journal Entry" +msgstr "Pièce comptable" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move_line +msgid "Journal Item" +msgstr "Écriture comptable" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_picking__invoice_count +msgid "Number of Invoices" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_bank_statement_line__picking_count +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move__picking_count +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_payment__picking_count +msgid "Pickings count" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_bank_statement_line__picking_ids +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move__picking_ids +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_payment__picking_ids +msgid "Related Pickings" +msgstr "Transferts liés" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move_line__move_line_ids +msgid "Related Stock Moves" +msgstr "Mouvements de stock liés" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_bank_statement_line__picking_ids +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_move__picking_ids +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_payment__picking_ids +msgid "" +"Related pickings (only when the invoice has been generated from a sale " +"order)." +msgstr "" +"Transferts liés (seulement quand la facture a été générée depuis une " +"commande client)." + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_move_line__move_line_ids +msgid "" +"Related stock moves (only when the invoice has been generated from a sale " +"order)." +msgstr "" +"Mouvements de stock liés (seulement quand la facture a été générée depuis " +"une commande client)." + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_sale_order_line +msgid "Sales Order Line" +msgstr "Ligne de commande client" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_stock_move +msgid "Stock Move" +msgstr "Mouvement de stock" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_stock_picking +msgid "Transfer" +msgstr "Transfert" + +#. module: stock_picking_invoice_link +#. odoo-python +#: code:addons/stock_picking_invoice_link/models/stock_move.py:0 +#, python-format +msgid "You can not modify an invoiced stock move" +msgstr "Vous ne pouvez pas modifier un mouvement de stock facturé" + +#~ msgid "Delivery Orders" +#~ msgstr "Bons de livraisons" + +#~ msgid "Invoices Orders" +#~ msgstr "Factures de commandes" + +#~ msgid "Pickings" +#~ msgstr "Préparations" diff --git a/stock_picking_invoice_link/i18n/hr.po b/stock_picking_invoice_link/i18n/hr.po new file mode 100644 index 000000000000..2a26a54d27ac --- /dev/null +++ b/stock_picking_invoice_link/i18n/hr.po @@ -0,0 +1,136 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_picking_invoice_link +# +# Translators: +# OCA Transbot , 2017 +# Bole , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-02-28 03:51+0000\n" +"PO-Revision-Date: 2023-03-01 17:23+0000\n" +"Last-Translator: Bole \n" +"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.14.1\n" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move_reversal +msgid "Account Move Reversal" +msgstr "" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.invoice_form +msgid "Delivery" +msgstr "" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_picking_form +msgid "Invoice" +msgstr "Račun" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_move__invoice_line_ids +msgid "Invoice Line" +msgstr "Stavka računa" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_move_form +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_move_picking_form +msgid "Invoice Lines" +msgstr "Stavke računa" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_picking__invoice_ids +msgid "Invoices" +msgstr "Računi" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move +msgid "Journal Entry" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move_line +msgid "Journal Item" +msgstr "Stavka dnevnika" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_picking__invoice_count +msgid "Number of Invoices" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_bank_statement_line__picking_count +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move__picking_count +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_payment__picking_count +msgid "Pickings count" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_bank_statement_line__picking_ids +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move__picking_ids +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_payment__picking_ids +msgid "Related Pickings" +msgstr "Povezane otpreme" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move_line__move_line_ids +msgid "Related Stock Moves" +msgstr "Povezana skladišna kretanja" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_bank_statement_line__picking_ids +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_move__picking_ids +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_payment__picking_ids +msgid "" +"Related pickings (only when the invoice has been generated from a sale " +"order)." +msgstr "Povezane otpreme (samo kad je račun napravljen iz prodajnog naloga)." + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_move_line__move_line_ids +msgid "" +"Related stock moves (only when the invoice has been generated from a sale " +"order)." +msgstr "" +"Povezana skladišna kretanja (samo kad je račun napravljen iz prodajnog " +"naloga)." + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_sale_order_line +msgid "Sales Order Line" +msgstr "Stavke prodajnog naloga" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_stock_move +msgid "Stock Move" +msgstr "Skladišno kretanje" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_stock_picking +msgid "Transfer" +msgstr "Prijenos" + +#. module: stock_picking_invoice_link +#. odoo-python +#: code:addons/stock_picking_invoice_link/models/stock_move.py:0 +#, python-format +msgid "You can not modify an invoiced stock move" +msgstr "Nije moguće mijenjati skladišno kretanje iz kojeg je napravljen račun" + +#~ msgid "Journal Entries" +#~ msgstr "Stavke dnevnika" + +#~ msgid "Pickings" +#~ msgstr "Otpreme" + +#~ msgid "View Invoice" +#~ msgstr "Vidi račun" diff --git a/stock_picking_invoice_link/i18n/it.po b/stock_picking_invoice_link/i18n/it.po new file mode 100644 index 000000000000..5003ceda6c74 --- /dev/null +++ b/stock_picking_invoice_link/i18n/it.po @@ -0,0 +1,137 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_picking_invoice_link +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-15 11:08+0000\n" +"PO-Revision-Date: 2024-06-14 16:38+0000\n" +"Last-Translator: mymage \n" +"Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move_reversal +msgid "Account Move Reversal" +msgstr "Storno movimento conto" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.invoice_form +msgid "Delivery" +msgstr "Consegna" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_picking_form +msgid "Invoice" +msgstr "Fattura" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_move__invoice_line_ids +msgid "Invoice Line" +msgstr "Riga fattura" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_move_form +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_move_picking_form +msgid "Invoice Lines" +msgstr "Righe fattura" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_picking__invoice_ids +msgid "Invoices" +msgstr "Fatture" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move +msgid "Journal Entry" +msgstr "Registrazione contabile" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move_line +msgid "Journal Item" +msgstr "Movimento contabile" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_picking__invoice_count +msgid "Number of Invoices" +msgstr "Numero di fatture" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_bank_statement_line__picking_count +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move__picking_count +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_payment__picking_count +msgid "Pickings count" +msgstr "Conteggio prelievi" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_bank_statement_line__picking_ids +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move__picking_ids +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_payment__picking_ids +msgid "Related Pickings" +msgstr "Picking Correlati" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move_line__move_line_ids +msgid "Related Stock Moves" +msgstr "Movimenti di Magazzino Correlati" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_bank_statement_line__picking_ids +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_move__picking_ids +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_payment__picking_ids +msgid "" +"Related pickings (only when the invoice has been generated from a sale " +"order)." +msgstr "" +"Prelievo relativo (solo quando la fattura è stata generata da un ordine di " +"vendita)." + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_move_line__move_line_ids +msgid "" +"Related stock moves (only when the invoice has been generated from a sale " +"order)." +msgstr "" +"Movimento di magazzino relativo (solo qando la fattura è stata generata da " +"un ordine di vendita)." + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_sale_order_line +msgid "Sales Order Line" +msgstr "Riga ordine di vendita" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_stock_move +msgid "Stock Move" +msgstr "Movimento di magazzino" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_stock_picking +msgid "Transfer" +msgstr "Trasferimento" + +#. module: stock_picking_invoice_link +#. odoo-python +#: code:addons/stock_picking_invoice_link/models/stock_move.py:0 +#, python-format +msgid "You can not modify an invoiced stock move" +msgstr "Non si può modificare un movimento di magazzino fatturato" + +#~ msgid "Delivery Orders" +#~ msgstr "Ordini di consegna" + +#~ msgid "Pickings" +#~ msgstr "Prelievi" + +#, fuzzy +#~ msgid "View Invoice" +#~ msgstr "Fattura" diff --git a/stock_picking_invoice_link/i18n/nl_NL.po b/stock_picking_invoice_link/i18n/nl_NL.po new file mode 100644 index 000000000000..60059a3bf8d0 --- /dev/null +++ b/stock_picking_invoice_link/i18n/nl_NL.po @@ -0,0 +1,123 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_picking_invoice_link +# +# Translators: +# Peter Hageman , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-12-18 03:48+0000\n" +"PO-Revision-Date: 2017-12-18 03:48+0000\n" +"Last-Translator: Peter Hageman , 2017\n" +"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/" +"teams/23907/nl_NL/)\n" +"Language: nl_NL\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move_reversal +msgid "Account Move Reversal" +msgstr "" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.invoice_form +msgid "Delivery" +msgstr "" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_picking_form +msgid "Invoice" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_move__invoice_line_ids +msgid "Invoice Line" +msgstr "" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_move_form +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_move_picking_form +msgid "Invoice Lines" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_picking__invoice_ids +msgid "Invoices" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move +msgid "Journal Entry" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move_line +msgid "Journal Item" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_picking__invoice_count +msgid "Number of Invoices" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_bank_statement_line__picking_count +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move__picking_count +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_payment__picking_count +msgid "Pickings count" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_bank_statement_line__picking_ids +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move__picking_ids +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_payment__picking_ids +msgid "Related Pickings" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move_line__move_line_ids +msgid "Related Stock Moves" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_bank_statement_line__picking_ids +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_move__picking_ids +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_payment__picking_ids +msgid "" +"Related pickings (only when the invoice has been generated from a sale " +"order)." +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_move_line__move_line_ids +msgid "" +"Related stock moves (only when the invoice has been generated from a sale " +"order)." +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_stock_move +msgid "Stock Move" +msgstr "Voorraadmutatie" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_stock_picking +msgid "Transfer" +msgstr "Verplaats" + +#. module: stock_picking_invoice_link +#. odoo-python +#: code:addons/stock_picking_invoice_link/models/stock_move.py:0 +#, python-format +msgid "You can not modify an invoiced stock move" +msgstr "" diff --git a/stock_picking_invoice_link/i18n/pt.po b/stock_picking_invoice_link/i18n/pt.po new file mode 100644 index 000000000000..d90a384b10f9 --- /dev/null +++ b/stock_picking_invoice_link/i18n/pt.po @@ -0,0 +1,136 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_picking_invoice_link +# +# Translators: +# Pedro Castro Silva , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-12-18 03:48+0000\n" +"PO-Revision-Date: 2021-01-16 20:44+0000\n" +"Last-Translator: Pedro Castro Silva \n" +"Language-Team: Portuguese (https://www.transifex.com/oca/teams/23907/pt/)\n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Weblate 4.3.2\n" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move_reversal +msgid "Account Move Reversal" +msgstr "" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.invoice_form +msgid "Delivery" +msgstr "" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_picking_form +msgid "Invoice" +msgstr "Fatura" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_move__invoice_line_ids +msgid "Invoice Line" +msgstr "Linha de Fatura" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_move_form +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_move_picking_form +msgid "Invoice Lines" +msgstr "Linhas de Faturas" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_picking__invoice_ids +msgid "Invoices" +msgstr "Faturas" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move +msgid "Journal Entry" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move_line +msgid "Journal Item" +msgstr "Itens do Diário" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_picking__invoice_count +msgid "Number of Invoices" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_bank_statement_line__picking_count +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move__picking_count +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_payment__picking_count +msgid "Pickings count" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_bank_statement_line__picking_ids +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move__picking_ids +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_payment__picking_ids +msgid "Related Pickings" +msgstr "Operações de Stock Relacionadas" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move_line__move_line_ids +msgid "Related Stock Moves" +msgstr "Movimentos de Stock Relacionados" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_bank_statement_line__picking_ids +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_move__picking_ids +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_payment__picking_ids +msgid "" +"Related pickings (only when the invoice has been generated from a sale " +"order)." +msgstr "" +"Operações de stock relacionadas (apenas quando a fatura foi gerada a partir " +"de uma encomenda de venda)." + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_move_line__move_line_ids +msgid "" +"Related stock moves (only when the invoice has been generated from a sale " +"order)." +msgstr "" +"Movimentos de stock relacionados (apenas quando a fatura foi gerada a partir " +"de uma encomenda de venda)." + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_sale_order_line +msgid "Sales Order Line" +msgstr "Linha de Encomenda de Venda" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_stock_move +msgid "Stock Move" +msgstr "Movimento de Stock" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_stock_picking +msgid "Transfer" +msgstr "Transferência" + +#. module: stock_picking_invoice_link +#. odoo-python +#: code:addons/stock_picking_invoice_link/models/stock_move.py:0 +#, python-format +msgid "You can not modify an invoiced stock move" +msgstr "Não pode modificar um movimento de stock faturado" + +#~ msgid "Journal Entries" +#~ msgstr "Lançamentos do Diário" + +#~ msgid "Pickings" +#~ msgstr "Operações de Stock" + +#~ msgid "View Invoice" +#~ msgstr "Ver Fatura" diff --git a/stock_picking_invoice_link/i18n/pt_BR.po b/stock_picking_invoice_link/i18n/pt_BR.po new file mode 100644 index 000000000000..29be63bf976f --- /dev/null +++ b/stock_picking_invoice_link/i18n/pt_BR.po @@ -0,0 +1,134 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_picking_invoice_link +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-15 11:08+0000\n" +"PO-Revision-Date: 2019-08-30 15:23+0000\n" +"Last-Translator: Rodrigo Macedo \n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/" +"teams/23907/pt_BR/)\n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.8\n" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move_reversal +msgid "Account Move Reversal" +msgstr "" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.invoice_form +msgid "Delivery" +msgstr "" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_picking_form +msgid "Invoice" +msgstr "Fatura" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_move__invoice_line_ids +msgid "Invoice Line" +msgstr "Linha da Fatura" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_move_form +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_move_picking_form +msgid "Invoice Lines" +msgstr "Linhas da Fatura" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_picking__invoice_ids +msgid "Invoices" +msgstr "Faturas" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move +msgid "Journal Entry" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move_line +msgid "Journal Item" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_picking__invoice_count +msgid "Number of Invoices" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_bank_statement_line__picking_count +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move__picking_count +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_payment__picking_count +msgid "Pickings count" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_bank_statement_line__picking_ids +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move__picking_ids +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_payment__picking_ids +msgid "Related Pickings" +msgstr "Separações Relacionadas" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move_line__move_line_ids +msgid "Related Stock Moves" +msgstr "Movimentações de Estoque Relacionadas" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_bank_statement_line__picking_ids +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_move__picking_ids +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_payment__picking_ids +msgid "" +"Related pickings (only when the invoice has been generated from a sale " +"order)." +msgstr "" +"Colheitas relacionadas (somente quando a fatura foi gerada a partir de um " +"pedido de venda)." + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_move_line__move_line_ids +msgid "" +"Related stock moves (only when the invoice has been generated from a sale " +"order)." +msgstr "" +"Movimentos de estoque relacionados (somente quando a fatura foi gerada a " +"partir de um pedido de venda)." + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_sale_order_line +msgid "Sales Order Line" +msgstr "Linha de pedidos de venda" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_stock_move +msgid "Stock Move" +msgstr "Movimentação do Estoque" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_stock_picking +msgid "Transfer" +msgstr "Transferir" + +#. module: stock_picking_invoice_link +#. odoo-python +#: code:addons/stock_picking_invoice_link/models/stock_move.py:0 +#, python-format +msgid "You can not modify an invoiced stock move" +msgstr "" + +#~ msgid "Pickings" +#~ msgstr "Separações" + +#~ msgid "View Invoice" +#~ msgstr "Ver Fatura" diff --git a/stock_picking_invoice_link/i18n/sl.po b/stock_picking_invoice_link/i18n/sl.po new file mode 100644 index 000000000000..0b1642f59fb5 --- /dev/null +++ b/stock_picking_invoice_link/i18n/sl.po @@ -0,0 +1,123 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_picking_invoice_link +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-23 11:56+0000\n" +"PO-Revision-Date: 2017-01-23 11:56+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" +"%100==4 ? 2 : 3);\n" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move_reversal +msgid "Account Move Reversal" +msgstr "" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.invoice_form +msgid "Delivery" +msgstr "" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_picking_form +msgid "Invoice" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_move__invoice_line_ids +msgid "Invoice Line" +msgstr "" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_move_form +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_move_picking_form +msgid "Invoice Lines" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_picking__invoice_ids +msgid "Invoices" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move +msgid "Journal Entry" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move_line +msgid "Journal Item" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_picking__invoice_count +msgid "Number of Invoices" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_bank_statement_line__picking_count +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move__picking_count +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_payment__picking_count +msgid "Pickings count" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_bank_statement_line__picking_ids +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move__picking_ids +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_payment__picking_ids +msgid "Related Pickings" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move_line__move_line_ids +msgid "Related Stock Moves" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_bank_statement_line__picking_ids +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_move__picking_ids +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_payment__picking_ids +msgid "" +"Related pickings (only when the invoice has been generated from a sale " +"order)." +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_move_line__move_line_ids +msgid "" +"Related stock moves (only when the invoice has been generated from a sale " +"order)." +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_stock_move +msgid "Stock Move" +msgstr "Premik zaloge" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_stock_picking +msgid "Transfer" +msgstr "" + +#. module: stock_picking_invoice_link +#. odoo-python +#: code:addons/stock_picking_invoice_link/models/stock_move.py:0 +#, python-format +msgid "You can not modify an invoiced stock move" +msgstr "" diff --git a/stock_picking_invoice_link/i18n/stock_picking_invoice_link.pot b/stock_picking_invoice_link/i18n/stock_picking_invoice_link.pot new file mode 100644 index 000000000000..37c2db002f71 --- /dev/null +++ b/stock_picking_invoice_link/i18n/stock_picking_invoice_link.pot @@ -0,0 +1,117 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_picking_invoice_link +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \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: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move_reversal +msgid "Account Move Reversal" +msgstr "" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.invoice_form +msgid "Delivery" +msgstr "" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_picking_form +msgid "Invoice" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_move__invoice_line_ids +msgid "Invoice Line" +msgstr "" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_move_form +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_move_picking_form +msgid "Invoice Lines" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_picking__invoice_ids +msgid "Invoices" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move +msgid "Journal Entry" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move_line +msgid "Journal Item" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_picking__invoice_count +msgid "Number of Invoices" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_bank_statement_line__picking_count +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move__picking_count +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_payment__picking_count +msgid "Pickings count" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_bank_statement_line__picking_ids +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move__picking_ids +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_payment__picking_ids +msgid "Related Pickings" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move_line__move_line_ids +msgid "Related Stock Moves" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_bank_statement_line__picking_ids +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_move__picking_ids +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_payment__picking_ids +msgid "" +"Related pickings (only when the invoice has been generated from a sale " +"order)." +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_move_line__move_line_ids +msgid "" +"Related stock moves (only when the invoice has been generated from a sale " +"order)." +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_stock_move +msgid "Stock Move" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_stock_picking +msgid "Transfer" +msgstr "" + +#. module: stock_picking_invoice_link +#. odoo-python +#: code:addons/stock_picking_invoice_link/models/stock_move.py:0 +#, python-format +msgid "You can not modify an invoiced stock move" +msgstr "" diff --git a/stock_picking_invoice_link/i18n/tr.po b/stock_picking_invoice_link/i18n/tr.po new file mode 100644 index 000000000000..d4fb496277c4 --- /dev/null +++ b/stock_picking_invoice_link/i18n/tr.po @@ -0,0 +1,122 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_picking_invoice_link +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-12-18 03:48+0000\n" +"PO-Revision-Date: 2017-12-18 03:48+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Turkish (https://www.transifex.com/oca/teams/23907/tr/)\n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move_reversal +msgid "Account Move Reversal" +msgstr "" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.invoice_form +msgid "Delivery" +msgstr "" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_picking_form +msgid "Invoice" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_move__invoice_line_ids +msgid "Invoice Line" +msgstr "" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_move_form +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_move_picking_form +msgid "Invoice Lines" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_picking__invoice_ids +msgid "Invoices" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move +msgid "Journal Entry" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move_line +msgid "Journal Item" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_picking__invoice_count +msgid "Number of Invoices" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_bank_statement_line__picking_count +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move__picking_count +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_payment__picking_count +msgid "Pickings count" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_bank_statement_line__picking_ids +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move__picking_ids +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_payment__picking_ids +msgid "Related Pickings" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move_line__move_line_ids +msgid "Related Stock Moves" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_bank_statement_line__picking_ids +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_move__picking_ids +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_payment__picking_ids +msgid "" +"Related pickings (only when the invoice has been generated from a sale " +"order)." +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_move_line__move_line_ids +msgid "" +"Related stock moves (only when the invoice has been generated from a sale " +"order)." +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_stock_move +msgid "Stock Move" +msgstr "Stok Taşı" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_stock_picking +msgid "Transfer" +msgstr "" + +#. module: stock_picking_invoice_link +#. odoo-python +#: code:addons/stock_picking_invoice_link/models/stock_move.py:0 +#, python-format +msgid "You can not modify an invoiced stock move" +msgstr "" diff --git a/stock_picking_invoice_link/i18n/tr_TR.po b/stock_picking_invoice_link/i18n/tr_TR.po new file mode 100644 index 000000000000..c0152cd4c4ba --- /dev/null +++ b/stock_picking_invoice_link/i18n/tr_TR.po @@ -0,0 +1,123 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_picking_invoice_link +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-12-18 03:48+0000\n" +"PO-Revision-Date: 2017-12-18 03:48+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Turkish (Turkey) (https://www.transifex.com/oca/teams/23907/" +"tr_TR/)\n" +"Language: tr_TR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move_reversal +msgid "Account Move Reversal" +msgstr "" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.invoice_form +msgid "Delivery" +msgstr "" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_picking_form +msgid "Invoice" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_move__invoice_line_ids +msgid "Invoice Line" +msgstr "" + +#. module: stock_picking_invoice_link +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_move_form +#: model_terms:ir.ui.view,arch_db:stock_picking_invoice_link.view_move_picking_form +msgid "Invoice Lines" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_picking__invoice_ids +msgid "Invoices" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move +msgid "Journal Entry" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_account_move_line +msgid "Journal Item" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_stock_picking__invoice_count +msgid "Number of Invoices" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_bank_statement_line__picking_count +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move__picking_count +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_payment__picking_count +msgid "Pickings count" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_bank_statement_line__picking_ids +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move__picking_ids +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_payment__picking_ids +msgid "Related Pickings" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,field_description:stock_picking_invoice_link.field_account_move_line__move_line_ids +msgid "Related Stock Moves" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_bank_statement_line__picking_ids +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_move__picking_ids +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_payment__picking_ids +msgid "" +"Related pickings (only when the invoice has been generated from a sale " +"order)." +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model.fields,help:stock_picking_invoice_link.field_account_move_line__move_line_ids +msgid "" +"Related stock moves (only when the invoice has been generated from a sale " +"order)." +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_stock_move +msgid "Stock Move" +msgstr "Stok hareketi" + +#. module: stock_picking_invoice_link +#: model:ir.model,name:stock_picking_invoice_link.model_stock_picking +msgid "Transfer" +msgstr "" + +#. module: stock_picking_invoice_link +#. odoo-python +#: code:addons/stock_picking_invoice_link/models/stock_move.py:0 +#, python-format +msgid "You can not modify an invoiced stock move" +msgstr "" diff --git a/stock_picking_invoice_link/models/__init__.py b/stock_picking_invoice_link/models/__init__.py new file mode 100644 index 000000000000..2048fbbf9ec7 --- /dev/null +++ b/stock_picking_invoice_link/models/__init__.py @@ -0,0 +1,6 @@ +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from . import account_move +from . import stock_move +from . import stock_picking +from . import sale_order diff --git a/stock_picking_invoice_link/models/account_move.py b/stock_picking_invoice_link/models/account_move.py new file mode 100644 index 000000000000..3e7626d018c5 --- /dev/null +++ b/stock_picking_invoice_link/models/account_move.py @@ -0,0 +1,84 @@ +# Copyright 2013-15 Agile Business Group sagl () +# Copyright 2015-2016 AvanzOSC +# Copyright 2016 Pedro M. Baeza +# Copyright 2017 Jacques-Etienne Baudoux +# Copyright 2020 Manuel Calero - Tecnativa +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from odoo import Command, api, fields, models + + +class AccountMove(models.Model): + _inherit = "account.move" + + picking_ids = fields.Many2many( + comodel_name="stock.picking", + string="Related Pickings", + store=True, + compute="_compute_picking_ids", + help="Related pickings (only when the invoice has been generated from a sale " + "order).", + ) + + picking_count = fields.Integer( + string="Pickings count", compute="_compute_picking_count" + ) + + @api.depends("invoice_line_ids", "invoice_line_ids.move_line_ids") + def _compute_picking_ids(self): + for invoice in self: + invoice.picking_ids = invoice.mapped( + "invoice_line_ids.move_line_ids.picking_id" + ) + + @api.depends("picking_ids") + def _compute_picking_count(self): + for invoice in self: + invoice.picking_count = len(invoice.picking_ids) + + def action_show_picking(self): + """This function returns an action that display existing pickings + of given invoice. + It can either be a in a list or in a form view, if there is only + one picking to show. + """ + self.ensure_one() + form_view_name = "stock.view_picking_form" + result = self.env["ir.actions.act_window"]._for_xml_id( + "stock.action_picking_tree_all" + ) + if len(self.picking_ids) > 1: + result["domain"] = f"[('id', 'in', {self.picking_ids.ids})]" + else: + form_view = self.env.ref(form_view_name) + result["views"] = [(form_view.id, "form")] + result["res_id"] = self.picking_ids.id + return result + + +class AccountMoveLine(models.Model): + _inherit = "account.move.line" + + move_line_ids = fields.Many2many( + comodel_name="stock.move", + relation="stock_move_invoice_line_rel", + column1="invoice_line_id", + column2="move_id", + string="Related Stock Moves", + readonly=True, + copy=False, + help="Related stock moves (only when the invoice has been" + " generated from a sale order).", + ) + + def copy_data(self, default=None): + """Copy the move_line_ids in case of refund invoice creating new invoices + (refund_method="modify") for multiple records.""" + vals_list = super().copy_data(default) + + if self.env.context.get("force_copy_stock_moves"): + for record, vals in zip(self, vals_list, strict=False): + if "move_line_ids" not in vals and record.move_line_ids: + vals["move_line_ids"] = [Command.set(record.move_line_ids.ids)] + + return vals_list diff --git a/stock_picking_invoice_link/models/sale_order.py b/stock_picking_invoice_link/models/sale_order.py new file mode 100644 index 000000000000..ada4e8446038 --- /dev/null +++ b/stock_picking_invoice_link/models/sale_order.py @@ -0,0 +1,62 @@ +# Copyright 2013-15 Agile Business Group sagl () +# Copyright 2017 Jacques-Etienne Baudoux +# Copyright 2021 Tecnativa - João Marques +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html +from odoo import models +from odoo.tools import float_compare, float_is_zero + + +class SaleOrderLine(models.Model): + _inherit = "sale.order.line" + + def get_stock_moves_link_invoice(self): + moves_linked = self.env["stock.move"] + to_invoice = self.qty_to_invoice + for stock_move in self.move_ids.sorted( + lambda m: (m.write_date, m.id), reverse=True + ): + if ( + stock_move.state != "done" + or stock_move.scrapped + or ( + stock_move.location_dest_id.usage != "customer" + and ( + stock_move.location_id.usage != "customer" + or not stock_move.to_refund + ) + ) + ): + continue + if not stock_move.invoice_line_ids: + to_invoice -= ( + stock_move.quantity + if not stock_move.to_refund + else -stock_move.quantity + ) + moves_linked += stock_move + continue + elif float_is_zero( + to_invoice, precision_rounding=self.product_uom.rounding + ): + break + to_invoice -= ( + stock_move.quantity + if not stock_move.to_refund + else -stock_move.quantity + ) + moves_linked += stock_move + return moves_linked + + def _prepare_invoice_line(self, **optional_values): + vals = super()._prepare_invoice_line(**optional_values) + stock_moves = self.get_stock_moves_link_invoice() + # Invoice returned moves marked as to_refund + if ( + float_compare( + self.qty_to_invoice, 0.0, precision_rounding=self.currency_id.rounding + ) + < 0 + ): + stock_moves = stock_moves.filtered("to_refund") + vals["move_line_ids"] = [(4, m.id) for m in stock_moves] + return vals diff --git a/stock_picking_invoice_link/models/stock_move.py b/stock_picking_invoice_link/models/stock_move.py new file mode 100644 index 000000000000..8626ac1a76b8 --- /dev/null +++ b/stock_picking_invoice_link/models/stock_move.py @@ -0,0 +1,65 @@ +# Copyright 2013-15 Agile Business Group sagl () +# Copyright 2015-2016 AvanzOSC +# Copyright 2016 Pedro M. Baeza +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from odoo import _, fields, models +from odoo.exceptions import UserError + + +class StockMove(models.Model): + _inherit = "stock.move" + + invoice_line_ids = fields.Many2many( + comodel_name="account.move.line", + relation="stock_move_invoice_line_rel", + column1="move_id", + column2="invoice_line_id", + string="Invoice Line", + copy=False, + readonly=True, + ) + + def write(self, vals): + """ + User can update any picking in done state, but if this picking already + invoiced the stock move done quantities can be different to invoice + line quantities. So to avoid this inconsistency you can not update any + stock move line in done state and have invoice lines linked. + """ + if "product_uom_qty" in vals and not self.env.context.get( + "bypass_stock_move_update_restriction" + ): + for move in self: + if move.state == "done" and move.invoice_line_ids: + raise UserError(_("You can not modify an invoiced stock move")) + res = super().write(vals) + if vals.get("state", "") == "done": + stock_moves = self.get_moves_delivery_link_invoice() + for stock_move in stock_moves.filtered( + lambda sm: sm.sale_line_id and sm.product_id.invoice_policy == "order" + ): + inv_type = stock_move.to_refund and "out_refund" or "out_invoice" + inv_line = ( + self.env["account.move.line"] + .sudo() + .search( + [ + ("sale_line_ids", "=", stock_move.sale_line_id.id), + ("move_id.move_type", "=", inv_type), + ] + ) + ) + if inv_line: + stock_move.invoice_line_ids = [(4, m.id) for m in inv_line] + return res + + def get_moves_delivery_link_invoice(self): + return self.filtered( + lambda x: x.state == "done" + and not x.scrapped + and ( + x.location_id.usage == "internal" + or (x.location_dest_id.usage == "internal" and x.to_refund) + ) + ) diff --git a/stock_picking_invoice_link/models/stock_picking.py b/stock_picking_invoice_link/models/stock_picking.py new file mode 100644 index 000000000000..6fae1ddc2699 --- /dev/null +++ b/stock_picking_invoice_link/models/stock_picking.py @@ -0,0 +1,42 @@ +# Copyright 2013-15 Agile Business Group sagl () +# Copyright 2015-2016 AvanzOSC +# Copyright 2016 Pedro M. Baeza +# Copyright 2017 Jacques-Etienne Baudoux +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from odoo import api, fields, models + + +class StockPicking(models.Model): + _inherit = "stock.picking" + + invoice_ids = fields.Many2many( + comodel_name="account.move", copy=False, string="Invoices", readonly=True + ) + invoice_count = fields.Integer( + string="Number of Invoices", compute="_compute_invoice_count" + ) + + def action_view_invoice(self): + """This function returns an action that display existing invoices + of given stock pickings. + It can either be a in a list or in a form view, if there is only + one invoice to show. + """ + self.ensure_one() + form_view_name = "account.view_move_form" + result = self.env["ir.actions.act_window"]._for_xml_id( + "account.action_move_out_invoice_type" + ) + if len(self.invoice_ids) > 1: + result["domain"] = f"[('id', 'in', {self.invoice_ids.ids})]" + else: + form_view = self.env.ref(form_view_name) + result["views"] = [(form_view.id, "form")] + result["res_id"] = self.invoice_ids.id + return result + + @api.depends("invoice_ids") + def _compute_invoice_count(self): + for order in self: + order.invoice_count = len(order.invoice_ids) diff --git a/stock_picking_invoice_link/pyproject.toml b/stock_picking_invoice_link/pyproject.toml new file mode 100644 index 000000000000..4231d0cccb3d --- /dev/null +++ b/stock_picking_invoice_link/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/stock_picking_invoice_link/readme/CONTRIBUTORS.md b/stock_picking_invoice_link/readme/CONTRIBUTORS.md new file mode 100644 index 000000000000..32fdce1deefe --- /dev/null +++ b/stock_picking_invoice_link/readme/CONTRIBUTORS.md @@ -0,0 +1,23 @@ +- [Agile Business Group](https://www.agilebg.com) + - Lorenzo Battistini \<\> + - Alex Comba \<\> +- [Akretion](https://www.akretion.com) + - Alexis de Lattre \<\> +- [AvanzOsc](http://avanzosc.es) + - Oihane Crucelaegui \<\> + - Ana Juaristi \<\> + - Alfredo de la Fuente \<\> + - Ainara Galdona \<\> +- [Tecnativa](https://www.tecnativa.com) + - Pedro M. Baeza + - David Vidal + - Sergio Teruel + - João Marques +- Unai Alkorta +- Iñaki Zabala +- Jacques-Etienne Baudoux \<\> +- Aitor Bouzas Naveira \<\> +- Carlos Lopez Mite \<\> +- Joel Matías Zilli \<\> +- [Trobz](https://trobz.com): + - Thao Le \<\> diff --git a/stock_picking_invoice_link/readme/CREDITS.md b/stock_picking_invoice_link/readme/CREDITS.md new file mode 100644 index 000000000000..8add88a2ebc0 --- /dev/null +++ b/stock_picking_invoice_link/readme/CREDITS.md @@ -0,0 +1 @@ +The migration of this module from 16.0 to 17.0 was financially supported by Camptocamp. diff --git a/stock_picking_invoice_link/readme/DESCRIPTION.md b/stock_picking_invoice_link/readme/DESCRIPTION.md new file mode 100644 index 000000000000..b84a62f03fd7 --- /dev/null +++ b/stock_picking_invoice_link/readme/DESCRIPTION.md @@ -0,0 +1,13 @@ +This module adds a link between pickings and invoices as well as on the +lines. Invoices are generated from sales orders. With this module, you +can find back which deliveries an invoice relates to. + +In standard, if you make a partial delivery and invoice it, then make +remaining delivery and invoice it, it is impossible to known to what +delivery the invoices relate to. You only have the quantity. + +This module is also useful if you want to present data on the invoice +report grouped by deliveries. + +Note that the links are only for products with an invoicing policy set +on delivery. diff --git a/stock_picking_invoice_link/readme/USAGE.md b/stock_picking_invoice_link/readme/USAGE.md new file mode 100644 index 000000000000..cbc3c81db5a5 --- /dev/null +++ b/stock_picking_invoice_link/readme/USAGE.md @@ -0,0 +1,5 @@ +- Create a Sales Order and confirm. +- Deliver its pickings totally or partially. +- Create an invoice of the goods delivered. +- If you open invoice form, you must see a new Pickings tab with + information about them. diff --git a/stock_picking_invoice_link/static/description/icon.png b/stock_picking_invoice_link/static/description/icon.png new file mode 100644 index 000000000000..3a0328b516c4 Binary files /dev/null and b/stock_picking_invoice_link/static/description/icon.png differ diff --git a/stock_picking_invoice_link/static/description/index.html b/stock_picking_invoice_link/static/description/index.html new file mode 100644 index 000000000000..44becfb31d42 --- /dev/null +++ b/stock_picking_invoice_link/static/description/index.html @@ -0,0 +1,484 @@ + + + + + +Stock Picking Invoice Link + + + + + + diff --git a/stock_picking_invoice_link/tests/__init__.py b/stock_picking_invoice_link/tests/__init__.py new file mode 100644 index 000000000000..8bdc83f89b7a --- /dev/null +++ b/stock_picking_invoice_link/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from . import test_stock_picking_invoice_link diff --git a/stock_picking_invoice_link/tests/test_stock_picking_invoice_link.py b/stock_picking_invoice_link/tests/test_stock_picking_invoice_link.py new file mode 100644 index 000000000000..d4dc86e7aa7c --- /dev/null +++ b/stock_picking_invoice_link/tests/test_stock_picking_invoice_link.py @@ -0,0 +1,416 @@ +# Copyright 2016 Oihane Crucelaegui - AvanzOSC +# Copyright 2016 Pedro M. Baeza +# Copyright 2017 Jacques-Etienne Baudoux +# Copyright 2021 Tecnativa - João Marques +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html +from odoo.exceptions import UserError +from odoo.tests import Form, tagged + +from odoo.addons.sale.tests.common import TestSaleCommon + + +@tagged("post_install", "-at_install") +class TestStockPickingInvoiceLink(TestSaleCommon): + @classmethod + def _update_product_qty(cls, product): + product_qty = cls.env["stock.change.product.qty"].create( + { + "product_id": product.id, + "product_tmpl_id": product.product_tmpl_id.id, + "new_quantity": 100.0, + } + ) + product_qty.change_product_qty() + return product_qty + + @classmethod + def _create_sale_order_and_confirm(cls): + so = cls.env["sale.order"].create( + { + "partner_id": cls.partner_a.id, + "partner_invoice_id": cls.partner_a.id, + "partner_shipping_id": cls.partner_a.id, + "order_line": [ + ( + 0, + 0, + { + "name": cls.prod_order.name, + "product_id": cls.prod_order.id, + "product_uom_qty": 2, + "product_uom": cls.prod_order.uom_id.id, + "price_unit": cls.prod_order.list_price, + }, + ), + ( + 0, + 0, + { + "name": cls.prod_del.name, + "product_id": cls.prod_del.id, + "product_uom_qty": 2, + "product_uom": cls.prod_del.uom_id.id, + "price_unit": cls.prod_del.list_price, + }, + ), + ( + 0, + 0, + { + "name": cls.serv_order.name, + "product_id": cls.serv_order.id, + "product_uom_qty": 2, + "product_uom": cls.serv_order.uom_id.id, + "price_unit": cls.serv_order.list_price, + }, + ), + ], + "picking_policy": "direct", + } + ) + so.action_confirm() + return so + + @classmethod + def setUpClass(cls, chart_template_ref=None): + super().setUpClass() + cls.setup_chart_template(chart_template_ref) + for _, i in cls.company_data.items(): + if "type" in i and i.type == "product": + cls._update_product_qty(i) + cls.prod_order = cls.company_data["product_order_no"] + cls.prod_order.invoice_policy = "delivery" + cls.prod_del = cls.company_data["product_delivery_no"] + cls.prod_del.invoice_policy = "delivery" + cls.serv_order = cls.company_data["product_service_order"] + cls.so = cls._create_sale_order_and_confirm() + + def test_00_sale_stock_invoice_link(self): + pick_obj = self.env["stock.picking"] + # invoice on order + self.so._create_invoices() + # deliver partially + self.assertEqual( + self.so.invoice_status, + "no", + "Sale Stock: so invoice_status should be " + '"nothing to invoice" after invoicing', + ) + pick_1 = self.so.picking_ids.filtered( + lambda x: x.picking_type_code == "outgoing" + and x.state in ("confirmed", "assigned", "partially_available") + ) + pick_1.move_line_ids.write({"quantity": 1}) + action_data = pick_1.button_validate() + backorder_wizard = Form( + self.env["stock.backorder.confirmation"].with_context( + **action_data["context"] + ) + ).save() + backorder_wizard.process() + self.assertEqual( + self.so.invoice_status, + "to invoice", + "Sale Stock: so invoice_status should be " + '"to invoice" after partial delivery', + ) + inv_1 = self.so._create_invoices() + # complete the delivery + self.assertEqual( + self.so.invoice_status, + "no", + "Sale Stock: so invoice_status should be " + '"nothing to invoice" after partial delivery ' + "and invoicing", + ) + self.assertEqual( + len(self.so.picking_ids), 2, "Sale Stock: number of pickings should be 2" + ) + + pick_2 = self.so.picking_ids.filtered( + lambda x: x.picking_type_code == "outgoing" + and x.state in ("confirmed", "assigned", "partially_available") + ) + pick_2.move_line_ids.write({"quantity": 1}) + pick_2.button_validate() + backorders = pick_obj.search([("backorder_id", "=", pick_2.id)]) + self.assertFalse( + backorders, + "Sale Stock: second picking should be " + "final without need for a backorder", + ) + self.assertEqual( + self.so.invoice_status, + "to invoice", + "Sale Stock: so invoice_status should be " + '"to invoice" after complete delivery', + ) + inv_2 = self.so._create_invoices() + self.assertEqual( + self.so.invoice_status, + "invoiced", + "Sale Stock: so invoice_status should be " + '"fully invoiced" after complete delivery and ' + "invoicing", + ) + # Check links + self.assertEqual( + inv_1.picking_ids, + pick_1, + "Invoice 1 must link to only First Partial Delivery", + ) + self.assertEqual( + inv_1.invoice_line_ids.mapped("move_line_ids"), + pick_1.move_ids.filtered( + lambda x: x.product_id.invoice_policy == "delivery" + ), + "Invoice 1 lines must link to only First Partial Delivery lines", + ) + self.assertEqual( + inv_2.picking_ids, pick_2, "Invoice 2 must link to only Second Delivery" + ) + self.assertEqual( + inv_2.invoice_line_ids.mapped("move_line_ids"), + pick_2.move_ids.filtered( + lambda x: x.product_id.invoice_policy == "delivery" + ), + "Invoice 2 lines must link to only Second Delivery lines", + ) + # Invoice view + result = pick_1.action_view_invoice() + self.assertEqual(result["views"][0][1], "form") + self.assertEqual(result["res_id"], inv_1.id) + # Mock multiple invoices linked to a picking + inv_3 = inv_1.copy() + inv_3.picking_ids |= pick_1 + result = pick_1.action_view_invoice() + self.assertEqual(result["views"][0][1], "list") + + # Cancel invoice and invoice + inv_1.button_cancel() + self.so._create_invoices() + self.assertEqual( + inv_1.picking_ids, + pick_1, + "Invoice 1 must link to only First Partial Delivery", + ) + self.assertEqual( + inv_1.invoice_line_ids.mapped("move_line_ids"), + pick_1.move_ids.filtered( + lambda x: x.product_id.invoice_policy == "delivery" + ), + "Invoice 1 lines must link to only First Partial Delivery lines", + ) + # Try to update a picking move which has a invoice line linked + with self.assertRaises(UserError): + pick_1.move_ids.write({"product_uom_qty": 20.0}) + + def test_return_picking_to_refund(self): + pick_1 = self.so.picking_ids.filtered( + lambda x: x.picking_type_code == "outgoing" + and x.state in ("confirmed", "assigned", "partially_available") + ) + pick_1.move_line_ids.write({"quantity": 2}) + pick_1.button_validate() + + # Create invoice + inv = self.so._create_invoices() + inv_line_prod_del = inv.invoice_line_ids.filtered( + lambda line: line.product_id == self.prod_del + ) + self.assertEqual( + inv_line_prod_del.move_line_ids, + pick_1.move_ids.filtered(lambda m: m.product_id == self.prod_del), + ) + # Create return picking + return_form = Form( + self.env["stock.return.picking"].with_context( + active_id=pick_1.ids[0], + active_model="stock.picking", + ) + ) + return_wiz = return_form.save() + + # Remove product ordered line + return_wiz.product_return_moves.filtered( + lambda line: line.product_id == self.prod_order + ).unlink() + return_wiz.product_return_moves.quantity = 1.0 + return_wiz.product_return_moves.to_refund = True + res = return_wiz.action_create_returns() + return_pick = self.env["stock.picking"].browse(res["res_id"]) + # Validate picking + return_pick.move_ids.quantity = 1.0 + return_pick.button_validate() + inv = self.so._create_invoices(final=True) + inv_line_prod_del = inv.invoice_line_ids.filtered( + lambda line: line.product_id == self.prod_del + ) + self.assertEqual(inv_line_prod_del.move_line_ids, return_pick.move_ids) + + def test_invoice_refund(self): + pick_1 = self.so.picking_ids.filtered( + lambda x: x.picking_type_code == "outgoing" + and x.state in ("confirmed", "assigned", "partially_available") + ) + pick_1.move_line_ids.write({"quantity": 2}) + pick_1.button_validate() + # Create invoice + inv = self.so._create_invoices() + inv.action_post() + move_line_prod_del = pick_1.move_ids.filtered( + lambda line: line.product_id == self.prod_del + ) + wiz_invoice_refund = ( + self.env["account.move.reversal"] + .with_context(active_model="account.move", active_ids=inv.ids) + .create( + { + "reason": "test", + "journal_id": inv.journal_id.id, + } + ) + ) + invoice_id = wiz_invoice_refund.modify_moves()["res_id"] + new_invoice = self.env["account.move"].browse(invoice_id) + inv_line_prod_del = new_invoice.invoice_line_ids.filtered( + lambda line: line.product_id == self.prod_del + ) + self.assertEqual(move_line_prod_del, inv_line_prod_del.move_line_ids) + + # Test action open picking from an invoice + res = new_invoice.action_show_picking() + opened_picking = self.env["stock.picking"].browse(res["res_id"]) + self.assertEqual(pick_1, opened_picking) + + def test_invoice_refund_invoice(self): + """Check that the invoice created after a refund is linked to the stock + picking. + """ + pick_1 = self.so.picking_ids.filtered( + lambda x: x.picking_type_code == "outgoing" + and x.state in ("confirmed", "assigned", "partially_available") + ) + pick_1.move_line_ids.write({"quantity": 2}) + pick_1.button_validate() + # Create invoice + inv = self.so._create_invoices() + inv.action_post() + # Refund invoice + wiz_invoice_refund = ( + self.env["account.move.reversal"] + .with_context(active_model="account.move", active_ids=inv.ids) + .create( + { + "reason": "test", + "journal_id": inv.journal_id.id, + } + ) + ) + wiz_invoice_refund.refund_moves() + # Create invoice again + new_inv = self.so._create_invoices() + new_inv.action_post() + # Assert that new invoice has related picking + self.assertEqual(new_inv.picking_ids, pick_1) + + def test_partial_invoice_full_link(self): + """Check that the partial invoices are linked to the stock + picking. + """ + pick_1 = self.so.picking_ids.filtered( + lambda x: x.picking_type_code == "outgoing" + and x.state in ("confirmed", "assigned", "partially_available") + ) + pick_1.move_line_ids.write({"quantity": 2}) + pick_1.button_validate() + # Create invoice + inv = self.so._create_invoices() + with Form(inv) as move_form: + for i in range(len(move_form.invoice_line_ids)): + with move_form.invoice_line_ids.edit(i) as line_form: + line_form.quantity = 1 + inv.action_post() + self.assertEqual(inv.picking_ids, pick_1) + inv2 = self.so._create_invoices() + self.assertEqual(inv2.picking_ids, pick_1) + + def test_return_and_invoice_refund(self): + pick_1 = self.so.picking_ids.filtered( + lambda x: x.picking_type_code == "outgoing" + and x.state in ("confirmed", "assigned", "partially_available") + ) + pick_1.move_line_ids.write({"quantity": 2}) + pick_1.button_validate() + # Create invoice + inv = self.so._create_invoices() + inv_line_prod_del = inv.invoice_line_ids.filtered( + lambda line: line.product_id == self.prod_del + ) + inv.action_post() + self.assertEqual( + inv_line_prod_del.move_line_ids, + pick_1.move_ids.filtered(lambda m: m.product_id == self.prod_del), + ) + # Create return picking + return_form = Form( + self.env["stock.return.picking"].with_context( + active_id=pick_1.ids[0], + active_model="stock.picking", + ) + ) + return_wiz = return_form.save() + # Remove product ordered line + return_wiz.product_return_moves.filtered( + lambda line: line.product_id == self.prod_order + ).unlink() + return_wiz.product_return_moves.quantity = 1.0 + return_wiz.product_return_moves.to_refund = True + res = return_wiz.action_create_returns() + return_pick = self.env["stock.picking"].browse(res["res_id"]) + # Validate picking + return_pick.move_ids.quantity = 1.0 + return_pick.button_validate() + wiz_invoice_refund = ( + self.env["account.move.reversal"] + .with_context(active_model="account.move", active_ids=inv.ids) + .create( + { + "reason": "test", + "journal_id": inv.journal_id.id, + } + ) + ) + action = wiz_invoice_refund.refund_moves() + invoice_refund = self.env["account.move"].browse(action["res_id"]) + inv_line_prod_del_refund = invoice_refund.invoice_line_ids.filtered( + lambda line: line.product_id == self.prod_del + ) + self.assertEqual( + inv_line_prod_del_refund.move_line_ids, + return_pick.move_ids.filtered(lambda m: m.product_id == self.prod_del), + ) + + def test_link_transfer_after_invoice_creation(self): + self.prod_order.invoice_policy = "order" + # Create new sale.order to get the change on invoice policy + so = self._create_sale_order_and_confirm() + # create and post invoice + invoice = so._create_invoices() + # Validate shipment + picking = so.picking_ids.filtered( + lambda x: x.picking_type_code == "outgoing" + and x.state in ("confirmed", "assigned") + ) + picking.move_line_ids.write({"quantity": 2}) + picking.button_validate() + # Two invoice lines has been created, One of them related to product service + self.assertEqual(len(invoice.invoice_line_ids), 2) + line = invoice.invoice_line_ids + # Move lines are set in invoice lines + self.assertEqual(len(line.mapped("move_line_ids")), 1) + # One of the lines has invoice_policy = 'order' but the other one not + self.assertIn(line.mapped("move_line_ids"), picking.move_ids) + self.assertEqual(len(invoice.picking_ids), 1) + # Invoices are set in pickings + self.assertEqual(picking.invoice_ids, invoice) diff --git a/stock_picking_invoice_link/views/account_invoice_view.xml b/stock_picking_invoice_link/views/account_invoice_view.xml new file mode 100644 index 000000000000..6ae38fbb231d --- /dev/null +++ b/stock_picking_invoice_link/views/account_invoice_view.xml @@ -0,0 +1,30 @@ + + + + + related.pickings.account.invoice.form + account.move + + +
+ + +
+ + + + + + +
+
+
diff --git a/stock_picking_invoice_link/views/stock_view.xml b/stock_picking_invoice_link/views/stock_view.xml new file mode 100644 index 000000000000..ae546b75b831 --- /dev/null +++ b/stock_picking_invoice_link/views/stock_view.xml @@ -0,0 +1,69 @@ + + + + + stock_picking_invoice_link.stock.picking.form + stock.picking + + +
+ + +
+
+
+ + + stock_picking_invoice_link.stock.move.form + stock.move + + + + + + + + + + + + stock_picking_invoice_link.stock.move.picking.form + stock.move + + + + + + + + + + +
diff --git a/stock_picking_invoice_link/wizards/__init__.py b/stock_picking_invoice_link/wizards/__init__.py new file mode 100644 index 000000000000..715d1bd6df04 --- /dev/null +++ b/stock_picking_invoice_link/wizards/__init__.py @@ -0,0 +1 @@ +from . import account_move_reversal diff --git a/stock_picking_invoice_link/wizards/account_move_reversal.py b/stock_picking_invoice_link/wizards/account_move_reversal.py new file mode 100644 index 000000000000..acc62d752af8 --- /dev/null +++ b/stock_picking_invoice_link/wizards/account_move_reversal.py @@ -0,0 +1,31 @@ +# Copyright 2022 Tecnativa - Carlos Roca +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html +from odoo import models + + +class AccountMoveReversal(models.TransientModel): + _inherit = "account.move.reversal" + + def reverse_moves(self, is_modify=False): + """Link return moves to the lines of refund invoice""" + action = super( + AccountMoveReversal, self.with_context(force_copy_stock_moves=True) + ).reverse_moves(is_modify) + if "res_id" in action: + moves = self.env["account.move"].browse(action["res_id"]) + else: + moves = self.env["account.move"].search(action["domain"]) + if is_modify: + origin_moves = self.move_ids + for line in origin_moves.mapped("invoice_line_ids"): + reverse_moves = line.move_line_ids.mapped("returned_move_ids") + if reverse_moves: + moves.mapped("invoice_line_ids").filtered( + lambda m, line=line: m.product_id == line.product_id + ).move_line_ids = reverse_moves + else: + for line in moves.mapped("invoice_line_ids"): + reverse_moves = line.move_line_ids.mapped("returned_move_ids") + if reverse_moves: + line.move_line_ids = reverse_moves + return action