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).
This commit is contained in:
2026-08-26 13:31:09 -04:00
parent 43d5a218e7
commit efdf8953dd
245 changed files with 416 additions and 230 deletions
+63
View File
@@ -0,0 +1,63 @@
{
PROGRAMA: buscaempleado.4gl
OBJETIVO: FACILITAR LA BUSQUEDA DE LA MAESTRA EMPLEADOS
DESARROLLADO POR: ING. JUAN SOTO
FECHA: NOVIEMBRE 15, 2023
}
FUNCTION buscaEmp()
DEFINE empleados DYNAMIC ARRAY OF RECORD
num_emp INT,
nom1_emp,apell1_emp VARCHAR(60)
END RECORD,
criterio,selec STRING,
i,pnumemp INT,
nombre,apellido VARCHAR(120)
OPEN WINDOW relacion WITH FORM "empleados"
CONSTRUCT criterio ON b.nom1_emp,b.apell1_emp FROM nombre,apellido
IF int_flag THEN
CALL msg(2)
LET int_flag = FALSE
CLOSE WINDOW relacion
RETURN
END IF
LET selec = "SELECT UNIQUE b.num_emp,b.nom1_emp,b.apell1_emp ",
"FROM adtb00003 b,vetb00028 a ",
"WHERE b.num_emp = a.sec_vend AND a.status_t IS NULL AND ",
criterio CLIPPED," ORDER BY 1 "
PREPARE comando1 FROM selec
DECLARE vendedor CURSOR FOR comando1
LET i = 1
FOREACH vendedor INTO empleados[i].*
LET i = i + 1
END FOREACH
DISPLAY ARRAY empleados TO s_empleados.*
AFTER DISPLAY
IF int_flag THEN
CALL msg(2)
LET int_flag = FALSE
EXIT DISPLAY
END IF
LET pnumemp = empleados[arr_curr()].num_emp
LET nombre= empleados[arr_curr()].nom1_emp CLIPPED
LET apellido = empleados[arr_curr()].apell1_emp CLIPPED
EXIT DISPLAY
END DISPLAY
CLOSE WINDOW relacion
RETURN pnumemp,nombre,apellido
END FUNCTION
+18
View File
@@ -0,0 +1,18 @@
FUNCTION clasf_bloque()
DEFINE kclasf_bloque VARCHAR(14),
kdescripcion CHAR(75),
clasf_bloque ui.ComboBox,
xdepartamento int
LET clasf_bloque = ui.combobox.forname("formonly.clasf_bloque")
DECLARE busca_clasf_bloque CURSOR FOR
SELECT a.cod_clasf_bloque, LTRIM(RTRIM(a.descrip_clasf_bloque))
FROM intb00058 a ORDER BY a.cod_clasf_bloque, a.descrip_clasf_bloque
CALL clasf_bloque.clear()
FOREACH busca_clasf_bloque INTO kclasf_bloque,kdescripcion
CALL clasf_bloque.additem(kclasf_bloque,kdescripcion)
END FOREACH
END FUNCTION
+34
View File
@@ -0,0 +1,34 @@
FUNCTION codmov()
DEFINE ketiquetas SMALLINT, detiquetas STRING,
cbmovimiento ui.ComboBox
LET cbmovimiento = ui.combobox.forname("formonly.cod_mov")
DECLARE bmovimiento CURSOR FOR
SELECT a.cod_mov,RTRIM(a.descrip_mov)||'('||cast(a.cod_mov AS varchar(6))||')' FROM iptb00005 a
ORDER BY a.descrip_mov
CALL cbmovimiento.clear()
FOREACH bmovimiento INTO ketiquetas,detiquetas
CALL cbmovimiento.additem(ketiquetas,detiquetas)
END FOREACH
END FUNCTION
FUNCTION cmovimientos_t()
DEFINE ketiquetas SMALLINT, detiquetas STRING,
cbmovimiento ui.ComboBox
LET cbmovimiento = ui.combobox.forname("formonly.codigo_mov_transferencia")
DECLARE bmovimiento_t CURSOR FOR
SELECT a.cod_mov,RTRIM(a.descrip_mov)||'('||cast(a.cod_mov AS varchar(6))||')' FROM iptb00005 a
ORDER BY a.descrip_mov
CALL cbmovimiento.clear()
FOREACH bmovimiento_t INTO ketiquetas,detiquetas
CALL cbmovimiento.additem(ketiquetas,detiquetas)
END FOREACH
END FUNCTION
+140
View File
@@ -0,0 +1,140 @@
{
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
+56
View File
@@ -0,0 +1,56 @@
{
FUNCION: transportista.4gl
OBJETIVO: CONSULTAR LA TABLA DE TRANSPORTISTAS
DESARROLLADO POR: ING. JUAN SOTO
FECHA : NOVIEMBRE 15, 2023
}
DEFINE criterio,selec STRING
FUNCTION consultaTransportista()
DEFINE datos_transp DYNAMIC ARRAY OF RECORD
cod_transp,sec_transp INT,
nombre VARCHAR(30)
END RECORD,
I,pcodtransp,psectransp INT,
nombreT VARCHAR(30)
call ui.Interface.loadStyles("formularios")
OPEN WINDOW w1 WITH FORM "transportista"
CONSTRUCT criterio ON a.nombre FROM nombre
BEFORE CONSTRUCT
DISPLAY "BUSQUEDA TRANSPORTISTAS" TO encabezado
AFTER CONSTRUCT
IF int_flag THEN
LET int_flag = FALSE
CLOSE WINDOW w1
RETURN pcodtransp,psectransp,nombreT
END IF
EXIT CONSTRUCT
END CONSTRUCT
LET selec = "SELECT a.cod_transp,a.sec_transp,a.nombre FROM vetb00015 a WHERE ",criterio CLIPPED, " and a.status_t is null
ORDER BY a.nombre "
PREPARE comando FROM selec
DECLARE buscar CURSOR FOR comando
LET i = 1
FOREACH buscar INTO datos_transp[i].*
LET i = i + 1
END FOREACH
DISPLAY ARRAY datos_transp TO stransP.*
AFTER DISPLAY
IF int_flag THEN
LET pcodtransp=NULL
LET psectransp=NULL
EXIT DISPLAY
END IF
LET pcodtransp = datos_transp[arr_curr()].cod_transp
LET psectransp = datos_transp[arr_curr()].sec_transp
LET nombreT = datos_transp[arr_curr()].nombre
EXIT DISPLAY
END DISPLAY
CLOSE WINDOW w1
RETURN pcodtransp,psectransp,nombreT
END FUNCTION