Files
MBS/PROYECTOS/otrodir/busca_s.4gl
T

111 lines
3.4 KiB
Plaintext

{
===============================================================================
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