Files
MBS/PROYECTO/otrodir/saldo_cliente.4gl
T

69 lines
2.4 KiB
Plaintext

{MAIN
DEFER INTERRUPT
CONNECT TO "smarmotech" USER 'jsoto' USING "lmmjvsd2014"
CALL saldo_cliente(16,392)
END MAIN
}
FUNCTION saldo_cliente(xtipo_cliente,xsec_cliente)
DEFINE selec1 STRING,
xtipo_cliente,xsec_cliente INT,
corte DATE,
valor_avance,total_saldo DEC(12,2),
dias,de31a45 SMALLINT
DEFINE doccli RECORD
tipo_cliente SMALLINT,
sec_cliente SMALLINT,
nombre CHAR(30),
aplica_a INTEGER,
pendiente DECIMAL(12,2),
fecha_factura DATE,
sec_vend SMALLINT,
cliente CHAR(7)
END RECORD
LET corte = TODAY
LET selec1 =
"SELECT a.tipo_cliente,a.sec_cliente,c.nombre,a.aplica_a, ",
" SUM(a.valor+a.monto_desc) ",
"FROM cctb00001 a, vetb00004 c ",
"WHERE a.tipo_cliente=c.tipo_cliente AND a.sec_cliente = c.sec_cliente AND ",
" a.fecha_orig <= ? AND a.status_t is null ",
"and a.tipo_doc not in ('AV','PC') and ",
" a.tipo_cliente = ? AND a.sec_cliente = ? ",
" GROUP BY a.tipo_cliente,a.sec_cliente,c.nombre,a.aplica_a HAVING SUM(a.valor + a.monto_desc) <> 0 "
PREPARE comando FROM selec1
DECLARE ft_pendiente CURSOR FOR comando
OPEN ft_pendiente USING corte ,xtipo_cliente,xsec_cliente
LET total_saldo = 0
FOREACH ft_pendiente INTO doccli.*
SELECT SUM(a.valor+a.monto_desc)
INTO valor_avance
FROM cctb00001 a
WHERE a.tipo_cliente=doccli.tipo_cliente AND a.sec_cliente = doccli.sec_cliente AND
a.fecha_orig <= corte AND a.status_t is null and a.tipo_doc in('AV') AND
a.num_doc = a.aplica_a
LET doccli.fecha_factura = "01/01/2001"
SELECT MAX(a.fecha_ven) INTO doccli.fecha_factura
FROM cctb00001 a
WHERE a.num_doc = doccli.aplica_a and
a.tipo_doc not in ("PG" ,"PC","NC","ND","AV") and
a.tipo_cliente = doccli.tipo_cliente and a.sec_cliente = doccli.sec_cliente and
a.status_t is null
LET dias = corte - doccli.fecha_factura
IF dias > 0 AND dias < 31 THEN
LET de31a45 = de31a45 + doccli.pendiente
LET total_saldo = total_saldo + doccli.pendiente
END IF
END FOREACH
RETURN total_saldo
END FUNCTION