Files
MBS/PROYECTO/otrodir/medidas.4gl
T
jpeguero efdf8953dd Reorganiza MATERIA PRIMA a PROYECTO y avanza inprmt002/005/013/046
- Mueve todo el contenido de PROYECTOS/indir y varias funciones
  compartidas de PROYECTOS/otrodir hacia PROYECTO, siguiendo
  instruccion de Johnny (PROYECTOS se va a eliminar).
- inprmt002: agrega campo Desglose faltante, corrige typo "eLiminar".
- inprmt005: agrega formulario y 3 campos faltantes (Consumo,
  Requiere Autorizacion, Requisiciones), corrige typo "eLiminar".
- inprmt013: agrega formulario, titulo, corrige typo "eLiminar".
- inprmt046: agrega formulario y varias funciones/dependencias
  faltantes (cincodmov, clasf_bloque, medidas, defecto,
  buscaEmp, consultaTransportista, busca_departamento);
  corrige nombres de campo desalineados con el codigo
  (depto_a, bodega) y los convierte a ComboBox donde el
  codigo lo requiere.
- Corrige dependencia faltante de FORMULARIOS_IN a la libreria
  Database (bloqueaba todo el modulo de MATERIA PRIMA).
2026-08-26 13:31:09 -04:00

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