Odoo 在多公司模式下搜索产品

Odoo 在多公司模式下搜索产品,odoo,odoo-10,Odoo,Odoo 10,受影响的版本: Odoo 10 CE与多家公司合作 说明: 我正在尝试将随机字母数字值添加到产品的默认\u代码中 它在一家公司Odoo中运行良好,但在多家公司的实例中却不起作用 这是我的函数,我正在调用一个每晚运行的cron @api.multi def affect_sku(self): _logger.info("running affect_sku") Product = self.env['product.product'] _logger.info("Model

受影响的版本: Odoo 10 CE与多家公司合作

说明: 我正在尝试将随机字母数字值添加到产品的默认\u代码中
它在一家公司Odoo中运行良好,但在多家公司的实例中却不起作用

这是我的函数,我正在调用一个每晚运行的cron

@api.multi
def affect_sku(self):
    _logger.info("running affect_sku")
    Product = self.env['product.product']
    _logger.info("Model ::: %s" % Product)
    product_ids = Product.search([('active', '=', True), ('default_code', '=', '')])
    _logger.info("Les Produits ::: %s " % product_ids)
    if product_ids:
        for product_id in product_ids:
            _logger.info("Product id : %s" % product_id)
            product = Product.browse(product_id.id)
            _logger.info("Old Product default code : %s" % product.default_code)
            x = self.randomStringDigits(13)
            y = self.env['product.product'].search([('active', '=', True), ('default_code', '=', x)])
            _logger.info("y = %s" % y)
            while y :
                x = self.randomStringDigits(13)
                y = self.env['product.product'].search([('active', '=', True), ('default_code', '=', x)])
            product.default_code = x
            _logger.info("SKU de %s : %s" % (product.id, product.default_code))

使用
SUPER USER
,因为他有权查看所有产品,您可以稍微增强代码:

#并使用cron模型
@api.model
def影响_sku(自身):
_logger.info(“运行影响\u sku”)
Product=self.env['Product.Product'].sudo()#使用超级用户JU跳过任何访问权限
_logger.info(“型号::%s”%Product)
#无需传递活动消息,默认情况下已传递
product_id=product.search(['|',('default_code','=','',''),('default_code','=',False)])
_logger.info(“Les产品::%s”%product\u id)
#不需要检查,直接循环即可
对于产品标识中的产品:
_logger.info(“产品id:%s”%Product)
#不需要浏览,一切都准备好了记录集
_logger.info(“旧产品默认代码:%s”%Product.default\u代码)
尽管如此:
random_code=self.randomStringDigits(13)
#无需通过active并使用search\u count
如果不是self.env['product.product'].search_count([('default_code','=',random_code)]):
打破
product.default\u code=随机\u码
_logger.info(“SKU de%s:%s”%(product.id,product.default_代码))

使用
超级用户
,因为他有权查看所有产品,您可以稍微增强代码:

#并使用cron模型
@api.model
def影响_sku(自身):
_logger.info(“运行影响\u sku”)
Product=self.env['Product.Product'].sudo()#使用超级用户JU跳过任何访问权限
_logger.info(“型号::%s”%Product)
#无需传递活动消息,默认情况下已传递
product_id=product.search(['|',('default_code','=','',''),('default_code','=',False)])
_logger.info(“Les产品::%s”%product\u id)
#不需要检查,直接循环即可
对于产品标识中的产品:
_logger.info(“产品id:%s”%Product)
#不需要浏览,一切都准备好了记录集
_logger.info(“旧产品默认代码:%s”%Product.default\u代码)
尽管如此:
random_code=self.randomStringDigits(13)
#无需通过active并使用search\u count
如果不是self.env['product.product'].search_count([('default_code','=',random_code)]):
打破
product.default\u code=随机\u码
_logger.info(“SKU de%s:%s”%(product.id,product.default_代码))

您能描述一下您遇到的确切问题吗?您是否收到任何错误消息?或者你的代码停在什么地方了?当我在Multicompany上使用cron时,Product.seach()返回一个空结果。你能描述一下你遇到的确切问题吗?您是否收到任何错误消息?或者你的代码停在什么地方了吗?当我在multicompanyi上使用cron时,Product.seach()返回一个空结果。我按照你说的做了尝试,结果仍然是空的odoo.addons.custom\u products.models.models:running impact\u sku odoo.addons.custom\u products.models:Model::Product.Product()odoo.addons.custom_-products.models.models:Les-Produits:::product.product()@MartianX尝试将域更改为:
[''''|',('default_-code','=','','')('default_-code','=',False)
要处理空值,不仅要处理空字符串,而且不要使用
x
作为变量名,很抱歉在
搜索\u计数
域中出现语法错误。请在尝试此操作时通知我,我已按照您的说明进行了尝试,结果仍然为空odoo.addons.custom\u products.models.models:运行impact\u sku odoo.addons.custom\u products.models.models:Model:::product.product()odoo.addons.custom_products.models.models:Les Produits:::product.product()@MartianX尝试将域更改为:
[''.',('default_code','=','','')('default_code','=',False)
要处理空值,不仅要处理空字符串,而且不要使用
x
作为变量名,很抱歉
搜索\u计数
域中出现语法错误。尝试此操作时请告诉我