Facturas Y cobros

17/04/2004 - 17:22 por Julio | Informe spam
Hola grupo

Tengo problema para poder crear un codigo para cobrar un recargo cuando una
persona se pasa de la fecha de pago.

Tengo dos tablas Como son "Facturas y Cobros"

En la tabla facturas tengo lo siguiente
FacturasID
ClienteID
FechaLimite
Total
Entres otros pero estos son los principales

En la tabla Cobros tengo
CobroID
ClienteID
FacturaID
FechaCobrado
Cantidad

Ahora bien el recargo consiste en lo siguiente:

Si un cliente tiene una facturas en el mes 01/01/04 de 1500 y su fechalimite
para pagar es 01/15/04 y el hace un pago en fecha 01/12/04 de 1000 y luego
hace otro pago en fecha 01/18/04 de 500 entonces se le cobrara recargo por
500 ya que pago 1000 antes de la fechaLimite.

Otro Ejemplo
Si un cliente tiene una facturas en el mes 02/01/04 de 2000 y su fechalimite
para pagar es 02/15/04 y el hace un pago en fecha 01/12/04 de 2000 entonces
no tiene recargo ya que pago antes de la fechaLimite, pero si el paga los
2000 en fecha 02/17/04 entonces se le cobrara recargo por los 2000 ya que
pago despues de la fecha Limite.

Entonces tengo problema para crear este codigo ya que un cliente puede
hacerle dos pago a una misma facturas, ya sea un pago antes de la
fechaLimite y otro despues de la fecha Limite o Ambos antes de la
fechaLimite o Despues.
Pueden existir todas estas posibilidades.

Lo que necesito es acumular el recargo por ClienteID y por facturaID tomando
en cuenta la fechaLimite

Espero que hayan entendido y le agradecere la ayuda.
 

Leer las respuestas

#1 Jose Mariano Alvarez \(MUG\)
18/04/2004 - 16:26 | Informe spam
Normalmente los pagos se almacenan en por lo menos dos tablas para obtener
algunas de las funcionalidades que precisas.
Una tiene el pago en si mismo y la otra la imputación de los pagos en los
comprobantes que correspondan. Esta relación entre pagos e imputaciones es 1
a N. y la de imputacion N a 1 con la de facturas o comprobantes. Si no lo
haces de esa forma puedes perder información ya que si el cliente por
ejemplo te adelanta dinero (algo improbable pero posible aunque sean solo
unos centavos), puede que no puedas registrarlo hasta la próxima
facturación.

De cualquier forma no es lo mismo mora que recargo.
Lo que has expresado en tu correo original es "Lo que necesito es acumular
el recargo por ClienteID y por facturaID tomando"
Ahora, recargo suele ser el importe adicional que le cobras a alguien por
algún hecho no imputable a ti. Por lo tanto pensaría que el mismo viene en
el importe de la próxima factura como un ítem de la misma o es un importe
que lo imputas en el momento del cobro pero haciéndole una factura
adicional. Entonces si lo que quieres es eso, hay que hacer más cosas y
modificar el modelo.

Siguiendo con tu ejemplo y tratando de interpretar lo que precisas, esto
podria ser algo de lo que esperas obtener.

ImporteCobradoEnFecha
ImporteCobradoRetrasado
ImportesImpagoNoVencido
ImportesImpagosVencido
ImportesImpagoAlVencimeinto
ImporteCobrado
ImporteImpago

select
c.FacturaID ,
SUM(
case
when fechalimite >= Fechacobrado
then c.cantidad
else 0
end
) ImporteCobradoEnFecha,
SUM(
case
when fechalimite < Fechacobrado
then c.cantidad
else 0
end
) ImporteCobradoRetrasado,
SUM(
case
when getdate() <= fechalimite
then -c.cantidad
else 0
end
) + MIN(f.cantidad) ImportesImpagoNoVencido,
SUM(
case
when getdate() > fechalimite
then -c.cantidad
else 0
end
) + MIN(f.cantidad) ImportesImpagosVencido,
SUM(
case
when fechalimite >= Fechacobrado
then -c.cantidad
else 0
end
) + MIN(f.cantidad) ImportesImpagoAlVencimeinto,
SUM(-c.cantidad ) ImporteCobrado -- Igual a la suma de los dos primeros
SUM(-c.cantidad ) + MIN(f.cantidad) ImporteImpago
from cobros c
inner join Facturas f
on c.facturaid=f.facturaid
group by c.FActuraid


Espero te sirva

Jose Mariano Alvarez
jose (.) alvarez * *Arroba* * mug (.) org (.) ar
Comunidad de base de datos
Grupo de Usuarios Microsoft
www.mug.org.ar


.

Preguntas similares