diff --git a/stock_inventory_preparation_filter/models/stock_inventory.py b/stock_inventory_preparation_filter/models/stock_inventory.py index 2c8c5d0e0..00e0d147b 100644 --- a/stock_inventory_preparation_filter/models/stock_inventory.py +++ b/stock_inventory_preparation_filter/models/stock_inventory.py @@ -16,23 +16,19 @@ # ############################################################################## -from openerp.osv import orm, fields -from openerp.tools.translate import _ +from openerp import models, fields, api, _ -class StockInventoryEmptyLines(orm.Model): +class StockInventoryEmptyLines(models.Model): _name = 'stock.inventory.line.empty' - _columns = { - 'product_code': fields.char('Product Code', size=64, required=True), - 'product_qty': fields.float('Quantity', required=True), - 'inventory_id': fields.many2one('stock.inventory', 'Inventory', - required=True, ondelete="cascade"), - } - - _defaults = { - 'product_qty': 1.0, - } + product_code = fields.Char( + string='Product Code', size=64, required=True) + product_qty = fields.Float( + string='Quantity', required=True, default=1.0) + inventory_id = fields.Many2one( + comodel_name='stock.inventory', string='Inventory', + required=True, ondelete="cascade") class StockInventoryFake(object): @@ -45,17 +41,17 @@ class StockInventoryFake(object): self.package_id = inventory.package_id -class StockInventory(orm.Model): +class StockInventory(models.Model): _inherit = 'stock.inventory' - def _get_available_filters(self, cr, uid, context=None): - """This function will return the list of filter allowed according to + @api.model + def _get_available_filters(self): + """This function will return the list of filters allowed according to the options checked in 'Settings/Warehouse'. :return: list of tuple """ - res_filters = super(StockInventory, self)._get_available_filters( - cr, uid, context=context) + res_filters = super(StockInventory, self)._get_available_filters() res_filters.append(('categories', _('Selected Categories'))) res_filters.append(('products', _('Selected Products'))) for res_filter in res_filters: @@ -64,82 +60,74 @@ class StockInventory(orm.Model): res_filters.append(('empty', _('Empty list'))) return res_filters - _columns = { - 'filter': fields.selection(_get_available_filters, 'Selection Filter', - required=True), - 'categ_ids': fields.many2many('product.category', - 'rel_inventories_categories', - 'inventory_id', 'category_id', - 'Categories'), - 'product_ids': fields.many2many('product.product', - 'rel_inventories_products', - 'inventory_id', 'product_id', - 'Products'), - 'lot_ids': fields.many2many('stock.production.lot', - 'rel_inventories_lots', 'inventory_id', - 'lot_id', 'Lots'), - 'empty_line_ids': fields.one2many('stock.inventory.line.empty', - 'inventory_id', 'Capture Lines'), - } + filter = fields.Selection( + selection=_get_available_filters, string='Selection Filter', + required=True) + categ_ids = fields.Many2many( + comodel_name='product.category', relation='rel_inventories_categories', + column1='inventory_id', column2='category_id', string='Categories') + product_ids = fields.Many2many( + comodel_name='product.product', relation='rel_inventories_products', + column1='inventory_id', column2='product_id', string='Products') + lot_ids = fields.Many2many( + comodel_name='stock.production.lot', relation='rel_inventories_lots', + column1='inventory_id', column2='lot_id', string='Lots') + empty_line_ids = fields.One2many( + comodel_name='stock.inventory.line.empty', inverse_name='inventory_id', + string='Capture Lines') - def _get_inventory_lines(self, cr, uid, inventory, context=None): + @api.model + def _get_inventory_lines(self, inventory): vals = [] - product_tmpl_obj = self.pool['product.template'] - product_obj = self.pool['product.product'] + product_tmpl_obj = self.env['product.template'] + product_obj = self.env['product.product'] if inventory.filter in ('categories', 'products'): - product_ids = [] + products = product_obj if inventory.filter == 'categories': - product_tmpl_ids = product_tmpl_obj.search( - cr, uid, [('categ_id', 'in', inventory.categ_ids.ids)], - context=context) - product_ids = product_obj.search( - cr, uid, [('product_tmpl_id', 'in', product_tmpl_ids)], - context=context) + product_tmpls = product_tmpl_obj.search( + [('categ_id', 'in', inventory.categ_ids.ids)]) + products = product_obj.search( + [('product_tmpl_id', 'in', product_tmpls.ids)]) elif inventory.filter == 'products': - product_ids = inventory.product_ids.ids - for product in product_obj.browse(cr, uid, product_ids, - context=context): + products = inventory.product_ids + for product in products: fake_inventory = StockInventoryFake(inventory, product=product) vals += super(StockInventory, self)._get_inventory_lines( - cr, uid, fake_inventory, context=context) + fake_inventory) elif inventory.filter == 'lots': for lot in inventory.lot_ids: fake_inventory = StockInventoryFake(inventory, lot=lot) vals += super(StockInventory, self)._get_inventory_lines( - cr, uid, fake_inventory, context=context) + fake_inventory) elif inventory.filter == 'empty': - values = [] tmp_lines = {} - empty_line_obj = self.pool['stock.inventory.line.empty'] + empty_line_obj = self.env['stock.inventory.line.empty'] for line in inventory.empty_line_ids: if line.product_code in tmp_lines: tmp_lines[line.product_code] += line.product_qty else: tmp_lines[line.product_code] = line.product_qty - empty_line_obj.unlink(cr, uid, inventory.empty_line_ids.ids, - context=context) + inventory.empty_line_ids.unlink() for product_code in tmp_lines.keys(): - product_ids = product_obj.search( - cr, uid, [('default_code', '=', product_code)], - context=context) - if product_ids: - product = product_obj.browse(cr, uid, product_ids[0], - context=context) - fake_inventory = StockInventoryFake(inventory, - product=product) + products = product_obj.search( + [('default_code', '=', product_code)]) + if products: + product = products[0] + fake_inventory = StockInventoryFake( + inventory, product=product) values = super(StockInventory, self)._get_inventory_lines( - cr, uid, fake_inventory, context=context) + fake_inventory) if values: values[0]['product_qty'] = tmp_lines[product_code] else: empty_line_obj.create( - cr, uid, { + { 'product_code': product_code, 'product_qty': tmp_lines[product_code], 'inventory_id': inventory.id, - }, context=context) + }) vals += values else: vals = super(StockInventory, self)._get_inventory_lines( - cr, uid, inventory, context=context) + inventory) return vals diff --git a/stock_inventory_preparation_filter/views/stock_inventory_view.xml b/stock_inventory_preparation_filter/views/stock_inventory_view.xml index fade33342..cb9109413 100644 --- a/stock_inventory_preparation_filter/views/stock_inventory_view.xml +++ b/stock_inventory_preparation_filter/views/stock_inventory_view.xml @@ -15,12 +15,15 @@ - - - + + +