141 lines
5.3 KiB
Plaintext
141 lines
5.3 KiB
Plaintext
{
|
|
FUNCTION: medidas.4gl
|
|
DESARROLLADO POR: ING. JUAN SOTO
|
|
FECHA : 16, NOVIEMBRE 2023
|
|
|
|
}
|
|
|
|
|
|
FUNCTION medidas(pcod_n,pcod_grupo,pcod_tipo,pcod_sec,descripcion,medida,titulo_bodega,tmpnumero,pcod_mov,status_m)
|
|
DEFINE pcod_n,pcod_grupo,pcod_tipo,pcod_sec,tmpnumero,pcod_mov,idx,sidx INT,
|
|
descripcion,medida,titulo_bodega,status_m STRING,
|
|
total_medida DEC(12,5)
|
|
|
|
DEFINE arrmedida DYNAMIC ARRAY OF RECORD
|
|
codigo_bloque CHAR(25),
|
|
ancho1 DEC(12,5),
|
|
largo1 DEC(12,5),
|
|
espesor1 DEC(12,5),
|
|
medida1 DEC(12,5),
|
|
ancho2 DEC(12,5),
|
|
largo2 DEC(12,5),
|
|
espesor2 DEC(12,5),
|
|
medida2 DEC(12,5),
|
|
cantidad DEC(12,5),
|
|
cod_cat INT,
|
|
cod_n,cod_grupo,cod_tipo,cod_sec int
|
|
END RECORD
|
|
OPEN WINDOW prfmwd012 AT 5,3 WITH FORM "infmwd012" ATTRIBUTE (BORDER)
|
|
|
|
DISPLAY BY NAME descripcion,medida,pcod_n,pcod_grupo,pcod_tipo,pcod_sec,titulo_bodega
|
|
|
|
SELECT UNIQUE a.documento FROM intb00018 a WHERE
|
|
a.documento = tmpnumero AND
|
|
a.cod_mov = pcod_mov AND
|
|
a.cod_n = Pcod_n and
|
|
a.cod_grupo = Pcod_grupo and
|
|
a.cod_tipo = Pcod_tipo and
|
|
a.cod_sec = Pcod_sec
|
|
|
|
IF STATUS != NOTFOUND THEN
|
|
|
|
DECLARE busca_m CURSOR FOR
|
|
SELECT a.codigo_bloque,a.ancho1,a.largo1,a.espesor1,a.medida1,
|
|
a.ancho2,a.largo2,a.espesor2,a.medida2,a.cantidad
|
|
FROM intb00018 a
|
|
WHERE a.documento = tmpnumero AND
|
|
a.cod_mov = pcod_mov AND
|
|
a.cod_n = Pcod_n and
|
|
a.cod_grupo = Pcod_grupo and
|
|
a.cod_tipo = Pcod_tipo and
|
|
a.cod_sec = Pcod_sec
|
|
LET idx = 1
|
|
FOREACH busca_m INTO arrmedida[idx].*
|
|
IF arrmedida[idx].cantidad < 0 THEN
|
|
LET arrmedida[idx].cantidad = arrmedida[idx].cantidad * -1
|
|
END IF
|
|
LET arrmedida[idx].cod_n = pcod_n
|
|
LET arrmedida[idx].cod_grupo = pcod_grupo
|
|
LET arrmedida[idx].cod_tipo = pcod_tipo
|
|
LET arrmedida[idx].cod_sec = pcod_sec
|
|
|
|
LET idx = idx +1
|
|
END FOREACH
|
|
|
|
ELSE
|
|
|
|
SELECT MAX(numero) INTO tmpnumero FROM cttb00016
|
|
IF tmpnumero IS NULL THEN
|
|
LET tmpnumero = 9999999
|
|
END IF
|
|
LET tmpnumero = tmpnumero + 1
|
|
INSERT INTO cttb00016 values (SUSER_NAME(),tmpnumero,GETDATE())
|
|
CALL arrmedida.clear()
|
|
|
|
END IF
|
|
|
|
|
|
INPUT ARRAY arrmedida WITHOUT DEFAULTS FROM sdespiece.*
|
|
BEFORE ROW
|
|
LET idx = arr_curr()
|
|
LET sidx = scr_line()
|
|
AFTER FIELD codigo_bloque
|
|
IF status_m = 2 THEN
|
|
IF arrmedida[idx].codigo_bloque IS NOT NULL THEN
|
|
SELECT DISTINCT a.codigo_bloque FROM intb00018 a
|
|
WHERE a.codigo_bloque = arrmedida[idx].codigo_bloque
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(3)
|
|
NEXT FIELD codigo_bloque
|
|
END IF
|
|
END IF
|
|
END IF
|
|
AFTER FIELD cantidad
|
|
IF arrmedida[idx].espesor1 = 0 THEN
|
|
LET arrmedida[idx].medida1 = arrmedida[idx].ancho1 * arrmedida[idx].largo1
|
|
END IF
|
|
|
|
IF arrmedida[idx].espesor1 <> 0 THEN
|
|
LET arrmedida[idx].medida1 = arrmedida[idx].ancho1 * arrmedida[idx].largo1 *
|
|
arrmedida[idx].espesor1
|
|
END IF
|
|
IF arrmedida[idx].espesor2 = 0 THEN
|
|
LET arrmedida[idx].medida2 = arrmedida[idx].ancho2 * arrmedida[idx].largo2
|
|
END IF
|
|
IF arrmedida[idx].espesor2 <> 0 THEN
|
|
LET arrmedida[idx].medida2 = arrmedida[idx].ancho2 * arrmedida[idx].largo2 *
|
|
arrmedida[idx].espesor2
|
|
END IF
|
|
|
|
DISPLAY arrmedida[idx].medida1 TO sdespiece[sidx].medida1
|
|
DISPLAY arrmedida[idx].medida2 TO sdespiece[sidx].medida2
|
|
|
|
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
|
|
CALL msg(2)
|
|
LET int_flag = false
|
|
EXIT INPUT
|
|
END IF
|
|
LET total_medida = 0
|
|
IF arrmedida.getLength() > 0 THEN
|
|
|
|
FOR sidx = 1 TO arrmedida.getLength()
|
|
IF arrmedida[sidx].medida1 IS NOT NULL THEN
|
|
LET arrmedida[sidx].cod_n = pcod_n
|
|
LET arrmedida[sidx].cod_grupo = pcod_grupo
|
|
LET arrmedida[sidx].cod_tipo = pcod_tipo
|
|
LET arrmedida[sidx].cod_sec = pcod_sec
|
|
|
|
LET total_medida = arrmedida[sidx].medida1 + total_medida
|
|
END IF
|
|
END FOR
|
|
END IF
|
|
END INPUT
|
|
|
|
CLOSE WINDOW prfmwd012
|
|
RETURN arrmedida,total_medida
|
|
END FUNCTION
|