From 3e0bcbba91f8b7aece5e14f753b4ca5275067bdb Mon Sep 17 00:00:00 2001 From: AaronHForgeFlow Date: Fri, 13 Sep 2024 15:00:51 +0200 Subject: [PATCH 1/2] [FIX] stock_account_valuation_report: search discrepancies should take into account decimal precision --- .../models/product_product.py | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/stock_account_valuation_report/models/product_product.py b/stock_account_valuation_report/models/product_product.py index ab80125..a61abc6 100644 --- a/stock_account_valuation_report/models/product_product.py +++ b/stock_account_valuation_report/models/product_product.py @@ -4,6 +4,7 @@ from odoo import _, api, fields, models +from odoo.tools import float_compare class ProductProduct(models.Model): @@ -49,20 +50,26 @@ class ProductProduct(models.Model): @api.model def _search_qty_discrepancy(self, operator, value): products = self.env["product.product"].search([("type", "=", "product")]) - pp_list = [] - for pp in products: - if pp.qty_at_date != pp.account_qty_at_date: - pp_list.append(pp.id) - return [("id", "in", pp_list)] + dp = self.env["decimal.precision"].precision_get("Product Price") + products_with_discrepancy = products.filtered( + lambda pp: float_compare( + pp.qty_at_date, pp.account_qty_at_date, precision_digits=dp + ) + != 0 + ) + return [("id", "in", products_with_discrepancy.ids)] @api.model def _search_valuation_discrepancy(self, operator, value): products = self.env["product.product"].search([("type", "=", "product")]) - pp_list = [] - for pp in products: - if pp.stock_value != pp.account_value: - pp_list.append(pp.id) - return [("id", "in", pp_list)] + dp = self.env.ref("product.decimal_discount").precision_get("Discount") + products_with_discrepancy = products.filtered( + lambda pp: float_compare( + pp.stock_value, pp.account_value, precision_digits=dp + ) + != 0 + ) + return [("id", "in", products_with_discrepancy.ids)] def _compute_inventory_value(self): self.env["account.move.line"].check_access_rights("read") From d0c56d25194dc54d3fb338fb600195b297e15d0c Mon Sep 17 00:00:00 2001 From: AaronHForgeFlow Date: Fri, 8 Nov 2024 11:15:14 -0500 Subject: [PATCH 2/2] [FIX] stock_account_valuation_report: consider archived products when filtering products with discrepancies also add a filter to see all discrepancies at once --- .../models/product_product.py | 12 ++++++++++-- .../views/product_product_views.xml | 6 ++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/stock_account_valuation_report/models/product_product.py b/stock_account_valuation_report/models/product_product.py index a61abc6..8d4868f 100644 --- a/stock_account_valuation_report/models/product_product.py +++ b/stock_account_valuation_report/models/product_product.py @@ -49,7 +49,11 @@ class ProductProduct(models.Model): @api.model def _search_qty_discrepancy(self, operator, value): - products = self.env["product.product"].search([("type", "=", "product")]) + products = self.with_context(active_test=False).search( + [ + ("type", "=", "product"), + ] + ) dp = self.env["decimal.precision"].precision_get("Product Price") products_with_discrepancy = products.filtered( lambda pp: float_compare( @@ -61,7 +65,11 @@ class ProductProduct(models.Model): @api.model def _search_valuation_discrepancy(self, operator, value): - products = self.env["product.product"].search([("type", "=", "product")]) + products = self.with_context(active_test=False).search( + [ + ("type", "=", "product"), + ] + ) dp = self.env.ref("product.decimal_discount").precision_get("Discount") products_with_discrepancy = products.filtered( lambda pp: float_compare( diff --git a/stock_account_valuation_report/views/product_product_views.xml b/stock_account_valuation_report/views/product_product_views.xml index bd733b4..b977565 100644 --- a/stock_account_valuation_report/views/product_product_views.xml +++ b/stock_account_valuation_report/views/product_product_views.xml @@ -94,6 +94,12 @@ name="valuation_discrepancy_not_null" domain="[('valuation_discrepancy', '!=', 0.0), ('valuation', '=', 'real_time')]" /> + +