{ ------------------------------------------------------------------------------- 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