【问题标题】:Filter products available in pos in odoo 15过滤 odoo 15 中 pos 中可用的产品
【发布时间】:2022-12-03 19:30:26
【问题描述】:

pos 模块扩展 product.template 并添加 available_in_pos 字段。在选择产品的选择字段中,我想仅过滤 pos 中可用的产品。

我尝试了域[('product_tmpl_id.available_in_pos', '=', True)],但出现此错误

Unknown field "product.template.available_in_pos" in domain of <field name="product_id"> ([('product_tmpl_id.available_in_pos', '=', True)]))

任何人都知道我如何实现这一目标?

【问题讨论】:

  • ('product_template_id.available_in_pos', '=', True)试试这个
  • 不起作用:Unknown field "product.product.product_template_id" 这是有道理的,因为相关字段的名称是 product_tmpl_id
  • point_of_sale 已安装,但显然还必须将其作为依赖项添加到清单文件中。能够让它工作,无论如何谢谢
  • ('product_id.product_tmpl_id.available_in_pos', '=', True)这个呢

标签: odoo odoo-15


【解决方案1】:

产品有两种模型,第一种是product.template,它是产品的模板,第二种是product.product,它继承了product.template的所有数据结构,这种继承称为delegation inheritance

使用两个产品模型的原因之一是使用product variants,您会发现一个产品模板,但同一产品模板的许多产品变体存储在product.product

pos 模块扩展product.template 并添加available_in_pos 字段,因此由于delegation inheritance,该字段将在product.product 模型中可用。

因此,您可以使用此域 [('available_in_pos', '=', True)] 过滤 pos 中可用的产品

例子:

  1. 如果您使用的域带有属于的product_id字段 product.template型号,您可以只筛选可用的产品 在 pos 中使用以下域 [('available_in_pos', '=', True)]
    product_template = self.env['product.template'].search([('available_in_pos', '=', True)])
    
    1. 如果您使用的域带有属于的product_id字段 product.product型号,可以筛选所有产品(包括 产品变体)具有以下域[('available_in_pos', '=', True)],或者您可以使用此域[('product_tmpl_id.available_in_pos', '=', True)]使用他们的产品模板对其进行过滤
    product = self.env['product.product'].search([('available_in_pos', '=', True)])
    

    或者

    product = self.env['product.product'].search([('product_tmpl_id.available_in_pos', '=', True)])
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-29
    • 2019-02-12
    • 2020-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多