diff --git a/setup/stock_inventory_discrepancy/odoo/addons/stock_inventory_discrepancy b/setup/stock_inventory_discrepancy/odoo/addons/stock_inventory_discrepancy new file mode 120000 index 000000000..4bd9c428d --- /dev/null +++ b/setup/stock_inventory_discrepancy/odoo/addons/stock_inventory_discrepancy @@ -0,0 +1 @@ +../../../../stock_inventory_discrepancy \ No newline at end of file diff --git a/setup/stock_inventory_discrepancy/setup.py b/setup/stock_inventory_discrepancy/setup.py new file mode 100644 index 000000000..28c57bb64 --- /dev/null +++ b/setup/stock_inventory_discrepancy/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/stock_inventory_discrepancy/README.rst b/stock_inventory_discrepancy/README.rst new file mode 100644 index 000000000..ac8a57259 --- /dev/null +++ b/stock_inventory_discrepancy/README.rst @@ -0,0 +1,110 @@ +=========================== +Stock Inventory Discrepancy +=========================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:0efdc09fe825f32b12c7add6f17e5a2d37dc61eb02dbbfe7fb521868339981ae + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fstock--logistics--warehouse-lightgray.png?logo=github + :target: https://github.com/OCA/stock-logistics-warehouse/tree/15.0/stock_inventory_discrepancy + :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-15-0/stock-logistics-warehouse-15-0-stock_inventory_discrepancy + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/stock-logistics-warehouse&target_branch=15.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Adds the capability to show the discrepancy of every line in an inventory and +to block the inventory validation (setting it as 'Pending to Approve') when the +discrepancy is greater than an user defined threshold. + +Only new group "Validate All inventory Adjustments" will be able to force the +validation of those blocked inventories. By default, Stock manager will belong +to this group. In addition, Stock Users can validate inventories under the +threshold now. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +#. Go to "Inventory > Warehouse Management" > Warehouses" or to "Inventory > + Warehouse Management" > Locations". +#. Modify the "Maximum Discrepancy Rate Threshold" either in a Warehouse or + in a location. If set to 0.0 in both the threshold is disabled. + +Usage +===== + +If you configured a "Maximum Discrepancy Rate Threshold". + +#. When validating an Inventory Adjustment if some line exceed the Discrepancy + Threshold the system will set the inventory's state to 'Pending to Approve' + and show the quantity of lines that exceed the threshold. +#. If both WH and location thresholds are configured, the location one has + preference. +#. The user with "Validate All inventory Adjustments" rights can force the + validation of an inventory pending to approve. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* ForgeFlow + +Contributors +~~~~~~~~~~~~ + +* Lois Rilo +* Andreas Dian Sukarno Putro +* Bhavesh Odedra +* Héctor Villarreal +* `Tecnativa `_: + + * Ernesto Tejeda + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/stock-logistics-warehouse `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/stock_inventory_discrepancy/__init__.py b/stock_inventory_discrepancy/__init__.py new file mode 100644 index 000000000..0ceaa3daf --- /dev/null +++ b/stock_inventory_discrepancy/__init__.py @@ -0,0 +1,5 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from . import models +from . import wizards +from .hooks import post_load_hook diff --git a/stock_inventory_discrepancy/__manifest__.py b/stock_inventory_discrepancy/__manifest__.py new file mode 100644 index 000000000..bbdeca59b --- /dev/null +++ b/stock_inventory_discrepancy/__manifest__.py @@ -0,0 +1,26 @@ +# Copyright 2017-2020 ForgeFlow S.L. (http://www.forgeflow.com) +# Copyright 2023 Tecnativa - Carolina Fernandez +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +{ + "name": "Stock Inventory Discrepancy", + "summary": "Adds the capability to show the discrepancy of every line in " + "an inventory and to block the inventory validation when the " + "discrepancy is over a user defined threshold.", + "version": "16.0.1.0.0", + "author": "ForgeFlow, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/stock-logistics-warehouse", + "category": "Warehouse", + "depends": ["stock"], + "data": [ + "security/stock_inventory_discrepancy_security.xml", + "security/ir.model.access.csv", + "views/stock_quant_view.xml", + "views/stock_warehouse_view.xml", + "views/stock_location_view.xml", + "wizards/confirm_discrepancy_wiz.xml", + ], + "license": "AGPL-3", + "post_load": "post_load_hook", + "installable": True, + "application": False, +} diff --git a/stock_inventory_discrepancy/hooks.py b/stock_inventory_discrepancy/hooks.py new file mode 100644 index 000000000..84a1de372 --- /dev/null +++ b/stock_inventory_discrepancy/hooks.py @@ -0,0 +1,76 @@ +# Copyright 2019 ForgeFlow S.L. +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + + +from odoo import _, fields +from odoo.exceptions import UserError +from odoo.tools.float_utils import float_compare + +from odoo.addons.stock.models.stock_quant import StockQuant + + +def post_load_hook(): + def _apply_inventory_discrepancy(self): + """Override method to avoid inline group validation""" + move_vals = [] + # START HOOK: - Allow specific group to validate inventory + # - Allow validate on pending status + if ( + not self.user_has_groups("stock.group_stock_manager") + and not self.user_has_groups( + "stock_inventory_discrepancy.group_stock_inventory_validation" + ) + and not self.user_has_groups( + "stock_inventory_discrepancy.group_stock_inventory_validation_always" + ) + ): + raise UserError( + _("Only a stock manager can validate an inventory adjustment.") + ) + # Allow to write last_inventory_date on stock.location + self = self.sudo() + # END HOOK + for quant in self: + # Create and validate a move so that the quant matches its `inventory_quantity`. + if ( + float_compare( + quant.inventory_diff_quantity, + 0, + precision_rounding=quant.product_uom_id.rounding, + ) + > 0 + ): + move_vals.append( + quant._get_inventory_move_values( + quant.inventory_diff_quantity, + quant.product_id.with_company( + quant.company_id + ).property_stock_inventory, + quant.location_id, + ) + ) + else: + move_vals.append( + quant._get_inventory_move_values( + -quant.inventory_diff_quantity, + quant.location_id, + quant.product_id.with_company( + quant.company_id + ).property_stock_inventory, + out=True, + ) + ) + moves = ( + self.env["stock.move"].with_context(inventory_mode=False).create(move_vals) + ) + moves._action_done() + self.location_id.write({"last_inventory_date": fields.Date.today()}) + date_by_location = { + loc: loc._get_next_inventory_date() for loc in self.mapped("location_id") + } + for quant in self: + quant.inventory_date = date_by_location[quant.location_id] + self.write({"inventory_quantity": 0, "user_id": False}) + self.write({"inventory_diff_quantity": 0}) + + StockQuant._patch_method("_apply_inventory", _apply_inventory_discrepancy) diff --git a/stock_inventory_discrepancy/i18n/cs_CZ.po b/stock_inventory_discrepancy/i18n/cs_CZ.po new file mode 100644 index 000000000..df8b2f20d --- /dev/null +++ b/stock_inventory_discrepancy/i18n/cs_CZ.po @@ -0,0 +1,195 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_inventory_discrepancy +# +# Translators: +# Lukáš Spurný , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-02-27 11:37+0000\n" +"PO-Revision-Date: 2018-02-27 11:37+0000\n" +"Last-Translator: Lukáš Spurný , 2018\n" +"Language-Team: Czech (Czech Republic) (https://www.transifex.com/oca/" +"teams/23907/cs_CZ/)\n" +"Language: cs_CZ\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>=2 && n<=4) ? 1 : 2;\n" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Apply" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Cancel" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_confirm_discrepancy_wiz +msgid "Confim discrepancy wizard" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.actions.act_window,name:stock_inventory_discrepancy.confirm_discrepancy_action +msgid "Confirm discrepancy" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__create_uid +msgid "Created by" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__create_date +msgid "Created on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Dates does not match" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__discrepancy_quant_ids +msgid "Discrepancy Quant" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__discrepancy_percent +msgid "Discrepancy percent (%)" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__display_name +msgid "Display Name" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__has_over_discrepancy +msgid "Has Over Discrepancy" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__id +msgid "ID" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_location +msgid "Inventory Locations" +msgstr "Umístění inventáře" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz____last_update +msgid "Last Modified on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__write_date +msgid "Last Updated on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_location__discrepancy_threshold +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_warehouse__discrepancy_threshold +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_quant__discrepancy_threshold +msgid "Maximum Discrepancy Rate Threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_warehouse__discrepancy_threshold +msgid "" +"Maximum Discrepancy Rate allowed for any product when doing an Inventory " +"Adjustment. Threshold defined in involved Location has preference." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_location__discrepancy_threshold +msgid "" +"Maximum Discrepancy Rate allowed for any product when doing an Inventory " +"Adjustment. Thresholds defined in Locations have preference over Warehouse's " +"ones." +msgstr "" + +#. module: stock_inventory_discrepancy +#: code:addons/stock_inventory_discrepancy/hooks.py:0 +#, python-format +msgid "Only a stock manager can validate an inventory adjustment." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_location__propagate_discrepancy_threshold +msgid "Propagate Maximum Discrepancy Rate Threshold to child locations" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_location__propagate_discrepancy_threshold +msgid "Propagate discrepancy threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_quant__discrepancy_percent +msgid "The discrepancy expressed in percent with theoretical quantity as basis" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "" +"The following products have exceeded the discrepancy threshold.\n" +" Are you sure you want to proceed?" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__discrepancy_threshold +msgid "Threshold (%)" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation +msgid "Validate Inventory Adjustments" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation_always +msgid "Validate Inventory Adjustments excceded threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_warehouse +msgid "Warehouse" +msgstr "" + +#. module: stock_inventory_discrepancy +#: code:addons/stock_inventory_discrepancy/wizards/confirm_discrepancy_wiz.py:0 +#, python-format +msgid "" +"You cannot apply inventory adjustments if there are products that exceed the " +"discrepancy threshold. Only users with rights to apply them can proceed." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "" +"You cannot confirm the inventory adjustment,\n" +" the following products have exceeded the discrepancy " +"threshold.\n" +" Only users with permissions to apply them can proceed." +msgstr "" + +#~ msgid "Inventory" +#~ msgstr "Inventář" diff --git a/stock_inventory_discrepancy/i18n/de.po b/stock_inventory_discrepancy/i18n/de.po new file mode 100644 index 000000000..6f9406502 --- /dev/null +++ b/stock_inventory_discrepancy/i18n/de.po @@ -0,0 +1,197 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_inventory_discrepancy +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-11-30 03:53+0000\n" +"PO-Revision-Date: 2017-11-30 03:53+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_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Apply" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Cancel" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_confirm_discrepancy_wiz +msgid "Confim discrepancy wizard" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.actions.act_window,name:stock_inventory_discrepancy.confirm_discrepancy_action +msgid "Confirm discrepancy" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__create_uid +msgid "Created by" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__create_date +msgid "Created on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Dates does not match" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__discrepancy_quant_ids +msgid "Discrepancy Quant" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__discrepancy_percent +msgid "Discrepancy percent (%)" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__display_name +msgid "Display Name" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__has_over_discrepancy +msgid "Has Over Discrepancy" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__id +msgid "ID" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_location +msgid "Inventory Locations" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz____last_update +msgid "Last Modified on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__write_date +msgid "Last Updated on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_location__discrepancy_threshold +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_warehouse__discrepancy_threshold +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_quant__discrepancy_threshold +msgid "Maximum Discrepancy Rate Threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_warehouse__discrepancy_threshold +msgid "" +"Maximum Discrepancy Rate allowed for any product when doing an Inventory " +"Adjustment. Threshold defined in involved Location has preference." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_location__discrepancy_threshold +msgid "" +"Maximum Discrepancy Rate allowed for any product when doing an Inventory " +"Adjustment. Thresholds defined in Locations have preference over Warehouse's " +"ones." +msgstr "" + +#. module: stock_inventory_discrepancy +#: code:addons/stock_inventory_discrepancy/hooks.py:0 +#, python-format +msgid "Only a stock manager can validate an inventory adjustment." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_location__propagate_discrepancy_threshold +msgid "Propagate Maximum Discrepancy Rate Threshold to child locations" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_location__propagate_discrepancy_threshold +msgid "Propagate discrepancy threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_quant__discrepancy_percent +msgid "The discrepancy expressed in percent with theoretical quantity as basis" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "" +"The following products have exceeded the discrepancy threshold.\n" +" Are you sure you want to proceed?" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__discrepancy_threshold +msgid "Threshold (%)" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation +msgid "Validate Inventory Adjustments" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation_always +msgid "Validate Inventory Adjustments excceded threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_warehouse +msgid "Warehouse" +msgstr "Lager" + +#. module: stock_inventory_discrepancy +#: code:addons/stock_inventory_discrepancy/wizards/confirm_discrepancy_wiz.py:0 +#, python-format +msgid "" +"You cannot apply inventory adjustments if there are products that exceed the " +"discrepancy threshold. Only users with rights to apply them can proceed." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "" +"You cannot confirm the inventory adjustment,\n" +" the following products have exceeded the discrepancy " +"threshold.\n" +" Only users with permissions to apply them can proceed." +msgstr "" + +#~ msgid "Inventory" +#~ msgstr "Bestand" + +#~ msgid "Inventory Line" +#~ msgstr "Inventurposition" diff --git a/stock_inventory_discrepancy/i18n/es.po b/stock_inventory_discrepancy/i18n/es.po new file mode 100644 index 000000000..1311f9333 --- /dev/null +++ b/stock_inventory_discrepancy/i18n/es.po @@ -0,0 +1,217 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_inventory_discrepancy +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-11-30 03:53+0000\n" +"PO-Revision-Date: 2023-07-26 22:10+0000\n" +"Last-Translator: Ivorra78 \n" +"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Apply" +msgstr "Aplicar" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Cancel" +msgstr "Cancelar" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_confirm_discrepancy_wiz +msgid "Confim discrepancy wizard" +msgstr "Asistente de discrepancias de Confim" + +#. module: stock_inventory_discrepancy +#: model:ir.actions.act_window,name:stock_inventory_discrepancy.confirm_discrepancy_action +msgid "Confirm discrepancy" +msgstr "Confirmar discrepancia" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__create_date +msgid "Created on" +msgstr "Creado el" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Dates does not match" +msgstr "Las fechas no coinciden" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__discrepancy_quant_ids +msgid "Discrepancy Quant" +msgstr "Cuantía de la discrepancia" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__discrepancy_percent +msgid "Discrepancy percent (%)" +msgstr "Porcentaje de discrepancia (%)" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__display_name +msgid "Display Name" +msgstr "Nombre a Mostrar" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__has_over_discrepancy +msgid "Has Over Discrepancy" +msgstr "Tiene más discrepancia" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__id +msgid "ID" +msgstr "ID (identificación)" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_location +msgid "Inventory Locations" +msgstr "Localizaciones de Inventario" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz____last_update +msgid "Last Modified on" +msgstr "Última Modificación el" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__write_uid +msgid "Last Updated by" +msgstr "Actualizado por última vez por" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__write_date +msgid "Last Updated on" +msgstr "Última Actualización el" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_location__discrepancy_threshold +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_warehouse__discrepancy_threshold +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_quant__discrepancy_threshold +msgid "Maximum Discrepancy Rate Threshold" +msgstr "Umbral máximo de tasa de discrepancia" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_warehouse__discrepancy_threshold +msgid "" +"Maximum Discrepancy Rate allowed for any product when doing an Inventory " +"Adjustment. Threshold defined in involved Location has preference." +msgstr "" +"Tasa de Discrepancia Máxima permitida para cualquier producto al hacer un " +"Ajuste de Inventario. El umbral definido en la Ubicación implicada tiene " +"preferencia." + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_location__discrepancy_threshold +msgid "" +"Maximum Discrepancy Rate allowed for any product when doing an Inventory " +"Adjustment. Thresholds defined in Locations have preference over Warehouse's " +"ones." +msgstr "" +"Tasa de Discrepancia Máxima permitida para cualquier producto al hacer un " +"Ajuste de Inventario. Los umbrales definidos en Ubicaciones tienen " +"preferencia sobre los del Almacén." + +#. module: stock_inventory_discrepancy +#: code:addons/stock_inventory_discrepancy/hooks.py:0 +#, python-format +msgid "Only a stock manager can validate an inventory adjustment." +msgstr "Sólo un gestor de existencias puede validar un ajuste de inventario." + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_location__propagate_discrepancy_threshold +msgid "Propagate Maximum Discrepancy Rate Threshold to child locations" +msgstr "" +"Propagar el umbral de tasa de discrepancia máxima a las ubicaciones " +"secundarias" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_location__propagate_discrepancy_threshold +msgid "Propagate discrepancy threshold" +msgstr "Propagar el umbral de discrepancia" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_quant +msgid "Quants" +msgstr "Cantidades" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_quant__discrepancy_percent +msgid "The discrepancy expressed in percent with theoretical quantity as basis" +msgstr "" +"La discrepancia expresada en porcentaje con la cantidad teórica como base" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "" +"The following products have exceeded the discrepancy threshold.\n" +" Are you sure you want to proceed?" +msgstr "" +"Los siguientes productos han superado el umbral de discrepancia.\n" +" Está seguro de que desea continuar?" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__discrepancy_threshold +msgid "Threshold (%)" +msgstr "Umbral (%)" + +#. module: stock_inventory_discrepancy +#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation +msgid "Validate Inventory Adjustments" +msgstr "Validar los ajustes de inventario" + +#. module: stock_inventory_discrepancy +#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation_always +msgid "Validate Inventory Adjustments excceded threshold" +msgstr "Validar Ajustes de Inventario umbral superado" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_warehouse +msgid "Warehouse" +msgstr "Almacén" + +#. module: stock_inventory_discrepancy +#: code:addons/stock_inventory_discrepancy/wizards/confirm_discrepancy_wiz.py:0 +#, python-format +msgid "" +"You cannot apply inventory adjustments if there are products that exceed the " +"discrepancy threshold. Only users with rights to apply them can proceed." +msgstr "" +"No se pueden aplicar ajustes de inventario si hay productos que superan el " +"umbral de discrepancia. Sólo los usuarios con derechos para aplicarlos " +"pueden proceder." + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "" +"You cannot confirm the inventory adjustment,\n" +" the following products have exceeded the discrepancy " +"threshold.\n" +" Only users with permissions to apply them can proceed." +msgstr "" +"No se puede confirmar el ajuste de inventario,\n" +" los siguientes productos han superado el umbral de " +"discrepancia.\n" +" Sólo los usuarios con permisos para aplicarlos pueden " +"proceder." + +#~ msgid "Inventory" +#~ msgstr "Inventario" + +#~ msgid "Inventory Line" +#~ msgstr "Línea inventario" diff --git a/stock_inventory_discrepancy/i18n/es_ES.po b/stock_inventory_discrepancy/i18n/es_ES.po new file mode 100644 index 000000000..7c771f1d0 --- /dev/null +++ b/stock_inventory_discrepancy/i18n/es_ES.po @@ -0,0 +1,196 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_inventory_discrepancy +# +# Translators: +# OCA Transbot , 2017 +# Daniel , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-26 11:41+0000\n" +"PO-Revision-Date: 2017-07-26 11:41+0000\n" +"Last-Translator: Daniel , 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_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Apply" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Cancel" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_confirm_discrepancy_wiz +msgid "Confim discrepancy wizard" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.actions.act_window,name:stock_inventory_discrepancy.confirm_discrepancy_action +msgid "Confirm discrepancy" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__create_uid +msgid "Created by" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__create_date +msgid "Created on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Dates does not match" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__discrepancy_quant_ids +msgid "Discrepancy Quant" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__discrepancy_percent +msgid "Discrepancy percent (%)" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__display_name +msgid "Display Name" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__has_over_discrepancy +msgid "Has Over Discrepancy" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__id +msgid "ID" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_location +msgid "Inventory Locations" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz____last_update +msgid "Last Modified on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__write_date +msgid "Last Updated on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_location__discrepancy_threshold +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_warehouse__discrepancy_threshold +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_quant__discrepancy_threshold +msgid "Maximum Discrepancy Rate Threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_warehouse__discrepancy_threshold +msgid "" +"Maximum Discrepancy Rate allowed for any product when doing an Inventory " +"Adjustment. Threshold defined in involved Location has preference." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_location__discrepancy_threshold +msgid "" +"Maximum Discrepancy Rate allowed for any product when doing an Inventory " +"Adjustment. Thresholds defined in Locations have preference over Warehouse's " +"ones." +msgstr "" + +#. module: stock_inventory_discrepancy +#: code:addons/stock_inventory_discrepancy/hooks.py:0 +#, python-format +msgid "Only a stock manager can validate an inventory adjustment." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_location__propagate_discrepancy_threshold +msgid "Propagate Maximum Discrepancy Rate Threshold to child locations" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_location__propagate_discrepancy_threshold +msgid "Propagate discrepancy threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_quant__discrepancy_percent +msgid "The discrepancy expressed in percent with theoretical quantity as basis" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "" +"The following products have exceeded the discrepancy threshold.\n" +" Are you sure you want to proceed?" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__discrepancy_threshold +msgid "Threshold (%)" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation +msgid "Validate Inventory Adjustments" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation_always +msgid "Validate Inventory Adjustments excceded threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_warehouse +msgid "Warehouse" +msgstr "Almacén" + +#. module: stock_inventory_discrepancy +#: code:addons/stock_inventory_discrepancy/wizards/confirm_discrepancy_wiz.py:0 +#, python-format +msgid "" +"You cannot apply inventory adjustments if there are products that exceed the " +"discrepancy threshold. Only users with rights to apply them can proceed." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "" +"You cannot confirm the inventory adjustment,\n" +" the following products have exceeded the discrepancy " +"threshold.\n" +" Only users with permissions to apply them can proceed." +msgstr "" + +#~ msgid "Inventory" +#~ msgstr "Inventario" diff --git a/stock_inventory_discrepancy/i18n/fr.po b/stock_inventory_discrepancy/i18n/fr.po new file mode 100644 index 000000000..82fac423e --- /dev/null +++ b/stock_inventory_discrepancy/i18n/fr.po @@ -0,0 +1,194 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_inventory_discrepancy +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-11-30 03:53+0000\n" +"PO-Revision-Date: 2017-11-30 03:53+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_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Apply" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Cancel" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_confirm_discrepancy_wiz +msgid "Confim discrepancy wizard" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.actions.act_window,name:stock_inventory_discrepancy.confirm_discrepancy_action +msgid "Confirm discrepancy" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__create_uid +msgid "Created by" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__create_date +msgid "Created on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Dates does not match" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__discrepancy_quant_ids +msgid "Discrepancy Quant" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__discrepancy_percent +msgid "Discrepancy percent (%)" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__display_name +msgid "Display Name" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__has_over_discrepancy +msgid "Has Over Discrepancy" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__id +msgid "ID" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_location +msgid "Inventory Locations" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz____last_update +msgid "Last Modified on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__write_date +msgid "Last Updated on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_location__discrepancy_threshold +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_warehouse__discrepancy_threshold +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_quant__discrepancy_threshold +msgid "Maximum Discrepancy Rate Threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_warehouse__discrepancy_threshold +msgid "" +"Maximum Discrepancy Rate allowed for any product when doing an Inventory " +"Adjustment. Threshold defined in involved Location has preference." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_location__discrepancy_threshold +msgid "" +"Maximum Discrepancy Rate allowed for any product when doing an Inventory " +"Adjustment. Thresholds defined in Locations have preference over Warehouse's " +"ones." +msgstr "" + +#. module: stock_inventory_discrepancy +#: code:addons/stock_inventory_discrepancy/hooks.py:0 +#, python-format +msgid "Only a stock manager can validate an inventory adjustment." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_location__propagate_discrepancy_threshold +msgid "Propagate Maximum Discrepancy Rate Threshold to child locations" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_location__propagate_discrepancy_threshold +msgid "Propagate discrepancy threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_quant__discrepancy_percent +msgid "The discrepancy expressed in percent with theoretical quantity as basis" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "" +"The following products have exceeded the discrepancy threshold.\n" +" Are you sure you want to proceed?" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__discrepancy_threshold +msgid "Threshold (%)" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation +msgid "Validate Inventory Adjustments" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation_always +msgid "Validate Inventory Adjustments excceded threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_warehouse +msgid "Warehouse" +msgstr "Entrepôt" + +#. module: stock_inventory_discrepancy +#: code:addons/stock_inventory_discrepancy/wizards/confirm_discrepancy_wiz.py:0 +#, python-format +msgid "" +"You cannot apply inventory adjustments if there are products that exceed the " +"discrepancy threshold. Only users with rights to apply them can proceed." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "" +"You cannot confirm the inventory adjustment,\n" +" the following products have exceeded the discrepancy " +"threshold.\n" +" Only users with permissions to apply them can proceed." +msgstr "" + +#~ msgid "Inventory" +#~ msgstr "Inventaire" diff --git a/stock_inventory_discrepancy/i18n/fr_FR.po b/stock_inventory_discrepancy/i18n/fr_FR.po new file mode 100644 index 000000000..bf36660e6 --- /dev/null +++ b/stock_inventory_discrepancy/i18n/fr_FR.po @@ -0,0 +1,192 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_inventory_discrepancy +# +# Translators: +# Mohamed HABOU , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-18 04:05+0000\n" +"PO-Revision-Date: 2017-02-18 04:05+0000\n" +"Last-Translator: Mohamed HABOU , 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_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Apply" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Cancel" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_confirm_discrepancy_wiz +msgid "Confim discrepancy wizard" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.actions.act_window,name:stock_inventory_discrepancy.confirm_discrepancy_action +msgid "Confirm discrepancy" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__create_uid +msgid "Created by" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__create_date +msgid "Created on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Dates does not match" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__discrepancy_quant_ids +msgid "Discrepancy Quant" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__discrepancy_percent +msgid "Discrepancy percent (%)" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__display_name +msgid "Display Name" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__has_over_discrepancy +msgid "Has Over Discrepancy" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__id +msgid "ID" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_location +msgid "Inventory Locations" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz____last_update +msgid "Last Modified on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__write_date +msgid "Last Updated on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_location__discrepancy_threshold +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_warehouse__discrepancy_threshold +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_quant__discrepancy_threshold +msgid "Maximum Discrepancy Rate Threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_warehouse__discrepancy_threshold +msgid "" +"Maximum Discrepancy Rate allowed for any product when doing an Inventory " +"Adjustment. Threshold defined in involved Location has preference." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_location__discrepancy_threshold +msgid "" +"Maximum Discrepancy Rate allowed for any product when doing an Inventory " +"Adjustment. Thresholds defined in Locations have preference over Warehouse's " +"ones." +msgstr "" + +#. module: stock_inventory_discrepancy +#: code:addons/stock_inventory_discrepancy/hooks.py:0 +#, python-format +msgid "Only a stock manager can validate an inventory adjustment." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_location__propagate_discrepancy_threshold +msgid "Propagate Maximum Discrepancy Rate Threshold to child locations" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_location__propagate_discrepancy_threshold +msgid "Propagate discrepancy threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_quant__discrepancy_percent +msgid "The discrepancy expressed in percent with theoretical quantity as basis" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "" +"The following products have exceeded the discrepancy threshold.\n" +" Are you sure you want to proceed?" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__discrepancy_threshold +msgid "Threshold (%)" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation +msgid "Validate Inventory Adjustments" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation_always +msgid "Validate Inventory Adjustments excceded threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_warehouse +msgid "Warehouse" +msgstr "Entrepôt " + +#. module: stock_inventory_discrepancy +#: code:addons/stock_inventory_discrepancy/wizards/confirm_discrepancy_wiz.py:0 +#, python-format +msgid "" +"You cannot apply inventory adjustments if there are products that exceed the " +"discrepancy threshold. Only users with rights to apply them can proceed." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "" +"You cannot confirm the inventory adjustment,\n" +" the following products have exceeded the discrepancy " +"threshold.\n" +" Only users with permissions to apply them can proceed." +msgstr "" diff --git a/stock_inventory_discrepancy/i18n/hr.po b/stock_inventory_discrepancy/i18n/hr.po new file mode 100644 index 000000000..a95fe0cf8 --- /dev/null +++ b/stock_inventory_discrepancy/i18n/hr.po @@ -0,0 +1,192 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_inventory_discrepancy +# +# Translators: +# Bole , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-02-27 11:37+0000\n" +"PO-Revision-Date: 2018-02-27 11:37+0000\n" +"Last-Translator: Bole , 2018\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_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Apply" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Cancel" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_confirm_discrepancy_wiz +msgid "Confim discrepancy wizard" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.actions.act_window,name:stock_inventory_discrepancy.confirm_discrepancy_action +msgid "Confirm discrepancy" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__create_uid +msgid "Created by" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__create_date +msgid "Created on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Dates does not match" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__discrepancy_quant_ids +msgid "Discrepancy Quant" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__discrepancy_percent +msgid "Discrepancy percent (%)" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__display_name +msgid "Display Name" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__has_over_discrepancy +msgid "Has Over Discrepancy" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__id +msgid "ID" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_location +msgid "Inventory Locations" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz____last_update +msgid "Last Modified on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__write_date +msgid "Last Updated on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_location__discrepancy_threshold +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_warehouse__discrepancy_threshold +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_quant__discrepancy_threshold +msgid "Maximum Discrepancy Rate Threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_warehouse__discrepancy_threshold +msgid "" +"Maximum Discrepancy Rate allowed for any product when doing an Inventory " +"Adjustment. Threshold defined in involved Location has preference." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_location__discrepancy_threshold +msgid "" +"Maximum Discrepancy Rate allowed for any product when doing an Inventory " +"Adjustment. Thresholds defined in Locations have preference over Warehouse's " +"ones." +msgstr "" + +#. module: stock_inventory_discrepancy +#: code:addons/stock_inventory_discrepancy/hooks.py:0 +#, python-format +msgid "Only a stock manager can validate an inventory adjustment." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_location__propagate_discrepancy_threshold +msgid "Propagate Maximum Discrepancy Rate Threshold to child locations" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_location__propagate_discrepancy_threshold +msgid "Propagate discrepancy threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_quant__discrepancy_percent +msgid "The discrepancy expressed in percent with theoretical quantity as basis" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "" +"The following products have exceeded the discrepancy threshold.\n" +" Are you sure you want to proceed?" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__discrepancy_threshold +msgid "Threshold (%)" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation +msgid "Validate Inventory Adjustments" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation_always +msgid "Validate Inventory Adjustments excceded threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_warehouse +msgid "Warehouse" +msgstr "Skladište" + +#. module: stock_inventory_discrepancy +#: code:addons/stock_inventory_discrepancy/wizards/confirm_discrepancy_wiz.py:0 +#, python-format +msgid "" +"You cannot apply inventory adjustments if there are products that exceed the " +"discrepancy threshold. Only users with rights to apply them can proceed." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "" +"You cannot confirm the inventory adjustment,\n" +" the following products have exceeded the discrepancy " +"threshold.\n" +" Only users with permissions to apply them can proceed." +msgstr "" diff --git a/stock_inventory_discrepancy/i18n/it.po b/stock_inventory_discrepancy/i18n/it.po new file mode 100644 index 000000000..379c22a8e --- /dev/null +++ b/stock_inventory_discrepancy/i18n/it.po @@ -0,0 +1,198 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_inventory_discrepancy +# +# Translators: +# OCA Transbot , 2017 +# Paolo Valier , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-18 04:05+0000\n" +"PO-Revision-Date: 2017-02-18 04:05+0000\n" +"Last-Translator: Paolo Valier , 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_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Apply" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Cancel" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_confirm_discrepancy_wiz +msgid "Confim discrepancy wizard" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.actions.act_window,name:stock_inventory_discrepancy.confirm_discrepancy_action +msgid "Confirm discrepancy" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__create_uid +msgid "Created by" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__create_date +msgid "Created on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Dates does not match" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__discrepancy_quant_ids +msgid "Discrepancy Quant" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__discrepancy_percent +msgid "Discrepancy percent (%)" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__display_name +msgid "Display Name" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__has_over_discrepancy +msgid "Has Over Discrepancy" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__id +msgid "ID" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_location +msgid "Inventory Locations" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz____last_update +msgid "Last Modified on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__write_date +msgid "Last Updated on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_location__discrepancy_threshold +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_warehouse__discrepancy_threshold +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_quant__discrepancy_threshold +msgid "Maximum Discrepancy Rate Threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_warehouse__discrepancy_threshold +msgid "" +"Maximum Discrepancy Rate allowed for any product when doing an Inventory " +"Adjustment. Threshold defined in involved Location has preference." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_location__discrepancy_threshold +msgid "" +"Maximum Discrepancy Rate allowed for any product when doing an Inventory " +"Adjustment. Thresholds defined in Locations have preference over Warehouse's " +"ones." +msgstr "" + +#. module: stock_inventory_discrepancy +#: code:addons/stock_inventory_discrepancy/hooks.py:0 +#, python-format +msgid "Only a stock manager can validate an inventory adjustment." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_location__propagate_discrepancy_threshold +msgid "Propagate Maximum Discrepancy Rate Threshold to child locations" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_location__propagate_discrepancy_threshold +msgid "Propagate discrepancy threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_quant__discrepancy_percent +msgid "The discrepancy expressed in percent with theoretical quantity as basis" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "" +"The following products have exceeded the discrepancy threshold.\n" +" Are you sure you want to proceed?" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__discrepancy_threshold +msgid "Threshold (%)" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation +msgid "Validate Inventory Adjustments" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation_always +msgid "Validate Inventory Adjustments excceded threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_warehouse +msgid "Warehouse" +msgstr "Magazzino" + +#. module: stock_inventory_discrepancy +#: code:addons/stock_inventory_discrepancy/wizards/confirm_discrepancy_wiz.py:0 +#, python-format +msgid "" +"You cannot apply inventory adjustments if there are products that exceed the " +"discrepancy threshold. Only users with rights to apply them can proceed." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "" +"You cannot confirm the inventory adjustment,\n" +" the following products have exceeded the discrepancy " +"threshold.\n" +" Only users with permissions to apply them can proceed." +msgstr "" + +#~ msgid "Inventory" +#~ msgstr "Inventario" + +#~ msgid "Inventory Line" +#~ msgstr "Riga d'Inventario" diff --git a/stock_inventory_discrepancy/i18n/nl.po b/stock_inventory_discrepancy/i18n/nl.po new file mode 100644 index 000000000..4b7fdb915 --- /dev/null +++ b/stock_inventory_discrepancy/i18n/nl.po @@ -0,0 +1,191 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_inventory_discrepancy +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-18 04:05+0000\n" +"PO-Revision-Date: 2017-02-18 04:05+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_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Apply" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Cancel" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_confirm_discrepancy_wiz +msgid "Confim discrepancy wizard" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.actions.act_window,name:stock_inventory_discrepancy.confirm_discrepancy_action +msgid "Confirm discrepancy" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__create_uid +msgid "Created by" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__create_date +msgid "Created on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Dates does not match" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__discrepancy_quant_ids +msgid "Discrepancy Quant" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__discrepancy_percent +msgid "Discrepancy percent (%)" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__display_name +msgid "Display Name" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__has_over_discrepancy +msgid "Has Over Discrepancy" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__id +msgid "ID" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_location +msgid "Inventory Locations" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz____last_update +msgid "Last Modified on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__write_date +msgid "Last Updated on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_location__discrepancy_threshold +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_warehouse__discrepancy_threshold +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_quant__discrepancy_threshold +msgid "Maximum Discrepancy Rate Threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_warehouse__discrepancy_threshold +msgid "" +"Maximum Discrepancy Rate allowed for any product when doing an Inventory " +"Adjustment. Threshold defined in involved Location has preference." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_location__discrepancy_threshold +msgid "" +"Maximum Discrepancy Rate allowed for any product when doing an Inventory " +"Adjustment. Thresholds defined in Locations have preference over Warehouse's " +"ones." +msgstr "" + +#. module: stock_inventory_discrepancy +#: code:addons/stock_inventory_discrepancy/hooks.py:0 +#, python-format +msgid "Only a stock manager can validate an inventory adjustment." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_location__propagate_discrepancy_threshold +msgid "Propagate Maximum Discrepancy Rate Threshold to child locations" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_location__propagate_discrepancy_threshold +msgid "Propagate discrepancy threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_quant__discrepancy_percent +msgid "The discrepancy expressed in percent with theoretical quantity as basis" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "" +"The following products have exceeded the discrepancy threshold.\n" +" Are you sure you want to proceed?" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__discrepancy_threshold +msgid "Threshold (%)" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation +msgid "Validate Inventory Adjustments" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation_always +msgid "Validate Inventory Adjustments excceded threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_warehouse +msgid "Warehouse" +msgstr "Magazijn" + +#. module: stock_inventory_discrepancy +#: code:addons/stock_inventory_discrepancy/wizards/confirm_discrepancy_wiz.py:0 +#, python-format +msgid "" +"You cannot apply inventory adjustments if there are products that exceed the " +"discrepancy threshold. Only users with rights to apply them can proceed." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "" +"You cannot confirm the inventory adjustment,\n" +" the following products have exceeded the discrepancy " +"threshold.\n" +" Only users with permissions to apply them can proceed." +msgstr "" diff --git a/stock_inventory_discrepancy/i18n/nl_NL.po b/stock_inventory_discrepancy/i18n/nl_NL.po new file mode 100644 index 000000000..4f2b01f5c --- /dev/null +++ b/stock_inventory_discrepancy/i18n/nl_NL.po @@ -0,0 +1,195 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_inventory_discrepancy +# +# Translators: +# Peter Hageman , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-11-30 03:53+0000\n" +"PO-Revision-Date: 2017-11-30 03:53+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_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Apply" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Cancel" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_confirm_discrepancy_wiz +msgid "Confim discrepancy wizard" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.actions.act_window,name:stock_inventory_discrepancy.confirm_discrepancy_action +msgid "Confirm discrepancy" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__create_uid +msgid "Created by" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__create_date +msgid "Created on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Dates does not match" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__discrepancy_quant_ids +msgid "Discrepancy Quant" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__discrepancy_percent +msgid "Discrepancy percent (%)" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__display_name +msgid "Display Name" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__has_over_discrepancy +msgid "Has Over Discrepancy" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__id +msgid "ID" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_location +msgid "Inventory Locations" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz____last_update +msgid "Last Modified on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__write_date +msgid "Last Updated on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_location__discrepancy_threshold +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_warehouse__discrepancy_threshold +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_quant__discrepancy_threshold +msgid "Maximum Discrepancy Rate Threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_warehouse__discrepancy_threshold +msgid "" +"Maximum Discrepancy Rate allowed for any product when doing an Inventory " +"Adjustment. Threshold defined in involved Location has preference." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_location__discrepancy_threshold +msgid "" +"Maximum Discrepancy Rate allowed for any product when doing an Inventory " +"Adjustment. Thresholds defined in Locations have preference over Warehouse's " +"ones." +msgstr "" + +#. module: stock_inventory_discrepancy +#: code:addons/stock_inventory_discrepancy/hooks.py:0 +#, python-format +msgid "Only a stock manager can validate an inventory adjustment." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_location__propagate_discrepancy_threshold +msgid "Propagate Maximum Discrepancy Rate Threshold to child locations" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_location__propagate_discrepancy_threshold +msgid "Propagate discrepancy threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_quant__discrepancy_percent +msgid "The discrepancy expressed in percent with theoretical quantity as basis" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "" +"The following products have exceeded the discrepancy threshold.\n" +" Are you sure you want to proceed?" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__discrepancy_threshold +msgid "Threshold (%)" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation +msgid "Validate Inventory Adjustments" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation_always +msgid "Validate Inventory Adjustments excceded threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_warehouse +msgid "Warehouse" +msgstr "Magazijn" + +#. module: stock_inventory_discrepancy +#: code:addons/stock_inventory_discrepancy/wizards/confirm_discrepancy_wiz.py:0 +#, python-format +msgid "" +"You cannot apply inventory adjustments if there are products that exceed the " +"discrepancy threshold. Only users with rights to apply them can proceed." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "" +"You cannot confirm the inventory adjustment,\n" +" the following products have exceeded the discrepancy " +"threshold.\n" +" Only users with permissions to apply them can proceed." +msgstr "" + +#~ msgid "Inventory Line" +#~ msgstr "Voorraadregel" diff --git a/stock_inventory_discrepancy/i18n/pt_BR.po b/stock_inventory_discrepancy/i18n/pt_BR.po new file mode 100644 index 000000000..d131f1d69 --- /dev/null +++ b/stock_inventory_discrepancy/i18n/pt_BR.po @@ -0,0 +1,196 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_inventory_discrepancy +# +# Translators: +# Paulo Ricardo , 2017 +# Felipe Lopes , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-18 04:05+0000\n" +"PO-Revision-Date: 2017-02-18 04:05+0000\n" +"Last-Translator: Felipe Lopes , 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_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Apply" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Cancel" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_confirm_discrepancy_wiz +msgid "Confim discrepancy wizard" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.actions.act_window,name:stock_inventory_discrepancy.confirm_discrepancy_action +msgid "Confirm discrepancy" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__create_uid +msgid "Created by" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__create_date +msgid "Created on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Dates does not match" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__discrepancy_quant_ids +msgid "Discrepancy Quant" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__discrepancy_percent +msgid "Discrepancy percent (%)" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__display_name +msgid "Display Name" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__has_over_discrepancy +msgid "Has Over Discrepancy" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__id +msgid "ID" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_location +msgid "Inventory Locations" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz____last_update +msgid "Last Modified on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__write_date +msgid "Last Updated on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_location__discrepancy_threshold +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_warehouse__discrepancy_threshold +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_quant__discrepancy_threshold +msgid "Maximum Discrepancy Rate Threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_warehouse__discrepancy_threshold +msgid "" +"Maximum Discrepancy Rate allowed for any product when doing an Inventory " +"Adjustment. Threshold defined in involved Location has preference." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_location__discrepancy_threshold +msgid "" +"Maximum Discrepancy Rate allowed for any product when doing an Inventory " +"Adjustment. Thresholds defined in Locations have preference over Warehouse's " +"ones." +msgstr "" + +#. module: stock_inventory_discrepancy +#: code:addons/stock_inventory_discrepancy/hooks.py:0 +#, python-format +msgid "Only a stock manager can validate an inventory adjustment." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_location__propagate_discrepancy_threshold +msgid "Propagate Maximum Discrepancy Rate Threshold to child locations" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_location__propagate_discrepancy_threshold +msgid "Propagate discrepancy threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_quant__discrepancy_percent +msgid "The discrepancy expressed in percent with theoretical quantity as basis" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "" +"The following products have exceeded the discrepancy threshold.\n" +" Are you sure you want to proceed?" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__discrepancy_threshold +msgid "Threshold (%)" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation +msgid "Validate Inventory Adjustments" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation_always +msgid "Validate Inventory Adjustments excceded threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_warehouse +msgid "Warehouse" +msgstr "Armazém" + +#. module: stock_inventory_discrepancy +#: code:addons/stock_inventory_discrepancy/wizards/confirm_discrepancy_wiz.py:0 +#, python-format +msgid "" +"You cannot apply inventory adjustments if there are products that exceed the " +"discrepancy threshold. Only users with rights to apply them can proceed." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "" +"You cannot confirm the inventory adjustment,\n" +" the following products have exceeded the discrepancy " +"threshold.\n" +" Only users with permissions to apply them can proceed." +msgstr "" + +#~ msgid "Inventory" +#~ msgstr "Inventário" diff --git a/stock_inventory_discrepancy/i18n/sl.po b/stock_inventory_discrepancy/i18n/sl.po new file mode 100644 index 000000000..59ecafa9a --- /dev/null +++ b/stock_inventory_discrepancy/i18n/sl.po @@ -0,0 +1,198 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_inventory_discrepancy +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-11-30 03:53+0000\n" +"PO-Revision-Date: 2017-11-30 03:53+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_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Apply" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Cancel" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_confirm_discrepancy_wiz +msgid "Confim discrepancy wizard" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.actions.act_window,name:stock_inventory_discrepancy.confirm_discrepancy_action +msgid "Confirm discrepancy" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__create_uid +msgid "Created by" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__create_date +msgid "Created on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Dates does not match" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__discrepancy_quant_ids +msgid "Discrepancy Quant" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__discrepancy_percent +msgid "Discrepancy percent (%)" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__display_name +msgid "Display Name" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__has_over_discrepancy +msgid "Has Over Discrepancy" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__id +msgid "ID" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_location +msgid "Inventory Locations" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz____last_update +msgid "Last Modified on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__write_date +msgid "Last Updated on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_location__discrepancy_threshold +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_warehouse__discrepancy_threshold +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_quant__discrepancy_threshold +msgid "Maximum Discrepancy Rate Threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_warehouse__discrepancy_threshold +msgid "" +"Maximum Discrepancy Rate allowed for any product when doing an Inventory " +"Adjustment. Threshold defined in involved Location has preference." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_location__discrepancy_threshold +msgid "" +"Maximum Discrepancy Rate allowed for any product when doing an Inventory " +"Adjustment. Thresholds defined in Locations have preference over Warehouse's " +"ones." +msgstr "" + +#. module: stock_inventory_discrepancy +#: code:addons/stock_inventory_discrepancy/hooks.py:0 +#, python-format +msgid "Only a stock manager can validate an inventory adjustment." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_location__propagate_discrepancy_threshold +msgid "Propagate Maximum Discrepancy Rate Threshold to child locations" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_location__propagate_discrepancy_threshold +msgid "Propagate discrepancy threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_quant__discrepancy_percent +msgid "The discrepancy expressed in percent with theoretical quantity as basis" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "" +"The following products have exceeded the discrepancy threshold.\n" +" Are you sure you want to proceed?" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__discrepancy_threshold +msgid "Threshold (%)" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation +msgid "Validate Inventory Adjustments" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation_always +msgid "Validate Inventory Adjustments excceded threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_warehouse +msgid "Warehouse" +msgstr "Skladišče" + +#. module: stock_inventory_discrepancy +#: code:addons/stock_inventory_discrepancy/wizards/confirm_discrepancy_wiz.py:0 +#, python-format +msgid "" +"You cannot apply inventory adjustments if there are products that exceed the " +"discrepancy threshold. Only users with rights to apply them can proceed." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "" +"You cannot confirm the inventory adjustment,\n" +" the following products have exceeded the discrepancy " +"threshold.\n" +" Only users with permissions to apply them can proceed." +msgstr "" + +#~ msgid "Inventory" +#~ msgstr "Inventar" + +#~ msgid "Inventory Line" +#~ msgstr "Postavka inventarja" diff --git a/stock_inventory_discrepancy/i18n/stock_inventory_discrepancy.pot b/stock_inventory_discrepancy/i18n/stock_inventory_discrepancy.pot new file mode 100644 index 000000000..e87081b31 --- /dev/null +++ b/stock_inventory_discrepancy/i18n/stock_inventory_discrepancy.pot @@ -0,0 +1,186 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_inventory_discrepancy +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.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_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Apply" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Cancel" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_confirm_discrepancy_wiz +msgid "Confim discrepancy wizard" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.actions.act_window,name:stock_inventory_discrepancy.confirm_discrepancy_action +msgid "Confirm discrepancy" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__create_uid +msgid "Created by" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__create_date +msgid "Created on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Dates does not match" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__discrepancy_quant_ids +msgid "Discrepancy Quant" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__discrepancy_percent +msgid "Discrepancy percent (%)" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__display_name +msgid "Display Name" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__has_over_discrepancy +msgid "Has Over Discrepancy" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__id +msgid "ID" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_location +msgid "Inventory Locations" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz____last_update +msgid "Last Modified on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__write_date +msgid "Last Updated on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_location__discrepancy_threshold +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_warehouse__discrepancy_threshold +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_quant__discrepancy_threshold +msgid "Maximum Discrepancy Rate Threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_warehouse__discrepancy_threshold +msgid "" +"Maximum Discrepancy Rate allowed for any product when doing an Inventory " +"Adjustment. Threshold defined in involved Location has preference." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_location__discrepancy_threshold +msgid "" +"Maximum Discrepancy Rate allowed for any product when doing an Inventory " +"Adjustment. Thresholds defined in Locations have preference over Warehouse's" +" ones." +msgstr "" + +#. module: stock_inventory_discrepancy +#: code:addons/stock_inventory_discrepancy/hooks.py:0 +#, python-format +msgid "Only a stock manager can validate an inventory adjustment." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_location__propagate_discrepancy_threshold +msgid "Propagate Maximum Discrepancy Rate Threshold to child locations" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_location__propagate_discrepancy_threshold +msgid "Propagate discrepancy threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_quant__discrepancy_percent +msgid "" +"The discrepancy expressed in percent with theoretical quantity as basis" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "" +"The following products have exceeded the discrepancy threshold.\n" +" Are you sure you want to proceed?" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__discrepancy_threshold +msgid "Threshold (%)" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation +msgid "Validate Inventory Adjustments" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation_always +msgid "Validate Inventory Adjustments excceded threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_warehouse +msgid "Warehouse" +msgstr "" + +#. module: stock_inventory_discrepancy +#: code:addons/stock_inventory_discrepancy/wizards/confirm_discrepancy_wiz.py:0 +#, python-format +msgid "" +"You cannot apply inventory adjustments if there are products that exceed the" +" discrepancy threshold. Only users with rights to apply them can proceed." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "" +"You cannot confirm the inventory adjustment,\n" +" the following products have exceeded the discrepancy threshold.\n" +" Only users with permissions to apply them can proceed." +msgstr "" diff --git a/stock_inventory_discrepancy/i18n/tr_TR.po b/stock_inventory_discrepancy/i18n/tr_TR.po new file mode 100644 index 000000000..6a3555bc6 --- /dev/null +++ b/stock_inventory_discrepancy/i18n/tr_TR.po @@ -0,0 +1,192 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_inventory_discrepancy +# +# Translators: +# Ozge Altinisik , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-18 04:05+0000\n" +"PO-Revision-Date: 2017-02-18 04:05+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_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Apply" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Cancel" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_confirm_discrepancy_wiz +msgid "Confim discrepancy wizard" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.actions.act_window,name:stock_inventory_discrepancy.confirm_discrepancy_action +msgid "Confirm discrepancy" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__create_uid +msgid "Created by" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__create_date +msgid "Created on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Dates does not match" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__discrepancy_quant_ids +msgid "Discrepancy Quant" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__discrepancy_percent +msgid "Discrepancy percent (%)" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__display_name +msgid "Display Name" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__has_over_discrepancy +msgid "Has Over Discrepancy" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__id +msgid "ID" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_location +msgid "Inventory Locations" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz____last_update +msgid "Last Modified on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__write_date +msgid "Last Updated on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_location__discrepancy_threshold +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_warehouse__discrepancy_threshold +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_quant__discrepancy_threshold +msgid "Maximum Discrepancy Rate Threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_warehouse__discrepancy_threshold +msgid "" +"Maximum Discrepancy Rate allowed for any product when doing an Inventory " +"Adjustment. Threshold defined in involved Location has preference." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_location__discrepancy_threshold +msgid "" +"Maximum Discrepancy Rate allowed for any product when doing an Inventory " +"Adjustment. Thresholds defined in Locations have preference over Warehouse's " +"ones." +msgstr "" + +#. module: stock_inventory_discrepancy +#: code:addons/stock_inventory_discrepancy/hooks.py:0 +#, python-format +msgid "Only a stock manager can validate an inventory adjustment." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_location__propagate_discrepancy_threshold +msgid "Propagate Maximum Discrepancy Rate Threshold to child locations" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_location__propagate_discrepancy_threshold +msgid "Propagate discrepancy threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_quant__discrepancy_percent +msgid "The discrepancy expressed in percent with theoretical quantity as basis" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "" +"The following products have exceeded the discrepancy threshold.\n" +" Are you sure you want to proceed?" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__discrepancy_threshold +msgid "Threshold (%)" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation +msgid "Validate Inventory Adjustments" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation_always +msgid "Validate Inventory Adjustments excceded threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_warehouse +msgid "Warehouse" +msgstr "Depo" + +#. module: stock_inventory_discrepancy +#: code:addons/stock_inventory_discrepancy/wizards/confirm_discrepancy_wiz.py:0 +#, python-format +msgid "" +"You cannot apply inventory adjustments if there are products that exceed the " +"discrepancy threshold. Only users with rights to apply them can proceed." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "" +"You cannot confirm the inventory adjustment,\n" +" the following products have exceeded the discrepancy " +"threshold.\n" +" Only users with permissions to apply them can proceed." +msgstr "" diff --git a/stock_inventory_discrepancy/i18n/zh_CN.po b/stock_inventory_discrepancy/i18n/zh_CN.po new file mode 100644 index 000000000..cb4622c51 --- /dev/null +++ b/stock_inventory_discrepancy/i18n/zh_CN.po @@ -0,0 +1,266 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_inventory_discrepancy +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2019-09-28 09:24+0000\n" +"Last-Translator: 黎伟杰 <674416404@qq.com>\n" +"Language-Team: none\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_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Apply" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Cancel" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_confirm_discrepancy_wiz +msgid "Confim discrepancy wizard" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.actions.act_window,name:stock_inventory_discrepancy.confirm_discrepancy_action +msgid "Confirm discrepancy" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__create_uid +msgid "Created by" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__create_date +msgid "Created on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "Dates does not match" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__discrepancy_quant_ids +msgid "Discrepancy Quant" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__discrepancy_percent +msgid "Discrepancy percent (%)" +msgstr "差异百分比(%)" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__display_name +msgid "Display Name" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__has_over_discrepancy +msgid "Has Over Discrepancy" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__id +msgid "ID" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_location +msgid "Inventory Locations" +msgstr "库存位置" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz____last_update +msgid "Last Modified on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_confirm_discrepancy_wiz__write_date +msgid "Last Updated on" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_location__discrepancy_threshold +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_warehouse__discrepancy_threshold +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_quant__discrepancy_threshold +msgid "Maximum Discrepancy Rate Threshold" +msgstr "最大差异率阈值" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_warehouse__discrepancy_threshold +msgid "" +"Maximum Discrepancy Rate allowed for any product when doing an Inventory " +"Adjustment. Threshold defined in involved Location has preference." +msgstr "" +"进行库存调整时,任何产品所允许的最大差异率。在所涉及的位置中定义的阈值具有优" +"先级。" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_location__discrepancy_threshold +msgid "" +"Maximum Discrepancy Rate allowed for any product when doing an Inventory " +"Adjustment. Thresholds defined in Locations have preference over Warehouse's " +"ones." +msgstr "" +"进行库存调整时,任何产品所允许的最大差异率。在“位置”中定义的阈值优先于“仓" +"库”的阈值。" + +#. module: stock_inventory_discrepancy +#: code:addons/stock_inventory_discrepancy/hooks.py:0 +#, fuzzy, python-format +msgid "Only a stock manager can validate an inventory adjustment." +msgstr "验证所有库存调整" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_location__propagate_discrepancy_threshold +#, fuzzy +msgid "Propagate Maximum Discrepancy Rate Threshold to child locations" +msgstr "最大差异率阈值" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_location__propagate_discrepancy_threshold +#, fuzzy +msgid "Propagate discrepancy threshold" +msgstr "最大差异率阈值" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_quant__discrepancy_percent +msgid "The discrepancy expressed in percent with theoretical quantity as basis" +msgstr "差异以理论量为基础的百分比表示" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "" +"The following products have exceeded the discrepancy threshold.\n" +" Are you sure you want to proceed?" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_quant__discrepancy_threshold +msgid "Threshold (%)" +msgstr "阈值(%)" + +#. module: stock_inventory_discrepancy +#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation +msgid "Validate Inventory Adjustments" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation_always +msgid "Validate Inventory Adjustments excceded threshold" +msgstr "" + +#. module: stock_inventory_discrepancy +#: model:ir.model,name:stock_inventory_discrepancy.model_stock_warehouse +msgid "Warehouse" +msgstr "仓库" + +#. module: stock_inventory_discrepancy +#: code:addons/stock_inventory_discrepancy/wizards/confirm_discrepancy_wiz.py:0 +#, python-format +msgid "" +"You cannot apply inventory adjustments if there are products that exceed the " +"discrepancy threshold. Only users with rights to apply them can proceed." +msgstr "" + +#. module: stock_inventory_discrepancy +#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.confirm_discrepancy_wizard +msgid "" +"You cannot confirm the inventory adjustment,\n" +" the following products have exceeded the discrepancy " +"threshold.\n" +" Only users with permissions to apply them can proceed." +msgstr "" + +#~ msgid "Discrepancy" +#~ msgstr "差异" + +#~ msgid "Force Validation" +#~ msgstr "强制验证" + +#~ msgid "Inventory" +#~ msgstr "库存" + +#~ msgid "Inventory Line" +#~ msgstr "库存行" + +#~ msgid "Number of Discrepancies Over Threshold" +#~ msgstr "超过阈值的差异数量" + +#, python-format +#~ msgid "Pending to Approve" +#~ msgstr "待批准" + +#~ msgid "" +#~ "States of the Inventory Adjustment:\n" +#~ "- Draft: Inventory not started.\n" +#~ "- In Progress: Inventory in execution.\n" +#~ "- Pending to Approve: Inventory have some discrepancies greater than the " +#~ "predefined threshold and it's waiting for the Control Manager approval.\n" +#~ "- Validated: Inventory Approved." +#~ msgstr "" +#~ "库存调整的状态:\n" +#~ "- 草稿:库存未开始。\n" +#~ "- 进行中:执行中的库存。\n" +#~ "- 待批准:库存有一些差异大于预定义的阈值,并且正在等待控制管理中心批准。\n" +#~ "- 已验证:库存已批准。" + +#~ msgid "Status" +#~ msgstr "状态" + +#, python-format +#~ msgid "" +#~ "The Qty Update is over the Discrepancy Threshold.\n" +#~ " Please, contact a user with rights to perform this action." +#~ msgstr "" +#~ "数量更新超过差异阈值。\n" +#~ "请与有权执行此操作的用户联系。" + +#~ msgid "" +#~ "The difference between the actual qty counted and the theoretical " +#~ "quantity on hand." +#~ msgstr "计算的实际数量与现有理论数量之间的差。" + +#, fuzzy, python-format +#~ msgid "Tracked Products in Inventory Adjustment" +#~ msgstr "验证所有库存调整" + +#~ msgid "Validate All inventory Adjustments" +#~ msgstr "验证所有库存调整" + +#~ msgid "Validate Inventory Adjustments Under Threshold" +#~ msgstr "验证阈值下的库存调整" + +#~ msgid "Cancelled" +#~ msgstr "已取消" + +#~ msgid "Draft" +#~ msgstr "草稿" + +#~ msgid "In Progress" +#~ msgstr "进行中" + +#~ msgid "Validated" +#~ msgstr "已验证" diff --git a/stock_inventory_discrepancy/models/__init__.py b/stock_inventory_discrepancy/models/__init__.py new file mode 100644 index 000000000..cc20d5da4 --- /dev/null +++ b/stock_inventory_discrepancy/models/__init__.py @@ -0,0 +1,5 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from . import stock_quant +from . import stock_warehouse +from . import stock_location diff --git a/stock_inventory_discrepancy/models/stock_location.py b/stock_inventory_discrepancy/models/stock_location.py new file mode 100644 index 000000000..96f927673 --- /dev/null +++ b/stock_inventory_discrepancy/models/stock_location.py @@ -0,0 +1,36 @@ +# Copyright 2017-2020 ForgeFlow S.L. +# (http://www.forgeflow.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from odoo import fields, models + + +class StockLocation(models.Model): + _inherit = "stock.location" + + discrepancy_threshold = fields.Float( + string="Maximum Discrepancy Rate Threshold", + digits=(3, 2), + help="Maximum Discrepancy Rate allowed for any product when doing " + "an Inventory Adjustment. Thresholds defined in Locations have " + "preference over Warehouse's ones.", + ) + propagate_discrepancy_threshold = fields.Boolean( + string="Propagate discrepancy threshold", + help="Propagate Maximum Discrepancy Rate Threshold to child locations", + ) + + def write(self, values): + res = super().write(values) + # Set the discrepancy threshold for all child locations + if values.get("discrepancy_threshold", False): + for location in self.filtered( + lambda loc: loc.propagate_discrepancy_threshold and loc.child_ids + ): + location.child_ids.write( + { + "discrepancy_threshold": values["discrepancy_threshold"], + "propagate_discrepancy_threshold": True, + } + ) + return res diff --git a/stock_inventory_discrepancy/models/stock_quant.py b/stock_inventory_discrepancy/models/stock_quant.py new file mode 100644 index 000000000..7ec8ef851 --- /dev/null +++ b/stock_inventory_discrepancy/models/stock_quant.py @@ -0,0 +1,69 @@ +# Copyright 2023 Tecnativa - Ernesto Tejeda +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from odoo import api, fields, models + + +class StockQuant(models.Model): + _inherit = "stock.quant" + + discrepancy_percent = fields.Float( + string="Discrepancy percent (%)", + compute="_compute_discrepancy", + digits=(3, 2), + help="The discrepancy expressed in percent with theoretical quantity " + "as basis", + group_operator="avg", + store=True, + compute_sudo=True, + ) + discrepancy_threshold = fields.Float( + string="Threshold (%)", + digits=(3, 2), + help="Maximum Discrepancy Rate Threshold", + compute="_compute_discrepancy_threshold", + ) + has_over_discrepancy = fields.Boolean( + compute="_compute_has_over_discrepancy", + ) + + @api.depends("quantity", "inventory_quantity") + def _compute_discrepancy(self): + for quant in self: + if not quant.quantity or not quant.inventory_quantity_set: + quant.discrepancy_percent = 0 + else: + quant.discrepancy_percent = abs( + 100 * (quant.inventory_diff_quantity) / quant.quantity + ) + + def _compute_discrepancy_threshold(self): + for quant in self: + whs = quant.location_id.warehouse_id + if quant.location_id.discrepancy_threshold > 0.0: + quant.discrepancy_threshold = quant.location_id.discrepancy_threshold + elif whs.discrepancy_threshold > 0.0: + quant.discrepancy_threshold = whs.discrepancy_threshold + else: + quant.discrepancy_threshold = False + + def _compute_has_over_discrepancy(self): + for rec in self: + rec.has_over_discrepancy = ( + rec.discrepancy_percent > rec.discrepancy_threshold + ) + + def action_apply_inventory(self): + if self.env.context.get("skip_exceeded_discrepancy", False): + return super().action_apply_inventory() + over_discrepancy = self.filtered(lambda r: r.has_over_discrepancy) + if over_discrepancy: + action = self.env["ir.actions.act_window"]._for_xml_id( + "stock_inventory_discrepancy.confirm_discrepancy_action" + ) + action["context"] = dict( + self._context.copy(), + discrepancy_quant_ids=over_discrepancy.ids, + active_ids=self.ids, + ) + return action + return super().action_apply_inventory() diff --git a/stock_inventory_discrepancy/models/stock_warehouse.py b/stock_inventory_discrepancy/models/stock_warehouse.py new file mode 100644 index 000000000..6f1f4ec31 --- /dev/null +++ b/stock_inventory_discrepancy/models/stock_warehouse.py @@ -0,0 +1,17 @@ +# Copyright 2017-2020 ForgeFlow S.L. +# (http://www.forgeflow.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from odoo import fields, models + + +class StockWarehouse(models.Model): + _inherit = "stock.warehouse" + + discrepancy_threshold = fields.Float( + string="Maximum Discrepancy Rate Threshold", + digits=(3, 2), + help="Maximum Discrepancy Rate allowed for any product when doing " + "an Inventory Adjustment. Threshold defined in involved Location " + "has preference.", + ) diff --git a/stock_inventory_discrepancy/readme/CONFIGURE.rst b/stock_inventory_discrepancy/readme/CONFIGURE.rst new file mode 100644 index 000000000..9d5628d89 --- /dev/null +++ b/stock_inventory_discrepancy/readme/CONFIGURE.rst @@ -0,0 +1,4 @@ +#. Go to "Inventory > Warehouse Management" > Warehouses" or to "Inventory > + Warehouse Management" > Locations". +#. Modify the "Maximum Discrepancy Rate Threshold" either in a Warehouse or + in a location. If set to 0.0 in both the threshold is disabled. diff --git a/stock_inventory_discrepancy/readme/CONTRIBUTORS.rst b/stock_inventory_discrepancy/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..1167cb775 --- /dev/null +++ b/stock_inventory_discrepancy/readme/CONTRIBUTORS.rst @@ -0,0 +1,8 @@ +* Lois Rilo +* Andreas Dian Sukarno Putro +* Bhavesh Odedra +* Héctor Villarreal +* `Tecnativa `_: + + * Ernesto Tejeda + * Carolina Fernandez diff --git a/stock_inventory_discrepancy/readme/DESCRIPTION.rst b/stock_inventory_discrepancy/readme/DESCRIPTION.rst new file mode 100644 index 000000000..9dbe85577 --- /dev/null +++ b/stock_inventory_discrepancy/readme/DESCRIPTION.rst @@ -0,0 +1,8 @@ +Adds the capability to show the discrepancy of every line in an inventory and +to block the inventory validation (setting it as 'Pending to Approve') when the +discrepancy is greater than an user defined threshold. + +Only new group "Validate All inventory Adjustments" will be able to force the +validation of those blocked inventories. By default, Stock manager will belong +to this group. In addition, Stock Users can validate inventories under the +threshold now. diff --git a/stock_inventory_discrepancy/readme/USAGE.rst b/stock_inventory_discrepancy/readme/USAGE.rst new file mode 100644 index 000000000..c33fe5d60 --- /dev/null +++ b/stock_inventory_discrepancy/readme/USAGE.rst @@ -0,0 +1,9 @@ +If you configured a "Maximum Discrepancy Rate Threshold". + +#. When validating an Inventory Adjustment if some line exceed the Discrepancy + Threshold the system will set the inventory's state to 'Pending to Approve' + and show the quantity of lines that exceed the threshold. +#. If both WH and location thresholds are configured, the location one has + preference. +#. The user with "Validate All inventory Adjustments" rights can force the + validation of an inventory pending to approve. diff --git a/stock_inventory_discrepancy/security/ir.model.access.csv b/stock_inventory_discrepancy/security/ir.model.access.csv new file mode 100644 index 000000000..03798e3d3 --- /dev/null +++ b/stock_inventory_discrepancy/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_confirm_discrepancy_wiz,confirm_discrepancy_wiz,model_confirm_discrepancy_wiz,stock.group_stock_user,1,1,1,0 +access_user_adjustment_name,user.stock.inventory.adjustment.name,stock.model_stock_inventory_adjustment_name,stock.group_stock_user,1,1,1,0 diff --git a/stock_inventory_discrepancy/security/stock_inventory_discrepancy_security.xml b/stock_inventory_discrepancy/security/stock_inventory_discrepancy_security.xml new file mode 100644 index 000000000..1a43b73b2 --- /dev/null +++ b/stock_inventory_discrepancy/security/stock_inventory_discrepancy_security.xml @@ -0,0 +1,24 @@ + + + + + Validate Inventory Adjustments + + + + Validate Inventory Adjustments excceded threshold + + + + + + + + diff --git a/stock_inventory_discrepancy/static/description/icon.png b/stock_inventory_discrepancy/static/description/icon.png new file mode 100644 index 000000000..3a0328b51 Binary files /dev/null and b/stock_inventory_discrepancy/static/description/icon.png differ diff --git a/stock_inventory_discrepancy/static/description/index.html b/stock_inventory_discrepancy/static/description/index.html new file mode 100644 index 000000000..488e59112 --- /dev/null +++ b/stock_inventory_discrepancy/static/description/index.html @@ -0,0 +1,458 @@ + + + + + + +Stock Inventory Discrepancy + + + +
+

Stock Inventory Discrepancy

+ + +

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

+

Adds the capability to show the discrepancy of every line in an inventory and +to block the inventory validation (setting it as ‘Pending to Approve’) when the +discrepancy is greater than an user defined threshold.

+

Only new group “Validate All inventory Adjustments” will be able to force the +validation of those blocked inventories. By default, Stock manager will belong +to this group. In addition, Stock Users can validate inventories under the +threshold now.

+

Table of contents

+ +
+

Configuration

+
    +
  1. Go to “Inventory > Warehouse Management” > Warehouses” or to “Inventory > +Warehouse Management” > Locations”.
  2. +
  3. Modify the “Maximum Discrepancy Rate Threshold” either in a Warehouse or +in a location. If set to 0.0 in both the threshold is disabled.
  4. +
+
+
+

Usage

+

If you configured a “Maximum Discrepancy Rate Threshold”.

+
    +
  1. When validating an Inventory Adjustment if some line exceed the Discrepancy +Threshold the system will set the inventory’s state to ‘Pending to Approve’ +and show the quantity of lines that exceed the threshold.
  2. +
  3. If both WH and location thresholds are configured, the location one has +preference.
  4. +
  5. The user with “Validate All inventory Adjustments” rights can force the +validation of an inventory pending to approve.
  6. +
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • ForgeFlow
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

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

+

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

+

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

+
+
+
+ + diff --git a/stock_inventory_discrepancy/tests/__init__.py b/stock_inventory_discrepancy/tests/__init__.py new file mode 100644 index 000000000..f019e5719 --- /dev/null +++ b/stock_inventory_discrepancy/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from . import test_inventory_discrepancy diff --git a/stock_inventory_discrepancy/tests/test_inventory_discrepancy.py b/stock_inventory_discrepancy/tests/test_inventory_discrepancy.py new file mode 100644 index 000000000..29098a493 --- /dev/null +++ b/stock_inventory_discrepancy/tests/test_inventory_discrepancy.py @@ -0,0 +1,199 @@ +# Copyright 2017-2020 ForgeFlow S.L. +# (http://www.forgeflow.com) +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from odoo.exceptions import UserError +from odoo.tests.common import TransactionCase, tagged + + +@tagged("post_install", "-at_install") +class TestInventoryDiscrepancy(TransactionCase): + def setUp(self): + super().setUp() + self.obj_location = self.env["stock.location"] + self.obj_product = self.env["product.product"] + self.obj_warehouse = self.env["stock.warehouse"] + self.obj_quant = self.env["stock.quant"] + + self.product1 = self.obj_product.create( + {"name": "Test Product 1", "type": "product", "default_code": "PROD1"} + ) + self.product2 = self.obj_product.create( + {"name": "Test Product 2", "type": "product", "default_code": "PROD2"} + ) + self.test_loc = self.obj_location.create( + {"name": "Test Location", "usage": "internal", "discrepancy_threshold": 10} + ) + self.test_wh = self.obj_warehouse.create( + {"name": "Test WH", "code": "T", "discrepancy_threshold": 20} + ) + self.obj_location._parent_store_compute() + + # Create Stock manager able to force validation on inventories. + group_stock_man = self.env.ref("stock.group_stock_manager") + group_inventory_all = self.env.ref( + "stock_inventory_discrepancy.group_stock_inventory_validation_always" + ) + group_employee = self.env.ref("base.group_user") + + self.manager = self.env["res.users"].create( + { + "name": "Test Manager", + "login": "manager", + "email": "test.manager@example.com", + "groups_id": [(6, 0, [group_stock_man.id, group_inventory_all.id])], + } + ) + group_stock_user = self.env.ref("stock.group_stock_user") + group_inventory = self.env.ref( + "stock_inventory_discrepancy.group_stock_inventory_validation" + ) + self.user = self.env["res.users"].create( + { + "name": "Test User", + "login": "user", + "email": "test.user@example.com", + "groups_id": [(6, 0, [group_stock_user.id, group_inventory.id])], + } + ) + + self.user_2 = self.env["res.users"].create( + { + "name": "Test User 2", + "login": "user_2", + "email": "test2.user@example.com", + "groups_id": [(6, 0, [group_stock_user.id, group_inventory_all.id])], + } + ) + + self.no_user = self.env["res.users"].create( + { + "name": "No User", + "login": "no_user", + "email": "test.no_user@example.com", + "groups_id": [(6, 0, [group_employee.id])], + } + ) + + self.quant_line1 = self.obj_quant.with_context(inventory_mode=False).create( + { + "product_id": self.product1.id, + "quantity": 2.0, + "location_id": self.test_loc.id, + } + ) + self.quant_line2 = self.obj_quant.with_context(inventory_mode=False).create( + { + "product_id": self.product2.id, + "quantity": 4.0, + "location_id": self.test_loc.id, + } + ) + + def test_discrepancy_validation(self): + """Tests the new workflow""" + # quant_line1 is over discrepancy but quant_line2 is not + self.quant_line1.write( + { + "inventory_quantity": 3.0, + "inventory_quantity_set": True, + } + ) + self.quant_line1._compute_discrepancy_threshold() + self.assertEqual(self.quant_line1.discrepancy_threshold, 10) + self.assertEqual(self.quant_line1.discrepancy_percent, 50) + self.assertTrue(self.quant_line1.has_over_discrepancy) + self.quant_line2.inventory_quantity = 4.1 + self.quant_line2._compute_discrepancy_threshold() + self.assertEqual(self.quant_line1.discrepancy_threshold, 10) + self.assertEqual(self.quant_line2.discrepancy_percent, 2.5) + self.assertFalse(self.quant_line2.has_over_discrepancy) + # Select all quants and try to apply the quantity adjustment + all_quants = self.quant_line1 | self.quant_line2 + action_dic = all_quants.with_user(self.user).action_apply_inventory() + model_wiz = action_dic["res_model"] + wiz = ( + self.env[model_wiz] + .with_user(self.user) + .with_context( + action_dic["context"], + active_model="stock.quant", + active_ids=all_quants.ids, + ) + .create({}) + ) + # Apply the wizard with a stock user will get an error + self.assertEqual(wiz.discrepancy_quant_ids, self.quant_line1) + with self.assertRaises(UserError): + wiz.button_apply() + # Apply the wizard with a stock manager will apply the adjustment + wiz.with_user(self.manager).button_apply() + self.assertEqual(self.quant_line1.quantity, 3) + self.assertEqual(self.quant_line2.quantity, 4.1) + + def test_discrepancy_validation_always(self): + """Tests the new workflow""" + self.quant_line1.inventory_quantity = 3.0 + self.quant_line1._compute_discrepancy_threshold() + self.assertEqual(self.quant_line1.discrepancy_threshold, 10) + self.assertEqual(self.quant_line1.discrepancy_percent, 50) + self.assertTrue(self.quant_line1.has_over_discrepancy) + self.quant_line2.inventory_quantity = 4.1 + self.quant_line2._compute_discrepancy_threshold() + self.assertEqual(self.quant_line1.discrepancy_threshold, 10) + self.assertEqual(self.quant_line2.discrepancy_percent, 2.5) + self.assertFalse(self.quant_line2.has_over_discrepancy) + # Select all quants and try to apply the quantity adjustment + all_quants = self.quant_line1 | self.quant_line2 + action_dic = all_quants.with_user(self.user).action_apply_inventory() + model_wiz = action_dic["res_model"] + wiz = ( + self.env[model_wiz] + .with_user(self.user) + .with_context( + action_dic["context"], + active_model="stock.quant", + active_ids=all_quants.ids, + ) + .create({}) + ) + # Apply the wizard with a stock user will get an error + self.assertEqual(wiz.discrepancy_quant_ids, self.quant_line1) + with self.assertRaises(UserError): + wiz.button_apply() + # Apply the wizard with a stock manager will apply the adjustment + wiz.with_user(self.user_2).button_apply() + self.assertEqual(self.quant_line1.quantity, 3) + self.assertEqual(self.quant_line2.quantity, 4.1) + + def test_warehouse_threshold(self): + """Tests the behaviour if the threshold is set on the WH.""" + quant_other_loc = self.obj_quant.with_context(inventory_mode=False).create( + { + "product_id": self.product1.id, + "inventory_quantity": 3.0, + "location_id": self.test_wh.lot_stock_id.id, + } + ) + self.assertEqual(quant_other_loc.discrepancy_threshold, 20) + + def test_propagate_discrepancy_threshold(self): + view_test_loc = self.obj_location.create( + {"name": "Test Location", "usage": "view", "discrepancy_threshold": 0.1} + ) + child_test_loc = self.obj_location.create( + { + "name": "Child Test Location", + "usage": "internal", + "discrepancy_threshold": 0.2, + "location_id": view_test_loc.id, + } + ) + view_test_loc.write( + {"discrepancy_threshold": 0.3, "propagate_discrepancy_threshold": True} + ) + self.assertEqual( + child_test_loc.discrepancy_threshold, + 0.3, + "Threshold Discrepancy wrongly propagated", + ) diff --git a/stock_inventory_discrepancy/views/stock_location_view.xml b/stock_inventory_discrepancy/views/stock_location_view.xml new file mode 100644 index 000000000..155d8e48b --- /dev/null +++ b/stock_inventory_discrepancy/views/stock_location_view.xml @@ -0,0 +1,19 @@ + + + + + Location form - cycle count extension + stock.location + + + + + + diff --git a/stock_inventory_discrepancy/views/stock_quant_view.xml b/stock_inventory_discrepancy/views/stock_quant_view.xml new file mode 100644 index 000000000..0aa61ee9a --- /dev/null +++ b/stock_inventory_discrepancy/views/stock_quant_view.xml @@ -0,0 +1,39 @@ + + + + + stock.quant + + + + + + + + + + + inventory_quantity_set and (inventory_quantity < 0 or has_over_discrepancy) + + + + diff --git a/stock_inventory_discrepancy/views/stock_warehouse_view.xml b/stock_inventory_discrepancy/views/stock_warehouse_view.xml new file mode 100644 index 000000000..70659e68d --- /dev/null +++ b/stock_inventory_discrepancy/views/stock_warehouse_view.xml @@ -0,0 +1,19 @@ + + + + + Warehouse form - Inventory Discrepancy + extension + stock.warehouse + + + + + + + diff --git a/stock_inventory_discrepancy/wizards/__init__.py b/stock_inventory_discrepancy/wizards/__init__.py new file mode 100644 index 000000000..8fc6c22c5 --- /dev/null +++ b/stock_inventory_discrepancy/wizards/__init__.py @@ -0,0 +1 @@ +from . import confirm_discrepancy_wiz diff --git a/stock_inventory_discrepancy/wizards/confirm_discrepancy_wiz.py b/stock_inventory_discrepancy/wizards/confirm_discrepancy_wiz.py new file mode 100644 index 000000000..44fdbb4b9 --- /dev/null +++ b/stock_inventory_discrepancy/wizards/confirm_discrepancy_wiz.py @@ -0,0 +1,41 @@ +# Copyright 2023 Tecnativa - Ernesto Tejeda +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import Command, _, fields, models +from odoo.exceptions import UserError + + +class ConfirmDiscrepancyWiz(models.TransientModel): + _name = "confirm.discrepancy.wiz" + _description = "Confim discrepancy wizard" + + def _default_discrepancy_quant_ids(self): + return [ + Command.set( + self.env["stock.quant"] + .browse(self.env.context.get("discrepancy_quant_ids")) + .ids + ) + ] + + discrepancy_quant_ids = fields.Many2many( + comodel_name="stock.quant", + readonly=True, + default=_default_discrepancy_quant_ids, + ) + + def button_apply(self): + self.ensure_one() + if not self.user_has_groups( + "stock_inventory_discrepancy.group_stock_inventory_validation_always" + ): + raise UserError( + _( + "You cannot apply inventory adjustments " + "if there are products that exceed the discrepancy threshold. " + "Only users with rights to apply them can proceed." + ) + ) + self.env["stock.quant"].browse(self.env.context.get("active_ids")).with_context( + skip_exceeded_discrepancy=True + ).action_apply_inventory() diff --git a/stock_inventory_discrepancy/wizards/confirm_discrepancy_wiz.xml b/stock_inventory_discrepancy/wizards/confirm_discrepancy_wiz.xml new file mode 100644 index 000000000..e69108e35 --- /dev/null +++ b/stock_inventory_discrepancy/wizards/confirm_discrepancy_wiz.xml @@ -0,0 +1,59 @@ + + + + stock.quant + + primary + 999 + + + + + + + confirm.discrepancy.wiz.form + confirm.discrepancy.wiz + +
+

+ You cannot confirm the inventory adjustment, + the following products have exceeded the discrepancy threshold. + Only users with permissions to apply them can proceed. +

+

+ The following products have exceeded the discrepancy threshold. + Are you sure you want to proceed? +

+ +
+
+ +
+
+ + Confirm discrepancy + confirm.discrepancy.wiz + form + new + +