interes_negociado.py
2.19 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
# -*- 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)