{ ============================================================================== 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) 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), clave CHAR(16) 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 cgprrp008() END MAIN FUNCTION cgprrp008() DEFINE cuenta_Reg INT 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 LET tipo_papel = 1 CALL msgrp000(tipo_papel) INPUT BY NAME p_ano,p_mes 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 ano = p_ano AND mes=p_mes AND programa='cgprrp012.4rp' DELETE FROM cgtb00016 WHERE ano = p_ano AND mes=p_mes AND programa='cgprrp013.4rp' AND estado_m='390' LET p = 1 LET selec = "SELECT count(*) ", "FROM cgtb00001 b ", "WHERE (b.status_t IS NULL) AND ", criterio CLIPPED PREPARE comando1 FROM selec EXECUTE comando1 INTO cuenta_reg DISPLAY "cuenta ",cuenta_reg LET progreso = 5 DISPLAY progreso TO progreso CALL ui.Interface.refresh() LET selec = "SELECT b.cuenta_no,b.descripcion,b.estado_a,b.estado_m, ", " ISNULL(SUM(a.debito),0),ISNULL(SUM(a.credito),0),b.nivel,b.analitico,b.aplica_a ", "FROM cgtb00001 b LEFT OUTER JOIN cgtb00004_tmp a ON (a.cuenta_no = b.cuenta_no) AND (a.fecha BETWEEN ? AND ?) ", " AND (a.status_t IS NULL) ", "WHERE (a.status_t IS NULL) 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 "<<>>" AT 19,14 ATTRIBUTE(blue) # CALL seleccionarsalida() RETURNING r_output # LET handler = configureOutput(r_output) START REPORT mayor_anal_gral TO "analitico.txt" PREPARE comando FROM selec DECLARE busco CURSOR FOR comando OPEN busco USING fecha_inicial,fecha_final DISPLAY "<<>>" AT 19,14 ATTRIBUTE(blue) LET idx = 1 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) LET progreso = (idx /cuenta_reg )*100 DISPLAY progreso TO progreso CALL ui.Interface.refresh() LET idx = idx + 1 END WHILE FINISH REPORT mayor_anal_gral # DISPLAY BY NAME k_balance,k_debito,k_credito,k_actividad,k_balan_act CALL cgprrp008r(fecha_inicial,fecha_final) 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), clave CHAR(16) END RECORD DEFINE t_debito,t_credito,t_balan_ant,t_actividad,t_balan_act DECIMAL(12,2) DEFINE cuenta_88 CHAR(2) DEFINE fecha1,fecha2 DATE DEFINE actividad,balan_ant,p_balance,balance,debito1,debito2, valor_88_act,valor_88_ant,debito_88,credito_88,t_db,t_cr, credito1,credito2 DECIMAL(12,2) DEFINE balan_act DECIMAL(12,2) DEFINE descrip1 CHAR(30) DEFINE p_cuenta CHAR(8) DEFINE otras_cta CHAR(8) ## 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 PAGE LENGTH 150 FORMAT PAGE HEADER LET hora = time ## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS LET l = (84 - LENGTH(p_compania.nombre CLIPPED))/2 PRINT comp_on,negrillas_on PRINT COLUMN 2, "cgprrp008", COLUMN 15, doble_on, COLUMN l, p_compania.nombre CLIPPED, COLUMN 65, negrillas_off, COLUMN 66, doble_off, COLUMN 80, "PAG. ",pageno using "###" LET l = (129 - LENGTH("SISTEMA DE CONTABILIDAD GENERAL"))/2 PRINT COLUMN l, "SISTEMA DE CONTABILIDAD GENERAL", COLUMN 126, today using "dd/mm/yy" LET l = (129 - LENGTH("MAYOR GENERAL ANALITICO"))/2 PRINT COLUMN l, "MAYOR GENERAL ANALITICO", COLUMN 129, hora LET l = (129 - LENGTH("fffffffffffffffffffffffff"))/2 PRINT COLUMN l, "DEL ",fecha1 USING "dd/mm/yyyy"," Al ", fecha2 USING "dd/mm/yyyy" PRINT COLUMN 1, "---------------------------------------------------", "---------------------------------------------------", "-------------------------------" PRINT COLUMN 11, " ESTADO " PRINT COLUMN 1, "CUENTA", COLUMN 11, "A M", COLUMN 27, "DESCRIPCION", COLUMN 60, "BALANCE ANT.", COLUMN 79, "DEBITO", COLUMN 94, "CREDITO", COLUMN 106,"ACTIVIDAD MES", COLUMN 122,"BALANCE ACT." PRINT COLUMN 1, "----------------------------------------------------", "----------------------------------------------------" , "-----------------------------" SKIP 1 LINE ## AQUI SE INDICA LA IMPRESION DEL DETALLE BEFORE GROUP OF x.cuenta_no LET debito1 = 0 LET credito1 = 0 LET debito2 = 0 LET credito2 = 0 IF x.nivel < 3 THEN PRINT negrillas_on # Busqueda de las controles IF x.nivel = 1 THEN # Balance Anterior LET x.cuenta_no = x.cuenta_no clipped SELECT sum(debito-credito) INTO balan_ant FROM cgtb00004_tmp WHERE (fecha < fecha1) and (cuenta_no[1] = x.cuenta_no) and status_t is null IF balan_ant is null THEN LET balan_ant = 0 END IF # Actividades del mes SELECT SUM(a.debito),SUM(a.credito) INTO x.debito,x.credito FROM cgtb00004_tmp a WHERE (a.cuenta_no[1] = x.cuenta_no) and a.status_t IS NULL AND (a.fecha between fecha1 and 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 LET actividad = x.debito-x.credito END IF # Para Las Sub-control IF x.nivel > 1 THEN LET x.cuenta_no = x.cuenta_no clipped SELECT SUM(a.debito-a.credito) INTO balan_ant FROM cgtb00004_tmp a WHERE (a.cuenta_no[1,2] = x.cuenta_no) and a.status_t IS NULL AND (a.fecha < fecha1 ) IF balan_ant is null THEN LET balan_ant = 0 END IF # Actividades del mes SELECT SUM(a.debito),SUM(a.credito) INTO x.debito,x.credito FROM cgtb00004_tmp a WHERE (a.cuenta_no[1,2] = x.cuenta_no) and a.status_t IS NULL AND (a.fecha between fecha1 and fecha2) # Otras cuentas sub-controles (Balance Anterior) IF x.cuenta_no[3] != " " THEN SELECT SUM(a.debito-a.credito) INTO balan_ant FROM cgtb00004_tmp a WHERE (a.cuenta_no[1,3] = x.cuenta_no) and a.status_t IS NULL AND (a.fecha < fecha1 ) IF balan_ant is null THEN LET balan_ant = 0 END IF # Actividades del mes SELECT SUM(a.debito),SUM(a.credito) INTO x.debito,x.credito FROM cgtb00004_tmp a WHERE (a.cuenta_no[1,3] = x.cuenta_no) and a.status_t IS NULL AND (a.fecha between fecha1 and fecha2) END IF # Otras cuentas sub-controles (Actividades del mes) IF x.cuenta_no[4] != " " THEN SELECT SUM(a.debito-a.credito) INTO balan_ant FROM cgtb00004_tmp a WHERE (a.cuenta_no[1,4] = x.cuenta_no) and a.status_t IS NULL AND (a.fecha < fecha1 ) IF balan_ant is null THEN LET balan_ant = 0 END IF SELECT SUM(a.debito),SUM(a.credito) INTO x.debito,x.credito FROM cgtb00004_tmp a WHERE (a.cuenta_no[1,4] = x.cuenta_no) and a.status_t IS NULL AND (a.fecha between fecha1 and fecha2) END IF IF x.debito is null THEN LET x.debito = 0 END IF IF x.credito is null THEN LET x.credito = 0 END IF LET actividad = x.debito-x.credito END IF #IF balan_ant <> 0 and x.debito <> 0 and # x.credito <> 0 and actividad <> 0 and # balan_ant + actividad <> 0 THEN PRINT COLUMN 1, x.cuenta_no , COLUMN 10, x.estado_a," ",x.estado_m," ", x.descripcion CLIPPED, COLUMN 55, balan_ant USING "((,(((,(((,((#.##)", COLUMN 70, x.debito USING "###,###,###.##", COLUMN 85, x.credito USING "###,###,###.##", COLUMN 100, actividad USING "(,(((,(((,(((.##)", COLUMN 112, balan_ant + actividad USING "((,(((,(((,(((.##)" PRINT COLUMN 1, negrillas_off #END IF LET balan_act = balan_ant + actividad INSERT INTO cgtb00016(ano,mes,cuenta_no,estado_a,estado_m,balance_ant,actividad,balance_act,programa,descripcion, primern,debito,credito) VALUES (p_ano,p_mes,x.cuenta_no,x.estado_a,x.estado_m, balan_ant,actividad,balan_act,'cgprrp012.4rp',x.descripcion,x.nivel, x.debito,x.credito) IF valor_88_act is null THEN LET valor_88_act = 0 END IF IF valor_88_ant is null THEN LET valor_88_ant = 0 END IF IF x.cuenta_no = "88" THEN LET cuenta_88 = "88" LET valor_88_act = balan_ant + actividad LET debito_88 = x.debito LET credito_88 = x.credito LET valor_88_ant = balan_ant END IF END IF ON EVERY ROW IF x.nivel > 2 THEN # Balance Inicial SELECT SUM(b.debito - b.credito) INTO balance FROM cgtb00004_tmp b WHERE (b.cuenta_no=x.cuenta_no) AND b.status_t IS NULL AND (b.fecha < fecha1) IF balance IS NULL THEN LET balance = 0 END IF IF x.debito is null THEN LET x.debito = 0 END IF IF x.credito is null THEN LET x.credito = 0 END IF LET actividad = x.debito - x.credito #IF balan_ant <> 0 AND x.debito <> 0 AND # x.credito <> 0 AND actividad <> 0 AND # balan_ant + actividad <> 0 THEN PRINT COLUMN 1, x.cuenta_no, COLUMN 10, x.estado_a," ",x.estado_m," ", x.descripcion CLIPPED, COLUMN 55, balance USING "((,(((,(((,((#.##)", COLUMN 70, x.debito USING "###,###,###.##", COLUMN 85, x.credito USING "###,###,###.##", COLUMN 100, actividad USING "(,(((,(((,(((.##)", COLUMN 112, balance + actividad USING "((,(((,(((,(((.##)" # END IF LET balan_act = balance + actividad INSERT INTO cgtb00016 (ano,mes,cuenta_no,estado_a,estado_m,balance_ant,actividad,balance_act,programa, descripcion,primern,debito,credito) VALUES (p_ano,p_mes,x.cuenta_no,x.estado_a,x.estado_m, balance,actividad,balan_act,'cgprrp012.4rp',x.descripcion,x.nivel, x.debito,x.credito) END IF # Busca las cuentas que tienen que ver con el beneficio neto SELECT unique cuenta_no FROM cgtb00014 WHERE cuenta_no = x.cuenta_no IF status != notfound THEN LET otras[p].cuenta_no = x.cuenta_no LET otras[p].descripcion = x.descripcion LET otras[p].debito = x.debito LET otras[p].credito = x.credito LET otras[p].actividad = actividad LET otras[p].balan_ant = balance LET otras[p].balance_act = balan_act LET p = p + 1 END IF IF status = notfound THEN LET status = 0 END IF LET t_debito = 0 LET t_credito = 0 LET t_balan_ant = 0 LET t_actividad = 0 LET balan_ant = 0 LET t_balan_act = 0 LET t_db = 0 LET t_cr = 0 LET actividad = 0 LET idx = 1 ON LAST ROW SKIP TO TOP OF PAGE DECLARE busca CURSOR FOR SELECT cuenta_no ,descripcion,estado_a,estado_m FROM cgtb00001 WHERE nivel = 1 ORDER BY 1 FOREACH busca INTO x.cuenta_no,x.descripcion,x.estado_a,x.estado_m LET x.cuenta_no = x.cuenta_no clipped SELECT sum(a.debito-a.credito) INTO balan_ant FROM cgtb00004_tmp a WHERE (a.cuenta_no[1] = x.cuenta_no) and (a.fecha < fecha1) and a.status_t is null IF balan_ant is null THEN LET balan_ant = 0 END IF # Actividades del mes SELECT SUM(a.debito),SUM(a.credito) INTO x.debito,x.credito FROM cgtb00004_tmp a WHERE (a.cuenta_no[1] = x.cuenta_no) and a.status_t IS NULL AND (a.fecha between fecha1 and 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 LET actividad = x.debito - x.credito LET t_debito = t_debito + x.debito LET t_credito = t_credito + x.credito LET t_balan_ant = t_balan_ant + balan_ant LET t_actividad = t_actividad + actividad LET t_balan_act = t_balan_act + (actividad + balan_ant) PRINT COLUMN 1, x.cuenta_no, COLUMN 10, x.estado_a," ",x.estado_m," ",x.descripcion CLIPPED, COLUMN 55, balan_ant USING "((,(((,(((,((#.##)", COLUMN 70, x.debito USING "###,###,###.##", COLUMN 85, x.credito USING "###,###,###.##", COLUMN 100, actividad USING "(,(((,(((,(((.##)", COLUMN 112, balan_ant + actividad USING "((,(((,(((,(((.##)" # Validacion de un record para sacar pequeno estado al final de este reporte IF x.cuenta_no = "4" or x.cuenta_no = "5" or x.cuenta_no = "7" or x.cuenta_no = "8" THEN LET estado[idx].cuenta_no = x.cuenta_no LET estado[idx].descripcion = x.descripcion LET estado[idx].debito = x.debito LET estado[idx].credito = x.credito LET estado[idx].actividad = actividad IF x.cuenta_no = 8 THEN LET estado[idx].balance_act = balan_ant + actividad - valor_88_act LET estado[idx].debito = estado[idx].debito - debito_88 LET estado[idx].credito = estado[idx].credito - credito_88 LET actividad = debito_88 - credito_88 LET estado[idx].actividad = estado[idx].actividad - actividad LET estado[idx].balan_ant = balan_ant - valor_88_ant ELSE LET estado[idx].balan_ant = balan_ant LET estado[idx].balance_act = balan_ant + actividad END IF LET idx = idx + 1 END IF END FOREACH PRINT COLUMN 1, "---------------------------------------------------", "---------------------------------------------------", "-------------------------------" PRINT COLUMN 55, t_balan_ant USING "((,(((,(((,((#.##)", COLUMN 70, t_debito USING "###,###,###.##", COLUMN 85, t_credito USING "###,###,###.##", COLUMN 100, t_actividad USING "(,(((,(((,(((.##)", COLUMN 112, t_balan_act USING "((,(((,(((,(((.##)" PRINT COLUMN 1, "---------------------------------------------------", "---------------------------------------------------", "-------------------------------" INSERT INTO cgtb00016 (ano,mes,estado_a,balance_ant,actividad,balance_act,programa,debito,credito) VALUES (p_ano,p_mes,'275',t_balan_ant,t_actividad,t_balan_act,'cgprrp012.4rp',t_debito,t_credito) SKIP TO TOP OF PAGE LET t_debito = 0 LET t_credito = 0 LET t_balan_ant = 0 LET t_actividad = 0 LET balan_ant = 0 LET t_balan_act = 0 LET t_db = 0 LET t_cr = 0 LET actividad = 0 FOR i = 1 TO idx IF estado[i].cuenta_no is not null THEN PRINT COLUMN 1, estado[i].cuenta_no, COLUMN 20, estado[i].descripcion CLIPPED, COLUMN 55, estado[i].balan_ant USING "((,(((,(((,((#.##)", COLUMN 70, estado[i].debito USING "###,###,###.##", COLUMN 85, estado[i].credito USING "###,###,###.##", COLUMN 100, estado[i].actividad USING "(,(((,(((,(((.##)", COLUMN 112, estado[i].balance_act USING "((,(((,(((,(((.##)" LET t_balan_ant = t_balan_ant + estado[i].balan_ant LET t_debito = t_debito + estado[i].debito LET t_credito = t_credito + estado[i].credito LET t_actividad = t_actividad + estado[i].actividad LET t_balan_act = t_balan_act + estado[i].balance_act END IF END FOR PRINT COLUMN 1, "---------------------------------------------------", "---------------------------------------------------", "-------------------------------" IF t_actividad <= 0 THEN PRINT COLUMN 2, "BENEFICIO ANTES DE ISR... ", COLUMN 55, t_balan_ant USING "((,(((,(((,((#.##)", COLUMN 70, t_debito USING "###,###,###.##", COLUMN 85, t_credito USING "###,###,###.##", COLUMN 100, t_actividad USING "(,(((,(((,(((.##)", COLUMN 112, t_balan_act USING "(,(((,(((,(((.##)" ELSE PRINT COLUMN 2, "PERDIDA ANTES DE ISR... ", COLUMN 55, t_balan_ant USING "((,(((,(((,((#.##)", COLUMN 70, t_debito USING "###,###,###.##", COLUMN 85, t_credito USING "###,###,###.##", COLUMN 100, t_actividad USING "(,(((,(((,(((.##)", COLUMN 112, t_balan_act USING "((,(((,(((,(((.##)" END IF INSERT INTO cgtb00016 (ano,mes,estado_m,balance_ant,actividad,balance_act,programa,debito,credito) VALUES (p_ano,p_mes,'390',t_balan_ant,t_actividad,t_balan_act,'cgprrp013.4rp',t_debito,t_credito) PRINT COLUMN 1, "---------------------------------------------------", "---------------------------------------------------", "-------------------------------" LET k_balance = t_balan_ant LET k_debito = t_debito LET k_credito = t_credito LET k_actividad = t_actividad LET k_balan_act = t_balan_act SKIP 1 LINE PRINT COLUMN 1,"MENOS:" FOR i = 1 TO p IF otras[i].cuenta_no is not null THEN PRINT COLUMN 1, otras[i].cuenta_no, COLUMN 20, otras[i].descripcion, COLUMN 55, otras[i].balan_ant USING "((,(((,(((,((#.##)", COLUMN 70, otras[i].debito USING "#,###,###,###.##", COLUMN 85, otras[i].credito USING "#,###,###,###.##", COLUMN 100, otras[i].actividad USING "(,(((,(((,(((.##)", COLUMN 112, otras[i].balance_act USING "((,(((,(((,(((.##)" LET t_balan_ant = t_balan_ant + otras[i].balan_ant LET t_debito = t_debito + otras[i].debito LET t_credito = t_credito + otras[i].credito LET t_actividad = t_actividad + otras[i].actividad LET t_balan_act = t_balan_act + otras[i].balance_act END IF END FOR PRINT COLUMN 1, "---------------------------------------------------", "---------------------------------------------------", "-------------------------------" PRINT COLUMN 2, "BENEFICIO NETO... ", COLUMN 55, t_balan_ant USING "((,(((,(((,((#.##)", COLUMN 70, t_debito USING "###,###,###.##", COLUMN 85, t_credito USING "###,###,###.##", COLUMN 100, t_actividad USING "(,(((,(((,(((.##)", COLUMN 112, t_balan_act USING "((,(((,(((,(((.##)" PRINT COLUMN 1, "---------------------------------------------------", "---------------------------------------------------", "-------------------------------" LET valor_88_act= 0 LET valor_88_ant= 0 LET t_balan_ant = 0 LET t_debito = 0 LET t_credito = 0 LET t_actividad = 0 LET t_balan_act = 0 PRINT COLUMN 1,comp_off END REPORT