Ejemplo n.º 1
0
        /// <summary>
        /// Elimina archivos del ftp
        /// tipoRuta:
        ///            0 = Sobres /
        ///            1 = Comprobantes /
        ///            2 = Bandeja Entrada /
        ///            3 = Respuestas /
        ///            4 = Reporte Diario /
        ///            5 = ContingenciaSobres /
        ///            6 = ContingenciaComprobantes /
        ///            7 = ContingenciaReportesDiarios /
        ///            8 = CFEs /
        ///            9 = CertificadosAnulados /
        ///            10 = Contingencia Sobres Dgi
        /// </summary>
        /// <param name="tipoRuta"></param>
        public void EliminarFTP(int tipoRuta, string nombreArchivo)
        {
            string      servidorFTP = "", usuarioFTP = "", claveFTP = "", rutaFTP = "";
            ManteUdoFTP udoFTP = new ManteUdoFTP();

            try
            {
                ConfigFTP config = udoFTP.Consultar();

                if (config != null)
                {
                    servidorFTP = config.Servidor;
                    usuarioFTP  = config.Usuario;
                    claveFTP    = config.Clave;

                    //Se valida el tipo de extension(Se manejan rutas distintas para xml y pdf)
                    rutaFTP = ObtenerTipoRuta(tipoRuta, config);

                    rutaFTP = Mensaje.dirFtp + servidorFTP + rutaFTP;

                    // Get the object used to communicate with the server.
                    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(rutaFTP + nombreArchivo);
                    request.Method = WebRequestMethods.Ftp.DeleteFile;

                    // This example assumes the FTP site uses anonymous logon.
                    request.Credentials = new NetworkCredential(usuarioFTP, claveFTP);

                    FtpWebResponse response = (FtpWebResponse)request.GetResponse();
                }
            }
            catch (Exception)
            {
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Realiza la consulta de la configuracion para la conexion FTP almacenada
        /// </summary>
        /// <param name="comp"></param>
        /// <returns></returns>
        public ConfigFTP Consultar()
        {
            ConfigFTP configFtp = null;

            //Obtener objeto estandar de record set
            Recordset recSet = ProcConexion.Comp.GetBusinessObject(BoObjectTypes.BoRecordset);

            try
            {
                //Establecer consulta
                string consulta = "SELECT U_Serv, U_RepComp, U_RepSob, U_RepBan, U_ConSobDgi, U_RepConSob, U_RepConCom, U_RepConReDi, U_Usuario, U_Clave, U_RepResp, U_RepRepDi, U_RutWsE, U_RutWsC, U_RepCfe, U_RepCerAnu, U_FilePcDel FROM [@TFECONFTP]";

                //Ejecutar consulta
                recSet.DoQuery(consulta);

                //Validar que se hayan obtenido registros
                if (recSet.RecordCount > 0)
                {
                    //Crea una instancia del objeto configuracion ftp
                    configFtp = new ConfigFTP();

                    //Establece las propiedaes al objeto configuracion ftp
                    configFtp.Servidor                        = recSet.Fields.Item("U_Serv").Value + "";
                    configFtp.RepoComp                        = recSet.Fields.Item("U_RepComp").Value + "";
                    configFtp.RepoSob                         = recSet.Fields.Item("U_RepSob").Value + "";
                    configFtp.RepoBandejaEntrada              = recSet.Fields.Item("U_RepBan").Value + "";
                    configFtp.RepoContingenciaSobres          = recSet.Fields.Item("U_RepConSob").Value + "";
                    configFtp.RepoContingenciaComprobantes    = recSet.Fields.Item("U_RepConCom").Value + "";
                    configFtp.RepoContingenciaReportesDiarios = recSet.Fields.Item("U_RepConReDi").Value + "";
                    configFtp.Usuario                         = recSet.Fields.Item("U_Usuario").Value + "";
                    configFtp.Clave                    = recSet.Fields.Item("U_Clave").Value + "";
                    configFtp.RepoResp                 = recSet.Fields.Item("U_RepResp").Value + "";
                    configFtp.RepoRepDi                = recSet.Fields.Item("U_RepRepDi").Value + "";
                    configFtp.RepoWebServiceEnvio      = recSet.Fields.Item("U_RutWsE").Value + "";
                    configFtp.RepoWebServiceConsulta   = recSet.Fields.Item("U_RutWsC").Value + "";
                    configFtp.RepoCFEs                 = recSet.Fields.Item("U_RepCfe").Value + "";
                    configFtp.RepoCertificadosAnulados = recSet.Fields.Item("U_RepCerAnu").Value + "";
                    configFtp.RepoContingenciaSobreDgi = recSet.Fields.Item("U_ConSobDgi").Value + "";
                    configFtp.FileDelete               = recSet.Fields.Item("U_FilePcDel").Value + "";
                }
            }
            catch (Exception)
            {
                //Se activa bandera de error
                errorManteFTP = true;
            }
            finally
            {
                if (recSet != null)
                {
                    //Liberar memoria
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(recSet);
                    System.GC.Collect();
                }
            }
            return(configFtp);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Almacena o actualiza la configuracion de la conexion con el ftp
        /// <para>0=Valores ingresados.</para>
        /// <para>1=Valores no ingresados.</para>
        /// <para>2=Valores no validos</para>
        /// <para>3=Rango no ingresado</para>
        /// </summary>
        public int Almacenar()
        {
            //Valida que los campos tenga valores y el formato correcto
            if (Validar())
            {
                //Crea un nuevo objeto de configuracion de ftp
                ConfigFTP configFtp = new ConfigFTP();

                configFtp.Servidor           = udsTxtServidor.Value;
                configFtp.RepoComp           = udsTxtComp.Value;
                configFtp.RepoSob            = udsTxtSob.Value;
                configFtp.Usuario            = udsTxtUsuario.Value;
                configFtp.RepoBandejaEntrada = udsTxtBan.Value;
                configFtp.Clave                           = udsTxtClave.Value;
                configFtp.RepoResp                        = udsTxtResp.Value;
                configFtp.RepoRepDi                       = udsTxtRepDi.Value;
                configFtp.RepoWebServiceEnvio             = udsTxtRepWsE.Value;
                configFtp.RepoWebServiceConsulta          = udsTxtRepWsC.Value;
                configFtp.RepoContingenciaSobres          = udsTxtRepConSob.Value;
                configFtp.RepoContingenciaComprobantes    = udsTxtRepConCom.Value;
                configFtp.RepoContingenciaReportesDiarios = udsTxtRepConReDi.Value;
                configFtp.RepoCFEs                        = udsTxtRepCfe.Value;
                configFtp.RepoCertificadosAnulados        = udsTxtRepCerAnu.Value;
                configFtp.RepoContingenciaSobreDgi        = udsTxtRepConSobDgi.Value;
                //udsTxtRutDgi.Value = configFtp.RutDgi;
                configFtp.FileDelete = udschkFileDelete.Value;

                //Crea una nueva instanacia al mantenimiento de configuracion de FTP
                ManteUdoFTP manteUdoFtp = new ManteUdoFTP();

                //Valida que la configuracion ya exista. Si existe acutializa los datos, si no existe los almacena
                if (manteUdoFtp.ExisteConfiguracion())
                {
                    //Actualizar los datos
                    if (manteUdoFtp.Actualizar(configFtp))
                    {
                        return(0);//Valores ingresados
                    }
                }
                else
                {
                    //Almacenar los datos
                    if (manteUdoFtp.Almacenar(configFtp))
                    {
                        return(0);//Valores ingresados
                    }
                }
            }
            else
            {
                return(2); //Valores no validos
            }

            return(1); //Valores no ingresados
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Obtiene las direcciones web de los web services de la DGI
        /// </summary>
        public void ObtenerUrlWebService()
        {
            ManteUdoFTP manteUdoFtp = new ManteUdoFTP();

            ConfigFTP configFtp = manteUdoFtp.ConsultarURLWebService();

            if (configFtp != null)
            {
                URL_ENVIO     = configFtp.RepoWebServiceEnvio;
                URL_CONSULTAS = configFtp.RepoWebServiceConsulta;
            }
        }
Ejemplo n.º 5
0
        //#region COMENTADO

        ///// <summary>
        ///// Metodo para contenido de un directorio FTP
        /////            0 = Sobres /
        /////            1 = Comprobantes /
        /////            2 = Bandeja Entrada /
        /////            3 = Respuestas /
        /////            4 = Reporte Diario /
        /////            5 = ContingenciaSobres /
        /////            6 = ContingenciaComprobantes /
        /////            7 = ContingenciaReportesDiarios /
        /////            8 = CFEs /
        /////            9 = CertificadosAnulados
        ///// </summary>
        ///// <param name="tipoRuta"></param>
        //public void obtenerDirectorioDescargar(int tipoRuta)
        //{
        //    string servidorFTP = "", usuarioFTP = "", claveFTP = "", rutaFTP = "";

        //    List<string> comprobantesPdf = new List<string>();
        //    List<string> comprobantesPdfXml = new List<string>();
        //    List<string> comprobantesXml = new List<string>();
        //    List<string> reportes = new List<string>();
        //    List<string> sobres = new List<string>();

        //    ManteUdoFTP udoFTP = new ManteUdoFTP();

        //    try
        //    {
        //        ConfigFTP config = udoFTP.Consultar(Conexion.ProcConexion.Comp);

        //        if (config != null)
        //        {
        //            //Obtiene datos de la configuracion registrada en la base de datos
        //            servidorFTP = config.Servidor;
        //            usuarioFTP = config.Usuario;
        //            claveFTP = config.Clave;

        //            //Se valida el tipo de extension(Se manejan rutas distintas para xml y pdf)
        //            rutaFTP = ObtenerTipoRuta(tipoRuta, config);

        //            //Se crea la ruta correspondiente al servidor Ftp
        //            rutaFTP = Mensaje.dirFtp + servidorFTP + rutaFTP;

        //            //Obtiene el objeto para comunicarse con el servidor Ftp
        //            FtpWebRequest request = (FtpWebRequest)WebRequest.Create(rutaFTP);
        //            //Se ajusta el metodo para obtener los directorios
        //            request.Method = WebRequestMethods.Ftp.ListDirectory;

        //            // This example assumes the FTP site uses anonymous logon.
        //            request.Credentials = new NetworkCredential(usuarioFTP, claveFTP);

        //            //Se obtiene la respuesta del servidor Ftp
        //            FtpWebResponse response = (FtpWebResponse)request.GetResponse();

        //            Stream responseStream = response.GetResponseStream();
        //            StreamReader reader = new StreamReader(responseStream);

        //            //Mientras no sea el fin del stream
        //            while(!reader.EndOfStream)
        //            {
        //                string temp = reader.ReadLine();

        //                //Valida el formato del nombre del archivo y el tipo de ruta
        //                if (Regex.IsMatch(temp, Mensaje.expRegCfePdf) && tipoRuta == 6)
        //                {
        //                    //Archivos generados al crear el comprobante
        //                    comprobantesPdf.Add(temp);
        //                }
        //                //Valida el formato del nombre del archivo y el tipo de ruta
        //                if (Regex.IsMatch(temp, Mensaje.expRegCfePdfXml) && tipoRuta == 6)
        //                {
        //                    //Es copia de informacion de comprobantePdf
        //                    comprobantesPdfXml.Add(temp);
        //                }
        //                //Valida el formato del nombre del archivo y el tipo de ruta
        //                else if (Regex.IsMatch(temp, Mensaje.expRegCfeXml) && tipoRuta == 6)
        //                {
        //                    //Datos de los Cfes exclusivamente
        //                    comprobantesXml.Add(temp);
        //                }
        //                //Valida el formato del nombre del archivo y el tipo de ruta
        //                else if(Regex.IsMatch(temp, Mensaje.expRegSobre) && tipoRuta == 5)
        //                {
        //                    //Sobres con Cfes incluidos
        //                    sobres.Add(temp);
        //                }
        //                //Valida el formato del nombre del archivo y el tipo de ruta
        //                else if (Regex.IsMatch(temp, Mensaje.expRegReportesDiarios) && tipoRuta == 7)
        //                {
        //                    //Reporte Diarios generados
        //                    reportes.Add(temp);
        //                }
        //            }

        //            //Se cierra el streamReader
        //            reader.Close();
        //            //Se cierra la respuesta
        //            response.Close();

        //            foreach (string comprobantePdf in comprobantesPdf)
        //            {
        //                //Descarga el archivo de la zona Contingencia en el servidor Ftp
        //                descargarArchivos(comprobantePdf, RutasCarpetas.RutaCarpetaComprobantes, 6);
        //                //Elimina el archivo de la zona Contingencia en el servidor Ftp
        //                EliminarFTP(6, comprobantePdf);
        //                //Carga el archivo en la zona de Comprobantes en el servidor Ftp
        //                CargarArchivos(comprobantePdf, RutasCarpetas.RutaCarpetaComprobantes + comprobantePdf, 1);
        //            }
        //            foreach (string comprobantePdfXml in comprobantesPdfXml)
        //            {
        //                //Descarga el archivo de la zona Contingencia en el servidor Ftp
        //                descargarArchivos(comprobantePdfXml, RutasCarpetas.RutaCarpetaComprobantes, 6);
        //                //Elimina el archivo de la zona Contingencia en el servidor Ftp
        //                EliminarFTP(6, comprobantePdfXml);
        //                //Carga el archivo en la zona de Comprobantes en el servidor Ftp
        //                CargarArchivos(comprobantePdfXml, RutasCarpetas.RutaCarpetaComprobantes + comprobantePdfXml, 1);
        //            }
        //            foreach (string comprobanteXml in comprobantesXml)
        //            {
        //                //Descarga el archivo de la zona Contingencia en el servidor Ftp
        //                descargarArchivos(comprobanteXml, RutasCarpetas.RutaCarpetaCertificadosTemporales, 6);
        //                //Elimina el archivo de la zona Contingencia en el servidor Ftp
        //                EliminarFTP(6, comprobanteXml);
        //                //Carga el archivo en la zona de Comprobantes en el servidor Ftp
        //                cargarComprobanteCFEBD(comprobanteXml, RutasCarpetas.RutaCarpetaCertificadosTemporales);

        //            }
        //            foreach (string sobre in sobres)
        //            {
        //                //Descarga el archivo de la zona Contingencia en el servidor Ftp
        //                descargarArchivos(sobre, RutasCarpetas.RutaCarpetaSobres, 5);
        //                //Elimina el archivo de la zona Contingencia en el servidor Ftp
        //                EliminarFTP(5, sobre);
        //                //Carga el archivo en la zona de Comprobantes en el servidor Ftp
        //                CargarArchivos(sobre, RutasCarpetas.RutaCarpetaSobres + sobre, 0);
        //            }
        //            foreach (string reporte in reportes)
        //            {
        //                //Descarga el archivo de la zona Contingencia en el servidor Ftp
        //                descargarArchivos(reporte, RutasCarpetas.RutaCarpetaReporteDiario, 7);
        //                //Elimina el archivo de la zona Contingencia en el servidor Ftp
        //                EliminarFTP(7, reporte);
        //                //Carga el archivo en la zona de Comprobantes en el servidor Ftp
        //                CargarArchivos(reporte, RutasCarpetas.RutaCarpetaReporteDiario + reporte, 4);
        //            }
        //        }
        //    }
        //    catch(Exception)
        //    {
        //    }
        //}

        //#endregion COMENTADO

        /// <summary>
        /// Devuelve el tipo de ruta
        /// </summary>
        /// <param name="tipoRuta"></param>
        /// <returns></returns>
        private string ObtenerTipoRuta(int tipoRuta, ConfigFTP config)
        {
            string resultado = "";

            if (tipoRuta == 0)
            {
                resultado = config.RepoSob;
            }
            else if (tipoRuta == 1)
            {
                resultado = config.RepoComp;
            }
            else if (tipoRuta == 2)
            {
                resultado = config.RepoBandejaEntrada;
            }
            else if (tipoRuta == 3)
            {
                resultado = config.RepoResp;
            }
            else if (tipoRuta == 4)
            {
                resultado = config.RepoRepDi;
            }
            else if (tipoRuta == 5)
            {
                resultado = config.RepoContingenciaSobres;
            }
            else if (tipoRuta == 6)
            {
                resultado = config.RepoContingenciaComprobantes;
            }
            else if (tipoRuta == 7)
            {
                resultado = config.RepoContingenciaReportesDiarios;
            }
            else if (tipoRuta == 8)
            {
                resultado = config.RepoCFEs;
            }
            else if (tipoRuta == 9)
            {
                resultado = config.RepoCertificadosAnulados;
            }
            else if (tipoRuta == 10)
            {
                resultado = config.RepoContingenciaSobreDgi;
            }



            return(resultado);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Consulta las direcciones de los web services de la DGI
        /// </summary>
        /// <param name="comp"></param>
        /// <returns></returns>
        public ConfigFTP ConsultarURLWebService()
        {
            ConfigFTP configFtp = null;

            //Obtener objeto estandar de record set
            Recordset recSet = ProcConexion.Comp.GetBusinessObject(BoObjectTypes.BoRecordset);

            try
            {
                //Establecer consulta
                string consulta = "SELECT U_RutWsE, U_RutWsC FROM [@TFECONFTP]";

                //Ejecutar consulta
                recSet.DoQuery(consulta);

                //Validar que se hayan obtenido registros
                if (recSet.RecordCount > 0)
                {
                    //Crea una instancia del objeto configuracion ftp
                    configFtp = new ConfigFTP();

                    //Establece las propiedaes al objeto configuracion ftp
                    configFtp.RepoWebServiceEnvio    = recSet.Fields.Item("U_RutWsE").Value + "";
                    configFtp.RepoWebServiceConsulta = recSet.Fields.Item("U_RutWsC").Value + "";
                }
            }
            catch (Exception)
            {
                //Se activa bandera de error
                errorManteFTP = true;
                configFtp     = null;
            }
            finally
            {
                if (recSet != null)
                {
                    //Liberar memoria
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(recSet);
                    System.GC.Collect();
                }
            }
            return(configFtp);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Consulta los datos de la configuracion
        /// </summary>
        private void Consultar()
        {
            //Crea una nueva instanacia al mantenimiento de configuracion de FTP
            ManteUdoFTP manteUdoFtp = new ManteUdoFTP();

            //Obtiene un nuevo objeto configuracion FTP
            ConfigFTP configFtp = manteUdoFtp.Consultar();

            //Validar que se haya obtenido un registro
            if (configFtp != null)
            {
                //Cargar los data sourcers
                udsTxtServidor.Value     = configFtp.Servidor;
                udsTxtComp.Value         = configFtp.RepoComp;
                udsTxtSob.Value          = configFtp.RepoSob;
                udsTxtBan.Value          = configFtp.RepoBandejaEntrada;
                udsTxtUsuario.Value      = configFtp.Usuario;
                udsTxtClave.Value        = configFtp.Clave;
                udsTxtResp.Value         = configFtp.RepoResp;
                udsTxtRepDi.Value        = configFtp.RepoRepDi;
                udsTxtRepWsE.Value       = configFtp.RepoWebServiceEnvio;
                udsTxtRepWsC.Value       = configFtp.RepoWebServiceConsulta;
                udsTxtRepConSob.Value    = configFtp.RepoContingenciaSobres;
                udsTxtRepConCom.Value    = configFtp.RepoContingenciaComprobantes;
                udsTxtRepConReDi.Value   = configFtp.RepoContingenciaReportesDiarios;
                udsTxtRepCfe.Value       = configFtp.RepoCFEs;
                udsTxtRepCerAnu.Value    = configFtp.RepoCertificadosAnulados;
                udsTxtRepConSobDgi.Value = configFtp.RepoContingenciaSobreDgi;
                udsTxtRutDgi.Value       = configFtp.RutDgi;
                udschkFileDelete.Value   = configFtp.FileDelete;
            }
            else
            {
                if (ManteUdoFTP.errorManteFTP)
                {
                    SAPbouiCOM.Framework.Application.SBO_Application.MessageBox(Mensaje.errTablaConfigFtp);
                    ManteUdoFTP.errorManteFTP = false;
                }
            }
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Actualiza los datos de la configuracion de conexion al servidor FTP
        /// </summary>
        /// <param name="comp"></param>
        /// <param name="configFtp"></param>
        /// <returns></returns>
        public bool Actualizar(ConfigFTP configFtp)
        {
            bool resultado = false;

            GeneralService    servicioGeneral = null;
            GeneralData       dataGeneral     = null;
            GeneralDataParams parametros      = null;

            try
            {
                //Obtener servicio general de la compañia
                servicioGeneral = ProcConexion.Comp.GetCompanyService().GetGeneralService("TTFECONFTP");

                //Obtener lista de parametros
                parametros = servicioGeneral.GetDataInterface(GeneralServiceDataInterfaces.gsGeneralDataParams);

                //Establecer parametros
                parametros.SetProperty("DocEntry", "1");

                //Apuntar al udo que corresponde con los parametros
                dataGeneral = servicioGeneral.GetByParams(parametros);

                dataGeneral.SetProperty("U_Serv", configFtp.Servidor);
                dataGeneral.SetProperty("U_RepComp", configFtp.RepoComp);
                dataGeneral.SetProperty("U_RepSob", configFtp.RepoSob);
                dataGeneral.SetProperty("U_RepBan", configFtp.RepoBandejaEntrada);
                dataGeneral.SetProperty("U_RepResp", configFtp.RepoResp);
                dataGeneral.SetProperty("U_RepRepDi", configFtp.RepoRepDi);
                dataGeneral.SetProperty("U_RepConSob", configFtp.RepoContingenciaSobres);
                dataGeneral.SetProperty("U_RepConCom", configFtp.RepoContingenciaComprobantes);
                dataGeneral.SetProperty("U_RepConReDi", configFtp.RepoContingenciaReportesDiarios);
                dataGeneral.SetProperty("U_Usuario", configFtp.Usuario);
                dataGeneral.SetProperty("U_Clave", configFtp.Clave);
                dataGeneral.SetProperty("U_RutWsE", configFtp.RepoWebServiceEnvio);
                dataGeneral.SetProperty("U_RutWsC", configFtp.RepoWebServiceConsulta);
                dataGeneral.SetProperty("U_RepCfe", configFtp.RepoCFEs);
                dataGeneral.SetProperty("U_RepCerAnu", configFtp.RepoCertificadosAnulados);
                dataGeneral.SetProperty("U_ConSobDgi", configFtp.RepoContingenciaSobreDgi);
                dataGeneral.SetProperty("U_ConSobDgi", configFtp.RepoContingenciaSobreDgi);
                dataGeneral.SetProperty("U_FilePcDel", configFtp.FileDelete);
                ///dataGeneral.SetProperty("U_RUT", configFtp.RutDgi);

                //Agregar el nuevo registro a la base de datos mediante el serivicio general
                servicioGeneral.Update(dataGeneral);

                resultado = true;
            }
            catch (Exception)
            {
            }
            finally
            {
                if (parametros != null)
                {
                    //Liberar memoria utlizada por parametros
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(parametros);
                    System.GC.Collect();
                }
                if (dataGeneral != null)
                {
                    //Liberar memoria utlizada por dataGeneral
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(dataGeneral);
                    System.GC.Collect();
                }
                if (servicioGeneral != null)
                {
                    //Liberar memoria utlizada por objeto servicioGeneral
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(servicioGeneral);
                    System.GC.Collect();
                }
            }
            return(resultado);
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Metodo para cargar archivos en un servidor FTP
        /// tipoRuta:
        ///            0 = Sobres /
        ///            1 = Comprobantes /
        ///            2 = Bandeja Entrada /
        ///            3 = Respuestas /
        ///            4 = Reporte Diario /
        ///            5 = ContingenciaSobres /
        ///            6 = ContingenciaComprobantes /
        ///            7 = ContingenciaReportesDiarios /
        ///            8 = CFEs /
        ///            9 = CertificadosAnulados/
        ///            10 = ContingenciaSobresDgi
        /// </summary>
        /// <param name="extension"></param>
        /// <returns></returns>
        public bool CargarArchivos(string nombreArchivo, string rutaArchivo, int tipoRuta)
        {
            string servidorFTP = "", usuarioFTP = "", claveFTP = "", rutaFTP = "";
            bool   resultado = false;

            ManteUdoFTP udoFTP = new ManteUdoFTP();

            ConfigFTP config = udoFTP.Consultar();

            if (config != null)
            {
                servidorFTP = config.Servidor;
                usuarioFTP  = config.Usuario;
                claveFTP    = config.Clave;

                rutaFTP = ObtenerTipoRuta(tipoRuta, config);
                Boolean BorroFile;

                //Valida que la ruta no este vacia
                if (!rutaFTP.Equals(""))
                {
                    try
                    {
                        rutaFTP = Mensaje.dirFtp + servidorFTP + rutaFTP + nombreArchivo;

                        //Se conecta al servidor ftp
                        FtpWebRequest request = (FtpWebRequest)WebRequest.Create(rutaFTP);

                        //Se define el metodo a ejecutar = cargaArchivos
                        request.Method = WebRequestMethods.Ftp.UploadFile;
                        //Se inicia sesion en el servidor
                        request.Credentials = new NetworkCredential(usuarioFTP, claveFTP);

                        rutaLocal = rutaArchivo;
                        //Se obtiene el contenido del archivo
                        byte[] contenido = File.ReadAllBytes(rutaLocal);

                        request.ContentLength = contenido.Length;

                        //Se escribe el contenido en un stream y es enviado al servidor ftp
                        Stream requestStream = request.GetRequestStream();
                        requestStream.Write(contenido, 0, contenido.Length);
                        requestStream.Close();

                        //Se obtiene el formulario activo para mantener la conexion con DIServer
                        Form activo = SAPbouiCOM.Framework.Application.SBO_Application.Forms.ActiveForm;
                        //Se libera el objeto de memoria
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(activo);
                        GC.Collect();

                        FtpWebResponse response = (FtpWebResponse)request.GetResponse();
                        Console.WriteLine(response.StatusDescription);
                        response.Close();


                        BorroFile = BorroFiles();

                        if (BorroFile != true)
                        {
                            //Se borra el archivo subido
                            File.Delete(rutaLocal);
                        }

                        resultado = true;
                    }
                    catch (Exception)
                    {
                    }
                }
            }
            return(resultado);
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Metodo para descargar archivos del servidor ftp
        /// tipoRuta:
        ///            0 = Sobres /
        ///            1 = Comprobantes /
        ///            2 = Bandeja Entrada /
        ///            3 = Respuestas /
        ///            4 = Reporte Diario /
        ///            5 = ContingenciaSobres /
        ///            6 = ContingenciaComprobantes /
        ///            7 = ContingenciaReportesDiarios /
        ///            8 = CFEs /
        ///            9 = CertificadosAnulados /
        ///            10 = Contingencia Sobres Dgi
        /// </summary>
        /// <param name="rutaFTP"></param>
        /// <param name="nombreArchivo"></param>
        /// <param name="pRutaLocal"></param>
        /// <returns></returns>
        public bool descargarArchivos(string nombreArchivo, string pRutaLocal, int tipoRuta)
        {
            string servidorFTP = "", usuarioFTP = "", claveFTP = "", rutaFTP = "";
            bool   resultado = false;

            ManteUdoFTP udoFTP = new ManteUdoFTP();

            ConfigFTP config = udoFTP.Consultar();

            if (config != null)
            {
                servidorFTP = config.Servidor;
                usuarioFTP  = config.Usuario;
                claveFTP    = config.Clave;

                //Se valida el tipo de extension(Se manejan rutas distintas para xml y pdf)
                rutaFTP = ObtenerTipoRuta(tipoRuta, config);

                //Valida que la ruta no este vacia
                if (!rutaFTP.Equals(""))
                {
                    try
                    {
                        rutaFTP = Mensaje.dirFtp + servidorFTP + rutaFTP + nombreArchivo;
                        FtpWebRequest request = (FtpWebRequest)WebRequest.Create(rutaFTP);

                        //Se define el metodo a ejecutar = cargaArchivos
                        request.Method = WebRequestMethods.Ftp.DownloadFile;
                        ////Se inicia sesion en el servidor
                        request.Credentials = new NetworkCredential(usuarioFTP, claveFTP);
                        request.UseBinary   = true;
                        ////request.UsePassive = false;

                        FtpWebResponse response = (FtpWebResponse)request.GetResponse();

                        ////Se descarga el archivo
                        Stream     responseStream = response.GetResponseStream();
                        FileStream fileStream     = new FileStream(pRutaLocal + nombreArchivo, FileMode.Create);


                        byte[] buffer = new byte[2048];
                        int    count  = responseStream.Read(buffer, 0, buffer.Length);

                        while (count > 0)
                        {
                            fileStream.Write(buffer, 0, count);
                            count = responseStream.Read(buffer, 0, buffer.Length);
                        }

                        fileStream.Close();
                        response.Close();

                        resultado = true;
                    }
                    catch (Exception)
                    {
                        //SAPbouiCOM.Framework.Application.SBO_Application.MessageBox("E/DEsc/FTP: " + ex.ToString());
                    }
                }
            }

            return(resultado);
        }