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

342 lines
11 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : CGPRRP003
OBJETIVO : Transacciones
PROGRAMADOR : Ing. Betania Guerrero Perez
FECHA REALIZACION : Octubre 05, 1993
-------------------------------------------------------------------------------
}
GLOBALS "cgprgb000.4gl"
DEFINE fecha1,fecha2 DATE
DEFINE diferencia,t_debito,t_credito DECIMAL(12,2)
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 cgprrp003()
END MAIN
FUNCTION cgprrp003()
## DEFINICION DEL REGISTRO DE BUSQUEDA CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
DEFINE trans RECORD
secuencia INTEGER,
cuenta_no LIKE cgtb00004.cuenta_no,
departamento LIKE cgtb00004.departamento,
fecha LIKE cgtb00004.fecha,
detalles LIKE cgtb00004.detalles,
detalle_1 LIKE cgtb00004.detalle_1,
detalle_2 LIKE cgtb00004.detalle_2,
ref LIKE cgtb00004.ref,
tipo LIKE cgtb00004.tipo,
debito LIKE cgtb00004.debito,
credito LIKE cgtb00004.credito,
status_reg CHAR(1),
num_doc LIKE cgtb00004.num_doc,
cod_aux LIKE cgtb00004.cod_aux,
cod_sec LIKE cgtb00004.cod_sec
END RECORD
# WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM cgfmrp003 FROM "cgfmrp003"
DISPLAY FORM cgfmrp003
DISPLAY "cgprrp003" AT 4,3
DISPLAY "Transacciones" AT 6,33
## INDICA EL TIPO DE PAPEL NECESARIO PARA EL REPORTE. 1 - PAPEL 9 1/2 X 11
## 2 - PAPEL 14 7/8 X 11
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
## AQUI SE INDICA EL CRITERIO DE BUSQUEDA DEL REPORTE
CONSTRUCT BY NAME criterio ON a.cuenta_no,a.ref,a.departamento
INPUT BY NAME fecha1,fecha2
AFTER FIELD fecha1
IF fecha1 IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha1
END IF
AFTER FIELD fecha2
IF fecha2 IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha2
END IF
IF fecha1 > fecha2 THEN
LET numero_msg = 149
CALL msg(numero_msg)
NEXT FIELD fecha1
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
## SE SELECCIONAN LOS CAMPOS NECESARIOS PARA EL REPORTE
LET SELEC =
"SELECT '1',a.cuenta_no,a.departamento,a.fecha,a.detalles,a.detalle_1, ",
" a.detalle_2,a.ref,a.tipo,a.debito,a.credito,a.status_t,a.num_doc, ",
" a.cod_aux,a.cod_sec ",
"FROM cgtb00004 a ",
"WHERE a.fecha BETWEEN ? AND ? AND ",
criterio clipped #," ORDER BY 8,1 "
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
DISPLAY "Buscando Informacion ... Espere Por Favor" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
START REPORT transac TO archivo
## SE PREPARA LA INFORMACION SELECCIONADA
PREPARE busca FROM selec
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
DECLARE accion CURSOR FOR busca
OPEN accion USING fecha1,fecha2
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
## SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE
## SALIDA AL REPORTE
WHILE STATUS != NOTFOUND
FETCH accion INTO trans.*
IF STATUS = NOTFOUND THEN
EXIT WHILE
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
IF trans.status_reg = "N" THEN
LET trans.debito = 0
LET trans.credito = 0
END IF
OUTPUT TO REPORT transac(trans.*)
END WHILE
FINISH REPORT transac
LET diferencia = t_debito-t_credito
DISPLAY BY NAME t_debito,t_credito,diferencia
LABEL atras:
PROMPT "Desea Imprimir Reporte [S/N]...? " FOR CHAR opcion
LET opcion = upshift(opcion)
IF (opcion != "S" AND opcion != "N") OR opcion IS NULL THEN
LET numero_msg =-1301
CALL msg(numero_msg)
GOTO atras
END IF
IF opcion = "S" THEN
RUN imprime
END IF
LET t_debito = 0
LET t_credito = 0
CLEAR SCREEN
END FUNCTION
## DEFINICION DEL REGISTRO DE IMPRESION CON LOS CAMPOS NECESARIOS PARA
## EL REPORTE
REPORT transac(x)
DEFINE x RECORD
secuencia INTEGER,
cuenta_no LIKE cgtb00004.cuenta_no,
departamento LIKE cgtb00004.departamento,
fecha LIKE cgtb00004.fecha,
detalles LIKE cgtb00004.detalles,
detalle_1 CHAR(30),
detalle_2 CHAR(27),
ref LIKE cgtb00004.ref,
tipo LIKE cgtb00004.tipo,
debito LIKE cgtb00004.debito,
credito LIKE cgtb00004.credito,
status_reg CHAR(1),
num_doc LIKE cgtb00004.num_doc,
cod_aux LIKE cgtb00004.cod_aux,
cod_sec LIKE cgtb00004.cod_sec
END RECORD
## DEFINICION DE LAS VARIABLES DE IMPRESION
DEFINE existe CHAR(1)
DEFINE doble_on CHAR(2)
DEFINE doble_off CHAR(2)
DEFINE negrillas_on CHAR(2)
DEFINE negrillas_off CHAR(2)
DEFINE comp_on CHAR(2)
DEFINE comp_off CHAR(2)
DEFINE doce CHAR(2)
DEFINE normal CHAR(2)
DEFINE hora CHAR(5)
OUTPUT
## DEFINICION DE LOS MARGENES DE IMPRESION
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 3
ORDER BY x.ref,x.secuencia
FORMAT
PAGE HEADER
LET doble_on = ASCII 14
LET doble_off = ASCII 20
LET negrillas_on = ASCII 27, ASCII 69
LET negrillas_off = ASCII 27, ASCII 70
LET comp_on = ASCII 15
LET comp_off = ASCII 18
LET doce = ASCII 27, ASCII 77
LET normal = ASCII 27, ASCII 80
LET hora = time
LET l = (93 - LENGTH(p_compania.nombre CLIPPED)) / 2
## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS
PRINT negrillas_on
PRINT COLUMN 1, comp_on,
COLUMN 2, "cgprrp003",
COLUMN 15, doble_on,
COLUMN l, p_compania.nombre CLIPPED,
COLUMN 70, negrillas_off,
COLUMN 71, doble_off,
COLUMN 86, "Pag. ",pageno using "###"
LET l = (145 - LENGTH("SISTEMA DE CONTABILIDAD GENERAL")) / 2
PRINT COLUMN l, "SISTEMA DE CONTABILIDAD GENERAL",
COLUMN 132, today using "dd/mm/yyyy"
LET l = (145 - LENGTH("TRANSACCIONES")) / 2
PRINT COLUMN l,"TRANSACCIONES",
COLUMN 135, hora
LET l = (145 - LENGTH("fffffffffffffffffffffffff")) / 2
PRINT COLUMN l,"DEL ",fecha1 USING "dd/mm/yyyy", " Al ",
fecha2 USING "dd/mm/yyyy"
PRINT COLUMN 1, "---------------------------------------------------",
"---------------------------------------------------",
"---------------------------------------"
PRINT COLUMN 40, "FECHA",
COLUMN 101, "NUMERO"
PRINT COLUMN 1, "CUENTA",
COLUMN 10, "DEPTO",
COLUMN 15, "CATALOGO",
COLUMN 26, "REF.",
COLUMN 40, "TRANS.",
COLUMN 50, "DESCRIPCION",
COLUMN 101, "DOCUMENTO",
COLUMN 123, "DEBITO",
COLUMN 137, "CREDITO"
PRINT COLUMN 1, "---------------------------------------------------",
"---------------------------------------------------",
"---------------------------------------"
skip 1 line
## AQUI SE INDICA LA IMPRESION DEL DETALLE
BEFORE GROUP OF x.ref
LET existe = "S"
ON EVERY ROW
IF x.status_reg = "N" THEN
LET x.detalle_1 = "NULO"
LET x.detalle_2 = null
LET x.debito = 0
LET x.credito = 0
END IF
IF x.status_reg IS NULL THEN
LET existe = "S"
ELSE
LET existe = "N"
END IF
IF x.status_reg is null or
x.status_reg = "N" THEN
PRINT COLUMN 1, x.cuenta_no,
COLUMN 10, x.departamento using "&&&&",
COLUMN 15, x.cod_aux using "&&","-",x.cod_sec using "&&&&",
COLUMN 26, x.num_doc,
COLUMN 40, x.fecha using "dd/mm/yyyy",
COLUMN 50, x.detalle_1 clipped," ",x.detalle_2[1,20] clipped,
COLUMN 101, x.ref CLIPPED,
COLUMN 116, x.debito using "###,###,###.##",
COLUMN 132, x.credito using "###,###,###.##"
END IF
AFTER GROUP OF x.ref
IF existe = "S" THEN
IF x.status_reg is null THEN
PRINT COLUMN 116, "______________",
COLUMN 132, "______________"
PRINT COLUMN 116, GROUP SUM(x.debito) using "###,###,###.##",
COLUMN 132, GROUP SUM(x.credito) using "###,###,###.##"
END IF
END IF
{ PRINT COLUMN 85, "Diferencia: ",
GROUP SUM(x.debito-x.credito)
using "((,(((,(#&).##)"}
SKIP 1 LINE
ON LAST ROW
SKIP 1 LINE
IF x.status_reg is null THEN
LET t_debito = SUM(x.debito) WHERE x.status_reg IS NULL
LET t_credito = SUM(x.credito) WHERE x.status_reg IS NULL
PRINT COLUMN 116, "________________",
COLUMN 132, "________________"
PRINT COLUMN 1, negrillas_on,
COLUMN 89, "TOTALES:",
COLUMN 116, t_debito using "#,###,###,###.##",
COLUMN 132, t_credito using "#,###,###,###.##",
negrillas_off
END IF
PRINT ASCII 30
END REPORT