{ PROGRAMA : INPRCS006 OBJETIVO : Programa Consulta Balances Materia Prima. PROGRAMADOR : Juan Fco. Soto (Johnny) FECHA REALIZACION : Agosto 18,1992. } GLOBALS "inprgb000.4gl" DEFINE xbodega SMALLINT MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(3) RETURNING impresor #let usuarios = "jsoto" #let clave = "lmmjvsd2009" CONNECT to "smarmotech" USER usuarios USING clave SELECT * INTO p_companias.* FROM companias CALL inprcs006() END MAIN FUNCTION inprcs006() DEFINE fecha1 char(8) DEFINE hora1 char(5) DEFINE balance_in DECIMAL(12,2), query1,mensaje_ini STRING LET fecha1 = today using "dd/mm/yy" LET hora1 = time LET int_flag = false LET bandera = 0 #WHENEVER ERROR CONTINUE CLEAR SCREEN OPTIONS ERROR LINE 24, FORM LINE 4, COMMENT LINE 22, PROMPT LINE 23 call ui.Interface.loadStyles("formularios") OPEN FORM infmcs006 FROM "infmcs006" DISPLAY FORM infmcs006 DIALOG ATTRIBUTE(UNBUFFERED) INPUT BY NAME datos_cons.* BEFORE INPUT INITIALIZE datos_gen.* TO NULL LET balance = 0 CALL bodegas('1') BEFORE FIELD fech_in LET datos_cons.fech_in = today using "dd/mm/yyyy" DISPLAY BY NAME datos_cons.fech_in BEFORE FIELD fech_fi LET datos_cons.fech_fi = today using "dd/mm/yyyy" DISPLAY BY NAME datos_cons.fech_fi AFTER FIELD cod_sec SELECT descrip_esp,unidad_med INTO datos_cons.descrip_esp,articulos.unidad_med FROM intb00001 WHERE cod_n = datos_cons.cod_n and cod_grupo = datos_cons.cod_grupo and cod_tipo = datos_cons.cod_tipo and cod_sec = datos_cons.cod_sec and status_t is null IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) CLEAR FORM NEXT FIELD cod_n END IF DISPLAY BY NAME datos_cons.descrip_esp,articulos.unidad_med AFTER FIELD fech_fi IF datos_cons.fech_fi IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fech_in END IF IF datos_cons.fech_in IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fech_in END IF IF datos_cons.fech_in > datos_cons.fech_fi THEN LET numero_msg = 86 CALL msg(numero_msg) NEXT FIELD fech_in END IF END INPUT CONSTRUCT criterio ON p.bodega FROM bodega BEFORE CONSTRUCT CALL bodegas('1') ON ACTION buscar ATTRIBUTE(TEXT="Ejecuta Busqueda",IMAGE="find") IF datos_cons.fech_fi IS NULL THEN CALL msg(16) NEXT FIELD fecha_in END IF LET query1 = "SELECT ISNULL(SUM(p.cantidad_2),0) FROM intb00006 p WHERE ", criterio clipped," and p.cod_n = ? and p.cod_grupo = ? and p.cod_tipo = ? and p.cod_sec = ? AND p.fecha < ? and p.status_t is null " PREPARE balanceini FROM query1 EXECUTE balanceini USING datos_cons.cod_n,datos_cons.cod_grupo,datos_cons.cod_tipo,datos_cons.cod_sec, datos_cons.fech_in INTO balance LET balance_in = balance LET mensaje_ini = "Blance Inicial: ",balance_in using "---,---,---.##" DISPLAY BY NAME mensaje_ini LET query1 = "SELECT p.num_doc,convert(char(10),p.fecha,103),sum(p.cantidad_2),p.cod_mov,b.descripcion + '('+cast(p.bodega as char(2))+')' ", " FROM intb00006 p,intb00009 b ", " WHERE ", criterio CLIPPED," AND p.cod_n = ? and p.cod_grupo = ? and ", " p.cod_tipo = ? and p.cod_sec = ? and ", " p.bodega = b.cod_bodega and ", " p.status_t is null and p.fecha between ? and ? ", " GROUP BY p.num_doc,p.fecha,p.cod_mov,b.descripcion,p.bodega ", " ORDER BY p.fecha " PREPARE comando FROM query1 DECLARE jhonn_1 CURSOR FOR comando CALL csmov1.clear() OPEN jhonn_1 USING datos_cons.cod_n,datos_cons.cod_grupo,datos_cons.cod_tipo, datos_cons.cod_sec,datos_cons.fech_in,datos_cons.fech_fi LET idx = 1 FOREACH jhonn_1 INTO csmov.* CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF LET balance = balance + csmov.cantidad_2 LET csmov1[idx].fecha_2 = csmov.fecha_1 LET csmov1[idx].balance = balance USING "---,---,---.##" LET csmov1[idx].num_doc = "(",csmov.cod_mov using "&&",")"," ", csmov.num_doc USING "&&&&&&" LET csmov1[idx].bodega1 = csmov.bodega1 IF csmov.cantidad_2 < 0 THEN LET csmov1[idx].entrada = null LET csmov1[idx].salida = csmov.cantidad_2 USING "---,---,---.##" ELSE LET csmov1[idx].salida = null LET csmov1[idx].entrada = csmov.cantidad_2 USING "###,###,###.##" END IF LET idx = idx + 1 END FOREACH END CONSTRUCT DISPLAY ARRAY csmov1 TO s_csmov.* END DISPLAY ON ACTION CANCEL LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE EXIT PROGRAM END DIALOG END FUNCTION