如何获取访问令牌以下载通过odoo会计平台中的dotnet应用程序创建的发票

问题描述 投票:0回答:1

我的问题

我的问题是在odoo会计中创建发票后,无论是手动创建的发票还是从任何第三方(即我的dotnet应用程序)创建的发票,为了查看PDF格式的发票,我们需要访问令牌,所以当我当时预览我的发票时,只有我可以获得访问令牌。

在 odoo 会计平台中,从我们的 dotnet 应用程序中,我正在创建发票,发送到 odoo 平台,在登录到我的 odoo 实例后,我可以查看从我的 dotnet 应用程序发送的发票,当时我预览了发票 PDF 后,我我能够获取访问令牌,从我的 dotnet 应用程序中获取访问令牌以查看 PDF 格式的发票有哪些方法,有两个重要参数需要查看 PDF 格式的发票。

  1. 访问令牌。
  2. 账户移动模式(日记帐分录)的 ID。

要在每次需要登录 odoo 实例时查看发票 PDF,以及通过 dotnet 创建发票,需要在我可以在 dotnet 应用程序中查看发票 PDF 后预览一次。

那么,在我通过 dotnet 应用程序创建发票后,任何人都可以帮助获取访问令牌吗?

为了从我的 dotnet 应用程序创建发票并将其发送到 odoo,我正在使用名为 portacapena.odoojsonrpcclient.1.0.20

的 nugget 包中的这个包
.net-core odoo-17 odoo-accounting
1个回答
0
投票

我使用的是Odoo.sh企业版

在互联网上搜索并根据我对odoo平台相关发票的了解后,终于找到了一种获取客户发票访问令牌的可能方法,并按照我的要求在我的系统中实现。

方式一:

步骤

  1. 进入设置 -> 开发者工具 -> 激活开发者模式。

  2. 转到设置 -> 技术 -> 自动化 -> 自动化规则。

  3. 创建新的自动化规则。

  4. 选择模型作为日记帐分录。

  5. 选择“触发器”,因为“状态”设置为 ->“已发布”。

  6. 在要执行的操作 -> 添加操作 -> 选择执行代码。

  7. 单独输入这段python代码

    如果记录: record.preview_invoice()

  8. 保存代码选项和自动化规则。

  9. 查看国家发票草稿并确认。

工作原理:

创建发票后,无论是在odoo平台上手动创建还是通过任何第三方API创建,请转到发票并确认,以便发票状态从草稿状态更改为已发布状态,此时,将触发自动化规则,以便访问令牌客户发票再次在该客户发票的日记帐分录模型中更新。

在我的项目中,当客户请求查看他们的发票时,我使用带有客户发票 ID 的日记帐分录模型查询 odoo,此时我将获得访问令牌,并通过形成的 URL,我获得 pdf 内容并通过带有下载选项的锚标记向用户显示.

{1}/我的/发票/{2}?report_type=pdf&download=true&access_token={3}

  1. Odoo 基本网址
  2. Odoo 客户发票 ID
  3. 已检索访问令牌

方式2

在odoo平台中手动创建客户发票或在odoo平台中创建后,使用下面的python代码从任何系统获取访问令牌。

我的想法是

在任何Python框架中创建一个API项目并包含此代码,托管后,任何其他API项目都可以使用并获取访问令牌。

Python 代码

import xmlrpc.client

url = 'http://localhost:8069'
db = 'my_database'
username = 'my_username'
password = 'my_password'
common = xmlrpc.client.ServerProxy('{}/xmlrpc/2/common'.format(url))
uid = common.authenticate(db, username, password, {})

# Create a new XML-RPC client object
models = xmlrpc.client.ServerProxy('{}/xmlrpc/2/object'.format(url))

# Find the invoice you want to download
invoice_id = [9147]


# Download the PDF file for the first invoice in the list
invoice = models.execute_kw(db, uid, password, 'account.move', 'read', [invoice_id[0]], {'fields': ['name', 'invoice_date', 'amount_total']})

pdf_file = models.execute_kw(db, uid, password, 'account.move', 'preview_invoice', [invoice_id[0]])

access_token = pdf_file["url"].split("=")[1]

print(access_token)
© www.soinside.com 2019 - 2024. All rights reserved.