{ --------------------------------------------------------------------- PROGRAMA : IRPRCS006 OBJETIVO : Programa Consulta Balances Repuestos. PROGRAMADOR : Juan Fco. Soto (Johnny) FECHA REALIZACION : Marzo 2, 1993. --------------------------------------------------------------------- } GLOBALS "irprgb000.4gl" MAIN DEFER INTERRUPT CALL arg_val(1) RETURNING usuarios CALL arg_val(2) RETURNING clave CALL arg_val(3) RETURNING impresor CONNECT TO "smarmotech" USER usuarios USING clave SELECT * INTO p_companias.* FROM companias CALL irprcs006() END MAIN FUNCTION irprcs006() DEFINE idx1 INTEGER DEFINE segunda CHAR(1) DEFINE fecha1 char(8) DEFINE hora1 char(5) DEFINE balance_in DECIMAL(12,2) DEFINE primera CHAR(1) DEFINE nombre CHAR(8) 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 OPEN FORM irfmcs006 FROM "irfmcs006" DISPLAY FORM irfmcs006 INITIALIZE datos_cons.* TO NULL #WHENEVER ERROR CONTINUE LABEL volver: INPUT BY NAME datos_cons.* WITHOUT DEFAULTS BEFORE INPUT CALL csmov1.clear() BEFORE FIELD fech_fi LET datos_cons.fech_fi = today using "dd/mm/yy" DISPLAY BY NAME datos_cons.fech_fi AFTER FIELD cod_n IF datos_cons.cod_n !=7 THEN LET numero_msg = 114 CALL msg(numero_msg) NEXT FIELD cod_n END IF AFTER FIELD cod_sec SELECT a.descrip_esp INTO datos_cons.descrip_esp FROM irtb00002 a WHERE a.cod_n= datos_cons.cod_n and a.cod_grupo = datos_cons.cod_grupo and a.cod_tipo= datos_cons.cod_tipo and a.cod_sec=datos_cons.cod_sec and a.status_t is null IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) CLEAR FORM NEXT FIELD cod_n END IF CALL integridad() if bandera = 1 THEN LET bandera = 0 RETURN end if DISPLAY BY NAME datos_cons.descrip_esp DISPLAY BY NAME datos_cons.* 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 = 36 CALL msg(numero_msg) NEXT FIELD fech_in END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false CLEAR SCREEN RETURN END IF SELECT sum(a.cantidad_2) INTO balance_in FROM irtb00006 a WHERE a.cod_n = datos_cons.cod_n and a.cod_grupo = datos_cons.cod_grupo and a.cod_tipo = datos_cons.cod_tipo and a.cod_sec = datos_cons.cod_sec and a.status_t is null and fecha < datos_cons.fech_in IF balance_in is null THEN LET balance_in = 0 END IF DECLARE jhonn_1 CURSOR FOR SELECT p.num_doc,p.fecha,p.cantidad_1,p.cantidad_2,p.cod_mov, b.descrip_mov FROM irtb00006 p,OUTER irtb00005 b WHERE p.fecha between datos_cons.fech_in and datos_cons.fech_fi and p.cod_mov = b.cod_mov and p.cod_n = datos_cons.cod_n and p.cod_grupo=datos_cons.cod_grupo and p.cod_tipo=datos_cons.cod_tipo and p.cod_sec=datos_cons.cod_sec and p.status_t is null ORDER BY 2,1 OPEN jhonn_1 LET idx = 1 LET balance = balance_in FOREACH jhonn_1 INTO csmov.* IF idx = 1 THEN LET csmov1[idx].descrip_mov = "BALANCE INICIAL" LET csmov1[idx].fecha_2 = datos_cons.fech_in LET csmov1[idx].balance = balance USING "---,---.##" LET idx = idx + 1 END IF IF csmov.cantidad_2 IS NULL THEN LET csmov.cantidad_2 = 0 END IF LET balance = balance + csmov.cantidad_2 LET csmov1[idx].descrip_mov = "(",csmov.cod_mov using "&&",")", csmov.descrip_mov clipped LET csmov1[idx].fecha_2 = csmov.fecha_1 LET csmov1[idx].balance = balance USING "---,---.##" LET csmov1[idx].num_doc = csmov.num_doc USING "&&&&&" 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 CALL set_count(idx - 1) DISPLAY ARRAY csmov1 TO s_csmov.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) CLEAR SCREEN EXIT INPUT END IF CLEAR FORM CONTINUE INPUT END INPUT IF INT_FLAG THEN LET int_flag = FALSE RETURN END IF END FUNCTION