comprobante.py
3.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# -*- coding: utf-8 -*-
from odoo import models, fields, api, exceptions
from .qr import qrfiscal
class asw_comprobante(models.Model):
_inherit = 'asw.comprobante'
name_ref = fields.Char(
string="Nombre",
)
referencia_corr = fields.One2many(
string=u'Referencia',
comodel_name='asw.referencias',
inverse_name='factura',
)
referencia_compras_corr = fields.One2many(
string=u'Referencia de Compra',
comodel_name='hgt.refcompra',
inverse_name='comprobante',
store=True,
)
qr = fields.Binary(
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')
def _onchange_name(self):
first_line = self.env['asw.referencias'].search([('id', 'in', self.referencia_corr.ids)], limit=1)
if first_line and first_line.name:
self.name_ref = first_line.name
#metodo para llamar wizard producto por precio final
def abrir_wizard_ppf(self):
nwizard = self.env['asw.prod_pfinal'].create({'ppf_comprobante': self.id})
return {
'name': "Carga Producto Precio Final",
'type': 'ir.actions.act_window',
'res_model': 'asw.prod_pfinal',
'view_mode': 'form',
'view_type': 'form',
'res_id': nwizard.id,
'target': 'new',
}