Commit a119d1b6 by Juan

Preliminar

1 parent 3b60e318
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
############################################################################### ###############################################################################
from odoo import models, fields, api, _ from odoo import models, fields, api, _
from odoo.exceptions import UserError, ValidationError from odoo.exceptions import UserError, ValidationError, Warning
import datetime import datetime
class hgt_cobro_multiple(models.TransientModel): class hgt_cobro_multiple(models.TransientModel):
...@@ -159,28 +159,37 @@ class hgt_cobro_multiple(models.TransientModel): ...@@ -159,28 +159,37 @@ class hgt_cobro_multiple(models.TransientModel):
self.pcw_total = total + self.pcw_efectivo + self.pcw_retencion_recibida self.pcw_total = total + self.pcw_efectivo + self.pcw_retencion_recibida
#################################LOGICA DE PAGO ##################################################################### ################################# LOGICA DE PAGO #################
@api.multi @api.multi
def pago_facturas_masivo(self): def pago_facturas_masivo(self):
context = self.env.context context = self.env.context
active_ids = context.get('active_ids') active_ids = context.get('active_ids')
facturas = self.env['asw.comprobante'].search([('id', 'in', active_ids)]) facturas = self.env['asw.comprobante'].search([('id', 'in', active_ids)],order="id asc")
if len(facturas) == 0:#no hay facturas seleccionadas if len(facturas) == 0:#no hay facturas seleccionadas
raise Warning("No se seleccionaron facturas") raise Warning("No se seleccionaron facturas")
resivo = self.CrearValidarResivoMultiple() resivo = self.CrearValidarResivoMultiple()
if self.pcw_total != resivo.comp_total:
raise Warning("Error al procesar el pago informar a soporte")
total = self.pcw_total
for factura in facturas: for factura in facturas:
if factura.comp_estado in ["c","b"]:
raise Warning(f"Factura {factura.display_name} esta cancelada o sin validar no se puede Cobrar")
if not factura.comp_adeudado > 0: if not factura.comp_adeudado > 0:
raise Warning(f"Factura {factura.display_name} en cero revisar") raise Warning(f"Factura {factura.display_name} en cero revisar")
if factura.comp_estado in ["c","b"]:
raise Warning(f"Factura {factura.display_name} esta cancelada o sin validar no se puede pagar")
if(not factura.comp_talonario.tal_genera_cta_cte): if(not factura.comp_talonario.tal_genera_cta_cte):
raise Warning(f"Factura {factura.display_name} no mueve cuenta corriente no puedo manejarla") raise Warning(f"Factura {factura.display_name} no mueve cuenta corriente no puedo manejarla")
self.LogicaFacturas(factura,resivo) total = self.LogicaFacturas(factura,resivo,total)
resivo.aumentar_numeracion_talonario()
resivo.comp_fecha_validacion = fields.Datetime.now()
resivo.generar_monto_adeudado()
resivo.validar_nro_comprobante()
return(resivo) return(resivo)
@api.multi @api.multi
def generar_recibo(self): def generar_recibo(self):
resivo = self.pago_facturas_masivo() resivo = self.pago_facturas_masivo()
return { return {
'view_type': 'form', 'view_type': 'form',
'view_mode': 'form', 'view_mode': 'form',
...@@ -190,9 +199,36 @@ class hgt_cobro_multiple(models.TransientModel): ...@@ -190,9 +199,36 @@ class hgt_cobro_multiple(models.TransientModel):
'res_id': resivo.id, 'res_id': resivo.id,
} }
def LogicaFacturas(self,factura,resivo): def LogicaFacturas(self,factura,resivo,total):
print(factura.id,factura.comp_adeudado,total )
tmp = total
total = total - factura.comp_adeudado
if total != 0.0:
self.MovimientoCuentaCorriente(factura,resivo,tmp)
if total < 0.0:
total = 0.0
return(total)
#Nombre heredado no me gusto pero bue....
def MovimientoCuentaCorriente(self,factura,resivo,total):
#Total = total
#diff = total - factura.comp_adeudado
movimiento = factura.comp_adeudado
if factura.comp_adeudado >= total: #diff < 0.0:
movimiento = total
print( movimiento, factura.display_name)
if movimiento < 0.0:
raise Warning("debug")
cta_cte = self.env['asw.cta_cte'].create({
'cc_cliente' : resivo.comp_cliente.id,
'cc_comprobante' : resivo.id,
'cc_moneda' : resivo.comp_moneda.id,
'cc_monto' : movimiento
})
cta_cte.afectar(factura.id)
resivo.generar_monto_adeudado()
print()
pass
def CrearValidarResivoMultiple(self,tipo="e"): def CrearValidarResivoMultiple(self,tipo="e"):
talonario = self.env['asw.talonario'].search([('tal_menu','=','rec'),('tal_tipo','=',tipo),('tal_mov_caja', '!=', 'sn')], limit=1) talonario = self.env['asw.talonario'].search([('tal_menu','=','rec'),('tal_tipo','=',tipo),('tal_mov_caja', '!=', 'sn')], limit=1)
...@@ -207,6 +243,9 @@ class hgt_cobro_multiple(models.TransientModel): ...@@ -207,6 +243,9 @@ class hgt_cobro_multiple(models.TransientModel):
self.agregar_cheques_recibidos() self.agregar_cheques_recibidos()
self.agregar_transferencias_recibidas() self.agregar_transferencias_recibidas()
self.agregar_tarjetas() self.agregar_tarjetas()
self.pcw_recibo._onchange_comp_linea_facturas()
self.pcw_recibo.realizar_validaciones()
self.pcw_recibo._onchange_talonario()
return(self.pcw_recibo) return(self.pcw_recibo)
#################################################LOGICA CREACION RESIVO################################################## #################################################LOGICA CREACION RESIVO##################################################
......
...@@ -5,6 +5,9 @@ ...@@ -5,6 +5,9 @@
<field name="model">hgt.cobro_multiple</field> <field name="model">hgt.cobro_multiple</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<form> <form>
<h4>Nota 1: Si el monto a cobrar no llega a cubrir totalmente el saldo de las facturas elegidas, saldará completamente de la más vieja a la más nueva quedando la última con un saldo parcial.</h4>
<h4>Nota 2: Si el cobro excede a las facturas elegidas, el excedente se destinará automáticamente a saldar (total o parcialmente) a la factura con saldos pendientes más antigua en existencia.</h4>
<h4>Nota 3: Si el cobro excede a las facturas elegidas y no existen facturas con saldos pendientes, por fuera de las elegidas, el excedente quedará a favor del cliente en la cuenta corriente y podrá ser imputado a la primer factura nueva de forma automática.</h4>
<field name="pcw_cli_razon_social" invisible='1'/> <field name="pcw_cli_razon_social" invisible='1'/>
<group col="2"> <group col="2">
<group col="2" > <group col="2" >
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!