Registrar y corregir ipprcs002 (Consulta Maestra de Productos)

- Registrar formulario ipfmcs002.per (faltaba)
- Extraer la funcion pantalla() de ipmn00000.4gl (programa de menu con su
  propio MAIN) a un archivo compartido nuevo (otrodir/pantalla_ip.4gl)
  para poder reutilizarla sin conflicto de MAIN duplicado
- Bug corregido: el programa nunca tenia CONNECT TO, dependia de heredar
  una conexion de otro programa que nunca lo invoca en este contexto de
  prueba - se agrego ARG_VAL + CONNECT TO "smarmotech" como en el resto
  de los programas
- Bug corregido: el arreglo global "prod" (usado solo por este programa)
  era de tamaño fijo ARRAY[200], causaba error -1326 con mas de 200
  resultados - convertido a DYNAMIC ARRAY, y se agrego prod.clear() antes
  de repoblarlo
- Agregado titulo a la ventana (usaba "screen size" clasico sin TITLE)

Pendiente de decision de Johnny: la pantalla no exige ningun filtro de
busqueda y hace una consulta SQL adicional por cada producto encontrado
(calculo de existencia) - sin filtro intenta traer todo el catalogo y
tarda mas de una hora antes de fallar. Se probo exitosamente usando
siempre un codigo de producto completo (clase-grupo-tipo-secuencia).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-14 15:03:03 -04:00
co-authored by Claude Sonnet 5
parent bb9d9a05a1
commit d4eb103454
5 changed files with 28 additions and 3 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
database smarmotech database smarmotech
screen size 24 by 80 screen size 24 by 80 title "Consulta Maestra de Productos"
{ {
Producto Terminado [a ]-[b ]-[c ]-[d ] [a1 ] Producto Terminado [a ]-[b ]-[c ]-[d ] [a1 ]
+5
View File
@@ -11,6 +11,10 @@ GLOBALS "ipprgb000.4gl"
MAIN MAIN
DEFER INTERRUPT DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CONNECT TO "smarmotech" USER usuarios USING clave
SELECT * INTO p_companias.* FROM companias SELECT * INTO p_companias.* FROM companias
CALL ipprcs002() CALL ipprcs002()
END MAIN END MAIN
@@ -55,6 +59,7 @@ LET SELEC =
## Busca los registros con la condicion dada y verifica si el producto terminado ## Busca los registros con la condicion dada y verifica si el producto terminado
## existe en el catalogo de bienes y servicios. ## existe en el catalogo de bienes y servicios.
CALL prod.clear()
LET idx = 1 LET idx = 1
FOREACH accion INTO prod[idx].*,descrip1 FOREACH accion INTO prod[idx].*,descrip1
IF int_flag THEN IF int_flag THEN
+1 -1
View File
@@ -328,7 +328,7 @@ DEFINE prod11 DYNAMIC ARRAY OF RECORD
fecha_ordenada DATE fecha_ordenada DATE
END RECORD END RECORD
DEFINE prod ARRAY[200] OF RECORD DEFINE prod DYNAMIC ARRAY OF RECORD
cod_n1 SMALLINT, cod_n1 SMALLINT,
cod_grupo1 SMALLINT, cod_grupo1 SMALLINT,
cod_tipo1 SMALLINT, cod_tipo1 SMALLINT,
+2
View File
@@ -516,6 +516,7 @@
<File filePath="ipdir/ipfmmt017.4fd"/> <File filePath="ipdir/ipfmmt017.4fd"/>
<File filePath="ipdir/ipfmwd008.per"/> <File filePath="ipdir/ipfmwd008.per"/>
<File filePath="ipdir/vefmwd002_ip.4fd"/> <File filePath="ipdir/vefmwd002_ip.4fd"/>
<File filePath="ipdir/ipfmcs002.per"/>
</Library> </Library>
<Library binaryName="FUNCIONES_IP" dependencies="-1026233879" id="1763548104" label="FUNCIONES_IP"> <Library binaryName="FUNCIONES_IP" dependencies="-1026233879" id="1763548104" label="FUNCIONES_IP">
<File filePath="ipdir/ipprgb000.4gl"/> <File filePath="ipdir/ipprgb000.4gl"/>
@@ -530,6 +531,7 @@
<File filePath="ipdir/ubicacionH.4gl"/> <File filePath="ipdir/ubicacionH.4gl"/>
<File filePath="otrodir/LlenarUbicaciones.4gl"/> <File filePath="otrodir/LlenarUbicaciones.4gl"/>
<File filePath="otrodir/categorias.4gl"/> <File filePath="otrodir/categorias.4gl"/>
<File filePath="otrodir/pantalla_ip.4gl"/>
<File filePath="ipdir/ipactualizareqtrx.4gl"/> <File filePath="ipdir/ipactualizareqtrx.4gl"/>
<File filePath="ipdir/loadDespiece.4gl"/> <File filePath="ipdir/loadDespiece.4gl"/>
</Library> </Library>
+18
View File
@@ -0,0 +1,18 @@
GLOBALS "../ipdir/ipprgb000.4gl"
FUNCTION pantalla()
DEFINE fecha CHAR(8),
hora char(5),
l SMALLINT
SELECT UNIQUE a.* INTO p_companias.* FROM companias a
LET fecha = today USING "dd/mm/yy"
LET hora = time
LET l = (80 - LENGTH(p_companias.nombre CLIPPED))/2
DISPLAY p_companias.nombre CLIPPED AT 4,l ATTRIBUTE (REVERSE,BLUE)
DISPLAY fecha AT 4,70 ATTRIBUTE (BLUE)
DISPLAY "Sistema Inventario de Productos" AT 5,25
DISPLAY hora AT 6,73 ATTRIBUTE(BLUE)
CALL fgl_drawbox(5,79,3,1)
CALL fgl_drawbox(1,79,22,1)
END FUNCTION