Files
MBS/PROYECTO/ccdir/ccprcs006.4gl
T

201 lines
9.2 KiB
Plaintext

{
PROGRAMA: CCPRCS006
OBJETIVO: Consultar los balances de los tipos de clientes en diferentes monedas
DESARROLLADO POR: ING. JUAN SOTO
FECHA DESARROLLO: ENERO 12, 2022
}
GLOBALS
"ccprgb000.4gl"
MAIN
DEFER INTERRUPT
CALL STARTLOG("ccprmt01.log")
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CONNECT to "smarmotech" USER usuarios USING clave
CALL ccprcs006()
END MAIN
FUNCTION ccprcs006()
DEFINE data DYNAMIC ARRAY OF RECORD
ventas VARCHAR(50),
tipo_cliente INT,
valorOriginal,debitoOriginal,creditoOriginal,balanceAct,valorLocal,debitoLocal,creditoLocal,balanceLocal DEC(12,2),
idventas SMALLINT
END RECORD,
fecha1,fecha2 DATE,
criterio,selec STRING,
tasa DEC(12,2),
idx INT
call ui.Interface.loadStyles("formularios")
OPEN WINDOW w1 WITH FORM "ccfmcs006"
DIALOG ATTRIBUTES(UNBUFFERED, FIELD ORDER FORM)
CONSTRUCT criterio ON a.ventas,b.tipo_cliente FROM ventas1,tipo_cliente2
END CONSTRUCT
INPUT BY NAME fecha1,fecha2
AFTER INPUT
NEXT FIELD ventas1
END INPUT
ON ACTION genera ATTRIBUTE(TEXT="Busca Informacion", IMAGE='find')
IF fecha1 IS NULL THEN
CALL msg(16)
NEXT FIELD fecha1
END IF
IF fecha2 IS NULL THEN
CALL msg(16)
NEXT FIELD fecha2
END IF
IF fecha2 < fecha1 THEN
CALL msg(51)
NEXT FIELD fecha1
END IF
DELETE FROM ccprcs006
{
"INSERT INTO ccprcs006 ",
" SELECT a.descripcion,b.tipo_cliente,0,0,0,0,0,0,a.ventas FROM vetb00061 a,vetb00060 b
WHERE a.ventas = b.ventas AND b.clientes_activos = 'SI' AND ",criterio CLIPPED,
" UNION
SELECT a.descripcion,b.tipo_cliente, SUM(c.valor+c.monto_desc),0,0,0,0,0,a.ventas FROM vetb00061 a,vetb00060 b,cctb00001 c
WHERE a.ventas = b.ventas AND
(b.tipo_cliente = c.tipo_cliente AND c.sec_cliente = c.sec_cliente) AND
(c.fecha_orig < ?) AND (c.tipo_doc NOT IN ('AV','AP')) AND
c.status_t IS NULL AND b.clientes_activos ='SI' AND ",
criterio CLIPPED,
" GROUP BY a.descripcion,a.ventas,b.tipo_cliente
UNION
SELECT a.descripcion,b.tipo_cliente,SUM(c.valor+c.monto_desc)*-1,0,0,0,0,0,a.ventas FROM vetb00061 a,vetb00060 b,cctb00001 c
WHERE a.ventas = b.ventas AND
(b.tipo_cliente = c.tipo_cliente AND c.sec_cliente = c.sec_cliente) AND
(c.fecha_orig <? ) AND
(c.tipo_doc IN ('AV') AND c.num_doc=c.aplica_a) AND
c.status_t IS NULL AND b.clientes_activos ='SI' AND ",
criterio CLIPPED,
" GROUP BY a.descripcion,a.ventas,b.tipo_cliente
UNION
SELECT a.descripcion,b.tipo_cliente,0,SUM(c.valor+c.monto_desc),0,0,0,0,a.ventas FROM vetb00061 a,vetb00060 b,cctb00001 c
WHERE a.ventas = b.ventas AND
(b.tipo_cliente = c.tipo_cliente AND c.sec_cliente = c.sec_cliente) AND
(c.fecha_orig BETWEEN ? AND ?) AND
(c.tipo_doc NOT IN ('AV','AP')) AND
c.valor > 0 AND
c.status_t IS NULL AND b.clientes_activos ='SI' AND ",
criterio CLIPPED,
" GROUP BY a.descripcion,a.ventas,b.tipo_cliente
UNION
SELECT a.descripcion,b.tipo_cliente,0,0,SUM(c.valor+c.monto_desc),0,0,0,a.ventas FROM vetb00061 a,vetb00060 b,cctb00001 c
WHERE a.ventas = b.ventas AND
(b.tipo_cliente = c.tipo_cliente AND c.sec_cliente = c.sec_cliente) AND
(c.fecha_orig BETWEEN ? AND ?) AND
(c.tipo_doc NOT IN ('AV','AP')) AND
c.valor < 0 AND
c.status_t IS NULL AND b.clientes_activos ='SI' AND ",
criterio CLIPPED,
" GROUP BY a.descripcion,a.ventas,b.tipo_cliente
ORDER BY a.descripcion,b.tipo_cliente
"
}
LET selec =
"INSERT INTO ccprcs006
SELECT a.descripcion,b.tipo_cliente, SUM(c.valor+c.monto_desc),0,0,0,0,0,a.ventas FROM vetb00061 a,vetb00060 b,cctb00001 c
WHERE a.ventas = b.ventas AND
(b.tipo_cliente = c.tipo_cliente AND c.sec_cliente = c.sec_cliente) AND
(c.fecha_orig < ?) AND (c.tipo_doc NOT IN ('AV','AP')) AND
c.status_t IS NULL AND b.clientes_activos ='SI' AND ",
criterio CLIPPED,
" GROUP BY a.descripcion,a.ventas,b.tipo_cliente
UNION
SELECT a.descripcion,b.tipo_cliente,SUM(c.valor+c.monto_desc)*-1,0,0,0,0,0,a.ventas FROM vetb00061 a,vetb00060 b,cctb00001 c
WHERE a.ventas = b.ventas AND
(b.tipo_cliente = c.tipo_cliente AND c.sec_cliente = c.sec_cliente) AND
(c.fecha_orig <? ) AND
(c.tipo_doc IN ('AV') AND c.num_doc=c.aplica_a) AND
c.status_t IS NULL AND b.clientes_activos ='SI' AND ",
criterio CLIPPED,
" GROUP BY a.descripcion,a.ventas,b.tipo_cliente
UNION
SELECT a.descripcion,b.tipo_cliente,0,SUM(c.valor+c.monto_desc),0,0,0,0,a.ventas FROM vetb00061 a,vetb00060 b,cctb00001 c
WHERE a.ventas = b.ventas AND
(b.tipo_cliente = c.tipo_cliente AND c.sec_cliente = c.sec_cliente) AND
(c.fecha_orig BETWEEN ? AND ?) AND
(c.tipo_doc NOT IN ('AV','AP')) AND
c.valor > 0 AND
c.status_t IS NULL AND b.clientes_activos ='SI' AND ",
criterio CLIPPED,
" GROUP BY a.descripcion,a.ventas,b.tipo_cliente
UNION
SELECT a.descripcion,b.tipo_cliente,0,0,SUM(c.valor+c.monto_desc)*-1,0,0,0,a.ventas FROM vetb00061 a,vetb00060 b,cctb00001 c
WHERE a.ventas = b.ventas AND
(b.tipo_cliente = c.tipo_cliente AND c.sec_cliente = c.sec_cliente) AND
(c.fecha_orig BETWEEN ? AND ?) AND
(c.tipo_doc IN ('AV')) AND (c.num_doc=c.aplica_a) AND
c.status_t IS NULL AND b.clientes_activos ='SI' AND ",
criterio CLIPPED,
" GROUP BY a.descripcion,a.ventas,b.tipo_cliente
UNION
SELECT a.descripcion,b.tipo_cliente,0,0,SUM(c.valor+c.monto_desc),0,0,0,a.ventas FROM vetb00061 a,vetb00060 b,cctb00001 c
WHERE a.ventas = b.ventas AND
(b.tipo_cliente = c.tipo_cliente AND c.sec_cliente = c.sec_cliente) AND
(c.fecha_orig BETWEEN ? AND ?) AND
(c.tipo_doc NOT IN ('AV','AP')) AND
c.valor < 0 AND
c.status_t IS NULL AND b.clientes_activos ='SI' AND ",
criterio CLIPPED,
" GROUP BY a.descripcion,a.ventas,b.tipo_cliente
ORDER BY a.descripcion,b.tipo_cliente
"
PREPARE comando FROM selec
EXECUTE comando USING fecha1,fecha1,fecha1,fecha2,fecha1,fecha2,fecha1,fecha2
LET selec = "SELECT a.ventas,a.tipo_cliente,sum(a.valor_original),sum(a.debito_original),
sum(a.credito_original),sum(a.valorLocal),sum(a.debitoLocal),
sum(a.creditoLocal),a.ventas1
FROM ccprcs006 a
GROUP BY a.ventas,a.tipo_cliente,a.ventas1
ORDER by a.ventas,a.tipo_cliente"
PREPARE comando2 FROM selec
DECLARE buscar CURSOR FOR comando2
# OPEN buscar USING fecha2,fecha2,fecha1,fecha2,fecha1,fecha2
LET idx = 1
FOREACH buscar INTO data[idx].ventas,data[idx].tipo_cliente,data[idx].valorOriginal,data[idx].debitoOriginal,data[idx].creditoOriginal,
data[idx].valorLocal,data[idx].debitoLocal,data[idx].creditoLocal,data[idx].idventas
SELECT ISNULL(a.tasa,1) INTO tasa FROM cgtb00084 a
WHERE a.ano = YEAR(fecha2) AND a.mes =MONTH(fecha2) AND
a.ventas =data[idx].idventas AND
a.tipo_cliente = data[idx].tipo_cliente
LET data[idx].valorLocal =data[idx].valorOriginal * tasa
LET data[idx].debitoLocal = data[idx].debitoOriginal * tasa
LET data[idx].creditoLocal = data[idx].creditoOriginal * tasa
LET data[idx].balanceAct = data[idx].valorOriginal + data[idx].debitoOriginal + data[idx].creditoOriginal
LET data[idx].balanceLocal = data[idx].balanceAct * tasa
DISPLAY "data ",tasa," ",YEAR(fecha2)," ",MONTH(fecha2)," ",data[idx].tipo_cliente," ",data[idx].idventas
LET idx = idx + 1
END FOREACH
DISPLAY ARRAY data TO sdata.*
END DISPLAY
ON ACTION CANCEL
EXIT dialog
END DIALOG
CLOSE WINDOW w1
END FUNCTION