{ ------------------------------------------------------------------------------- PROGRAMA : IRPRCS004 OBJETIVO : Consulta Maestra de Repuestos. PROGRAMADOR : Juan Fco. Soto. FECHA REALIZACION : Marzo 15, 1993. ------------------------------------------------------------------------------- } GLOBALS "irprgb000.4gl" DEFINE dat_pre RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, precio DECIMAL(12,2) END RECORD DEFINE salir,salir1 CHAR(1) DEFINE idx1 INTEGER MAIN DEFER INTERRUPT SELECT * INTO p_companias.* FROM companias CALL irprcs004() END MAIN FUNCTION irprcs004() #WHENEVER ERROR CONTINUE CLEAR SCREEN OPTIONS FORM LINE 7, ERROR LINE 23, COMMENT LINE 22 OPEN FORM irfmcs004 FROM "irfmcs004" DISPLAY FORM irfmcs004 CALL PANTALLA() DISPLAY "irprcs004" AT 4,3 DISPLAY "Consulta Maestra de Repuestos " AT 6,25 DISPLAY " Continua Consultando" AT 2,7 ATTRIBUTE (blue,REVERSE) DISPLAY " Cancela Operacion" AT 2,50 ATTRIBUTE (blue,REVERSE) ## Aqui se prepara el criterio de seleccion LABEL volver: CONSTRUCT BY NAME criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, c.descrip_esp,c.descrip_ing IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF {LET selec1 = "SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,max(a.precio) ", "FROM cotb00015 a WHERE a.status_t IS NULL AND ", criterio CLIPPED, " GROUP BY 1,2,3,4 ORDER BY 1,2,3,4 " PREPARE comando FROM selec1 DECLARE accion1 SCROLL CURSOR FOR comando OPEN accion1 } LET SELEC = "SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp, ", " c.unidad_med,SUM(b.cantidad_2), a.dia_llegada, ", " MAX(d.precio),c.descrip_ing ", "FROM irtb00002 a,irtb00006 b,cotb00015 d ", "WHERE a.cod_n IN (7,8) AND a.cod_n = c.cod_n AND ", " a.cod_grupo = c.cod_grupo AND a.cod_tipo=c.cod_tipo AND ", " a.cod_sec = c.cod_sec AND a.status_t IS NULL AND ", " a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND ", " a.cod_tipo=b.cod_tipo AND a.cod_sec = b.cod_sec AND ", " a.cod_n = d.cod_n AND a.cod_grupo = d.cod_grupo AND ", " a.cod_tipo=d.cod_tipo AND a.cod_sec = d.cod_sec AND ", " b.status_t IS NULL AND ",CRITERIO CLIPPED, " GROUP BY 1,2,3,4,5,6,8,10 ORDER BY 1,2,3,4 " PREPARE busca FROM selec CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF DECLARE accion CURSOR FOR busca OPEN accion ## Busca los registros con la condicion dada y verifica si el repuesto existe ## en el catalogo de bienes y servicios. LET idx = 1 LET general = 0 LET salir = "N" WHILE salir != "S" FETCH accion INTO art[idx].* IF STATUS = NOTFOUND THEN LET salir = "S" EXIT WHILE END IF IF int_flag THEN LET int_flag = FALSE LET numero_msg = 2 CALL msg(numero_msg) RETURN END IF { LET idx1 = 1 LET salir1 = "N" WHILE salir1 != "S" FETCH ABSOLUTE idx1 accion1 INTO dat_pre.* IF STATUS = NOTFOUND THEN LET salir1 = "S" EXIT WHILE END IF LET idx1 = idx1 + 1 IF art[idx].cod_n1 = dat_pre.cod_n AND art[idx].cod_grupo1 = dat_pre.cod_grupo AND art[idx].cod_tipo1 = dat_pre.cod_tipo AND art[idx].cod_sec1 = dat_pre.cod_sec THEN LET art[idx].precio = dat_pre.precio LET salir1 = "S" EXIT WHILE END IF END WHILE} IF art[idx].precio IS NULL THEN LET art[idx].precio = 0 END IF LET art[idx].valor = art[idx].existencia * art[idx].precio LET general = general + art[idx].valor LET idx = idx + 1 END WHILE #END FOREACH DISPLAY "Total General = " AT 24,45 DISPLAY general using "##,###,###.##" AT 24,58 CALL set_count (idx-1) DISPLAY ARRAY art TO consart.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN ELSE CLEAR FORM GOTO volver END IF END FUNCTION