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:
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user