Commit a1e87b05 by juan

primeras validacciones de retrocompativilidad

1 parent a347a402
No preview for this file type
......@@ -6,16 +6,21 @@
Módulo para adaptar facturas""",
'description': """
Módulo para adaptar facturas
Módulo para adaptar facturas Electronica a nuevo formota
Y correcciones varias de UX y categorizacion de facturas
se puede decir que es una modernizacion del vetusto tpv
en lo que respecta experiencia de usuario
Tambien en este modulo se entaran las bases de facturacion
automatica
""",
'author': 'ANACSOFT',
'author': 'HGT',
# Categories can be used to filter modules in modules listing
# Check https://github.com/odoo/odoo/blob/master/odoo/addons/base/module/module_data.xml
# for the full list
'category': 'Localization/Argentina',
'version': '0.08.02.21',
'version': '1.05.03.21',
# any module necessary for this one to work correctly
'depends': ['base',
......@@ -25,7 +30,7 @@
# always loaded
'data': [
# 'security/ir.model.access.csv',
'security/ir.model.access.csv',
'wizard/vista_prod_pfinal.xml',
'views/referencias.xml',
'views/comprobante.xml',
......
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
# -*- coding: utf-8 -*-
from odoo import models, fields, api, exceptions
from .qr import qrfiscal
class asw_comprobante(models.Model):
_inherit = 'asw.comprobante'
......@@ -25,6 +26,58 @@ class asw_comprobante(models.Model):
string=u'QR',
)
afip_qr_img = fields.Binary(
compute='_compute_afip_qr',
string='QR Fiscal',
default="QR Fiscal"
)
afip_qr = fields.Char(
compute='_compute_afip_qr',
string='QR Fiscal'
)
@api.depends('afip_qr_img')
def _compute_afip_qr(self):
for rec in self:
#import ipdb; ipdb.def_colors='NoColor'; ipdb.set_trace()
fecha_emision = rec.comp_fecha
cod_afip = rec.comp_talonario.tal_tpc_id.tc_cod_afip
punt_venta = rec.comp_talonario.tal_ptv_id.ptv_nro
afip_aut = rec.afip_auth_code
total = rec.comp_total
documento_tipo = rec.comp_cliente.cli_tipo_documento.tdoc_codigo_afip
numero_doc = rec.comp_cliente.cli_nro_doc
numero_comprobante = rec.comp_nro
#print("fsdsdfc")
#import ipdb; ipdb.set_trace()
try:
cuit = int(rec.company_id.vat)
if rec.afip_auth_code == False:
rec.afip_qr_img = False
continue
#print(self.cae_due_qr(rec))
QR = qrfiscal(FechaEmision=rec.comp_fecha,
cuit=cuit,
PuntoVenta=int(punt_venta),
tipoComprobante=int(cod_afip),
nroCmp=numero_comprobante,
importe=total,
tipoDocRec=int(documento_tipo),
nroDocRec=int(numero_doc),
codAut=int(afip_aut))
QR.GenerarQR()
rec.afip_qr_img = QR.LeerQR()
rec. afip_qr = QR.URL
except:
rec.afip_qr_img = False
def cae_due_qr(self, rec):# no me va es la fecha
cae_due = ''.join(
[c for c in str(
rec.afip_auth_code_due or '') if c.isdigit()])
return(cae_due)
#metodo p q campo de referencia escriba name
#como el campo es one2many puse que tome el nombre de la primer referencia elegida
@api.onchange('referencia_corr')
......
import qrcode, json, base64
class qrfiscal():
"""Armo esta clase para separar la generacion de la imagen del modelo
El unico objetivo es el orden, no tengo en claro cuanto me va a llevar
Capas es al pedo"""
doc_a = {"fac":"001:", "notc":"003", "notd":"002"}
doc_b = {"fac":"006:", "notc":"008", "notd":"007"}
def __init__(self, ver=1, FechaEmision="2020-10-13",
cuit=30000000007,
PuntoVenta=10,
tipoComprobante="001",
nroCmp=94,
importe=12100,
moneda="PES",
ctz=1,
tipoDocRec=80,
nroDocRec=20000000001,
tipoCodAut="E",
codAut=70417054367476) -> dict:
self.data = {"ver":1,
"fecha":FechaEmision,
"cuit":cuit,
"ptoVta":PuntoVenta,
"tipoCmp":tipoComprobante,
"nroCmp":nroCmp,
"importe":importe,
"moneda":moneda,
"ctz":ctz,
"tipoDocRec": tipoDocRec,
"nroDocRec":nroDocRec,
"tipoCodAut":tipoCodAut,
"codAut":codAut,
}
self.archivo = """/dev/shm/{}.png""".format(self.data["cuit"])
#print(self.data)
def GenerarQR(self):
json_dump = json.dumps(self.data,separators=(',', ':'))
data = json_dump.encode('ascii')
base64_bytes = base64.b64encode(data)
base64_message = base64_bytes.decode('ascii')
URL = """https://www.afip.gob.ar/fe/qr/?p={}""".format(base64_message)#al dia de la fecha no anda esta url asi q no puedo probar esta codificacion
self.URL = json_dump
self.generadorQR(URL)
#print(URL)
def generadorQR(self, URL):
qr = qrcode.QRCode(version=1,box_size=2,border=2)
qr.add_data(URL)
qr.make(fit=True)
img = qr.make_image(fill='black', back_color='white')
img.save(self.archivo)
def LeerQR(self):
data = open(self.archivo, "rb").read()
encoded = base64.b64encode(data)
return(encoded)
#qr = qrfiscal()
#jsz = qr.GenerarQR()
#import ipdb; ipdb.set_trace()
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_my_module_my_module,my_module.my_module,model_my_module_my_module,,1,0,0,0
\ No newline at end of file
access_asw_referencias,access_asw_referencias,model_asw_referencias,,1,1,1,0
\ No newline at end of file
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
......@@ -44,7 +44,9 @@
<field name="arch" type="xml">
<data>
<xpath expr="//field[@name='afip_xml_response']" position="after">
<field name="qr" />
<!--<field name="qr" />-->
<field name="afip_qr" />
<field name="afip_qr_img" widget="image"/>
</xpath>
</data>
</field>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!