Commit inicial: fuentes MBS ERP (Genero 6) + .gitignore + docs/SETUP_PC_MBS.md
This commit is contained in:
@@ -0,0 +1,508 @@
|
||||
{
|
||||
|
||||
PROGRAMA: CGPRCS025
|
||||
OBJETIVO: VISUALIZAR LOS GASTOS DE FORMA PANORAMICA ANUAL
|
||||
FECHA DESARROLLO: ENERO 23,2023
|
||||
DESARROLLADO POR: ING. JUAN SOTO
|
||||
}
|
||||
|
||||
GLOBALS "cgprgb000.4gl"
|
||||
DEFINE
|
||||
data DYNAMIC ARRAY OF RECORD
|
||||
|
||||
descripcion VARCHAR(100),
|
||||
mes1,
|
||||
mes2,
|
||||
mes3,
|
||||
mes4,
|
||||
mes5,
|
||||
mes6,
|
||||
mes7,
|
||||
mes8,
|
||||
mes9,
|
||||
mes10,
|
||||
mes11,
|
||||
mes12,
|
||||
total
|
||||
DEC(18, 2),
|
||||
departamento INT,
|
||||
cuenta_no VARCHAR(15),
|
||||
parentID, childid VARCHAR(20)
|
||||
END RECORD,
|
||||
pano,
|
||||
nodo,
|
||||
hijo,
|
||||
secuencia,
|
||||
progreso,
|
||||
cuentadepto,
|
||||
nopregdepto,
|
||||
noregacum,
|
||||
cuentaacum
|
||||
INT,
|
||||
usuario_c VARCHAR(100),
|
||||
i INT
|
||||
MAIN
|
||||
DEFER INTERRUPT
|
||||
|
||||
--CALL STARTLOG("CGPRMT021.TXT")
|
||||
CALL ARG_VAL(1) RETURNING usuarios
|
||||
CALL ARG_VAL(2) RETURNING clave
|
||||
|
||||
CONNECT TO "smarmotech" AS "MSSQL" USER usuarios USING clave
|
||||
CALL cgprcs025()
|
||||
END MAIN
|
||||
FUNCTION cgprcs025()
|
||||
DEFINE fechas RECORD
|
||||
fecha1, fecha2 DATE
|
||||
END RECORD
|
||||
DEFINE v_col STRING
|
||||
DEFINE
|
||||
v_mes SMALLINT,
|
||||
kdepartamento INT
|
||||
|
||||
CALL ui.Interface.loadStyles("formularios")
|
||||
OPEN WINDOW w1 WITH FORM 'cgfmcs026'
|
||||
|
||||
DIALOG ATTRIBUTE(UNBUFFERED)
|
||||
INPUT BY NAME pano
|
||||
BEFORE INPUT
|
||||
DISPLAY 'VISUALIZACION GASTOS DEPARTAMENTOS PANORAMICO ANUAL'
|
||||
TO encabezado
|
||||
SELECT RTRIM(a.nom1_emp) || ' ' || a.apell1_emp
|
||||
INTO usuario_c
|
||||
FROM adtb00003 a, seg0001 b
|
||||
WHERE b.usuario = usuarios AND a.num_emp = b.num_emp
|
||||
|
||||
DISPLAY BY NAME usuario_c
|
||||
AFTER FIELD pano
|
||||
IF pano IS NULL THEN
|
||||
CALL msg(16)
|
||||
NEXT FIELD pano
|
||||
END IF
|
||||
|
||||
LET noregacum = 1
|
||||
|
||||
LET progreso = 0
|
||||
DISPLAY progreso TO progreso
|
||||
CALL ui.Interface.refresh()
|
||||
END INPUT
|
||||
DISPLAY ARRAY data TO sdata.*
|
||||
BEFORE DISPLAY
|
||||
CALL buscaNodo0()
|
||||
ON ACTION gasranfech ATTRIBUTE(TEXT = "Registro", IMAGE = 'record')
|
||||
# LET v_col = DIALOG.getCurrentItem()
|
||||
LET v_mes = seleccionarMes(arr_curr())
|
||||
DISPLAY "data1: ", v_mes
|
||||
IF v_mes = 0 THEN
|
||||
CALL msg(1024)
|
||||
CONTINUE DIALOG
|
||||
END IF
|
||||
IF data[arr_curr()].cuenta_no IS NULL THEN
|
||||
CALL msg(1025)
|
||||
CONTINUE DIALOG
|
||||
END IF
|
||||
DISPLAY "data: ",
|
||||
pano,
|
||||
" ",
|
||||
v_mes,
|
||||
" ",
|
||||
data[arr_curr()].cuenta_no,
|
||||
" DEP: ",
|
||||
data[arr_curr()].departamento
|
||||
-- 4) Rango de fechas del mes/a?o desde prdtable
|
||||
SELECT a.fecha_inicio, a.fecha_corte
|
||||
INTO fechas.*
|
||||
FROM prdtable a
|
||||
WHERE a.ano = pano AND a.mes = v_mes
|
||||
|
||||
IF STATUS = NOTFOUND THEN
|
||||
CALL msg(45)
|
||||
CONTINUE DIALOG
|
||||
END IF -- 5) Detalle (te recomiendo pasar tambi?n v_mes por claridad)
|
||||
FOR i = 1 TO arr_curr()
|
||||
IF data[i].departamento IS NOT NULL THEN
|
||||
LET kdepartamento = data[i].departamento
|
||||
END IF
|
||||
DISPLAY "i: ", i, " ", kdepartamento
|
||||
END FOR
|
||||
CALL detalleGastos(
|
||||
'NO TIENE',
|
||||
data[arr_curr()].cuenta_no,
|
||||
kdepartamento,
|
||||
'gasranfech',
|
||||
fechas.*)
|
||||
ON ACTION CANCEL
|
||||
EXIT PROGRAM
|
||||
ON ACTION continuar
|
||||
ATTRIBUTE(TEXT = "Cont. Consulta", IMAGE = 'refresh')
|
||||
CALL data.clear()
|
||||
NEXT FIELD pano
|
||||
END DISPLAY
|
||||
|
||||
END DIALOG
|
||||
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION buscaNodo0()
|
||||
|
||||
DECLARE busca_noDeptos CURSOR FOR
|
||||
SELECT COUNT(DISTINCT a.cuenta_no), d.departamento_visualiza
|
||||
FROM cgtb00004 a, cgtb00001 b, prdtable c, adtb00056 d
|
||||
WHERE (a.cuenta_no = b.cuenta_no AND a.cuenta_no LIKE '7%')
|
||||
AND (a.fecha BETWEEN c.fecha_inicio AND c.fecha_corte)
|
||||
AND (a.ref = a.ref AND a.tipo <> 3)
|
||||
AND (a.departamento = d.departamento_Visualiza)
|
||||
AND a.ref NOT LIKE 'ED.99%' AND a.cuenta_no <> '7600'
|
||||
AND d.usuario = usuarios
|
||||
AND c.ano = pano
|
||||
AND a.status_t IS NULL
|
||||
GROUP BY d.departamento_visualiza
|
||||
IF cuentaacum IS NULL THEN
|
||||
LET cuentaacum = 0
|
||||
END IF
|
||||
FOREACH busca_noDeptos INTO cuentadepto
|
||||
DISPLAY "cuenta acum ",
|
||||
cuentaacum,
|
||||
" ano ",
|
||||
pano,
|
||||
" usuario ",
|
||||
usuarios,
|
||||
" depto ",
|
||||
cuentadepto
|
||||
LET cuentaacum = cuentaacum + cuentadepto
|
||||
END FOREACH
|
||||
LET secuencia = 1
|
||||
DECLARE nodo0 CURSOR FOR
|
||||
SELECT a.nom_dpto, a.departamento
|
||||
FROM adtb00001 a, adtb00056 b
|
||||
WHERE a.departamento = b.departamento_visualiza
|
||||
AND b.usuario = usuarios
|
||||
|
||||
LET idx = 1
|
||||
LET nodo = NULL
|
||||
LET hijo = 1
|
||||
FOREACH nodo0 INTO data[idx].descripcion, data[idx].departamento
|
||||
LET data[idx].parentID = nodo
|
||||
LET data[idx].childid = secuencia USING "<<<"
|
||||
# DISPLAY data[idx].descripcion," parent ",data[idx].parentID," child ",data[idx].childid
|
||||
CALL balanceTotalMes(data[idx].departamento)
|
||||
CALL llenahijos(data[idx].departamento)
|
||||
|
||||
LET idx = idx + 1
|
||||
END FOREACH
|
||||
FOR idx = 1 TO data.getLength()
|
||||
|
||||
IF data[idx].descripcion IS NULL THEN
|
||||
CALL data.deleteElement(idx)
|
||||
END IF
|
||||
END FOR
|
||||
{
|
||||
LET data[1].descripcion ='TECNOLOGIA'
|
||||
LET data[1].parentID = null
|
||||
LET data[1].childid='1'
|
||||
|
||||
LET data[2].descripcion ='GASTOS1'
|
||||
LET data[2].parentID = 1
|
||||
LET data[2].childid='1.1'
|
||||
LET data[2].mes1 = 1000
|
||||
|
||||
LET data[3].descripcion ='GASTOS2'
|
||||
LET data[3].parentID = 1
|
||||
LET data[3].childid='1.2'
|
||||
LET data[3].mes1 = 2000
|
||||
|
||||
|
||||
LET data[4].descripcion ='CORTES A MEDIDAS'
|
||||
LET data[4].parentID = null
|
||||
LET data[4].childid='2'
|
||||
|
||||
|
||||
LET data[5].descripcion ='GASTOS3'
|
||||
LET data[5].parentID = 2
|
||||
LET data[5].childid='2'
|
||||
LET data[5].mes1 = 4000
|
||||
}
|
||||
|
||||
END FUNCTION
|
||||
FUNCTION llenahijos(pdepartamento)
|
||||
DEFINE pdepartamento, noreg INT
|
||||
|
||||
DECLARE buscahijos CURSOR FOR
|
||||
SELECT DISTINCT '(' || RTRIM(b.cuenta_no) || ')' || b.descripcion,
|
||||
b.cuenta_no
|
||||
FROM cgtb00004 a, cgtb00001 b, prdtable c
|
||||
WHERE (a.cuenta_no = b.cuenta_no AND a.cuenta_no LIKE '7%')
|
||||
AND (a.fecha BETWEEN c.fecha_inicio AND c.fecha_corte)
|
||||
AND (a.departamento = pdepartamento)
|
||||
AND a.ref NOT LIKE 'ED.99%' AND a.cuenta_no <> '7600'
|
||||
AND (a.ref = a.ref AND a.tipo <> 3)
|
||||
AND c.ano = pano
|
||||
AND a.status_t IS NULL
|
||||
|
||||
LET idx = idx + 1
|
||||
IF noreg IS NULL THEN
|
||||
LET noreg = 0
|
||||
END IF
|
||||
FOREACH buscahijos INTO data[idx].descripcion, data[idx].cuenta_no
|
||||
|
||||
LET data[idx].parentID = secuencia
|
||||
LET data[idx].childid =
|
||||
data[idx].parentID CLIPPED, ".", hijo USING "<<<"
|
||||
|
||||
CALL balances(pdepartamento, data[idx].cuenta_no)
|
||||
|
||||
LET progreso = (noregacum / cuentaacum) * 100
|
||||
DISPLAY "regis ",
|
||||
noregacum,
|
||||
" cuenta ",
|
||||
cuentaacum,
|
||||
" progreso ",
|
||||
progreso
|
||||
DISPLAY "noreg ", noreg, " cuenta ", data[idx].descripcion
|
||||
DISPLAY progreso TO progreso
|
||||
CALL ui.Interface.refresh()
|
||||
|
||||
LET noregacum = noregacum + 1
|
||||
LET noreg = noreg + 1
|
||||
LET idx = idx + 1
|
||||
LET hijo = hijo + 1
|
||||
END FOREACH
|
||||
LET secuencia = secuencia + 1
|
||||
|
||||
END FUNCTION
|
||||
FUNCTION balances(xdepartamento, xcuenta_no)
|
||||
|
||||
DEFINE
|
||||
xdepartamento INT,
|
||||
xcuenta_no VARCHAR(14),
|
||||
balance DEC(12, 2)
|
||||
|
||||
FOR i = 1 TO 12
|
||||
#GASTOS RANGO DE FECHAS:
|
||||
SELECT a.fecha_inicio, a.fecha_corte
|
||||
INTO fecha1, fecha2
|
||||
FROM prdtable a
|
||||
WHERE a.ano = pano AND a.mes = i
|
||||
|
||||
LET balance = 0
|
||||
SELECT ISNULL(SUM(a.debito - a.credito), 0)
|
||||
INTO balance
|
||||
FROM cgtb00004 a
|
||||
WHERE (a.cuenta_no = xcuenta_no AND a.cuenta_no LIKE '7%')
|
||||
AND (a.fecha BETWEEN fecha1 AND fecha2)
|
||||
AND (a.departamento = xdepartamento)
|
||||
AND (a.ref = a.ref AND a.tipo <> 3)
|
||||
AND a.ref NOT LIKE 'ED.99%' AND a.cuenta_no <> '7600'
|
||||
AND a.status_t IS NULL
|
||||
IF i = 1 THEN
|
||||
LET data[idx].mes1 = balance
|
||||
# DISPLAY "BALANCE ",BALANCE," DEP ",xdepartamento," CUENTA ",xcuenta_no," fechas ",fecha1," ",fecha2
|
||||
END IF
|
||||
|
||||
IF i = 2 THEN
|
||||
LET data[idx].mes2 = balance
|
||||
END IF
|
||||
IF i = 3 THEN
|
||||
LET data[idx].mes3 = balance
|
||||
END IF
|
||||
IF i = 4 THEN
|
||||
LET data[idx].mes4 = balance
|
||||
END IF
|
||||
IF i = 5 THEN
|
||||
LET data[idx].mes5 = balance
|
||||
END IF
|
||||
IF i = 6 THEN
|
||||
LET data[idx].mes6 = balance
|
||||
END IF
|
||||
IF i = 7 THEN
|
||||
LET data[idx].mes7 = balance
|
||||
END IF
|
||||
IF i = 8 THEN
|
||||
LET data[idx].mes8 = balance
|
||||
END IF
|
||||
IF i = 9 THEN
|
||||
LET data[idx].mes9 = balance
|
||||
END IF
|
||||
IF i = 10 THEN
|
||||
LET data[idx].mes10 = balance
|
||||
END IF
|
||||
IF i = 11 THEN
|
||||
LET data[idx].mes11 = balance
|
||||
END IF
|
||||
IF i = 12 THEN
|
||||
LET data[idx].mes12 = balance
|
||||
END IF
|
||||
END FOR
|
||||
END FUNCTION
|
||||
FUNCTION balanceTotalMes(hdepartamento)
|
||||
DEFINE
|
||||
balancem, totalG DEC(12, 2),
|
||||
hdepartamento INT
|
||||
LET totalG = 0
|
||||
FOR i = 1 TO 12
|
||||
|
||||
SELECT a.fecha_inicio, a.fecha_corte
|
||||
INTO fecha1, fecha2
|
||||
FROM prdtable a
|
||||
WHERE a.ano = pano AND a.mes = i
|
||||
|
||||
SELECT ISNULL(SUM(a.debito - a.credito), 0)
|
||||
INTO balanceM
|
||||
FROM cgtb00004 a
|
||||
WHERE (a.cuenta_no LIKE '7%')
|
||||
AND (a.fecha BETWEEN fecha1 AND fecha2)
|
||||
AND (a.departamento = hdepartamento)
|
||||
AND (a.ref = a.ref AND a.tipo <> 3)
|
||||
AND a.ref NOT LIKE 'ED.99%' AND a.cuenta_no <> '7600'
|
||||
AND a.status_t IS NULL
|
||||
|
||||
IF i = 1 THEN
|
||||
LET data[idx].mes1 = balanceM
|
||||
|
||||
# DISPLAY "BALANCE ",BALANCE," DEP ",xdepartamento," CUENTA ",xcuenta_no," fechas ",fecha1," ",fecha2
|
||||
END IF
|
||||
|
||||
IF i = 2 THEN
|
||||
LET data[idx].mes2 = balanceM
|
||||
|
||||
END IF
|
||||
IF i = 3 THEN
|
||||
LET data[idx].mes3 = balanceM
|
||||
|
||||
END IF
|
||||
IF i = 4 THEN
|
||||
LET data[idx].mes4 = balanceM
|
||||
END IF
|
||||
IF i = 5 THEN
|
||||
LET data[idx].mes5 = balanceM
|
||||
END IF
|
||||
IF i = 6 THEN
|
||||
LET data[idx].mes6 = balanceM
|
||||
END IF
|
||||
IF i = 7 THEN
|
||||
LET data[idx].mes7 = balanceM
|
||||
END IF
|
||||
IF i = 8 THEN
|
||||
LET data[idx].mes8 = balanceM
|
||||
END IF
|
||||
IF i = 9 THEN
|
||||
LET data[idx].mes9 = balanceM
|
||||
END IF
|
||||
IF i = 10 THEN
|
||||
LET data[idx].mes10 = balanceM
|
||||
END IF
|
||||
IF i = 11 THEN
|
||||
LET data[idx].mes11 = balanceM
|
||||
END IF
|
||||
IF i = 12 THEN
|
||||
LET data[idx].mes12 = balanceM
|
||||
END IF
|
||||
LET totalG = totalG + balanceM
|
||||
LET data[idx].total = totalG
|
||||
END FOR
|
||||
END FUNCTION
|
||||
|
||||
|
||||
FUNCTION seleccionarMes(p_idx)
|
||||
DEFINE p_idx INTEGER
|
||||
DEFINE v_mes SMALLINT
|
||||
DEFINE i SMALLINT
|
||||
DEFINE l_nombre ARRAY[12] OF STRING
|
||||
|
||||
LET v_mes = 0
|
||||
LET l_nombre[1] = "Enero"
|
||||
LET l_nombre[2] = "Febrero"
|
||||
LET l_nombre[3] = "Marzo"
|
||||
LET l_nombre[4] = "Abril"
|
||||
LET l_nombre[5] = "Mayo"
|
||||
LET l_nombre[6] = "Junio"
|
||||
LET l_nombre[7] = "Julio"
|
||||
LET l_nombre[8] = "Agosto"
|
||||
LET l_nombre[9] = "Septiembre"
|
||||
LET l_nombre[10] = "Octubre"
|
||||
LET l_nombre[11] = "Noviembre"
|
||||
LET l_nombre[12] = "Diciembre"
|
||||
|
||||
MENU "Seleccione el mes a consultar"
|
||||
BEFORE MENU
|
||||
-- Oculta los meses sin valor en la fila seleccionada
|
||||
IF data[p_idx].mes1 IS NULL OR data[p_idx].mes1 == 0 THEN
|
||||
HIDE OPTION "m1"
|
||||
END IF
|
||||
IF data[p_idx].mes2 IS NULL OR data[p_idx].mes2 == 0 THEN
|
||||
HIDE OPTION "m2"
|
||||
END IF
|
||||
IF data[p_idx].mes3 IS NULL OR data[p_idx].mes3 == 0 THEN
|
||||
HIDE OPTION "m3"
|
||||
END IF
|
||||
IF data[p_idx].mes4 IS NULL OR data[p_idx].mes4 == 0 THEN
|
||||
HIDE OPTION "m4"
|
||||
END IF
|
||||
IF data[p_idx].mes5 IS NULL OR data[p_idx].mes5 == 0 THEN
|
||||
HIDE OPTION "m5"
|
||||
END IF
|
||||
IF data[p_idx].mes6 IS NULL OR data[p_idx].mes6 == 0 THEN
|
||||
HIDE OPTION "m6"
|
||||
END IF
|
||||
IF data[p_idx].mes7 IS NULL OR data[p_idx].mes7 == 0 THEN
|
||||
HIDE OPTION "m7"
|
||||
END IF
|
||||
IF data[p_idx].mes8 IS NULL OR data[p_idx].mes8 == 0 THEN
|
||||
HIDE OPTION "m8"
|
||||
END IF
|
||||
IF data[p_idx].mes9 IS NULL OR data[p_idx].mes9 == 0 THEN
|
||||
HIDE OPTION "m9"
|
||||
END IF
|
||||
IF data[p_idx].mes10 IS NULL OR data[p_idx].mes10 == 0 THEN
|
||||
HIDE OPTION "m10"
|
||||
END IF
|
||||
IF data[p_idx].mes11 IS NULL OR data[p_idx].mes11 == 0 THEN
|
||||
HIDE OPTION "m11"
|
||||
END IF
|
||||
IF data[p_idx].mes12 IS NULL OR data[p_idx].mes12 == 0 THEN
|
||||
HIDE OPTION "m12"
|
||||
END IF
|
||||
|
||||
ON ACTION m1 ATTRIBUTE(TEXT = l_nombre[1])
|
||||
LET v_mes = 1
|
||||
EXIT MENU
|
||||
ON ACTION m2 ATTRIBUTE(TEXT = l_nombre[2])
|
||||
LET v_mes = 2
|
||||
EXIT MENU
|
||||
ON ACTION m3 ATTRIBUTE(TEXT = l_nombre[3])
|
||||
LET v_mes = 3
|
||||
EXIT MENU
|
||||
ON ACTION m4 ATTRIBUTE(TEXT = l_nombre[4])
|
||||
LET v_mes = 4
|
||||
EXIT MENU
|
||||
ON ACTION m5 ATTRIBUTE(TEXT = l_nombre[5])
|
||||
LET v_mes = 5
|
||||
EXIT MENU
|
||||
ON ACTION m6 ATTRIBUTE(TEXT = l_nombre[6])
|
||||
LET v_mes = 6
|
||||
EXIT MENU
|
||||
ON ACTION m7 ATTRIBUTE(TEXT = l_nombre[7])
|
||||
LET v_mes = 7
|
||||
EXIT MENU
|
||||
ON ACTION m8 ATTRIBUTE(TEXT = l_nombre[8])
|
||||
LET v_mes = 8
|
||||
EXIT MENU
|
||||
ON ACTION m9 ATTRIBUTE(TEXT = l_nombre[9])
|
||||
LET v_mes = 9
|
||||
EXIT MENU
|
||||
ON ACTION m10 ATTRIBUTE(TEXT = l_nombre[10])
|
||||
LET v_mes = 10
|
||||
EXIT MENU
|
||||
ON ACTION m11 ATTRIBUTE(TEXT = l_nombre[11])
|
||||
LET v_mes = 11
|
||||
EXIT MENU
|
||||
ON ACTION m12 ATTRIBUTE(TEXT = l_nombre[12])
|
||||
LET v_mes = 12
|
||||
EXIT MENU
|
||||
COMMAND "Cancelar"
|
||||
LET v_mes = 0
|
||||
EXIT MENU
|
||||
END MENU
|
||||
|
||||
RETURN v_mes
|
||||
END FUNCTION
|
||||
Reference in New Issue
Block a user