generar_nota.py 5.55 KB
# -*- coding: utf-8 -*-
from odoo import models, fields, api
from odoo.exceptions import UserError
from datetime import datetime

class tpv_generar_nota(models.TransientModel):
    _name = 'tpv.generar_nota'
    _description = 'Generar Nota' 
    _inherit = ['asw.generador_comprobante', 'asw.action.manager']

    gn_comprobante = fields.Many2one(
        string=u'Comprobante Original',
        comodel_name='asw.comprobante',
    )

    def generar_notaCred(self):
        comprobante = self.gn_comprobante

        referencia = 'Reintegro del comprobante : ' + comprobante.comp_talonario.tal_codigo + "/" +comprobante.comp_nro_letras
        talonario = self.env['asw.talonario'].search([('tal_pto_vta','=',comprobante.comp_talonario.tal_pto_vta),('tal_letra','=', comprobante.comp_talonario.tal_letra),('tal_codigo','in',['NCAE','NCBE'])])#es variable mover a preferecias
                    
        if talonario:
            contra_comprobante = self.generar_comprobante(
                talonario        = talonario,
                cliente          = comprobante.comp_cliente,
                total            = comprobante.comp_total,
                referencia       = referencia,
                comp_estado      = comprobante.comp_estado,
                comp_nro_letras  = comprobante.comp_nro_letras,
                comp_subtotal    = comprobante.comp_subtotal,
                comp_moneda      = comprobante.comp_moneda.id,
                comp_nota_credito = comprobante.id,
                comprobante_caja_ids = comprobante.comprobante_caja_ids.id
            )

            contra_comprobante.write({
                            'referencia_orig_ptv': comprobante.comp_talonario.tal_pto_vta,
                            'referencia_orig_numero': comprobante.comp_nro,
                            'referencia_orig_letra': comprobante.comp_talonario.tal_letra,
                            'referencia_orig_fact': comprobante.id,
                        })

            contra_comprobante.comp_fecha = datetime.today()
            
            #linea de NCred
            inter_prod = self.env['asw.producto'].search([('prod_descripcion','=','INTERES')])
            linea_comp = self.env['asw.linea_comprobante'].create({
                'lcp_producto': inter_prod.id,
                'lcp_comprobante': contra_comprobante.id,
                'lcp_precio': comprobante.comp_total,
                'lcp_importe': comprobante.comp_total,
            })

            #contra_comprobante.validar()

            #se agrega al recibo original
            #comprobante.write({
            #    'comp_nota_credito' : contra_comprobante.id            
            #})

            return {
                'name': "Nota de Crédito",
                'type': 'ir.actions.act_window',
                'res_model': 'asw.comprobante',
                'view_mode': 'form',
                'view_type': 'form',
                'res_id': contra_comprobante.id,
                'target': 'new',
            }
        else:
            raise UserError('No existe talonario para la Nota de Crédito correspondiente. Créelo o diríjase a soporte para que lo haga, y vuelva a este menú')

    def generar_notaDeb(self):
        comprobante = self.gn_comprobante

        referencia = 'Nota de débito del comprobante : ' + comprobante.comp_talonario.tal_codigo + "/" +comprobante.comp_nro_letras
        talonario = self.env['asw.talonario'].search([('tal_pto_vta','=',comprobante.comp_talonario.tal_pto_vta),('tal_letra','=', comprobante.comp_talonario.tal_letra),('tal_codigo','in',['NDAN','NDBN','NDAE', 'NDBE'])])
                    
        if talonario:
            contra_comprobante = self.generar_comprobante(
                talonario        = talonario,
                cliente          = comprobante.comp_cliente,
                total            = comprobante.comp_total,
                referencia       = referencia,
                comp_estado      = comprobante.comp_estado,
                comp_nro_letras  = comprobante.comp_nro_letras,
                comp_subtotal    = comprobante.comp_subtotal,
                comp_moneda      = comprobante.comp_moneda.id,
                #comp_nota_credito = comprobante.id
            )

            contra_comprobante.write({
                            'referencia_orig_ptv': comprobante.comp_talonario.tal_pto_vta,
                            'referencia_orig_numero': comprobante.comp_nro,
                            'referencia_orig_letra': comprobante.comp_talonario.tal_letra,
                            'referencia_orig_fact': comprobante.id,
                        })

            contra_comprobante.comp_fecha = datetime.today()
            
            #linea de NDEB
            inter_prod = self.env['asw.producto'].search([('prod_descripcion','=','INTERES')])
            linea_comp = self.env['asw.linea_comprobante'].create({
                'lcp_producto': inter_prod.id,
                'lcp_comprobante': contra_comprobante.id,
                'lcp_precio': comprobante.comp_total,
                'lcp_importe': comprobante.comp_total,
            })

            contra_comprobante.validar()

            return {
                'name': "Nota de Débito",
                'type': 'ir.actions.act_window',
                'res_model': 'asw.comprobante',
                'view_mode': 'form',
                'view_type': 'form',
                'res_id': contra_comprobante.id,
                'target': 'new',
            }
        else:
            raise UserError('No existe talonario para la Nota de Débito correspondiente. Créelo o diríjase a soporte para que lo haga, y vuelva a este menú')