{ ============================================================================== PROGRAMA : LQPRRP006 SISTEMA : Sistema de Costos Objetivo : Imprimir el mayor Auxiliar de Costospor Referencia COMENTARIOS : Este reporte tiene una busqueda de todas las referencias menores a la fecha final del reporte porque los balances de las referencias que no entran en el periodo contable del mes no trae los balances iniciales o resumenes. PROGRAMADOR : Tadeo A. Ferreras FECHA : Enero 25, 1994 ============================================================================== } GLOBALS "lqprgb000.4gl" DEFINE mayor RECORD cod_aux SMALLINT, cod_sec SMALLINT, fecha DATE, tipo SMALLINT, ref CHAR(14), cuenta_no CHAR(8), descripcion CHAR(30), num_doc CHAR(12), detalle1 CHAR(30), detalle2 CHAR(30), debito DECIMAL(12,2), credito DECIMAL(12,2), balance DECIMAL(12,2), clave CHAR(6) END RECORD DEFINE mayor1 RECORD cod_aux SMALLINT, cod_sec SMALLINT, cuenta_no CHAR(8), num_doc CHAR(12), descripcion CHAR(30), valor DECIMAL(12,2) END RECORD DEFINE mayor2 RECORD cod_aux SMALLINT, cod_sec SMALLINT, cuenta_no CHAR(8), num_doc CHAR(12), valor DECIMAL(12,2) END RECORD DEFINE selec1 CHAR(1000) DEFINE salir,salir1,opc CHAR(1) DEFINE fecha_inicial,fecha_final DATE DEFINE balance,total1,total2,total3,total4,total5,total6,debito,credito, balance1,valor2 DECIMAL(12,2) DEFINE idx1,idx2 INTEGER FUNCTION lqprrp006() LET int_flag = FALSE OPTIONS FORM LINE 8 OPEN FORM lqfmrp006 FROM "lqfmrp006" DISPLAY FORM lqfmrp006 DISPLAY "lqprrp006" AT 4,3 DISPLAY "Mayor Auxiliar de Costos Detallado" AT 6,22 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 BY NAME criterio ON a.cuenta_no IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF # Buscando las referencias de las cuentas que tienen resumenes pendientes # Buscando las referencias de las cuentas que tienen resumenes pendientes # a una fecha determinada y movimientos a la fecha LET selec = "SELECT a.cod_aux,a.cod_sec,a.fecha,a.tipo,a.ref,a.cuenta_no,", " b.descripcion,", "a.num_doc,a.detalle_1,a.detalle_2,a.debito,a.credito ", "FROM cgtb00004 a,cgtb00001 b ", "WHERE a.cuenta_no = b.cuenta_no AND ",criterio CLIPPED, " AND a.status_t IS NULL AND a.fecha <=? AND ", "a.cod_sec is not null AND a.num_doc is not null ", "ORDER BY 1,2,8,6 " DISPLAY "<<>>" AT 19,14 ATTRIBUTE(YELLOW) PREPARE comando FROM selec DECLARE busco CURSOR FOR comando OPEN busco USING fecha_final # START REPORT mayor_ref TO PIPE "lp -dcentral" START REPORT mayor_ref TO "rplqg25" DISPLAY "<<>>" AT 19,14 ATTRIBUTE(YELLOW) 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 RETURN END IF LET mayor.balance = 0 DISPLAY " " AT 22,4 DISPLAY "Datos1: ", mayor.cod_sec,"-",mayor.num_doc,"-",mayor.cuenta_no AT 22,4 # LET idx = 1 # LET salir1 = "N" # WHILE salir1 != "S" { FOREACH busco2 INTO mayor2.* # IF STATUS = NOTFOUND THEN # LET idx = 1 # LET salir1 = "S" # EXIT WHILE # END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF # LET idx = idx + 1 IF mayor.cod_aux = mayor2.cod_aux AND mayor.cod_sec = mayor2.cod_sec AND mayor.cuenta_no = mayor2.cuenta_no AND mayor.num_doc = mayor2.num_doc THEN LET valor2 = mayor2.valor DISPLAY " " AT 21,4 DISPLAY "Datos2: ", mayor2.cod_sec,"-",mayor2.num_doc,"-",mayor2.cuenta_no AT 21,4 # LET idx = 1 # LET salir1 = "S" EXIT FOREACH END IF END FOREACH } IF valor2 IS NULL THEN LET valor2 = 0 END IF # IF valor2 <> 0 OR mayor.fecha >= fecha_inicial THEN LET mayor.balance = valor2 LET mayor.clave = mayor.cod_aux using "&&",mayor.cod_sec using "&&&&" OUTPUT TO REPORT mayor_ref(mayor.*,fecha_inicial,fecha_final) # END IF END WHILE FINISH REPORT mayor_ref PROMPT "Desea Imprimir Este Reporte [S/N]...?" FOR CHAR opc LET opc = UPSHIFT(opc) IF opc = "S" THEN RUN "lp -dcentral rplqg25" END IF LET total1 = 0 LET total2 = 0 LET total3 = 0 LET total4 = 0 LET total5 = 0 LET total6 = 0 CLEAR SCREEN RUN "type C:\\archivo > %USPRINT%" END FUNCTION REPORT mayor_ref(x,fecha1,fecha2) DEFINE x RECORD cod_aux SMALLINT, cod_sec SMALLINT, fecha DATE, tipo SMALLINT, ref CHAR(14), cuenta_no CHAR(8), descripcion CHAR(30), num_doc CHAR(12), detalle1 CHAR(30), detalle2 CHAR(30), debito DECIMAL(12,2), credito DECIMAL(12,2), balance DECIMAL(12,2), clave CHAR(6) END RECORD DEFINE fecha1,fecha2 DATE DEFINE total1,total2,total3,total4,total5,total6 DECIMAL(12,2) 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) DEFINE nombre1,nombre2 CHAR(30) OUTPUT ## DEFINICION DE LOS MARGENES DE IMPRESION TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 3 ORDER BY x.clave,x.num_doc,x.cuenta_no,x.fecha FORMAT PAGE HEADER LET doble_on = ASCII 001 LET doble_off = ASCII 002 LET negrillas_on = ASCII 027, ASCII 098 LET negrillas_off = ASCII 027, ASCII 099 LET comp_on = ASCII 31 LET comp_off = ASCII 30 LET doce = ASCII 30 LET normal = ASCII 029 LET hora = time ## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS PRINT COLUMN 1, comp_on, COLUMN 2, "lqprrp006", COLUMN 14, negrillas_on, COLUMN 15, doble_on, COLUMN 17, "R A Y . O . V A C D O M I N I C A N A, S. A.", COLUMN 65, negrillas_off, COLUMN 66, doble_off, COLUMN 83, "Pag. ",pageno using "###" PRINT COLUMN 48, "SISTEMA DE LIQUIDACION", COLUMN 124, today using "dd/mm/yy" PRINT COLUMN 29,"MAYOR AUXILIAR DE COSTOS DETALLADO POR AUXILIAR", COLUMN 127, hora PRINT COLUMN 47, "DEL ",fecha1 USING "dd/mm/yy"," AL ", fecha2 USING "dd/mm/yy" PRINT negrillas_on PRINT COLUMN 1, "---------------------------------------------------", "---------------------------------------------------", "-----------------------------" PRINT COLUMN 1, "FECHA", COLUMN 24, "DOCUMENTO", COLUMN 38, "DETALLE", COLUMN 80, "DR", COLUMN 95, "CR", COLUMN 110,"BALANCE" PRINT COLUMN 1, "----------------------------------------------------", "----------------------------------------------------" , "-------------------------" PRINT negrillas_off BEFORE GROUP OF x.clave LET total1 = 0 LET total2 = 0 LET idx2 = 0 BEFORE GROUP OF x.num_doc LET idx1 = 0 LET total3 = 0 LET total4 = 0 BEFORE GROUP OF x.cuenta_no LET total5 = 0 LET total6 = 0 LET balance = 0 LET balance1= 0 LET idx = 0 #LET balance = x.balance ON EVERY ROW IF x.debito IS NULL THEN LET x.debito = 0 END IF IF x.credito IS NULL THEN LET x.credito = 0 END IF IF x.fecha < fecha_inicial THEN LET balance1 = balance1 + (x.debito - x.credito) LET balance = 0 END IF IF balance1 IS NULL THEN LET balance1 = 0 END IF IF x.fecha >= fecha1 THEN LET idx = idx + 1 LET idx1= idx1+ 1 LET idx2= idx2+ 1 END IF IF idx = 1 THEN LET balance = balance1 END IF IF idx2 = 1 AND idx1 = 1 AND idx = 1 THEN PRINT COLUMN 1, negrillas_on,"Auxiliar ",x.cod_aux using "&&","-", x.cod_sec using "&&&&"; IF x.cod_aux = 1 THEN SELECT nom1_emp,apell1_emp INTO nombre1,nombre2 FROM adtb00003 WHERE num_emp = x.cod_sec PRINT " ",nombre1 clipped," ",nombre2,negrillas_off ELSE LET nombre1 = null LET nombre2 = null SELECT nom_sp INTO nombre2 FROM cotb00001 WHERE cod_sp = x.cod_aux and cod_sp_sec = x.cod_sec PRINT " ",nombre2,negrillas_off END IF END IF IF idx1 = 1 AND idx = 1 THEN PRINT COLUMN 1, negrillas_on,"REFERENCIA ",x.num_doc,negrillas_off END IF IF idx = 1 THEN IF balance > 0 THEN LET total5 = balance LET total6 = 0 ELSE LET total5 = 0 LET total6 = (balance * -1) END IF PRINT COLUMN 1, negrillas_on,"CUENTA NO. ",x.cuenta_no," ", x.descripcion CLIPPED, negrillas_off SKIP 1 LINE IF balance <> 0 THEN PRINT COLUMN 1,fecha1-1 USING "dd/mm/yy", COLUMN 27,"Resumen Balance al Cierre", COLUMN 68,total5 USING "###,###,###.##", COLUMN 90,total6 USING "###,###,###.##", COLUMN 110,balance USING "(((,(((,(((.##)" END IF END IF IF idx > 0 THEN LET total5 = total5 + x.debito LET total6 = total6 + x.credito LET balance = balance + (x.debito - x.credito) PRINT COLUMN 1,x.fecha USING "dd/mm/yy", COLUMN 24,x.ref CLIPPED, COLUMN 40,x.detalle1 CLIPPED," ", COLUMN 72,x.debito USING "###,###,###.##", COLUMN 90,x.credito USING "###,###,###.##", COLUMN 110,balance USING "(((,(((,(((.##)" IF x.detalle2 is not null THEN PRINT COLUMN 27, x.detalle2 CLIPPED END IF END IF AFTER GROUP OF x.cuenta_no IF idx = 0 THEN LET balance = balance1 IF balance > 0 THEN LET total5 = balance LET total6 = 0 ELSE LET total5 = 0 LET total6 = (balance * -1) END IF IF balance <> 0 THEN IF idx2 = 0 AND idx1 = 0 AND idx = 0 THEN LET idx2 = idx2 + 1 PRINT COLUMN 1, negrillas_on,"Auxiliar ",x.cod_aux using "&&","-", x.cod_sec using "&&&&"; IF x.cod_aux = 1 THEN SELECT nom1_emp,apell1_emp INTO nombre1,nombre2 FROM adtb00003 WHERE num_emp = x.cod_sec PRINT " ",nombre1 clipped," ",nombre2,negrillas_off ELSE LET nombre1 = null LET nombre2 = null SELECT nom_sp INTO nombre2 FROM cotb00001 WHERE cod_sp = x.cod_aux and cod_sp_sec = x.cod_sec PRINT " ",nombre2,negrillas_off END IF END IF IF idx1 = 0 AND idx = 0 THEN LET idx1 = idx1 + 1 PRINT COLUMN 1, negrillas_on,"REFERENCIA ",x.num_doc,negrillas_off END IF SKIP 1 LINE PRINT COLUMN 1, negrillas_on,"CUENTA NO. ",x.cuenta_no," ", x.descripcion CLIPPED, negrillas_off SKIP 1 LINE PRINT COLUMN 1,fecha1-1 USING "dd/mm/yy", COLUMN 27,"Resumen Balance al Cierre", COLUMN 68,total5 USING "###,###,###.##", COLUMN 90,total6 USING "###,###,###.##", COLUMN 110,balance USING "(((,(((,(((.##)" END IF END IF #SKIP 1 LINE LET total3 = total3 + total5 LET total4 = total4 + total6 LET balance = 0 LET balance1= 0 AFTER GROUP OF x.num_doc IF total3 <> 0 OR total4 <> 0 THEN PRINT COLUMN 68,"--------------", COLUMN 90,"--------------", COLUMN 110,"--------------" PRINT COLUMN 1, "Total Referencia -->", COLUMN 68,total3 USING "###,###,###.##", COLUMN 90,total4 USING "###,###,###.##", COLUMN 110,total3 - total4 USING "(((,(((,(((.##)" PRINT COLUMN 68,"==============", COLUMN 90,"==============", COLUMN 110,"=============="," ",negrillas_off LET total1 = total1 + total3 LET total2 = total2 + total4 END IF AFTER GROUP OF x.clave IF total1 <> 0 OR total2 <> 0 THEN PRINT COLUMN 68,"--------------", COLUMN 90,"--------------", COLUMN 110,"--------------" PRINT COLUMN 1, "Total Auxiliar -->", COLUMN 68,total1 USING "###,###,###.##", COLUMN 90,total2 USING "###,###,###.##", COLUMN 110,total1 - total2 USING "(((,(((,(((.##)" PRINT COLUMN 68,"==============", COLUMN 90,"==============", COLUMN 110,"=============="," ",negrillas_off END IF ON LAST ROW PRINT negrillas_on PRINT COLUMN 17, " T O T A L P O R C U E N T A " PRINT negrillas_off LET SELEC = "SELECT a.cuenta_no,b.descripcion,SUM(a.debito),SUM(a.credito), ", "SUM(a.debito - a.credito) ", "FROM cgtb00004 a,cgtb00001 b ", "WHERE a.cuenta_no = b.cuenta_no AND ",criterio CLIPPED, " AND a.status_t IS NULL AND a.fecha <= ? AND ", "(a.cod_sec is not null or a.num_doc is not null) ", "GROUP BY 1,2 HAVING SUM(a.debito+a.credito) <> 0 ORDER BY 1,2" PREPARE comando1 FROM selec DECLARE buscando CURSOR FOR comando1 OPEN buscando USING fecha2 LET total1 = 0 LET total2 = 0 LET total3 = 0 WHILE STATUS != NOTFOUND FETCH buscando INTO x.cuenta_no,x.descripcion,x.debito,x.credito,balance IF STATUS = NOTFOUND THEN EXIT WHILE 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 total1 = total1 + x.debito LET total2 = total2 + x.credito LET total3 = total3 + balance PRINT COLUMN 1, x.cuenta_no," ",x.descripcion CLIPPED, COLUMN 110, balance USING "(((,(((,(((.##)" END WHILE PRINT COLUMN 110, "---------------" PRINT COLUMN 80, "Total Gral ----> ", COLUMN 107, total3 USING "((,(((,(((,(((.##)" PRINT COLUMN 110, "===============" DISPLAY BY NAME total1,total2,total3 LET total1 = 0 LET total2 = 0 LET total3 = 0 LET total4 = 0 LET total5 = 0 PRINT COLUMN 1,comp_off END REPORT