{ ------------------------------------------------------------------ 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" " Actualiza Registro 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