{ ============================================================================== PROGRAMA : CGPRRP004 SISTEMA : Sistema de Contabilidad General Objetivo : Imprimir el mayor general detallado PROGRAMADOR : Tadeo A. Ferreras FECHA : Oct. 05, 1993 ============================================================================== } GLOBALS "cgprgb000.4gl" DEFINE mayor RECORD fecha DATE, tipo SMALLINT, ref CHAR(14), cuenta_no CHAR(8), descripcion CHAR(30), departamento SMALLINT, detalles CHAR(30), detalle1 CHAR(30), detalle2 CHAR(30), debito DECIMAL(12,2), credito DECIMAL(12,2), cod_aux SMALLINT, cod_sec SMALLINT, num_doc LIKE cgtb00004.num_doc, analisis CHAR(1), catalogo CHAR(1), depto CHAR(1), clave CHAR(6), nom_dpto CHAR(30) END RECORD DEFINE fecha_inicial,fecha_final DATE 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 cgprrp004() END MAIN FUNCTION cgprrp004() LET int_flag = FALSE OPTIONS FORM LINE 8 OPEN FORM cgfmrp004 FROM "cgfmrp004" DISPLAY FORM cgfmrp004 DISPLAY "cgprrp004" AT 4,3 DISPLAY "Mayor General Detallado" AT 6,28 LET tipo_papel = 1 CALL msgrp000(tipo_papel) INPUT BY NAME fecha_inicial,fecha_final AFTER FIELD fecha_inicial IF fecha_inicial IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_inicial END IF AFTER FIELD fecha_final IF fecha_final IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_final END IF IF fecha_inicial > fecha_final THEN LET numero_msg = 51 CALL msg(numero_msg) NEXT FIELD fecha_inicial END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF CONSTRUCT criterio ON a.cuenta_no,a.departamento,a.cod_aux,a.cod_sec FROM cuenta_no,departamento,cod_aux,cod_sec IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET selec = "SELECT a.fecha,a.tipo,a.ref,a.cuenta_no,b.descripcion,a.departamento, ", " a.detalles,a.detalle_1,a.detalle_2,a.debito,a.credito, ", " a.cod_aux,a.cod_sec,a.num_doc,b.analitico,b.cata,b.depto ", "FROM cgtb00004 a,cgtb00001 b ", "WHERE (a.cuenta_no = b.cuenta_no AND a.status_t IS NULL AND ", " a.fecha <= ?) AND (b.analitico = 'S' or b.cata = 'S' or ", " b.depto = 'S') AND ", criterio CLIPPED DISPLAY "<<>>" AT 19,14 ATTRIBUTE(blue) 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 mayor_gral TO archivo DISPLAY "<<>>" AT 19,14 ATTRIBUTE(blue) PREPARE comando FROM selec DECLARE busco CURSOR FOR comando OPEN busco USING fecha_final WHILE status != NOTFOUND FETCH busco INTO mayor.* 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_gral EXIT WHILE END IF LET mayor.clave = mayor.cod_aux using "&&", mayor.cod_sec using "&&&&" OUTPUT TO REPORT mayor_gral(mayor.*,fecha_inicial,fecha_final) END WHILE FINISH REPORT mayor_gral CLEAR SCREEN RUN imprime END FUNCTION REPORT mayor_gral(x,fecha1,fecha2) DEFINE x RECORD fecha DATE, tipo SMALLINT, ref CHAR(14), cuenta_no CHAR(8), descripcion CHAR(30), departamento SMALLINT, detalles CHAR(30), detalle1 CHAR(30), detalle2 CHAR(30), debito DECIMAL(12,2), credito DECIMAL(12,2), cod_aux SMALLINT, cod_sec SMALLINT, num_doc LIKE cgtb00004.num_doc, analisis CHAR(1), catalogo CHAR(1), depto CHAR(1), clave CHAR(6), nom_dpto CHAR(30) END RECORD DEFINE fecha1,fecha2 DATE DEFINE total1,total2,total3,total4,total5,total6,debito,credito,balance, a_balance,balance1,balance2,total7,t_balance,balance_final DECIMAL(12,2) DEFINE nombre1,nombre2 CHAR(30) DEFINE nosale CHAR(1) ## DEFINICION DE LAS VARIABLES DE IMPRESION 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.cuenta_no,x.departamento,x.clave,x.fecha,x.ref,x.num_doc 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 = (124 - LENGTH(p_compania.nombre CLIPPED)) / 2 ## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS PRINT comp_on,negrillas_on PRINT COLUMN 2, "cgprrp004", COLUMN l, p_compania.nombre CLIPPED, COLUMN 124, "Pag. ",pageno using "###" LET l = (124 - LENGTH("SISTEMA DE CONTABILIDAD GENERAL")) / 2 PRINT COLUMN l, "SISTEMA DE CONTABILIDAD GENERAL", COLUMN 124, today using "dd/mm/yyyy" LET l = (124 - LENGTH("MAYOR GENERAL DETALLADO")) / 2 PRINT COLUMN l, "MAYOR GENERAL DETALLADO", COLUMN 127, hora LET l = (124 - LENGTH("ffffffffffffffffffffffff")) / 2 PRINT COLUMN l, "DEL ",fecha1 USING "dd/mm/yyyy", " Al ",fecha2 USING "dd/mm/yyyy" PRINT COLUMN 1, "---------------------------------------------------", "---------------------------------------------------", "-----------------------------" PRINT COLUMN 1, "FECHA", COLUMN 11, "REFERENCIA", COLUMN 25, "DOCUMENTO", COLUMN 40, "DETALLE", COLUMN 77, "DR", COLUMN 98, "CR", COLUMN 116,"BALANCE" PRINT COLUMN 1, "----------------------------------------------------", "----------------------------------------------------" , "-------------------------" skip 1 line ## AQUI SE INDICA LA IMPRESION DEL DETALLE BEFORE GROUP OF x.cuenta_no LET total6 = 0 LET total7 = 0 LET balance2 = 0 LET balance2 = 0 IF x.depto != "S" THEN SELECT SUM(b.debito-b.credito) INTO balance2 FROM cgtb00004 b WHERE b.cuenta_no = x.cuenta_no AND b.status_t IS NULL AND b.fecha < fecha1 IF balance2 is null THEN LET balance2 = 0 END IF END IF PRINT COLUMN 1, negrillas_on PRINT COLUMN 2, "Cuenta No. ",x.cuenta_no CLIPPED," ", x.descripcion CLIPPED PRINT COLUMN 1, negrillas_off PRINT COLUMN 1, fecha1-1 USING "dd/mm/yyyy", COLUMN 11, "RESUMEN", COLUMN 27, "BALANCE AL CIERRE", COLUMN 108, balance2 USING "(,(((,(((,(((.##)" LET balance = balance2 BEFORE GROUP OF x.departamento LET total4 = 0 LET total5 = 0 IF x.departamento is not null THEN SELECT nom_dpto INTO x.nom_dpto FROM adtb00001 WHERE departamento = x.departamento IF STATUS = NOTFOUND THEN LET status = 0 LET x.nom_dpto = "NO TIENE DEPARTAMENTO" END IF LET balance_final = 0 SELECT SUM(b.debito-b.credito) INTO balance2 FROM cgtb00004 b WHERE b.cuenta_no = x.cuenta_no AND b.status_t IS NULL AND b.fecha < fecha1 and b.departamento = x.departamento IF balance2 IS NULL THEN LET balance2 = 0 END IF IF balance2 = 0 THEN SELECT SUM(b.debito-b.credito) INTO balance_final FROM cgtb00004 b WHERE b.cuenta_no = x.cuenta_no AND b.status_t IS NULL AND b.fecha < fecha2 and b.departamento = x.departamento IF balance_final IS NULL THEN LET balance_final = 0 END IF END IF IF balance2 != 0 OR balance_final != 0 THEN PRINT COLUMN 1, negrillas_on PRINT COLUMN 2, "DEPTO.: ",x.departamento USING "&&&&"," ", x.nom_dpto CLIPPED PRINT COLUMN 1, negrillas_off PRINT COLUMN 1,fecha1-1 USING "dd/mm/yyyy", COLUMN 11,"RESUMEN", COLUMN 27,"BALANCE AL CIERRE", COLUMN 108,balance2 USING "(,(((,(((,(((.##)" LET balance = balance2 END IF END IF BEFORE GROUP OF x.clave LET nombre1 = null LET nombre2 = null LET balance2 = 0 IF x.cod_aux = 1 THEN SELECT nom1_emp,apell1_emp INTO nombre1,nombre2 FROM adtb00003 WHERE num_emp = x.cod_sec ELSE SELECT nom_sp INTO nombre1 FROM cotb00001 WHERE cod_sp = x.cod_aux and cod_sp_sec = x.cod_sec IF status = notfound THEN LET status = 0 END IF END IF LET balance_final = 0 IF x.cod_aux is not null THEN SELECT SUM(b.debito-b.credito) INTO balance2 FROM cgtb00004 b WHERE b.cuenta_no = x.cuenta_no AND b.status_t IS NULL AND b.fecha < fecha1 and b.cod_aux = x.cod_aux and b.cod_sec = x.cod_sec LET nosale = "S" IF balance2 IS NULL THEN LET balance2 = 0 END IF IF balance2 = 0 THEN SELECT SUM(b.debito-b.credito) INTO balance_final FROM cgtb00004 b WHERE b.cuenta_no = x.cuenta_no AND b.status_t IS NULL AND b.fecha < fecha2 and b.cod_aux = x.cod_aux and b.cod_sec = x.cod_sec IF balance_final IS NULL THEN LET balance_final = 0 END IF END IF LET total1 = 0 LET total2 = 0 IF balance2 != 0 OR balance_final != 0 THEN PRINT COLUMN 1, negrillas_on PRINT COLUMN 2, "AUXILIAR: ",x.cod_aux USING "&&","-", x.cod_sec using "&&&&"," ", nombre1 clipped," ", nombre2 PRINT COLUMN 1, negrillas_off PRINT COLUMN 1,fecha1-1 USING "dd/mm/yyyy", COLUMN 11,"RESUMEN", COLUMN 27,"BALANCE AL CIERRE", COLUMN 108,balance2 USING "(,(((,(((,(((.##)" IF balance2 IS NULL THEN LET balance2 = 0 END IF LET balance = balance2 END IF END IF ON EVERY ROW IF x.fecha >= fecha1 and x.fecha <= fecha2 THEN LET total1 = total1 + x.debito LET total2 = total2 + x.credito LET balance = balance + (x.debito - x.credito) PRINT COLUMN 1,x.fecha USING "dd/mm/yyyy", COLUMN 11,x.num_doc, COLUMN 25,x.ref CLIPPED, COLUMN 40,x.detalle1 CLIPPED," ", COLUMN 69,x.debito USING "#,###,###,###.##", COLUMN 88,x.credito USING "#,###,###,###.##", COLUMN 108,balance USING "(,(((,(((,(((.##)" IF x.detalle2 is not null THEN PRINT COLUMN 27, x.detalle2 CLIPPED END IF END IF AFTER GROUP OF x.clave IF x.cod_aux is not null THEN IF balance2 != 0 OR balance_final != 0 THEN PRINT COLUMN 71,"----------------", COLUMN 88,"----------------", COLUMN 108,"----------------" PRINT COLUMN 1, "Total Auxiliar -->", COLUMN 69,total1 USING "#,###,###,###.##", COLUMN 88,total2 USING "#,###,###,###.##", COLUMN 108,balance USING "(,(((,(((,(((.##)" SKIP 1 LINE LET total4 = total4 + total1 LET total5 = total5 + total2 END IF END IF LET total6 = total6 + total1 LET total7 = total7 + total2 AFTER GROUP OF x.departamento IF x.departamento IS NOT NULL THEN IF balance2 != 0 OR balance_final != 0 THEN PRINT COLUMN 71,"----------------", COLUMN 88,"----------------", COLUMN 108,"----------------" PRINT COLUMN 1, "Total departamento -->", COLUMN 69,GROUP SUM(x.debito) WHERE x.fecha >= fecha1 and x.fecha <= fecha2 USING "#,###,###,###.##", COLUMN 88,GROUP SUM(x.credito) WHERE x.fecha >= fecha1 and x.fecha <= fecha2 USING "#,###,###,###.##", COLUMN 108,balance USING "(,(((,(((,(((.##)" PRINT COLUMN 71,"================", COLUMN 88,"================", COLUMN 108,"================" END IF END IF AFTER GROUP OF x.cuenta_no PRINT COLUMN 71,"----------------", COLUMN 88,"----------------", COLUMN 108,"----------------" PRINT COLUMN 1, "Total cuenta -->", COLUMN 69,GROUP SUM(x.debito) WHERE x.fecha >= fecha1 and x.fecha <= fecha2 USING "#,###,###,###.##", COLUMN 88,GROUP SUM(x.credito) WHERE x.fecha >= fecha1 and x.fecha <= fecha2 USING "#,###,###,###.##", COLUMN 108,GROUP SUM(x.debito-x.credito) WHERE x.fecha <= fecha2 USING "(,(((,(((,(((.##)" PRINT COLUMN 71,"================", COLUMN 88,"================", COLUMN 108,"================" SKIP 1 LINE ON LAST ROW PRINT COLUMN 1,comp_off END REPORT