Пример #1
0
 public static void Alta(CedForecastEntidades.OrdenCompraInfoAlta OrdenCompraInfoAlta, CedEntidades.Sesion Sesion)
 {
     ValidacionAlta(OrdenCompraInfoAlta, Sesion);
     CedEntidades.WF wF = Cedeira.SV.WF.Nueva("OrdenCpra", "NA", 0, String.Empty, Sesion);
     CedEntidades.Evento eventoWF=new CedEntidades.Evento();
     eventoWF.Flow.IdFlow = wF.IdFlow;
     eventoWF.Id = "Alta";
     Cedeira.SV.WF.LeerEvento(eventoWF, Sesion);
     string handler = Cedeira.SV.WF.EjecutarEvento(wF, eventoWF, true);
     new CedForecastDB.OrdenCompra(Sesion).Alta(OrdenCompraInfoAlta, handler);
 }
Пример #2
0
 public static void CambioEstado(CedForecastEntidades.OrdenCompra OrdenCompraOriginal, CedForecastEntidades.OrdenCompra OrdenCompraModificada, CedEntidades.Sesion Sesion)
 {
     ValidacionCambioEstado(OrdenCompraOriginal, OrdenCompraModificada, Sesion);
     CedEntidades.Evento eventoWF = new CedEntidades.Evento();
     eventoWF.Flow.IdFlow = "OrdenCpra";
     eventoWF.Id = "CambioEst";
     Cedeira.SV.WF.LeerEvento(eventoWF, Sesion);
     eventoWF.IdEstadoHst.IdEstado = OrdenCompraModificada.WF.IdEstado;
     string handler = Cedeira.SV.WF.EjecutarEvento(OrdenCompraOriginal.WF, eventoWF, true);
     new CedForecastDB.OrdenCompra(Sesion).CambioEstado(OrdenCompraOriginal, OrdenCompraModificada, handler);
 }
Пример #3
0
 public static void Anulacion(List<CedForecastEntidades.OrdenCompra> OrdenesCompra, CedEntidades.Sesion Sesion)
 {
     CedEntidades.Evento eventoWF = new CedEntidades.Evento();
     eventoWF.Flow.IdFlow = "OrdenCpra";
     eventoWF.Id = "Anul";
     Cedeira.SV.WF.LeerEvento(eventoWF, Sesion);
     List<string> handlers = new List<string>();
     for (int i = 0; i < OrdenesCompra.Count; i++)
     {
         handlers.Add(Cedeira.SV.WF.EjecutarEvento(OrdenesCompra[i].WF, eventoWF, true));
     }
     new CedForecastDB.OrdenCompra(Sesion).Anulacion(handlers);
 }
Пример #4
0
 public static void IngresoADeposito(List<CedForecastEntidades.OrdenCompra> OrdenesCompra, CedForecastEntidades.OrdenCompraInfoIngresoADeposito InfoIngresoADeposito, CedEntidades.Sesion Sesion)
 {
     ValidacionIngresoADeposito(InfoIngresoADeposito, Sesion);
     CedEntidades.Evento eventoWF = new CedEntidades.Evento();
     eventoWF.Flow.IdFlow = "OrdenCpra";
     eventoWF.Id = "IngrADep";
     Cedeira.SV.WF.LeerEvento(eventoWF, Sesion);
     List<string> handlers = new List<string>();
     for (int i = 0; i < OrdenesCompra.Count; i++)
     {
         handlers.Add(Cedeira.SV.WF.EjecutarEvento(OrdenesCompra[i].WF, eventoWF, true));
     }
     new CedForecastDB.OrdenCompra(Sesion).IngresoADeposito(ListaOrdenesCompra(OrdenesCompra), InfoIngresoADeposito, handlers);
 }
Пример #5
0
 public static void RegistroDespacho(List<CedForecastEntidades.OrdenCompra> OrdenesCompra, CedForecastEntidades.OrdenCompraInfoRegistroDespacho InfoRegistroDespacho, CedEntidades.Sesion Sesion)
 {
     ValidacionRegistroDespacho(InfoRegistroDespacho, Sesion);
     CedEntidades.Evento eventoWF = new CedEntidades.Evento();
     eventoWF.Flow.IdFlow = "OrdenCpra";
     eventoWF.Id = "RegDesp";
     Cedeira.SV.WF.LeerEvento(eventoWF, Sesion);
     List<string> handlers = new List<string>();
     for (int i = 0; i < OrdenesCompra.Count; i++)
     {
         CedForecastEntidades.ArticuloInfoAdicional articuloInfoAdicional = new CedForecastEntidades.ArticuloInfoAdicional();
         articuloInfoAdicional.IdArticulo = OrdenesCompra[i].IdArticulo;
         CedForecastRN.ArticuloInfoAdicional.Leer(articuloInfoAdicional, Sesion);
         if (articuloInfoAdicional.IdRENAR == String.Empty)
         {
             eventoWF.IdEstadoHst.IdEstado = "PteIngrADep";
         }
         else
         {
             eventoWF.IdEstadoHst.IdEstado = "PteInspRenar";
         }
         handlers.Add(Cedeira.SV.WF.EjecutarEvento(OrdenesCompra[i].WF, eventoWF, true));
     } 
     new CedForecastDB.OrdenCompra(Sesion).RegistroDespacho(ListaOrdenesCompra(OrdenesCompra), InfoRegistroDespacho, handlers);
 }
Пример #6
0
 public static void Ejecutar(eFact_Entidades.Lote Lote, CedEntidades.Evento Evento, string Handler, eFact_Entidades.Aplicacion Aplicacion, CedEntidades.Sesion Sesion)
 {
     string handlerEvento = "";
     //VerificarAssemblyVersion();
     eFact_DB.Lote lote = new eFact_DB.Lote(Sesion);
     string nombreArchivoProcesado = "";
     switch (Lote.WF.IdFlow)
     {
         case "eFact":
             switch (Evento.Id)
             {
                 case "EnvBandSalida":
                     if (Lote.NumeroEnvio > 1)
                     { 
                         eFact_Entidades.Lote l = new eFact_Entidades.Lote();
                         l.CuitVendedor = Lote.CuitVendedor;
                         l.PuntoVenta = Lote.PuntoVenta;
                         l.NumeroLote = Lote.NumeroLote;
                         l.NumeroEnvio = Lote.NumeroEnvio - 1;
                         eFact_RN.Lote.Leer(l, Sesion);
                         //Busca el evento automático, para anular el envio anterior.
                         CedEntidades.Evento evento = l.WF.EventosPosibles.Find((delegate(CedEntidades.Evento e1) { return e1.Automatico == true && (e1.Id == "AnularRechIF" || e1.Id == "AnularCancel"); }));
                         handlerEvento = Cedeira.SV.WF.EjecutarEvento(l.WF, evento, true);
                         handlerEvento += " end ";
                     }
                     handlerEvento += Cedeira.SV.WF.EjecutarEvento(Lote.WF, Evento, true);
                     lote.Insertar(Lote, handlerEvento, Handler);
                     break;
                 case "EnvBandSalidaV":
                     handlerEvento += Cedeira.SV.WF.EjecutarEvento(Lote.WF, Evento, true);
                     lote.Insertar(Lote, handlerEvento, Handler);
                     break;
                 case "EnviarAIF":
                     handlerEvento += Cedeira.SV.WF.EjecutarEvento(Lote.WF, Evento, true);
                     lote.ActualizarFechaEnvio(Lote, handlerEvento);
                     break;
                 case "RegAceptAFIP":
                 case "RegActAFIP":
                     handlerEvento = Cedeira.SV.WF.EjecutarEvento(Lote.WF, Evento, true);
                     lote.ActualizarDatosCAE(Lote, handlerEvento);
                     if (Aplicacion.TipoItfAut == "XML")
                     {
                         GuardarItfXML(out nombreArchivoProcesado, Lote, "ROK", Aplicacion.ArchPathItfAut, true, false);
                     }
                     else if (Aplicacion.TipoItfAut == "TXT")
                     {
                         GuardarItfTXT(out nombreArchivoProcesado, Lote, "ROK", Aplicacion.ArchPathItfAut, true);
                     }
                     break;
                 case "RegAceptAFIPO":
                 case "RegActAFIPO":
                     handlerEvento = Cedeira.SV.WF.EjecutarEvento(Lote.WF, Evento, true);
                     lote.ActualizarDatosCAE(Lote, handlerEvento);
                     if (Aplicacion.TipoItfAut == "XML")
                     {
                         GuardarItfXML(out nombreArchivoProcesado, Lote, "ROO", Aplicacion.ArchPathItfAut, true, false);
                     }
                     else if (Aplicacion.TipoItfAut == "TXT")
                     {
                         GuardarItfTXT(out nombreArchivoProcesado, Lote, "ROO", Aplicacion.ArchPathItfAut, true);
                     }
                     break;
                 case "RegAceptAFIPP":
                 case "RegActAFIPP":
                     handlerEvento = Cedeira.SV.WF.EjecutarEvento(Lote.WF, Evento, true);
                     lote.ActualizarDatosCAE(Lote, handlerEvento);
                     if (Aplicacion.TipoItfAut == "XML")
                     {
                         GuardarItfXML(out nombreArchivoProcesado, Lote, "ROP", Aplicacion.ArchPathItfAut, true, false);
                     }
                     else if (Aplicacion.TipoItfAut == "TXT")
                     {
                         GuardarItfTXT(out nombreArchivoProcesado, Lote, "ROP", Aplicacion.ArchPathItfAut, true);
                     }
                     break;
                 case "RegContAFIP":
                 case "RegContAFIPO":
                 case "RegContAFIPP":
                     handlerEvento = Cedeira.SV.WF.EjecutarEvento(Lote.WF, Evento, true);
                     DataTable dt = lote.Insertar(Lote, handlerEvento, "");
                     Lote.IdLote = Convert.ToInt32(dt.Rows[0][0].ToString());
                     Leer(Lote, Sesion);
                     CedEntidades.Evento eventoAct = new CedEntidades.Evento();
                     eventoAct = Lote.WF.EventosPosibles[0];
                     handlerEvento = Cedeira.SV.WF.EjecutarEvento(Lote.WF, eventoAct, true);
                     lote.ActualizarDatosCAE(Lote, handlerEvento);
                     if (Aplicacion.TipoItfAut == "XML")
                     {
                         GuardarItfXML(out nombreArchivoProcesado, Lote, "ROK", Aplicacion.ArchPathItfAut, true, false);
                     }
                     else if (Aplicacion.TipoItfAut == "TXT")
                     {
                         GuardarItfTXT(out nombreArchivoProcesado, Lote, "ROK", Aplicacion.ArchPathItfAut, true);
                     }
                     break;
                 case "RegRechAFIP":
                     handlerEvento = Cedeira.SV.WF.EjecutarEvento(Lote.WF, Evento, true);
                     lote.ActualizarDatosError(Lote, handlerEvento);
                     if (Aplicacion.TipoItfAut == "XML")
                     {
                         GuardarItfXML(out nombreArchivoProcesado, Lote, "RAF", Aplicacion.ArchPathItfAut, true, false);
                     }
                     else if (Aplicacion.TipoItfAut == "TXT")
                     {
                         GuardarItfTXTlr(out nombreArchivoProcesado, Lote, "RAF", Aplicacion.ArchPathItfAut, true);
                     }
                     break;
                 case "RegRechIF":
                     handlerEvento = Cedeira.SV.WF.EjecutarEvento(Lote.WF, Evento, true);
                     lote.ActualizarDatosError(Lote, handlerEvento);
                     if (Aplicacion.TipoItfAut == "XML")
                     {
                         GuardarItfXML(out nombreArchivoProcesado, Lote, "RIF", Aplicacion.ArchPathItfAut, true, false);
                     }
                     else if (Aplicacion.TipoItfAut == "TXT")
                     {
                         GuardarItfTXTlr(out nombreArchivoProcesado, Lote, "RIF", Aplicacion.ArchPathItfAut, true);
                     }
                     break;
                 default:
                     Cedeira.SV.WF.EjecutarEvento(Lote.WF, Evento, false);
                     break;
             }
             break;
     }
 }
Пример #7
0
        public System.Collections.Generic.List<CedEntidades.Evento> WF_EventosXLotePosibles_qry(CedEntidades.WF Wf)
		{
			string a = "Select WF_Evento.*, WF_Flow.DescrFlow, EstadoDsd.DescrEstado as DescrEstadoDsd, EstadoHst.DescrEstado as DescrEstadoHst " +
				"from WF_Evento, WF_Flow, WF_Estado EstadoDsd, WF_Estado EstadoHst " +
                "where WF_Evento.IdFlow='" + Wf.IdFlow + "' and WF_Evento.IdEstadoDsd in ('" + Wf.IdEstado + "', '<Cualquiera>') " +
				"and WF_Evento.IdFlow=WF_Flow.IdFlow " +
				"and EstadoDsd.IdEstado=WF_Evento.IdEstadoDsd and EstadoHst.IdEstado=WF_Evento.IdEstadoHst " +
                "and WF_Evento.IdEvento in (select IdEvento from WF_EsquemaSeg where IdCircuito='" + Wf.IdCircuito + "' and IdFlow='" + Wf.IdFlow + "') " +
				"and WF_Evento.XLote=1 ";
			DataView dv = (DataView)Ejecutar(
				a,
				TipoRetorno.DV,
				Transaccion.NoAcepta,
				sesion.CnnStr);
            System.Collections.Generic.List<CedEntidades.Evento> eventosPos = new System.Collections.Generic.List<CedEntidades.Evento>();
            for (int i = 0; i < dv.Table.Rows.Count; i++)
            {
                CedEntidades.Evento evento = new CedEntidades.Evento();
                evento.Flow.IdFlow = Convert.ToString(dv.Table.Rows[i]["IdFlow"]);
                evento.Id = Convert.ToString(dv.Table.Rows[i]["IdEvento"]);
                evento.Descr = Convert.ToString(dv.Table.Rows[i]["DescrEvento"]);
                evento.TextoAccion = Convert.ToString(dv.Table.Rows[i]["TextoAccion"]);
                evento.IdEstadoDsd.IdEstado = Convert.ToString(dv.Table.Rows[i]["IdEstadoDsd"]);
                evento.IdEstadoHst.IdEstado = Convert.ToString(dv.Table.Rows[i]["IdEstadoHst"]);
                evento.Automatico = Convert.ToBoolean(dv.Table.Rows[i]["Automatico"]);
                evento.CXO = Convert.ToBoolean(dv.Table.Rows[i]["CXO"]);
                evento.XLote = Convert.ToBoolean(dv.Table.Rows[i]["XLote"]);
                evento.Flow.DescrFlow = Convert.ToString(dv.Table.Rows[i]["DescrFlow"]);
                evento.IdEstadoDsd.DescrEstado = Convert.ToString(dv.Table.Rows[i]["DescrEstadoDsd"]);
                evento.IdEstadoHst.DescrEstado = Convert.ToString(dv.Table.Rows[i]["DescrEstadoHst"]);
                eventosPos.Add(evento);
            }
            return eventosPos;

		}
Пример #8
0
        public System.Collections.Generic.List<CedEntidades.Evento> WF_EventosIniciales_qry(CedEntidades.WF Wf)
		{
            StringBuilder a=new StringBuilder(String.Empty);
            a.Append("select WF_Evento.*, WF_Flow.DescrFlow, EstadoHst.DescrEstado as DescrEstadoHst ");
            a.Append("from WF_Evento ");
            a.Append("inner join WF_Flow on WF_Evento.IdFlow=WF_Flow.IdFlow ");
            a.Append("left outer join WF_Estado EstadoHst on EstadoHst.IdEstado=WF_Evento.IdEstadoHst ");
            a.Append("where WF_Evento.IdFlow='" + Wf.IdFlow + "' and WF_Evento.IdEstadoDsd is null ");
 			DataView dv = (DataView)Ejecutar(
				a.ToString(),
				TipoRetorno.DV,
				Transaccion.NoAcepta,
				sesion.CnnStr);
            System.Collections.Generic.List<CedEntidades.Evento> eventosPos = new System.Collections.Generic.List<CedEntidades.Evento>();
            for (int i = 0; i < dv.Table.Rows.Count; i++)
            {
                CedEntidades.Evento evento = new CedEntidades.Evento();
                evento.Flow.IdFlow = Convert.ToString(dv.Table.Rows[i]["IdFlow"]);
                evento.Id = Convert.ToString(dv.Table.Rows[i]["IdEvento"]);
                evento.Descr = Convert.ToString(dv.Table.Rows[i]["DescrEvento"]);
                evento.TextoAccion = Convert.ToString(dv.Table.Rows[i]["TextoAccion"]);
                evento.IdEstadoDsd.IdEstado = Convert.ToString(dv.Table.Rows[i]["IdEstadoDsd"]);
                evento.IdEstadoHst.IdEstado = Convert.ToString(dv.Table.Rows[i]["IdEstadoHst"]);
                evento.Automatico = Convert.ToBoolean(dv.Table.Rows[i]["Automatico"]);
                evento.CXO = Convert.ToBoolean(dv.Table.Rows[i]["CXO"]);
                evento.XLote = Convert.ToBoolean(dv.Table.Rows[i]["XLote"]);
                evento.Flow.DescrFlow = Convert.ToString(dv.Table.Rows[i]["DescrFlow"]);
                evento.IdEstadoHst.DescrEstado = Convert.ToString(dv.Table.Rows[i]["DescrEstadoHst"]);
                eventosPos.Add(evento);
            }
            return eventosPos;
		}
Пример #9
0
 private void EjecutarEventoBandejaS(string IdEvento, string Comentario, eFact_Entidades.Lote lote)
 {
     CedEntidades.Evento evento = new CedEntidades.Evento();
     evento.Id = IdEvento;
     evento.Flow.IdFlow = "eFact";
     evento.Flow.DescrFlow = "Facturación Electrónica";
     evento.Comentario = Comentario;
     Cedeira.SV.WF.LeerEvento(evento, Aplicacion.Sesion);
     eFact_RN.Lote.VerificarEnviosPosteriores(false, lote.CuitVendedor, lote.NumeroLote, lote.PuntoVenta, lote.NumeroEnvio, eFact_R.Aplicacion.Sesion);
     eFact_RN.Lote.Ejecutar(lote, evento, "", Aplicacion.Aplic, Aplicacion.Sesion);
     RefreshBandejaSalida();
 }
Пример #10
0
 private void EnviarABandejaSButton_Click(object sender, EventArgs e)
 {
     Cursor = System.Windows.Forms.Cursors.WaitCursor;
     VerificarServicio();
     if (Aplicacion.Modalidad == "Automatica" && ServicioOK == true)
     {
         MessageBox.Show("No es posible enviar archivos a la bandeja de salida, mientras el Servicio-eFact se encuentre activo.", "ATENCIÓN", MessageBoxButtons.OK, MessageBoxIcon.Information);
         return;
     }
     EnviarABandejaSButton.Enabled = false;
     DescartarBandejaEButton.Enabled = false;
     try
     {
         if (BandejaEDataGridView.SelectedRows.Count != 0)
         {
             //Inicializar filtros para visualizar los archivos procesados.
             InicializarFiltrosTablero();
             for (int i = 0; i < BandejaEDataGridView.SelectedRows.Count; i++)
             {
                 int renglon = BandejaEDataGridView.SelectedRows[i].Index;
                 //Definir el nombre del archivo a guardar en el histórico como procesado, con o sin error.
                 //Mas adelante se le agraga el prefijo ( BAK o ERR ).
                 string NombreArchivo = dtBandejaEntrada[renglon].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, dtBandejaEntrada[renglon], Aplicacion.Aplic, Aplicacion.Sesion);
                     //Agregar datos del proceso a la entidad Archivo
                     ArchGuardarComoNombre = "BAK-" + ArchGuardarComoNombre;
                     dtBandejaEntrada[renglon].NombreProcesado = ArchGuardarComoNombre;
                     dtBandejaEntrada[renglon].FechaProceso = DateTime.Now;
                     string handler = eFact_RN.Archivo.Insertar(dtBandejaEntrada[renglon], true, Aplicacion.Sesion);
                     //Ejecutar el insert local del "Lote".
                     CedEntidades.Evento evento = new CedEntidades.Evento();
                     if (lote.IdNaturalezaLote == "")
                     {
                         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", "Fact", 0, "Facturacion Electrónica", Aplicacion.Sesion);
                     }
                     else
                     {
                         evento.Id = "EnvBandSalidaV";
                         evento.Flow.IdFlow = "eFact";
                         //evento.Flow.DescrFlow = "Comprobantes";
                         Cedeira.SV.WF.LeerEvento(evento, Aplicacion.Sesion);
                         lote.WF = Cedeira.SV.WF.Nueva("eFact", "Fact", 0, "Comprobantes", Aplicacion.Sesion);
                     }
                     eFact_RN.Lote.VerificarEnviosPosteriores(true, lote.CuitVendedor, lote.NumeroLote, lote.PuntoVenta, lote.NumeroEnvio, eFact_R.Aplicacion.Sesion);
                     //Generar nombre de archivo procesado para ser enviado al histórico.
                     eFact_RN.Lote.Ejecutar(lote, evento, handler, Aplicacion.Aplic, Aplicacion.Sesion);
                 }
                 catch (Exception ex)
                 {
                     Microsoft.ApplicationBlocks.ExceptionManagement.ExceptionManager.Publish(ex);
                     dtBandejaEntrada[renglon].Comentario = ex.Message;
                     if (ex.InnerException != null)
                     {
                         dtBandejaEntrada[renglon].Comentario += "\r\n" + ex.InnerException.Message;
                     }
                     //Agregar datos del proceso a la entidad Archivo
                     ArchGuardarComoNombre = "ERR-" + ArchGuardarComoNombre;
                     dtBandejaEntrada[renglon].NombreProcesado = ArchGuardarComoNombre;
                     dtBandejaEntrada[renglon].FechaProceso = DateTime.Now;
                     eFact_RN.Archivo.Insertar(dtBandejaEntrada[renglon], false, Aplicacion.Sesion);
                 }
                 //Remover archivo ----------------------
                 Directory.Move(Aplicacion.Aplic.ArchPath + "\\" + NombreArchivo, Aplicacion.Aplic.ArchPathHis + ArchGuardarComoNombre);
                 //--------------------------------------
             }
         }
     }
     catch (Exception ex2)
     {
         Microsoft.ApplicationBlocks.ExceptionManagement.ExceptionManager.Publish(ex2);
     }
     //Actualizar Bandeja de entrada.
     try
     {
         LimpiarBandejaEntrada();
         ActualizarBandejaE();
         RefreshBandejaSalida();
     }
     catch (Exception ex)
     {
         Microsoft.ApplicationBlocks.ExceptionManagement.ExceptionManager.Publish(ex);
     }
     finally
     {
         EnviarABandejaSButton.Enabled = true;
         DescartarBandejaEButton.Enabled = true;
         Cursor = System.Windows.Forms.Cursors.Default;
     }
 }
Пример #11
0
        private void BandejaSDataGridView_SelectionChanged(object sender, EventArgs e)
        {
            try
            {
                EventosComboBox.Enabled = false;
                switch (BandejaSDataGridView.SelectedRows.Count)
                {
                    case 0:
                        break;
                    case 1:
                        int renglon = BandejaSDataGridView.SelectedRows[0].Index;
                        List<CedEntidades.Evento> leventos = new List<CedEntidades.Evento>();
                        CedEntidades.Evento evento = new CedEntidades.Evento();
                        evento.Id = "(ElegirAccion)";
                        evento.Descr = "( Eligir una acción )";
                        leventos.Add(evento);
                        List<CedEntidades.Evento> leventosAux = dtBandejaSalida[renglon].WF.EventosPosibles.FindAll((delegate(CedEntidades.Evento e1) { return e1.Automatico == false; }));
                        leventos.AddRange(leventosAux);
                        EventosComboBox.DataSource = leventos;
                        EventosComboBox.DisplayMember = "Descr";
                        EventosComboBox.ValueMember = "Id";
                        //Armado de ComboBox con las opciones de exportar con respuesta IF.
                        ExportarItfComboBox.Items.Clear();
                        ExportarItfComboBox.Items.Add("( Elegir una opción para Exportar )");
                        ExportarItfComboBox.Items.Add("Exportar archivo original en formato TXT");
                        ExportarItfComboBox.Items.Add("Exportar archivo original en formato XML");
                        ExportarItfComboBox.Items.Add("Exportar archivo original en formato XML para subir a Interfacturas");
                        ExportarItfComboBox.SelectedIndex = 0;
                        if (dtBandejaSalida[renglon].WF.IdEstado == "AceptadoAFIP")
                        {
                            ExportarItfComboBox.Items.Add("Exportar archivo con respuesta AFIP en formato TXT");
                            ExportarItfComboBox.Items.Add("Exportar archivo con respuesta AFIP en formato XML");
                        }
                        break;
                    default:
                        ExportarItfComboBox.Items.Clear();
                        ExportarItfComboBox.Items.Add("( Elegir una opción para Exportar )");
                        ExportarItfComboBox.Items.Add("Exportar archivo original en formato TXT");
                        ExportarItfComboBox.Items.Add("Exportar archivo original en formato XML");
                        ExportarItfComboBox.Items.Add("Exportar archivo original en formato XML para subir a Interfacturas");
                        ExportarItfComboBox.SelectedIndex = 0;
                        ConfigBotonesEventosXLote();
                        break;
                }
            }
            catch (Exception ex)
            {
                Microsoft.ApplicationBlocks.ExceptionManagement.ExceptionManager.Publish(ex);
            }
            finally
            {
                EventosComboBox.Enabled = true;
                Cursor = System.Windows.Forms.Cursors.Default;
            }

        }
Пример #12
0
 private void ActualizarButton_Click(object sender, EventArgs e)
 {
     try
     {
         Cursor = System.Windows.Forms.Cursors.WaitCursor;
         if (modoActual == Modo.Contingencia)
         {
             //Verificar si el Lote se encuentra en el estado "AceptadoBCRA" en la aplicación, en ese caso
             //actualizar la info de CAE y el estadoIFoAFIP de cada comprobante. De lo contrario, 
             //incorporar el Lote con un evento de contingencia.
             if (lote.IdOp != 0)
             {
                 if (MessageBox.Show("Desea actualizar los datos del lote obtenidos de Interfacturas ?", "Contingencia", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
                 {
                     //Actualizar datos CAE y resultado/motivo
                     CedEntidades.Evento evento = new CedEntidades.Evento();
                     evento = lote.WF.EventosPosibles[0];
                     eFact_RN.Lote.Ejecutar(lote, evento, "", Aplicacion.Aplic, Aplicacion.Sesion);
                     MessageBox.Show("Lote actualizado satisfactoriamente.", "Contingencia", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                 }
             }
             else
             {
                 if (MessageBox.Show("Desea incorporar el lote obtenido de Interfacturas ?", "Contingencia", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
                 {
                     //Incorporar nuevo Lote por contingencia desde IF.
                     eFact_RN.Lote.Ejecutar(lote, eventoContingencia, "", Aplicacion.Aplic, Aplicacion.Sesion);
                     MessageBox.Show("Lote actualizado satisfactoriamente.", "Contingencia", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                 }
             }
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message, "Contingencia", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
     }
     finally
     {
         Cancelar();
         Cursor = System.Windows.Forms.Cursors.Default;
     }
 }
Пример #13
0
 private void ConsultarLoteIFButton_Click(object sender, EventArgs e)
 {
     try
     {
         Cursor = System.Windows.Forms.Cursors.WaitCursor;
         NumeroLoteTextBox.ReadOnly = true;
         CuitVendedorTextBox.ReadOnly = true;
         PuntoVentaTextBox.ReadOnly = true;
         FeaEntidades.InterFacturas.lote_comprobantes Lc = new FeaEntidades.InterFacturas.lote_comprobantes();
         eFact_RN.IBK.error[] respErroresLote = new eFact_RN.IBK.error[0];
         eFact_RN.IBK.error[] respErroresComprobantes = new eFact_RN.IBK.error[0];
         eFact_Entidades.Vendedor v = Aplicacion.Vendedores.Find(delegate(eFact_Entidades.Vendedor e1) { return e1.CuitVendedor == CuitVendedorTextBox.Text; });
         if (v == null)
         {
             throw new Microsoft.ApplicationBlocks.ExceptionManagement.Vendedor.Inexistente("CUIT " + CuitVendedorTextBox.Text);
         }
         if (modoActual == Modo.Contingencia)
         {
             lote = new eFact_Entidades.Lote();
             if (NumeroLoteTextBox.Text == "")
             {
                 throw new Microsoft.ApplicationBlocks.ExceptionManagement.Validaciones.ValorNoInfo("Número de lote");
             }
             if (!(Cedeira.SV.Fun.IsNumeric(NumeroLoteTextBox.Text)))
             {
                 throw new Microsoft.ApplicationBlocks.ExceptionManagement.Validaciones.ValorInvalido("Número de lote");
             }
             lote.NumeroLote = NumeroLoteTextBox.Text;
             if (CuitVendedorTextBox.Text == "")
             {
                 throw new Microsoft.ApplicationBlocks.ExceptionManagement.Validaciones.ValorNoInfo("Cuit vendedor");
             }
             if (!(Cedeira.SV.Fun.IsNumeric(CuitVendedorTextBox.Text)))
             {
                 throw new Microsoft.ApplicationBlocks.ExceptionManagement.Validaciones.ValorInvalido("Cuit vendedor");
             }
             lote.CuitVendedor = CuitVendedorTextBox.Text;
             if (PuntoVentaTextBox.Text == "")
             {
                 throw new Microsoft.ApplicationBlocks.ExceptionManagement.Validaciones.ValorNoInfo("Punto de Venta");
             }
             if (!(Cedeira.SV.Fun.IsNumeric(PuntoVentaTextBox.Text)))
             {
                 throw new Microsoft.ApplicationBlocks.ExceptionManagement.Validaciones.ValorInvalido("Punto de Venta");
             }
             lote.PuntoVenta = PuntoVentaTextBox.Text;
             eFact_RN.Lote.ConsultarLoteIF(out Lc, out respErroresLote, out respErroresComprobantes, lote, v.NumeroSerieCertificado.ToString());
             
             //Verificar si existe en la base de datos como AceptadaAFIP
             eFact_Entidades.Lote loteAceptadoAFIP = new eFact_Entidades.Lote();
             List<eFact_Entidades.Lote> lotes = new List<eFact_Entidades.Lote>();
             eFact_RN.Lote.Consultar(out lotes, eFact_Entidades.Lote.TipoConsulta.SinAplicarFechas, DateTime.Today, DateTime.Today, CuitVendedorTextBox.Text, NumeroLoteTextBox.Text, PuntoVentaTextBox.Text, false, Aplicacion.Sesion);
             loteAceptadoAFIP = lotes.Find(delegate(eFact_Entidades.Lote e1) { return e1.IdEstado == "AceptadoAFIP" || e1.IdEstado == "AceptadoAFIPO" || e1.IdEstado == "AceptadoAFIPP"; });
             if (loteAceptadoAFIP != null && loteAceptadoAFIP.IdOp != 0)
             {
                 //Verificar si cambio el XML de respuesta
                 string loteXml = "";
                 eFact_RN.Lote.SerializarLc(out loteXml, Lc);
                 if (!(loteAceptadoAFIP.LoteXmlIF.Equals(loteXml)))
                 {
                     MessageBox.Show("El XML de respuesta actual, difiere del XML de respuesta obtenido en esta consulta. Si actualiza los datos, quedará registrado este último XML de respuesta.", "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                 }
                 lote = loteAceptadoAFIP;
                 lote.LoteXmlIF = loteXml;
                 for (int i = 0; i < lote.Comprobantes.Count; i++)
                 {
                     if (Lc.comprobante[i].cabecera.informacion_comprobante.cae != null)
                     {
                         lote.Comprobantes[i].NumeroCAE = Lc.comprobante[i].cabecera.informacion_comprobante.cae;
                         lote.Comprobantes[i].FechaCAE = eFact_RN.Archivo.ConvertirStringToDateTime(Lc.comprobante[i].cabecera.informacion_comprobante.fecha_obtencion_cae.Trim());
                         lote.Comprobantes[i].FechaVtoCAE = eFact_RN.Archivo.ConvertirStringToDateTime(Lc.comprobante[i].cabecera.informacion_comprobante.fecha_vencimiento_cae.Trim());
                     }
                     lote.Comprobantes[i].EstadoIFoAFIP = Lc.comprobante[i].cabecera.informacion_comprobante.resultado;
                     lote.Comprobantes[i].ComentarioIFoAFIP = Lc.comprobante[i].cabecera.informacion_comprobante.motivo;
                 }
             }
             else
             {
                 eFact_RN.Lote.Lc2Lote(out lote, Lc, Aplicacion.Aplic, Aplicacion.Sesion);
                 eventoContingencia = new CedEntidades.Evento();
                 CedEntidades.Flow flow = new CedEntidades.Flow();
                 flow.IdFlow = "eFact";
                 eventoContingencia.Flow = flow;
                 string resultado = "";
                 string resultadoTexto = "";
                 if (Lc.cabecera_lote.resultado != null && Lc.cabecera_lote.resultado.ToString().Trim() != "")
                 {
                     resultado = Lc.cabecera_lote.resultado.ToString();
                     resultadoTexto = "\r\nEl lote consultado se encuentra en estado: " + Lc.cabecera_lote.resultado.ToString();
                 }
                 switch (resultado)
                 {
                     case "A":
                         eventoContingencia.Id = "RegContAFIP";
                         break;
                     case "O":
                         eventoContingencia.Id = "RegContAFIPO";
                         break;
                     case "P":
                         eventoContingencia.Id = "RegContAFIPP";
                         break;
                     default:
                         throw new Microsoft.ApplicationBlocks.ExceptionManagement.Validaciones.Lote.EstadoNoPermitido("Solo es posible operar en contingencia con lotes Aceptados por AFIP." + resultadoTexto);
                 }
                 Cedeira.SV.WF.LeerEvento(eventoContingencia, Aplicacion.Sesion);
                 lote.WF.EventosPosibles.Clear();
                 lote.WF.EventosPosibles.Add(eventoContingencia);
             }
             lote.WF.EsquemaSegEventosPosibles = Cedeira.SV.WF.EsquemaSegEventosPosibles(lote.WF);
             eFact_RN.Lote.MuestroEsquemaSegEventosPosibles(EsquemaSegEventosPosiblesTreeView, lote);
             BindingControles();
             DetalleLoteDataGridView.AutoGenerateColumns = false;
             DetalleLoteDataGridView.DataSource = new List<eFact_Entidades.Comprobante>();
             DetalleLoteDataGridView.DataSource = lote.Comprobantes;
             CancelarButton.Visible = true;
             ActualizarButton.Visible = true;
             ConsultarLoteIFButton.Enabled = false;
         }
         else
         {
             eFact_RN.Lote.ConsultarLoteIF(out Lc, out respErroresLote, out respErroresComprobantes, lote, v.NumeroSerieCertificado.ToString());
             MessageBox.Show("Lote de comprobantes número " + lote.NumeroLote + " encontrado satisfactoriamente en Interfacturas.", "Consulta de Lotes", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message, "Consulta de Lotes", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
         if (modoActual == Modo.Contingencia)
         {
             Cancelar();
         }
     }
     finally
     {
         Cursor = System.Windows.Forms.Cursors.Default;
     }
 }
Пример #14
0
 public EventoReferencia(CedEntidades.Evento Evento)
 {
     evento = Evento;
 }
Пример #15
0
 public static void ActualizacionInfoEmbarque(CedForecastEntidades.OrdenCompra OrdenCompra, CedForecastEntidades.OrdenCompraInfoEmbarque InfoEmbarque, CedEntidades.Sesion Sesion)
 {
     CedEntidades.Evento eventoWF = new CedEntidades.Evento();
     if ((OrdenCompra.IdReferenciaSAP != InfoEmbarque.IdReferenciaSAP) ||
         (OrdenCompra.Vapor != InfoEmbarque.Vapor) ||
         (OrdenCompra.FechaEstimadaSalida != InfoEmbarque.FechaEstimadaSalida) ||
         (OrdenCompra.FechaEstimadaArribo != InfoEmbarque.FechaEstimadaArribo))
     {
         eventoWF.Flow.IdFlow = "OrdenCpra";
         eventoWF.Id = "ActInfoEmb";
         Cedeira.SV.WF.LeerEvento(eventoWF, Sesion);
         List<string> handlers = new List<string>();
         string handler = Cedeira.SV.WF.EjecutarEvento(OrdenCompra.WF, eventoWF, true);
         new CedForecastDB.OrdenCompra(Sesion).ActualizacionInfoEmbarque(OrdenCompra, InfoEmbarque, handler);
     }
 }
Пример #16
0
 public System.Collections.Generic.List<CedEntidades.Evento> WF_EventosXLote_qry(string IdFlow)
 {
     StringBuilder a = new StringBuilder(String.Empty);
     a.Append("select * ");
     a.Append("from WF_Evento ");
     a.Append("where WF_Evento.IdFlow='" + IdFlow + "' ");
     DataView dv = (DataView)Ejecutar(
         a.ToString(),
         TipoRetorno.DV,
         Transaccion.NoAcepta,
         sesion.CnnStr);
     System.Collections.Generic.List<CedEntidades.Evento> eventosXLote = new System.Collections.Generic.List<CedEntidades.Evento>();
     for (int i = 0; i < dv.Table.Rows.Count; i++)
     {
         if (Convert.ToBoolean(dv.Table.Rows[i]["XLote"]))
         {
             CedEntidades.Evento evento = new CedEntidades.Evento();
             evento.Flow.IdFlow = Convert.ToString(dv.Table.Rows[i]["IdFlow"]);
             evento.Id = Convert.ToString(dv.Table.Rows[i]["IdEvento"]);
             evento.Descr = Convert.ToString(dv.Table.Rows[i]["DescrEvento"]);
             evento.TextoAccion = Convert.ToString(dv.Table.Rows[i]["TextoAccion"]);
             evento.IdEstadoDsd.IdEstado = Convert.ToString(dv.Table.Rows[i]["IdEstadoDsd"]);
             evento.IdEstadoHst.IdEstado = Convert.ToString(dv.Table.Rows[i]["IdEstadoHst"]);
             evento.Automatico = Convert.ToBoolean(dv.Table.Rows[i]["Automatico"]);
             evento.CXO = Convert.ToBoolean(dv.Table.Rows[i]["CXO"]);
             evento.XLote = Convert.ToBoolean(dv.Table.Rows[i]["XLote"]);
             eventosXLote.Add(evento);
         }
     }
     return eventosXLote;
 }
Пример #17
0
 private void InicializarEventosComboBox(out List<CedEntidades.Evento> EventosXLote)
 {
     List<CedEntidades.Evento> eventosXLote = new List<CedEntidades.Evento>();
     CedEntidades.Evento evento = new CedEntidades.Evento();
     evento.Id = "(ElegirAccion)";
     evento.Descr = "( Eligir una acción )";
     eventosXLote.Add(evento);
     EventosComboBox.DisplayMember = "Descr"; //TextoAccion + " todas las seleccionadas"
     EventosComboBox.ValueMember = "Id";
     EventosComboBox.DataSource = eventosXLote;
     EventosComboBox.SelectedIndex = 0;
     EventosXLote = eventosXLote;
 }
Пример #18
0
		public List<CedEntidades.Evento> WF_EventosIniciales_qry()
		{
			DataView dv = (DataView)Ejecutar(
				"select IdFlow+'-'+IdEvento as IdEventoInicial, IdFlow+'-'+DescrEvento as DescrEventoInicial from WF_Evento where IdEstadoDsd is null",
				TipoRetorno.DV,
				Transaccion.NoAcepta,
				sesion.CnnStr);
			List<CedEntidades.Evento> eventosInic = new List<CedEntidades.Evento>();
			for (int i = 0; i < dv.Table.Rows.Count; i++)
			{
				CedEntidades.Evento e = new CedEntidades.Evento();
				e.Id = Convert.ToString(dv.Table.Rows[i]["IdEvento"]);
				e.Descr = Convert.ToString(dv.Table.Rows[i]["DescrEventoInicial"]);
				eventosInic.Add(e);
			}
			return eventosInic;
		}
Пример #19
0
 public static void RecepcionDocumentos(List<CedForecastEntidades.OrdenCompra> OrdenesCompra, CedForecastEntidades.OrdenCompraInfoRecepcionDocumentos InfoRecepcionDocumentos, CedEntidades.Sesion Sesion)
 {
     ValidacionRecepcionDocumentos(InfoRecepcionDocumentos, Sesion);
     CedEntidades.Evento eventoWF = new CedEntidades.Evento();
     eventoWF.Flow.IdFlow = "OrdenCpra";
     eventoWF.Id = "RecepDocs";
     Cedeira.SV.WF.LeerEvento(eventoWF, Sesion);
     List<string> handlers = new List<string>();
     for (int i = 0; i < OrdenesCompra.Count; i++)
     {
         handlers.Add(Cedeira.SV.WF.EjecutarEvento(OrdenesCompra[i].WF, eventoWF, true));
     } 
     new CedForecastDB.OrdenCompra(Sesion).RecepcionDocumentos(ListaOrdenesCompra(OrdenesCompra), InfoRecepcionDocumentos, handlers);
 }
Пример #20
0
 private void Copiar(DataSet ds, int NroRowPpal, eFact_Entidades.Lote Hasta)
 {
     DataRow Desde;
     Desde = ds.Tables[0].Rows[NroRowPpal];
     Hasta.IdLote = Convert.ToInt32(Desde["IdLote"]);
     Hasta.CuitVendedor = Convert.ToString(Desde["CuitVendedor"]);
     Hasta.PuntoVenta = Convert.ToString(Desde["PuntoVenta"]);
     Hasta.NumeroLote = Convert.ToString(Desde["NumeroLote"]);
     Hasta.NumeroEnvio = Convert.ToInt32(Desde["NumeroEnvio"]);
     Hasta.IdOp = Convert.ToInt32(Desde["IdOp"]);
     Hasta.FechaAlta = Convert.ToDateTime(Desde["FechaAlta"]);
     if (Desde["FechaEnvio"].ToString() == "")
     {
         Desde["FechaEnvio"] = "31/12/9998";
     }
     Hasta.FechaEnvio = Convert.ToDateTime(Desde["FechaEnvio"]);
     Hasta.NombreArch = Convert.ToString(Desde["NombreArch"]);
     Hasta.CantidadRegistros = Convert.ToInt32(Desde["CantidadRegistros"]);
     Hasta.LoteXml = Convert.ToString(Desde["LoteXml"]);
     Hasta.LoteXmlIF = Convert.ToString(Desde["LoteXmlIF"]);
     Hasta.IdNaturalezaLote = Convert.ToString(Desde["IdNaturalezaLote"]);
     Hasta.WF = new CedEntidades.WF();
     Hasta.WF.IdOp = Convert.ToInt32(Desde["IdOp"]);
     Hasta.WF.IdFlow = Convert.ToString(Desde["IdFlow"]);
     Hasta.WF.DescrFlow = Convert.ToString(Desde["DescrFlow"]);
     Hasta.WF.IdCircuito = Convert.ToString(Desde["IdCircuito"]);
     Hasta.WF.IdCircuitoOrig = Hasta.WF.IdCircuito;
     Hasta.WF.DescrCircuito = Convert.ToString(Desde["DescrCircuito"]);
     Hasta.WF.IdNivSeg = Convert.ToInt32(Desde["IdNivSeg"]);
     Hasta.WF.DescrNivSeg = Convert.ToString(Desde["DescrNivSeg"]);
     Hasta.WF.DescrOp = Convert.ToString(Desde["DescrOp"]);
     Hasta.WF.IdEstado = Convert.ToString(Desde["IdEstado"]);
     Hasta.WF.UltActualiz = Cedeira.SV.db.ByteArray2TimeStamp((byte[])Desde["UltActualiz"]);
     Hasta.WF.DescrEstado = Convert.ToString(Desde["DescrEstado"]);
     Hasta.WF.Sesion = sesion;
     //Comprobantes
     DataRow[] dr = ds.Tables[1].Select("IdLote = " + Convert.ToInt32(Hasta.IdLote));
     Hasta.Comprobantes = new List<eFact_Entidades.Comprobante>();
     for (int i = 0; i < dr.Length; i++)
     {
         eFact_Entidades.Comprobante c = new eFact_Entidades.Comprobante();
         c.IdLote = Convert.ToInt32(dr[i]["IdLote"]);
         c.IdTipoComprobante = Convert.ToInt16(dr[i]["IdTipoComprobante"]);
         c.NumeroComprobante = Convert.ToString(dr[i]["NumeroComprobante"]);
         c.IdMoneda = Convert.ToString(dr[i]["IdMoneda"]);
         c.Importe = Convert.ToDecimal(dr[i]["Importe"]);
         c.NroDocComprador = Convert.ToString(dr[i]["NroDocComprador"]);
         c.TipoDocComprador = Convert.ToInt16(dr[i]["TipoDocComprador"]);
         c.NombreComprador = Convert.ToString(dr[i]["NombreComprador"]);
         c.Fecha= Convert.ToDateTime(dr[i]["Fecha"]);
         c.NumeroCAE = Convert.ToString(dr[i]["NumeroCAE"]);
         if (dr[i]["FechaCAE"].ToString() == "")
         {
             dr[i]["FechaCAE"] = "31/12/9998";
         }
         c.FechaCAE = Convert.ToDateTime(dr[i]["FechaCAE"]);
         if (dr[i]["FechaVtoCAE"].ToString() == "")
         {
             dr[i]["FechaVtoCAE"] = "31/12/9998";
         }
         c.FechaVtoCAE = Convert.ToDateTime(dr[i]["FechaVtoCAE"]);
         if (dr[i]["ImporteMonedaOrigen"].ToString() != "")
         {
             c.ImporteMonedaOrigen = Convert.ToDecimal(dr[i]["ImporteMonedaOrigen"]);
         }
         if (dr[i]["ImporteMonedaOrigen"].ToString() != "")
         {
             c.TipoCambio = Convert.ToDecimal(dr[i]["TipoCambio"]);
         }
         if (dr[i]["EstadoIFoAFIP"].ToString() != "")
         {
             c.EstadoIFoAFIP = Convert.ToString(dr[i]["EstadoIFoAFIP"]);
         }
         if (dr[i]["ComentarioIFoAFIP"].ToString() != "")
         {
             c.ComentarioIFoAFIP = Convert.ToString(dr[i]["ComentarioIFoAFIP"]);
         }
         Hasta.Comprobantes.Add(c);
     }
     //ComprobantesC (Compras)
     dr = ds.Tables[2].Select("IdLote = " + Convert.ToInt32(Hasta.IdLote));
     Hasta.ComprobantesC = new List<eFact_Entidades.ComprobanteC>();
     for (int i = 0; i < dr.Length; i++)
     {
         eFact_Entidades.ComprobanteC cC = new eFact_Entidades.ComprobanteC();
         cC.IdLote = Convert.ToInt32(dr[i]["IdLote"]);
         cC.PuntoVenta = Convert.ToString(dr[i]["PuntoVenta"]);
         cC.IdTipoComprobante = Convert.ToInt16(dr[i]["IdTipoComprobante"]);
         cC.NumeroComprobante = Convert.ToString(dr[i]["NumeroComprobante"]);
         cC.IdMoneda = Convert.ToString(dr[i]["IdMoneda"]);
         cC.Importe = Convert.ToDecimal(dr[i]["Importe"]);
         cC.NroDocVendedor = Convert.ToString(dr[i]["NroDocVendedor"]);
         cC.TipoDocVendedor = Convert.ToInt16(dr[i]["TipoDocVendedor"]);
         cC.NombreVendedor = Convert.ToString(dr[i]["NombreVendedor"]);
         cC.Fecha = Convert.ToDateTime(dr[i]["Fecha"]);
         if (dr[i]["ImporteMonedaOrigen"].ToString() != "")
         {
             cC.ImporteMonedaOrigen = Convert.ToDecimal(dr[i]["ImporteMonedaOrigen"]);
         }
         if (dr[i]["ImporteMonedaOrigen"].ToString() != "")
         {
             cC.TipoCambio = Convert.ToDecimal(dr[i]["TipoCambio"]);
         }
         Hasta.ComprobantesC.Add(cC);
     }
     //ComprobantesC (Compras - Despachos de Impotación)
     dr = ds.Tables[3].Select("IdLote = " + Convert.ToInt32(Hasta.IdLote));
     Hasta.ComprobantesD = new List<eFact_Entidades.ComprobanteD>();
     for (int i = 0; i < dr.Length; i++)
     {
         eFact_Entidades.ComprobanteD cD = new eFact_Entidades.ComprobanteD();
         cD.IdLote = Convert.ToInt32(dr[i]["IdLote"]);
         cD.IdTipoComprobante = Convert.ToInt16(dr[i]["IdTipoComprobante"]);
         cD.NumeroDespacho = Convert.ToString(dr[i]["NumeroDespacho"]);
         cD.NroDocVendedor = Convert.ToString(dr[i]["NroDocVendedor"]);
         cD.TipoDocVendedor = Convert.ToInt16(dr[i]["TipoDocVendedor"]);
         cD.NombreVendedor = Convert.ToString(dr[i]["NombreVendedor"]);
         cD.Fecha = Convert.ToDateTime(dr[i]["Fecha"]);
         cD.IdMoneda = Convert.ToString(dr[i]["IdMoneda"]);
         cD.Importe = Convert.ToDecimal(dr[i]["Importe"]);
         //if (dr[i]["ImporteMonedaOrigen"].ToString() != "")
         //{
         //    cD.ImporteMonedaOrigen = Convert.ToDecimal(dr[i]["ImporteMonedaOrigen"]);
         //}
         //if (dr[i]["ImporteMonedaOrigen"].ToString() != "")
         //{
         //    cD.TipoCambio = Convert.ToDecimal(dr[i]["TipoCambio"]);
         //}
         Hasta.ComprobantesD.Add(cD);
     }
     //WF
     dr = ds.Tables[4].Select("IdLote = " + Convert.ToInt32(Hasta.IdLote));
     Hasta.WF.Log = new List<CedEntidades.Log>();
     for (int i = 0; i < dr.Length; i++)
     {
         CedEntidades.Log l = new CedEntidades.Log();
         l.Circuito.IdCircuito = Convert.ToString(dr[i]["IdCircuito"]);
         l.Comentario = Convert.ToString(dr[i]["Comentario"]);
         l.Estado = Convert.ToString(dr[i]["Estado"]);
         l.Evento.Id = Convert.ToString(dr[i]["IdEvento"]);
         l.Evento.Descr = Convert.ToString(dr[i]["Evento"]);
         l.Fecha = Convert.ToDateTime(dr[i]["Fecha"]);
         l.Flow.IdFlow = Convert.ToString(dr[i]["IdFlow"]);
         l.Grupo.Id = Convert.ToString(dr[i]["IdGrupo"]);
         l.Grupo.Descr = Convert.ToString(dr[i]["DescrGrupo"]);
         l.IdLog = Convert.ToInt32(dr[i]["IdLog"]);
         l.IdNivSeg = Convert.ToInt32(dr[i]["IdNivSeg"]);
         l.Responsable = Convert.ToString(dr[i]["Responsable"]);
         l.Supervisor = Convert.ToBoolean(dr[i]["Supervisor"]);
         l.SupervisorNivel = Convert.ToByte(dr[i]["SupervisorNivel"]);
         l.Usuario.IdUsuario = Convert.ToString(dr[i]["IdUsuario"]);
         l.Usuario.Nombre = Convert.ToString(dr[i]["Nombre"]);
         Hasta.WF.Log.Add(l);
     }
     dr = ds.Tables[5].Select("IdLote = " + Convert.ToInt32(Hasta.IdLote));
     Hasta.WF.EventosPosibles = new List<CedEntidades.Evento>();
     for (int i = 0; i < dr.Length; i++)
     {
         CedEntidades.Evento evento = new CedEntidades.Evento();
         evento.Flow.IdFlow = Convert.ToString(dr[i]["IdFlow"]);
         evento.Id = Convert.ToString(dr[i]["IdEvento"]);
         evento.Descr = Convert.ToString(dr[i]["DescrEvento"]);
         evento.TextoAccion = Convert.ToString(dr[i]["TextoAccion"]);
         evento.IdEstadoDsd.IdEstado = Convert.ToString(dr[i]["IdEstadoDsd"]);
         evento.IdEstadoHst.IdEstado = Convert.ToString(dr[i]["IdEstadoHst"]);
         evento.Automatico = Convert.ToBoolean(dr[i]["Automatico"]);
         evento.CXO = Convert.ToBoolean(dr[i]["CXO"]);
         evento.XLote = Convert.ToBoolean(dr[i]["XLote"]);
         evento.Flow.DescrFlow = Convert.ToString(dr[i]["DescrFlow"]);
         evento.IdEstadoDsd.DescrEstado = Convert.ToString(dr[i]["DescrEstadoDsd"]);
         evento.IdEstadoHst.DescrEstado = Convert.ToString(dr[i]["DescrEstadoHst"]);
         Hasta.WF.EventosPosibles.Add(evento);
     }
     dr = ds.Tables[6].Select("IdLote = " + Convert.ToInt32(Hasta.IdLote));
     Hasta.WF.EventosXLotePosibles = new List<CedEntidades.Evento>();
     for (int i = 0; i < dr.Length; i++)
     {
         CedEntidades.Evento evento = new CedEntidades.Evento();
         evento.Flow.IdFlow = Convert.ToString(dr[i]["IdFlow"]);
         evento.Id = Convert.ToString(dr[i]["IdEvento"]);
         evento.Descr = Convert.ToString(dr[i]["DescrEvento"]);
         evento.TextoAccion = Convert.ToString(dr[i]["TextoAccion"]);
         evento.IdEstadoDsd.IdEstado = Convert.ToString(dr[i]["IdEstadoDsd"]);
         evento.IdEstadoHst.IdEstado = Convert.ToString(dr[i]["IdEstadoHst"]);
         evento.Automatico = Convert.ToBoolean(dr[i]["Automatico"]);
         evento.CXO = Convert.ToBoolean(dr[i]["CXO"]);
         evento.XLote = Convert.ToBoolean(dr[i]["XLote"]);
         evento.Flow.DescrFlow = Convert.ToString(dr[i]["DescrFlow"]);
         evento.IdEstadoDsd.DescrEstado = Convert.ToString(dr[i]["DescrEstadoDsd"]);
         evento.IdEstadoHst.DescrEstado = Convert.ToString(dr[i]["DescrEstadoHst"]);
         Hasta.WF.EventosXLotePosibles.Add(evento);
     }
 }
Пример #21
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();
            }
        }