diff --git a/stock_available_unreserved/README.rst b/stock_available_unreserved/README.rst new file mode 100644 index 000000000..2129fdd74 --- /dev/null +++ b/stock_available_unreserved/README.rst @@ -0,0 +1,94 @@ +========================== +Stock Available Unreserved +========================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png + :target: https://odoo-community.org/page/development-status + :alt: Production/Stable +.. |badge2| image:: https://img.shields.io/badge/licence-LGPL--3-blue.png + :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html + :alt: License: LGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fstock--logistics--warehouse-lightgray.png?logo=github + :target: https://github.com/OCA/stock-logistics-warehouse/tree/13.0/stock_available_unreserved + :alt: OCA/stock-logistics-warehouse +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/stock-logistics-warehouse-13-0/stock-logistics-warehouse-13-0-stock_available_unreserved + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/153/13.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows users to check the quantity of a stocked product that is +available on-hand, and that has not yet been reserved for use anywhere else. + +This key figure is very important during the monitoring of the warehouse +execution, because it assists users to ensure that the flow of products will +not be stuck due to a sudden unavailability of stock. + +If the warehouse personnel ensures that the unreserved quantity on hand > 0, +then nobody will be stuck in pickings or manufacturing orders waiting for +the availability of unreserved stock. + +**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 smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* ForgeFlow + +Contributors +~~~~~~~~~~~~ + +* Jordi Ballester Alomar +* Stefan Rijnhart +* Mykhailo Panarin +* Atte Isopuro +* Lois Rilo + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-LoisBForgeFlow| image:: https://github.com/LoisBForgeFlow.png?size=40px + :target: https://github.com/LoisBForgeFlow + :alt: LoisBForgeFlow + +Current `maintainer `__: + +|maintainer-LoisBForgeFlow| + +This module is part of the `OCA/stock-logistics-warehouse `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/stock_available_unreserved/__init__.py b/stock_available_unreserved/__init__.py new file mode 100644 index 000000000..0650744f6 --- /dev/null +++ b/stock_available_unreserved/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/stock_available_unreserved/__manifest__.py b/stock_available_unreserved/__manifest__.py new file mode 100644 index 000000000..35a00fb6b --- /dev/null +++ b/stock_available_unreserved/__manifest__.py @@ -0,0 +1,17 @@ +# Copyright 2018 Camptocamp SA +# Copyright 2016-19 ForgeFlow S.L. (https://www.forgeflow.com) +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +{ + "name": "Stock Available Unreserved", + "summary": "Quantity of stock available for immediate use", + "version": "13.0.1.0.0", + "author": "ForgeFlow, Odoo Community Association (OCA)", + "development_status": "Production/Stable", + "maintainers": ["LoisRForgeFlow"], + "website": "https://github.com/OCA/stock-logistics-warehouse", + "category": "Warehouse Management", + "depends": ["stock"], + "data": ["views/stock_quant_view.xml", "views/product_view.xml"], + "license": "LGPL-3", +} diff --git a/stock_available_unreserved/i18n/ar.po b/stock_available_unreserved/i18n/ar.po new file mode 100644 index 000000000..5d9979529 --- /dev/null +++ b/stock_available_unreserved/i18n/ar.po @@ -0,0 +1,86 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_available_unreserved +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2018-06-29 14:21+0000\n" +"Last-Translator: Osoul \n" +"Language-Team: none\n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" +"X-Generator: Weblate 3.0.1\n" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved +msgid "Contains unreserved products" +msgstr "يحتوي على كميات غير محجوزة" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view +msgid "Internal Unreserved" +msgstr "الغير محجوز داخلياً" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:116 +#, python-format +msgid "Invalid domain operator %s" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:118 +#, python-format +msgid "Invalid domain right operand %s" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_product +msgid "Product" +msgstr "المنتج" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_template +msgid "Product Template" +msgstr "قالب المنتج" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res +msgid "Qty Available Not Reserved" +msgstr "الكمية المتوفرة الغير محجوزة" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res +msgid "Quantity On Hand Unreserved" +msgstr "الكمية في متناول اليد الغير محجوزة" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock +msgid "Reservable Products" +msgstr "المنتجات القابلة للحجز" + +#. module: stock_available_unreserved +#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved +msgid "Stock On Hand (Unreserved)" +msgstr "الكمية في متناول اليد (غير محجوزة)" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button +msgid "Unreserved" +msgstr "غير محجوز" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view +msgid "Unreserved:" +msgstr "غير محجوز:" diff --git a/stock_available_unreserved/i18n/ca.po b/stock_available_unreserved/i18n/ca.po new file mode 100644 index 000000000..d4f273707 --- /dev/null +++ b/stock_available_unreserved/i18n/ca.po @@ -0,0 +1,87 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_available_unreserved +# +# Translators: +# Carles Antoli , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-03-04 03:58+0000\n" +"PO-Revision-Date: 2017-03-04 03:58+0000\n" +"Last-Translator: Carles Antoli , 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_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved +msgid "Contains unreserved products" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view +msgid "Internal Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:116 +#, python-format +msgid "Invalid domain operator %s" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:118 +#, python-format +msgid "Invalid domain right operand %s" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_product +msgid "Product" +msgstr "Producte" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_template +msgid "Product Template" +msgstr "Plantilla del producte" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res +msgid "Qty Available Not Reserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res +msgid "Quantity On Hand Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock +msgid "Reservable Products" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved +msgid "Stock On Hand (Unreserved)" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button +msgid "Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view +msgid "Unreserved:" +msgstr "" diff --git a/stock_available_unreserved/i18n/de.po b/stock_available_unreserved/i18n/de.po new file mode 100644 index 000000000..efb8ae89a --- /dev/null +++ b/stock_available_unreserved/i18n/de.po @@ -0,0 +1,96 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_available_unreserved +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 14:35+0000\n" +"PO-Revision-Date: 2018-01-16 14:35+0000\n" +"Last-Translator: OCA Transbot , 2017\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" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved +msgid "Contains unreserved products" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view +msgid "Internal Unreserved" +msgstr "Intern nicht reserviert" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:116 +#, python-format +msgid "Invalid domain operator %s" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:118 +#, python-format +msgid "Invalid domain right operand %s" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_product +msgid "Product" +msgstr "Produkt" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_template +msgid "Product Template" +msgstr "Produktvorlage" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res +msgid "Qty Available Not Reserved" +msgstr "Freier Bestand" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res +msgid "Quantity On Hand Unreserved" +msgstr "Nicht reservierte, verfügbare Menge" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock +msgid "Reservable Products" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved +msgid "Stock On Hand (Unreserved)" +msgstr "Freier Bestand (nicht reserv.)" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button +msgid "Unreserved" +msgstr "Nicht reserviert" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view +msgid "Unreserved:" +msgstr "Nicht reserviert:" + +#~ msgid " On Hand" +#~ msgstr "Verfügbar" + +#~ msgid "Available per stock" +#~ msgstr "Verfügbar nach Bestand" + +#~ msgid "Unreserved stock quantity" +#~ msgstr "Nicht reservierte Bestandsmenge" diff --git a/stock_available_unreserved/i18n/el_GR.po b/stock_available_unreserved/i18n/el_GR.po new file mode 100644 index 000000000..80c0ac2f3 --- /dev/null +++ b/stock_available_unreserved/i18n/el_GR.po @@ -0,0 +1,88 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_available_unreserved +# +# Translators: +# Kostas Goutoudis , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-03-04 03:58+0000\n" +"PO-Revision-Date: 2017-03-04 03:58+0000\n" +"Last-Translator: Kostas Goutoudis , 2017\n" +"Language-Team: Greek (Greece) (https://www.transifex.com/oca/teams/23907/" +"el_GR/)\n" +"Language: el_GR\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_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved +msgid "Contains unreserved products" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view +msgid "Internal Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:116 +#, python-format +msgid "Invalid domain operator %s" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:118 +#, python-format +msgid "Invalid domain right operand %s" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_product +msgid "Product" +msgstr "Προϊόν" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_template +msgid "Product Template" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res +msgid "Qty Available Not Reserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res +msgid "Quantity On Hand Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock +msgid "Reservable Products" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved +msgid "Stock On Hand (Unreserved)" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button +msgid "Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view +msgid "Unreserved:" +msgstr "" diff --git a/stock_available_unreserved/i18n/es.po b/stock_available_unreserved/i18n/es.po new file mode 100644 index 000000000..7dbdbaae0 --- /dev/null +++ b/stock_available_unreserved/i18n/es.po @@ -0,0 +1,88 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_available_unreserved +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-03-04 03:58+0000\n" +"PO-Revision-Date: 2019-11-26 20:14+0000\n" +"Last-Translator: Galoperd \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: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.9.1\n" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved +msgid "Contains unreserved products" +msgstr "Contiene producto no reservado" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view +msgid "Internal Unreserved" +msgstr "No reservado interno" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:116 +#, python-format +msgid "Invalid domain operator %s" +msgstr "Operador de dominio inválido %s" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:118 +#, python-format +msgid "Invalid domain right operand %s" +msgstr "Operando de dominio inválido %s" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_product +msgid "Product" +msgstr "Producto" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_template +msgid "Product Template" +msgstr "Plantilla de producto" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res +msgid "Qty Available Not Reserved" +msgstr "Cant. Disponible No Reservada" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res +msgid "Quantity On Hand Unreserved" +msgstr "Cantidad A Mano No Reservada" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_stock_quant +msgid "Quants" +msgstr "Cantidades" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock +msgid "Reservable Products" +msgstr "Productos Reservables" + +#. module: stock_available_unreserved +#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved +msgid "Stock On Hand (Unreserved)" +msgstr "Stock A Mano (No Reservado)" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button +msgid "Unreserved" +msgstr "No reservado" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view +msgid "Unreserved:" +msgstr "No reservado:" diff --git a/stock_available_unreserved/i18n/es_ES.po b/stock_available_unreserved/i18n/es_ES.po new file mode 100644 index 000000000..cc484fda5 --- /dev/null +++ b/stock_available_unreserved/i18n/es_ES.po @@ -0,0 +1,88 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_available_unreserved +# +# Translators: +# Javier García-Panach , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-03-04 03:58+0000\n" +"PO-Revision-Date: 2017-03-04 03:58+0000\n" +"Last-Translator: Javier García-Panach , 2017\n" +"Language-Team: Spanish (Spain) (https://www.transifex.com/oca/teams/23907/" +"es_ES/)\n" +"Language: es_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" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved +msgid "Contains unreserved products" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view +msgid "Internal Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:116 +#, python-format +msgid "Invalid domain operator %s" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:118 +#, python-format +msgid "Invalid domain right operand %s" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_product +msgid "Product" +msgstr "Producto" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_template +msgid "Product Template" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res +msgid "Qty Available Not Reserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res +msgid "Quantity On Hand Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock +msgid "Reservable Products" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved +msgid "Stock On Hand (Unreserved)" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button +msgid "Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view +msgid "Unreserved:" +msgstr "" diff --git a/stock_available_unreserved/i18n/es_MX.po b/stock_available_unreserved/i18n/es_MX.po new file mode 100644 index 000000000..47e78de87 --- /dev/null +++ b/stock_available_unreserved/i18n/es_MX.po @@ -0,0 +1,88 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_available_unreserved +# +# Translators: +# Juan González , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-03-04 03:58+0000\n" +"PO-Revision-Date: 2017-03-04 03:58+0000\n" +"Last-Translator: Juan González , 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_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved +msgid "Contains unreserved products" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view +msgid "Internal Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:116 +#, python-format +msgid "Invalid domain operator %s" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:118 +#, python-format +msgid "Invalid domain right operand %s" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_product +msgid "Product" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_template +msgid "Product Template" +msgstr "Plantilla del producto" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res +msgid "Qty Available Not Reserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res +msgid "Quantity On Hand Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock +msgid "Reservable Products" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved +msgid "Stock On Hand (Unreserved)" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button +msgid "Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view +msgid "Unreserved:" +msgstr "" diff --git a/stock_available_unreserved/i18n/eu.po b/stock_available_unreserved/i18n/eu.po new file mode 100644 index 000000000..19397066e --- /dev/null +++ b/stock_available_unreserved/i18n/eu.po @@ -0,0 +1,87 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_available_unreserved +# +# Translators: +# Esther Martín Menéndez , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-03-04 03:58+0000\n" +"PO-Revision-Date: 2017-03-04 03:58+0000\n" +"Last-Translator: Esther Martín Menéndez , 2017\n" +"Language-Team: Basque (https://www.transifex.com/oca/teams/23907/eu/)\n" +"Language: eu\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_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved +msgid "Contains unreserved products" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view +msgid "Internal Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:116 +#, python-format +msgid "Invalid domain operator %s" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:118 +#, python-format +msgid "Invalid domain right operand %s" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_product +msgid "Product" +msgstr "Produktua" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_template +msgid "Product Template" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res +msgid "Qty Available Not Reserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res +msgid "Quantity On Hand Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock +msgid "Reservable Products" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved +msgid "Stock On Hand (Unreserved)" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button +msgid "Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view +msgid "Unreserved:" +msgstr "" diff --git a/stock_available_unreserved/i18n/fi.po b/stock_available_unreserved/i18n/fi.po new file mode 100644 index 000000000..7b05b0b50 --- /dev/null +++ b/stock_available_unreserved/i18n/fi.po @@ -0,0 +1,87 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_available_unreserved +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-03-04 03:58+0000\n" +"PO-Revision-Date: 2017-03-04 03:58+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Finnish (https://www.transifex.com/oca/teams/23907/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_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved +msgid "Contains unreserved products" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view +msgid "Internal Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:116 +#, python-format +msgid "Invalid domain operator %s" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:118 +#, python-format +msgid "Invalid domain right operand %s" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_product +msgid "Product" +msgstr "Tuote" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_template +msgid "Product Template" +msgstr "Tuotteen malli" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res +msgid "Qty Available Not Reserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res +msgid "Quantity On Hand Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock +msgid "Reservable Products" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved +msgid "Stock On Hand (Unreserved)" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button +msgid "Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view +msgid "Unreserved:" +msgstr "" diff --git a/stock_available_unreserved/i18n/fr.po b/stock_available_unreserved/i18n/fr.po new file mode 100644 index 000000000..1c9d84a66 --- /dev/null +++ b/stock_available_unreserved/i18n/fr.po @@ -0,0 +1,87 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_available_unreserved +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-03-04 03:58+0000\n" +"PO-Revision-Date: 2017-03-04 03:58+0000\n" +"Last-Translator: OCA Transbot , 2017\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" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved +msgid "Contains unreserved products" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view +msgid "Internal Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:116 +#, python-format +msgid "Invalid domain operator %s" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:118 +#, python-format +msgid "Invalid domain right operand %s" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_product +msgid "Product" +msgstr "Article" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_template +msgid "Product Template" +msgstr "Modèle de produit" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res +msgid "Qty Available Not Reserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res +msgid "Quantity On Hand Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock +msgid "Reservable Products" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved +msgid "Stock On Hand (Unreserved)" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button +msgid "Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view +msgid "Unreserved:" +msgstr "" diff --git a/stock_available_unreserved/i18n/fr_CH.po b/stock_available_unreserved/i18n/fr_CH.po new file mode 100644 index 000000000..e26b3512f --- /dev/null +++ b/stock_available_unreserved/i18n/fr_CH.po @@ -0,0 +1,89 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_available_unreserved +# +# Translators: +# leemannd , 2017 +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-03-04 03:58+0000\n" +"PO-Revision-Date: 2017-03-04 03:58+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: French (Switzerland) (https://www.transifex.com/oca/" +"teams/23907/fr_CH/)\n" +"Language: fr_CH\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_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved +msgid "Contains unreserved products" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view +msgid "Internal Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:116 +#, python-format +msgid "Invalid domain operator %s" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:118 +#, python-format +msgid "Invalid domain right operand %s" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_product +msgid "Product" +msgstr "Produit" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_template +msgid "Product Template" +msgstr "Template de produit" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res +msgid "Qty Available Not Reserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res +msgid "Quantity On Hand Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock +msgid "Reservable Products" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved +msgid "Stock On Hand (Unreserved)" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button +msgid "Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view +msgid "Unreserved:" +msgstr "" diff --git a/stock_available_unreserved/i18n/fr_FR.po b/stock_available_unreserved/i18n/fr_FR.po new file mode 100644 index 000000000..955f6d6ab --- /dev/null +++ b/stock_available_unreserved/i18n/fr_FR.po @@ -0,0 +1,88 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_available_unreserved +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-03-04 03:58+0000\n" +"PO-Revision-Date: 2017-03-04 03:58+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: French (France) (https://www.transifex.com/oca/teams/23907/" +"fr_FR/)\n" +"Language: fr_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" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved +msgid "Contains unreserved products" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view +msgid "Internal Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:116 +#, python-format +msgid "Invalid domain operator %s" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:118 +#, python-format +msgid "Invalid domain right operand %s" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_product +msgid "Product" +msgstr "Produit" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_template +msgid "Product Template" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res +msgid "Qty Available Not Reserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res +msgid "Quantity On Hand Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock +msgid "Reservable Products" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved +msgid "Stock On Hand (Unreserved)" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button +msgid "Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view +msgid "Unreserved:" +msgstr "" diff --git a/stock_available_unreserved/i18n/gl.po b/stock_available_unreserved/i18n/gl.po new file mode 100644 index 000000000..7091b4bd6 --- /dev/null +++ b/stock_available_unreserved/i18n/gl.po @@ -0,0 +1,87 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_available_unreserved +# +# Translators: +# César Castro Cruz , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-03-04 03:58+0000\n" +"PO-Revision-Date: 2017-03-04 03:58+0000\n" +"Last-Translator: César Castro Cruz , 2017\n" +"Language-Team: Galician (https://www.transifex.com/oca/teams/23907/gl/)\n" +"Language: gl\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_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved +msgid "Contains unreserved products" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view +msgid "Internal Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:116 +#, python-format +msgid "Invalid domain operator %s" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:118 +#, python-format +msgid "Invalid domain right operand %s" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_product +msgid "Product" +msgstr "Produto" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_template +msgid "Product Template" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res +msgid "Qty Available Not Reserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res +msgid "Quantity On Hand Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock +msgid "Reservable Products" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved +msgid "Stock On Hand (Unreserved)" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button +msgid "Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view +msgid "Unreserved:" +msgstr "" diff --git a/stock_available_unreserved/i18n/hr.po b/stock_available_unreserved/i18n/hr.po new file mode 100644 index 000000000..1bb3ed6d2 --- /dev/null +++ b/stock_available_unreserved/i18n/hr.po @@ -0,0 +1,89 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_available_unreserved +# +# Translators: +# Bole , 2017 +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-03-04 03:58+0000\n" +"PO-Revision-Date: 2017-03-04 03:58+0000\n" +"Last-Translator: OCA Transbot , 2017\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" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved +msgid "Contains unreserved products" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view +msgid "Internal Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:116 +#, python-format +msgid "Invalid domain operator %s" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:118 +#, python-format +msgid "Invalid domain right operand %s" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_product +msgid "Product" +msgstr "Proizvod" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_template +msgid "Product Template" +msgstr "Predložak proizvoda" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res +msgid "Qty Available Not Reserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res +msgid "Quantity On Hand Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock +msgid "Reservable Products" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved +msgid "Stock On Hand (Unreserved)" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button +msgid "Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view +msgid "Unreserved:" +msgstr "" diff --git a/stock_available_unreserved/i18n/hr_HR.po b/stock_available_unreserved/i18n/hr_HR.po new file mode 100644 index 000000000..373346c0d --- /dev/null +++ b/stock_available_unreserved/i18n/hr_HR.po @@ -0,0 +1,90 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_available_unreserved +# +# Translators: +# Bole , 2017 +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-03-04 03:58+0000\n" +"PO-Revision-Date: 2017-03-04 03:58+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Croatian (Croatia) (https://www.transifex.com/oca/teams/23907/" +"hr_HR/)\n" +"Language: hr_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" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved +msgid "Contains unreserved products" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view +msgid "Internal Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:116 +#, python-format +msgid "Invalid domain operator %s" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:118 +#, python-format +msgid "Invalid domain right operand %s" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_product +msgid "Product" +msgstr "Proizvod" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_template +msgid "Product Template" +msgstr "Predložak proizvoda" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res +msgid "Qty Available Not Reserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res +msgid "Quantity On Hand Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock +msgid "Reservable Products" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved +msgid "Stock On Hand (Unreserved)" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button +msgid "Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view +msgid "Unreserved:" +msgstr "" diff --git a/stock_available_unreserved/i18n/it.po b/stock_available_unreserved/i18n/it.po new file mode 100644 index 000000000..bac646fc7 --- /dev/null +++ b/stock_available_unreserved/i18n/it.po @@ -0,0 +1,88 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_available_unreserved +# +# Translators: +# Paolo Valier , 2017 +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-03-04 03:58+0000\n" +"PO-Revision-Date: 2017-03-04 03:58+0000\n" +"Last-Translator: OCA Transbot , 2017\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" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved +msgid "Contains unreserved products" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view +msgid "Internal Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:116 +#, python-format +msgid "Invalid domain operator %s" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:118 +#, python-format +msgid "Invalid domain right operand %s" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_product +msgid "Product" +msgstr "Prodotto" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_template +msgid "Product Template" +msgstr "Template Prodotto" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res +msgid "Qty Available Not Reserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res +msgid "Quantity On Hand Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock +msgid "Reservable Products" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved +msgid "Stock On Hand (Unreserved)" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button +msgid "Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view +msgid "Unreserved:" +msgstr "" diff --git a/stock_available_unreserved/i18n/nl.po b/stock_available_unreserved/i18n/nl.po new file mode 100644 index 000000000..bafbedb03 --- /dev/null +++ b/stock_available_unreserved/i18n/nl.po @@ -0,0 +1,87 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_available_unreserved +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 14:35+0000\n" +"PO-Revision-Date: 2018-01-16 14:35+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Dutch (https://www.transifex.com/oca/teams/23907/nl/)\n" +"Language: 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_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved +msgid "Contains unreserved products" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view +msgid "Internal Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:116 +#, python-format +msgid "Invalid domain operator %s" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:118 +#, python-format +msgid "Invalid domain right operand %s" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_product +msgid "Product" +msgstr "Product" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_template +msgid "Product Template" +msgstr "Productsjabloon" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res +msgid "Qty Available Not Reserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res +msgid "Quantity On Hand Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock +msgid "Reservable Products" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved +msgid "Stock On Hand (Unreserved)" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button +msgid "Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view +msgid "Unreserved:" +msgstr "" diff --git a/stock_available_unreserved/i18n/nl_NL.po b/stock_available_unreserved/i18n/nl_NL.po new file mode 100644 index 000000000..b9afbcb32 --- /dev/null +++ b/stock_available_unreserved/i18n/nl_NL.po @@ -0,0 +1,89 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_available_unreserved +# +# Translators: +# OCA Transbot , 2017 +# Peter Hageman , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-23 00:57+0000\n" +"PO-Revision-Date: 2017-06-23 00:57+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_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved +msgid "Contains unreserved products" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view +msgid "Internal Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:116 +#, python-format +msgid "Invalid domain operator %s" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:118 +#, python-format +msgid "Invalid domain right operand %s" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_product +msgid "Product" +msgstr "Product" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_template +msgid "Product Template" +msgstr "Productsjabloon" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res +msgid "Qty Available Not Reserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res +msgid "Quantity On Hand Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock +msgid "Reservable Products" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved +msgid "Stock On Hand (Unreserved)" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button +msgid "Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view +msgid "Unreserved:" +msgstr "" diff --git a/stock_available_unreserved/i18n/pt.po b/stock_available_unreserved/i18n/pt.po new file mode 100644 index 000000000..cee1a2584 --- /dev/null +++ b/stock_available_unreserved/i18n/pt.po @@ -0,0 +1,87 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_available_unreserved +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-03-04 03:58+0000\n" +"PO-Revision-Date: 2017-03-04 03:58+0000\n" +"Last-Translator: OCA Transbot , 2017\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" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved +msgid "Contains unreserved products" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view +msgid "Internal Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:116 +#, python-format +msgid "Invalid domain operator %s" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:118 +#, python-format +msgid "Invalid domain right operand %s" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_product +msgid "Product" +msgstr "Produto" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_template +msgid "Product Template" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res +msgid "Qty Available Not Reserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res +msgid "Quantity On Hand Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock +msgid "Reservable Products" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved +msgid "Stock On Hand (Unreserved)" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button +msgid "Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view +msgid "Unreserved:" +msgstr "" diff --git a/stock_available_unreserved/i18n/pt_BR.po b/stock_available_unreserved/i18n/pt_BR.po new file mode 100644 index 000000000..f7caba7a0 --- /dev/null +++ b/stock_available_unreserved/i18n/pt_BR.po @@ -0,0 +1,90 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_available_unreserved +# +# Translators: +# Claudio Araujo Santos , 2017 +# OCA Transbot , 2017 +# danimaribeiro , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-03-04 03:58+0000\n" +"PO-Revision-Date: 2017-03-04 03:58+0000\n" +"Last-Translator: danimaribeiro , 2017\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" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved +msgid "Contains unreserved products" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view +msgid "Internal Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:116 +#, python-format +msgid "Invalid domain operator %s" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:118 +#, python-format +msgid "Invalid domain right operand %s" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_product +msgid "Product" +msgstr "Produto" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_template +msgid "Product Template" +msgstr "Modelo Produto" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res +msgid "Qty Available Not Reserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res +msgid "Quantity On Hand Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock +msgid "Reservable Products" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved +msgid "Stock On Hand (Unreserved)" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button +msgid "Unreserved" +msgstr "Desreservar" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view +msgid "Unreserved:" +msgstr "" diff --git a/stock_available_unreserved/i18n/ro.po b/stock_available_unreserved/i18n/ro.po new file mode 100644 index 000000000..ae4371571 --- /dev/null +++ b/stock_available_unreserved/i18n/ro.po @@ -0,0 +1,88 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_available_unreserved +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-03-04 03:58+0000\n" +"PO-Revision-Date: 2017-03-04 03:58+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Romanian (https://www.transifex.com/oca/teams/23907/ro/)\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" +"2:1));\n" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved +msgid "Contains unreserved products" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view +msgid "Internal Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:116 +#, python-format +msgid "Invalid domain operator %s" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:118 +#, python-format +msgid "Invalid domain right operand %s" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_product +msgid "Product" +msgstr "Produs" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_template +msgid "Product Template" +msgstr "Produs șablon" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res +msgid "Qty Available Not Reserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res +msgid "Quantity On Hand Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock +msgid "Reservable Products" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved +msgid "Stock On Hand (Unreserved)" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button +msgid "Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view +msgid "Unreserved:" +msgstr "" diff --git a/stock_available_unreserved/i18n/ru.po b/stock_available_unreserved/i18n/ru.po new file mode 100644 index 000000000..3a6918626 --- /dev/null +++ b/stock_available_unreserved/i18n/ru.po @@ -0,0 +1,89 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_available_unreserved +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 14:35+0000\n" +"PO-Revision-Date: 2018-01-16 14:35+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Russian (https://www.transifex.com/oca/teams/23907/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n" +"%100>=11 && n%100<=14)? 2 : 3);\n" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved +msgid "Contains unreserved products" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view +msgid "Internal Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:116 +#, python-format +msgid "Invalid domain operator %s" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:118 +#, python-format +msgid "Invalid domain right operand %s" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_product +msgid "Product" +msgstr "Товар/Услуга" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_template +msgid "Product Template" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res +msgid "Qty Available Not Reserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res +msgid "Quantity On Hand Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock +msgid "Reservable Products" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved +msgid "Stock On Hand (Unreserved)" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button +msgid "Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view +msgid "Unreserved:" +msgstr "" diff --git a/stock_available_unreserved/i18n/sl.po b/stock_available_unreserved/i18n/sl.po new file mode 100644 index 000000000..bf560b143 --- /dev/null +++ b/stock_available_unreserved/i18n/sl.po @@ -0,0 +1,97 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_available_unreserved +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-01-16 14:35+0000\n" +"PO-Revision-Date: 2018-01-16 14:35+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_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved +msgid "Contains unreserved products" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view +msgid "Internal Unreserved" +msgstr "Interno ne rezervirano" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:116 +#, python-format +msgid "Invalid domain operator %s" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:118 +#, python-format +msgid "Invalid domain right operand %s" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_product +msgid "Product" +msgstr "Proizvod" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_template +msgid "Product Template" +msgstr "Predloga proizvoda" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res +msgid "Qty Available Not Reserved" +msgstr "Ne rezervirana količina na voljo" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res +msgid "Quantity On Hand Unreserved" +msgstr "Ne rezervirana količna pri roki" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock +msgid "Reservable Products" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved +msgid "Stock On Hand (Unreserved)" +msgstr "Količina pri roki (ne rezervirana)" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button +msgid "Unreserved" +msgstr "Odstranjena rezervacija" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view +msgid "Unreserved:" +msgstr "Ne rezervirano:" + +#~ msgid " On Hand" +#~ msgstr "Na voljo" + +#~ msgid "Available per stock" +#~ msgstr "Na voljo po zalogah" + +#~ msgid "Unreserved stock quantity" +#~ msgstr "Količina ne rezerviranih zalog" diff --git a/stock_available_unreserved/i18n/stock_available_unreserved.pot b/stock_available_unreserved/i18n/stock_available_unreserved.pot new file mode 100644 index 000000000..50add1a2f --- /dev/null +++ b/stock_available_unreserved/i18n/stock_available_unreserved.pot @@ -0,0 +1,83 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_available_unreserved +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.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_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved +msgid "Contains unreserved products" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view +msgid "Internal Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:116 +#, python-format +msgid "Invalid domain operator %s" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:118 +#, python-format +msgid "Invalid domain right operand %s" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_product +msgid "Product" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_template +msgid "Product Template" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res +msgid "Qty Available Not Reserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res +msgid "Quantity On Hand Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock +msgid "Reservable Products" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved +msgid "Stock On Hand (Unreserved)" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button +msgid "Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view +msgid "Unreserved:" +msgstr "" + diff --git a/stock_available_unreserved/i18n/tr.po b/stock_available_unreserved/i18n/tr.po new file mode 100644 index 000000000..009bfc8a8 --- /dev/null +++ b/stock_available_unreserved/i18n/tr.po @@ -0,0 +1,88 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_available_unreserved +# +# Translators: +# Ediz Duman , 2017 +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-23 00:57+0000\n" +"PO-Revision-Date: 2017-06-23 00:57+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_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved +msgid "Contains unreserved products" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view +msgid "Internal Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:116 +#, python-format +msgid "Invalid domain operator %s" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:118 +#, python-format +msgid "Invalid domain right operand %s" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_product +msgid "Product" +msgstr "Ürün" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_template +msgid "Product Template" +msgstr "Ürün Şablonu" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res +msgid "Qty Available Not Reserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res +msgid "Quantity On Hand Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock +msgid "Reservable Products" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved +msgid "Stock On Hand (Unreserved)" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button +msgid "Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view +msgid "Unreserved:" +msgstr "" diff --git a/stock_available_unreserved/i18n/tr_TR.po b/stock_available_unreserved/i18n/tr_TR.po new file mode 100644 index 000000000..3c75c4035 --- /dev/null +++ b/stock_available_unreserved/i18n/tr_TR.po @@ -0,0 +1,88 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_available_unreserved +# +# Translators: +# Ozge Altinisik , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-03-04 03:58+0000\n" +"PO-Revision-Date: 2017-03-04 03:58+0000\n" +"Last-Translator: Ozge Altinisik , 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_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved +msgid "Contains unreserved products" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view +msgid "Internal Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:116 +#, python-format +msgid "Invalid domain operator %s" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:118 +#, python-format +msgid "Invalid domain right operand %s" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_product +msgid "Product" +msgstr "Ürün" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_template +msgid "Product Template" +msgstr "Ürün şablonu" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res +msgid "Qty Available Not Reserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res +msgid "Quantity On Hand Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock +msgid "Reservable Products" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved +msgid "Stock On Hand (Unreserved)" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button +msgid "Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view +msgid "Unreserved:" +msgstr "" diff --git a/stock_available_unreserved/i18n/vi_VN.po b/stock_available_unreserved/i18n/vi_VN.po new file mode 100644 index 000000000..1861d9ef5 --- /dev/null +++ b/stock_available_unreserved/i18n/vi_VN.po @@ -0,0 +1,88 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_available_unreserved +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-03-04 03:58+0000\n" +"PO-Revision-Date: 2017-03-04 03:58+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/oca/" +"teams/23907/vi_VN/)\n" +"Language: vi_VN\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_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved +msgid "Contains unreserved products" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view +msgid "Internal Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:116 +#, python-format +msgid "Invalid domain operator %s" +msgstr "" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:118 +#, python-format +msgid "Invalid domain right operand %s" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_product +msgid "Product" +msgstr "Sản phẩm" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_template +msgid "Product Template" +msgstr "Mẫu sản phẩm" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res +msgid "Qty Available Not Reserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res +msgid "Quantity On Hand Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock +msgid "Reservable Products" +msgstr "" + +#. module: stock_available_unreserved +#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved +msgid "Stock On Hand (Unreserved)" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button +msgid "Unreserved" +msgstr "" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view +msgid "Unreserved:" +msgstr "" diff --git a/stock_available_unreserved/i18n/zh_CN.po b/stock_available_unreserved/i18n/zh_CN.po new file mode 100644 index 000000000..756bfca9d --- /dev/null +++ b/stock_available_unreserved/i18n/zh_CN.po @@ -0,0 +1,89 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_available_unreserved +# +# Translators: +# Jeffery CHEN , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-03-04 03:58+0000\n" +"PO-Revision-Date: 2019-09-26 17:24+0000\n" +"Last-Translator: 黎伟杰 <674416404@qq.com>\n" +"Language-Team: Chinese (China) (https://www.transifex.com/oca/teams/23907/" +"zh_CN/)\n" +"Language: zh_CN\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" +"X-Generator: Weblate 3.8\n" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved +msgid "Contains unreserved products" +msgstr "包含未预留的产品" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view +msgid "Internal Unreserved" +msgstr "内部未预留" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:116 +#, python-format +msgid "Invalid domain operator %s" +msgstr "无效的域运算符%s" + +#. module: stock_available_unreserved +#: code:addons/stock_available_unreserved/models/product.py:118 +#, python-format +msgid "Invalid domain right operand %s" +msgstr "无效的域权限操作数%s" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_product +msgid "Product" +msgstr "产品" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_product_template +msgid "Product Template" +msgstr "产品模板" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res +msgid "Qty Available Not Reserved" +msgstr "可用量未预留" + +#. module: stock_available_unreserved +#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res +msgid "Quantity On Hand Unreserved" +msgstr "未预留的在手数量" + +#. module: stock_available_unreserved +#: model:ir.model,name:stock_available_unreserved.model_stock_quant +msgid "Quants" +msgstr "数量分析" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock +msgid "Reservable Products" +msgstr "可预订产品" + +#. module: stock_available_unreserved +#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved +msgid "Stock On Hand (Unreserved)" +msgstr "现有库存(未预留)" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button +msgid "Unreserved" +msgstr "未预留" + +#. module: stock_available_unreserved +#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view +msgid "Unreserved:" +msgstr "未预留:" diff --git a/stock_available_unreserved/models/__init__.py b/stock_available_unreserved/models/__init__.py new file mode 100644 index 000000000..6d26fbefb --- /dev/null +++ b/stock_available_unreserved/models/__init__.py @@ -0,0 +1,2 @@ +from . import product +from . import quant diff --git a/stock_available_unreserved/models/product.py b/stock_available_unreserved/models/product.py new file mode 100644 index 000000000..3422f6699 --- /dev/null +++ b/stock_available_unreserved/models/product.py @@ -0,0 +1,115 @@ +# Copyright 2018 Camptocamp SA +# Copyright 2016-19 ForgeFlow S.L. (https://www.forgeflow.com) +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +from odoo import _, api, fields, models +from odoo.exceptions import UserError +from odoo.tools.float_utils import float_round + +from odoo.addons.stock.models.product import OPERATORS + + +class ProductTemplate(models.Model): + _inherit = "product.template" + + qty_available_not_res = fields.Float( + string="Quantity On Hand Unreserved", + digits="Product Unit of Measure", + compute="_compute_product_available_not_res", + search="_search_quantity_unreserved", + ) + + @api.depends("product_variant_ids.qty_available_not_res") + def _compute_product_available_not_res(self): + for tmpl in self: + if isinstance(tmpl.id, models.NewId): + continue + tmpl.qty_available_not_res = sum( + tmpl.mapped("product_variant_ids.qty_available_not_res") + ) + + def action_open_quants_unreserved(self): + products_ids = self.mapped("product_variant_ids").ids + quants = self.env["stock.quant"].search([("product_id", "in", products_ids)]) + quant_ids = quants.filtered( + lambda x: x.product_id.qty_available_not_res > 0 + ).ids + result = self.env.ref("stock.product_template_open_quants").read()[0] + result["domain"] = [("id", "in", quant_ids)] + result["context"] = { + "search_default_locationgroup": 1, + "search_default_internal_loc": 1, + } + return result + + def _search_quantity_unreserved(self, operator, value): + domain = [("qty_available_not_res", operator, value)] + product_variant_ids = self.env["product.product"].search(domain) + return [("product_variant_ids", "in", product_variant_ids.ids)] + + +class ProductProduct(models.Model): + _inherit = "product.product" + + qty_available_not_res = fields.Float( + string="Qty Available Not Reserved", + digits="Product Unit of Measure", + compute="_compute_qty_available_not_reserved", + search="_search_quantity_unreserved", + ) + + def _prepare_domain_available_not_reserved(self): + domain_quant = [("product_id", "in", self.ids)] + domain_quant_locations = self._get_domain_locations()[0] + domain_quant.extend(domain_quant_locations) + return domain_quant + + def _compute_product_available_not_res_dict(self): + + res = {} + + domain_quant = self._prepare_domain_available_not_reserved() + quants = ( + self.env["stock.quant"] + .with_context(lang=False) + .read_group( + domain_quant, + ["product_id", "location_id", "quantity", "reserved_quantity"], + ["product_id", "location_id"], + lazy=False, + ) + ) + product_sums = {} + for quant in quants: + # create a dictionary with the total value per products + product_sums.setdefault(quant["product_id"][0], 0.0) + product_sums[quant["product_id"][0]] += ( + quant["quantity"] - quant["reserved_quantity"] + ) + for product in self.with_context(prefetch_fields=False, lang=""): + available_not_res = float_round( + product_sums.get(product.id, 0.0), + precision_rounding=product.uom_id.rounding, + ) + res[product.id] = {"qty_available_not_res": available_not_res} + return res + + @api.depends("stock_move_ids.product_qty", "stock_move_ids.state") + def _compute_qty_available_not_reserved(self): + res = self._compute_product_available_not_res_dict() + for prod in self: + qty = res[prod.id]["qty_available_not_res"] + prod.qty_available_not_res = qty + return res + + def _search_quantity_unreserved(self, operator, value): + if operator not in OPERATORS: + raise UserError(_("Invalid domain operator %s") % operator) + if not isinstance(value, (float, int)): + raise UserError(_("Invalid domain right operand %s") % value) + + ids = [] + for product in self.search([]): + if OPERATORS[operator](product.qty_available_not_res, value): + ids.append(product.id) + return [("id", "in", ids)] diff --git a/stock_available_unreserved/models/quant.py b/stock_available_unreserved/models/quant.py new file mode 100644 index 000000000..ede236e55 --- /dev/null +++ b/stock_available_unreserved/models/quant.py @@ -0,0 +1,23 @@ +# Copyright 2018 Camptocamp SA +# Copyright 2016-19 ForgeFlow S.L. (https://www.forgeflow.com) +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +from odoo import api, fields, models + + +class StockQuant(models.Model): + _inherit = "stock.quant" + + contains_unreserved = fields.Boolean( + string="Contains unreserved products", + compute="_compute_contains_unreserved", + store=True, + ) + + @api.depends("product_id", "location_id", "quantity", "reserved_quantity") + def _compute_contains_unreserved(self): + for record in self: + available = record._get_available_quantity( + record.product_id, record.location_id + ) + record.contains_unreserved = True if available > 0 else False diff --git a/stock_available_unreserved/readme/CONTRIBUTORS.rst b/stock_available_unreserved/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..781c431d2 --- /dev/null +++ b/stock_available_unreserved/readme/CONTRIBUTORS.rst @@ -0,0 +1,5 @@ +* Jordi Ballester Alomar +* Stefan Rijnhart +* Mykhailo Panarin +* Atte Isopuro +* Lois Rilo diff --git a/stock_available_unreserved/readme/DESCRIPTION.rst b/stock_available_unreserved/readme/DESCRIPTION.rst new file mode 100644 index 000000000..b5dfb2b6f --- /dev/null +++ b/stock_available_unreserved/readme/DESCRIPTION.rst @@ -0,0 +1,10 @@ +This module allows users to check the quantity of a stocked product that is +available on-hand, and that has not yet been reserved for use anywhere else. + +This key figure is very important during the monitoring of the warehouse +execution, because it assists users to ensure that the flow of products will +not be stuck due to a sudden unavailability of stock. + +If the warehouse personnel ensures that the unreserved quantity on hand > 0, +then nobody will be stuck in pickings or manufacturing orders waiting for +the availability of unreserved stock. diff --git a/stock_available_unreserved/static/description/icon.png b/stock_available_unreserved/static/description/icon.png new file mode 100644 index 000000000..3a0328b51 Binary files /dev/null and b/stock_available_unreserved/static/description/icon.png differ diff --git a/stock_available_unreserved/static/description/index.html b/stock_available_unreserved/static/description/index.html new file mode 100644 index 000000000..08402439c --- /dev/null +++ b/stock_available_unreserved/static/description/index.html @@ -0,0 +1,432 @@ + + + + + + +Stock Available Unreserved + + + +
+

Stock Available Unreserved

+ + +

Production/Stable License: LGPL-3 OCA/stock-logistics-warehouse Translate me on Weblate Try me on Runbot

+

This module allows users to check the quantity of a stocked product that is +available on-hand, and that has not yet been reserved for use anywhere else.

+

This key figure is very important during the monitoring of the warehouse +execution, because it assists users to ensure that the flow of products will +not be stuck due to a sudden unavailability of stock.

+

If the warehouse personnel ensures that the unreserved quantity on hand > 0, +then nobody will be stuck in pickings or manufacturing orders waiting for +the availability of unreserved stock.

+

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 smashing 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.

+

Current maintainer:

+

LoisBForgeFlow

+

This module is part of the OCA/stock-logistics-warehouse project on GitHub.

+

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

+
+
+
+ + diff --git a/stock_available_unreserved/tests/__init__.py b/stock_available_unreserved/tests/__init__.py new file mode 100644 index 000000000..96c954ccd --- /dev/null +++ b/stock_available_unreserved/tests/__init__.py @@ -0,0 +1 @@ +from . import test_stock_available_unreserved diff --git a/stock_available_unreserved/tests/test_stock_available_unreserved.py b/stock_available_unreserved/tests/test_stock_available_unreserved.py new file mode 100644 index 000000000..580d731c9 --- /dev/null +++ b/stock_available_unreserved/tests/test_stock_available_unreserved.py @@ -0,0 +1,376 @@ +# Copyright 2018 Camptocamp SA +# Copyright 2016-19 ForgeFlow S.L. (https://www.forgeflow.com) +# Copyright 2019 JARSA Sistemas S.A. de C.V. +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +from odoo.tests.common import SavepointCase + + +class TestStockLogisticsWarehouse(SavepointCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.pickingObj = cls.env["stock.picking"] + cls.productObj = cls.env["product.product"] + cls.templateObj = cls.env["product.template"] + cls.attrObj = cls.env["product.attribute"] + cls.attrvalueObj = cls.env["product.attribute.value"] + + cls.supplier_location = cls.env.ref("stock.stock_location_suppliers") + cls.stock_location = cls.env.ref("stock.stock_location_stock") + cls.customer_location = cls.env.ref("stock.stock_location_customers") + cls.uom_unit = cls.env.ref("uom.product_uom_unit") + cls.main_company = cls.env.ref("base.main_company") + + cls.bin_a = cls.env["stock.location"].create( + { + "usage": "internal", + "name": "Bin A", + "location_id": cls.stock_location.id, + "company_id": cls.main_company.id, + } + ) + + cls.bin_b = cls.env["stock.location"].create( + { + "usage": "internal", + "name": "Bin B", + "location_id": cls.stock_location.id, + "company_id": cls.main_company.id, + } + ) + + cls.env["stock.location"]._parent_store_compute() + + # Create product template + cls.templateAB = cls.templateObj.create( + {"name": "templAB", "uom_id": cls.uom_unit.id, "type": "product"} + ) + + # Create product A and B + cls.color_attribute = cls.attrObj.create({"name": "Color", "sequence": 1}) + cls.color_black = cls.attrvalueObj.create( + {"name": "Black", "attribute_id": cls.color_attribute.id, "sequence": 1} + ) + cls.color_white = cls.attrvalueObj.create( + {"name": "White", "attribute_id": cls.color_attribute.id, "sequence": 2} + ) + cls.color_grey = cls.attrvalueObj.create( + {"name": "Grey", "attribute_id": cls.color_attribute.id, "sequence": 3} + ) + cls.product_attribute_line = cls.env["product.template.attribute.line"].create( + { + "product_tmpl_id": cls.templateAB.id, + "attribute_id": cls.color_attribute.id, + "value_ids": [ + (6, 0, [cls.color_white.id, cls.color_black.id, cls.color_grey.id]) + ], + } + ) + cls.productA = cls.templateAB.product_variant_ids[0] + cls.productB = cls.templateAB.product_variant_ids[1] + + cls.productC = cls.templateAB.product_variant_ids[2] + + # Create a picking move from INCOMING to STOCK + cls.pickingInA = cls.pickingObj.create( + { + "picking_type_id": cls.env.ref("stock.picking_type_in").id, + "location_id": cls.supplier_location.id, + "location_dest_id": cls.stock_location.id, + "move_lines": [ + ( + 0, + 0, + { + "name": "Test move", + "product_id": cls.productA.id, + "product_uom": cls.productA.uom_id.id, + "product_uom_qty": 2, + "quantity_done": 2, + "location_id": cls.supplier_location.id, + "location_dest_id": cls.stock_location.id, + }, + ) + ], + } + ) + + cls.pickingInB = cls.pickingObj.create( + { + "picking_type_id": cls.env.ref("stock.picking_type_in").id, + "location_id": cls.supplier_location.id, + "location_dest_id": cls.stock_location.id, + "move_lines": [ + ( + 0, + 0, + { + "name": "Test move", + "product_id": cls.productB.id, + "product_uom": cls.productB.uom_id.id, + "product_uom_qty": 3, + "quantity_done": 3, + "location_id": cls.supplier_location.id, + "location_dest_id": cls.stock_location.id, + }, + ) + ], + } + ) + cls.pickingOutA = cls.pickingObj.create( + { + "picking_type_id": cls.env.ref("stock.picking_type_out").id, + "location_id": cls.stock_location.id, + "location_dest_id": cls.customer_location.id, + "move_lines": [ + ( + 0, + 0, + { + "name": "Test move", + "product_id": cls.productB.id, + "product_uom": cls.productB.uom_id.id, + "product_uom_qty": 2, + "location_id": cls.stock_location.id, + "location_dest_id": cls.customer_location.id, + }, + ) + ], + } + ) + + def compare_qty_available_not_res(self, product, value): + product.invalidate_cache() + self.assertEqual(product.qty_available_not_res, value) + + def test_01_stock_levels(self): + """checking that qty_available_not_res actually reflects \ + the variations in stock, both on product and template""" + + self.compare_qty_available_not_res(self.productA, 0) + self.compare_qty_available_not_res(self.templateAB, 0) + + self.pickingInA.action_confirm() + self.compare_qty_available_not_res(self.productA, 0) + self.compare_qty_available_not_res(self.templateAB, 0) + + self.pickingInA.action_assign() + self.compare_qty_available_not_res(self.productA, 0) + self.compare_qty_available_not_res(self.templateAB, 0) + + self.pickingInA.button_validate() + self.compare_qty_available_not_res(self.productA, 2) + self.compare_qty_available_not_res(self.templateAB, 2) + + # will directly trigger action_done on self.productB + self.pickingInB.action_done() + self.compare_qty_available_not_res(self.productA, 2) + self.compare_qty_available_not_res(self.productB, 3) + self.compare_qty_available_not_res(self.templateAB, 5) + + self.compare_qty_available_not_res(self.productB, 3) + self.compare_qty_available_not_res(self.templateAB, 5) + + self.pickingOutA.action_confirm() + self.compare_qty_available_not_res(self.productB, 3) + self.compare_qty_available_not_res(self.templateAB, 5) + + self.pickingOutA.action_assign() + self.compare_qty_available_not_res(self.productB, 1) + self.compare_qty_available_not_res(self.templateAB, 3) + + self.pickingOutA.action_done() + self.compare_qty_available_not_res(self.productB, 1) + self.compare_qty_available_not_res(self.templateAB, 3) + + self.templateAB.action_open_quants_unreserved() + + def test_02_more_than_one_quant(self): + self.env["stock.quant"].create( + { + "location_id": self.stock_location.id, + "company_id": self.main_company.id, + "product_id": self.productA.id, + "quantity": 10.0, + } + ) + self.env["stock.quant"].create( + { + "location_id": self.bin_a.id, + "company_id": self.main_company.id, + "product_id": self.productA.id, + "quantity": 10.0, + } + ) + self.env["stock.quant"].create( + { + "location_id": self.bin_b.id, + "company_id": self.main_company.id, + "product_id": self.productA.id, + "quantity": 60.0, + } + ) + self.compare_qty_available_not_res(self.productA, 80) + + def check_variants_found_correctly(self, operator, value, expected): + domain = [("id", "in", self.templateAB.product_variant_ids.ids)] + return self.check_found_correctly( + self.env["product.product"], domain, operator, value, expected + ) + + def check_template_found_correctly(self, operator, value, expected): + # There may be other products already in the system: ignore those + domain = [("id", "in", self.templateAB.ids)] + return self.check_found_correctly( + self.env["product.template"], domain, operator, value, expected + ) + + def check_found_correctly(self, model, domain, operator, value, expected): + found = model.search(domain + [("qty_available_not_res", operator, value)]) + if found != expected: + self.fail( + "Searching for products failed: search for unreserved " + "quantity {operator} {value}; expected to find " + "{expected}, but found {found}".format( + operator=operator, + value=value, + expected=expected or "no products", + found=found, + ) + ) + + def test_03_stock_search(self): + all_variants = self.templateAB.product_variant_ids + a_and_b = self.productA + self.productB + b_and_c = self.productB + self.productC + a_and_c = self.productA + self.productC + no_variants = self.env["product.product"] + no_template = self.env["product.template"] + # Start: one template with three variants. + # All variants have zero unreserved stock + self.check_variants_found_correctly("=", 0, all_variants) + self.check_variants_found_correctly(">=", 0, all_variants) + self.check_variants_found_correctly("<=", 0, all_variants) + self.check_variants_found_correctly(">", 0, no_variants) + self.check_variants_found_correctly("<", 0, no_variants) + self.check_variants_found_correctly("!=", 0, no_variants) + + self.check_template_found_correctly("=", 0, self.templateAB) + self.check_template_found_correctly(">=", 0, self.templateAB) + self.check_template_found_correctly("<=", 0, self.templateAB) + self.check_template_found_correctly(">", 0, no_template) + self.check_template_found_correctly("<", 0, no_template) + self.check_template_found_correctly("!=", 0, no_template) + + self.pickingInA.action_confirm() + # All variants still have zero unreserved stock + self.check_variants_found_correctly("=", 0, all_variants) + self.check_variants_found_correctly(">=", 0, all_variants) + self.check_variants_found_correctly("<=", 0, all_variants) + self.check_variants_found_correctly(">", 0, no_variants) + self.check_variants_found_correctly("<", 0, no_variants) + self.check_variants_found_correctly("!=", 0, no_variants) + + self.check_template_found_correctly("=", 0, self.templateAB) + self.check_template_found_correctly(">=", 0, self.templateAB) + self.check_template_found_correctly("<=", 0, self.templateAB) + self.check_template_found_correctly(">", 0, no_template) + self.check_template_found_correctly("<", 0, no_template) + self.check_template_found_correctly("!=", 0, no_template) + + self.pickingInA.action_assign() + # All variants still have zero unreserved stock + self.check_variants_found_correctly("=", 0, all_variants) + self.check_variants_found_correctly(">=", 0, all_variants) + self.check_variants_found_correctly("<=", 0, all_variants) + self.check_variants_found_correctly(">", 0, no_variants) + self.check_variants_found_correctly("<", 0, no_variants) + self.check_variants_found_correctly("!=", 0, no_variants) + + self.check_template_found_correctly("=", 0, self.templateAB) + self.check_template_found_correctly(">=", 0, self.templateAB) + self.check_template_found_correctly("<=", 0, self.templateAB) + self.check_template_found_correctly(">", 0, no_template) + self.check_template_found_correctly("<", 0, no_template) + self.check_template_found_correctly("!=", 0, no_template) + + self.pickingInA.button_validate() + # product A has 2 unreserved stock, other variants have 0 + + self.check_variants_found_correctly("=", 2, self.productA) + self.check_variants_found_correctly("=", 0, b_and_c) + self.check_variants_found_correctly(">", 0, self.productA) + self.check_variants_found_correctly("<", 0, no_variants) + self.check_variants_found_correctly("!=", 0, self.productA) + self.check_variants_found_correctly("!=", 1, all_variants) + self.check_variants_found_correctly("!=", 2, b_and_c) + self.check_variants_found_correctly("<=", 0, b_and_c) + self.check_variants_found_correctly("<=", 1, b_and_c) + self.check_variants_found_correctly(">=", 0, all_variants) + self.check_variants_found_correctly(">=", 1, self.productA) + + self.check_template_found_correctly("=", 0, self.templateAB) + self.check_template_found_correctly("=", 1, no_template) + self.check_template_found_correctly("=", 2, self.templateAB) + self.check_template_found_correctly("!=", 0, self.templateAB) + self.check_template_found_correctly("!=", 1, self.templateAB) + self.check_template_found_correctly("!=", 2, self.templateAB) + self.check_template_found_correctly(">", -1, self.templateAB) + self.check_template_found_correctly(">", 0, self.templateAB) + self.check_template_found_correctly(">", 1, self.templateAB) + self.check_template_found_correctly(">", 2, no_template) + self.check_template_found_correctly("<", 3, self.templateAB) + self.check_template_found_correctly("<", 2, self.templateAB) + self.check_template_found_correctly("<", 1, self.templateAB) + self.check_template_found_correctly("<", 0, no_template) + self.check_template_found_correctly(">=", 0, self.templateAB) + self.check_template_found_correctly(">=", 1, self.templateAB) + self.check_template_found_correctly(">=", 2, self.templateAB) + self.check_template_found_correctly(">=", 3, no_template) + self.check_template_found_correctly("<=", 3, self.templateAB) + self.check_template_found_correctly("<=", 2, self.templateAB) + self.check_template_found_correctly("<=", 1, self.templateAB) + self.check_template_found_correctly("<=", 0, self.templateAB) + self.check_template_found_correctly("<=", -1, no_template) + + self.pickingInB.action_done() + # product A has 2 unreserved, product B has 3 unreserved and + # the remaining variant has 0 + + self.check_variants_found_correctly("=", 2, self.productA) + self.check_variants_found_correctly("=", 3, self.productB) + self.check_variants_found_correctly("=", 0, self.productC) + self.check_variants_found_correctly(">", 0, a_and_b) + self.check_variants_found_correctly("<", 0, no_variants) + self.check_variants_found_correctly("!=", 0, a_and_b) + self.check_variants_found_correctly("!=", 1, all_variants) + self.check_variants_found_correctly("!=", 2, b_and_c) + self.check_variants_found_correctly("!=", 3, a_and_c) + self.check_variants_found_correctly("<=", 0, self.productC) + self.check_variants_found_correctly("<=", 1, self.productC) + self.check_variants_found_correctly(">=", 0, all_variants) + self.check_variants_found_correctly(">=", 1, a_and_b) + self.check_variants_found_correctly(">=", 2, a_and_b) + self.check_variants_found_correctly(">=", 3, self.productB) + self.check_variants_found_correctly(">=", 4, no_variants) + + self.check_template_found_correctly("=", 0, self.templateAB) + self.check_template_found_correctly("=", 1, no_template) + self.check_template_found_correctly("=", 2, self.templateAB) + self.check_template_found_correctly("=", 3, self.templateAB) + self.check_template_found_correctly("!=", 0, self.templateAB) + self.check_template_found_correctly("!=", 2, self.templateAB) + self.check_template_found_correctly("!=", 3, self.templateAB) + self.check_template_found_correctly(">", 1, self.templateAB) + self.check_template_found_correctly(">", 2, self.templateAB) + # This part may seem a bit unintuitive, but this is the + # way it works in the Odoo core + # Searches are "deferred" to the variants, so while the template says + # it has a stock of 5, searching for a stock greater than 3 will not + # find anything because no singular variant has a higher stock + self.check_template_found_correctly(">", 3, no_template) + self.check_template_found_correctly("<", 3, self.templateAB) + self.check_template_found_correctly("<", 2, self.templateAB) + self.check_template_found_correctly("<", 1, self.templateAB) + self.check_template_found_correctly("<", 0, no_template) diff --git a/stock_available_unreserved/views/product_view.xml b/stock_available_unreserved/views/product_view.xml new file mode 100644 index 000000000..f8c1c4185 --- /dev/null +++ b/stock_available_unreserved/views/product_view.xml @@ -0,0 +1,86 @@ + + + + + product.template.stock.tree.inherit + product.template + + + + + + + + + + product.template.search.stock.form.inherit + product.template + + + + + + + + + + Product Template Kanban Stock + product.template + + +
    +
  • Unreserved:
  • +
+
+
+ + + product.stock.tree.inherit + product.product + + + + + + + + + + product.template_procurement + product.template + + +
+ +
+
+
+ + + product.product.procurement + product.product + + +
+ +
+
+
+ +
diff --git a/stock_available_unreserved/views/stock_quant_view.xml b/stock_available_unreserved/views/stock_quant_view.xml new file mode 100644 index 000000000..d8a3bdffa --- /dev/null +++ b/stock_available_unreserved/views/stock_quant_view.xml @@ -0,0 +1,28 @@ + + + + + stock.quant.search + stock.quant + + + + + + + + + + + + + + Stock On Hand (Unreserved) + {'search_default_internal_loc': 1, 'search_default_locationgroup':1} + [('product_id', '=', active_id), ('contains_unreserved', '=', True)] + stock.quant + + +