Merge PR #1239 into 14.0

Signed-off-by LoisRForgeFlow
This commit is contained in:
OCA-git-bot
2021-10-01 11:58:04 +00:00
40 changed files with 4131 additions and 0 deletions

View File

@@ -0,0 +1 @@
../../../../stock_inventory_discrepancy

View File

@@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

View File

@@ -0,0 +1,104 @@
===========================
Stock Inventory Discrepancy
===========================
.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |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/13.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-13-0/stock-logistics-warehouse-13-0-stock_inventory_discrepancy
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
:target: https://runbot.odoo-community.org/runbot/153/13.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
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 <https://github.com/OCA/stock-logistics-warehouse/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
`feedback <https://github.com/OCA/stock-logistics-warehouse/issues/new?body=module:%20stock_inventory_discrepancy%0Aversion:%2013.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
~~~~~~~
* ForgeFlow
Contributors
~~~~~~~~~~~~
* Lois Rilo <lois.rilo@forgeflow.com>
* Andreas Dian Sukarno Putro <andreasdian777@gmail.com>
* Bhavesh Odedra <bodedra@opensourceintegrators.com>
* Héctor Villarreal <hector.villarreal@forgeflow.com>
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 <https://github.com/OCA/stock-logistics-warehouse/tree/13.0/stock_inventory_discrepancy>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View File

@@ -0,0 +1,4 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from . import models
from .hooks import post_load_hook

View File

@@ -0,0 +1,24 @@
# Copyright 2017-2020 ForgeFlow S.L. (http://www.forgeflow.com)
# 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": "14.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",
"views/assets_backend.xml",
"views/stock_inventory_view.xml",
"views/stock_warehouse_view.xml",
"views/stock_location_view.xml",
],
"license": "AGPL-3",
"post_load": "post_load_hook",
"installable": True,
"application": False,
}

View File

@@ -0,0 +1,79 @@
# Copyright 2019 ForgeFlow S.L.
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
from odoo import _
from odoo.exceptions import UserError
from odoo.tools.float_utils import float_compare
from odoo.addons.stock.models.stock_inventory import Inventory
def post_load_hook():
def action_validate_discrepancy(self):
"""Override method to avoid inline group validation"""
if not self.exists():
return
self.ensure_one()
# 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.")
)
if self.state not in ["confirm", "pending"]:
raise UserError(
_(
"You can't validate the inventory '%s', maybe this inventory "
+ "has been already validated or isn't ready."
)
% (self.name)
)
# END HOOK
inventory_lines = self.line_ids.filtered(
lambda l: l.product_id.tracking in ["lot", "serial"]
and not l.prod_lot_id
and l.theoretical_qty != l.product_qty
)
lines = self.line_ids.filtered(
lambda l: float_compare(
l.product_qty, 1, precision_rounding=l.product_uom_id.rounding
)
> 0
and l.product_id.tracking == "serial"
and l.prod_lot_id
)
if inventory_lines and not lines:
wiz_lines = [
(0, 0, {"product_id": product.id, "tracking": product.tracking})
for product in inventory_lines.mapped("product_id")
]
wiz = self.env["stock.track.confirmation"].create(
{"inventory_id": self.id, "tracking_line_ids": wiz_lines}
)
return {
"name": _("Tracked Products in Inventory Adjustment"),
"type": "ir.actions.act_window",
"view_mode": "form",
"views": [(False, "form")],
"res_model": "stock.track.confirmation",
"target": "new",
"res_id": wiz.id,
}
self._action_done()
self.line_ids._check_company()
self._check_company()
return True
if not hasattr(Inventory, "action_validate_original"):
Inventory.action_validate_original = Inventory.action_validate
Inventory._patch_method("action_validate", action_validate_discrepancy)

View File

@@ -0,0 +1,183 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_inventory_discrepancy
#
# Translators:
# Lukáš Spurný <lukasspurny8@gmail.com>, 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ý <lukasspurny8@gmail.com>, 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:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_qty
msgid "Discrepancy"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_percent
msgid "Discrepancy percent (%)"
msgstr ""
#. module: stock_inventory_discrepancy
#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.view_inventory_form
msgid "Force Validation"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__has_over_discrepancy
msgid "Has Over Discrepancy"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model,name:stock_inventory_discrepancy.model_stock_inventory
msgid "Inventory"
msgstr "Inventář"
#. module: stock_inventory_discrepancy
#: model:ir.model,name:stock_inventory_discrepancy.model_stock_inventory_line
msgid "Inventory Line"
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_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_inventory_line__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
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory__over_discrepancy_line_count
msgid "Number of Discrepancies Over Threshold"
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
#. openerp-web
#: code:addons/stock_inventory_discrepancy/static/src/js/inventory_validate_button_controller.js:0
#: model:ir.model.fields.selection,name:stock_inventory_discrepancy.selection__stock_inventory__state__pending
#, python-format
msgid "Pending to Approve"
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.fields,help:stock_inventory_discrepancy.field_stock_inventory__state
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 ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory__state
msgid "Status"
msgstr ""
#. module: stock_inventory_discrepancy
#: code:addons/stock_inventory_discrepancy/models/stock_inventory.py:0
#, python-format
msgid ""
"The Qty Update is over the Discrepancy Threshold.\n"
" Please, contact a user with rights to perform this action."
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_qty
msgid ""
"The difference between the actual qty counted and the theoretical quantity "
"on hand."
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_percent
msgid "The discrepancy expressed in percent with theoretical quantity as basis"
msgstr ""
#. module: stock_inventory_discrepancy
#. openerp-web
#: code:addons/stock_inventory_discrepancy/static/src/js/inventory_validate_button_controller.js:0
#, python-format
msgid "The inventory needs to be approved"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_threshold
msgid "Threshold (%)"
msgstr ""
#. module: stock_inventory_discrepancy
#: code:addons/stock_inventory_discrepancy/hooks.py:0
#, python-format
msgid "Tracked Products in Inventory Adjustment"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation_always
msgid "Validate All inventory Adjustments"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation
msgid "Validate Inventory Adjustments Under 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/hooks.py:0
#, python-format
msgid ""
"You can't validate the inventory '%s', maybe this inventory has been already "
"validated or isn't ready."
msgstr ""

View File

@@ -0,0 +1,182 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_inventory_discrepancy
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 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 <transbot@odoo-community.org>, 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:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_qty
msgid "Discrepancy"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_percent
msgid "Discrepancy percent (%)"
msgstr ""
#. module: stock_inventory_discrepancy
#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.view_inventory_form
msgid "Force Validation"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__has_over_discrepancy
msgid "Has Over Discrepancy"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model,name:stock_inventory_discrepancy.model_stock_inventory
msgid "Inventory"
msgstr "Bestand"
#. module: stock_inventory_discrepancy
#: model:ir.model,name:stock_inventory_discrepancy.model_stock_inventory_line
msgid "Inventory Line"
msgstr "Inventurposition"
#. 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_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_inventory_line__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
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory__over_discrepancy_line_count
msgid "Number of Discrepancies Over Threshold"
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
#. openerp-web
#: code:addons/stock_inventory_discrepancy/static/src/js/inventory_validate_button_controller.js:0
#: model:ir.model.fields.selection,name:stock_inventory_discrepancy.selection__stock_inventory__state__pending
#, python-format
msgid "Pending to Approve"
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.fields,help:stock_inventory_discrepancy.field_stock_inventory__state
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 ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory__state
msgid "Status"
msgstr ""
#. module: stock_inventory_discrepancy
#: code:addons/stock_inventory_discrepancy/models/stock_inventory.py:0
#, python-format
msgid ""
"The Qty Update is over the Discrepancy Threshold.\n"
" Please, contact a user with rights to perform this action."
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_qty
msgid ""
"The difference between the actual qty counted and the theoretical quantity "
"on hand."
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_percent
msgid "The discrepancy expressed in percent with theoretical quantity as basis"
msgstr ""
#. module: stock_inventory_discrepancy
#. openerp-web
#: code:addons/stock_inventory_discrepancy/static/src/js/inventory_validate_button_controller.js:0
#, python-format
msgid "The inventory needs to be approved"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_threshold
msgid "Threshold (%)"
msgstr ""
#. module: stock_inventory_discrepancy
#: code:addons/stock_inventory_discrepancy/hooks.py:0
#, python-format
msgid "Tracked Products in Inventory Adjustment"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation_always
msgid "Validate All inventory Adjustments"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation
msgid "Validate Inventory Adjustments Under 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/hooks.py:0
#, python-format
msgid ""
"You can't validate the inventory '%s', maybe this inventory has been already "
"validated or isn't ready."
msgstr ""

View File

@@ -0,0 +1,182 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_inventory_discrepancy
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 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 <transbot@odoo-community.org>, 2017\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"
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_qty
msgid "Discrepancy"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_percent
msgid "Discrepancy percent (%)"
msgstr ""
#. module: stock_inventory_discrepancy
#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.view_inventory_form
msgid "Force Validation"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__has_over_discrepancy
msgid "Has Over Discrepancy"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model,name:stock_inventory_discrepancy.model_stock_inventory
msgid "Inventory"
msgstr "Inventario"
#. module: stock_inventory_discrepancy
#: model:ir.model,name:stock_inventory_discrepancy.model_stock_inventory_line
msgid "Inventory Line"
msgstr "Línea inventario"
#. 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_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_inventory_line__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
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory__over_discrepancy_line_count
msgid "Number of Discrepancies Over Threshold"
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
#. openerp-web
#: code:addons/stock_inventory_discrepancy/static/src/js/inventory_validate_button_controller.js:0
#: model:ir.model.fields.selection,name:stock_inventory_discrepancy.selection__stock_inventory__state__pending
#, python-format
msgid "Pending to Approve"
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.fields,help:stock_inventory_discrepancy.field_stock_inventory__state
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 ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory__state
msgid "Status"
msgstr ""
#. module: stock_inventory_discrepancy
#: code:addons/stock_inventory_discrepancy/models/stock_inventory.py:0
#, python-format
msgid ""
"The Qty Update is over the Discrepancy Threshold.\n"
" Please, contact a user with rights to perform this action."
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_qty
msgid ""
"The difference between the actual qty counted and the theoretical quantity "
"on hand."
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_percent
msgid "The discrepancy expressed in percent with theoretical quantity as basis"
msgstr ""
#. module: stock_inventory_discrepancy
#. openerp-web
#: code:addons/stock_inventory_discrepancy/static/src/js/inventory_validate_button_controller.js:0
#, python-format
msgid "The inventory needs to be approved"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_threshold
msgid "Threshold (%)"
msgstr ""
#. module: stock_inventory_discrepancy
#: code:addons/stock_inventory_discrepancy/hooks.py:0
#, python-format
msgid "Tracked Products in Inventory Adjustment"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation_always
msgid "Validate All inventory Adjustments"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation
msgid "Validate Inventory Adjustments Under 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/hooks.py:0
#, python-format
msgid ""
"You can't validate the inventory '%s', maybe this inventory has been already "
"validated or isn't ready."
msgstr ""

View File

@@ -0,0 +1,184 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_inventory_discrepancy
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
# Daniel <dani_dca@hotmail.com>, 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 <dani_dca@hotmail.com>, 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:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_qty
msgid "Discrepancy"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_percent
msgid "Discrepancy percent (%)"
msgstr ""
#. module: stock_inventory_discrepancy
#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.view_inventory_form
msgid "Force Validation"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__has_over_discrepancy
msgid "Has Over Discrepancy"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model,name:stock_inventory_discrepancy.model_stock_inventory
msgid "Inventory"
msgstr "Inventario"
#. module: stock_inventory_discrepancy
#: model:ir.model,name:stock_inventory_discrepancy.model_stock_inventory_line
msgid "Inventory Line"
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_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_inventory_line__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
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory__over_discrepancy_line_count
msgid "Number of Discrepancies Over Threshold"
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
#. openerp-web
#: code:addons/stock_inventory_discrepancy/static/src/js/inventory_validate_button_controller.js:0
#: model:ir.model.fields.selection,name:stock_inventory_discrepancy.selection__stock_inventory__state__pending
#, python-format
msgid "Pending to Approve"
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.fields,help:stock_inventory_discrepancy.field_stock_inventory__state
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 ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory__state
msgid "Status"
msgstr ""
#. module: stock_inventory_discrepancy
#: code:addons/stock_inventory_discrepancy/models/stock_inventory.py:0
#, python-format
msgid ""
"The Qty Update is over the Discrepancy Threshold.\n"
" Please, contact a user with rights to perform this action."
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_qty
msgid ""
"The difference between the actual qty counted and the theoretical quantity "
"on hand."
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_percent
msgid "The discrepancy expressed in percent with theoretical quantity as basis"
msgstr ""
#. module: stock_inventory_discrepancy
#. openerp-web
#: code:addons/stock_inventory_discrepancy/static/src/js/inventory_validate_button_controller.js:0
#, python-format
msgid "The inventory needs to be approved"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_threshold
msgid "Threshold (%)"
msgstr ""
#. module: stock_inventory_discrepancy
#: code:addons/stock_inventory_discrepancy/hooks.py:0
#, python-format
msgid "Tracked Products in Inventory Adjustment"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation_always
msgid "Validate All inventory Adjustments"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation
msgid "Validate Inventory Adjustments Under 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/hooks.py:0
#, python-format
msgid ""
"You can't validate the inventory '%s', maybe this inventory has been already "
"validated or isn't ready."
msgstr ""

View File

@@ -0,0 +1,182 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_inventory_discrepancy
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 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 <transbot@odoo-community.org>, 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:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_qty
msgid "Discrepancy"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_percent
msgid "Discrepancy percent (%)"
msgstr ""
#. module: stock_inventory_discrepancy
#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.view_inventory_form
msgid "Force Validation"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__has_over_discrepancy
msgid "Has Over Discrepancy"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model,name:stock_inventory_discrepancy.model_stock_inventory
msgid "Inventory"
msgstr "Inventaire"
#. module: stock_inventory_discrepancy
#: model:ir.model,name:stock_inventory_discrepancy.model_stock_inventory_line
msgid "Inventory Line"
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_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_inventory_line__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
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory__over_discrepancy_line_count
msgid "Number of Discrepancies Over Threshold"
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
#. openerp-web
#: code:addons/stock_inventory_discrepancy/static/src/js/inventory_validate_button_controller.js:0
#: model:ir.model.fields.selection,name:stock_inventory_discrepancy.selection__stock_inventory__state__pending
#, python-format
msgid "Pending to Approve"
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.fields,help:stock_inventory_discrepancy.field_stock_inventory__state
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 ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory__state
msgid "Status"
msgstr ""
#. module: stock_inventory_discrepancy
#: code:addons/stock_inventory_discrepancy/models/stock_inventory.py:0
#, python-format
msgid ""
"The Qty Update is over the Discrepancy Threshold.\n"
" Please, contact a user with rights to perform this action."
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_qty
msgid ""
"The difference between the actual qty counted and the theoretical quantity "
"on hand."
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_percent
msgid "The discrepancy expressed in percent with theoretical quantity as basis"
msgstr ""
#. module: stock_inventory_discrepancy
#. openerp-web
#: code:addons/stock_inventory_discrepancy/static/src/js/inventory_validate_button_controller.js:0
#, python-format
msgid "The inventory needs to be approved"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_threshold
msgid "Threshold (%)"
msgstr ""
#. module: stock_inventory_discrepancy
#: code:addons/stock_inventory_discrepancy/hooks.py:0
#, python-format
msgid "Tracked Products in Inventory Adjustment"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation_always
msgid "Validate All inventory Adjustments"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation
msgid "Validate Inventory Adjustments Under 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/hooks.py:0
#, python-format
msgid ""
"You can't validate the inventory '%s', maybe this inventory has been already "
"validated or isn't ready."
msgstr ""

View File

@@ -0,0 +1,183 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_inventory_discrepancy
#
# Translators:
# Mohamed HABOU <m.habou@agoradeveloppement.com>, 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 <m.habou@agoradeveloppement.com>, 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:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_qty
msgid "Discrepancy"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_percent
msgid "Discrepancy percent (%)"
msgstr ""
#. module: stock_inventory_discrepancy
#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.view_inventory_form
msgid "Force Validation"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__has_over_discrepancy
msgid "Has Over Discrepancy"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model,name:stock_inventory_discrepancy.model_stock_inventory
msgid "Inventory"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model,name:stock_inventory_discrepancy.model_stock_inventory_line
msgid "Inventory Line"
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_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_inventory_line__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
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory__over_discrepancy_line_count
msgid "Number of Discrepancies Over Threshold"
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
#. openerp-web
#: code:addons/stock_inventory_discrepancy/static/src/js/inventory_validate_button_controller.js:0
#: model:ir.model.fields.selection,name:stock_inventory_discrepancy.selection__stock_inventory__state__pending
#, python-format
msgid "Pending to Approve"
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.fields,help:stock_inventory_discrepancy.field_stock_inventory__state
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 ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory__state
msgid "Status"
msgstr ""
#. module: stock_inventory_discrepancy
#: code:addons/stock_inventory_discrepancy/models/stock_inventory.py:0
#, python-format
msgid ""
"The Qty Update is over the Discrepancy Threshold.\n"
" Please, contact a user with rights to perform this action."
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_qty
msgid ""
"The difference between the actual qty counted and the theoretical quantity "
"on hand."
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_percent
msgid "The discrepancy expressed in percent with theoretical quantity as basis"
msgstr ""
#. module: stock_inventory_discrepancy
#. openerp-web
#: code:addons/stock_inventory_discrepancy/static/src/js/inventory_validate_button_controller.js:0
#, python-format
msgid "The inventory needs to be approved"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_threshold
msgid "Threshold (%)"
msgstr ""
#. module: stock_inventory_discrepancy
#: code:addons/stock_inventory_discrepancy/hooks.py:0
#, python-format
msgid "Tracked Products in Inventory Adjustment"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation_always
msgid "Validate All inventory Adjustments"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation
msgid "Validate Inventory Adjustments Under 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/hooks.py:0
#, python-format
msgid ""
"You can't validate the inventory '%s', maybe this inventory has been already "
"validated or isn't ready."
msgstr ""

View File

@@ -0,0 +1,183 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_inventory_discrepancy
#
# Translators:
# Bole <bole@dajmi5.com>, 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 <bole@dajmi5.com>, 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:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_qty
msgid "Discrepancy"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_percent
msgid "Discrepancy percent (%)"
msgstr ""
#. module: stock_inventory_discrepancy
#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.view_inventory_form
msgid "Force Validation"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__has_over_discrepancy
msgid "Has Over Discrepancy"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model,name:stock_inventory_discrepancy.model_stock_inventory
msgid "Inventory"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model,name:stock_inventory_discrepancy.model_stock_inventory_line
msgid "Inventory Line"
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_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_inventory_line__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
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory__over_discrepancy_line_count
msgid "Number of Discrepancies Over Threshold"
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
#. openerp-web
#: code:addons/stock_inventory_discrepancy/static/src/js/inventory_validate_button_controller.js:0
#: model:ir.model.fields.selection,name:stock_inventory_discrepancy.selection__stock_inventory__state__pending
#, python-format
msgid "Pending to Approve"
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.fields,help:stock_inventory_discrepancy.field_stock_inventory__state
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 ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory__state
msgid "Status"
msgstr ""
#. module: stock_inventory_discrepancy
#: code:addons/stock_inventory_discrepancy/models/stock_inventory.py:0
#, python-format
msgid ""
"The Qty Update is over the Discrepancy Threshold.\n"
" Please, contact a user with rights to perform this action."
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_qty
msgid ""
"The difference between the actual qty counted and the theoretical quantity "
"on hand."
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_percent
msgid "The discrepancy expressed in percent with theoretical quantity as basis"
msgstr ""
#. module: stock_inventory_discrepancy
#. openerp-web
#: code:addons/stock_inventory_discrepancy/static/src/js/inventory_validate_button_controller.js:0
#, python-format
msgid "The inventory needs to be approved"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_threshold
msgid "Threshold (%)"
msgstr ""
#. module: stock_inventory_discrepancy
#: code:addons/stock_inventory_discrepancy/hooks.py:0
#, python-format
msgid "Tracked Products in Inventory Adjustment"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation_always
msgid "Validate All inventory Adjustments"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation
msgid "Validate Inventory Adjustments Under 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/hooks.py:0
#, python-format
msgid ""
"You can't validate the inventory '%s', maybe this inventory has been already "
"validated or isn't ready."
msgstr ""

View File

@@ -0,0 +1,183 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_inventory_discrepancy
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
# Paolo Valier <paolo.valier@hotmail.it>, 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 <paolo.valier@hotmail.it>, 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:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_qty
msgid "Discrepancy"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_percent
msgid "Discrepancy percent (%)"
msgstr ""
#. module: stock_inventory_discrepancy
#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.view_inventory_form
msgid "Force Validation"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__has_over_discrepancy
msgid "Has Over Discrepancy"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model,name:stock_inventory_discrepancy.model_stock_inventory
msgid "Inventory"
msgstr "Inventario"
#. module: stock_inventory_discrepancy
#: model:ir.model,name:stock_inventory_discrepancy.model_stock_inventory_line
msgid "Inventory Line"
msgstr "Riga d'Inventario"
#. 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_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_inventory_line__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
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory__over_discrepancy_line_count
msgid "Number of Discrepancies Over Threshold"
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
#. openerp-web
#: code:addons/stock_inventory_discrepancy/static/src/js/inventory_validate_button_controller.js:0
#: model:ir.model.fields.selection,name:stock_inventory_discrepancy.selection__stock_inventory__state__pending
#, python-format
msgid "Pending to Approve"
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.fields,help:stock_inventory_discrepancy.field_stock_inventory__state
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 ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory__state
msgid "Status"
msgstr ""
#. module: stock_inventory_discrepancy
#: code:addons/stock_inventory_discrepancy/models/stock_inventory.py:0
#, python-format
msgid ""
"The Qty Update is over the Discrepancy Threshold.\n"
" Please, contact a user with rights to perform this action."
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_qty
msgid ""
"The difference between the actual qty counted and the theoretical quantity "
"on hand."
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_percent
msgid "The discrepancy expressed in percent with theoretical quantity as basis"
msgstr ""
#. module: stock_inventory_discrepancy
#. openerp-web
#: code:addons/stock_inventory_discrepancy/static/src/js/inventory_validate_button_controller.js:0
#, python-format
msgid "The inventory needs to be approved"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_threshold
msgid "Threshold (%)"
msgstr ""
#. module: stock_inventory_discrepancy
#: code:addons/stock_inventory_discrepancy/hooks.py:0
#, python-format
msgid "Tracked Products in Inventory Adjustment"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation_always
msgid "Validate All inventory Adjustments"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation
msgid "Validate Inventory Adjustments Under 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/hooks.py:0
#, python-format
msgid ""
"You can't validate the inventory '%s', maybe this inventory has been already "
"validated or isn't ready."
msgstr ""

View File

@@ -0,0 +1,182 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_inventory_discrepancy
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 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 <transbot@odoo-community.org>, 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:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_qty
msgid "Discrepancy"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_percent
msgid "Discrepancy percent (%)"
msgstr ""
#. module: stock_inventory_discrepancy
#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.view_inventory_form
msgid "Force Validation"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__has_over_discrepancy
msgid "Has Over Discrepancy"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model,name:stock_inventory_discrepancy.model_stock_inventory
msgid "Inventory"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model,name:stock_inventory_discrepancy.model_stock_inventory_line
msgid "Inventory Line"
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_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_inventory_line__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
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory__over_discrepancy_line_count
msgid "Number of Discrepancies Over Threshold"
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
#. openerp-web
#: code:addons/stock_inventory_discrepancy/static/src/js/inventory_validate_button_controller.js:0
#: model:ir.model.fields.selection,name:stock_inventory_discrepancy.selection__stock_inventory__state__pending
#, python-format
msgid "Pending to Approve"
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.fields,help:stock_inventory_discrepancy.field_stock_inventory__state
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 ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory__state
msgid "Status"
msgstr ""
#. module: stock_inventory_discrepancy
#: code:addons/stock_inventory_discrepancy/models/stock_inventory.py:0
#, python-format
msgid ""
"The Qty Update is over the Discrepancy Threshold.\n"
" Please, contact a user with rights to perform this action."
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_qty
msgid ""
"The difference between the actual qty counted and the theoretical quantity "
"on hand."
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_percent
msgid "The discrepancy expressed in percent with theoretical quantity as basis"
msgstr ""
#. module: stock_inventory_discrepancy
#. openerp-web
#: code:addons/stock_inventory_discrepancy/static/src/js/inventory_validate_button_controller.js:0
#, python-format
msgid "The inventory needs to be approved"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_threshold
msgid "Threshold (%)"
msgstr ""
#. module: stock_inventory_discrepancy
#: code:addons/stock_inventory_discrepancy/hooks.py:0
#, python-format
msgid "Tracked Products in Inventory Adjustment"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation_always
msgid "Validate All inventory Adjustments"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation
msgid "Validate Inventory Adjustments Under 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/hooks.py:0
#, python-format
msgid ""
"You can't validate the inventory '%s', maybe this inventory has been already "
"validated or isn't ready."
msgstr ""

View File

@@ -0,0 +1,183 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_inventory_discrepancy
#
# Translators:
# Peter Hageman <hageman.p@gmail.com>, 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 <hageman.p@gmail.com>, 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:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_qty
msgid "Discrepancy"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_percent
msgid "Discrepancy percent (%)"
msgstr ""
#. module: stock_inventory_discrepancy
#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.view_inventory_form
msgid "Force Validation"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__has_over_discrepancy
msgid "Has Over Discrepancy"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model,name:stock_inventory_discrepancy.model_stock_inventory
msgid "Inventory"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model,name:stock_inventory_discrepancy.model_stock_inventory_line
msgid "Inventory Line"
msgstr "Voorraadregel"
#. 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_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_inventory_line__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
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory__over_discrepancy_line_count
msgid "Number of Discrepancies Over Threshold"
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
#. openerp-web
#: code:addons/stock_inventory_discrepancy/static/src/js/inventory_validate_button_controller.js:0
#: model:ir.model.fields.selection,name:stock_inventory_discrepancy.selection__stock_inventory__state__pending
#, python-format
msgid "Pending to Approve"
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.fields,help:stock_inventory_discrepancy.field_stock_inventory__state
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 ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory__state
msgid "Status"
msgstr ""
#. module: stock_inventory_discrepancy
#: code:addons/stock_inventory_discrepancy/models/stock_inventory.py:0
#, python-format
msgid ""
"The Qty Update is over the Discrepancy Threshold.\n"
" Please, contact a user with rights to perform this action."
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_qty
msgid ""
"The difference between the actual qty counted and the theoretical quantity "
"on hand."
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_percent
msgid "The discrepancy expressed in percent with theoretical quantity as basis"
msgstr ""
#. module: stock_inventory_discrepancy
#. openerp-web
#: code:addons/stock_inventory_discrepancy/static/src/js/inventory_validate_button_controller.js:0
#, python-format
msgid "The inventory needs to be approved"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_threshold
msgid "Threshold (%)"
msgstr ""
#. module: stock_inventory_discrepancy
#: code:addons/stock_inventory_discrepancy/hooks.py:0
#, python-format
msgid "Tracked Products in Inventory Adjustment"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation_always
msgid "Validate All inventory Adjustments"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation
msgid "Validate Inventory Adjustments Under 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/hooks.py:0
#, python-format
msgid ""
"You can't validate the inventory '%s', maybe this inventory has been already "
"validated or isn't ready."
msgstr ""

View File

@@ -0,0 +1,184 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_inventory_discrepancy
#
# Translators:
# Paulo Ricardo <ti@shoppingescritorio.com.br>, 2017
# Felipe Lopes <ti@trojahntoppel.com.br>, 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 <ti@trojahntoppel.com.br>, 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:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_qty
msgid "Discrepancy"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_percent
msgid "Discrepancy percent (%)"
msgstr ""
#. module: stock_inventory_discrepancy
#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.view_inventory_form
msgid "Force Validation"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__has_over_discrepancy
msgid "Has Over Discrepancy"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model,name:stock_inventory_discrepancy.model_stock_inventory
msgid "Inventory"
msgstr "Inventário"
#. module: stock_inventory_discrepancy
#: model:ir.model,name:stock_inventory_discrepancy.model_stock_inventory_line
msgid "Inventory Line"
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_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_inventory_line__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
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory__over_discrepancy_line_count
msgid "Number of Discrepancies Over Threshold"
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
#. openerp-web
#: code:addons/stock_inventory_discrepancy/static/src/js/inventory_validate_button_controller.js:0
#: model:ir.model.fields.selection,name:stock_inventory_discrepancy.selection__stock_inventory__state__pending
#, python-format
msgid "Pending to Approve"
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.fields,help:stock_inventory_discrepancy.field_stock_inventory__state
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 ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory__state
msgid "Status"
msgstr ""
#. module: stock_inventory_discrepancy
#: code:addons/stock_inventory_discrepancy/models/stock_inventory.py:0
#, python-format
msgid ""
"The Qty Update is over the Discrepancy Threshold.\n"
" Please, contact a user with rights to perform this action."
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_qty
msgid ""
"The difference between the actual qty counted and the theoretical quantity "
"on hand."
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_percent
msgid "The discrepancy expressed in percent with theoretical quantity as basis"
msgstr ""
#. module: stock_inventory_discrepancy
#. openerp-web
#: code:addons/stock_inventory_discrepancy/static/src/js/inventory_validate_button_controller.js:0
#, python-format
msgid "The inventory needs to be approved"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_threshold
msgid "Threshold (%)"
msgstr ""
#. module: stock_inventory_discrepancy
#: code:addons/stock_inventory_discrepancy/hooks.py:0
#, python-format
msgid "Tracked Products in Inventory Adjustment"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation_always
msgid "Validate All inventory Adjustments"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation
msgid "Validate Inventory Adjustments Under 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/hooks.py:0
#, python-format
msgid ""
"You can't validate the inventory '%s', maybe this inventory has been already "
"validated or isn't ready."
msgstr ""

View File

@@ -0,0 +1,183 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_inventory_discrepancy
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 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 <transbot@odoo-community.org>, 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:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_qty
msgid "Discrepancy"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_percent
msgid "Discrepancy percent (%)"
msgstr ""
#. module: stock_inventory_discrepancy
#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.view_inventory_form
msgid "Force Validation"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__has_over_discrepancy
msgid "Has Over Discrepancy"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model,name:stock_inventory_discrepancy.model_stock_inventory
msgid "Inventory"
msgstr "Inventar"
#. module: stock_inventory_discrepancy
#: model:ir.model,name:stock_inventory_discrepancy.model_stock_inventory_line
msgid "Inventory Line"
msgstr "Postavka inventarja"
#. 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_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_inventory_line__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
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory__over_discrepancy_line_count
msgid "Number of Discrepancies Over Threshold"
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
#. openerp-web
#: code:addons/stock_inventory_discrepancy/static/src/js/inventory_validate_button_controller.js:0
#: model:ir.model.fields.selection,name:stock_inventory_discrepancy.selection__stock_inventory__state__pending
#, python-format
msgid "Pending to Approve"
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.fields,help:stock_inventory_discrepancy.field_stock_inventory__state
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 ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory__state
msgid "Status"
msgstr ""
#. module: stock_inventory_discrepancy
#: code:addons/stock_inventory_discrepancy/models/stock_inventory.py:0
#, python-format
msgid ""
"The Qty Update is over the Discrepancy Threshold.\n"
" Please, contact a user with rights to perform this action."
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_qty
msgid ""
"The difference between the actual qty counted and the theoretical quantity "
"on hand."
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_percent
msgid "The discrepancy expressed in percent with theoretical quantity as basis"
msgstr ""
#. module: stock_inventory_discrepancy
#. openerp-web
#: code:addons/stock_inventory_discrepancy/static/src/js/inventory_validate_button_controller.js:0
#, python-format
msgid "The inventory needs to be approved"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_threshold
msgid "Threshold (%)"
msgstr ""
#. module: stock_inventory_discrepancy
#: code:addons/stock_inventory_discrepancy/hooks.py:0
#, python-format
msgid "Tracked Products in Inventory Adjustment"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation_always
msgid "Validate All inventory Adjustments"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation
msgid "Validate Inventory Adjustments Under 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/hooks.py:0
#, python-format
msgid ""
"You can't validate the inventory '%s', maybe this inventory has been already "
"validated or isn't ready."
msgstr ""

View File

@@ -0,0 +1,177 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_inventory_discrepancy
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 13.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:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_qty
msgid "Discrepancy"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_percent
msgid "Discrepancy percent (%)"
msgstr ""
#. module: stock_inventory_discrepancy
#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.view_inventory_form
msgid "Force Validation"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__has_over_discrepancy
msgid "Has Over Discrepancy"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model,name:stock_inventory_discrepancy.model_stock_inventory
msgid "Inventory"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model,name:stock_inventory_discrepancy.model_stock_inventory_line
msgid "Inventory Line"
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_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_inventory_line__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
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory__over_discrepancy_line_count
msgid "Number of Discrepancies Over Threshold"
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
#. openerp-web
#: code:addons/stock_inventory_discrepancy/static/src/js/inventory_validate_button_controller.js:0
#: model:ir.model.fields.selection,name:stock_inventory_discrepancy.selection__stock_inventory__state__pending
#, python-format
msgid "Pending to Approve"
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.fields,help:stock_inventory_discrepancy.field_stock_inventory__state
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 ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory__state
msgid "Status"
msgstr ""
#. module: stock_inventory_discrepancy
#: code:addons/stock_inventory_discrepancy/models/stock_inventory.py:0
#, python-format
msgid ""
"The Qty Update is over the Discrepancy Threshold.\n"
" Please, contact a user with rights to perform this action."
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_qty
msgid ""
"The difference between the actual qty counted and the theoretical quantity "
"on hand."
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_percent
msgid ""
"The discrepancy expressed in percent with theoretical quantity as basis"
msgstr ""
#. module: stock_inventory_discrepancy
#. openerp-web
#: code:addons/stock_inventory_discrepancy/static/src/js/inventory_validate_button_controller.js:0
#, python-format
msgid "The inventory needs to be approved"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_threshold
msgid "Threshold (%)"
msgstr ""
#. module: stock_inventory_discrepancy
#: code:addons/stock_inventory_discrepancy/hooks.py:0
#, python-format
msgid "Tracked Products in Inventory Adjustment"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation_always
msgid "Validate All inventory Adjustments"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation
msgid "Validate Inventory Adjustments Under 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/hooks.py:0
#, python-format
msgid ""
"You can't validate the inventory '%s', maybe this inventory has been already"
" validated or isn't ready."
msgstr ""

View File

@@ -0,0 +1,183 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_inventory_discrepancy
#
# Translators:
# Ozge Altinisik <ozge@altinkaya.com.tr>, 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 <ozge@altinkaya.com.tr>, 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:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_qty
msgid "Discrepancy"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_percent
msgid "Discrepancy percent (%)"
msgstr ""
#. module: stock_inventory_discrepancy
#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.view_inventory_form
msgid "Force Validation"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__has_over_discrepancy
msgid "Has Over Discrepancy"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model,name:stock_inventory_discrepancy.model_stock_inventory
msgid "Inventory"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model,name:stock_inventory_discrepancy.model_stock_inventory_line
msgid "Inventory Line"
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_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_inventory_line__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
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory__over_discrepancy_line_count
msgid "Number of Discrepancies Over Threshold"
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
#. openerp-web
#: code:addons/stock_inventory_discrepancy/static/src/js/inventory_validate_button_controller.js:0
#: model:ir.model.fields.selection,name:stock_inventory_discrepancy.selection__stock_inventory__state__pending
#, python-format
msgid "Pending to Approve"
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.fields,help:stock_inventory_discrepancy.field_stock_inventory__state
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 ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory__state
msgid "Status"
msgstr ""
#. module: stock_inventory_discrepancy
#: code:addons/stock_inventory_discrepancy/models/stock_inventory.py:0
#, python-format
msgid ""
"The Qty Update is over the Discrepancy Threshold.\n"
" Please, contact a user with rights to perform this action."
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_qty
msgid ""
"The difference between the actual qty counted and the theoretical quantity "
"on hand."
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_percent
msgid "The discrepancy expressed in percent with theoretical quantity as basis"
msgstr ""
#. module: stock_inventory_discrepancy
#. openerp-web
#: code:addons/stock_inventory_discrepancy/static/src/js/inventory_validate_button_controller.js:0
#, python-format
msgid "The inventory needs to be approved"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_threshold
msgid "Threshold (%)"
msgstr ""
#. module: stock_inventory_discrepancy
#: code:addons/stock_inventory_discrepancy/hooks.py:0
#, python-format
msgid "Tracked Products in Inventory Adjustment"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation_always
msgid "Validate All inventory Adjustments"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation
msgid "Validate Inventory Adjustments Under 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/hooks.py:0
#, python-format
msgid ""
"You can't validate the inventory '%s', maybe this inventory has been already "
"validated or isn't ready."
msgstr ""

View File

@@ -0,0 +1,205 @@
# 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:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_qty
msgid "Discrepancy"
msgstr "差异"
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_percent
msgid "Discrepancy percent (%)"
msgstr "差异百分比(%)"
#. module: stock_inventory_discrepancy
#: model_terms:ir.ui.view,arch_db:stock_inventory_discrepancy.view_inventory_form
msgid "Force Validation"
msgstr "强制验证"
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__has_over_discrepancy
msgid "Has Over Discrepancy"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model,name:stock_inventory_discrepancy.model_stock_inventory
msgid "Inventory"
msgstr "库存"
#. module: stock_inventory_discrepancy
#: model:ir.model,name:stock_inventory_discrepancy.model_stock_inventory_line
msgid "Inventory Line"
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_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_inventory_line__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
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory__over_discrepancy_line_count
msgid "Number of Discrepancies Over Threshold"
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
#. openerp-web
#: code:addons/stock_inventory_discrepancy/static/src/js/inventory_validate_button_controller.js:0
#: model:ir.model.fields.selection,name:stock_inventory_discrepancy.selection__stock_inventory__state__pending
#, python-format
msgid "Pending to Approve"
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.fields,help:stock_inventory_discrepancy.field_stock_inventory__state
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"
"- 已验证:库存已批准。"
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory__state
msgid "Status"
msgstr "状态"
#. module: stock_inventory_discrepancy
#: code:addons/stock_inventory_discrepancy/models/stock_inventory.py:0
#, python-format
msgid ""
"The Qty Update is over the Discrepancy Threshold.\n"
" Please, contact a user with rights to perform this action."
msgstr ""
"数量更新超过差异阈值。\n"
"请与有权执行此操作的用户联系。"
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_qty
msgid ""
"The difference between the actual qty counted and the theoretical quantity "
"on hand."
msgstr "计算的实际数量与现有理论数量之间的差。"
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,help:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_percent
msgid "The discrepancy expressed in percent with theoretical quantity as basis"
msgstr "差异以理论量为基础的百分比表示"
#. module: stock_inventory_discrepancy
#. openerp-web
#: code:addons/stock_inventory_discrepancy/static/src/js/inventory_validate_button_controller.js:0
#, python-format
msgid "The inventory needs to be approved"
msgstr ""
#. module: stock_inventory_discrepancy
#: model:ir.model.fields,field_description:stock_inventory_discrepancy.field_stock_inventory_line__discrepancy_threshold
msgid "Threshold (%)"
msgstr "阈值(%)"
#. module: stock_inventory_discrepancy
#: code:addons/stock_inventory_discrepancy/hooks.py:0
#, fuzzy, python-format
msgid "Tracked Products in Inventory Adjustment"
msgstr "验证所有库存调整"
#. module: stock_inventory_discrepancy
#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation_always
msgid "Validate All inventory Adjustments"
msgstr "验证所有库存调整"
#. module: stock_inventory_discrepancy
#: model:res.groups,name:stock_inventory_discrepancy.group_stock_inventory_validation
msgid "Validate Inventory Adjustments Under 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/hooks.py:0
#, python-format
msgid ""
"You can't validate the inventory '%s', maybe this inventory has been already "
"validated or isn't ready."
msgstr ""
#~ msgid "Cancelled"
#~ msgstr "已取消"
#~ msgid "Draft"
#~ msgstr "草稿"
#~ msgid "In Progress"
#~ msgstr "进行中"
#~ msgid "Validated"
#~ msgstr "已验证"

View File

@@ -0,0 +1,6 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from . import stock_inventory
from . import stock_inventory_line
from . import stock_warehouse
from . import stock_location

View File

@@ -0,0 +1,73 @@
# Copyright 2017-21 ForgeFlow S.L. (https://www.forgeflow.com)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import _, api, fields, models
from odoo.exceptions import UserError
class StockInventory(models.Model):
_inherit = "stock.inventory"
state = fields.Selection(
selection_add=[("pending", "Pending to Approve"), ("done",)],
string="Status",
readonly=True,
index=True,
copy=False,
help="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.",
)
over_discrepancy_line_count = fields.Integer(
string="Number of Discrepancies Over Threshold",
compute="_compute_over_discrepancy_line_count",
store=True,
)
@api.depends("line_ids.product_qty", "line_ids.theoretical_qty")
def _compute_over_discrepancy_line_count(self):
for inventory in self:
lines = inventory.line_ids.filtered(
lambda line: line._has_over_discrepancy()
)
inventory.over_discrepancy_line_count = len(lines)
def action_over_discrepancies(self):
self.write({"state": "pending"})
def _check_group_inventory_validation_always(self):
grp_inv_val = self.env.ref(
"stock_inventory_discrepancy.group_stock_inventory_validation_always"
)
if grp_inv_val in self.env.user.groups_id:
return True
else:
raise UserError(
_(
"The Qty Update is over the Discrepancy Threshold.\n "
"Please, contact a user with rights to perform "
"this action."
)
)
def _action_done(self):
for inventory in self:
if inventory.over_discrepancy_line_count > 0.0:
if 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"
):
inventory.action_over_discrepancies()
return True
else:
inventory._check_group_inventory_validation_always()
return super(StockInventory, self)._action_done()
def action_force_done(self):
return super(StockInventory, self)._action_done()

View File

@@ -0,0 +1,63 @@
# Copyright 2017-21 ForgeFlow S.L. (https://www.forgeflow.com)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import api, fields, models
class StockInventoryLine(models.Model):
_inherit = "stock.inventory.line"
discrepancy_qty = fields.Float(
string="Discrepancy",
compute="_compute_discrepancy",
help="The difference between the actual qty counted and the "
"theoretical quantity on hand.",
digits="Product Unit of Measure",
default=0,
)
discrepancy_percent = fields.Float(
string="Discrepancy percent (%)",
compute="_compute_discrepancy",
digits=(3, 2),
help="The discrepancy expressed in percent with theoretical quantity "
"as basis",
)
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("theoretical_qty", "product_qty")
def _compute_discrepancy(self):
for line in self:
line.discrepancy_qty = line.product_qty - line.theoretical_qty
if line.theoretical_qty:
line.discrepancy_percent = 100 * abs(
(line.product_qty - line.theoretical_qty) / line.theoretical_qty
)
elif not line.theoretical_qty and line.product_qty:
line.discrepancy_percent = 100.0
else:
line.discrepancy_percent = 0.0
def _compute_discrepancy_threshold(self):
for line in self:
whs = line.location_id.get_warehouse()
if line.location_id.discrepancy_threshold > 0.0:
line.discrepancy_threshold = line.location_id.discrepancy_threshold
elif whs.discrepancy_threshold > 0.0:
line.discrepancy_threshold = whs.discrepancy_threshold
else:
line.discrepancy_threshold = False
def _compute_has_over_discrepancy(self):
for rec in self:
rec.has_over_discrepancy = rec._has_over_discrepancy()
def _has_over_discrepancy(self):
return self.discrepancy_percent > self.discrepancy_threshold > 0

View File

@@ -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

View File

@@ -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.",
)

View File

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

View File

@@ -0,0 +1,4 @@
* Lois Rilo <lois.rilo@forgeflow.com>
* Andreas Dian Sukarno Putro <andreasdian777@gmail.com>
* Bhavesh Odedra <bodedra@opensourceintegrators.com>
* Héctor Villarreal <hector.villarreal@forgeflow.com>

View File

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

View File

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

View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2017-2020 ForgeFlow S.L.
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo noupdate="1">
<record id="group_stock_inventory_validation" model="res.groups">
<field name="name">Validate Inventory Adjustments Under Threshold</field>
<field name="category_id" ref="base.module_category_usability" />
</record>
<record id="group_stock_inventory_validation_always" model="res.groups">
<field name="name">Validate All inventory Adjustments</field>
<field name="category_id" ref="base.module_category_usability" />
<field
name="implied_ids"
eval="[(4, ref('stock_inventory_discrepancy.group_stock_inventory_validation'))]"
/>
<field name="users" eval="[(4, ref('base.user_root'))]" />
</record>
<record model="res.groups" id="stock.group_stock_user">
<field
name="implied_ids"
eval="[(4, ref('stock_inventory_discrepancy.group_stock_inventory_validation'))]"
/>
</record>
<record model="res.groups" id="stock.group_stock_manager">
<field
name="implied_ids"
eval="[(4, ref('stock_inventory_discrepancy.group_stock_inventory_validation_always'))]"
/>
</record>
</odoo>

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@@ -0,0 +1,452 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils 0.15.1: http://docutils.sourceforge.net/" />
<title>Stock Inventory Discrepancy</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: grey; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="stock-inventory-discrepancy">
<h1 class="title">Stock Inventory Discrepancy</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/stock-logistics-warehouse/tree/13.0/stock_inventory_discrepancy"><img alt="OCA/stock-logistics-warehouse" src="https://img.shields.io/badge/github-OCA%2Fstock--logistics--warehouse-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/stock-logistics-warehouse-13-0/stock-logistics-warehouse-13-0-stock_inventory_discrepancy"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/153/13.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
<p>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.</p>
<p>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.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#configuration" id="id1">Configuration</a></li>
<li><a class="reference internal" href="#usage" id="id2">Usage</a></li>
<li><a class="reference internal" href="#bug-tracker" id="id3">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="id4">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="id5">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="id6">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="id7">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="configuration">
<h1><a class="toc-backref" href="#id1">Configuration</a></h1>
<ol class="arabic simple">
<li>Go to “Inventory &gt; Warehouse Management” &gt; Warehouses” or to “Inventory &gt;
Warehouse Management” &gt; Locations”.</li>
<li>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.</li>
</ol>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#id2">Usage</a></h1>
<p>If you configured a “Maximum Discrepancy Rate Threshold”.</p>
<ol class="arabic simple">
<li>When validating an Inventory Adjustment if some line exceed the Discrepancy
Threshold the system will set the inventorys state to Pending to Approve
and show the quantity of lines that exceed the threshold.</li>
<li>If both WH and location thresholds are configured, the location one has
preference.</li>
<li>The user with “Validate All inventory Adjustments” rights can force the
validation of an inventory pending to approve.</li>
</ol>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#id3">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/stock-logistics-warehouse/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/stock-logistics-warehouse/issues/new?body=module:%20stock_inventory_discrepancy%0Aversion:%2013.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#id4">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#id5">Authors</a></h2>
<ul class="simple">
<li>ForgeFlow</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#id6">Contributors</a></h2>
<ul class="simple">
<li>Lois Rilo &lt;<a class="reference external" href="mailto:lois.rilo&#64;forgeflow.com">lois.rilo&#64;forgeflow.com</a>&gt;</li>
<li>Andreas Dian Sukarno Putro &lt;<a class="reference external" href="mailto:andreasdian777&#64;gmail.com">andreasdian777&#64;gmail.com</a>&gt;</li>
<li>Bhavesh Odedra &lt;<a class="reference external" href="mailto:bodedra&#64;opensourceintegrators.com">bodedra&#64;opensourceintegrators.com</a>&gt;</li>
<li>Héctor Villarreal &lt;<a class="reference external" href="mailto:hector.villarreal&#64;forgeflow.com">hector.villarreal&#64;forgeflow.com</a>&gt;</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#id7">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
<p>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.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/stock-logistics-warehouse/tree/13.0/stock_inventory_discrepancy">OCA/stock-logistics-warehouse</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,42 @@
odoo.define("stock_inventory_discrepancy.InventoryValidationController", function (
require
) {
"use strict";
var core = require("web.core");
var InventoryValidationController = require("stock.InventoryValidationController");
var _t = core._t;
InventoryValidationController.include({
/**
* @override
* @see displayNotification
*/
do_notify: function (title, message, sticky, className) {
var self = this;
if (this.modelName === "stock.inventory.line") {
this._rpc({
model: "stock.inventory",
method: "read",
args: [this.inventory_id, ["state"]],
})
.then(function (res) {
if (res[0].state === "pending") {
title = _t("Pending to Approve");
message = _t("The inventory needs to be approved");
}
})
.finally(function () {
return self.displayNotification({
type: "warning",
title: title,
message: message,
sticky: sticky,
className: className,
});
});
}
},
});
});

View File

@@ -0,0 +1,3 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from . import test_inventory_discrepancy

View File

@@ -0,0 +1,283 @@
# 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
class TestInventoryDiscrepancy(TransactionCase):
def setUp(self, *args, **kwargs):
super(TestInventoryDiscrepancy, self).setUp(*args, **kwargs)
self.obj_wh = self.env["stock.warehouse"]
self.obj_location = self.env["stock.location"]
self.obj_inventory = self.env["stock.inventory"]
self.obj_product = self.env["product.product"]
self.obj_warehouse = self.env["stock.warehouse"]
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": 0.1}
)
self.test_wh = self.obj_warehouse.create(
{"name": "Test WH", "code": "T", "discrepancy_threshold": 0.2}
)
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")
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])],
}
)
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])],
}
)
starting_inv = self.obj_inventory.create(
{
"name": "Starting inventory",
"line_ids": [
(
0,
0,
{
"product_id": self.product1.id,
"product_uom_id": self.env.ref("uom.product_uom_unit").id,
"product_qty": 2.0,
"location_id": self.test_loc.id,
},
),
(
0,
0,
{
"product_id": self.product2.id,
"product_uom_id": self.env.ref("uom.product_uom_unit").id,
"product_qty": 4.0,
"location_id": self.test_loc.id,
},
),
],
}
)
starting_inv.action_force_done()
def test_compute_discrepancy(self):
"""Tests if the discrepancy is correctly computed."""
inventory = self.obj_inventory.create(
{
"name": "Test Discrepancy Computation",
"location_ids": [(4, self.test_loc.id)],
"line_ids": [
(
0,
0,
{
"product_id": self.product1.id,
"product_uom_id": self.env.ref("uom.product_uom_unit").id,
"product_qty": 3.0,
"location_id": self.test_loc.id,
},
),
(
0,
0,
{
"product_id": self.product2.id,
"product_uom_id": self.env.ref("uom.product_uom_unit").id,
"product_qty": 3.0,
"location_id": self.test_loc.id,
},
),
],
}
)
self.assertEqual(
inventory.line_ids[0].discrepancy_qty,
1.0,
"Wrong Discrepancy qty computation.",
)
self.assertEqual(
inventory.line_ids[1].discrepancy_qty,
-1.0,
"Wrong Discrepancy qty computation.",
)
def test_discrepancy_validation(self):
"""Tests the new workflow"""
inventory = self.obj_inventory.create(
{
"name": "Test Forcing Validation Method",
"location_ids": [(4, self.test_loc.id)],
"line_ids": [
(
0,
0,
{
"product_id": self.product1.id,
"product_uom_id": self.env.ref("uom.product_uom_unit").id,
"product_qty": 3.0,
"location_id": self.test_loc.id,
},
)
],
}
)
self.assertEqual(
inventory.state, "draft", "Testing Inventory wrongly configurated"
)
self.assertEqual(
inventory.line_ids.discrepancy_threshold,
0.1,
"Threshold wrongly computed in Inventory Line.",
)
inventory.with_user(self.user).action_start()
inventory.with_user(self.user).action_validate()
self.assertTrue(inventory.line_ids.has_over_discrepancy)
self.assertEqual(
inventory.over_discrepancy_line_count,
1,
"Computation of over-discrepancies failed.",
)
self.assertEqual(
inventory.state,
"pending",
"Inventory Adjustment not changing to Pending to " "Approve.",
)
inventory.with_user(self.manager).action_force_done()
self.assertEqual(
inventory.state,
"done",
"Forcing the validation of the inventory adjustment "
"not working properly.",
)
def test_discrepancy_validation_always(self):
"""Tests the new workflow"""
inventory = self.obj_inventory.create(
{
"name": "Test Forcing Validation Method",
"location_ids": [(4, self.test_loc.id)],
"line_ids": [
(
0,
0,
{
"product_id": self.product1.id,
"product_uom_id": self.env.ref("uom.product_uom_unit").id,
"product_qty": 3.0,
"location_id": self.test_loc.id,
},
)
],
}
)
self.assertEqual(
inventory.state, "draft", "Testing Inventory wrongly configurated"
)
self.assertEqual(
inventory.line_ids.discrepancy_threshold,
0.1,
"Threshold wrongly computed in Inventory Line.",
)
inventory.with_user(self.user_2).action_start()
# User with no privileges can't validate a Inventory Adjustment.
with self.assertRaises(UserError):
inventory.with_user(self.no_user).action_validate()
inventory.with_user(self.user_2).action_validate()
self.assertEqual(
inventory.over_discrepancy_line_count,
1,
"Computation of over-discrepancies failed.",
)
self.assertEqual(
inventory.state,
"done",
"Stock Managers belongs to group Validate All inventory Adjustments",
)
def test_warehouse_threshold(self):
"""Tests the behaviour if the threshold is set on the WH."""
inventory = self.obj_inventory.create(
{
"name": "Test Threshold Defined in WH",
"location_ids": [(4, self.test_wh.view_location_id.id)],
"line_ids": [
(
0,
0,
{
"product_id": self.product1.id,
"product_uom_id": self.env.ref("uom.product_uom_unit").id,
"product_qty": 3.0,
"location_id": self.test_wh.lot_stock_id.id,
},
)
],
}
)
self.assertEqual(
inventory.line_ids.discrepancy_threshold,
0.2,
"Threshold wrongly computed in Inventory Line.",
)
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",
)

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<template
id="stock_assets_backend"
name="stock_inventory assets"
inherit_id="web.assets_backend"
>
<xpath expr="." position="inside">
<script
type="text/javascript"
src="/stock_inventory_discrepancy/static/src/js/inventory_validate_button_controller.js"
/>
</xpath>
</template>
</odoo>

View File

@@ -0,0 +1,71 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2017-2020 ForgeFlow S.L.
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>
<record id="view_inventory_form" model="ir.ui.view">
<field name="name">Inventory form view - discrepancy extension </field>
<field name="model">stock.inventory</field>
<field name="inherit_id" ref="stock.view_inventory_form" />
<field name="arch" type="xml">
<field name="state" position="attributes">
<attribute name="statusbar_visible">
draft,confirm,pending,done
</attribute>
<attribute name="statusbar_colors">
{"pending":"red"}
</attribute>
</field>
<xpath expr="//button[@name='action_validate']" position="attributes">
<attribute
name="groups"
>stock_inventory_discrepancy.group_stock_inventory_validation</attribute>
</xpath>
<xpath expr="//button[@name='action_validate']" position="after">
<button
name="action_force_done"
string="Force Validation"
type="object"
class="oe_highlight"
groups="stock_inventory_discrepancy.group_stock_inventory_validation_always"
attrs="{'invisible': ['|',('state', '!=', 'pending'),('over_discrepancy_line_count', '=', 0)]}"
/>
</xpath>
<xpath
expr="//button[@name='action_open_inventory_lines']"
position="attributes"
>
<attribute name="states">pending,confirm</attribute>
</xpath>
<xpath
expr="//button[@name='action_cancel_draft'][2]"
position="attributes"
>
<attribute name="states">pending,confirm</attribute>
</xpath>
<field name="company_id" position="before">
<field
name="over_discrepancy_line_count"
attrs="{'invisible': [('state', '!=', 'pending')]}"
/>
</field>
</field>
</record>
<record id="stock_inventory_line_tree2" model="ir.ui.view">
<field name="name">stock.inventory.line.tree2</field>
<field name="model">stock.inventory.line</field>
<field name="inherit_id" ref="stock.stock_inventory_line_tree" />
<field name="arch" type="xml">
<field name="product_qty" position="after">
<field name="discrepancy_qty" />
<field name="discrepancy_percent" />
<field name="discrepancy_threshold" />
<field name="has_over_discrepancy" invisible="1" />
</field>
<xpath expr="//tree" position="attributes">
<attribute
name="decoration-danger"
>theoretical_qty &lt; 0 or has_over_discrepancy</attribute>
</xpath>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2017-2020 ForgeFlow S.L.
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>
<record id="view_location_form" model="ir.ui.view">
<field name="name">Location form - cycle count extension</field>
<field name="model">stock.location</field>
<field name="inherit_id" ref="stock.view_location_form" />
<field name="arch" type="xml">
<field name="return_location" position="after">
<label for="discrepancy_threshold" />
<div>
<field name="discrepancy_threshold" class="oe_inline" /> %
</div>
<field name="propagate_discrepancy_threshold" />
</field>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2017-2020 ForgeFlow S.L.
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>
<record id="view_warehouse" model="ir.ui.view">
<field name="name">Warehouse form - Inventory Discrepancy
extension</field>
<field name="model">stock.warehouse</field>
<field name="inherit_id" ref="stock.view_warehouse" />
<field name="arch" type="xml">
<field name="partner_id" position="after">
<label for="discrepancy_threshold" />
<div>
<field name="discrepancy_threshold" class="oe_inline" /> %
</div>
</field>
</field>
</record>
</odoo>