interes_negociado.py 2.19 KB
# -*- coding: utf-8 -*-
from odoo import models, fields, api
from odoo.exceptions import UserError

class vnt_interes_negociado(models.TransientModel):
    _name = 'vnt.interes_negociado'
    _description = 'Interés Negociado'

    in_interes = fields.Float(
        string=u'Interés Negociado',
    )

    #viejo, cdo era una sola linea
    in_ld = fields.Many2one(
        string='Linea de deuda',
        comodel_name='vnt.linea_deuda',
    ) 

    in_ld2 = fields.Many2many(
        string=u"Línea Deuda",
        comodel_name='vnt.linea_deuda',
    )

    in_tipo_int = fields.Selection(
        string = 'Tipo de negociación',
        selection = [
            ('monto', 'Monto Interés Negociado'),
            ('porcentaje', 'Porcentaje Interés Negociado'),
        ],
        store = True,
    )

    in_intotal = fields.Float(
        string=u"Total Interés",
        readonly=True,
    )

    in_deutotal = fields.Float(
        string=u"Total Deuda",
        readonly=True,
    )

    in_cant_comp = fields.Integer(
        string=u"Cant. de Comprobantes",
        readonly=True,
    )

    in_tottot = fields.Float(
        string=u"Total",
        readonly=True,
    )

    @api.depends('in_tipo_int')
    def aceptar_in(self):
        if (self.in_tipo_int not in ['monto','porcentaje']):
            raise UserError('Debe elegir un tipo de negociación')
        if (self.in_interes == 0.0):
            raise UserError('Debe introducir un monto o porcentaje. Si decide cancelar el interés debe pulsar el botón "Interés perdido" en la página anterior')
        lineas = self.in_ld2
        cant_lin = len(self.in_ld2)
        if cant_lin != 0:
            nvo_monto = self.in_interes/cant_lin
        else: 
            raise UserError('No hay líneas de deuda seleccionadas')
        if (self.in_tipo_int == 'monto'):
            for lin in self.in_ld2:
                lin.write({'ld_interes': nvo_monto})
                lin.ld_cobro = 'negociado'
        if (self.in_tipo_int == 'porcentaje'):
            for lin in self.in_ld2:
                nvo_monto = (lin.ld_interes * self.in_interes)/100
                lin.write({'ld_interes': nvo_monto})
                lin.ld_cobro = 'negociado'
        return (True)