From 28ce11b21600d723b4ea51385789cc512b6125dd Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Sun, 26 Sep 2021 20:10:58 +0200 Subject: [PATCH] stock.inventory improvement --- stock_usability/models/stock_inventory.py | 29 ++++++++++++++++++++++- stock_usability/views/stock_inventory.xml | 29 ++++++++++++++++++++++- 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/stock_usability/models/stock_inventory.py b/stock_usability/models/stock_inventory.py index 47e94ed..384e974 100644 --- a/stock_usability/models/stock_inventory.py +++ b/stock_usability/models/stock_inventory.py @@ -2,10 +2,37 @@ # @author: Alexis de Lattre # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from odoo import api, fields, models +from odoo import api, fields, models, _ +from odoo.tools import float_compare, float_is_zero class StockInventoryLine(models.Model): _inherit = 'stock.inventory.line' product_barcode = fields.Char(related='product_id.barcode', string="Product Barcode") + difference_qty = fields.Float(search="_search_difference_qty_usability") + + def _search_difference_qty_usability(self, operator, value): + # Inspired by the method _search_difference_qty() from the + # official stock module + # So a part of this code is copyright Odoo SA under LGPL licence + if not self.env.context.get('default_inventory_id'): + raise NotImplementedError(_('Unsupported search on %s outside of an Inventory Adjustment', 'difference_qty')) + lines = self.search([('inventory_id', '=', self.env.context.get('default_inventory_id'))]) + line_ids = [] + for line in lines: + if operator == '=': + if float_is_zero(line.difference_qty, line.product_id.uom_id.rounding): + line_ids.append(line.id) + elif operator == '!=': + if not float_is_zero(line.difference_qty, line.product_id.uom_id.rounding): + line_ids.append(line.id) + elif operator == '>': + if float_compare(line.difference_qty, 0, line.product_id.uom_id.rounding) > 0: + line_ids.append(line.id) + elif operator == '<': + if float_compare(line.difference_qty, 0, line.product_id.uom_id.rounding) < 0: + line_ids.append(line.id) + else: + raise NotImplementedError() + return [('id', 'in', line_ids)] diff --git a/stock_usability/views/stock_inventory.xml b/stock_usability/views/stock_inventory.xml index 1f4d24e..2fa2b7c 100644 --- a/stock_usability/views/stock_inventory.xml +++ b/stock_usability/views/stock_inventory.xml @@ -6,7 +6,18 @@ --> - + + + usability.stock.inventory.form + stock.inventory + + + + + + usability.stock.inventory.line.tree stock.inventory.line @@ -30,4 +41,20 @@ + + usability.stock.inventory.line.search + stock.inventory.line + + + + + + + + + +