comprobante.py 2.6 KB
# -*- 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',
    )

    afip_qr_img = fields.Binary(
        string=u'QR',
        default="QR Fiscal"
    )

    afip_qr = fields.Char(
        compute='_compute_afip_qr',
        string='QR Fiscal'
    )
    qr = fields.Char(
        string='QR'
    )

    @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