Commit a0970c53 by Maria Agustina

avance 1427

1 parent 97f70a68
from . import models
from . import wizard
......@@ -23,6 +23,7 @@
'depends': ['base',
'asw_crm',
'asw_tpv',
'asw_tpv_fechas',
],
# always loaded
......@@ -30,6 +31,7 @@
'security/ir.model.access.csv',
'views/cobros.xml',
'views/intereses.xml',
'wizard/interes_negociado.xml',
'views/menu.xml',
],
......
from . import cobros
from . import linea_deuda
from . import intereses
from . import comprobante
\ No newline at end of file
from . import comprobante
from . import cliente
\ No newline at end of file
No preview for this file type
# -*- coding: utf-8 -*-
from odoo import models, fields, api
class asw_cliente(models.Model):
_inherit = 'asw.cliente'
_rec_name = 'cli_nombre_cliente'
cli_nombre_cliente = fields.Char(
compute="nombre_cliente", search='_value_search')
......@@ -15,8 +15,6 @@ class vnt_cobros(models.Model):
string=u"Línea Deuda",
comodel_name='vnt.linea_deuda',
inverse_name='ld_cobros',
compute='_onchange_ld',
inverse='_inverse_onchange_ld',
)
co_resumen = fields.Text(
......@@ -31,6 +29,7 @@ class vnt_cobros(models.Model):
co_total_interes = fields.Float(
string=u"Total Interés",
compute="_compute_co_total_interes",
)
co_total = fields.Float(
......@@ -38,6 +37,11 @@ class vnt_cobros(models.Model):
compute="_compute_co_total",
)
co_deucarg = fields.Boolean(
string="Deudas cargadas",
default=False,
)
#Calculos de totales
@api.depends('co_lin_deuda')
......@@ -48,6 +52,15 @@ class vnt_cobros(models.Model):
if lin.ld_select == True:
sumita += lin.ld_total
record.co_total_deuda = sumita
@api.depends('co_lin_deuda')
def _compute_co_total_interes(self):
sumita = 0
for record in self:
for lin in record.co_lin_deuda:
if lin.ld_select == True:
sumita += lin.ld_interes
record.co_total_interes = sumita
@api.depends('co_total_deuda', 'co_total_interes')
def _compute_co_total(self):
......@@ -55,20 +68,13 @@ class vnt_cobros(models.Model):
for record in self:
record.co_total = record.co_total_deuda + record.co_total_interes
@api.onchange('co_cliente')
def _onchange_ld(self):
lista = []
def traer_ld(self):
self.co_deucarg = True
#recupero comprobantes de venta, adeudados, con el cliente seleccionado
comp_venta_adeud = self.env['asw.comprobante'].search([('comp_talonario.tal_menu','=','fac'),('comp_tipo_comp','=','e'), ('comp_estado', '=', 'a'), ('comp_cliente', '=', self.co_cliente.id)])
comp_venta_adeud = self.env['asw.comprobante'].search([('comp_talonario.tal_menu','=','fac'),('comp_tipo_comp','=','e'),('comp_estado', '=', 'a'),('comp_cliente', '=', self.co_cliente.id)])
for comp in comp_venta_adeud:
nva_linea = self.env['vnt.linea_deuda'].create({
'ld_factura': comp.id,
})
lista.append(nva_linea.id)
self.co_lin_deuda = lista
def _inverse_onchange_ld(self):
return True
nva_linea = self.env['vnt.linea_deuda'].create({'ld_factura': comp.id, 'ld_cobros': self.id})
......
......@@ -13,11 +13,12 @@ class vnt_interes(models.Model):
)
int_todos = fields.Boolean(
string=u"Todos?",
string=u"Seleccionar a todos",
default=False,
)
int_ritmo = fields.Selection(
string = 'Ritmo',
string = 'Frecuencia',
selection = [
('mensual', 'Mensual'),
('quincenal', 'Quincenal'),
......@@ -31,3 +32,18 @@ class vnt_interes(models.Model):
string=u"Plantilla de envío",
)
int_tasa_anual = fields.Float(
string=u'Tasa Anual',
)
@api.onchange('int_todos')
def _onchange_todos(self):
if self.int_todos:
clientes_todos = self.env['asw.cliente'].search([])
if clientes_todos:
self.int_cliente = clientes_todos
if not self.int_todos:
self.int_cliente = []
# -*- coding: utf-8 -*-
from odoo import models, fields, api, exceptions
from odoo.exceptions import UserError, ValidationError
import odoo.addons.decimal_precision as dp
import math
import os
from datetime import datetime
from calendar import monthrange
class vnt_linea_deuda(models.Model):
_name = 'vnt.linea_deuda'
......@@ -13,12 +11,11 @@ class vnt_linea_deuda(models.Model):
string='Factura',
comodel_name='asw.comprobante',
ondelete='restrict',
required=True,
)
ld_fecha_vto = fields.Datetime(
ld_fecha_vto = fields.Date(
string=u'Fecha de Vencimiento',
related='ld_factura.comp_fecha_cancelacion'
related='ld_factura.fecha_vencimiento_fact'
)
ld_estado = fields.Selection(
......@@ -31,23 +28,6 @@ class vnt_linea_deuda(models.Model):
compute="_compute_ld_total",
)
#no pude hacer funcionar la cosa como monetary, tuve q hacer el campo total como float
# ld_total = fields.Monetary(
# string=u'Total Factura',
# related='ld_factura.comp_total',
# )
# ld_moneda = fields.Many2one(
# string=u'Moneda',
# related='ld_factura.comp_moneda',
# )
# ld_moneda = fields.Many2one(
# string=u'Moneda',
# comodel_name='res.currency',
# ondelete='set null',
# default=lambda self: self.env.user.company_id.currency_id.id,
# )
ld_select = fields.Boolean(
string="Seleccionar",
......@@ -65,19 +45,113 @@ class vnt_linea_deuda(models.Model):
ondelete='set null',
)
ld_interes = fields.Float(
string=u'Total Interés',
compute='_compute_ld_interes',
store= True,
)
ld_fecha_calculo = fields.Date(
string=u'Fecha de cálculo',
default = datetime.today(),
)
ld_cobro = fields.Selection(
string=u'Cobro',
selection=[('todo', 'Cobro Total'), ('negociado', 'Cobro Negociado'), ('perdido', 'Interés perdido')],
readonly= True,
)
#calculo del total de la factura a traves de comp_total
@api.depends('ld_factura')
def _compute_ld_total(self):
for record in self:
record.ld_total = record.ld_factura.comp_total
# #dominio p elegir solo facturas de venta, queda obsoleto pq las lineas se generaran en otra fx
# @api.onchange('ld_factura')
# def onchange_ld_factura(self):
# result = {}
# result['domain'] = []
# comp_venta_em = self.env['asw.comprobante'].search([('comp_talonario.tal_menu','=','fac'),('comp_tipo_comp','=','e')])
# result['domain'] = {'ld_factura' : [('id', 'in', comp_venta_em.ids)]}
# return result
@api.depends('ld_factura')
def _compute_ld_interes(self):
for record in self:
dias_mes = record.number_of_days_in_month(datetime.now().year, datetime.now().month)
dias_anio = record.number_of_days_in_year(datetime.now().year)
fmt = '%Y-%m-%d'
d1= datetime.strptime(record.ld_fecha_vto, fmt)
d2= datetime.strptime(record.ld_fecha_calculo, fmt)
if d2>d1:
dias_pasados= (d2 - d1).days
cliente_id = record.ld_factura.comp_cliente.id
config_int = self.env['vnt.interes'].search([('int_cliente', '=', cliente_id)], limit=1)
tasa_an = config_int.int_tasa_anual
tasa_diaria = tasa_an/dias_anio
if config_int.int_ritmo == 'mensual':
tasa_mensual = tasa_diaria * dias_mes
cociente = dias_pasados // dias_mes
cociente =+ 1;
int_calculado = cociente * tasa_mensual
if config_int.int_ritmo == 'quincenal':
tasa_quincenal = tasa_diaria * 15
cociente = dias_pasados // 15
cociente =+ 1;
int_calculado = cociente * tasa_quincenal
if config_int.int_ritmo == 'semanal':
tasa_semanal = tasa_diaria * 7
cociente = dias_pasados // 7
cociente =+ 1;
int_calculado = cociente * tasa_semanal
if config_int.int_ritmo == 'diaria':
int_calculado = dias_pasados * tasa_diaria
else:
int_calculado = 0
record.ld_interes = int_calculado
#fx que devuelve nro de dias del mes
def number_of_days_in_month(self, anio, mes):
return monthrange(anio, mes)[1]
#fx que devuelve nro de dias del anio
def number_of_days_in_year(self, anio):
suma = 0
meses = range(1,13)
for m in meses:
suma += self.number_of_days_in_month(anio, m)
return suma
def cobrar_todo(self):
self.ld_cobro = 'todo'
def cobrar_negociado(self):
self.ld_cobro = 'negociado'
#abrir wizard con in_ld self id
datos = {'in_ld': self.id}
nvo_w = self.env['vnt.interes_negociado'].create(datos)
return {
'type': 'ir.actions.act_window',
'res_model': 'vnt.interes_negociado',
'view_mode': 'form',
'view_type': 'form',
'res_id': nvo_w.id,
'target': 'new',
}
def interes_perdido(self):
self.ld_cobro = 'perdido'
self.ld_interes = 0
#no pude hacer funcionar la cosa como monetary, tuve q hacer el campo total como float
# ld_total = fields.Monetary(
# string=u'Total Factura',
# related='ld_factura.comp_total',
# )
# ld_moneda = fields.Many2one(
# string=u'Moneda',
# related='ld_factura.comp_moneda',
# )
# ld_moneda = fields.Many2one(
# string=u'Moneda',
# comodel_name='res.currency',
# ondelete='set null',
# default=lambda self: self.env.user.company_id.currency_id.id,
# )
\ No newline at end of file
......@@ -38,10 +38,14 @@
<field name="arch" type="xml">
<form>
<!--<sheet>-->
<header>
<button type="object" class="oe_highlight" name="traer_ld" string="Cargar Deudas" attrs="{ 'invisible' : ['|',('co_deucarg','=',True),('co_cliente','=',False)]}" />
<field invisible="1" name="co_deucarg" />
</header>
<group col="2" string="Cliente y resumen">
<field colspan="1" nolabel="1" name="co_cliente" />
<field colspan="1" nolabel="1" name="co_cliente" attrs="{ 'readonly' : [('co_deucarg','=',True)]}" />
<div colspan="1"></div>
<field colspan="1" nolabel="1" name="co_resumen" />
<field colspan="1" nolabel="1" name="co_resumen" attrs="{ 'readonly' : [('co_deucarg','=',True)]}" />
</group>
<notebook colspan="4">
<page string="Deudas">
......@@ -51,9 +55,15 @@
<field name="ld_fecha_vto" readonly="1" />
<field name="ld_estado" readonly="1" />
<field name="ld_total" readonly="1"/>
<field name="ld_interes" readonly="1"/>
<field name="ld_fecha_calculo" readonly="1"/>
<!-- <field name="ld_fecha_vto" editable="0" readonly="1" />
<field name="ld_estado" editable="0" readonly="1" />
<field name="ld_total" readonly="1" /> -->
<field name="ld_cobro" readonly="1"/>
<button type="object" class="btn btn-primary" name="cobrar_todo" string="Cobrar Todo" />
<button type="object" class="btn btn-primary" name="cobrar_negociado" string="Cobro Negociado" />
<button type="object" class="btn btn-primary" name="interes_perdido" string="Interés Perdido" />
<field name="ld_select"/>
</tree>
</field>
......
......@@ -20,8 +20,7 @@
<field name="active" eval="True" />
<field name="arch" type="xml">
<tree>
<field name="int_cliente" />
<field name="int_todos"/>
<field name="int_cliente" widget="many2many_tags"/>
<field name="int_ritmo"/>
</tree>
</field>
......@@ -41,8 +40,9 @@
<field name="int_cliente" widget="many2many_tags" />
<field name="int_todos"/>
</group>
<group col="4" string="Frecuencia">
<field nolabel="1" name="int_ritmo"/>
<group col="4" string="Interés">
<field name="int_tasa_anual"/>
<field name="int_ritmo"/>
</group>
<group col="4" string="Plantilla de Envío">
<field nolabel="1" name="int_plantilla"/>
......
from . import interes_negociado
\ No newline at end of file
No preview for this file type
# -*- coding: utf-8 -*-
from odoo import models, fields, api
class vnt_interes_negociado(models.TransientModel):
_name = 'vnt.interes_negociado'
_description = 'Interés Negociado'
in_interes = fields.Float(
string=u'Interés Negociado',
)
in_ld = fields.Many2one(
string='Linea de deuda',
comodel_name='vnt.linea_deuda',
)
def aceptar_in(self):
linea = self.in_ld
linea.write({'ld_interes': self.in_interes})
\ No newline at end of file
<odoo>
<data>
<record id="vnt_interes_negociado_wizard_form" model="ir.ui.view">
<field name="name">Interés Negociado</field>
<field name="model">vnt.interes_negociado</field>
<field name="arch" type="xml">
<form>
<group col="4" string="Ingresar el interés negociado">
<field name="in_interes" />
</group>
<footer>
<button name="aceptar_in" string="Aceptar" type="object" class="oe_highlight"/>
<button special="cancel" string="Cancel"/>
</footer>
</form>
</field>
</record>
<act_window id="vnt_interes_negociado_wizard_action"
name="Interés Negociado"
src_model="vnt.interes_negociado"
res_model="vnt.interes_negociado"
view_mode="form"
target="new"
multi="True"/>
</data>
</odoo>
\ No newline at end of file
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!