示例#1
0
	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
示例#2
0
    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
示例#3
0
    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
示例#4
0
    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