Anticipos, cartera pendiente y saldos

Esta vista SQL permite ver el estado de la cartera de los clientes, separado por anticipos y cartera pendiente, y compararlo con el saldo contable.

Los clientes que salgan en la vista es que alguna cosa no cuadra entre contabilidad y cartera.

SELECT CLIENTES.IDORG, CLIENTES.CODCLI, CLIENTES.NOMCLI, CLIENTES.CUENTA,
ANTICIPOS.ANTICIPO,
CARTERA.PENDIENTE,
DIARIO.SALDO,
(DIARIO.Saldo – COALESCE (CARTERA.Pendiente, 0) + COALESCE (ANTICIPOS.Anticipo, 0)) AS DIFERENCIA

FROM CLIENTES WITH (NOLOCK)

LEFT OUTER JOIN (SELECT CODCLI, SUM(IMPORTE – IMPACUENTA) AS Anticipo FROM CARTERA WHERE (COBPAG = ‘C’) AND (ANTICIPO = ‘A’) GROUP BY CODCLI) AS ANTICIPOS ON ANTICIPOS.CODCLI=CLIENTES.CODCLI

LEFT OUTER JOIN (SELECT CODCLI, SUM(IMPORTE) AS Pendiente FROM CARTERA WHERE (COBPAG = ‘C’) AND (PAGADO = ‘F’) GROUP BY CODCLI) AS CARTERA ON CARTERA.CODCLI=CLIENTES.CODCLI

LEFT OUTER JOIN (SELECT APUNTES.CUENTA, SUM(APUNTES.DEBE – APUNTES.HABER) AS Saldo FROM APUNTES GROUP BY APUNTES.CUENTA) AS DIARIO ON DIARIO.CUENTA=CLIENTES.CUENTA

WHERE ( [DevolverRegistros, SysName, 1 = 1])
AND ( [CondicionTabla, SysName, 1 = 1])
AND ( [Filtro, SysName, 1 = 1])
AND ( ( ‘[TextoBusqueda, SysName, ”]’ = ”) OR
( CLIENTES.CODCLI LIKE ‘%[TextoBusqueda, SysName, ”]%’) OR
( CLIENTES.NOMCLI LIKE ‘%[TextoBusqueda, SysName, ”]%’) OR
( CLIENTES.TELCLI LIKE ‘%[TextoBusqueda, SysName, ”]%’))
AND (DIARIO.Saldo – COALESCE (CARTERA.Pendiente, 0) + COALESCE (ANTICIPOS.Anticipo, 0) <> 0)

ORDER BY CLIENTES.CODCLI, CLIENTES.NOMCLI, CLIENTES.TELCLI

Usa sub consultas para obtener

Antipos no consumidos:
LEFT OUTER JOIN (SELECT CODCLI, SUM(IMPORTE – IMPACUENTA) AS Anticipo FROM CARTERA WHERE (COBPAG = ‘C’) AND (ANTICIPO = ‘A’) GROUP BY CODCLI) AS ANTICIPOS ON ANTICIPOS.CODCLI=CLIENTES.CODCLI

Cartera cobros pendiente:
LEFT OUTER JOIN (SELECT CODCLI, SUM(IMPORTE) AS Pendiente FROM CARTERA WHERE (COBPAG = ‘C’) AND (PAGADO = ‘F’) GROUP BY CODCLI) AS CARTERA ON CARTERA.CODCLI=CLIENTES.CODCLI

Saldo contable:
LEFT OUTER JOIN (SELECT APUNTES.CUENTA, SUM(APUNTES.DEBE – APUNTES.HABER) AS Saldo FROM APUNTES GROUP BY APUNTES.CUENTA) AS DIARIO ON DIARIO.CUENTA=CLIENTES.CUENTA

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.