69 lines
2.5 KiB
Plaintext
69 lines
2.5 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,
|
|
pfecha,corte DATE,
|
|
valor,valor_avance,total_saldo DEC(12,2),
|
|
dias,de1a30,de31a45,de46a60,masde60,mas120 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
|
|
|
|
CALL fgl_winmessage("VALOR",total_Saldo,"info")
|
|
END FUNCTION |