【问题标题】:Method to get product price for a given customer获取给定客户的产品价格的方法
【发布时间】:2018-04-06 02:54:17
【问题描述】:

我需要通过 XMLRPC 检索产品价格。

我正在使用产品价目表,因此可以为每个客户分配一个给定的价目表,该价目表根据类别等提供特定折扣。

我正在努力寻找可以使用哪种方法来检索给定数量的给定product_template id 的价格,如果这实际上可能的话。

到目前为止,我无法尝试任何特定方法,因为如果不实际创建销售订单,我无法确定如何实现。

【问题讨论】:

    标签: odoo xml-rpc odoo-10


    【解决方案1】:

    模块“产品”包含价目表机制。模型product.pricelist 有一个非常好的方法get_product_price(),它可以很容易地在服务器端使用,但不适用于外部/Web API。

    但是,如果您有可能编写一个小自定义模块,请执行此操作并覆盖模型 product.pricelist。添加使用此方法的可能性,例如:

    由于参数是 RecordSets 而不能使用的原始方法:

    def get_product_price(self, product, quantity, partner, date=False, uom_id=False):
        """ For a given pricelist, return price for a given product """
        self.ensure_one()
        return self._compute_price_rule([(product, quantity, partner)], date=date, uom_id=uom_id)[product.id][0]
    

    外部/网络 API 的“包装器”:

    def web_api_get_product_price(
        self, product_id, quantity, partner_id, date=False, uom_id=False):
        """ For a given pricelist, return price for a given product 
            callable from web api"""
        self.ensure_one()
        # get records
        product = self.env['product.product'].browse(product_id)
        partner = self.env['res.partner'].browse(partner_id)
        # call origin method
        return self.get_product_price(
            product, quantity, partner, date=date, uom_id=uom_id)
    

    现在可以调用这个方法了,一个例子:

    import xmlrpclib
    db = 'db_name'
    password = 'admin'
    common = xmlrpclib.ServerProxy('http://localhost:8069/xmlrpc/2/common')
    uid = common.authenticate(db, 'admin', password, {})
    models = xmlrpclib.ServerProxy('http://localhost:8069/xmlrpc/2/object')
    pricelist_id = 1
    product_id = 5
    partner_id = 7
    quantity = 20
    price = models.execute_kw(
        db, uid, password, 'product.pricelist',
        'web_api_get_product_price',
        [[pricelist_id], product_id, quantity, partner_id], {})
    

    【讨论】:

    • 这很有趣,谢谢。我将在接下来的几天内尝试此解决方案。
    • 如果是全球性的呢?这将需要我根据产品的数量多次获取所有产品列表和所有获取产品价格的方法。
    • 全局是什么意思?
    • @CZoellner 在创建价目表项目中申请全球
    • 对不起,我不明白。此方法适用于每个价目表,并且不依赖于其中的价目表项目的类型。
    猜你喜欢
    • 1970-01-01
    • 2013-09-07
    • 1970-01-01
    • 2018-02-14
    • 2020-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多