如何在Odoo14中生成二维码

QR 码是一种快速响应代码,看起来类似于条形码。日常经常使用它来跟踪信息。它由许多黑色方块组成,排列在白色背景的方形网格中,我们可以在其中嵌入成像设备可读的数据。

在odoo中,二维码在报告、数据分析等方面发挥着至关重要的作用……它可以快速读取并有助于存储大量数据。它可用于跟踪 Odoo 中的产品信息、库存变动、发票、销售和采购详细信息。

本博客介绍了如何在 odoo 14 中生成 QR 码。这里举例说明了特定发票的 QR 码示例。二维码可读取发票订单的详细信息,包括序列、客户和金额详细信息。

try:
   import qrcode
except ImportError:
   qrcode = None
try:
   import base64
except ImportError:
   base64 = None
from io import BytesIO
class ReportInvoice(models.Model):
   """ inherit Invoice to add report settings """
   _inherit = "account.move"

   qr_code = fields.Binary('QRcode', compute="_generate_qr")
   def _generate_qr(self):
       "method to generate QR code"
       for rec in self:
           if qrcode and base64:
               qr = qrcode.QRCode(
                   version=1,
                   error_correction=qrcode.constants.ERROR_CORRECT_L,
                   box_size=3,
                   border=4,
               )
               qr.add_data(rec.company_id.name)
               qr.add_data(", Payment Reference : ")
               qr.add_data(rec.payment_reference)
               qr.add_data(", Customer : ")
               qr.add_data(rec.partner_id.name)
               qr.add_data(",Invoice Date : ")
               qr.add_data(rec.invoice_date)
               qr.make(fit=True)
               img = qr.make_image()
               temp = BytesIO()
               img.save(temp, format="PNG")
               qr_image = base64.b64encode(temp.getvalue())
               rec.update({'qr_code':qr_image})

QR 码生成与 python 库qr code一起使用,这有助于 QR 码图像生成。为此,首先,我们需要在终端中使用命令  Pip3 install QRcode安装软件包。

上面说明了在发票中创建二维码的代码示例,其中描述了发票详细信息,例如付款参考、客户和发票日期等......

在继承的python文件中,导入了图像的QRcode和base64库,并简单地为QRcode添加了二进制类型的计算字段。

对应的XML文件如下

<odoo>
   <data>
       <record id="res_invoice_inherit" model="ir.ui.view">
           <field name="name">account.move.report</field>
           <field name="model">account.move</field>
           <field name="inherit_id" ref="account.view_move_form"/>
           <field name="arch" type="xml">
               <xpath expr="//field[@name = 'payment_reference']" position="after">
                   <field name="qr_code" widget='image' class="oe_avatar"
                    />
               </xpath>
      </field>
  </record>
   </data>
</odoo>
qr = qrcode.QRCode(
                   version=1,
                   error_correction=qrcode.constants.ERROR_CORRECT_L,
                   box_size=3,
                   border=4,
               )

Version:是一个参数,是1到40之间的整数,控制二维码的大小(最小的,版本1,是一个21 * 21的矩阵)

Error_ Correction:该参数控制用于QR码的纠错。

box_size:该参数控制每个box上需要累加多少像素

边框:控制框的数量以及边框的粗细(默认=4)

.add_data 参数可用于将数据添加到二维码,在此示例中创建发票公司名称、付款参考、客户和销售人员详细信息的二维码。使用所有参数,QR 将在 make_image 函数中生成图像。

对应的图像可以保存为SVG或PNG格式;此处将其保存为 PNG 格式,然后对值进行编码并分配给发票字段中的特定值。

扫描 QRcode 时获得的输出为

用此方法,我们可以生成一个 QR 码,用于存储 Odoo 14 中不同记录的数据。

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔跑的蜗牛..

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值