Files

936 lines
34 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : IPPRMT002
OBJETIVO : Capturar, Modificar, Eliminar registros de la
Tabla Maestra Productos
PROGRAMADOR : Juan Fco. Soto
FECHA REALIZACION : AGOSTO 1997
------------------------------------------------------------------
}
GLOBALS "ipprgb000.4gl"
DEFINE despiece CHAR(1),
pcodn,pcodgrupo,pcodtipo,pcodsec, d_tipos, f_tipos, mensaje SMALLINT,
imagen_file,filedestino,filepath STRING,
pimagen BYTE
DEFINE t_marca DYNAMIC ARRAY OF RECORD
cod_marca LIKE iptb00019.marca,
nombre LIKE iptb00019.nombre_marca
END RECORD,
descrip_medida,descrip_grupo,descrip_tipo CHAR(40),
porc_desc DEC(12,2),
fecha_desc DATE
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL STARTLOG("IPPRMT02.TXT")
CONNECT TO "marmotech" AS "IFMX"
CONNECT to "smarmotech" AS "MSSQL" 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"
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"
SET CONNECTION "MSSQL"
CALL ippcad002()
ON ACTION consultar
CLEAR FORM
LET INT_FLAG = FALSE
INITIALIZE p_iptb02.* TO NULL
LET tipo_p = "C"
SET CONNECTION "MSSQL"
CALL ippcmf002()
ON ACTION Salir
EXIT MENU
END MENU
END FUNCTION
FUNCTION ippcad002()
# WHENEVER ERROR CONTINUE
## Captura los datos que va a contener el registro
IF tipo_p = "A" THEN
LET porc_desc=0
SET CONNECTION "MSSQL"
INPUT BY NAME p_iptb02.*,despiece,p_iptb01.factor_conv,p_iptb01.factor_ad
BEFORE INPUT
LET k1 = 1
LET p_iptb01.factor_ad = 1
DISPLAY BY NAME p_iptb01.factor_ad
CALL bodegas(k1)
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_prod1()
LET p_iptb02.cod_n = p_iptb20.cod_n
DISPLAY BY NAME p_iptb02.cod_n
NEXT FIELD cod_grupo
END CASE
ON ACTION formar
CALL consigue_descripcion() RETURNING p_iptb02.descrip_esp
DISPLAY BY NAME p_iptb02.descrip_esp
ON ACTION busca_foto
LET d_tipos="Images"
LET f_tipos="*.jpg *.png *.gif"
LET mensaje=%"Elige Imagen"
IF p_iptb02.cod_n IS NULL THEN
NEXT FIELD cod_n
END IF
IF p_iptb02.cod_GRUPO IS NULL THEN
NEXT FIELD cod_GRUPO
END IF
IF p_iptb02.cod_TIPO IS NULL THEN
NEXT FIELD cod_TIPO
END IF
IF p_iptb02.cod_SEC IS NULL THEN
NEXT FIELD cod_SEC
END IF
LET imagen_file = "*.jpg"
CALL ui.interface.frontcall("standard","openfile",[imagen_file,d_tipos,f_tipos,mensaje],filepath)
IF filepath IS NOT NULL THEN
LET filedestino = FGL_GETENV("IMAGENNOMINA"),"\\PRODUCTOS\\",p_iptb02.cod_n USING "<<<<","-",
p_iptb02.cod_grupo USING "<<<<","-",
p_iptb02.cod_tipo USING "<<<<","-",
p_iptb02.cod_sec USING "<<<<","-",".jpg"
CALL fgl_getfile(filepath,filedestino)
DISPLAY filepath TO foto_producto
LET p_iptb02.foto_producto = filedestino
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
SELECT UNIQUE a.descripcion INTO nombre_cia FROM iptb00022 a
WHERE a.cod_cia = p_iptb22.cod_cia
IF STATUS != NOTFOUND THEN
LET numero_msg = 12
CALL msg(numero_msg)
NEXT FIELD cod_cia
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.producto INTO p_iptb20.producto FROM iptb00020 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 iptb00029 a
WHERE a.cod_grupo = p_iptb02.cod_grupo
IF STATUS = NOTFOUND THEN
CALL msg(12)
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 iptb00024 a WHERE
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 iptb00030 a
WHERE a.cod_sec = p_iptb02.cod_sec
IF STATUS = NOTFOUND THEN
CALL msg(3)
NEXT FIELD cod_sec
END IF
DISPLAY BY NAME descrip_medida
SELECT UNIQUE a.descrip_esp FROM iptb00002 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
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_iptb01.factor_ad IS NULL THEN
CALL msg(2)
NEXT FIELD factor_ad
END IF
IF p_iptb01.factor_conv IS NULL OR p_iptb01.factor_conv = 0 THEN
CALL msg(2)
NEXT FIELD factor_ad
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
SET CONNECTION "MSSQL"
LET pcodn = p_iptb02.cod_n
LET pcodgrupo = p_iptb02.cod_grupo
LET pcodtipo = p_iptb02.cod_tipo
LET pcodsec = p_iptb02.cod_sec
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.nomenclatura,
p_iptb02.bodega,p_iptb01.factor_conv,p_iptb01.factor_ad,p_iptb02.exist_max,p_iptb02.exist_min,
p_iptb06.cantidad_2,p_iptb02.control_itbis,p_iptb02.control_existencia,despiece,
porc_desc,fecha_desc
WITHOUT DEFAULTS
ON ACTION formar
CALL consigue_descripcion() RETURNING p_iptb02.descrip_esp
DISPLAY BY NAME p_iptb02.descrip_esp
ON ACTION busca_foto
LET d_tipos="Images"
LET f_tipos="*.jpg *.png *.gif"
LET mensaje=%"Elige Imagen"
LET imagen_file = "*.jpg"
CALL ui.interface.frontcall("standard","openfile",[imagen_file,d_tipos,f_tipos,mensaje],filepath)
IF filepath IS NOT NULL THEN
LET filedestino = FGL_GETENV("IMAGENNOMINA"),"\\PRODUCTOS\\",p_iptb02.cod_n USING "<<<<","-",
p_iptb02.cod_grupo USING "<<<<","-",
p_iptb02.cod_tipo USING "<<<<","-",
p_iptb02.cod_sec USING "<<<<","-",".jpg"
CALL fgl_getfile(filepath,filedestino)
DISPLAY filepath TO foto_producto
LET p_iptb02.foto_producto = filedestino
END IF
BEFORE INPUT
LET k1 = 1
CALL bodegas(k1)
LET cambio = "N"
IF p_iptb01.factor_ad IS NULL OR p_iptb01.factor_ad = 0 THEN
LET p_iptb01.factor_ad = 1
DISPLAY BY NAME p_iptb01.factor_ad
END IF
SELECT UNIQUE a.cod_n FROM iptb00006 a WHERE a.cod_mov <> 99 AND
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 STATUS <> NOTFOUND THEN
NEXT FIELD descrip_esp
END IF
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.producto INTO p_iptb20.producto FROM iptb00020 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 iptb00029 a
WHERE a.cod_grupo = p_iptb02.cod_grupo
IF STATUS = NOTFOUND THEN
CALL msg(12)
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 iptb00024 a WHERE
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 iptb00030 a
WHERE a.cod_sec = p_iptb02.cod_sec
IF STATUS = NOTFOUND THEN
CALL msg(3)
NEXT FIELD cod_sec
END IF
DISPLAY BY NAME descrip_medida
SELECT UNIQUE a.descrip_esp FROM iptb00002 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 AND cambio = "S" THEN
LET numero_msg = 12
CALL msg(numero_msg)
NEXT FIELD cod_tipo
END IF
DISPLAY BY NAME p_iptb02.descrip_esp
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 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 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_iptb01.factor_ad IS NULL THEN
CALL msg(2)
NEXT FIELD factor_ad
END IF
IF p_iptb01.factor_conv IS NULL OR p_iptb01.factor_conv = 0 THEN
CALL msg(2)
NEXT FIELD factor_conv
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
# PRIMERA CONEXION
SET CONNECTION "MSSQL"
LET p_iptb06.num_doc = 0
SELECT MAX(a.num_doc) INTO p_iptb06.num_doc 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.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 iptb00002 a
#LET pcodid = pcodid +1
#LET p_iptb02.codid = pcodid
BEGIN WORK
INSERT INTO iptb00001
VALUES (p_iptb02.cod_n,p_iptb02.cod_grupo,p_iptb02.cod_tipo,
p_iptb02.cod_sec,p_iptb02.unidad_med,p_iptb01.factor_conv,
NULL,SUSER_SNAME(),GETDATE(),NULL,NULL,p_iptb01.factor_ad)
INSERT INTO iptb00002(cod_cia,cod_n,cod_grupo,cod_tipo,cod_Sec,descrip_esp,
descrip_ing,unidad_med,bodega,control_existencia,control_itbis,dia_llegada,exist_max,
exist_min,us_crea,fech_crea,foto_producto,porc_desc,fecha_desc)
VALUES (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.descrip_ing,p_iptb02.unidad_med,
p_iptb02.bodega,p_iptb02.control_existencia,p_iptb02.control_itbis,
p_iptb02.dia_llegada,p_iptb02.exist_max,p_iptb02.exist_min,usuarios,getdate(),
p_iptb02.foto_producto,porc_desc,fecha_desc)
LET p_iptb06.cantidad_2 = 0
INSERT INTO iptb00006 (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,usuarios,GETDATE())
IF despiece = "S" THEN
INSERT INTO iptb00027
VALUES (p_iptb02.cod_n,p_iptb02.cod_grupo,p_iptb02.cod_tipo,p_iptb02.cod_sec)
END IF
COMMIT WORK
SELECT a.codid INTO p_iptb02.codid FROM iptb00002 a
WHERE a.cod_n = p_iptb02.cod_n AND
a.cod_grupo = p_iptb02.cod_tipo AND
a.cod_tipo = p_iptb02.cod_tipo AND
a.cod_sec = p_iptb02.cod_Sec
# SEGUNDA CONEXION
SET CONNECTION "IFMX"
INSERT INTO iptb00002(cod_cia,cod_n,cod_grupo,cod_tipo,cod_Sec,descrip_esp,
descrip_ing,unidad_med,bodega,control_existencia,control_itbis,dia_llegada,exist_max,
exist_min,us_crea,fech_crea,codid)
VALUES (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.descrip_ing,p_iptb02.unidad_med,
p_iptb02.bodega,p_iptb02.control_existencia,p_iptb02.control_itbis,
p_iptb02.dia_llegada,p_iptb02.exist_max,p_iptb02.exist_min,usuarios,getdate(),
p_iptb02.codid)
INSERT INTO iptb00001
VALUES (p_iptb02.cod_n,p_iptb02.cod_grupo,p_iptb02.cod_tipo,
p_iptb02.cod_sec,p_iptb02.unidad_med,p_iptb01.factor_conv,
NULL,SUSER_SNAME(),GETDATE(),NULL,NULL,p_iptb01.factor_ad)
LET p_iptb06.cantidad_2 = 0
INSERT INTO iptb00006 (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,usuarios,getdate())
LET numero_msg = 1
CALL msg(numero_msg)
ELSE
# PRIMERA CONEXION
SET CONNECTION "MSSQL"
UPDATE iptb00002 SET iptb00002.cod_cia = p_iptb02.cod_cia,
iptb00002.cod_n =p_iptb02.cod_n,
iptb00002.cod_grupo = p_iptb02.cod_grupo,
iptb00002.cod_tipo =p_iptb02.cod_tipo,
iptb00002.cod_sec =p_iptb02.cod_Sec,
iptb00002.descrip_esp =p_iptb02.descrip_esp,
iptb00002.descrip_ing =p_iptb02.descrip_ing,
iptb00002.bodega =p_iptb02.bodega,
iptb00002.control_existencia =p_iptb02.control_existencia,
iptb00002.control_itbis =p_iptb02.control_itbis,
iptb00002.exist_min =p_iptb02.exist_min,
iptb00002.exist_max =p_iptb02.exist_max,
iptb00002.unidad_med = p_iptb02.unidad_med,
iptb00002.dia_llegada =p_iptb02.dia_llegada,
iptb00002.nomenclatura =p_iptb02.nomenclatura,
iptb00002.us_mod = usuarios,
iptb00002.fech_mod = getdate(),
iptb00002.foto_producto = p_iptb02.foto_producto,
iptb00002.porc_desc = porc_desc,
iptb00002.fecha_desc = fecha_Desc
WHERE codid = p_iptb02.codid
SELECT a.cod_n FROM iptb00001 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
INSERT INTO iptb00001
VALUES (p_iptb02.cod_n,p_iptb02.cod_grupo,p_iptb02.cod_tipo,
p_iptb02.cod_sec,p_iptb02.unidad_med,p_iptb01.factor_conv,
NULL,SUSER_SNAME(),GETDATE(),NULL,NULL,p_iptb01.factor_ad)
ELSE
UPDATE iptb00001 SET unidad = p_iptb02.unidad_med,
factor_conv = p_iptb01.factor_conv,
factor_ad = p_iptb01.factor_ad,
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
END IF
DELETE FROM iptb00027 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 iptb00027
VALUES (p_iptb02.cod_n,p_iptb02.cod_grupo,p_iptb02.cod_tipo,p_iptb02.cod_sec)
END IF
# SEGUNDA CONEXION
SET CONNECTION "IFMX"
SELECT a.cod_n FROM iptb00002 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
UPDATE iptb00002 SET iptb00002.cod_cia = p_iptb02.cod_cia,
iptb00002.descrip_esp =p_iptb02.descrip_esp,
iptb00002.descrip_ing =p_iptb02.descrip_ing,
iptb00002.bodega =p_iptb02.bodega,
iptb00002.control_existencia =p_iptb02.control_existencia,
iptb00002.control_itbis =p_iptb02.control_itbis,
iptb00002.exist_min =p_iptb02.exist_min,
iptb00002.exist_max =p_iptb02.exist_max,
iptb00002.unidad_med = p_iptb02.unidad_med,
iptb00002.dia_llegada =p_iptb02.dia_llegada,
iptb00002.nomenclatura =p_iptb02.nomenclatura,
iptb00002.status_t = p_iptb02.status_t,
iptb00002.us_mod = usuarios,
iptb00002.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
ELSE
INSERT INTO iptb00002(cod_cia,cod_n,cod_grupo,cod_tipo,cod_Sec,descrip_esp,
descrip_ing,unidad_med,bodega,control_existencia,control_itbis,dia_llegada,exist_max,
exist_min,us_crea,fech_crea,codid)
VALUES (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.descrip_ing,p_iptb02.unidad_med,
p_iptb02.bodega,p_iptb02.control_existencia,p_iptb02.control_itbis,
p_iptb02.dia_llegada,p_iptb02.exist_max,p_iptb02.exist_min,usuarios,GETDATE(),
p_iptb02.codid)
LET p_iptb06.cantidad_2 = 0
INSERT INTO iptb00006 (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,usuarios,GETDATE())
END IF
SELECT a.cod_n FROM iptb00001 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
INSERT INTO iptb00001
VALUES (p_iptb02.cod_n,p_iptb02.cod_grupo,p_iptb02.cod_tipo,
p_iptb02.cod_sec,p_iptb02.unidad_med,p_iptb01.factor_conv,
NULL,SUSER_SNAME(),GETDATE(),NULL,NULL,p_iptb01.factor_ad)
ELSE
UPDATE iptb00001 SET unidad = p_iptb02.unidad_med,
factor_conv = p_iptb01.factor_conv,
factor_ad = p_iptb01.factor_ad,
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
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 iptb00002.cod_cia,iptb00002.cod_n,iptb00002.cod_grupo,
iptb00002.cod_tipo,iptb00002.cod_sec,
iptb00002.descrip_esp
FROM cod_cia,cod_n,cod_grupo,cod_tipo,cod_sec,descrip_esp
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET SELEC = "SELECT DISTINCT codid,cod_cia,cod_n,cod_grupo,cod_tipo,cod_Sec,descrip_esp,
descrip_ing,unidad_med,bodega,control_existencia,control_itbis,dia_llegada,exist_max,
exist_min,us_crea,CONVERT(VARCHAR(16),fech_crea,103),foto_producto,porc_desc,",
"CONVERT(CHAR(10),fecha_desc,103),status_t,imagen FROM iptb00002 ",
"WHERE ",criterio clipped,
" ORDER BY cod_n,cod_grupo,cod_tipo,cod_Sec"
PREPARE busca FROM selec
DECLARE datos SCROLL CURSOR WITH HOLD FOR busca
OPEN datos
LOCATE pimagen IN MEMORY
FETCH FIRST datos INTO p_iptb02.codid, 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.descrip_ing,p_iptb02.unidad_med,
p_iptb02.bodega,p_iptb02.control_existencia,p_iptb02.control_itbis,p_iptb02.dia_llegada,
p_iptb02.exist_max,p_iptb02.exist_min,p_iptb02.us_crea,p_iptb02.fech_crea,p_iptb02.foto_producto,
porc_desc,fecha_desc,p_iptb02.status_t,pimagen
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.codid,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.descrip_ing,p_iptb02.unidad_med,
p_iptb02.bodega,p_iptb02.control_existencia,p_iptb02.control_itbis,p_iptb02.dia_llegada,
p_iptb02.exist_max,p_iptb02.exist_min,p_iptb02.us_crea,p_iptb02.fech_crea,p_iptb02.foto_producto,
porc_desc,fecha_desc
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.codid,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.descrip_ing,p_iptb02.unidad_med,
p_iptb02.bodega,p_iptb02.control_existencia,p_iptb02.control_itbis,p_iptb02.dia_llegada,
p_iptb02.exist_max,p_iptb02.exist_min,p_iptb02.us_crea,p_iptb02.fech_crea,p_iptb02.foto_producto,
porc_desc,fecha_desc
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.codid,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.descrip_ing,p_iptb02.unidad_med,
p_iptb02.bodega,p_iptb02.control_existencia,p_iptb02.control_itbis,p_iptb02.dia_llegada,
p_iptb02.exist_max,p_iptb02.exist_min,p_iptb02.us_crea,p_iptb02.fech_crea,p_iptb02.foto_producto,
porc_desc,fecha_desc
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.codid,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.descrip_ing,p_iptb02.unidad_med,
p_iptb02.bodega,p_iptb02.control_existencia,p_iptb02.control_itbis,p_iptb02.dia_llegada,
p_iptb02.exist_max,p_iptb02.exist_min,p_iptb02.us_crea,p_iptb02.fech_crea,p_iptb02.foto_producto,
porc_desc,fecha_desc
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 iptb00002 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"
IF p_iptb06.cantidad_2 <> 0 THEN
CALL fgl_winmessage("EXISTENCIA","NO PUEDE ELIMINAR UN CODIGO CON EXISTENCIA","INFO")
CONTINUE MENU
END IF
LET OPT = FGL_WINQUESTION("WARNING","ESTA SEGURO DE ELIMINAR ESTE REGISTRO?","NO","YES|NO","QUESTION",0)
IF opt = "YES" THEN
UPDATE iptb00002 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)
END IF
COMMAND "Retornar" "Retorna al menu anterior"
CLEAR FORM
EXIT MENU
END MENU
END FUNCTION
FUNCTION busca_prod1()
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()
# FACTOR CONVERSION
LET p_iptb01.factor_ad=0
LET p_iptb01.factor_conv=0
SELECT a.factor_conv,a.factor_ad INTO p_iptb01.factor_conv,p_iptb01.factor_ad
FROM iptb00001 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
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.producto INTO p_iptb20.producto FROM iptb00020 a
WHERE a.cod_n = p_iptb02.cod_n
SELECT a.descripcion INTO descrip_grupo FROM iptb00029 a
WHERE a.cod_grupo = p_iptb02.cod_grupo
SELECT a.descripcion INTO descrip_medida FROM iptb00030 a
WHERE a.cod_sec = p_iptb02.cod_sec
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 iptb00027 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 iptb00024 a WHERE a.cod_tipo = p_iptb02.cod_tipo
DISPLAY BY NAME p_iptb02.*,p_iptb21.nombre_cia,p_iptb06.cantidad_2,
p_iptb20.producto,despiece,descrip_tipo,descrip_grupo,
descrip_medida,p_iptb01.factor_conv,p_iptb01.factor_ad,porc_desc,
fecha_desc
{ DISPLAY BY NAME p_iptb02.cod_n,p_iptb02.cod_grupo,p_iptb02.cod_tipo,p_iptb02.cod_sec,
p_iptb02.descrip_esp
CALL pimagen.writeFile("tmpfile.jpg")
DISPLAY "tmpfile.jpg" TO foto_producto}
END FUNCTION
FUNCTION consigue_descripcion()
LET p_iptb02.descrip_esp=p_iptb20.producto CLIPPED," ",
descrip_grupo CLIPPED," ",
descrip_tipo CLIPPED," ",
descrip_medida
RETURN p_iptb02.descrip_esp
END FUNCTION