cancel
Showing results for 
Search instead for 
Did you mean: 

Aplicacion pagos de clientes a facturas mas antiguas

Former Member
0 Kudos

Buen dia expertos.

En la empresa donde recien comence a laborar tienen un retraso increible con la aplicacion de la cobranza. Es decir no la han estado manejando via SAP B1, sino por fuera.

Se tienen los pagos totales de los clientes (monto de todos los depositos recibidos por parte de cada uno) pero aun no se han aplicado a las facturas.

El tema del DTW ya lo domino bien, mas quisiera que me orientaran como hacerle para obtener una relacion de las facturas mas vencidas y aplicarle esos pagos.

Por ejemplo Cliente1 ha pagado hasta la fecha 50,000 pesos.

Tiene las siguientes facturas (en orden de vencimiento):

- FacturaA: 10,000

- FacturaF: 7,000

- FacturaB: 5,000

- FacturaD: 15,000

- FacturaC: 15,000

- FacturaE: 20,000

- FacturaG: 10,000

Entonces esos 50,000 que lleva pagados, quisiera aplicarlos en las facturas mas vencidas, totalmente las que se pueda y parcialmente si queda aun saldo pagado.

El resultado esperado es que se salden:

- FacturaA: 10,000 PAGADO Saldo disponible del pago: 40,000

- FacturaF: 7,000 PAGADO Saldo disponible del pago: 33,000

- FacturaB: 5,000 PAGADO Saldo disponible del pago: 28,000

- FacturaD: 15,000 PAGADO Saldo disponible del pago: 13,000

- FacturaC: 15,000 PAGO PARCIAL del Saldo disponible de 13,000, dejando pendiente esta factura con 2,00, y el resto de las facturas E y G.

Muchas gracias,

Israel.

Accepted Solutions (1)

Accepted Solutions (1)

former_member188440
Active Contributor
0 Kudos

Yo re recomiendo que corras un query el cual lo agrupes por fechas de vencimiento y lo ordenes por cantidades para que asi agotes el pago que tienes disponible para aplicar. De tal forma que unicamente armes tus templates en base a lo que te alcanza para pagar.

Es lo que se me ocurre, asi cuando consultes de nuevo tu query, el resultado se ira reduciendo, podrias tomar como base que el total de tu factura sea menor o igual a tu disponible

where doctotal <='1000' por ejemplo, asi tus resultados seran candidatos a pagos, de acuerdo a tu ejemplo

Former Member
0 Kudos

Muchas gracias Mauricio por tu idea, es mas o menos loq ue estaba viendo.

Mas quisiera que se agregara una columna con el valor de la cantidad que se aplicará a esa factura en particular.

Ya tengo el query que me arroja las facturas abiertas con su saldo actual pendiente a cobro por orden de fecha de vencimiento, y en otra tabla que usare para ingresar los depositos, haciendo un join, solo me muestra aquellas facturas abiertas con algun deposito hecho por el cliente.

Pero quisiera que solo me mostrara aquellas cuya suma sea igual o menor al deposito que tiene disponible ese cliente y en caso de que le quede saldo, este se aplique a la siguiente factura hasta que ya no quede disponible. Y en esa columna adicional, se muestren las cantidades a aplicar.

El select de este query (sin mostrar las variables)me jala muy bien, pero la declaracion de variables aun tengo problemas...

La variable @Saldo sera igual al deposito que haga el cliente, la de @Aplicacion es lo que se aplicara a cada factura cuando el Saldo sea mayor a cero, y a la vez esta variable se ira disminuyendo al restar el valor del @Saldo - lo que se pague de la factura y despues esa misma variable se restara a si misma el valor aplicado, hasta llegar a cero.

DECLARE @Saldo NUMERIC(19,6)

DECLARE @Aplicacion NUMERIC(19,6)

Set @Saldo = Depositos.Deposito

WHILE (@Saldo > 0)

Set @Aplicacion = @Saldo - (OINV.DocTotal - OINV.PaidToDate)

Set @Saldo = @Saldo - @Aplicacion

BEGIN

select CardCode, DocEntry, DocNum, DocDate, DocDueDate, DocTotal,

PaidToDate, DocTotal - PaidToDate As SaldoPendiente, Depositos.Deposito, @Saldo, @Aplicacion from OINV

INNER JOIN Depositos

On OINV.CardCode = Depositos.Cliente

Where DocStatus = 'O'

Order By CardCode, DocDueDate

END

Para querer obtener:

CLIENTE-FACTURA-APLICACION

Hasta que el deposito inicial, llegue a Cero, aunque deje la ultima factura con saldo a pagar.

Slds,

Israel.

Answers (0)