diff --git a/stock_report_quantity_by_location/README.rst b/stock_report_quantity_by_location/README.rst new file mode 100644 index 000000000..930682bbf --- /dev/null +++ b/stock_report_quantity_by_location/README.rst @@ -0,0 +1,90 @@ +================================= +Stock Report Quantity By Location +================================= + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:a267bfa205872d07d7a0a055440a79c70bca49f300b53a8ad40f0114d80fab09 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/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--reporting-lightgray.png?logo=github + :target: https://github.com/OCA/stock-logistics-reporting/tree/17.0/stock_report_quantity_by_location + :alt: OCA/stock-logistics-reporting +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/stock-logistics-reporting-17-0/stock-logistics-reporting-17-0-stock_report_quantity_by_location + :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-reporting&target_branch=17.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds an additional reporting on Inventory side where +warehouse location quantities are shown by all stockable products. + +**Table of contents** + +.. contents:: + :local: + +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 +------- + +* ForgeFlow + +Contributors +------------ + +- ForgeFlow, S.L. (https://www.forgeflow.com) + + - Jordi Ballester Alomar + - Hector Villarreal + +.. + + - Ecosoft (http://ecosoft.co.th) + + - Kranokporn Thongdoung + + - FactorLibre (http://factorlibre.com) + + - Hugo Córdoba + +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-reporting `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/stock_report_quantity_by_location/__init__.py b/stock_report_quantity_by_location/__init__.py new file mode 100644 index 000000000..5cb1c4914 --- /dev/null +++ b/stock_report_quantity_by_location/__init__.py @@ -0,0 +1 @@ +from . import wizards diff --git a/stock_report_quantity_by_location/__manifest__.py b/stock_report_quantity_by_location/__manifest__.py new file mode 100644 index 000000000..c3e4f78bf --- /dev/null +++ b/stock_report_quantity_by_location/__manifest__.py @@ -0,0 +1,17 @@ +# Copyright 2019-21 ForgeFlow, S.L. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +{ + "name": "Stock Report Quantity By Location", + "summary": "Stock Report Quantity By Location", + "version": "17.0.1.0.0", + "author": "ForgeFlow, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/stock-logistics-reporting", + "category": "Warehouse Management", + "license": "AGPL-3", + "depends": ["product", "stock"], + "data": [ + "wizards/stock_report_quantity_by_location_views.xml", + "security/ir.model.access.csv", + ], + "installable": True, +} diff --git a/stock_report_quantity_by_location/i18n/es.po b/stock_report_quantity_by_location/i18n/es.po new file mode 100644 index 000000000..56c4f07b1 --- /dev/null +++ b/stock_report_quantity_by_location/i18n/es.po @@ -0,0 +1,202 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_report_quantity_by_location +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-04-19 16:34+0000\n" +"Last-Translator: pere-aquarian \n" +"Language-Team: none\n" +"Language: es\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.14.1\n" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__availability +msgid "Availability" +msgstr "Disponibilidad" + +#. module: stock_report_quantity_by_location +#: model_terms:ir.ui.view,arch_db:stock_report_quantity_by_location.stock_report_quantity_by_location_prepare_form_view +msgid "Cancel" +msgstr "Cancelar" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__create_uid +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__create_date +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__create_date +msgid "Created on" +msgstr "Creado el" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__display_name +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__display_name +msgid "Display Name" +msgstr "Nombre mostrado" + +#. module: stock_report_quantity_by_location +#: model_terms:ir.ui.view,arch_db:stock_report_quantity_by_location.stock_report_quantity_by_location_search_view +msgid "Group By" +msgstr "Agrupar por" + +#. module: stock_report_quantity_by_location +#: model_terms:ir.ui.view,arch_db:stock_report_quantity_by_location.stock_report_quantity_by_location_search_view +msgid "Group by Location" +msgstr "Agrupar por ubicación" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__id +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__id +msgid "ID" +msgstr "ID" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__default_code +msgid "Internal Reference" +msgstr "Referencia interna" + +#. module: stock_report_quantity_by_location +#: model:ir.actions.act_window,name:stock_report_quantity_by_location.action_stock_report_quantity_by_location_prepare +msgid "Inventory By Location" +msgstr "Inventario por ubicación" + +#. module: stock_report_quantity_by_location +#: model:ir.ui.menu,name:stock_report_quantity_by_location.menu_quantity_by_location +msgid "Inventory by Location" +msgstr "Inventario por ubicación" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location____last_update +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare____last_update +msgid "Last Modified on" +msgstr "Última modificación el" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__write_uid +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__write_uid +msgid "Last Updated by" +msgstr "Última modificación por" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__write_date +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__write_date +msgid "Last Updated on" +msgstr "Última modificación el" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__location_id +#: model_terms:ir.ui.view,arch_db:stock_report_quantity_by_location.stock_report_quantity_by_location_search_view +msgid "Location" +msgstr "Ubicación" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__location_ids +msgid "Locations" +msgstr "Ubicaciones" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields.selection,name:stock_report_quantity_by_location.selection__stock_report_quantity_by_location_prepare__availability__on_hand +msgid "On Hand" +msgstr "A mano" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__product_id +msgid "Product" +msgstr "Producto" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__product_category_id +msgid "Product Category" +msgstr "Categoría de producto" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__uom_id +msgid "Product UoM" +msgstr "UdM del producto" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__quantity_on_hand +msgid "Qty On Hand" +msgstr "Cdad. a mano" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__quantity_reserved +msgid "Qty Reserved" +msgstr "Cdad. Reservada" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__quantity_unreserved +msgid "Qty Unreserved" +msgstr "Cdad. no reservada" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__with_quantity +msgid "Quantity > 0" +msgstr "Cantidad > 0" + +#. module: stock_report_quantity_by_location +#: model_terms:ir.ui.view,arch_db:stock_report_quantity_by_location.stock_report_quantity_by_location_search_view +msgid "Quantity On Hand > 0" +msgstr "Cantidad a mano > 0" + +#. module: stock_report_quantity_by_location +#: model_terms:ir.ui.view,arch_db:stock_report_quantity_by_location.stock_report_quantity_by_location_prepare_form_view +msgid "Retrieve the Inventory Quantities" +msgstr "Recuperar las cantidades de inventario" + +#. module: stock_report_quantity_by_location +#: model_terms:ir.ui.view,arch_db:stock_report_quantity_by_location.stock_report_quantity_by_location_search_view +msgid "Search Stock Report Quantity by Location" +msgstr "Buscar" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,help:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__with_quantity +msgid "Show only the products that have existing quantity on hand" +msgstr "Mostrar únicamente productos que tienen cantidad a mano" + +#. module: stock_report_quantity_by_location +#: model:ir.model,name:stock_report_quantity_by_location.model_stock_report_quantity_by_location +msgid "Stock Report By Location" +msgstr "Informe de inventario por ubicación" + +#. module: stock_report_quantity_by_location +#: model:ir.model,name:stock_report_quantity_by_location.model_stock_report_quantity_by_location_prepare +msgid "Stock Report Quantity By Location Prepare" +msgstr "Preparar Informe de inventario por ubicación" + +#. module: stock_report_quantity_by_location +#. odoo-python +#: code:addons/stock_report_quantity_by_location/wizards/stock_report_quantity_by_location_prepare.py:0 +#, python-format +msgid "Stock Report by Location" +msgstr "Informe de inventario por ubicación" + +#. module: stock_report_quantity_by_location +#: model_terms:ir.ui.view,arch_db:stock_report_quantity_by_location.stock_report_quantity_by_location_pivot_view +msgid "Stock by Location" +msgstr "Stock por ubicación" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields.selection,name:stock_report_quantity_by_location.selection__stock_report_quantity_by_location_prepare__availability__unreserved +msgid "Unreserved" +msgstr "No reservado" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,help:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__availability +msgid "Unreserved is the Stock On Hand minus the reservations" +msgstr "No reservado es el stock a mano menos las reservas" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__wiz_id +msgid "Wiz" +msgstr "Asistente" diff --git a/stock_report_quantity_by_location/i18n/es_MX.po b/stock_report_quantity_by_location/i18n/es_MX.po new file mode 100644 index 000000000..8bae293fe --- /dev/null +++ b/stock_report_quantity_by_location/i18n/es_MX.po @@ -0,0 +1,205 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_report_quantity_by_location +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2020-02-26 15:13+0000\n" +"Last-Translator: Jesús Alan Ramos Rodríguez \n" +"Language-Team: none\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" +"X-Generator: Weblate 3.10\n" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__availability +msgid "Availability" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model_terms:ir.ui.view,arch_db:stock_report_quantity_by_location.stock_report_quantity_by_location_prepare_form_view +msgid "Cancel" +msgstr "Cancelar" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__create_uid +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__create_date +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__display_name +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__display_name +msgid "Display Name" +msgstr "Nombre para Mostrar" + +#. module: stock_report_quantity_by_location +#: model_terms:ir.ui.view,arch_db:stock_report_quantity_by_location.stock_report_quantity_by_location_search_view +msgid "Group By" +msgstr "Agrupar Por" + +#. module: stock_report_quantity_by_location +#: model_terms:ir.ui.view,arch_db:stock_report_quantity_by_location.stock_report_quantity_by_location_search_view +msgid "Group by Location" +msgstr "Agrupar por Ubicación" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__id +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__id +msgid "ID" +msgstr "ID" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__default_code +msgid "Internal Reference" +msgstr "Referencia Interna" + +#. module: stock_report_quantity_by_location +#: model:ir.actions.act_window,name:stock_report_quantity_by_location.action_stock_report_quantity_by_location_prepare +msgid "Inventory By Location" +msgstr "Inventario por Ubicación" + +#. module: stock_report_quantity_by_location +#: model:ir.ui.menu,name:stock_report_quantity_by_location.menu_quantity_by_location +msgid "Inventory by Location" +msgstr "Inventario por Ubicación" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location____last_update +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare____last_update +msgid "Last Modified on" +msgstr "Última Modificación en" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__write_uid +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__write_uid +msgid "Last Updated by" +msgstr "Última Modificación por" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__write_date +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__write_date +msgid "Last Updated on" +msgstr "Ultima Modificación en" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__location_id +#: model_terms:ir.ui.view,arch_db:stock_report_quantity_by_location.stock_report_quantity_by_location_search_view +msgid "Location" +msgstr "Ubicación" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__location_ids +msgid "Locations" +msgstr "Ubicaciones" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields.selection,name:stock_report_quantity_by_location.selection__stock_report_quantity_by_location_prepare__availability__on_hand +msgid "On Hand" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__product_id +msgid "Product" +msgstr "Producto" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__product_category_id +msgid "Product Category" +msgstr "Categoría de Producto" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__uom_id +msgid "Product UoM" +msgstr "UdM de Producto" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__quantity_on_hand +msgid "Qty On Hand" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__quantity_reserved +msgid "Qty Reserved" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__quantity_unreserved +msgid "Qty Unreserved" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__with_quantity +msgid "Quantity > 0" +msgstr "Cantidad > 0" + +#. module: stock_report_quantity_by_location +#: model_terms:ir.ui.view,arch_db:stock_report_quantity_by_location.stock_report_quantity_by_location_search_view +msgid "Quantity On Hand > 0" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model_terms:ir.ui.view,arch_db:stock_report_quantity_by_location.stock_report_quantity_by_location_prepare_form_view +msgid "Retrieve the Inventory Quantities" +msgstr "Recuperar las Cantidades de Inventario" + +#. module: stock_report_quantity_by_location +#: model_terms:ir.ui.view,arch_db:stock_report_quantity_by_location.stock_report_quantity_by_location_search_view +msgid "Search Stock Report Quantity by Location" +msgstr "Buscar cantidad de informe de stock por ubicación" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,help:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__with_quantity +msgid "Show only the products that have existing quantity on hand" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.model,name:stock_report_quantity_by_location.model_stock_report_quantity_by_location +msgid "Stock Report By Location" +msgstr "Informe de stock por ubicación" + +#. module: stock_report_quantity_by_location +#: model:ir.model,name:stock_report_quantity_by_location.model_stock_report_quantity_by_location_prepare +msgid "Stock Report Quantity By Location Prepare" +msgstr "Cantidad de informe de stock por ubicación Preparar" + +#. module: stock_report_quantity_by_location +#. odoo-python +#: code:addons/stock_report_quantity_by_location/wizards/stock_report_quantity_by_location_prepare.py:0 +#, python-format +msgid "Stock Report by Location" +msgstr "Informe de stock por ubicación" + +#. module: stock_report_quantity_by_location +#: model_terms:ir.ui.view,arch_db:stock_report_quantity_by_location.stock_report_quantity_by_location_pivot_view +msgid "Stock by Location" +msgstr "Inventario por Ubicación" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields.selection,name:stock_report_quantity_by_location.selection__stock_report_quantity_by_location_prepare__availability__unreserved +msgid "Unreserved" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,help:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__availability +msgid "Unreserved is the Stock On Hand minus the reservations" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__wiz_id +msgid "Wiz" +msgstr "" + +#~ msgid "Quantity" +#~ msgstr "Cantidad" diff --git a/stock_report_quantity_by_location/i18n/it.po b/stock_report_quantity_by_location/i18n/it.po new file mode 100644 index 000000000..55ab5da16 --- /dev/null +++ b/stock_report_quantity_by_location/i18n/it.po @@ -0,0 +1,202 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_report_quantity_by_location +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-12-06 09:33+0000\n" +"Last-Translator: mymage \n" +"Language-Team: none\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_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__availability +msgid "Availability" +msgstr "Disponibilità" + +#. module: stock_report_quantity_by_location +#: model_terms:ir.ui.view,arch_db:stock_report_quantity_by_location.stock_report_quantity_by_location_prepare_form_view +msgid "Cancel" +msgstr "Annulla" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__create_uid +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__create_uid +msgid "Created by" +msgstr "Creato da" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__create_date +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__create_date +msgid "Created on" +msgstr "Creato il" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__display_name +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: stock_report_quantity_by_location +#: model_terms:ir.ui.view,arch_db:stock_report_quantity_by_location.stock_report_quantity_by_location_search_view +msgid "Group By" +msgstr "Raggruppa per" + +#. module: stock_report_quantity_by_location +#: model_terms:ir.ui.view,arch_db:stock_report_quantity_by_location.stock_report_quantity_by_location_search_view +msgid "Group by Location" +msgstr "Raggruppa per ubicazione" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__id +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__id +msgid "ID" +msgstr "ID" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__default_code +msgid "Internal Reference" +msgstr "Riferimento interno" + +#. module: stock_report_quantity_by_location +#: model:ir.actions.act_window,name:stock_report_quantity_by_location.action_stock_report_quantity_by_location_prepare +msgid "Inventory By Location" +msgstr "Inventario per ubicazione" + +#. module: stock_report_quantity_by_location +#: model:ir.ui.menu,name:stock_report_quantity_by_location.menu_quantity_by_location +msgid "Inventory by Location" +msgstr "Inventario per ubicazione" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location____last_update +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare____last_update +msgid "Last Modified on" +msgstr "Ultima modifica il" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__write_uid +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__write_uid +msgid "Last Updated by" +msgstr "Ultimo aggiornamento di" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__write_date +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__write_date +msgid "Last Updated on" +msgstr "Ultimo aggiornamento il" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__location_id +#: model_terms:ir.ui.view,arch_db:stock_report_quantity_by_location.stock_report_quantity_by_location_search_view +msgid "Location" +msgstr "Ubicazione" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__location_ids +msgid "Locations" +msgstr "Ubicazioni" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields.selection,name:stock_report_quantity_by_location.selection__stock_report_quantity_by_location_prepare__availability__on_hand +msgid "On Hand" +msgstr "A disposizione" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__product_id +msgid "Product" +msgstr "Prodotto" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__product_category_id +msgid "Product Category" +msgstr "Categoria prodotto" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__uom_id +msgid "Product UoM" +msgstr "UdM prodotto" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__quantity_on_hand +msgid "Qty On Hand" +msgstr "Q.tà disponibile" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__quantity_reserved +msgid "Qty Reserved" +msgstr "Q.tà penotata" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__quantity_unreserved +msgid "Qty Unreserved" +msgstr "Q.tà non prenotata" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__with_quantity +msgid "Quantity > 0" +msgstr "Quantità > 0" + +#. module: stock_report_quantity_by_location +#: model_terms:ir.ui.view,arch_db:stock_report_quantity_by_location.stock_report_quantity_by_location_search_view +msgid "Quantity On Hand > 0" +msgstr "Quantità disponibile > 0" + +#. module: stock_report_quantity_by_location +#: model_terms:ir.ui.view,arch_db:stock_report_quantity_by_location.stock_report_quantity_by_location_prepare_form_view +msgid "Retrieve the Inventory Quantities" +msgstr "Recupera le quantità di inventario" + +#. module: stock_report_quantity_by_location +#: model_terms:ir.ui.view,arch_db:stock_report_quantity_by_location.stock_report_quantity_by_location_search_view +msgid "Search Stock Report Quantity by Location" +msgstr "Cerca stampe quantità inventario per ubicazione" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,help:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__with_quantity +msgid "Show only the products that have existing quantity on hand" +msgstr "Mostra solo i prodotti che hanno quantità disponibile" + +#. module: stock_report_quantity_by_location +#: model:ir.model,name:stock_report_quantity_by_location.model_stock_report_quantity_by_location +msgid "Stock Report By Location" +msgstr "Stampa inventario per ubicazione" + +#. module: stock_report_quantity_by_location +#: model:ir.model,name:stock_report_quantity_by_location.model_stock_report_quantity_by_location_prepare +msgid "Stock Report Quantity By Location Prepare" +msgstr "Prepara stampa quantità per ubicazione" + +#. module: stock_report_quantity_by_location +#. odoo-python +#: code:addons/stock_report_quantity_by_location/wizards/stock_report_quantity_by_location_prepare.py:0 +#, python-format +msgid "Stock Report by Location" +msgstr "Stampa inventario per ubicazione" + +#. module: stock_report_quantity_by_location +#: model_terms:ir.ui.view,arch_db:stock_report_quantity_by_location.stock_report_quantity_by_location_pivot_view +msgid "Stock by Location" +msgstr "Inventario per ubicazione" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields.selection,name:stock_report_quantity_by_location.selection__stock_report_quantity_by_location_prepare__availability__unreserved +msgid "Unreserved" +msgstr "Non prenotata" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,help:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__availability +msgid "Unreserved is the Stock On Hand minus the reservations" +msgstr "Non prenotata è la giacenza disponibile meno le prenotazioni" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__wiz_id +msgid "Wiz" +msgstr "Procedura guidata" diff --git a/stock_report_quantity_by_location/i18n/stock_report_quantity_by_location.pot b/stock_report_quantity_by_location/i18n/stock_report_quantity_by_location.pot new file mode 100644 index 000000000..d7c51d611 --- /dev/null +++ b/stock_report_quantity_by_location/i18n/stock_report_quantity_by_location.pot @@ -0,0 +1,199 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_report_quantity_by_location +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__availability +msgid "Availability" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model_terms:ir.ui.view,arch_db:stock_report_quantity_by_location.stock_report_quantity_by_location_prepare_form_view +msgid "Cancel" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__create_uid +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__create_uid +msgid "Created by" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__create_date +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__create_date +msgid "Created on" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__display_name +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__display_name +msgid "Display Name" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model_terms:ir.ui.view,arch_db:stock_report_quantity_by_location.stock_report_quantity_by_location_search_view +msgid "Group By" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model_terms:ir.ui.view,arch_db:stock_report_quantity_by_location.stock_report_quantity_by_location_search_view +msgid "Group by Location" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__id +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__id +msgid "ID" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__default_code +msgid "Internal Reference" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.actions.act_window,name:stock_report_quantity_by_location.action_stock_report_quantity_by_location_prepare +msgid "Inventory By Location" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.ui.menu,name:stock_report_quantity_by_location.menu_quantity_by_location +msgid "Inventory by Location" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location____last_update +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare____last_update +msgid "Last Modified on" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__write_uid +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__write_date +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__write_date +msgid "Last Updated on" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__location_id +#: model_terms:ir.ui.view,arch_db:stock_report_quantity_by_location.stock_report_quantity_by_location_search_view +msgid "Location" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__location_ids +msgid "Locations" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields.selection,name:stock_report_quantity_by_location.selection__stock_report_quantity_by_location_prepare__availability__on_hand +msgid "On Hand" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__product_id +msgid "Product" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__product_category_id +msgid "Product Category" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__uom_id +msgid "Product UoM" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__quantity_on_hand +msgid "Qty On Hand" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__quantity_reserved +msgid "Qty Reserved" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__quantity_unreserved +msgid "Qty Unreserved" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__with_quantity +msgid "Quantity > 0" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model_terms:ir.ui.view,arch_db:stock_report_quantity_by_location.stock_report_quantity_by_location_search_view +msgid "Quantity On Hand > 0" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model_terms:ir.ui.view,arch_db:stock_report_quantity_by_location.stock_report_quantity_by_location_prepare_form_view +msgid "Retrieve the Inventory Quantities" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model_terms:ir.ui.view,arch_db:stock_report_quantity_by_location.stock_report_quantity_by_location_search_view +msgid "Search Stock Report Quantity by Location" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,help:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__with_quantity +msgid "Show only the products that have existing quantity on hand" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.model,name:stock_report_quantity_by_location.model_stock_report_quantity_by_location +msgid "Stock Report By Location" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.model,name:stock_report_quantity_by_location.model_stock_report_quantity_by_location_prepare +msgid "Stock Report Quantity By Location Prepare" +msgstr "" + +#. module: stock_report_quantity_by_location +#. odoo-python +#: code:addons/stock_report_quantity_by_location/wizards/stock_report_quantity_by_location_prepare.py:0 +#, python-format +msgid "Stock Report by Location" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model_terms:ir.ui.view,arch_db:stock_report_quantity_by_location.stock_report_quantity_by_location_pivot_view +msgid "Stock by Location" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields.selection,name:stock_report_quantity_by_location.selection__stock_report_quantity_by_location_prepare__availability__unreserved +msgid "Unreserved" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,help:stock_report_quantity_by_location.field_stock_report_quantity_by_location_prepare__availability +msgid "Unreserved is the Stock On Hand minus the reservations" +msgstr "" + +#. module: stock_report_quantity_by_location +#: model:ir.model.fields,field_description:stock_report_quantity_by_location.field_stock_report_quantity_by_location__wiz_id +msgid "Wiz" +msgstr "" diff --git a/stock_report_quantity_by_location/pyproject.toml b/stock_report_quantity_by_location/pyproject.toml new file mode 100644 index 000000000..4231d0ccc --- /dev/null +++ b/stock_report_quantity_by_location/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/stock_report_quantity_by_location/readme/CONTRIBUTORS.md b/stock_report_quantity_by_location/readme/CONTRIBUTORS.md new file mode 100644 index 000000000..9e0a35b50 --- /dev/null +++ b/stock_report_quantity_by_location/readme/CONTRIBUTORS.md @@ -0,0 +1,8 @@ +- ForgeFlow, S.L. () + - Jordi Ballester Alomar \<\> + - Hector Villarreal \<\> + +> - Ecosoft () +> - Kranokporn Thongdoung \<\> +> - FactorLibre () +> - Hugo Córdoba \<\> diff --git a/stock_report_quantity_by_location/readme/DESCRIPTION.md b/stock_report_quantity_by_location/readme/DESCRIPTION.md new file mode 100644 index 000000000..62d9db6ad --- /dev/null +++ b/stock_report_quantity_by_location/readme/DESCRIPTION.md @@ -0,0 +1,2 @@ +This module adds an additional reporting on Inventory side where +warehouse location quantities are shown by all stockable products. diff --git a/stock_report_quantity_by_location/security/ir.model.access.csv b/stock_report_quantity_by_location/security/ir.model.access.csv new file mode 100644 index 000000000..f027da093 --- /dev/null +++ b/stock_report_quantity_by_location/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_stock_report_quantity_by_location_prepare,access_stock_report_quantity_by_location_prepare,model_stock_report_quantity_by_location_prepare,base.group_user,1,1,1,0 +access_stock_report_quantity_by_location,access_stock_report_quantity_by_location,model_stock_report_quantity_by_location,base.group_user,1,1,1,0 diff --git a/stock_report_quantity_by_location/static/description/icon.png b/stock_report_quantity_by_location/static/description/icon.png new file mode 100644 index 000000000..3a0328b51 Binary files /dev/null and b/stock_report_quantity_by_location/static/description/icon.png differ diff --git a/stock_report_quantity_by_location/static/description/index.html b/stock_report_quantity_by_location/static/description/index.html new file mode 100644 index 000000000..9bf6bcc70 --- /dev/null +++ b/stock_report_quantity_by_location/static/description/index.html @@ -0,0 +1,441 @@ + + + + + +Stock Report Quantity By Location + + + +
+

Stock Report Quantity By Location

+ + +

Beta License: AGPL-3 OCA/stock-logistics-reporting Translate me on Weblate Try me on Runboat

+

This module adds an additional reporting on Inventory side where +warehouse location quantities are shown by all stockable products.

+

Table of contents

+ +
+

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

+
    +
  • ForgeFlow
  • +
+
+
+

Contributors

+ + +
+ +
+
+
+

Maintainers

+

This module is maintained by the OCA.

+ +Odoo Community Association + +

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-reporting project on GitHub.

+

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

+
+
+
+ + diff --git a/stock_report_quantity_by_location/tests/__init__.py b/stock_report_quantity_by_location/tests/__init__.py new file mode 100644 index 000000000..8d067768a --- /dev/null +++ b/stock_report_quantity_by_location/tests/__init__.py @@ -0,0 +1 @@ +from . import test_stock_report_quantity_by_location diff --git a/stock_report_quantity_by_location/tests/test_stock_report_quantity_by_location.py b/stock_report_quantity_by_location/tests/test_stock_report_quantity_by_location.py new file mode 100644 index 000000000..7dc19a9d4 --- /dev/null +++ b/stock_report_quantity_by_location/tests/test_stock_report_quantity_by_location.py @@ -0,0 +1,21 @@ +# Copyright 2019-21 ForgeFlow, S.L. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.tests.common import TransactionCase + + +class TestStockReportQuantityByLocation(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.stock_loc = cls.env.ref("stock.stock_location_stock") + + def test_wizard(self): + self.wizard = self.env["stock.report.quantity.by.location.prepare"].create( + {"location_ids": [(4, self.stock_loc.id)]} + ) + wiz_creator = self.wizard.open() + wizard_lines = self.env["stock.report.quantity.by.location"].search( + wiz_creator["domain"] + ) + self.assertFalse(any(wiz.location_id != self.stock_loc for wiz in wizard_lines)) diff --git a/stock_report_quantity_by_location/wizards/__init__.py b/stock_report_quantity_by_location/wizards/__init__.py new file mode 100644 index 000000000..c74f96d9f --- /dev/null +++ b/stock_report_quantity_by_location/wizards/__init__.py @@ -0,0 +1,2 @@ +from . import stock_report_quantity_by_location_prepare +from . import stock_report_quantity_by_location diff --git a/stock_report_quantity_by_location/wizards/stock_report_quantity_by_location.py b/stock_report_quantity_by_location/wizards/stock_report_quantity_by_location.py new file mode 100644 index 000000000..bb0dce065 --- /dev/null +++ b/stock_report_quantity_by_location/wizards/stock_report_quantity_by_location.py @@ -0,0 +1,20 @@ +# Copyright 2019-21 ForgeFlow, S.L. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import fields, models + + +class StockReportQuantityByLocation(models.TransientModel): + _name = "stock.report.quantity.by.location" + _description = "Stock Report By Location" + + wiz_id = fields.Many2one(comodel_name="stock.report.quantity.by.location.prepare") + product_id = fields.Many2one(comodel_name="product.product", required=True) + product_category_id = fields.Many2one( + comodel_name="product.category", string="Product Category" + ) + location_id = fields.Many2one(comodel_name="stock.location", required=True) + quantity_on_hand = fields.Float(string="Qty On Hand") + quantity_reserved = fields.Float(string="Qty Reserved") + quantity_unreserved = fields.Float(string="Qty Unreserved") + uom_id = fields.Many2one(comodel_name="uom.uom", string="Product UoM") + default_code = fields.Char("Internal Reference") diff --git a/stock_report_quantity_by_location/wizards/stock_report_quantity_by_location_prepare.py b/stock_report_quantity_by_location/wizards/stock_report_quantity_by_location_prepare.py new file mode 100644 index 000000000..2a370566d --- /dev/null +++ b/stock_report_quantity_by_location/wizards/stock_report_quantity_by_location_prepare.py @@ -0,0 +1,81 @@ +# Copyright 2019-21 ForgeFlow, S.L. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import _, fields, models + + +class StockReportByLocationPrepare(models.TransientModel): + _name = "stock.report.quantity.by.location.prepare" + _description = "Stock Report Quantity By Location Prepare" + + location_ids = fields.Many2many( + comodel_name="stock.location", string="Locations", required=True + ) + availability = fields.Selection( + selection=[("on_hand", "On Hand"), ("unreserved", "Unreserved")], + default="on_hand", + help="Unreserved is the Stock On Hand minus the reservations", + ) + with_quantity = fields.Boolean( + string="Quantity > 0", + default=True, + help="Show only the products that have existing quantity on hand", + ) + + def open(self): + self.ensure_one() + self._compute_stock_report_by_location() + action = { + "type": "ir.actions.act_window", + "view_mode": "pivot,tree", + "name": _("Stock Report by Location"), + "context": { + "search_default_quantity_gt_zero": 1, + "group_by_no_leaf": 1, + "group_by": [], + }, + "res_model": "stock.report.quantity.by.location", + "domain": [("wiz_id", "=", self.id)], + } + return action + + def _compute_stock_report_by_location(self): + self.ensure_one() + vals_list = [] + for loc in self.location_ids: + quant_groups = self.env["stock.quant"].read_group( + [("location_id", "child_of", [loc.id])], + ["quantity", "reserved_quantity", "product_id"], + ["product_id"], + ) + mapping = {} + for quant_group in quant_groups: + qty_on_hand = quant_group["quantity"] + qty_reserved = quant_group["reserved_quantity"] + qty_unreserved = qty_on_hand - qty_reserved + qty_dict = { + "quantity_on_hand": qty_on_hand, + "quantity_reserved": qty_reserved, + "quantity_unreserved": qty_unreserved, + } + mapping.setdefault(quant_group["product_id"][0], qty_dict) + products = self.env["product.product"].search([("type", "=", "product")]) + for product in products: + qty_dict = mapping.get(product.id, {}) + qty_on_hand = qty_dict.get("quantity_on_hand", 0.0) + qty_reserved = qty_dict.get("quantity_reserved", 0.0) + qty_unreserved = qty_dict.get("quantity_unreserved", 0.0) + if not self.with_quantity or qty_on_hand: + vals_list.append( + { + "product_id": product.id, + "product_category_id": product.categ_id.id, + "uom_id": product.uom_id.id, + "quantity_on_hand": qty_on_hand, + "quantity_reserved": qty_reserved, + "quantity_unreserved": qty_unreserved, + "location_id": loc.id, + "wiz_id": self.id, + "default_code": product.default_code, + } + ) + self.env["stock.report.quantity.by.location"].create(vals_list) diff --git a/stock_report_quantity_by_location/wizards/stock_report_quantity_by_location_views.xml b/stock_report_quantity_by_location/wizards/stock_report_quantity_by_location_views.xml new file mode 100644 index 000000000..f98b8a6d0 --- /dev/null +++ b/stock_report_quantity_by_location/wizards/stock_report_quantity_by_location_views.xml @@ -0,0 +1,109 @@ + + + + + Stock Report Quantity By Location Prepare + stock.report.quantity.by.location.prepare + +
+ + + + + + + + +
+
+
+
+
+ + Inventory By Location + stock.report.quantity.by.location.prepare + form + + new + + + + + Stock Report Quantity By Location Form + stock.report.quantity.by.location + + + + + + + + + + + + + + Stock Report Quantity By Location Pivot + stock.report.quantity.by.location + + + + + + + + + + + + + Stock Report Quantity By Location Search + stock.report.quantity.by.location + + + + + + + + + + + + + + +