private void btnSincronizar_Click(object sender, EventArgs e) { this.tmrMigracion.Enabled = false; this.btnSincronizar.Enabled = false; this.stlMensaje.Text = string.Empty; try { DateTime recepcion = this.ultimaFecha; var lstBeConfiguracion = new List <BE.Configuracion>(); if (this.cboSociedades.SelectedIndex == 0) { lstBeConfiguracion = new BD.Configuracion().Listar(); } else { var beEmpresa = (BE.Empresa) this.cboSociedades.SelectedItem; var beConfiguracion = new BD.Configuracion().Obtener(beEmpresa); if (beConfiguracion != null) { lstBeConfiguracion.Add(beConfiguracion); } else { General.CriticalMessage("La sociedad seleccionada no tiene configuración"); return; } } foreach (var beConfiguracion in lstBeConfiguracion) { #region Obtener Datos de WS this.stlMensaje.Text = $"Obteniendo los datos de la sociedad { beConfiguracion.Empresa.Nombre } del Servicio Web"; bool existeDatosSalida = false; bool existeDatosEntrada = false; bool existeDatosSolicitud = false; int idEmpresa = beConfiguracion.Empresa.Id; var tasksWs = new[] { Task <bool> .Factory.StartNew(() => ObtenerSalidasWs(recepcion, idEmpresa)), Task <bool> .Factory.StartNew(() => ObtenerEntradasWs(recepcion, idEmpresa)), Task <bool> .Factory.StartNew(() => ObtenerSolicitudesWs(recepcion, idEmpresa)) }; try { Task.WaitAll(tasksWs); } catch (AggregateException exTask) { throw exTask.Flatten(); } existeDatosSalida = tasksWs[0].Result; existeDatosEntrada = tasksWs[1].Result; existeDatosSolicitud = tasksWs[2].Result; #endregion #region Registrar Datos en BD this.stlMensaje.Text = $"Guardando los datos de la sociedad { beConfiguracion.Empresa.Nombre }"; bool registraDatosSalida = false; bool registraDatosEntrada = false; bool registraDatosSolicitud = false; var bdSap = new BD.Sap(beConfiguracion.Servidor, beConfiguracion.BaseDatos, beConfiguracion.UsuarioBD, beConfiguracion.ClaveBD); var tasksBd = new[] { Task <bool> .Factory.StartNew(() => RegistrarSalidaBD(ref bdSap, beConfiguracion.Empresa)), Task <bool> .Factory.StartNew(() => RegistrarEntradaBD(ref bdSap, beConfiguracion.Empresa)), Task <bool> .Factory.StartNew(() => RegistrarSolicitudBD(ref bdSap, beConfiguracion.Empresa)) }; try { Task.WaitAll(tasksBd); } catch (AggregateException exTask) { throw exTask.Flatten(); } registraDatosSalida = tasksBd[0].Result; registraDatosEntrada = tasksBd[1].Result; registraDatosSolicitud = tasksBd[2].Result; #endregion #region Enviar Datos a SAP this.stlMensaje.Text = $"Enviado los datos de la sociedad { beConfiguracion.Empresa.Nombre } al SAP"; #region Conectar a SAP string server = beConfiguracion.Servidor; string licenseServer = beConfiguracion.LicenciaSAP; string companyDB = beConfiguracion.BaseDatos; string dbUserName = beConfiguracion.UsuarioBD; string dbPassword = beConfiguracion.ClaveBD; string userName = beConfiguracion.UsuarioSAP; string password = beConfiguracion.ClaveSAP; var diConexion = new DI.DiConexion(server, licenseServer, companyDB, dbUserName, dbPassword, userName, password); #endregion var tasksSap = new[] { Task.Factory.StartNew(() => EnviarSalidasSap(ref diConexion, beConfiguracion.Empresa)), Task.Factory.StartNew(() => EnviarEntradasSap(ref diConexion, beConfiguracion.Empresa)), Task.Factory.StartNew(() => EnviarSolicitudesSap(ref diConexion, beConfiguracion.Empresa)) }; Task.WaitAll(tasksSap); #region Desconectar a SAP diConexion.Desconectar(); diConexion.Dispose(); #endregion #endregion } this.stlMensaje.Text = "Sincronización Completada"; this.ObtenerUltimaSincronizacion(); this.CargarDocumentosError(); } catch (Exception ex) { General.ErrorMessage(ex.Message); } finally { this.btnSincronizar.Enabled = true; this.tmrMigracion.Enabled = true; } }
private void btnEnviar_Click(object sender, EventArgs e) { try { this.btnEnviar.Enabled = false; this.stlMensaje.Text = string.Empty; if (this.dgvDocumentosError.CurrentRow == null) { return; } var uiDocumento = (Documento)this.dgvDocumentosError.CurrentRow.DataBoundItem; if (uiDocumento.Estado != ERROR) { return; } int errCode = 0; string errMessage = ""; var beEmpresa = new BD.Empresa().Obtener(uiDocumento.EmpresaId); var beConfiguracion = new BD.Configuracion().Obtener(beEmpresa); string server = beConfiguracion.Servidor; string licenseServer = beConfiguracion.LicenciaSAP; string companyDB = beConfiguracion.BaseDatos; string dbUserName = beConfiguracion.UsuarioBD; string dbPassword = beConfiguracion.ClaveBD; string userName = beConfiguracion.UsuarioSAP; string password = beConfiguracion.ClaveSAP; this.stlMensaje.Text = $"Conectando al SBO de la compañia { beConfiguracion.Empresa.Nombre }"; using (var sbo = new DI.DiConexion(server, licenseServer, companyDB, dbUserName, dbPassword, userName, password)) { var sapBd = new BD.Sap(server, companyDB, dbUserName, dbPassword); var errorBd = new BD.Error(); switch (uiDocumento.TipoId) { case SALIDA: // "Salida de Almacen": var bdSalida = new BD.SalidaAlmacen(); var beSalida = bdSalida.Obtener(uiDocumento.Id); if (beSalida != null) { var seSalida = TD.BeToSe.SalidaAlmacen(beSalida); this.stlMensaje.Text = $"Enviando Salida de Almacen"; string docEntry = new DI.DiSalidaAlmacen(sbo.oCompany).Enviar(seSalida, out errCode, out errMessage); if (docEntry.Length > 0) { beSalida.CodSap = int.Parse(docEntry); } var rpta = bdSalida.Actualizar(beSalida); if (rpta == true && errCode != 0) { this.RegistrarErrorSap(SALIDA, beSalida.IdSalidaAlmacen, errMessage); } } break; case ENTRADA: // "Entrada de Almacen": var bdEntrada = new BD.EntradaAlmacen(); var beEntrada = bdEntrada.Obtener(uiDocumento.Id); if (beEntrada != null) { var seEntrada = TD.BeToSe.EntradaAlmacen(beEntrada); this.stlMensaje.Text = $"Enviando Entrada de Almacen"; string docEntry = new DI.DiEntradaAlmacenPorCompra(sbo.oCompany).Enviar(seEntrada, out errCode, out errMessage); if (docEntry.Length > 0) { beEntrada.CodSap = int.Parse(docEntry); } var rpta = bdEntrada.Actualizar(beEntrada); if (rpta == true && errCode != 0) { this.RegistrarErrorSap(SALIDA, beEntrada.IdEntradaAlmacen, errMessage); } } break; case SOLICITUD: // "Solicitud de Compra": var bdSolicitud = new BD.SolicitudCompra(); var beSolicitud = bdSolicitud.Obtener(uiDocumento.Id); if (beSolicitud != null) { var seSolicitud = TD.BeToSe.SolicitudCompra(beSolicitud); this.stlMensaje.Text = $"Enviando Solicitud de Compra"; string docEntry = new DI.DiSolicitudCompra(sbo.oCompany).Enviar(seSolicitud, out errCode, out errMessage); if (docEntry.Length > 0) { beSolicitud.CodSap = int.Parse(docEntry); } var rpta = bdSolicitud.Actualizar(beSolicitud); if (rpta == true && errCode != 0) { this.RegistrarErrorSap(SOLICITUD, beSolicitud.IdSolicitudCompra, errMessage); } } break; default: break; } } this.stlMensaje.Text = "Sincronización Completada"; this.CargarDocumentosError(); } catch (Exception ex) { General.ErrorMessage(ex.Message); } finally { this.btnEnviar.Enabled = true; } }
private void btnGuardar_Click(object sender, EventArgs e) { try { #region Validaciones var beEmpresa = (BE.Empresa) this.cboEmpresa.SelectedItem; if (beEmpresa == null) { this.cboEmpresa.Focus(); General.CriticalMessage("Seleccione una Empresa"); return; } if (this.txtServidor.Text.Trim().Length == 0) { this.txtServidor.Focus(); General.CriticalMessage("Ingrese una Servidor"); return; } if (this.txtLicenciaSBO.Text.Trim().Length == 0) { this.txtLicenciaSBO.Focus(); General.CriticalMessage("Ingrese una Servidor de Licencia"); return; } if (this.txtUsuarioSBO.Text.Trim().Length == 0) { this.txtUsuarioSBO.Focus(); General.CriticalMessage("Ingrese un Usuario de SBO"); return; } if (this.txtClaveSBO.Text.Trim().Length == 0) { this.txtClaveSBO.Focus(); General.CriticalMessage("Ingrese una Clave de SBO"); return; } if (this.txtNombreBD.Text.Trim().Length == 0) { this.txtNombreBD.Focus(); General.CriticalMessage("Ingrese una Base de Datos"); return; } if (this.txtUsuarioBD.Text.Trim().Length == 0) { this.txtUsuarioBD.Focus(); General.CriticalMessage("Ingrese un Usuario de BD"); return; } if (this.txtClaveBD.Text.Trim().Length == 0) { this.txtClaveBD.Focus(); General.CriticalMessage("Ingrese una Clave de BD"); return; } #endregion if (this.configuracion == null) { this.configuracion = new BE.Configuracion(); } this.configuracion.Empresa = beEmpresa; this.configuracion.Servidor = this.txtServidor.Text; this.configuracion.LicenciaSAP = this.txtLicenciaSBO.Text; this.configuracion.UsuarioSAP = this.txtUsuarioSBO.Text; this.configuracion.ClaveSAP = this.txtClaveSBO.Text; //this.configuracion.TipoBD = int.Parse(this.cboTipoBD.SelectedValue); this.configuracion.BaseDatos = this.txtNombreBD.Text; this.configuracion.UsuarioBD = this.txtUsuarioBD.Text; this.configuracion.ClaveBD = this.txtClaveBD.Text; bool rpta = false; if (this.configuracion.Id == 0) { rpta = new BD.Configuracion().Insertar(ref this.configuracion); } else { rpta = new BD.Configuracion().Actualizar(this.configuracion); } if (rpta) { this.Close(); } } catch (Exception ex) { General.ErrorMessage(ex.Message); } }