Exemplo n.º 1
0
 public static void ActualizarBandejaEntrada(out List<eFact_Entidades.Archivo> Archivos, List<eFact_Entidades.Archivo> ArchivosBandejaEntrada, FileInfo ArchFileInfo, CedEntidades.Sesion Sesion)
 {
     List<eFact_Entidades.Archivo> archivos = new List<eFact_Entidades.Archivo>();
     eFact_Entidades.Archivo archivo = new eFact_Entidades.Archivo();
     archivos.AddRange(ArchivosBandejaEntrada);
     eFact_RN.Archivo.ActualizarBandejaEntrada(archivo, ArchFileInfo, Sesion);
     archivos.Add(archivo);
     Archivos = archivos;
 }
Exemplo n.º 2
0
 public void Consultar(List<eFact_Entidades.Archivo> Archivos, eFact_Entidades.Archivo.TipoConsultaArchivos TipoConsultaArchivos, eFact_Entidades.Archivo.OtrosFiltros OtrosFiltros, DateTime FechaDsd, DateTime FechaHst)
 {
     StringBuilder commandText = new StringBuilder();
     //Query Lotes
     commandText.Append("select * from Archivos ");
     if (TipoConsultaArchivos == eFact_Entidades.Archivo.TipoConsultaArchivos.FechaCreacion)
     {
         commandText.Append("where FechaCreacion >= '" + FechaDsd.ToString("yyyyMMdd") + "' and FechaCreacion <= Dateadd(Day, 1, '" + FechaHst.ToString("yyyyMMdd") + "') ");
     }
     else
     {
         commandText.Append("where FechaProceso >= '" + FechaDsd.ToString("yyyyMMdd") + "' and FechaProceso <= Dateadd(Day, 1, '" + FechaHst.ToString("yyyyMMdd") + "') ");
     }
     if (OtrosFiltros != eFact_Entidades.Archivo.OtrosFiltros.SinAplicar)
     {
         if (OtrosFiltros == eFact_Entidades.Archivo.OtrosFiltros.OK)
         {
             commandText.Append(" and IdLote is not null");
         }
         else
         {
             commandText.Append(" and IdLote is null");
         }
     }
     commandText.Append(" order by IdArchivo Desc");
     DataTable dt = new DataTable();
     dt = (DataTable)Ejecutar(commandText.ToString(), TipoRetorno.TB, Transaccion.Usa, sesion.CnnStr);
     if (dt.Rows.Count == 0)
     {
         throw new Microsoft.ApplicationBlocks.ExceptionManagement.Validaciones.NoHayDatos();
     }
     else
     {
         for (int i = 0; i < dt.Rows.Count; i++)
         {
             eFact_Entidades.Archivo archivo = new eFact_Entidades.Archivo();
             Copiar(dt.Rows[i], archivo);
             Archivos.Add(archivo);
         }
     }
 }
Exemplo n.º 3
0
        private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            try 
            {
                bool EncontreArchivos = false;
                timer1.Stop();

                CultureInfo cedeiraCultura = new CultureInfo(System.Configuration.ConfigurationManager.AppSettings["Cultura"], false);
                cedeiraCultura.DateTimeFormat = new CultureInfo(System.Configuration.ConfigurationManager.AppSettings["CulturaDateTimeFormat"], false).DateTimeFormat;
                Thread.CurrentThread.CurrentCulture = cedeiraCultura;
                
                //Solo la primera vez inicia la sesion
                if (Aplicacion == null)
                {
                    Inicializar();
                }

                //Actualizar Estado AFIP de los Lotes Ptes de Respuesta.
                ActualizarEstadoAFIPLotes();

                //Enviar a Interfacturas Lotes Ptes de Envío.
                EnviarAIFLotesPtesDeEnvio();

                string[] files = Directory.GetFiles(Aplicacion.ArchPath, "*.*");
                List<eFact_Entidades.Archivo> Archivos = new List<eFact_Entidades.Archivo>();
                foreach (string d in files)
                {
                    FileInfo ArchFileInfo = new FileInfo(d);
                    try
                    {
                        if (@System.Configuration.ConfigurationManager.AppSettings["ClearMemory"] == "SI")
                        {
                            Memory.ClearMemory();
                        }
                        eFact_Entidades.Archivo archivo = new eFact_Entidades.Archivo();
                        ActualizarBandejaEntrada(archivo, ArchFileInfo, Aplicacion.Sesion);
                        Archivos.Add(archivo);
                        EncontreArchivos = true;
                    }
                    catch (Exception ex)
                    {
                        Microsoft.ApplicationBlocks.ExceptionManagement.ExceptionManager.Publish(ex);
                    }
                }
                Archivos.Sort(ordenarPorNombre);
                foreach (eFact_Entidades.Archivo elem in Archivos)
                {
                    string NombreArchivo = elem.Nombre;
                    string FechaTexto = DateTime.Now.ToString("yyyyMMdd-hhmmss");
                    string ArchGuardarComoNombre = "";
                    eFact_RN.Engine.GenerarNombreArch(out ArchGuardarComoNombre, "", NombreArchivo);
                    //--------------------------------------
                    //Procesar el archivo seleccionado.
                    try
                    {
                        eFact_Entidades.Lote lote = new eFact_Entidades.Lote();
                        eFact_RN.Archivo.Procesar(out lote, elem, Aplicacion, Aplicacion.Sesion);
                        //Agregar datos del proceso a la entidad Archivo
                        ArchGuardarComoNombre = "BAK-" + ArchGuardarComoNombre;
                        elem.NombreProcesado = ArchGuardarComoNombre;
                        elem.FechaProceso = DateTime.Now;
                        string handler = eFact_RN.Archivo.Insertar(elem, true, Aplicacion.Sesion);
                        //Ejecutar el insert local del "Lote".
                        CedEntidades.Evento evento = new CedEntidades.Evento();
                        evento.Id = "EnvBandSalida";
                        evento.Flow.IdFlow = "eFact";
                        evento.Flow.DescrFlow = "Facturación Electrónica";
                        Cedeira.SV.WF.LeerEvento(evento, Aplicacion.Sesion); 
                        lote.WF = Cedeira.SV.WF.Nueva("eFact", "FactServ", 0, "Facturacion Electrónica", Aplicacion.Sesion);
                        eFact_RN.Lote.VerificarEnviosPosteriores(true, lote.CuitVendedor, lote.NumeroLote, lote.PuntoVenta, lote.NumeroEnvio, Aplicacion.Sesion);
                        //Generar nombre de archivo procesado para ser enviado al histórico.
                        eFact_RN.Lote.Ejecutar(lote, evento, handler, Aplicacion, Aplicacion.Sesion);

                        //Leer el Lote procesado.
                        eFact_RN.Lote.Leer(lote, Aplicacion.Sesion);

                        //Enviar el Lote a IF.
                        EnviarAIF(lote);
                    }
                    catch (Exception ex)
                    {
                        Microsoft.ApplicationBlocks.ExceptionManagement.ExceptionManager.Publish(ex);
                        elem.Comentario = ex.Message;
                        if (ex.InnerException != null)
                        {
                            elem.Comentario += "\r\n" + ex.InnerException.Message;
                        }
                        if (ex.StackTrace != null)
                        {
                            string st = ex.StackTrace;
                            if (st.Length > 2000)
                            {
                                st = st.Substring(0, 2000);
                            }
                            elem.Comentario += "\r\n\r\n" + st;
                        }
                        //Agregar datos del proceso a la entidad Archivo
                        ArchGuardarComoNombre = "ERR-" + ArchGuardarComoNombre;
                        elem.NombreProcesado = ArchGuardarComoNombre;
                        elem.FechaProceso = DateTime.Now;
                        eFact_RN.Archivo.Insertar(elem, false, Aplicacion.Sesion);
                    }
                    
                    //Remover archivo ----------------------
                    Directory.Move(Aplicacion.ArchPath + "\\" + NombreArchivo, Aplicacion.ArchPathHis + ArchGuardarComoNombre);
                    //--------------------------------------

                    //Solo procesa un archivo y sale, para poder recibir posteriormente la respuesta AFIP. 
                    //Cuando se vuelve a iniciar el timer de servicio se ejecuta la funcion "ActualizarEstadoAFIPLotes()".
                    break;
                }
                if (EncontreArchivos)
                {
                    if (@System.Configuration.ConfigurationManager.AppSettings["ClearMemory"] == "SI")
                    {
                        Memory.ClearMemory();
                    }
                }
            }
            catch (Exception ex)
            {
                Microsoft.ApplicationBlocks.ExceptionManagement.ExceptionManager.Publish(ex);
            }
            finally
            {
                timer1.Start();
            }
        }