{ =============================================================================== PROGRAMA : BUSCA_SERIE OBJETIVO : ACTUALIZA LA TABLA VETB00042 (SERIE DE LOS PRODUCTOS ) PROGRAMADOR: JUAN F. SOTO FECHA : AGOSTO 23, 1997 =============================================================================== } DATABASE exterior FUNCTION busca_s(numero_doc,cod_mov,cod_n,cod_grupo,cod_tipo,cod_sec, cantidad) DEFINE serie ARRAY[100] OF CHAR(30) DEFINE p_seriea ARRAY[100] OF RECORD factura LIKE vetb00042.factura, cod_mov SMALLINT, cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, serie LIKE vetb00042.serie END RECORD , numero_msg,numero_doc INTEGER, idx,cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, cantidad INTEGER, cod_mov SMALLINT, cuenta SMALLINT, volver CHAR(1) OPEN WINDOW w_serie AT 7,12 WITH FORM "busca_s" ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST) FOR idx = 1 TO 5 LET p_seriea[idx].factura = NULL LET p_seriea[idx].cod_mov = NULL LET p_seriea[idx].cod_n = NULL LET p_seriea[idx].cod_grupo = NULL LET p_seriea[idx].cod_tipo = NULL LET p_seriea[idx].cod_sec = NULL LET p_seriea[idx].serie = NULL END FOR DECLARE busca CURSOR FOR SELECT a.* FROM vetb00042 a WHERE a.factura = numero_doc AND a.cod_mov = cod_mov LET idx = 1 FOREACH busca INTO p_seriea[idx].* LET serie[idx] = p_seriea[idx].serie LET idx = idx + 1 END FOREACH CALL set_count(idx-1) LABEL vuelve: INPUT ARRAY serie WITHOUT DEFAULTS FROM p_serie.* IF int_flag THEN LET numero_msg = 376 CALL msg(numero_msg) GOTO sale END IF FOR idx = 1 TO arr_count() LET p_seriea[idx].factura = numero_doc LET p_seriea[idx].cod_mov = cod_mov LET p_seriea[idx].cod_n = cod_n LET p_seriea[idx].cod_grupo = cod_grupo LET p_seriea[idx].cod_tipo = cod_tipo LET p_seriea[idx].cod_sec = cod_sec LET p_seriea[idx].cod_sec = cod_sec LET p_seriea[idx].serie = serie[idx] END FOR LET cuenta = 0 FOR idx = 1 TO arr_count() IF p_seriea[idx].serie IS NOT NULL THEN LET cuenta = cuenta + 1 END IF END FOR IF cuenta != cantidad THEN LET numero_msg =376 CALL msg(numero_msg) GOTO vuelve END IF DELETE FROM vetb00042 WHERE factura = numero_doc AND @cod_mov = cod_mov WHENEVER ERROR CONTINUE LET volver = "N" FOR idx = 1 TO arr_count() IF p_seriea[idx].serie IS NOT NULL THEN INSERT INTO vetb00042 VALUES (p_seriea[idx].*,null,user,current,null,null) IF STATUS < 0 THEN LET numero_msg = 378 CALL msg(numero_msg) LET volver ="S" EXIT FOR END IF END IF END FOR IF volver = "S" THEN LET STATUS = 0 DELETE FROM vetb00042 WHERE factura = numero_doc GOTO vuelve END IF LABEL sale: CLOSE WINDOW w_serie CLOSE FORM busca_s END FUNCTION