Files
MBS/PROYECTOS/ipdir/ipprmt002_1.4gl
T

740 lines
25 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : IPPRMT002
OBJETIVO : Capturar, Modificar, Eliminar registros de la
Tabla Maestra Productos
PROGRAMADOR : Juan Fco. Soto
FECHA REALIZACION : AGOSTO 1997
ASESOR : JOSE ALFREDO PAULINO
------------------------------------------------------------------
}
GLOBALS "ipprgb000.4gl"
DEFINE p_tipo_prod LIKE iptb00013.tipo_prod,
descrip_medida,descrip_grupo CHAR(30),
despiece CHAR(1),
USUARIOS, CLAVE CHAR(50),
pcodid INT,
pmaterial,plabor,pgastos,pfactor DEC(12,4)
DEFINE t_marca ARRAY [100] OF RECORD
cod_marca LIKE iptb00019.marca,
nombre LIKE iptb00019.nombre_marca
END RECORD,
descrip_tipo CHAR(40),
pcodn,pcodgrupo,pcodtipo,pcodsec SMALLINT,
descripcion CHAR(40)
MAIN
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
CALL ipprmt002()
END MAIN
FUNCTION ipprmt002()
CLEAR SCREEN
OPTIONS
FORM LINE 8,
ERROR LINE 24,
COMMENT LINE 23
OPEN FORM ipfmmt002 FROM "ipfmmt002_3"
DISPLAY FORM ipfmmt002
DISPLAY "ipprmt002" AT 4,3
DISPLAY "Catalogo Productos" AT 6,32
MENU
ON ACTION Adicionar
CLEAR FORM
LET INT_FLAG = FALSE
INITIALIZE p_iptb02.* TO NULL
LET tipo_p = "A"
CALL ippcad002()
ON ACTION consultar
CLEAR FORM
LET INT_FLAG = FALSE
INITIALIZE p_iptb02.* TO NULL
LET tipo_p = "C"
CALL ippcmf002()
ON ACTION Salir
EXIT MENU
END MENU
END FUNCTION
FUNCTION ippcad002()
DEFINE fech_ant CHAR(8)
# WHENEVER ERROR CONTINUE
## Captura los datos que va a contener el registro
IF tipo_p = "A" THEN
INPUT BY NAME p_iptb02.*,despiece,pmaterial,plabor,pgastos,pfactor,
pcodn,pcodgrupo,pcodtipo,pcodsec
ON KEY(CONTROL-W)
CASE
WHEN INFIELD (cod_n)
LET p_iptb02.cod_n = NULL
LET p_iptb02.descrip_esp = NULL
LET p_iptb20.producto = NULL
CALL busca_prod()
LET p_iptb02.cod_n = p_iptb20.cod_n
DISPLAY BY NAME p_iptb02.cod_n
NEXT FIELD cod_grupo
END CASE
AFTER FIELD pcodsec
IF pcodsec IS NOT NULL THEN
LET selec =
"SELECT a.descrip_esp FROM historicomtech.dbo.iptb00002 a ",
" WHERE a.cod_n = ? AND ",
" a.cod_grupo = ? AND ",
" a.cod_tipo = ? AND ",
"a.cod_sec = ? AND ",
"a.status_t IS NULL"
PREPARE cmdiptb02 FROM selec
EXECUTE cmdiptb02 INTO descripcion USING pcodn,pcodgrupo,pcodtipo,pcodsec
IF STATUS = NOTFOUND THEN
CALL msg(3)
NEXT FIELD pcodn
END IF
DISPLAY BY NAME descripcion
SELECT UNIQUE a.pcodn FROM tmpiptb00002 a
WHERE
a.pcodn = pcodn AND
a.pcodgrupo = pcodgrupo AND
a.pcodtipo = pcodtipo AND
a.pcodsec = pcodsec
IF STATUS != NOTFOUND THEN
LET opt = fgl_winquestion("ERRPR","EXISTE UN CODIGO ASIGNADO A ESTE, DESEA PROCEDER DE TODAS FORMAS?","NO","YES|NO","QUESTION",0)
END IF
IF opt = "NO" THEN
RETURN
END IF
LET pmaterial = 0
LET plabor = 0
LET pgastos = 0
SELECT a.material,a.labor,a.gastos INTO pmaterial,plabor,pgastos
FROM iptb00004 a
WHERE a.cod_n = pcodn AND
a.cod_grupo = pcodgrupo AND
a.cod_tipo = pcodtipo AND
a.cod_Sec = pcodsec AND
a.ano = YEAR(TODAY) and a.status_t IS NULL
LET pfactor = 0
SELECT a.factor_conv INTO pfactor
FROM iptb00001 a
WHERE a.cod_n = pcodn AND
a.cod_grupo = pcodgrupo AND
a.cod_tipo = pcodtipo AND
a.cod_Sec = pcodsec
DISPLAY BY NAME pmaterial,plabor,pgastos,pfactor
NEXT FIELD cod_sec
END IF
AFTER FIELD cod_cia
IF p_iptb02.cod_cia is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_cia
END IF
IF p_iptb02.cod_cia = 1 THEN
LET nombre_cia = "PRODUCTO LOCAL"
ELSE
LET nombre_cia = "PRODUCTO IMPORTADO"
END IF
DISPLAY BY NAME nombre_cia
AFTER FIELD cod_n
IF p_iptb02.cod_n IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
SELECT UNIQUE a.descripcion INTO p_iptb20.producto FROM tmpclase a
WHERE a.cod_n = p_iptb02.cod_n
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
DISPLAY BY NAME p_iptb20.producto
AFTER FIELD cod_grupo
IF p_iptb02.cod_grupo IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_grupo
END IF
SELECT a.descripcion INTO descrip_grupo
FROM tmpgrupo a WHERE a.cod_grupo = p_iptb02.cod_grupo
IF STATUS = NOTFOUND THEN
CALL msg(3)
NEXT FIELD cod_grupo
END IF
DISPLAY BY NAME descrip_grupo
AFTER FIELD cod_tipo
IF p_iptb02.cod_tipo IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_tipo
END IF
SELECT UNIQUE a.descripcion INTO descrip_tipo FROM tmptipo a
WHERE a.cod_tipo = p_iptb02.cod_tipo AND a.cod_tipo = p_iptb02.cod_tipo
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_tipo
END IF
DISPLAY BY NAME descrip_tipo
AFTER FIELD cod_sec
IF p_iptb02.cod_sec IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_sec
END IF
SELECT a.descripcion INTO descrip_medida
FROM tmpmedida a
WHERE a.cod_Sec = p_iptb02.cod_sec
IF STATUS=NOTFOUND THEN
CALL fgl_winmessage("ERROR","NO EXISTEN MEDIDAS CON ESE CODIGO","STOP")
NEXT FIELD cod_sec
END IF
DISPLAY BY NAME descrip_medida
SELECT UNIQUE a.descrip_esp FROM tmpiptb00002 a
WHERE a.cod_n = p_iptb02.cod_n AND a.cod_grupo = p_iptb02.cod_grupo AND
a.cod_tipo = p_iptb02.cod_tipo AND a.cod_sec = p_iptb02.cod_sec
IF STATUS != NOTFOUND THEN
LET numero_msg = 12
CALL msg(numero_msg)
NEXT FIELD cod_tipo
END IF
LET p_iptb02.descrip_esp=p_iptb20.producto CLIPPED," ",
descrip_grupo CLIPPED," ",
descrip_tipo CLIPPED," ",
descrip_medida
DISPLAY BY NAME p_iptb02.descrip_esp
AFTER INPUT
IF INT_FLAG THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET INT_FLAG = FALSE
RETURN
END IF
IF p_iptb02.cod_cia IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_cia
END IF
IF p_iptb02.cod_n IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
IF p_iptb02.cod_grupo IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_grupo
END IF
IF p_iptb02.cod_tipo IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_tipo
END IF
IF p_iptb02.cod_sec IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_sec
END IF
END INPUT
ELSE
INPUT BY NAME p_iptb02.cod_cia,p_iptb02.cod_n,
p_iptb02.cod_grupo,p_iptb02.cod_tipo,p_iptb02.cod_sec,
p_iptb02.descrip_esp,p_iptb02.unidad_med,p_iptb02.bodega,
p_iptb02.exist_max,p_iptb02.exist_min,
p_iptb02.status_t,p_iptb06.cantidad_2,p_iptb02.control_itbis,
p_iptb02.control_existencia,despiece,pmaterial,plabor,pgastos,pfactor,
pcodn,pcodgrupo,pcodtipo,pcodsec
WITHOUT DEFAULTS
AFTER FIELD pcodsec
IF pcodsec IS NOT NULL THEN
LET selec =
"SELECT a.descrip_esp FROM historicomtech.dbo.iptb00002 a ",
" WHERE a.cod_n = ? AND ",
" a.cod_grupo = ? AND ",
" a.cod_tipo = ? AND ",
"a.cod_sec = ? AND ",
"a.status_t IS NULL"
PREPARE cmdi1ptb02 FROM selec
EXECUTE cmdi1ptb02 INTO descripcion USING pcodn,pcodgrupo,pcodtipo,pcodsec
IF STATUS = NOTFOUND THEN
CALL msg(3)
NEXT FIELD pcodn
END IF
DISPLAY BY NAME descripcion
SELECT UNIQUE a.pcodn FROM tmpiptb00002 a
WHERE
a.pcodn = pcodn AND
a.pcodgrupo = pcodgrupo AND
a.pcodtipo = pcodtipo AND
a.pcodsec = pcodsec
IF STATUS != NOTFOUND THEN
LET opt = fgl_winquestion("ERRPR","EXISTE UN CODIGO ASIGNADO A ESTE, DESEA PROCEDER DE TODAS FORMAS?","NO","YES|NO","QUESTION",0)
END IF
IF opt = "NO" THEN
RETURN
END IF
END IF
AFTER FIELD cod_cia
IF p_iptb02.cod_cia is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_cia
END IF
IF p_iptb02.cod_cia = 1 THEN
LET nombre_cia = "PRODUCTO LOCAL"
ELSE
LET nombre_cia = "PRODUCTO IMPORTADO"
END IF
DISPLAY BY NAME nombre_cia
AFTER FIELD cod_n
IF p_iptb02.cod_n IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
SELECT UNIQUE a.descripcion INTO p_iptb20.producto FROM tmpclase a
WHERE a.cod_n = p_iptb02.cod_n
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
DISPLAY BY NAME p_iptb20.producto
AFTER FIELD cod_grupo
IF p_iptb02.cod_grupo IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_grupo
END IF
SELECT a.descripcion INTO descrip_grupo
FROM tmpgrupo a WHERE a.cod_grupo = p_iptb02.cod_grupo
IF STATUS = NOTFOUND THEN
CALL msg(3)
NEXT FIELD cod_grupo
END IF
DISPLAY BY NAME descrip_grupo
AFTER FIELD cod_tipo
IF p_iptb02.cod_tipo IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_tipo
END IF
SELECT UNIQUE a.descripcion INTO descrip_tipo FROM tmptipo a
WHERE a.cod_tipo = p_iptb02.cod_tipo AND a.cod_tipo = p_iptb02.cod_tipo
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_tipo
END IF
DISPLAY BY NAME descrip_tipo
AFTER FIELD cod_sec
IF p_iptb02.cod_sec IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_sec
END IF
SELECT a.descripcion INTO descrip_medida
FROM tmpmedida a
WHERE a.cod_Sec = p_iptb02.cod_sec
IF STATUS=NOTFOUND THEN
CALL fgl_winmessage("ERROR","NO EXISTEN MEDIDAS CON ESE CODIGO","STOP")
NEXT FIELD cod_sec
END IF
DISPLAY BY NAME descrip_medida
LET p_iptb02.descrip_esp=p_iptb20.producto CLIPPED," ",
descrip_grupo CLIPPED," ",
descrip_tipo CLIPPED," ",
descrip_medida
DISPLAY BY NAME p_iptb02.descrip_esp
AFTER FIELD descrip_esp
IF p_iptb02.descrip_esp is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD descrip_esp
END IF
AFTER FIELD unidad_med
IF p_iptb02.descrip_esp is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD descrip_esp
END IF
AFTER FIELD bodega
IF p_iptb02.bodega is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD bodega
END IF
AFTER FIELD exist_max
IF p_iptb02.exist_max is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD exist_max
END IF
AFTER FIELD exist_min
IF p_iptb02.exist_min is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD exist_min
END IF
AFTER INPUT
IF INT_FLAG THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET INT_FLAG = FALSE
RETURN
END IF
IF p_iptb02.cod_cia is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_cia
END IF
IF p_iptb02.descrip_esp is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD descrip_esp
END IF
IF p_iptb02.descrip_esp is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD descrip_esp
END IF
IF p_iptb02.bodega is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD bodega
END IF
IF p_iptb02.exist_max is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD exist_max
END IF
IF p_iptb02.exist_min is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD exist_min
END IF
END INPUT
END IF
IF tipo_p = "A" THEN
LET p_iptb06.num_doc = 0
SELECT MAX(a.num_doc) INTO p_iptb06.num_doc FROM tmpiptb00006 a
WHERE a.cod_n = p_iptb02.cod_n AND a.cod_grupo = p_iptb02.cod_grupo AND
a.cod_tipo = p_iptb02.cod_tipo AND a.cod_sec = p_iptb02.cod_sec AND
a.cod_mov = 99
IF p_iptb06.num_doc IS NULL THEN
LET p_iptb06.num_doc = 0
END IF
LET p_iptb06.num_doc = p_iptb06.num_doc + 1
LET pcodid = 0
SELECT MAX(a.codid) INTO pcodid FROM tmpiptb00002 a
IF pcodid IS NULL THEN
LET pcodid = 0
END IF
LET pcodid = pcodid +1
INSERT INTO tmpiptb00002 VALUES (p_iptb02.*,pcodid,pcodn,pcodgrupo,pcodtipo,pcodsec,
pmaterial,plabor,pgastos,pfactor)
UPDATE tmpiptb00002 SET (cod_cia,us_crea,fech_crea) = (p_iptb02.cod_cia,USER,GETDATE())
WHERE cod_n = p_iptb02.cod_n AND cod_grupo = p_iptb02.cod_grupo AND
cod_tipo = p_iptb02.cod_tipo AND cod_sec = p_iptb02.cod_sec
LET p_iptb06.cantidad_2 = 0
INSERT INTO tmpiptb00006 (cod_cia,num_doc,fecha,cod_n,cod_grupo,cod_tipo,
cod_sec,bodega,cantidad_2,cod_mov,us_crea,fech_crea)
VALUES (p_iptb02.cod_cia,p_iptb06.num_doc,TODAY,p_iptb02.cod_n,
p_iptb02.cod_grupo,p_iptb02.cod_tipo,p_iptb02.cod_sec,
p_iptb02.bodega,p_iptb06.cantidad_2,99,USER,GETDATE())
IF despiece = "S" THEN
INSERT INTO tmpiptb00027
VALUES (p_iptb02.cod_n,p_iptb02.cod_grupo,p_iptb02.cod_tipo,p_iptb02.cod_sec)
END IF
LET numero_msg = 1
CALL msg(numero_msg)
ELSE
UPDATE tmpiptb00002 SET cod_n = p_iptb02.cod_n,
cod_grupo = p_iptb02.cod_grupo,
cod_tipo = p_iptb02.cod_tipo,
cod_sec = p_iptb02.cod_sec,
cod_cia = p_iptb02.cod_cia,
descrip_esp = p_iptb02.descrip_esp,
descrip_ing = p_iptb02.descrip_ing,
unidad_med = p_iptb02.unidad_med,
nomenclatura = p_iptb02.nomenclatura,
bodega = p_iptb02.bodega,
exist_max = p_iptb02.exist_max,
exist_min = p_iptb02.exist_min,
dia_llegada = p_iptb02.dia_llegada,
us_mod = usuarios,
fech_mod = getdate(),
tmpiptb00002.pcodn = pcodn,
tmpiptb00002.pcodgrupo = pcodgrupo,
tmpiptb00002.pcodtipo = pcodtipo,
tmpiptb00002.pcodsec = pcodsec,
material = pmaterial,
labor = plabor,
gastos = pgastos,
factor = pfactor
WHERE codid = pcodid
DELETE FROM tmpiptb00027 WHERE @cod_n = p_iptb02.cod_n AND @cod_grupo = p_iptb02.cod_grupo AND
@cod_tipo = p_iptb02.cod_tipo AND @cod_sec = p_iptb02.cod_sec
IF despiece = "S" THEN
INSERT INTO tmpiptb00027
VALUES (p_iptb02.cod_n,p_iptb02.cod_grupo,p_iptb02.cod_tipo,p_iptb02.cod_sec)
END IF
LET numero_msg = 13
CALL msg(numero_msg)
END IF
END FUNCTION
FUNCTION ippcmf002()
#WHENEVER ERROR CONTINUE
CLEAR FORM
## Aqui se prepara para la captura del criterio de seleccion
CONSTRUCT criterio ON a.cod_cia,a.cod_n,a.cod_grupo,
a.cod_tipo,a.cod_sec,
a.descrip_esp,a.pcodn,a.pcodgrupo,a.pcodtipo,a.pcodsec
FROM cod_cia,cod_n,cod_grupo,cod_tipo,cod_sec,descrip_esp,
pcodn,pcodgrupo,pcodtipo,pcodsec
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET SELEC = "SELECT UNIQUE a.* FROM tmpiptb00002 a ",
"WHERE ",criterio clipped,
" ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec"
PREPARE busca FROM selec
DECLARE datos SCROLL CURSOR WITH HOLD FOR busca
OPEN datos
FETCH FIRST datos INTO p_iptb02.*,pcodid,pcodn,pcodgrupo,pcodtipo,pcodsec,
pmaterial,plabor,pgastos,pfactor
CALL despl1()
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
MENU "OPCIONES "
COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado"
FETCH NEXT datos INTO p_iptb02.*,pcodid,pcodn,pcodgrupo,pcodtipo,pcodsec,
pmaterial,plabor,pgastos,pfactor
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
CALL despl1()
COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS datos INTO p_iptb02.*,pcodid,pcodn,pcodgrupo,pcodtipo,pcodsec,
pmaterial,plabor,pgastos,pfactor
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
CALL despl1()
COMMAND "Primero" "Presenta en pantalla el primer registro encontrado"
FETCH FIRST datos INTO p_iptb02.*,pcodid,pcodn,pcodgrupo,pcodtipo,pcodsec,
pmaterial,plabor,pgastos,pfactor
CALL despl1()
LET numero_msg = 5
CALL msg(numero_msg)
COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado"
FETCH LAST datos INTO p_iptb02.*,pcodid,pcodn,pcodgrupo,pcodtipo,pcodsec,
pmaterial,plabor,pgastos,pfactor
CALL despl1()
LET numero_msg = 4
CALL msg(numero_msg)
COMMAND "Escoger" "<Esc> Actualiza Registro <Delete> Cancela Operacion"
CALL ippcad002()
COMMAND KEY ("T") "acTivar"
UPDATE tmpiptb00002 SET status_t = null,us_mod = user,fech_mod = GETDATE()
WHERE @cod_n = p_iptb02.cod_n AND @cod_grupo = p_iptb02.cod_grupo AND
@cod_tipo = p_iptb02.cod_tipo AND @cod_sec = p_iptb02.cod_sec
LET numero_msg = 13
CALL msg(numero_msg)
COMMAND KEY ("L") "eLiminar"
UPDATE tmpiptb00002 SET status_t = "E",us_mod = usuarios,
fech_mod = GETDATE()
WHERE @cod_n = p_iptb02.cod_n AND @cod_grupo = p_iptb02.cod_grupo AND
@cod_tipo = p_iptb02.cod_tipo AND @cod_sec = p_iptb02.cod_sec
{ UPDATE iptb00006 SET status_t = "E", us_mod = user, fech_mod = GETDATE()
WHERE @cod_n = p_iptb02.cod_n AND @cod_grupo = p_iptb02.cod_grupo AND
@cod_tipo = p_iptb02.cod_tipo AND @cod_sec = p_iptb02.cod_sec
}
LET numero_msg = 39
CALL msg(numero_msg)
COMMAND "Retornar" "Retorna al menu anterior"
CLEAR FORM
EXIT MENU
END MENU
END FUNCTION
FUNCTION busca_prod()
OPEN WINDOW producto AT 12,3 WITH FORM "ipfmwd006" ATTRIBUTE(BORDER,CYAN,
FORM LINE FIRST +1)
DECLARE busca11 CURSOR FOR
SELECT a.* FROM iptb00020 a ORDER BY 2
LET idx = 1
FOREACH busca11 INTO t_marca[idx].*
LET idx = idx + 1
END FOREACH
IF idx = 1 THEN
LET numero_msg = 3
CALL msg(numero_msg)
SLEEP 4
END IF
CALL set_count(idx-1)
DISPLAY ARRAY t_marca TO s_pilas.*
LET idx = arr_curr()
LET p_iptb20.cod_n = t_marca[idx].cod_marca
LET p_iptb20.producto = t_marca[idx].nombre
CLOSE WINDOW producto
END FUNCTION
FUNCTION despl1()
LET p_iptb06.cantidad_2 = 0
SELECT SUM(a.cantidad_2) INTO p_iptb06.cantidad_2 FROM iptb00006 a
WHERE a.cod_n=p_iptb02.cod_n and a.cod_grupo=p_iptb02.cod_grupo and
a.cod_tipo=p_iptb02.cod_tipo and a.cod_sec=p_iptb02.cod_sec AND
a.status_t IS NULL
IF p_iptb06.cantidad_2 IS NULL THEN
LET p_iptb06.cantidad_2 = 0
END IF
LET p_iptb20.producto = NULL
SELECT UNIQUE a.descripcion INTO p_iptb20.producto FROM tmpclase a
WHERE a.cod_n = p_iptb02.cod_n
LET p_iptb21.nombre_cia = NULL
SELECT UNIQUE a.nombre_cia INTO p_iptb21.nombre_cia FROM iptb00021 a
WHERE a.cod_cia = p_iptb02.cod_cia
SELECT UNIQUE a.cod_n FROM tmpiptb00027 a
WHERE a.cod_n=p_iptb02.cod_n and
a.cod_grupo=p_iptb02.cod_grupo and
a.cod_tipo=p_iptb02.cod_tipo and
a.cod_sec=p_iptb02.cod_sec
IF STATUS != NOTFOUND THEN
LET despiece = "S"
ELSE
LET despiece = "N"
END IF
LET descrip_tipo = null
SELECT UNIQUE a.descripcion INTO descrip_tipo FROM tmptipo a WHERE a.cod_tipo = p_iptb02.cod_tipo
SELECT a.descripcion INTO descrip_grupo FROM tmpgrupo a
WHERE a.cod_grupo = p_iptb02.cod_grupo
SELECT a.descripcion INTO descrip_medida FROM tmpmedida a
WHERE a.cod_sec = p_iptb02.cod_sec
LET selec =
"SELECT a.descrip_esp ",
" FROM historicoMTECH.dbo.iptb00002 a ",
" WHERE a.cod_n = ? AND ",
" a.cod_grupo = ? AND ",
" a.cod_tipo = ? AND ",
" a.cod_Sec = ? "
PREPARE cmdi2ptb02 FROM selec
EXECUTE cmdi2ptb02 INTO descripcion USING pcodn,pcodgrupo,pcodtipo,pcodsec
DISPLAY BY NAME p_iptb02.*,p_iptb21.nombre_cia,p_iptb06.cantidad_2,
p_iptb20.producto,despiece,descrip_tipo,descrip_grupo,
descrip_medida,descripcion,
pcodn,pcodgrupo,pcodtipo,pcodsec,
pmaterial,plabor,pgastos,pfactor
END FUNCTION