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 中不同记录的数据。