示例#1
0
        /// <summary>
        /// Metodo para obtener datos de un ACK
        /// </summary>
        /// <param name="nombreACK"></param>
        /// <returns></returns>
        private SobreTransito ObtenerSobreTransito(string nombreACK, string correoReceptor)
        {
            SobreTransito resultado = new SobreTransito();
            string        idReceptor = "", token = "";

            try
            {
                XmlDocument datosAck = new XmlDocument();

                datosAck.Load(RutasCarpetas.RutaCarpetaBandejaEntrada + nombreACK);

                idReceptor = ObtenerTag(datosAck, true);
                token      = ObtenerTag(datosAck, false);

                resultado.IdReceptor     = datosAck.GetElementsByTagName(idReceptor).Item(0).InnerText;
                resultado.NombreSobre    = nombreACK;
                resultado.TipoReceptor   = SobreTransito.ETipoReceptor.Receptor;
                resultado.Token          = datosAck.GetElementsByTagName(token).Item(0).InnerText;
                resultado.CorreoReceptor = correoReceptor;
            }
            catch (Exception)
            {
                // AdminEventosUI.mostrarMensaje("Mail/ObtenerSobreTransito/Error: " + ex.ToString(), AdminEventosUI.tipoMensajes.error);
            }

            return(resultado);
        }
示例#2
0
        /// <summary>
        /// Consulta el listado de todos los sobres en transito que existan
        /// </summary>
        /// <param name="comp"></param>
        /// <returns></returns>
        public List <SobreTransito> ConsultarNoInterfiere(SobreTransito.ETipoReceptor tipoRec)
        {
            List <SobreTransito> listaSobresTransito = new List <SobreTransito>();
            Recordset            recSet        = null;
            SobreTransito        sobreTransito = null;
            string consulta = "";
            int    i        = 0;

            try
            {
                //Obtener objeto de recordset
                recSet = ProcConexion.Comp.GetBusinessObject(BoObjectTypes.BoRecordset);

                //Establecer consulta
                // consulta = "SELECT DocEntry, U_NomSob, U_Token, U_IdRec, U_CorRec, U_TipoRec FROM [@TFEST] where U_TipoRec = '" + tipoRec + "' ORDER BY DocEntry Desc";

                consulta = " SELECT T1.DocEntry, T1.U_NomSob, T1.U_Token, T1.U_IdRec, T1.U_CorRec, T1.U_TipoRec, T1.U_Tipo, T1.U_Serie, T1.U_Numero FROM [@TFEST] T1 "
                           + " inner join [@TFECFE] T2 on T2.U_NumCFE = T1.U_Numero and T2.U_TipoDoc = T1.U_Tipo and T2.U_Serie = T1.U_Serie "
                           + " where T2.U_EstadoDgi = 'PendienteDGI' and T2.U_TipoDoc <> 101  or (T2.U_TipoDoc = 101 and T2.U_MayorUI = 'Y' and T2.U_EstadoDgi = 'PendienteDGI') "
                           + " order by T1.docentry desc ";

                //Ejectura consulta
                recSet.DoQuery(consulta);

                //Posicionar cursor al inicio
                recSet.MoveFirst();

                //Validar que existan valores
                while (i < recSet.RecordCount)
                {
                    //Crear objeto SobreTransito y establecer valores
                    sobreTransito                = new SobreTransito();
                    sobreTransito.DocEntry       = recSet.Fields.Item("DocEntry").Value + "";
                    sobreTransito.NombreSobre    = recSet.Fields.Item("U_NomSob").Value + "";
                    sobreTransito.Token          = recSet.Fields.Item("U_Token").Value + "";
                    sobreTransito.IdReceptor     = recSet.Fields.Item("U_IdRec").Value + "";
                    sobreTransito.CorreoReceptor = recSet.Fields.Item("U_CorRec").Value + "";
                    sobreTransito.TipoReceptor   = (SobreTransito.ETipoReceptor)Enum.Parse(typeof(SobreTransito.ETipoReceptor), recSet.Fields.Item("U_TipoRec").Value + "");

                    listaSobresTransito.Add(sobreTransito);

                    recSet.MoveNext();
                    i++;
                }
            }
            catch (Exception)
            {
                listaSobresTransito = null;
            }
            finally
            {
                if (recSet != null)
                {
                    //Se libera el objeto de memoria
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(recSet);
                    System.GC.Collect();
                }
            }
            return(listaSobresTransito);
        }
示例#3
0
        private void ConsultarDGI(Object parametros, SobreTransito sobreTransito)
        {
            string xmlConsulta  = "";
            string xmlRespuesta = "";

            WebServiceDGI webServiceDgi = new WebServiceDGI(parametros);

            try
            {
                //Armar el xml con los datos de para la consulta
                xmlConsulta = "<ConsultaCFE xmlns=\"http://dgi.gub.uy\"> <IdReceptor>" + sobreTransito.IdReceptor + "</IdReceptor><Token>" + sobreTransito.Token + "</Token> </ConsultaCFE>";
                //Invocar el web service
                xmlRespuesta = webServiceDgi.WSDGI.SendWSDGI(xmlConsulta, clsWSDGI.WsMethod.Query);

                if (ValidarRespuesta(xmlRespuesta) == false)
                {
                    //Procesar la respuesta
                    respuestaCertificado.ProcesarRespuesta(xmlRespuesta, CFE.ESTipoReceptor.DGI, sobreTransito.DocEntry);
                }
                else
                {
                    // Elimino sobre con error.
                    //manteUdoSobreTransito.Eliminar(sobreTransito.DocEntry);
                }
            }
            catch (Exception)
            {
                //SAPbouiCOM.Framework.Application.SBO_Application.MessageBox("consultarDGI " + ex.ToString());
            }
        }
示例#4
0
        /// <summary>
        /// Consulta el listado de todos los sobres en transito que existan
        /// </summary>
        /// <param name="comp"></param>
        /// <returns></returns>
        public List <SobreTransito> Consultar(SobreTransito.ETipoReceptor tipoRec)
        {
            List <SobreTransito> listaSobresTransito = new List <SobreTransito>();
            Recordset            recSet        = null;
            SobreTransito        sobreTransito = null;
            string consulta = "";
            int    i        = 0;

            try
            {
                //Obtener objeto de recordset
                recSet = ProcConexion.Comp.GetBusinessObject(BoObjectTypes.BoRecordset);

                //Establecer consulta
                consulta = "SELECT DocEntry, U_NomSob, U_Token, U_IdRec, U_CorRec, U_TipoRec FROM [@TFEST] where U_TipoRec = '" + tipoRec + "'";

                //Ejectura consulta
                recSet.DoQuery(consulta);

                //Posicionar cursor al inicio
                recSet.MoveFirst();

                //Validar que existan valores
                while (i < recSet.RecordCount)
                {
                    //Crear objeto SobreTransito y establecer valores
                    sobreTransito                = new SobreTransito();
                    sobreTransito.DocEntry       = recSet.Fields.Item("DocEntry").Value + "";
                    sobreTransito.NombreSobre    = recSet.Fields.Item("U_NomSob").Value + "";
                    sobreTransito.Token          = recSet.Fields.Item("U_Token").Value + "";
                    sobreTransito.IdReceptor     = recSet.Fields.Item("U_IdRec").Value + "";
                    sobreTransito.CorreoReceptor = recSet.Fields.Item("U_CorRec").Value + "";
                    sobreTransito.TipoReceptor   = (SobreTransito.ETipoReceptor)Enum.Parse(typeof(SobreTransito.ETipoReceptor), recSet.Fields.Item("U_TipoRec").Value + "");

                    listaSobresTransito.Add(sobreTransito);

                    recSet.MoveNext();
                    i++;
                }
            }
            catch (Exception)
            {
                listaSobresTransito = null;
            }
            finally
            {
                if (recSet != null)
                {
                    //Se libera el objeto de memoria
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(recSet);
                    System.GC.Collect();
                }
            }
            return(listaSobresTransito);
        }
示例#5
0
        /// <summary>
        /// Ingresa un nuevo registro a la tabla @TFEST
        /// </summary>
        /// <param name="comp"></param>
        /// <param name="maestro"></param>
        /// <returns></returns>
        public bool Almacenar(SobreTransito sobreTransito)
        {
            bool resultado = false;

            GeneralService servicioGeneral = null;
            GeneralData    dataGeneral     = null;

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

                //Apuntar a la cabecera del udo
                dataGeneral = servicioGeneral.GetDataInterface(GeneralServiceDataInterfaces.gsGeneralData);

                //Establecer los valores para cada una de las propiedades del udo
                dataGeneral.SetProperty("U_NomSob", sobreTransito.NombreSobre);
                dataGeneral.SetProperty("U_Token", sobreTransito.Token);
                dataGeneral.SetProperty("U_IdRec", sobreTransito.IdReceptor);
                dataGeneral.SetProperty("U_TipoRec", sobreTransito.TipoReceptor.ToString());
                dataGeneral.SetProperty("U_CorRec", sobreTransito.CorreoReceptor);
                dataGeneral.SetProperty("U_Tipo", sobreTransito.Tipo);
                dataGeneral.SetProperty("U_Numero", sobreTransito.Numero);
                dataGeneral.SetProperty("U_Serie", sobreTransito.Serie);

                //Agregar el nuevo registro a la base de dato utilizando el servicio general de la compañia
                servicioGeneral.Add(dataGeneral);

                resultado = true;
            }
            catch (Exception ex)
            {
                SAPbouiCOM.Framework.Application.SBO_Application.MessageBox("Error Almacenar Sobre Transito " + ex.ToString());
            }
            finally
            {
                if (servicioGeneral != null)
                {
                    //Liberar memoria utlizada por el objeto servicioGeneral
                    GC.SuppressFinalize(servicioGeneral);
                    System.GC.Collect();
                }
                if (dataGeneral != null)
                {
                    //Liberar memoria utlizada por el objeto dataGeneral
                    GC.SuppressFinalize(dataGeneral);
                    System.GC.Collect();
                }
            }
            return(resultado);
        }
示例#6
0
        /// <summary>
        /// Valida que el archivo contenga la informacion para la consulta del estado de un CFE
        /// </summary>
        /// <param name="nombreArchivo"></param>
        /// <returns></returns>
        public SobreTransito ValidarContenidoConsulta(string nombreArchivo)
        {
            SobreTransito sobreTransito = null;
            XmlDocument   xmlDocumento  = new XmlDocument();

            try
            {
                xmlDocumento.Load(RutasCarpetas.RutaCarpetaConsultaEstado + "" + nombreArchivo);
                sobreTransito            = new SobreTransito();
                sobreTransito.Token      = xmlDocumento.GetElementsByTagName("Token").Item(0).InnerText;
                sobreTransito.IdReceptor = xmlDocumento.GetElementsByTagName("IDReceptor").Item(0).InnerText;
            }
            catch (Exception)
            {
                //SAPbouiCOM.Framework.Application.SBO_Application.MessageBox("RespuestaConsultaCFE/Error: " + ex.ToString());
            }

            return(sobreTransito);
        }
示例#7
0
        /// <summary>
        /// Metodo que obtiene descarga los archivos adjuntos de
        /// los correos no leido y los marca como leido de la
        /// bandeja de entrada de Gmail
        /// </summary>
        /// <returns></returns>
        public void bandejaEntradaGmail()
        {
            while (!detenerHilo)
            {
                try
                {
                    //Se obtiene informacion de cuenta de correo
                    ManteUdoCorreos manteUdo = new ManteUdoCorreos();
                    Correo          correo   = manteUdo.Consultar();

                    string     clave = correo.Clave, usuario = correo.Cuenta;
                    ImapClient cliente = new ImapClient();

                    //Se conecta con el servidor
                    if (cliente.Connect(Mensaje.cliGmail, true))
                    {
                        //Se loguea con el usuario y la clave
                        cliente.Login(usuario, clave);

                        //Se obtiene la carpeta de bandeja de entrada
                        ImapX.Collections.FolderCollection folder = cliente.Folders;
                        ImapX.Folder buzonEntrada = cliente.Folders.Inbox;

                        //Se obtiene los mensajes no leidos
                        ImapX.Message[] mensajes = buzonEntrada.Search("UNSEEN", ImapX.Enums.MessageFetchMode.Full);

                        //Se recorren la lista de mensajes obtenidos
                        foreach (ImapX.Message mensaje in mensajes)
                        {
                            //Se obtienen los archivos adjuntos
                            foreach (var archivo in mensaje.Attachments)
                            {
                                //Se comprueba que sea un archivo xml
                                if (ValidarXmlSobre(archivo.FileName))
                                {
                                    mensaje.Seen = true;
                                    //Se descargan los archivos adjuntos
                                    archivo.Download();
                                    archivo.Save(RutasCarpetas.RutaCarpetaBandejaEntrada);
                                    string desde = mensaje.From.ToString();

                                    //Se guarda en la tabla de sobres Recibidos
                                    respuestaSobre.GenerarXML(RutasCarpetas.RutaCarpetaBandejaEntrada, archivo.FileName, desde);
                                }
                                //Se comprueba que sea un ACK
                                else if (ValidarXmlACKSobre(archivo.FileName))
                                {
                                    archivo.Download();
                                    archivo.Save(RutasCarpetas.RutaCarpetaBandejaEntrada);
                                    mensaje.Seen = true;

                                    //Obtiene datos del sobre de un ACK xml
                                    SobreTransito sobreTransito = ObtenerSobreTransito(archivo.FileName, mensaje.From.ToString());

                                    //Guarda los datos en la tabla TFEST(Sobre en transito)
                                    ManteUdoSobreTransito manteSobreTransito = new ManteUdoSobreTransito();
                                    manteSobreTransito.Almacenar(sobreTransito);
                                }
                                //else if (ValidarXmlACKCFE(archivo.FileName))
                                //{
                                //    archivo.Save(RutasCarpetas.RutaCarpetaAcuseRecibidoCertificado);
                                //    mensaje.Seen = true;

                                //    RespuestaCertificados respuestaCFE = new RespuestaCertificados();
                                //    respuestaCFE.ProcesarRespuesta(archivo.FileName, CFE.ESTipoReceptor.Receptor);

                                //}
                                //else
                                //{
                                //    archivo.Save(RutasCarpetas.RutaCarpetaConsultaEstado);
                                //    mensaje.Seen = true;

                                //    RespuestaConsultaCFE respuestaConsultaCfe = new RespuestaConsultaCFE();
                                //    SobreTransito sobreTransito = respuestaConsultaCfe.ValidarContenidoConsulta(archivo.FileName);

                                //    if (sobreTransito != null)
                                //    {
                                //        respuestaConsultaCfe.ObtenerEstadoCFE(sobreTransito.Token, sobreTransito.IdReceptor, mensaje.From.ToString(), archivo.FileName);
                                //    }
                                //}
                            }
                        }

                        //Se cierra sesion
                        cliente.Logout();
                        //Se desconecta del servidor
                        cliente.Disconnect();
                        //Se libera el objeto
                        cliente.Dispose();
                    }
                }
                catch (Exception)
                {
                    //SAPbouiCOM.Framework.Application.SBO_Application.MessageBox("Mail/BandejaEntradaGmail/Error: " + ex.ToString());
                }

                finally

                {
                    Thread.Sleep(30000);
                }
            }
        }
示例#8
0
        /// <summary>
        /// Metodo que descarga los archivos adjuntos de los correos
        /// no leidos de la cuenta de outlook
        /// </summary>
        public void bandejaEntradaOutlook()
        {
            Microsoft.Office.Interop.Outlook.Application app         = null;
            Microsoft.Office.Interop.Outlook._NameSpace  ns          = null;
            Microsoft.Office.Interop.Outlook.MAPIFolder  inboxFolder = null;
            Microsoft.Office.Interop.Outlook.MailItem    sinLeer;

            int p = 0, t = 0;

            while (!detenerHilo)
            {
                try
                {
                    app = new Microsoft.Office.Interop.Outlook.Application();

                    ns = app.GetNamespace("MAPI");
                    ns.Logon(null, null, false, false);

                    inboxFolder = ns.GetDefaultFolder(Microsoft.Office.Interop.Outlook.
                                                      OlDefaultFolders.olFolderInbox);

                    ///Se obtiene la bandeja de entrada de la cuenta de correo
                    Microsoft.Office.Interop.Outlook.Items inboxItems = inboxFolder.Items;

                    t = inboxFolder.UnReadItemCount;

                    ///Se obtiene la bandeja de entrada de correos no leidos
                    inboxItems = inboxItems.Restrict("[unread] = true");

                    while (p < t)
                    {
                        if (p == 0)
                        {
                            ///Se obtiene el primer elemento de la bandeja de entrada
                            sinLeer = inboxItems.GetFirst();
                        }
                        else
                        {
                            ///Se obtiene el elemento siguiente de la bandeja de entrada
                            sinLeer = inboxItems.GetNext();
                        }

                        ///Se obtiene los archivos adjuntos del correo
                        Microsoft.Office.Interop.Outlook.Attachments adjuntos = sinLeer.Attachments;

                        foreach (Microsoft.Office.Interop.Outlook.Attachment archivo in adjuntos)
                        {
                            if (ValidarXmlSobre(archivo.FileName))
                            {
                                ///Se marca el correo como no leido
                                sinLeer.UnRead = false;

                                //Se descargar el archivo adjunto del correo
                                archivo.SaveAsFile(RutasCarpetas.RutaCarpetaBandejaEntrada + archivo.FileName);
                                string desde = sinLeer.Sender.ToString();

                                //Se sube el archivo al servidor FTP
                                FTP ftp = new FTP();
                                ftp.CargarArchivos(archivo.FileName, RutasCarpetas.RutaCarpetaBandejaEntrada, 3);

                                //Se guarda en la tabla de sobres Recibidos

                                respuestaSobre.GenerarXML(RutasCarpetas.RutaCarpetaBandejaEntrada, archivo.FileName, desde);
                            }
                            //Se comprueba que sea un ACK
                            else if (ValidarXmlACKSobre(archivo.FileName))
                            {
                                archivo.SaveAsFile(RutasCarpetas.RutaCarpetaBandejaEntrada);
                                sinLeer.UnRead = false;

                                SobreTransito         sobreTransito      = ObtenerSobreTransito(archivo.FileName, sinLeer.Sender.ToString());
                                ManteUdoSobreTransito manteSobreTransito = new ManteUdoSobreTransito();
                                manteSobreTransito.Almacenar(sobreTransito);
                            }
                        }
                        p = p + 1;
                    }
                }
                catch (Exception)
                {
                }
                finally
                {
                    ns          = null;
                    app         = null;
                    inboxFolder = null;

                    Thread.Sleep(60000);
                }
            }
        }
示例#9
0
        /// <summary>
        /// Procesa la respuesta del web service de DGI
        /// </summary>
        /// <param name="xmlRespuesta"></param>
        /// <param name="parametros"></param>
        public void ProcesarRespuesta(string xmlRespuesta, object parametros)
        {
            string             estadoRespuesta = "", token = "", idReceptor = "";
            ParametrosJobWsDGI parametrosJob = parametros as ParametrosJobWsDGI;

            XmlDocument   xmlDocumento = new XmlDocument();
            ManteUdoSobre manteSobre   = new ManteUdoSobre();

            try
            {
                xmlDocumento.LoadXml(xmlRespuesta);


                idReceptor      = xmlDocumento.GetElementsByTagName("IDReceptor").Item(0).InnerText;
                estadoRespuesta = xmlDocumento.GetElementsByTagName("Estado").Item(0).InnerText;

                if (estadoRespuesta.Equals("AS"))
                {
                    token = xmlDocumento.GetElementsByTagName("Token").Item(0).InnerText;
                    string hora = xmlDocumento.GetElementsByTagName("Fechahora").Item(0).InnerText;

                    SobreTransito sobreTransito = new SobreTransito();
                    sobreTransito.NombreSobre  = parametrosJob.Sobre.Nombre;
                    sobreTransito.Token        = token;
                    sobreTransito.IdReceptor   = idReceptor;
                    sobreTransito.TipoReceptor = SobreTransito.ETipoReceptor.DGI;
                    sobreTransito.Tipo         = parametrosJob.Cfe.TipoCFEInt;
                    sobreTransito.Serie        = parametrosJob.Cfe.SerieComprobante;
                    sobreTransito.Numero       = parametrosJob.Cfe.NumeroComprobante;

                    ManteUdoSobreTransito manteTransito = new ManteUdoSobreTransito();
                    manteTransito.Almacenar(sobreTransito);


                    //True = AS, no se agrega detalle correspondiente a info de rechazo
                    manteSobre.cargarSobreXml(xmlDocumento, parametrosJob.Sobre.Nombre, true);

                    //Se crea el documento Pdf
                    //CrearPDF(parametrosJob.Cfe, parametrosJob.Cae);
                }
                else if (estadoRespuesta.Equals("BS"))
                {
                    //False = BS, se agrega detalle correspondiente a info de rechazo
                    manteSobre.cargarSobreXml(xmlDocumento, parametrosJob.Sobre.Nombre, false);
                }
            }
            catch (Exception)
            {
                app.MessageBox("No se pudo enviar a DGI por problemas de conexión, recordar reenvio de documento.");
                ManteUdoControlSobres manteUdoControlSobres = new ManteUdoControlSobres();
                ParametrosJobWsDGI    parametrosDGI         = parametros as ParametrosJobWsDGI;

                ControlSobres controlSobres = new ControlSobres();
                controlSobres.Estado       = "Pendiente";
                controlSobres.Serie        = parametrosDGI.Cfe.SerieComprobante;
                controlSobres.Numero       = parametrosDGI.Cfe.NumeroComprobante.ToString();
                controlSobres.Tipo         = parametrosDGI.Cfe.TipoCFEInt.ToString();
                controlSobres.DocumentoSap = parametrosDGI.Cfe.DocumentoSAP;
                controlSobres.UsuarioSap   = ProcConexion.Comp.UserName;

                manteUdoControlSobres.Almacenar(controlSobres);
                //app.MessageBox("ERROR RESPUESTA: " + ex.ToString());
            }

            finally
            {
                if (xmlDocumento != null)
                {
                    //Libera de memoria el objeto factura
                    GC.SuppressFinalize(xmlDocumento);
                    GC.Collect();
                }

                if (xmlDocumento != null)
                {
                    //Libera de memoria el objeto factura
                    GC.SuppressFinalize(xmlDocumento);
                    GC.Collect();
                }

                if (manteSobre != null)
                {
                    //Libera de memoria el objeto factura
                    GC.SuppressFinalize(manteSobre);
                    GC.Collect();
                }
            }
        }
示例#10
0
        /// <summary>
        /// Procesa la respuesta del web service de DGI
        /// </summary>
        /// <param name="xmlRespuesta"></param>
        /// <param name="parametros"></param>
        public void ProcesarRespuesta(string xmlRespuesta, object parametros, ControlSobres controlSobres)
        {
            string estadoRespuesta = "", token = "", idReceptor = "";
            ParametrosJobWsDGIMasivo parametrosJob         = parametros as ParametrosJobWsDGIMasivo;
            ManteUdoControlSobres    manteUdoControlSobres = new ManteUdoControlSobres();
            ManteUdoCFE manteUdoCfe = new ManteUdoCFE();

            try
            {
                XmlDocument xmlDocumento = new XmlDocument();
                xmlDocumento.LoadXml(xmlRespuesta);

                idReceptor      = xmlDocumento.GetElementsByTagName("IDReceptor").Item(0).InnerText;
                estadoRespuesta = xmlDocumento.GetElementsByTagName("Estado").Item(0).InnerText;

                if (estadoRespuesta.Equals("AS"))
                {
                    manteUdoControlSobres.Eliminar(controlSobres);
                    token = xmlDocumento.GetElementsByTagName("Token").Item(0).InnerText;
                    string hora = xmlDocumento.GetElementsByTagName("Fechahora").Item(0).InnerText;

                    SobreTransito sobreTransito = new SobreTransito();
                    sobreTransito.NombreSobre  = parametrosJob.NombreSobre;
                    sobreTransito.Token        = token;
                    sobreTransito.IdReceptor   = idReceptor;
                    sobreTransito.TipoReceptor = SobreTransito.ETipoReceptor.DGI;

                    sobreTransito.Serie  = parametrosJob.Serie;
                    sobreTransito.Numero = parametrosJob.Numero;
                    sobreTransito.Tipo   = parametrosJob.Tipo;


                    ManteUdoSobreTransito manteTransito = new ManteUdoSobreTransito();
                    manteTransito.Almacenar(sobreTransito);

                    ManteUdoSobre manteSobre = new ManteUdoSobre();
                    //True = AS, no se agrega detalle correspondiente a info de rechazo
                    manteSobre.cargarSobreXml(xmlDocumento, parametrosJob.NombreSobre, true);
                }
                else if (estadoRespuesta.Equals("BS"))
                {
                    manteUdoControlSobres.Eliminar(controlSobres);
                    ManteUdoSobre manteSobre = new ManteUdoSobre();
                    //False = BS, se agrega detalle correspondiente a info de rechazo
                    manteSobre.cargarSobreXml(xmlDocumento, parametrosJob.NombreSobre, false);
                }
            }
            catch (Exception)
            {
                controlSobres.Estado = "Pendiente";
                manteUdoControlSobres.Actualizar(controlSobres);
                app.MessageBox("No se pudo enviar a DGI");
            }

            finally
            {
                if (parametrosJob != null)
                {
                    //Libera de memoria el objeto factura
                    GC.SuppressFinalize(parametrosJob);
                    GC.Collect();
                }

                if (manteUdoControlSobres != null)
                {
                    //Libera de memoria el objeto factura
                    GC.SuppressFinalize(manteUdoControlSobres);
                    GC.Collect();
                }


                if (manteUdoCfe != null)
                {
                    //Libera de memoria el objeto factura
                    GC.SuppressFinalize(manteUdoCfe);
                    GC.Collect();
                }
            }
        }
示例#11
0
        /// <summary>
        /// Determina que tipo de cuentas de correo utilizar
        /// </summary>
        /// <returns></returns>
        public bool tipoCorreo(SobreTransito sobreTransito)
        {
            bool resultado = false;

            try
            {
                //Se obtiene credenciales para el envio del correo
                ManteUdoCorreos manteUdo = new ManteUdoCorreos();
                Correo          correo   = manteUdo.Consultar();

                if (correo != null)
                {
                    string[] adjuntos = new string[1];

                    //Se agregan las rutas de los archivos adjuntos
                    adjuntos[0] = RutasCarpetas.RutaCarpetaACKSobreReceptor + sobreTransito.NombreSobre + ".xml";
                    string mensaje = "Datos para Consulta de Estado de CFEs" + Environment.NewLine
                                     + "<ACKReceptor>" + Environment.NewLine
                                     + "    <Token> " + sobreTransito.Token + "</Token>" + Environment.NewLine
                                     + "    <IdReceptor> " + sobreTransito.IdReceptor + "</IdReceptor>" + Environment.NewLine
                                     + "</ACKReceptor>" + Environment.NewLine
                                     + "Saludos";

                    //0 == Gmail
                    if (correo.Opcion.Equals("0"))
                    {
                        ///Envia correo con una cuenta de gmail
                        Mail mail = new Mail(sobreTransito.CorreoReceptor, correo.Cuenta, Mensaje.ACKAsunto,
                                             mensaje, Mensaje.pdfServidorGmail, correo.Cuenta, correo.Clave, adjuntos, 587);
                        if (mail.enviarCorreoGmail())
                        {
                            if (!adjuntos[0].Equals(""))
                            {
                                //Borra el archivo de sobre copiado para enviar en el correo
                                System.IO.File.Delete(adjuntos[0]);
                            }
                            resultado = true;
                        }
                    }
                    //1 == Outlook
                    else if (correo.Opcion.Equals("0"))
                    {
                        ///Envia correo con una cuenta de outlook
                        Mail mail = new Mail(sobreTransito.CorreoReceptor, Mensaje.ACKAsunto, mensaje, adjuntos);
                        if (mail.enviarOutlook())
                        {
                            if (!adjuntos[1].Equals(""))
                            {
                                //Borra el archivo de sobre copiado para enviar en el correo
                                System.IO.File.Delete(adjuntos[0]);
                            }
                            resultado = true;
                        }
                    }
                }
            }
            catch (Exception)
            {
            }

            return(resultado);
        }