Merge de main (ipprrp013/014/046/053) con conflictos resueltos: - mbsERP.4pw: ipprrp014 conserva ambos 4rp y su 4fd. - bin/ipprrp014.4rp: columnas MARGEN/CLASIF. + titulo IPPRRP014. Programas agregados a mbsERP.4pw (53 compilan y enlazan con fgl602): - CONTABILIDAD GENERAL, ACTIVOS FIJOS, REPUESTOS; grupos nuevos TESORERIA, CHEQUES e INFORMATICA (segprmt001 = seguridad2.0/segprmt0001.4gl). - irdir copiado de 3.20 PROYECTOS/irdir a PROYECTO/irdir; helpers de PROYECTOS/otrodir en FUNCIONES_IR (departamento -> irdepartamento.4gl). - Fuentes mas nuevos de 3.20: edprrp118, edprrp080, acprrp010, cgprmt022. - FUNCIONES: GeneraEntradaDiario.4gl a la version 3.20 + costoLiquidacion.4gl. - Ajustes G6: existe duplicado en irprgb000, fakeData de 22 campos y answer2 en irprmt036/020 (ApiMaintainC), selectOutputSimple en irprcs008, schemas de forms a smarmotech, referencia declarada en cgprmt005. - cgprmt005 sigue sin enlazar: requiere funciones de EXTERIOR. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
104 lines
4.2 KiB
Plaintext
104 lines
4.2 KiB
Plaintext
#-----------------------------------------------------------------------------
|
|
# irbuscaprod.4gl
|
|
# busca_prod() tomada de PROYECTOS/otrodir/funciones.4gl (3.20), que es la que
|
|
# enlazaba irprmt020. Va aparte porque funciones_ip.4gl redefine bodegas()
|
|
# y disponibles(), ya presentes en la libreria FUNCIONES.
|
|
#-----------------------------------------------------------------------------
|
|
FUNCTION busca_prod(pinventario)
|
|
|
|
DEFINE
|
|
arr_prod DYNAMIC ARRAY OF RECORD
|
|
cod_n INTEGER,
|
|
cod_grupo INTEGER,
|
|
cod_tipo INTEGER,
|
|
cod_sec INTEGER,
|
|
descrip_esp CHAR(50),
|
|
unidad_med CHAR(4),
|
|
existencia1 DEC(18, 4),
|
|
cantidad_o DEC(18, 4),
|
|
cantidad_c DEC(18, 4),
|
|
existencia DEC(18, 4)
|
|
END RECORD,
|
|
selec_pt, criterio STRING,
|
|
f, pinventario, idx SMALLINT,
|
|
pcodn, pcodgrupo, pcodtipo, pcodsec INT,
|
|
pdescripcion CHAR(100)
|
|
|
|
OPEN WINDOW busca_2
|
|
AT 8, 4
|
|
WITH FORM "vefmwd100"
|
|
ATTRIBUTE(BORDER, FORM LINE FIRST + 1, PROMPT LINE LAST)
|
|
|
|
CONSTRUCT criterio
|
|
ON a.cod_n, a.cod_grupo, a.cod_tipo, a.descrip_esp
|
|
FROM cod_n, cod_grupo, cod_tipo, descrip_esp
|
|
|
|
IF pinventario = '02' THEN
|
|
LET selec_pt =
|
|
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp,a.unidad_med,SUM(b.cantidad_2),'0','0',SUM(b.cantidad_2) ",
|
|
" FROM iptb00002 AS a INNER JOIN iptb00001 AS c ON a.cod_n = c.cod_n AND a.cod_grupo = c.cod_grupo AND ",
|
|
" a.cod_tipo = c.cod_tipo and a.cod_Sec = c.cod_Sec LEFT OUTER JOIN ",
|
|
" iptb00006 AS b ON a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND ",
|
|
" a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec AND b.status_t IS NULL ",
|
|
" WHERE a.status_t IS NULL AND ",
|
|
CRITERIO CLIPPED,
|
|
" GROUP BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp,a.unidad_med ",
|
|
" ORDER BY a.descrip_esp "
|
|
END IF
|
|
|
|
IF pinventario = '01' THEN
|
|
LET selec_pt =
|
|
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp,a.unidad_med,'0','0','0',SUM(b.cantidad_2) ",
|
|
" FROM intb00001 AS a ",
|
|
" LEFT OUTER JOIN ",
|
|
" intb00006 AS b ON a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND ",
|
|
" a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec AND b.status_t IS NULL ",
|
|
" WHERE a.status_t IS NULL AND ",
|
|
CRITERIO CLIPPED,
|
|
" GROUP BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp,a.unidad_med ",
|
|
" ORDER BY a.descrip_esp "
|
|
END IF
|
|
|
|
IF pinventario = '03' THEN
|
|
LET selec_pt =
|
|
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp,a.unidad_med,'0','0','0',SUM(b.cantidad_2) ",
|
|
" FROM irtb00002 AS a ",
|
|
" LEFT OUTER JOIN ",
|
|
" irtb00006 AS b ON a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND ",
|
|
" a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec AND b.status_t IS NULL ",
|
|
" WHERE a.status_t IS NULL AND ",
|
|
CRITERIO CLIPPED,
|
|
" GROUP BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp,a.unidad_med ",
|
|
" ORDER BY a.descrip_esp "
|
|
END IF
|
|
|
|
IF int_flag THEN
|
|
LET Int_flag = FALSE
|
|
CLOSE WINDOW busca_2
|
|
RETURN pcodn, pcodgrupo, pcodtipo, pcodsec, pdescripcion
|
|
END IF
|
|
PREPARE comando_p FROM selec_pt
|
|
DECLARE busca_2 CURSOR FOR comando_p
|
|
|
|
LET idx = 1
|
|
FOREACH busca_2 INTO arr_prod[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
CALL SET_COUNT(idx - 1)
|
|
|
|
DISPLAY ARRAY arr_prod TO s_prod.*
|
|
AFTER ROW
|
|
LET idx = arr_curr()
|
|
LET pcodn = arr_prod[idx].cod_n
|
|
LET pcodgrupo = arr_prod[idx].cod_grupo
|
|
LET pcodtipo = arr_prod[idx].cod_tipo
|
|
LET pcodsec = arr_prod[idx].cod_sec
|
|
LET pdescripcion = arr_prod[idx].descrip_esp
|
|
AFTER DISPLAY
|
|
EXIT DISPLAY
|
|
END DISPLAY
|
|
CLOSE WINDOW busca_2
|
|
RETURN pcodn, pcodgrupo, pcodtipo, pcodsec, pdescripcion
|
|
|
|
END FUNCTION
|