gpt4 book ai didi

python - 如何根据 sale.order 中选择的价目表对 sale.order.line 中的 product_id 应用域过滤器?

转载 作者:太空宇宙 更新时间:2023-11-04 04:46:53 27 4
gpt4 key购买 nike

我在 class sale_order_line 中定义了 product_id 如下:

class sale_order_line(osv.osv):
_inherit = 'sale.order.line'

def _get_product_ids(self):

return [('sale_ok', '=', True), ('state', 'in', ['sellable', 'custom']), ('id', '=', )]

_columns = {
'product_id': fields.many2one('product.product', 'Product',
domain=_get_product_ids,
change_default=True),
}

sale.order 的表单 View 包含以下代码段,其中显示了 product_id:

 <field name="product_id"
context="{'partner_id':parent.partner_id, 'quantity':product_uom_qty, 'pricelist':parent.pricelist_id, 'shop':parent.shop_id, 'uom':product_uom}"
groups="base.group_user"
on_change="product_id_change(parent.pricelist_id, product_id, product_uom_qty, False, product_uos_qty, False, name, parent.partner_id, False, True, parent.date_order, False, parent.fiscal_position, False, context)"/>

最初在 Sale Orders(model: sale.order) 中,我选择 pricelist_id 字段。然后我在订单行部分单击“添加项目”以添加销售订单行。在sale.order.line的表单 View 中,我只需要根据我之前选择的pricelist_id显示product_id中的产品。

product.product 类中,pricelist_id 是一个“虚拟”字段。所以我不知道如何添加域过滤器,因为它总是返回空值。

请问如何在 product_id many2one 字段上应用硬过滤器以仅显示基于父类中选定的 pricelist_id 的产品?

最佳答案

很抱歉,我无法完全理解您的问题。你需要在sale.order.line的product_id字段中添加一个硬域,基于sale.order中设置的pricelist_id值。我会引用你的话:

I need to only show the products in the 'product_id' based on the pricelist_id I selected earlier

据我所知,在 Openerp 7(和下一个版本)上,您在价目表版本项目记录中有一个 product_id 字段:这意味着您必须通过此类关系 product.pricelistproduct.pricelist.versionproduct.pricelist.item
考虑到每个价目表可能有不同的版本,每个版本都有不同的项目。

我是对还是错了?管理所有这些困惑对我来说听起来有点疯狂 :)(除非您直接在 product.pricelist 中创建一些功能字段)。你能更好地解释一下吗?

除此之外,在我看来,您可以使用 lambda 函数管理字段声明的硬域。这可以让您有机会构建更复杂的域。试一试:

class sale_order_line(osv.osv):
_inherit = 'sale.order.line'

def _get_product_ids(self, cr, uid, ids, context=None):
return [(...), (...)]

_columns = {
'product_id': fields.many2one('product.product', 'Product',
#domain=lambda self: self._get_product_ids(),
domain=lambda self: self._get_product_ids(self._cr, self._uid, [], self._context),
change_default=True
),
}

关于python - 如何根据 sale.order 中选择的价目表对 sale.order.line 中的 product_id 应用域过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49370966/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com