Files
MBS/PROYECTO/irdir/irbuscaprod.4gl
T
jsotoandClaude Opus 5.5 d8764b3bda JSOTO Alta y compilacion G6 de programas CG, Cheques, Activos, Tesoreria, Repuestos e Informatica
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>
2026-10-15 16:22:14 -04:00

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