def search(self, cr, user, args, offset=0, limit=None, order=None, context=None, count=False): #deal the 'date' datetime field query new_args = deal_args(self,args) for arg in new_args: #add the category improving if arg[0] == 'categ_id' and arg[1] == '=' and isinstance(arg[2], (int,long)): idx = new_args.index(arg) new_args.remove(arg) new_args.insert(idx, [arg[0],'child_of',arg[2]]) #add the multi part# query if arg[0] == 'default_code' and arg[1] == 'in' and isinstance(arg[2], type(u'aaa')): part_nos = [] for part_no in arg[2].split(','): part_nos.append(part_no.strip()) idx = new_args.index(arg) new_args.remove(arg) new_args.insert(idx, [arg[0],arg[1],part_nos]) #get the search result ids = super(product_product,self).search(cr, user, new_args, offset, limit, order, context, count) #add the available restriction if context and context.get('inv_warn_restrict'): ids = super(product_product,self).search(cr, user, new_args, offset, None, order, context, count) qtys = self.read(cr,user,ids,['qty_available','safe_qty'],context=context) # list: [{'product_tmpl_id': 10, 'virtual_available': -255.0, 'id': 10}, {'product_tmpl_id': 26, 'virtual_available': 0.0, 'id': 26}, {'product_tmpl_id': 35, 'virtual_available': 600.0, 'id': 35}] new_ids = [] for qty in qtys: if qty['qty_available'] < qty['safe_qty']: new_ids.append(qty['id']) ids = super(product_product,self).search(cr, user, [('id','in',new_ids)], offset, limit, order, context, count) return ids
def search(self, cr, user, args, offset=0, limit=None, order=None, context=None, count=False): #deal the 'date' datetime field query new_args = deal_args(self, args) for arg in new_args: #add the category improving if arg[0] == 'categ_id' and arg[1] == '=' and isinstance( arg[2], (int, long)): idx = new_args.index(arg) new_args.remove(arg) new_args.insert(idx, [arg[0], 'child_of', arg[2]]) #add the multi part# query if arg[0] == 'default_code' and arg[1] == 'in' and isinstance( arg[2], type(u'aaa')): part_nos = [] for part_no in arg[2].split(','): part_nos.append(part_no.strip()) idx = new_args.index(arg) new_args.remove(arg) new_args.insert(idx, [arg[0], arg[1], part_nos]) #get the search result ids = super(product_product, self).search(cr, user, new_args, offset, limit, order, context, count) #add the available restriction if context and context.get('inv_warn_restrict'): ids = super(product_product, self).search(cr, user, new_args, offset, None, order, context, count) qtys = self.read(cr, user, ids, ['qty_available', 'safe_qty'], context=context) # list: [{'product_tmpl_id': 10, 'virtual_available': -255.0, 'id': 10}, {'product_tmpl_id': 26, 'virtual_available': 0.0, 'id': 26}, {'product_tmpl_id': 35, 'virtual_available': 600.0, 'id': 35}] new_ids = [] for qty in qtys: if qty['qty_available'] < qty['safe_qty']: new_ids.append(qty['id']) ids = super(product_product, self).search(cr, user, [('id', 'in', new_ids)], offset, limit, order, context, count) return ids
def search(self, cr, user, args, offset=0, limit=None, order=None, context=None, count=False): # deal the 'date' datetime field query new_args = deal_args(self, args) for arg in new_args: # add the category improving if arg[0] == 'categ_id' and arg[1] == '=' and isinstance(arg[2], (int, long)): idx = new_args.index(arg) new_args.remove(arg) new_args.insert(idx, [arg[0], 'child_of', arg[2]]) # add the multi part# query if arg[0] == 'default_code' and arg[1] == 'in' and isinstance(arg[2], type(u'aaa')): part_nos = [] for part_no in arg[2].split(','): part_nos.append(part_no.strip()) idx = new_args.index(arg) new_args.remove(arg) new_args.insert(idx, [arg[0], arg[1], part_nos]) # get the search result #+++ 04/08/2016 - HoangTK Add ability to search by using [id, in, many2many function field] for key in range(0,len(new_args)): domain = new_args[key] if isinstance(domain, list): if len(domain) == 3: if isinstance(domain[2], list) and domain[0] == 'id' and domain[1] == 'in': if len(domain[2]) == 1 and isinstance(domain[2][0],list): if domain[2][0][0] == 6 and domain[2][0][1] == False: new_args[key] = ['id', 'in', domain[2][0][2]] #--- 04/08/2016 - HoangTK Add ability to search by using [id, in, many2many function field] ids = super(product_product, self).search(cr, user, new_args, offset, limit, order, context, count) # add the available restriction if context and context.get('inv_warn_restrict'): ids = super(product_product, self).search(cr, user, new_args, offset, None, order, context, count) qtys = self.read(cr, user, ids, ['qty_available', 'safe_qty'], context=context) # list: [{'product_tmpl_id': 10, 'virtual_available': -255.0, 'id': 10}, {'product_tmpl_id': 26, 'virtual_available': 0.0, 'id': 26}, {'product_tmpl_id': 35, 'virtual_available': 600.0, 'id': 35}] new_ids = [] for qty in qtys: if qty['qty_available'] < qty['safe_qty']: new_ids.append(qty['id']) ids = super(product_product, self).search(cr, user, [('id', 'in', new_ids)], offset, limit, order, context, count) return ids
def search(self, cr, user, args, offset=0, limit=None, order=None, context=None, count=False): # deal the 'date' datetime field query new_args = deal_args(self, args) for arg in new_args: # add the category improving if arg[0] == 'categ_id' and arg[1] == '=' and isinstance( arg[2], (int, long)): idx = new_args.index(arg) new_args.remove(arg) new_args.insert(idx, [arg[0], 'child_of', arg[2]]) # add the multi part# query if arg[0] == 'default_code' and arg[1] == 'in' and isinstance( arg[2], type(u'aaa')): part_nos = [] for part_no in arg[2].split(','): part_nos.append(part_no.strip()) idx = new_args.index(arg) new_args.remove(arg) new_args.insert(idx, [arg[0], arg[1], part_nos]) # get the search result #+++ 04/08/2016 - HoangTK Add ability to search by using [id, in, many2many function field] for key in range(0, len(new_args)): domain = new_args[key] if isinstance(domain, list): if len(domain) == 3: if isinstance( domain[2], list) and domain[0] == 'id' and domain[1] == 'in': if len(domain[2]) == 1 and isinstance( domain[2][0], list): if domain[2][0][0] == 6 and domain[2][0][ 1] == False: new_args[key] = ['id', 'in', domain[2][0][2]] #--- 04/08/2016 - HoangTK Add ability to search by using [id, in, many2many function field] ids = super(product_product, self).search(cr, user, new_args, offset, limit, order, context, count) # add the available restriction if context and context.get('inv_warn_restrict'): ids = super(product_product, self).search(cr, user, new_args, offset, None, order, context, count) qtys = self.read(cr, user, ids, ['qty_available', 'safe_qty'], context=context) # list: [{'product_tmpl_id': 10, 'virtual_available': -255.0, 'id': 10}, {'product_tmpl_id': 26, 'virtual_available': 0.0, 'id': 26}, {'product_tmpl_id': 35, 'virtual_available': 600.0, 'id': 35}] new_ids = [] for qty in qtys: if qty['qty_available'] < qty['safe_qty']: new_ids.append(qty['id']) ids = super(product_product, self).search(cr, user, [('id', 'in', new_ids)], offset, limit, order, context, count) return ids