Commit 3e2b4bf7 by Juan

Correccion de asociacion factura factura

1 parent e91af91e
......@@ -8,3 +8,4 @@ from . import currency
from . import pago_discriminado
from . import cheque
from . import valor
from . import cta_cte
\ No newline at end of file
# -*- coding: utf-8 -*-
from odoo import models, fields, api, exceptions
from .qr import qrfiscal
from odoo.exceptions import UserError, ValidationError, Warning, RedirectWarning
import base64, datetime
class res_currency(models.Model):
_inherit = 'asw.cta_cte'
"""Heredo esta classe para modificar el comportamiento de la cuenta corriente
No quiero que se afecte Factura - Factura"""
@api.multi
def afectar(self, id_afectada=False):
""" si se pasa un id_afectada la afectacion se realiza sobre este
de otra manera se afecta a todos los comprobantes en orden de aparicion """
afectaciones = []
if (id_afectada is not False and isinstance(id_afectada, int)):
# Solo debe afectar por el monto adeudado del comprobante
cc_afectadora = self.search([('cc_comprobante', '=', id_afectada)])
afectacion = self.genera_afectacion(cc_afectadora)
afectaciones.append(afectacion)
elif (self.cc_cliente.id is False):
return
fac = ["fac","rem","rve","ped","pre","inv"]#Esto cambio el metodo de reintegro hay q pensar q hacemos
res = ["rec","rem","rve","ped","pre","inv"]
blokear = [] #Por puta seguridad
if self.cc_comprobante.comp_talonario.tal_menu == "fac":
blokear = fac # Si es factura blokea factura
else:
blokear = res # si no es factura es recibo blokero recibos
cc_cliente = self.search([('cc_cliente','=', self.cc_cliente.id),
('cc_tipo_relacionado','!=', self.cc_tipo_relacionado),
('cc_monto_adeudado','!=', 0)])
for cc_afectada in cc_cliente:
if cc_afectada.cc_comprobante.comp_talonario.tal_menu in blokear:#si esta en la lista me lo salto
break
cc_afectada._compute_cc_monto_adeudado()
if(self.cc_monto_adeudado != 0):
afectacion = self.genera_afectacion(cc_afectada)
afectaciones.append(afectacion)
else:
break
return afectaciones
\ No newline at end of file
......@@ -51,6 +51,9 @@ class hgt_cobro_multiple(models.Model):
nota = fields.Text(string='nota',readonly=True,
compute='_compute_nota')
nota_fija = fields.Char(string='Nota Fija')
pcw_referencia = fields.Char(
string=u'Referencia',
)
......@@ -81,7 +84,7 @@ class hgt_cobro_multiple(models.Model):
# Formas de pago
pcw_chq_emitidos = fields.Many2many(
comodel_name='asw.cheque',
relation='pago_discriminado_chq_emitido', #ya lo edite
relation='pago_discriminado_chq_emitido_pagos', #ya lo edite
column1='asw_cheque_id',
column2='asw_cliente_id',
string='Cheques Propios'
......@@ -94,7 +97,7 @@ class hgt_cobro_multiple(models.Model):
pcw_chq_terceros = fields.Many2many(
comodel_name='asw.cheque',
relation='pago_discriminado_chq_terceros', #ya lo edite
relation='pago_discriminado_chq_terceros_pagos', #ya lo edite
column1='asw_cheque_id',
column2='asw_cliente_id',
string='Cheques Propios',
......@@ -102,7 +105,7 @@ class hgt_cobro_multiple(models.Model):
pcw_transferencias_emitidas = fields.Many2many(
comodel_name='asw.valores',
relation='pago_discriminado_transferencia_emitida', #Ya lo edite
relation='pago_discriminado_transferencia_emitida_pagos', #Ya lo edite
column1='pago_cliente_id',
column2='asw_valores_id',
string='Transferencias Emitidas'
......@@ -110,7 +113,7 @@ class hgt_cobro_multiple(models.Model):
pcw_tarjetas = fields.Many2many(
comodel_name='asw.valores',
relation='hgt_pago_discriminado_tarjeta', #ya lo edite
relation='hgt_pago_discriminado_tarjeta_pagos', #ya lo edite
column1='pago_cliente_id',
column2='asw_valores_id',
string='Tarjetas'
......@@ -118,7 +121,7 @@ class hgt_cobro_multiple(models.Model):
pcw_retenciones = fields.Many2many(
comodel_name='asw.valores',
relation='pago_discriminado_retencion',#ya lo edite
relation='pago_discriminado_retencion_pagos',#ya lo edite
column1='pago_cliente_id',
column2='asw_valores_id',
string='Retenciones'
......@@ -137,6 +140,7 @@ class hgt_cobro_multiple(models.Model):
comprobantes = fields.Many2many(comodel_name='asw.comprobante', string='Comprobantes')
pcw_total_balance = fields.Monetary(
string='Diferencia',
compute='_calcular_diferencia',
......@@ -195,6 +199,12 @@ class hgt_cobro_multiple(models.Model):
record.compute_nota()
def compute_nota(self):
if self.nota_fija != False:
self.nota = self.nota_fija
return(None)
self.nota = self.calcular_nota()
def calcular_nota(self):
context = self.env.context
Texto = "Facturas de proveedores a pagar:"
Total = 0
......@@ -202,8 +212,8 @@ class hgt_cobro_multiple(models.Model):
Total = Total + factura.comp_adeudado
Texto = f"{Texto}\n{factura.display_name} {factura.comp_adeudado}"
Texto = f"{Texto}\nTotal {Total}".replace(".",self.PuntoDecimal())
self.nota = Texto
#print(self.nota)
return(Texto)
@api.depends('pcw_efectivo','pcw_tarjetas','pcw_transferencias_emitidas','pcw_retenciones','pcw_chq_emitidos','pcw_chq_terceros')
......@@ -225,6 +235,7 @@ class hgt_cobro_multiple(models.Model):
def _calcular_diferencia(self):
total = self.pcw_total_pagar - self.pcw_total #+ self.pcw_retencion_recibida
self.pcw_total_balance = total
@api.depends('comprobantes')
def _calcular_pago(self):
total = 0
......@@ -236,14 +247,14 @@ class hgt_cobro_multiple(models.Model):
@api.multi
def pago_facturas_masivo(self):
context = self.env.context
active_ids = context.get('active_ids')
facturas = self.env['asw.comprobante'].search([('id', 'in', active_ids)],order="id asc")
facturas = self.comprobantes
self.FijarNota()#Acienta el estado del detalle
if len(facturas) == 0:#no hay facturas seleccionadas
raise Warning("No se seleccionaron facturas")
resivo = self.CrearValidarResivoMultiple()
if self.pcw_total != resivo.comp_total:
resivo = self.CrearValidarResivoMultiple()#revisado
if self.pcw_total != resivo.comp_total:#Error en el calculo
raise Warning("Error al procesar el pago informar a soporte")
##############Aca terminan las validaciones y empesamos a asignaR############################################
total = self.pcw_total
for factura in facturas:
if factura.comp_estado in ["c","b"]:
......@@ -273,6 +284,7 @@ class hgt_cobro_multiple(models.Model):
def generar_recibo(self):
resivo = self.pago_facturas_masivo()
self.ValoresEnCajas(resivo)
self.estado = "aprobado"
return {
'view_type': 'form',
'view_mode': 'form',
......@@ -311,20 +323,22 @@ class hgt_cobro_multiple(models.Model):
def CrearValidarResivoMultiple(self,tipo="r"):
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'),
("tal_codigo","!=","OP")], limit=1)
self.pcw_recibo = self.env['asw.comprobante'].generar_comprobante(
talonario,
self.pcw_cliente,
self.pcw_total,
self.pcw_referencia
)
self.agregar_efectivo()
self.agregar_retencion()
self.agregar_cheques()
self.agregar_transferencias_recibidas()
self.agregar_tarjetas()
self.agregar_efectivo()#OK
self.agregar_retencion()#OK
self.agregar_cheques()#OK
self.agregar_transferencias_emitidas()#ok 350
self.agregar_tarjetas()#OK
self.pcw_recibo._onchange_comp_linea_facturas()
self.pcw_recibo.realizar_validaciones()
self.pcw_recibo.realizar_validaciones()#
self.pcw_recibo._onchange_talonario()
return(self.pcw_recibo)
......@@ -342,14 +356,17 @@ class hgt_cobro_multiple(models.Model):
def agregar_cheques(self):# aca cambia la cosa, lo voy a usar como cheque propio
if(len(self.pcw_chq_emitidos) > 0):
cheque_recibido = self.env['asw.tipos_valores'].search([('tv_tipo', '=', 'che')])
for cheque in self.pcw_chq_emitidos:
self.pcw_recibo.agregar_cheque(cheque, cheque_recibido, self.caja_cheque.id)
def agregar_transferencias_recibidas(self):
transferencia_recibida = self.env['asw.tipos_valores'].search([('tv_tipo','=','trr')])
self.pcw_transferencias_recibidas.write({'val_comprobante' : self.pcw_recibo.id, 'val_tipo' : transferencia_recibida.id})
cheque_propio = self.env['asw.tipos_valores'].search([('tv_tipo', '=', 'che')])
for cheque in self.pcw_chq_emitidos: #Cheques propios
self.pcw_recibo.agregar_cheque(cheque, cheque_propio, False)#No afecta caja despues manejo
if(len(self.pcw_chq_terceros) > 0):
cheque_terceros = self.env['asw.tipos_valores'].search([('tv_tipo', '=', 'che')])
for cheque in self.pcw_chq_terceros: #Cheques terceros
self.pcw_recibo.agregar_cheque(cheque, cheque_terceros, False)#No afecta caja despues manejo
def agregar_transferencias_emitidas(self):
transferencia_recibida = self.env['asw.tipos_valores'].search([('tv_tipo','=','tre')],limit=1)
self.pcw_transferencias_emitidas.write({'val_comprobante' : self.pcw_recibo.id, 'val_tipo' : transferencia_recibida.id})
def agregar_tarjetas(self):
tarjeta_credito = self.env['asw.tipos_valores'].search([('tv_tipo','=','ta'),('tv_descripcion','ilike','credito')])
......@@ -388,9 +405,9 @@ class hgt_cobro_multiple(models.Model):
tarjetas.append(valor)
#Asocio segun el tipo de valor
self.MoverValores(efectivo, self.caja_efectivo.id)
self.MoverValores(cheques, self.caja_cheque.id)
self.MoverValores(transferencias)
self.MoverValores(tarjetas)
#self.MoverValores(cheques, self.caja_cheque.id)
#self.MoverValores(transferencias)
#self.MoverValores(tarjetas)
def MoverValores(self, valores, caja_destino_id=True):
......@@ -398,8 +415,8 @@ class hgt_cobro_multiple(models.Model):
for valor in valores:
if caja_destino_id == True:
caja_destino_id = valor.valor_caja_id.id
if caja_destino_id == False:
raise Warning("No esta definida una de las cajas, todos los valores deven tener cajas asignadas")
#if caja_destino_id == False:
#raise Warning("No esta definida una de las cajas, todos los valores deven tener cajas asignadas")
valor.valor_caja_id.caja_valor_ids = [(3,valor.id,)]#elimino el valor de la caja actual
valor.valor_caja_id = caja_destino_id #cambio la caja en el valor
valor.valor_caja_id.caja_valor_ids = [(4,valor.id,)]#agrego el valor a la caja destino
......@@ -454,9 +471,17 @@ class hgt_cobro_multiple(models.Model):
self.pcw_chq_terceros = False
self.env.cr.commit()
def FijarNota(self):
"""esta funcion debe ser llamada antes de realizar la gestion de recibo"""
self.nota_fija = self.calcular_nota()
@api.multi
def write(self, values):
name = f"ERO {str(self.id).zfill(5)}"#Genero el codigo del pago
values["name"] = name
return super(hgt_cobro_multiple, self).write(values)
def cancel(self):
self.estado = "cancelado"
\ No newline at end of file
......@@ -19,6 +19,7 @@
<field name="pcw_referencia" />
<field name="pcw_efectivo" colspan='2'/>
<field name="caja_efectivo"/>
<field name="pcw_recibo" readonly="1"/>
</group>
<group string="Detalles" >
<field name="nota" nolabel="1"/>
......@@ -106,8 +107,8 @@
</group>
<h4>Nota 4: La diferencia si es negativa implica que se esta abonando más que lo adeudado en las facturas seleccionadas impactando un saldo a favor de la empresa en la cta cte del proveedor, de existir facturas pendientes no seleccionadas dicho saldo se aplicará a la más vieja</h4>
<footer>
<button name="generar_recibo" string="Generar Recibo" type="object" class="btn btn-success"/>
<button special="cancel" string="Cancel"/>
<button name="generar_recibo" string="Generar Recibo" type="object" class="btn btn-success" attrs="{ 'invisible':[('estado', '!=', 'borrador')]}"/>
<button special="cancel" string="Cancel" attrs="{ 'invisible':[('estado', '=', 'cancelado')]}"/>
</footer>
</form>
</field>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!