[FIX] stock_account_valuation_report: search discrepancies should take into account decimal precision

This commit is contained in:
AaronHForgeFlow
2024-09-13 15:00:51 +02:00
parent d4d84fa1f3
commit 3e0bcbba91

View File

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