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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/349436.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

01.Elasticsearch应用(一)

Elasticsearch应用&#xff08;一&#xff09; 1.什么是ELK ELK是一个免费开源的日志分析架构技术栈总称&#xff0c;包含三大基础组件&#xff0c;分别是Elasticsearch、Logstash、Kibana。但实际上ELK不仅仅适用于日志分析&#xff0c;它还可以支持其它任何数据搜索、分析和…

MATLAB数据处理: 每种样本类型随机抽样

tn5;% 每种类型随机抽样数 indextrain[];% 训练样本序号集 for i1:typenumber index301 find(typemat i); n2length(index301); index302randperm(n2); index401index301(index302(1:tn)); indextrain[indextrain; index401]; end 该代码可以对大样…

SpringCloud-Knife4j文档聚合

在微服务架构下&#xff0c;如果给每个微服务都配置文档&#xff0c;那么每个微服务的接口文档都有自己独立的访问地址&#xff0c;这样要一个个打开每个微服务的文档非常麻烦。一般我们会采用聚合的办法&#xff0c;将所有微服务的接口整合到一个文档中&#xff0c;具体做法有…

Ubuntu20.04输入法异常导致的黑屏:fcitx和ibus输入法的卸载与安装

Ubuntu20.04输入法异常导致的黑屏&#xff1a;fcitx和ibus输入法的卸载与安装_ubuntu卸载fcitx-CSDN博客 问题背景 系统&#xff1a;Ubuntu20.04 由于fcitx的不完整配置&#xff0c;导致fcitx输入法无法正常工作。决心卸载所有输入法&#xff0c;重新安装。但是由于在没有完整…

对于gzip的了解

gzip基本操作原理&#xff1a;通过消除文件中的冗余信息&#xff0c;使用哈夫曼编码等算法&#xff0c;将文件体积压缩到最小。这种数据压缩方式在网络传输中发挥了巨大作用&#xff0c;减小了传输数据的大小&#xff0c;从而提高了网页加载速度。 静态资源 Vue Vue CLl修改v…

深入理解Kubernetes探针和.NET服务健康检查机制

前言 随着越来越多的软件采用云原生和微服务架构&#xff0c;我们面临着更多的技术挑战&#xff0c;比如&#xff1a; Kubernetes如何在容器服务异常终止、死锁等情况下&#xff0c;发现并自动重启服务&#xff1b;当服务依赖的关键服务&#xff08;例如数据库&#xff0c;Red…

Git笔记:常用使用Git命令+使用Git关联本地仓库和远程仓库操作步骤

Git 分布式版本控制系统 常用Git命令 创建一个管理代码的文件目录右键Git Bath打开完成配置信息&#xff0c;输入个人用户名、邮件信息 git config --global user.name 用户名 git config --global user.email 邮箱地址初始化仓库 git init: 初始化仓库 文件目录里会出现一个…

Linux(2)——Linux中的Vim编辑器:从入门到精通

Linux中的Vim编辑器&#xff1a;从入门到精通 插播&#xff01;插播&#xff01;插播&#xff01;亲爱的朋友们&#xff0c;我们的Cmake/Makefile/Shell这三个课程上线啦&#xff01;感兴趣的小伙伴可以去下面的链接学习哦~ 构建工具大师-CSDN程序员研修院 一、Vim的基本概念…

基于ssm+vue在线考试系统

摘要 在线考试系统是一种利用现代技术手段实现的教育评估工具&#xff0c;它为学生提供了更灵活、便捷的考试方式&#xff0c;同时为教育机构提供了高效管理和评估学生学业水平的手段。在这个背景下&#xff0c;基于SSM&#xff08;SpringSpringMVCMyBatis&#xff09;框架和Vu…

cocos creator 碰撞系统

设置碰撞组件 3种组件类型&#xff0c;矩形碰撞&#xff0c;圆形碰撞&#xff0c; 多边形碰撞 开启碰撞检测 start() {//开启碰撞管理器let cm cc.director.getCollisionManager()cm.enabled true//绘制碰撞检测边界线。用于调试cm.enabledDebugDraw true//绘制精灵的边界c…

5.【SpringBoot3】文件上传

1. 文件上传到本地 需求分析 在用户更换头像或发布文章时&#xff0c;需要携带一个图片的 url 地址&#xff0c;该 url 地址是当用户访问文件上传接口&#xff0c;将图片上传成功后&#xff0c;服务器返回的地址。所以&#xff0c;后台需要提供一个文件上传接口&#xff0c;用…

85 总结一下最近遇到的一些 jar发布 相关的知识

前言 呵呵 最近有一些构建服务, 发布服务的一些需求 我们这里的服务 一般来说是 java application, spring boot application 针对发布, 当然最好是 增量发布, 尽量的减少需要传递给 发布服务器 的资源的大小 比如 我的这个 java application, 可能会存在很多依赖, 常规…

C++实用教程(四):面向对象核心多态 笔记

推荐B站视频&#xff1a;C现代实用教程(四):面向对象核心多态_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV15v4y1M7fF/?spm_id_from333.999.0.0&vd_sourcea934d7fc6f47698a29dac90a922ba5a3 本项目通用的tasks.json文件和launch.json tasks.json {"versi…

【并发编程】 synchronized的普通方法,静态方法,锁对象,锁升级过程,可重入锁,非公平锁

目录 1.普通方法 2.静态方法 3.锁对象 4.锁升级过程 5.可重入的锁 6.不公平锁 非公平锁的 lock 方法&#xff1a; 1.普通方法 将synchronized修饰在普通同步方法&#xff0c;那么该锁的作用域是在当前实例对象范围内,也就是说对于 SyncDemosdnewSyncDemo();这一个实例对象…

基于Spring Boot的饮食分享平台设计与实现

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

springboot-mybatis项目

一、后端开发环境搭建 1、File->New->Projet 2选择 Spring Initializr &#xff0c;然后选择默认的 url 点击next 3勾选Spring Web、SQL模板&#xff0c;next 4点击finish&#xff0c;搭建完成 二 数据库 1 新建数据库 2 执行sql建表 SET NAMES utf8mb4; SET FOREIGN…

中移(苏州)软件技术有限公司面试问题与解答(4)—— virtio所创建的设备2

接前一篇文章&#xff1a;中移&#xff08;苏州&#xff09;软件技术有限公司面试问题与解答&#xff08;4&#xff09;—— virtio所创建的设备1 在上一篇文章中&#xff0c;对于面试所提出的问题“virtio会创建哪些设备&#xff1f;”&#xff0c;有了初步答案&#xff0c;即…

0125-1-vue3初体验

vue3尝鲜体验 初始化 安装vue/clinext&#xff1a; yarn global add vue/clinext # OR npm install -g vue/clinext然后在 Vue 项目运行&#xff1a; vue upgrade --next项目目录 vue3-template ├── index.html // html模板 ├── mock // mock数据 │ └── user.…

【前沿技术杂谈:NLP技术的发展与应用】探索自然语言处理的未来

【前沿技术杂谈&#xff1a;NLP技术的发展与应用】探索自然语言处理的未来 NLP技术的发展与应用&#xff1a;探索自然语言处理的未来方向一&#xff1a;技术进步词嵌入&#xff08;Word Embeddings&#xff09;Transformer架构自然语言推理 方向二&#xff1a;应用场景智能客服…

深入浅出 diffusion(2):pytorch 实现 diffusion 加噪过程

我在上篇博客深入浅出 diffusion&#xff08;1&#xff09;&#xff1a;白话 diffusion 原理&#xff08;无公式&#xff09;中介绍了 diffusion 的一些基本原理&#xff0c;其中谈到了 diffusion 的加噪过程&#xff0c;本文用pytorch 实现下到底是怎么加噪的。 import torch…