Skip to content
Extraits de code Groupes Projets
Valider f928b169 rédigé par Juliana's avatar Juliana
Parcourir les fichiers

Add info config + generation QR

parent 9a28d7df
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
{
"name": "VRACOOP - POS Balance Container QRCode",
"summary": "VRACOOP - POS Balance Container QRCode",
"version": "12.0.0.1.0",
"version": "12.0.0.2.0",
"development_status": "Beta",
"author": "Le Filament",
"maintainers": ["remi-filament"],
......
# Copyright 2021 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import fields, models, api
class BarcodeNomenclature(models.Model):
_inherit = 'barcode.nomenclature'
# returns the checksum of the ean13, or -1 if the ean has not the correct length, ean must be a string
def ean_checksum_qr(self, ean):
code = list(ean)
if len(code) != 19:
return -1
oddsum = evensum = total = 0
code = code[:-1] # Remove checksum
for i in range(len(code)):
if i % 2 == 0:
evensum += int(code[i])
else:
oddsum += int(code[i])
total = 2 * oddsum * 5 + evensum
return int((10 - total % 10) % 10)
# Returns a valid zero padded ean19 from an ean prefix. the ean prefix must be a string.
def sanitize_ean19(self, ean):
ean = ean[0:19]
return ean[0:19] + str(self.ean_checksum_qr(ean))
# ------------------------------------------------------
# Fields declaration
# ------------------------------------------------------
# ------------------------------------------------------
# SQL Constraints
# ------------------------------------------------------
# ------------------------------------------------------
# Default methods
# ------------------------------------------------------
# ------------------------------------------------------
# Computed fields / Search Fields
# ------------------------------------------------------
# ------------------------------------------------------
# Onchange / Constraints
# ------------------------------------------------------
# ------------------------------------------------------
# CRUD methods (ORM overrides)
# ------------------------------------------------------
# ------------------------------------------------------
# Actions
# ------------------------------------------------------
# ------------------------------------------------------
# Business methods
# ------------------------------------------------------
......@@ -10,3 +10,8 @@ class PosConfig(models.Model):
is_print_container_qr = fields.Boolean(
string='Impression QR Code Container')
mag_id = fields.Char("Identifiant du magasin")
iface_print_qr_via_proxy = fields.Boolean(
string='Imprimer via Proxy',
help="Contournez l'impression du navigateur et les impressions via le proxy matériel.")
url_qrcode = fields.Char("URL Mayam QR")
prefixe_qr = fields.Integer("Préfixe QR Code", size=5)
\ No newline at end of file
odoo.define('vracoop_pos_container_qrcode.barcode_parser', function (require) {
"use strict";
var Class = require('web.Class');
var rpc = require('web.rpc');
var BarcodeParser = require('barcodes.BarcodeParser');
BarcodeParser.include({
// returns the checksum of the ean13, or -1 if the ean has not the correct length, ean must be a string
ean_checksum_qr: function(ean){
var code = ean.split('');
if(code.length !== 19){
return -1;
}
var oddsum = 0, evensum = 0, total = 0;
code = code.reverse().splice(1);
for(var i = 0; i < code.length; i++){
if(i % 2 === 0){
oddsum += Number(code[i]);
}else{
evensum += Number(code[i]);
}
}
total = oddsum * 5 + evensum * 2;
return Number((10 - total % 10) % 10);
},
// returns a valid zero padded ean13 from an ean prefix. the ean prefix must be a string.
sanitize_ean19: function(ean){
ean = ean.substr(0,19);
return ean.substr(0,19) + this.ean_checksum_qr(ean);
},
});
});
Ce diff est replié.
// © 2020 Le Filament (<http://www.le-filament.com>)
// License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
odoo.define('vracoop_pos_free_balance_v2.devices', function (require) {
odoo.define('vracoop_pos_container_qrcode.devices', function (require) {
"use strict";
var devices = require('point_of_sale.devices');
......
Ce diff est replié.
......@@ -10,46 +10,6 @@
</div>
</t>
</t>
<t t-name="PrintqrScreenWidget">
<div class='printsqr-screen screen'>
<div class="pos-topheader-bal ">
<div class="pos-header-custo">
<div class="">
<span class='button back'>
<i class='fa fa-angle-double-left'></i>
Retour
</span>
</div>
<div id="pos-header-text-selec" class="oe_hidden pos-text ">
<ul>
<li class="li-active"><span>1. Scanner l'étiquette</span></li>
<li><span>2</span></li>
<li><span>3</span></li>
</ul>
</div>
</div>
</div>
<div class='screen-content-flexbox'>
<div class='page-first' >
<div class='pos-text'>
Scanner l’étiquette et poser sur la balance<br/>
</div>
<div>
<img class="logo-scan" src="/vracoop_pos_free_balance_v2/static/src/img/logo-scan.png" />
</div>
</div>
</div>
</div>
</t>
<!-- <t t-name="ShopnameWidget">
<h1 class="shop-name">
<t t-esc="widget.get_shopname()" />
</h1>
</t>
<t t-name="ShopimageWidget">
<img class="pos-logo-balance" t-att-src='widget.pos.config.logo_path' alt="Logo"/>
</t> -->
<t t-name="BalanceContainerQRScreenWidget">
<div class="pos-topheader-bal oe_hidden" id="pos-topheader-scale-cont">
......@@ -74,10 +34,17 @@
<div class="pos-confirm" id="validation-bloc-cont">
<h1 class='product-name'>Poser votre contenant sur la balance puis enregistrer</h1>
<div class='add-container'>
Enregistrer
<i class='fa fa-angle-double-right'></i>
Imprimer QR Code
</div>
</div>
<div class="touch-scrollable">
<div class="button print">
<i class='fa fa-print'></i> Imprimer QR Code
</div>
<div class="pos-qr-container">
</div>
</div>
<div class="centered-content-flex">
<div class="flex-poids">
<div class="label-scale div-net margin-top">Poids Net</div>
......@@ -113,42 +80,77 @@
</div>
</t>
<t t-name="BalanceQRScreenWidget">
<div class="scale-screen scale-screen-custo screen">
<div class="pos-bottom">
<div class="centered-content-flex">
<div class="flex-poids">
<div class="label-scale div-net margin-top">Poids Net</div>
<div class='weight js-weight'>
<t t-esc="widget.get_product_weight_string()" />
</div>
</div>
<t t-name="PosQR">
<div class="pos-sale-ticket">
<div class="pos-center-align">
<img t-att-src="widget.pos.company_logo_base64"/><br />
</div>
<div class="einv-qr">
<div t-attf-id="qrcode_container">
<div id="qrcode"></div>
<div class="flex-poids">
<div class="label-scale div-net margin-top">Prix</div>
<div class='computed-price'>
0.00 €
</div>
</div>
<script type="text/javascript">
var qr_data ="<t t-esc="url_qrcode"/>";
<div class="flex-poids">
<div>
<div class="label-scale">Poids Brut total:</div>
<div class='weight-brut'>
0.000 kg
</div>
</div>
var qrcode = new QRCode('qrcode' , {
text: qr_data,
width: 160,
height: 160,
colorDark : "#000000",
colorLight : "#ffffff",
correctLevel : QRCode.CorrectLevel.H
});
qrcode.makeCode(qr_data);
<div>
<div class="label-scale ">Tare contenant: </div>
<div class='label-scale tare-container'>
0.000 kg
</div>
$("#qrcode > img").css({"margin":"20px auto"});
</script>
</div>
</div>
<table class='receipt-total'>
<tr>
<td><t t-esc="id_container"/></td>
<td class="pos-right-align">
<t t-esc="weight"/>
</td>
</tr>
</table>
</div>
</t>
<t t-name="XmlQR">
<receipt align='center' width='40' value-thousands-separator='' >
<div class="einv-qr">
<div t-attf-id="qrcode_container">
<div id="qrcode"></div>
<!--<script type="text/javascript"> new QRCode(document.getElementById("qrcode_id"), qr_data);</script>-->
<script type="text/javascript">
<!-- var qr_data ="Seller : <t t-esc="receipt.company.name"/>; -->
var qr_data ="Seller : ";
<!-- Invoice_No : <t t-esc="receipt.name"/>;
Date : <t t-esc="receipt.date.localestring"/>;
Total_Vat : <t t-esc="widget.format_currency(receipt.total_tax)"/>;
Total_Amount_Due : <t t-esc="widget.format_currency(receipt.total_with_tax)"/>;
<t t-if="receipt.company.vat">Vat_No :<t t-esc="receipt.company.vat"/><t>ؘ</t></t>"; -->
<!-- console.log('1-',qr_data);-->
var qrcode = new QRCode('qrcode' , {
text: qr_data,
width: 160,
height: 160,
colorDark : "#000000",
colorLight : "#ffffff",
correctLevel : QRCode.CorrectLevel.H
});
qrcode.makeCode(qr_data);
$("#qrcode > img").css({"margin":"20px auto"});
</script>
</div>
</div>
</receipt>
</t>
</templates>
......@@ -3,6 +3,8 @@
<template id="vracoop_assets_frontend" inherit_id="point_of_sale.assets">
<xpath expr="." position="inside">
<script type="text/javascript" src="/vracoop_pos_container_qrcode/static/src/js/qrcode.js"></script>
<script type="text/javascript" src="/vracoop_pos_container_qrcode/static/src/js/barcode.js"></script>
<script type="text/javascript" src="/vracoop_pos_container_qrcode/static/src/js/container.js"></script>
<script type="text/javascript" src="/vracoop_pos_container_qrcode/static/src/js/devices.js"></script>
</xpath>
......
......@@ -18,9 +18,21 @@
Active le mode Impression QR container
</div>
<div class="content-group" attrs="{'invisible': [('is_print_container_qr', '=', False)]}">
<div class="row mt16">
<label for="url_qrcode" class="col-lg-3 o_light_label"/>
<field name="url_qrcode" attrs="{'required': [('is_print_container_qr', '=', True)]}"/>
</div>
<div class="row mt16">
<label for="prefixe_qr" class="col-lg-3 o_light_label"/>
<field name="prefixe_qr" attrs="{'required': [('is_print_container_qr', '=', True)]}"/>
</div>
<div class="row mt16">
<label for="mag_id" class="col-lg-3 o_light_label"/>
<field name="mag_id" attrs="{'required': [('is_print_container_qr', '=', True)]}"/>
<field name="mag_id" />
</div>
<div class="row mt16">
<label for="iface_print_qr_via_proxy" class="col-lg-3 o_light_label"/>
<field name="iface_print_qr_via_proxy" />
</div>
</div>
</div>
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter