mirror of
https://github.com/OCA/stock-logistics-warehouse.git
synced 2025-01-21 14:27:28 +02:00
[IMP] stock_inventory_discrepancy: centralize logic for over discrepancy assessment and ease extension.
This commit is contained in:
committed by
Carolina Fernandez
parent
c035a58025
commit
6088ede5a8
@@ -5,7 +5,7 @@
|
||||
"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": "13.0.1.0.0",
|
||||
"version": "13.0.1.1.0",
|
||||
"author": "ForgeFlow, Odoo Community Association (OCA)",
|
||||
"website": "https://github.com/OCA/stock-logistics-warehouse",
|
||||
"category": "Warehouse",
|
||||
|
||||
@@ -34,6 +34,11 @@ msgstr ""
|
||||
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"
|
||||
|
||||
@@ -33,6 +33,11 @@ msgstr ""
|
||||
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"
|
||||
|
||||
@@ -33,6 +33,11 @@ msgstr ""
|
||||
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"
|
||||
|
||||
@@ -35,6 +35,11 @@ msgstr ""
|
||||
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"
|
||||
|
||||
@@ -33,6 +33,11 @@ msgstr ""
|
||||
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"
|
||||
|
||||
@@ -34,6 +34,11 @@ msgstr ""
|
||||
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"
|
||||
|
||||
@@ -34,6 +34,11 @@ msgstr ""
|
||||
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"
|
||||
|
||||
@@ -34,6 +34,11 @@ msgstr ""
|
||||
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"
|
||||
|
||||
@@ -33,6 +33,11 @@ msgstr ""
|
||||
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"
|
||||
|
||||
@@ -34,6 +34,11 @@ msgstr ""
|
||||
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"
|
||||
|
||||
@@ -35,6 +35,11 @@ msgstr ""
|
||||
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"
|
||||
|
||||
@@ -34,6 +34,11 @@ msgstr ""
|
||||
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"
|
||||
|
||||
@@ -28,6 +28,11 @@ msgstr ""
|
||||
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"
|
||||
|
||||
@@ -34,6 +34,11 @@ msgstr ""
|
||||
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"
|
||||
|
||||
@@ -31,6 +31,11 @@ msgstr "差异百分比(%)"
|
||||
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"
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
# Copyright 2017-2020 ForgeFlow S.L.
|
||||
# (http://www.forgeflow.com)
|
||||
# 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
|
||||
@@ -33,7 +32,7 @@ class StockInventory(models.Model):
|
||||
def _compute_over_discrepancy_line_count(self):
|
||||
for inventory in self:
|
||||
lines = inventory.line_ids.filtered(
|
||||
lambda line: line.discrepancy_percent > line.discrepancy_threshold
|
||||
lambda line: line._has_over_discrepancy()
|
||||
)
|
||||
inventory.over_discrepancy_line_count = len(lines)
|
||||
|
||||
@@ -57,9 +56,7 @@ class StockInventory(models.Model):
|
||||
|
||||
def _action_done(self):
|
||||
for inventory in self:
|
||||
if inventory.over_discrepancy_line_count and inventory.line_ids.filtered(
|
||||
lambda t: t.discrepancy_threshold > 0.0
|
||||
):
|
||||
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(
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
# Copyright 2017-2020 ForgeFlow S.L.
|
||||
# (http://www.forgeflow.com)
|
||||
# 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
|
||||
@@ -29,6 +28,7 @@ class StockInventoryLine(models.Model):
|
||||
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):
|
||||
@@ -52,3 +52,10 @@ class StockInventoryLine(models.Model):
|
||||
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
|
||||
|
||||
@@ -173,6 +173,7 @@ class TestInventoryDiscrepancy(TransactionCase):
|
||||
)
|
||||
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,
|
||||
|
||||
@@ -59,11 +59,12 @@
|
||||
<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 < 0 or discrepancy_percent > discrepancy_threshold or "product_qty != theoretical_qty"</attribute>
|
||||
>theoretical_qty < 0 or has_over_discrepancy</attribute>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
Reference in New Issue
Block a user