{ ============================================================================ PROGRAMA : INPRRP022 SISTEMA : Sistema de inventario de materiales ( LEY 69) OBJETIVO : Para calcular cantidad consumida en la formula por la cantidad de pila solicitada a exonerar. AUTOR : Tadeo A. Ferreras Fecha : Agosto 04, 1993 ============================================================================= } GLOBALS "inprgb000.4gl" #### Registro para busqueda de informacion a imprimir DEFINE movfi RECORD num_sol INTEGER, fecha DATE, cod_n_p SMALLINT, cod_grupo_p SMALLINT, cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, descrip_esp CHAR(30), unidad CHAR(4), cantidad1 DECIMAL(13,3), cantidad DECIMAL(13,3), 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) DEFINE solicitud INTEGER ####### Funcion que hace la busqueda de informacion a imprimir FUNCTION inprrp022() LET int_flag = false OPTIONS FORM LINE 8 OPEN FORM infmrp022 FROM "infmrp022" DISPLAY FORM infmrp022 CALL pantalla() DISPLAY "inprrp022" AT 4,3 #DISPLAY "(Ley-69)" AT 5,58 DISPLAY "Solicitud de Exoneracion de Material" AT 6,22 LET tipo_papel = 1 CALL msgrp000(tipo_papel) ##### Aceptando los valores para busqueda en un rango de fecha INPUT BY NAME solicitud AFTER FIELD solicitud IF solicitud IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD solicitud 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 DECLARE busca1 CURSOR FOR SELECT a.num_sol,a.fecha,a.cod_n_p,a.cod_grupo_p,b.cod_n,b.cod_grupo, b.cod_tipo,b.cod_sec,c.descrip_esp,c.unidad_med, a.cantidad,b.cantidad,a.num_sol FROM intb00017 a,intb00016 b,intb00022 c WHERE a.cod_n_p = b.cod_n_p AND a.cod_grupo_p = b.cod_grupo_p AND a.status_t IS NULL AND b.cod_n = c.cod_n AND b.cod_grupo = c.cod_grupo AND b.cod_tipo = c.cod_tipo AND b.cod_sec = c.cod_sec AND a.num_sol = solicitud ORDER BY 3,4,5,6,7,8 DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14 ATTRIBUTE(REVERSE,BOLD) START REPORT solicitado TO "C:\\archivo" DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE(REVERSE) ###### Loop que envia la informacion a la funcion de reporte FOREACH busca1 INTO movfi.* IF STATUS = NOTFOUND THEN EXIT FOREACH 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 solicitado EXIT FOREACH 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 solicitado(movfi.*) END FOREACH FINISH REPORT solicitado RUN "type C:\\archivo > %USPRINT%" END FUNCTION #### Funcion que genera el reporte REPORT solicitado(x) ##### Variables con las informaciones a imprimir DEFINE x RECORD num_sol INTEGER, fecha DATE, cod_n_p SMALLINT, cod_grupo_p SMALLINT, cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, descrip_esp CHAR(30), unidad CHAR(4), cantidad1 DECIMAL(13,3), cantidad DECIMAL(13,3), codigo CHAR(3), codigo1 CHAR(11) END RECORD, cantidad_b DECIMAL(12,2), balance,balance1 DECIMAL(13,3), letrero CHAR(15) DEFINE fianza2 RECORD fecha_e DATE, factura INTEGER, cantidad_e DECIMAL(13,3) 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.num_sol,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 027, ASCII 69 LET negrillas_off = ASCII 027, 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 = (82 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1, "inprrp022", COLUMN lj, p_companias.nombre CLIPPED, COLUMN 75, "Pag. ",pageno USING "###" PRINT COLUMN 21, " Sistema de Inventario de Materiales (Ley-69) ", COLUMN 75, today using "dd/mm/yyyy" PRINT COLUMN 27, "Solicitud de Exoneracion de Material", COLUMN 78, hora SKIP 1 LINE BEFORE GROUP OF x.codigo SKIP TO TOP OF PAGE 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 1,"Solicitud No. ",x.num_sol PRINT COLUMN 1,"Producto: ", x.codigo," ",descrip1 CLIPPED PRINT COLUMN 1,"Fecha : ", x.fecha USING "dd/mm/yyyy" PRINT COLUMN 1,"Cantidad: ", x.cantidad1 USING "###,###,###" PRINT COLUMN 1,"Consumo por cada 1000 Pilas" SKIP 1 LINE PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------" , negrillas_on PRINT COLUMN 47,"Valor Por", COLUMN 64,"Cantidad" PRINT COLUMN 1,"Material", COLUMN 47,"Unidad Comercial", COLUMN 64,"Unidad Comercial" ,negrillas_off PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------" SKIP 1 LINE ON EVERY ROW PRINT COLUMN 1, x.codigo1," ",x.descrip_esp CLIPPED, COLUMN 45, x.cantidad USING "###,###,###.###"," ", x.unidad CLIPPED, COLUMN 64, x.cantidad * (x.cantidad1/1000) USING "###,###,###.###" ," ",x.unidad CLIPPED #AFTER GROUP OF x.codigo # SKIP TO TOP OF PAGE ON LAST ROW PRINT COLUMN 1,comp_off,negrillas_off END REPORT