Odoo以编程方式在python中为购买订单添加税

时间:2018-01-14 18:56:15

标签: python odoo tax

我正在从外部来源创建采购订单(在线xml请求)。 当我遍历每个订单时,我创建了一个采购订单,然后我循环遍历产品并为每个产品创建一个订单行。

除了增税之外,所有这些都有效。我很困惑如何增加税收。我应该立即将这些值添加到采购订单中,如下所示 - >

# Create orderline foreach product (this happens in the loop foreach product)
orderlineList =  {
                'name': itemText,
                'product_id': itemId,
                'product_qty': itemOrdered,
                'product_uom': 1,
                'price_unit': itemPrice,
                'date_planned': orderDatePlanned,
            }

            struct = orderlinetuple + (orderlineList,)
            po_vals.append(struct)

 #This adds all the orderlines into 'order_line'
  orderDict = { 
         'amount_untaxed' : totalNet,
         'amount_tax': totalTax,
         'partner_id': api_partner,
         'amount_total' : totalBrut,
         'order_line': po_vals,
     }
# Then we create the purchase order with the added orderlines in one go
  self.PurchaseOrder = self.env['purchase.order']   
  po_id = self.PurchaseOrder.create(orderDict)

如果我像这样创建我的采购订单,则会忽略amount_tax和amount_total,我只需从订单行中获取不含税的总计。

这是错误的方法吗?我已经读过关于在采购订单上调用onchange但我不确定这是如何工作的,因为我没有看到它会如何增加税收

这张图片显示订单没有税 enter image description here

此图显示订单没有税 enter image description here

简而言之,在python中从后端创建时,如何向购买订单添加税(f.e。21%)。

对可以指引我正确方向的人表示感谢,过去3天一直想找到这个......

1 个答案:

答案 0 :(得分:1)

您需要调用odoo的默认on-change方法。

  

当您调用on-change方法时,系统将自动设置税   基于产品默认税和采购订单财务状况。

第1步:您需要创建采购订单而不添加任何订单行

self.env [ 'purchase.order']创建({ 'PARTNER_ID': '',...})。

第2步:使用以下方法创建所有采购订单行。

    new_record=self.env['purchase.order.line'].new({'order_id':purchase_order.id,
              'product_id':product_id,
              'product_uom':uom+id,
              'name':product_name
              })

    new_record.onchange_product_id()
    order_vals=new_record._convert_to_write({name: new_record[name] for name in new_record._cache}) 
    order_vals.update({'product_qty':product_qty,'price_unit':price_unit})
    self.env['purchase.order.line'].create(order_vals)

第2步中,我们创建了采购订单行并调用onchange_product_id方法。它将根据采购订单财务状况和产品默认税率自动计算税额。

这可能会对你有帮助。