201 lines
9.2 KiB
Plaintext
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 |