comprobante.py 1.8 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:
            print(rec.comp_fecha)
            print(rec.comp_talonario.tal_tpc_id.tc_cod_afip)
            print(rec.comp_talonario.tal_ptv_id.ptv_nro)
            print(rec.afip_auth_code)
            print(rec.comp_total)
            try:
                if rec.afip_auth_code == False:
                    continue()
                print(self.cae_due_qr(rec))
                QR = qrfiscal(FechaEmision=rec.comp_fecha,)
                QR.GenerarQR()
                rec.afip_qr_img = QR.LeerQR()
            except:
                rec.afip_qr_img = False

    def cae_due_qr(self, rec):
        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