365 lines
11 KiB
Plaintext
365 lines
11 KiB
Plaintext
{
|
|
==============================================================================
|
|
PROGRAMA : CGPRRP008
|
|
SISTEMA : Sistema de Contabilidad General
|
|
Objetivo : Imprimir el mayor general Analitico
|
|
PROGRAMADOR : Tadeo A. Ferreras
|
|
FECHA : Oct. 05, 1993
|
|
MODIFICADO : Juan F. Soto
|
|
FECHA : Diciembre 20, 1993.
|
|
==============================================================================
|
|
}
|
|
GLOBALS
|
|
"cgprgb000.4gl"
|
|
DEFINE k_balance,k_debito,k_credito,k_actividad,k_balan_act DECIMAL(12,2)
|
|
|
|
DEFINE p_ano CHAR(4),
|
|
handler om.SaxDocumentHandler
|
|
|
|
DEFINE p_mes,p SMALLINT
|
|
|
|
DEFINE otras ARRAY[10] OF RECORD
|
|
cuenta_no CHAR(8),
|
|
descripcion CHAR(30),
|
|
balan_ant DECIMAL(12,2),
|
|
debito DECIMAL(12,2),
|
|
credito DECIMAL(12,2),
|
|
actividad DECIMAL(12,2),
|
|
balance_act DECIMAL(12,2)
|
|
END RECORD
|
|
|
|
DEFINE estado ARRAY[10] OF RECORD
|
|
cuenta_no CHAR(8),
|
|
descripcion CHAR(30),
|
|
balan_ant DECIMAL(12,2),
|
|
debito DECIMAL(12,2),
|
|
credito DECIMAL(12,2),
|
|
actividad DECIMAL(12,2),
|
|
balance_act DECIMAL(12,2)
|
|
END RECORD
|
|
|
|
DEFINE mayor_anal1 RECORD
|
|
cuenta_no CHAR(8),
|
|
descripcion CHAR(30),
|
|
estado_a CHAR(4),
|
|
estado_m CHAR(4),
|
|
debito DECIMAL(12,2),
|
|
credito DECIMAL(12,2),
|
|
nivel SMALLINT,
|
|
analitico CHAR(1),
|
|
aplica_a CHAR(8),
|
|
primern CHAR(8),
|
|
clave CHAR(16)
|
|
END RECORD
|
|
DEFINE fecha_inicial,fecha_final DATE
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL STARTLOG("CGPRRP08.TXT")
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
CALL ARG_VAL(3) RETURNING impresor
|
|
|
|
CONNECT to "decomarmol" USER usuarios USING clave
|
|
SELECT a.* INTO p_compania.* FROM companias a
|
|
|
|
CALL cgprrp008()
|
|
END MAIN
|
|
|
|
FUNCTION cgprrp008()
|
|
|
|
DEFINE cgtb83 RECORD LIKE cgtb00083.*
|
|
|
|
LET int_flag = FALSE
|
|
|
|
OPTIONS
|
|
FORM LINE 8
|
|
|
|
OPEN FORM cgfmrp008 FROM "cgfmrp008"
|
|
DISPLAY FORM cgfmrp008
|
|
DISPLAY "cgprrp008" AT 4,3
|
|
DISPLAY "Mayor General Analitico" AT 6,28
|
|
|
|
|
|
INPUT BY NAME p_ano,p_mes
|
|
ON KEY(F2)
|
|
RUN "copy pantalla.bat impresion.bat"
|
|
DISPLAY "ACTIVACION REPORTE POR WORDPAD" AT 20,15 ATTRIBUTE(RED)
|
|
AFTER FIELD p_ano
|
|
IF p_ano IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD p_ano
|
|
END IF
|
|
|
|
AFTER FIELD p_mes
|
|
IF p_mes IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD p_mes
|
|
END IF
|
|
|
|
END INPUT
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
SELECT fecha_inicio,fecha_corte INTO fecha_inicial,fecha_final
|
|
FROM prdtable WHERE ano = p_ano and mes = p_mes
|
|
|
|
CONSTRUCT BY NAME criterio ON b.cuenta_no
|
|
AFTER CONSTRUCT
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
EXIT CONSTRUCT
|
|
END CONSTRUCT
|
|
DELETE FROM cgtb00016 WHERE cuenta_no IS NOT NULL
|
|
|
|
LET progreso = 20
|
|
DISPLAY progreso TO progreso
|
|
CALL ui.Interface.refresh()
|
|
|
|
DECLARE primerB CURSOR FOR
|
|
SELECT a.* FROM cgtb00083 a
|
|
|
|
|
|
FOREACH primerB INTO cgtb83.*
|
|
#BALANCE ANTERIOR
|
|
LET k_balance= 0
|
|
|
|
SELECT SUM(c.debito-c.credito) INTO k_balance
|
|
FROM cgtb00001 a,cgtb00083 b,cgtb00004 c
|
|
WHERE c.cuenta_no = a.cuenta_no and b.aplica_a = a.aplica_a AND
|
|
b.aplica_a = cgtb83.aplica_a AND c.fecha < fecha_inicial AND
|
|
c.status_t IS NULL
|
|
|
|
|
|
SELECT SUM(c.debito),SUM(c.credito) INTO k_debito,k_credito
|
|
FROM cgtb00001 a,cgtb00083 b,cgtb00004 c
|
|
WHERE c.cuenta_no = a.cuenta_no and b.aplica_a = a.aplica_a AND
|
|
b.aplica_a = cgtb83.aplica_a AND c.fecha between fecha_inicial AND
|
|
fecha_final AND
|
|
c.status_t IS NULL
|
|
|
|
IF k_debito IS NULL THEN
|
|
LET k_debito = 0
|
|
END IF
|
|
IF k_credito IS NULL THEN
|
|
LET k_credito = 0
|
|
END IF
|
|
IF k_balance IS NULL THEN
|
|
LET k_balance = 0
|
|
END IF
|
|
|
|
LET k_actividad = k_debito - k_credito
|
|
LET k_balan_act = k_balance + k_actividad
|
|
SELECT a.descripcion,a.estado_m,a.estado_a
|
|
INTO mayor_anal1.descripcion,mayor_anal1.estado_m,mayor_anal1.estado_a
|
|
FROM cgtb00001 a
|
|
WHERE a.cuenta_no = cgtb83.aplica_a
|
|
|
|
INSERT INTO cgtb00016 VALUES (cgtb83.aplica_a,mayor_anal1.estado_a,mayor_anal1.estado_m,
|
|
mayor_anal1.descripcion,k_debito,k_credito,k_balance,k_actividad,k_balan_act,cgtb83.primern)
|
|
END FOREACH
|
|
LET progreso = 40
|
|
DISPLAY progreso TO progreso
|
|
CALL ui.Interface.refresh()
|
|
|
|
# PRIMER NIVEL
|
|
DECLARE segundoN CURSOR FOR
|
|
SELECT DISTINCT a.primern FROM cgtb00083 a
|
|
|
|
|
|
FOREACH segundoN INTO cgtb83.primern
|
|
|
|
SELECT SUM(c.debito-c.credito) INTO k_balance
|
|
FROM cgtb00001 a,cgtb00083 b,cgtb00004 c
|
|
WHERE c.cuenta_no = a.cuenta_no and b.aplica_a = a.aplica_a AND
|
|
b.primern = cgtb83.primern AND c.fecha < fecha_inicial AND
|
|
c.status_t IS NULL
|
|
|
|
|
|
SELECT SUM(c.debito),SUM(c.credito) INTO k_debito,k_credito
|
|
FROM cgtb00001 a,cgtb00083 b,cgtb00004 c
|
|
WHERE c.cuenta_no = a.cuenta_no and b.aplica_a = a.aplica_a AND
|
|
b.primern = cgtb83.primern AND c.fecha between fecha_inicial AND
|
|
fecha_final AND
|
|
c.status_t IS NULL
|
|
|
|
IF k_debito IS NULL THEN
|
|
LET k_debito = 0
|
|
END IF
|
|
IF k_credito IS NULL THEN
|
|
LET k_credito = 0
|
|
END IF
|
|
IF k_balance IS NULL THEN
|
|
LET k_balance = 0
|
|
END IF
|
|
|
|
LET k_actividad = k_debito - k_credito
|
|
LET k_balan_act = k_balance + k_actividad
|
|
|
|
SELECT a.descripcion,a.estado_m,a.estado_a
|
|
INTO mayor_anal1.descripcion,mayor_anal1.estado_m,mayor_anal1.estado_a
|
|
FROM cgtb00001 a
|
|
WHERE a.cuenta_no = cgtb83.primern
|
|
|
|
SELECT a.cuenta_no FROM cgtb00016 a
|
|
WHERE a.cuenta_no = cgtb83.primern
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
INSERT INTO cgtb00016 VALUES (cgtb83.primern,mayor_anal1.estado_a,mayor_anal1.estado_m,
|
|
mayor_anal1.descripcion,k_balance,k_debito,k_credito,k_actividad,k_balan_act,cgtb83.primern)
|
|
ELSE
|
|
UPDATE cgtb00016 SET debito = k_debito,
|
|
credito = k_credito,
|
|
actividad = k_actividad,
|
|
balance_act = k_balan_act,
|
|
balance_ant = k_balance
|
|
WHERE cuenta_no = cgtb83.primern
|
|
|
|
END IF
|
|
|
|
END FOREACH
|
|
LET progreso = 60
|
|
DISPLAY progreso TO progreso
|
|
CALL ui.Interface.refresh()
|
|
|
|
LET p = 1
|
|
LET selec =
|
|
"SELECT DISTINCT b.cuenta_no,b.descripcion,b.estado_a,b.estado_m, ",
|
|
" SUM(a.debito),SUM(a.credito),b.nivel,b.analitico,b.aplica_a ",
|
|
"FROM cgtb00001 b ",
|
|
"LEFT OUTER JOIN cgtb00004 a ON (a.cuenta_no = b.cuenta_no) AND (a.fecha BETWEEN ? AND ?) ",
|
|
"WHERE (a.status_t IS NULL) AND ",
|
|
" (b.status_t is null) AND b.nivel > 2 AND ",
|
|
criterio clipped," GROUP BY b.cuenta_no,b.descripcion,b.estado_a,b.estado_m,b.nivel,b.analitico,b.aplica_a ",
|
|
" ORDER BY b.cuenta_no"
|
|
|
|
DISPLAY "<<<Buscando Informacion... Espere por Favor>>>" AT 19,14
|
|
ATTRIBUTE(blue)
|
|
|
|
|
|
PREPARE comando FROM selec
|
|
DECLARE busco CURSOR FOR comando
|
|
OPEN busco USING fecha_inicial,fecha_final
|
|
|
|
|
|
START REPORT mayor_anal_gral TO XML HANDLER handler
|
|
|
|
WHILE status != NOTFOUND
|
|
FETCH busco INTO mayor_anal1.*
|
|
IF STATUS = NOTFOUND THEN
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
FINISH REPORT mayor_anal_gral
|
|
EXIT WHILE
|
|
END IF
|
|
LET mayor_anal1.clave = mayor_anal1.cuenta_no clipped,
|
|
mayor_anal1.aplica_a clipped
|
|
OUTPUT TO REPORT
|
|
mayor_anal_gral(mayor_anal1.*,fecha_inicial,fecha_final)
|
|
END WHILE
|
|
LET progreso = 80
|
|
DISPLAY progreso TO progreso
|
|
CALL ui.Interface.refresh()
|
|
|
|
FINISH REPORT mayor_anal_gral
|
|
|
|
CALL cgprrp008r(fecha_inicial,fecha_final)
|
|
|
|
LET progreso = 100
|
|
DISPLAY progreso TO progreso
|
|
CALL ui.Interface.refresh()
|
|
|
|
DISPLAY BY NAME k_balance,k_debito,k_credito,k_actividad,k_balan_act
|
|
|
|
|
|
END FUNCTION
|
|
|
|
REPORT mayor_anal_gral(x,fecha1,fecha2)
|
|
DEFINE x RECORD
|
|
cuenta_no CHAR(8),
|
|
descripcion CHAR(30),
|
|
estado_a CHAR(4),
|
|
estado_m CHAR(4),
|
|
debito DECIMAL(12,2),
|
|
credito DECIMAL(12,2),
|
|
nivel SMALLINT,
|
|
analitico CHAR(1),
|
|
aplica_a CHAR(8),
|
|
primern CHAR(8),
|
|
clave CHAR(16)
|
|
END RECORD
|
|
DEFINE t_debito,t_credito,t_balan_ant,t_actividad,t_balan_act DECIMAL(12,2)
|
|
|
|
|
|
DEFINE fecha1,fecha2 DATE
|
|
DEFINE actividad,balan_ant,balance,debito1,debito2,
|
|
credito1,credito2 DECIMAL(12,2)
|
|
DEFINE balan_act DECIMAL(12,2)
|
|
|
|
## DEFINICION DE LAS VARIABLES DE IMPRESION
|
|
|
|
ORDER BY x.aplica_a,x.cuenta_no,x.nivel
|
|
|
|
FORMAT
|
|
|
|
BEFORE GROUP OF x.cuenta_no
|
|
LET balan_act=0
|
|
LET debito1 = 0
|
|
LET credito1 = 0
|
|
LET debito2 = 0
|
|
LET credito2 = 0
|
|
|
|
|
|
ON EVERY ROW
|
|
IF x.nivel > 2 THEN
|
|
|
|
# Balance Inicial
|
|
|
|
SELECT SUM(b.debito - b.credito) INTO balan_ant FROM cgtb00004 b
|
|
WHERE b.cuenta_no=x.cuenta_no AND b.status_t IS NULL AND b.fecha < fecha1
|
|
|
|
SELECT SUM(b.debito - b.credito) INTO balance FROM cgtb00004 b
|
|
WHERE b.cuenta_no=x.cuenta_no AND b.status_t IS NULL AND b.fecha < fecha2
|
|
|
|
IF x.debito IS NULL THEN
|
|
LET x.debito = 0
|
|
END IF
|
|
IF x.credito IS NULL THEN
|
|
LET x.credito = 0
|
|
END IF
|
|
IF balan_ant IS NULL THEN
|
|
LET balan_ant = 0
|
|
END IF
|
|
IF balance IS NULL THEN
|
|
LET balance = 0
|
|
END IF
|
|
|
|
LET actividad = x.debito - x.credito
|
|
|
|
IF x.primern IS NULL THEN
|
|
LET x.primern=x.aplica_a
|
|
END IF
|
|
|
|
INSERT INTO cgtb00016 VALUES (x.cuenta_no,x.estado_a,x.estado_m,
|
|
x.descripcion,x.debito,x.credito,balan_ant,actividad,balance,x.primern)
|
|
|
|
END IF
|
|
|
|
|
|
END REPORT
|
|
|