{ ============================================================================ PROGRAMA : INPRRP021 SISTEMA : Sistema de inventario de materiales ( LEY 69) OBJETIVO : Para validar las verificaciones de la exportaciones en un rango de fecha dado. AUTOR : Tadeo A. Ferreras Fecha : Agosto 04, 1993 ============================================================================= } GLOBALS "inprgb000.4gl" #### Registro para busqueda de informacion a imprimir DEFINE movfi RECORD fecha_ver DATE, factura INTEGER, cod_n_p SMALLINT, cod_grupo_p SMALLINT, cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, cantidad DECIMAL(12,2), codigo CHAR(3), codigo1 CHAR(11) END RECORD DEFINE fecha1,fecha2 DATE ### Variables que almacenara los valores del rango DEFINE idx_1 INTEGER DEFINE salir,salir1 CHAR(1) DEFINE selec4,selec5 CHAR(1000) ####### Funcion que hace la busqueda de informacion a imprimir FUNCTION inprrp021() LET int_flag = false OPTIONS FORM LINE 8 OPEN FORM infmrp021 FROM "infmrp018" DISPLAY FORM infmrp021 CALL pantalla() DISPLAY "inprrp021" AT 4,3 DISPLAY "Validacion de la Verificacion de la Factura" AT 6,18 LET tipo_papel = 1 CALL msgrp000(tipo_papel) ##### Aceptando los valores para busqueda en un rango de fecha 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 BEFORE FIELD fecha2 LET fecha2 = today DISPLAY BY NAME fecha2 AFTER FIELD fecha2 IF fecha2 IS NULL THEN LET fecha2 = today END IF DISPLAY BY NAME fecha2 IF fecha1 > fecha2 THEN LET numero_msg = 51 CALL msg(numero_msg) NEXT FIELD fecha2 END IF END INPUT ######## En caso de que presione DELETE cancela la operacion IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF ############ Selecionando la informacion a imprimir LET selec4 = "SELECT a.fecha,a.factura,b.cod_n,b.cod_grupo,c.cod_n,c.cod_grupo, ", "c.cod_tipo,c.cod_sec,sum(b.cantidad * c.cantidad) ", "FROM intb00021 a,vetb00003 b,intb00016 c ", "WHERE a.factura = b.factura AND b.cod_n = c.cod_n_p AND b.cod_grupo = ", "c.cod_grupo_p AND a.fecha BETWEEN ? AND ? AND a.status_t IS NULL ", "GROUP BY 1,2,3,4,5,6,7,8" DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14 ATTRIBUTE(REVERSE,BOLD) PREPARE comando FROM selec4 DECLARE busca1 CURSOR FOR comando OPEN busca1 USING fecha1,fecha2 START REPORT verificacion TO "C:\\archivo" DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE(REVERSE) ###### Loop que envia la informacion a la funcion de reporte WHILE STATUS != NOTFOUND FETCH busca1 INTO movfi.* IF STATUS = NOTFOUND THEN EXIT WHILE END IF #### En caso que presione DELETE o SUPR cancela la impresion IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE FINISH REPORT verificacion EXIT WHILE END IF #### Igualando a una variable el codigo del tipo de pila #### para ordenarlo por el mismo LET movfi.codigo = movfi.cod_n_p USING "&","-", movfi.cod_grupo_p USING "&" LET movfi.codigo1 = movfi.cod_n USING "&"," ", movfi.cod_grupo USING "&"," ", movfi.cod_tipo USING "&&&","-", movfi.cod_sec USING "&&&" OUTPUT TO REPORT verificacion(movfi.*,fecha1,fecha2) END WHILE FINISH REPORT verificacion RUN "type C:\\archivo > %USPRINT%" END FUNCTION #### Funcion que genera el reporte REPORT verificacion(x,fecha3,fecha4) ##### Variables con las informaciones a imprimir DEFINE x RECORD fecha_ver DATE, factura INTEGER, cod_n_p SMALLINT, cod_grupo_p SMALLINT, cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, cantidad DECIMAL(12,2), codigo CHAR(3), codigo1 CHAR(11) END RECORD, cantidad_b DECIMAL(12,2), balance,balance1 DECIMAL(12,2), letrero CHAR(15) DEFINE fianza2 RECORD fecha_e DATE, factura INTEGER, cantidad_e DECIMAL(12,2) END RECORD DEFINE codd CHAR(10) DEFINE fecha3,fecha4,fecha_f DATE DEFINE idx,idx1,no_fianza INTEGER DEFINE fact CHAR(1) DEFINE descrip2 CHAR(30) DEFINE descrip1,unidad CHAR(15) DEFINE doble_on CHAR(2) DEFINE doble_off CHAR(2) DEFINE negrillas_on CHAR(6) DEFINE negrillas_off CHAR(6) DEFINE comp_on CHAR(3) DEFINE comp_off CHAR(2) DEFINE doce CHAR(2) DEFINE normal CHAR(2) DEFINE normall CHAR(3) DEFINE comp CHAR(3) DEFINE hora CHAR(5) DEFINE tipo CHAR(2) DEFINE imp_cli CHAR(1) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 ##### Sorteando la salida de la informacion. ORDER BY x.fecha_ver,x.factura,x.codigo,x.codigo1 ###### Diseno de la salida de la informacion 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 031 LET comp_off = ASCII 18 LET comp = ASCII 031 LET doce = ASCII 27, ASCII 77 LET normal = ASCII 27, ASCII 80 LET normall = ASCII 030 LET hora = time LET lj = (120 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1, comp_on,negrillas_on PRINT COLUMN 1, "inprrp021", COLUMN lj, p_companias.nombre CLIPPED, COLUMN 113, "Pag. ",pageno USING "###" PRINT COLUMN 37, " Sistema de Inventario de Materiales (Ley-69) ", COLUMN 113, today using "dd/mm/yyyy" PRINT COLUMN 37, " Validacion de la Verificacion de la Factura", COLUMN 116, hora PRINT COLUMN 46, "Del ",fecha3 USING "dd/mm/yyyy", " Al ",fecha4 using "dd/mm/yyyy" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "--------------------" PRINT COLUMN 10,"Fecha", COLUMN 20,"Fecha", COLUMN 112,"Cantidad" PRINT COLUMN 1,"Factura", COLUMN 10,"Factura", COLUMN 20,"Verificacion", COLUMN 34,"Pila", COLUMN 58,"Material", COLUMN 112,"Consumida" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "--------------------" PRINT COLUMN 1, negrillas_off BEFORE GROUP OF x.factura SKIP 2 LINE SELECT a.fecha_factura INTO fecha_f FROM vetb00002 a WHERE a.factura = x.factura PRINT COLUMN 1, x.factura USING "######", COLUMN 10, fecha_f USING "dd/mm/yyyy", COLUMN 20, x.fecha_ver USING "dd/mm/yyyy"; BEFORE GROUP OF x.codigo IF x.cod_grupo_p = 1 THEN LET descrip1 = "Pila Tipo 2LP" ELSE IF x.cod_grupo_p = 2 THEN LET descrip1 = "Pila Tipo 1LP" ELSE LET descrip1 = "Pila Tipo AA" END IF END IF PRINT COLUMN 34, x.codigo," ",descrip1 CLIPPED; #BEFORE GROUP OF x.codigo1 ON EVERY ROW SELECT a.descrip_esp,a.unidad_med INTO descrip2,unidad FROM intb00022 a WHERE a.cod_n = x.cod_n AND a.cod_grupo = x.cod_grupo AND a.cod_tipo = x.cod_tipo AND a.cod_sec = x.cod_sec PRINT COLUMN 58, x.codigo1," ",descrip2 CLIPPED, COLUMN 102, unidad CLIPPED, COLUMN 106, x.cantidad/1000 USING "###,###,##&.&&&" ON LAST ROW PRINT COLUMN 1,comp_off,negrillas_off END REPORT