comprobante.py
4.96 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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# -*- coding: utf-8 -*-
from odoo import models, fields, api, exceptions
from .qr import qrfiscal
from odoo.exceptions import UserError, ValidationError, Warning, RedirectWarning
import base64
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'
)
referencia_orig_ptv = fields.Integer(string='Punto de venta factura original')
referencia_orig_numero = fields.Integer(string='Numero factura original')
referencia_orig_letra = fields.Char(string='Codigo comprobante original')
referencia_orig_fact = fields.Many2one(comodel_name='asw.comprobante', string='Factura referencia')
@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',
}
def recalcularTotal(self):
self._onchange_comp_linea_facturas()
def impresion_directa(self):
result = self.imprimir()
report_action = self.env[result['type']]._get_report_from_name(result['report_name'])
pdf = report_action.render_aeroo([self.id], {'context': self.env.context})
try:
#pdf = self.env.ref('hgt_produccion.remito_qweb').render_qweb_pdf(self.ids)
val = {}
val["tipo"] = 'impresora'
val["bs64"] = base64.encodestring(pdf[0])
impresora = self.env["hw.puesto_trabajo"]
#print(base64.encodestring(pdf[0]))
except:
raise Warning("No tiene instalado este modulo en su sistema contactese con HGT")
impresora.UsarDispositivo(val)
#metodo para llamar wizard correcion nro talonario
def abrir_wizard_cn(self):
nwizard = self.env['asw.corrector_numtal'].create({'corr_talonario': self.comp_talonario.id})
return {
'name': "Corrección de número AFIP",
'type': 'ir.actions.act_window',
'res_model': 'asw.corrector_numtal',
'view_mode': 'form',
'view_type': 'form',
'res_id': nwizard.id,
'target': 'new',
}