0

我正在研究一个 python 导入脚本,将数据从 xls 表导入到 odooErp。在脚本中,有诸如“名称”、“如果它是一个 bom 列表”和(重要的)不同价格表(在本例中为 p1-p4)的“价格”之类的信息。

我正在使用以下版本: Odoo: Community v.12 python: v. 3.7.6 odoorpc: 0.7.0

我的脚本已经能够在 odoodb 中找到产品,获取一些 xls 数据并将其写入 odoodb 中的产品。这些是名称、价格(这是标准价格)、类型等字段(标准 rpc 调用)但我无法管理将产品写入价目表或为产品分配价目表。我没有找到有关如何管理解决此问题的语法的任何文档。所以我试着这样做:

PricelistModel = odoo.env['product.pricelist']
  pricelist = PricelistModel.search([('name', '=', 'p1')], limit=1)
  if pricelist:
      p = PricelistModel.browse(pricelist)
      
      item = {
          'applied_on': '1_product',
          'product_tmpl_id': product['id'], #<-- this is int also tried string
          'compute_price': 'fixed',
          'fixed_price': float(row[3]) #<--- this is int also tried string
      }

      p.write({
          'item_ids':
              item 
      })

不幸的是,即使没有显示错误并且从函数接收到“True”,这个调用也不成功并且什么也不做。

现在我的问题是:

  • 我想用那个 odoorpc 做更多的事情,但是文档太短了,甚至没有触及我能想象到的所有可能性的表面。-> 有没有办法打印出为什么 odoo 不写入数据库的答案,这样我就可以自学如何与 odoo “交谈”?

  • 有谁知道解决这个问题的解决方案?

干杯,非常感谢你的时间:)

4

1 回答 1

1

试试这个代码:

PricelistModel = odoo.env['product.pricelist']
pricelist = PricelistModel.search([('name', '=', 'p1')], limit=1)
if pricelist:
    item = {
        'applied_on': '1_product',
        'product_tmpl_id': product['id'], #<-- this is int also tried string
        'compute_price': 'fixed',
        'fixed_price': float(row[3]) #<--- this is int also tried string
    }

    # I assume the 'item' is a correct dictionary and the 'item_ids' is a One2many field, so you need an One2many special command

    p.write({
        'item_ids': [(0, False, item)] 
    })

您可以阅读https://www.odoo.com/documentation/13.0/reference/orm.html#create-update作为 One2many 特殊命令的参考

于 2020-04-18T12:47:11.943 回答