Odoo 13:通过api从odoo中的采购订单创建发票

时间:2020-11-05 15:28:27

标签: python-3.x odoo xml-rpc odoo-13

我是odoo的新手!在odoo 13 EE上,我试图在导入采购订单和物料收据后创建并确认供应商账单。我可以直接创建发票,但是无法将其链接到PO /收据?

在购买中遇到了麻烦。订购方法action_create_invoice似乎对API隐藏了

order_id = PurchaseOrder.create(po)
purchaseorder = PurchaseOrder.browse([order_id])
print("Before validating:", purchaseorder.name, purchaseorder.state) # draft
odoo.env.context['check_move_validity'] = True
purchaseorder.button_confirm()
purchaseorder = PurchaseOrder.browse([order_id])
picking_count = purchaseorder.picking_count
print("After Post:", purchaseorder.name, purchaseorder.state, "picking_count = ", purchaseorder.picking_count)
if picking_count == 0:
print("Nothing to receive. Straight to to Billing.") # ok so far
 tryme = purchaseorder.action_view_invoice()
## Error => odoorpc.error.RPCError: type object 'purchase.order' has no attribute 'action_create_invoice'

所以我尝试了以这种方式覆盖/扩展

class PurchaseOrder(models.Model):
 _inherit = 'purchase.order'
 @api.model
def create_invoice(self, context=None):
# try 1 => odoorpc.error.RPCError: 'super' object has no attribute      # 'action_create_invoice'
rtn = super().action_create_invoice(self)

# try2 => odoorpc.error.RPCError: name 'action_create_invoice' is         # not defined
 # rtn = action_create_invoice(self)

 # try3 => Error %s 'super' object has no attribute '       #         action_create_invoice'
 # rtn = super(models.Model, self).action_create_invoice(self)
return rtn

我希望有人可以提出解决方案!谢谢。

2 个答案:

答案 0 :(得分:1)

请不要在没有odoo功能知识的情况下自定义它。在odoo中,如果您要进行购买设置,则可以在发票下找到开票选项,在其中可以找到2个选项,订购数量和收到数量。如果是订购数量,则可以在确认采购订单后创建发票。如果已接收到数量,则在确认采购订单后,将创建收货,处理完收货后,您可以在采购订单中找到创建发票按钮

答案 1 :(得分:0)

如果您可以从浏览器客户端执行此操作,则只需查看浏览器发送到odoo服务器的API命令(在Chrome中,通过按F12启用调试视图,然后在“网络”标签中查看),以便您只需要复制该通讯即可。