Files
MBS/PROYECTO/cgdir/edprrp099.4gl
T

318 lines
9.5 KiB
Plaintext

{
==========================================================================
PROGRAMA : EDPRRP099
OBJETIVO : LISTAR LA ENTRADA DE DIARIO CIERRE DE ANO
PROGRAMADOR : JUAN F. SOTO
FECHA : DICIEMBRE 20, 1994
==========================================================================
}
SCHEMA smarmotech
GLOBALS "cgprgb000.4gl"
DEFINE
fecha2 DATE,
decide CHAR(1),
entrada_no CHAR(14),
detalle CHAR(40),
tipoEntrada SMALLINT
DEFINE datos RECORD
cuenta_no CHAR(10),
departamento SMALLINT,
cod_aux SMALLINT,
cod_sec SMALLINT,
num_doc CHAR(12),
balance DECIMAL(12, 2)
END RECORD
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CONNECT TO "smarmotech" USER usuarios USING clave
SELECT a.* INTO p_compania.* FROM companias a
CALL edprrp099()
END MAIN
FUNCTION edprrp099()
OPTIONS ERROR LINE 24, FORM LINE 9
CALL pantalla()
DISPLAY "Entrada Cierre de Ano" AT 6, 29
OPEN FORM edfmrp099 FROM "/"
DISPLAY FORM edfmrp099
INPUT BY NAME entrada_no, fecha2, decide, detalle
AFTER FIELD entrada_no
IF entrada_no IS NULL THEN
ERROR "(16) CAMPO EN BLANCO"
NEXT FIELD entrada_no
END IF
LET tipoEntrada = '03'
SELECT UNIQUE a.ref FROM cgtb00004 a WHERE a.ref = entrada_no
IF status != NOTFOUND THEN
ERROR "(03) REGISTRO EXISTE"
NEXT FIELD entrada_no
END IF
AFTER FIELD fecha2
IF fecha2 IS NULL THEN
ERROR "(16) CAMPO EN BLANCO"
NEXT FIELD fecha2
END IF
AFTER INPUT
IF int_flag THEN
ERROR "(2) OPERACION CANCELADA"
LET int_flag = FALSE
RETURN
END IF
EXIT INPUT
END INPUT
DISPLAY "Buscando Informacion.. Espere Por Favor" AT 15, 14
CALL seleccionarsalida() RETURNING r_output
CALL configureoutput(r_output) RETURNING HANDLER
START REPORT entrada TO XML HANDLER handler
DECLARE busca CURSOR FOR
SELECT a.cuenta_no,
a.departamento,
a.cod_aux,
a.cod_sec,
a.num_doc,
SUM(a.debito - a.credito)
FROM cgtb00004 a
WHERE (a.cuenta_no[1] = "4"
OR a.cuenta_no[1] = "5"
OR a.cuenta_no[1] = "7"
OR a.cuenta_no[1] = "8")
AND a.fecha <= fecha2
AND a.status_t IS NULL
GROUP BY a.cuenta_no,
a.departamento,
a.cod_aux,
a.cod_sec,
a.num_doc
ORDER BY a.cuenta_no
DISPLAY "Reporte Generandose... Espere Por Favor" AT 15, 14
FOREACH busca INTO datos.*
OUTPUT TO REPORT entrada(datos.*)
END FOREACH
FINISH REPORT entrada
END FUNCTION
REPORT entrada(x)
DEFINE x RECORD
cuenta_no CHAR(10),
departamento SMALLINT,
cod_aux SMALLINT,
cod_sec SMALLINT,
num_doc CHAR(12),
balance DECIMAL(12, 2)
END RECORD
DEFINE p_descripcion CHAR(40)
DEFINE negritas_on, negritas_off, comp_off, comp_on CHAR(3)
DEFINE t_debito, t_credito, sumatoria, credito, debito DECIMAL(12, 2)
OUTPUT
LEFT MARGIN 3
FORMAT
PAGE HEADER
{ LET negritas_on = ASCII 27, ASCII 69
LET negritas_off = ASCII 27, ASCII 70
LET comp_on = ASCII 15
LET comp_off = ASCII 18
}
PRINT comp_on
PRINT COLUMN 1,
"edprrp099",
COLUMN 39,
p_compania.nombre,
COLUMN 90,
"Pag. ",
PAGENO USING "<<<"
PRINT COLUMN 38,
"ENTRADA CIERRE DE ANO",
COLUMN 90,
TODAY USING "dd/mm/yy"
SKIP 1 LINE
PRINT COLUMN 1, "ENTRADA NO. ", entrada_no
PRINT "============================================================================",
"=================================="
PRINT COLUMN 1,
"CUENTA NO.",
COLUMN 12,
"DEPART",
COLUMN 20,
"CATAL.",
COLUMN 28,
"REF",
COLUMN 40,
"DESCRIPCION",
COLUMN 77,
"DEBITO",
COLUMN 100,
"CREDITO"
PRINT "=============================================================================",
"================================="
SKIP 1 LINE
PRINT "DETALLE: ", detalle
SKIP 1 LINE
ON EVERY ROW
SELECT descripcion
INTO p_descripcion
FROM cgtb00001
WHERE cuenta_no = x.cuenta_no
IF t_debito IS NULL THEN
LET t_debito = 0
END IF
IF t_credito IS NULL THEN
LET t_credito = 0
END IF
LET credito = 0
LET debito = 0
IF x.balance > 0 THEN
LET credito = x.balance
ELSE
LET debito = x.balance * -1
END IF
PRINT COLUMN 1,
x.cuenta_no,
COLUMN 12,
x.departamento USING "####",
COLUMN 20,
x.cod_aux USING "##",
"-",
x.cod_sec USING "####",
COLUMN 28,
x.num_doc,
COLUMN 40,
p_descripcion[1, 20],
COLUMN 70,
debito USING "####,###,###.##",
COLUMN 94,
credito USING "###,###,###.##"
LET t_debito = t_debito + debito
LET t_credito = t_credito + credito
IF decide = "S" THEN
INSERT INTO cgtb00004(
ref,
fecha,
tipo,
cuenta_no,
departamento,
cod_aux,
cod_sec,
num_doc,
debito,
credito,
us_crea,
fech_crea,
detalle_1)
VALUES(entrada_no,
fecha2,
tipoEntrada,
x.cuenta_no,
x.departamento,
x.cod_aux,
x.cod_sec,
x.num_doc,
debito,
credito,
suser_sname(),
getdate(),
DETALLE)
END IF
ON LAST ROW
SELECT descripcion
INTO p_descripcion
FROM cgtb00001
WHERE cuenta_no = "3312"
LET sumatoria = SUM(x.balance)
LET credito = 0
LET debito = 0
IF sumatoria < 0 THEN
LET credito = SUM(x.balance) * -1
ELSE
LET debito = SUM(x.balance)
END IF
LET t_debito = t_debito + debito
LET t_credito = t_credito + credito
PRINT COLUMN 1,
"3312",
COLUMN 40,
p_descripcion[1, 20],
COLUMN 70,
debito USING "#,###,###,###.##",
COLUMN 95,
credito USING "#,###,###,###.##"
PRINT COLUMN 70, "--------------", COLUMN 94, "--------------"
PRINT COLUMN 70,
t_debito USING "###,###,###,###.##",
COLUMN 94,
t_credito USING "###,###,###,###.##"
IF decide = "S" THEN
INSERT INTO cgtb00004(
ref,
fecha,
tipo,
cuenta_no,
departamento,
cod_aux,
cod_sec,
num_doc,
debito,
credito,
us_crea,
fech_crea,
detalle_1)
VALUES(entrada_no,
fecha2,
tipoEntrada,
"3312",
x.departamento,
x.cod_aux,
x.cod_sec,
x.num_doc,
debito,
credito,
suser_sname(),
getdate(),
detalle)
END IF
PRINT comp_off
END REPORT
FUNCTION pantalla()
DEFINE
fecha CHAR(8),
hora CHAR(5)
LET fecha = TODAY USING "dd/mm/yy"
LET hora = TIME
DISPLAY " M A R M O T E C H, S A. " AT 4, 17 ATTRIBUTE(REVERSE, BLUE)
DISPLAY fecha AT 4, 70 ATTRIBUTE(BLUE)
DISPLAY "Sistema Contabilidad General" AT 5, 24
DISPLAY hora AT 6, 73 ATTRIBUTE(BLUE)
CALL FGL_DRAWBOX(5, 79, 3, 1)
CALL FGL_DRAWBOX(1, 79, 22, 1)
END FUNCTION