private bool RegistrarSolicitudBD(ref BD.Sap bdSap, BE.Empresa beEmpresa) { bool rpta = false; try { var beTipoSolicitud = new BD.TipoDocumento().Obtener(SOLICITUD); var bdSolicitud = new BD.SolicitudCompra(); foreach (var solicitudJson in this.lstWsSolicitudes) { SE.SolicitudCompra seSolicitud = TD.JsonToSe.SolicitudCompra(solicitudJson); seSolicitud.Serie = bdSap.ObtenerSerieSalidaAlmacen(this.serie); for (int i = 0; i < seSolicitud.Detalle.Count; i++) { seSolicitud.Detalle[i].CodAlmacen = bdSap.ObtenerCodigoAlmacen(seSolicitud.Detalle[i].Codigo); } var beSolicitud = TD.SeToBe.SolicitudCompra(seSolicitud); beSolicitud.Empresa = beEmpresa; beSolicitud.TipoDocumento = beTipoSolicitud; var flag = bdSolicitud.Insertar(ref beSolicitud); } return(rpta); } catch (Exception ex) { throw ex; } }
private bool RegistrarEntradaBD(ref BD.Sap bdSap, BE.Empresa beEmpresa) { bool rpta = false; try { var beTipoEntrada = new BD.TipoDocumento().Obtener(ENTRADA); var bdEntrada = new BD.EntradaAlmacen(); foreach (var entradaJson in this.lstWsEntradas) { SE.EntradaAlmacen seEntrada = TD.JsonToSe.EntradaAlmacen(entradaJson); seEntrada.Serie = bdSap.ObtenerSerieSalidaAlmacen(this.serie); for (int i = 0; i < seEntrada.Detalle.Count; i++) { seEntrada.Detalle[i].CodAlmacen = bdSap.ObtenerCodigoAlmacen(seEntrada.Detalle[i].Codigo); } var beEntrada = TD.SeToBe.EntradaAlmacen(seEntrada); beEntrada.Empresa = beEmpresa; beEntrada.TipoDocumento = beTipoEntrada; var flag = bdEntrada.Insertar(ref beEntrada); } return(rpta); } catch (Exception ex) { throw ex; } }
private void EnviarSolicitudesSap(ref DI.DiConexion diConexion, BE.Empresa beEmpresa) { int errCode = 0; string errMessage = ""; try { var beTipoSolicitud = new BD.TipoDocumento().Obtener(SOLICITUD); var bdSap = new BD.Sap(diConexion.Server, diConexion.CompanyDB, diConexion.DbUserName, diConexion.DbPassword); var bdError = new BD.Error(); var diSolicitud = new DI.DiSolicitudCompra(diConexion.oCompany); var bdSolicitud = new BD.SolicitudCompra(); foreach (var SolicitudJson in this.lstWsSolicitudes) { var Solicitudese = TD.JsonToSe.SolicitudCompra(SolicitudJson); Solicitudese.Serie = bdSap.ObtenerSerieSolicitudCompra(this.serie); for (int i = 0; i < Solicitudese.Detalle.Count; i++) { Solicitudese.Detalle[i].CodAlmacen = bdSap.ObtenerCodigoAlmacen(Solicitudese.Detalle[i].Codigo); } string docEntry = diSolicitud.Enviar(Solicitudese, out errCode, out errMessage); if (docEntry.Length > 0) { Solicitudese.DocEntry = int.Parse(docEntry); } var beSolicitud = TD.SeToBe.SolicitudCompra(Solicitudese); beSolicitud.Empresa = beEmpresa; beSolicitud.TipoDocumento = beTipoSolicitud; var rpta = bdSolicitud.Insertar(ref beSolicitud); if (rpta == true && docEntry.Length == 0) { this.RegistrarErrorSap(SOLICITUD, beSolicitud.IdSolicitudCompra, errMessage); } } } catch (Exception ex) { throw ex; } }
private void EnviarEntradasSap(ref DI.DiConexion diConexion, BE.Empresa beEmpresa) { int errCode = 0; string errMessage = ""; try { var beTipoEntrada = new BD.TipoDocumento().Obtener(ENTRADA); var bdSap = new BD.Sap(diConexion.Server, diConexion.CompanyDB, diConexion.DbUserName, diConexion.DbPassword); var bdError = new BD.Error(); var diEntrada = new DI.DiEntradaAlmacenPorCompra(diConexion.oCompany); var bdEntrada = new BD.EntradaAlmacen(); foreach (var EntradaJson in this.lstWsEntradas) { var EntradaSe = TD.JsonToSe.EntradaAlmacen(EntradaJson); EntradaSe.Serie = bdSap.ObtenerSerieEntradaAlmacenPorCompra(this.serie); for (int i = 0; i < EntradaSe.Detalle.Count; i++) { EntradaSe.Detalle[i].CodAlmacen = bdSap.ObtenerCodigoAlmacen(EntradaSe.Detalle[i].Codigo); } string docEntry = diEntrada.Enviar(EntradaSe, out errCode, out errMessage); if (docEntry.Length > 0) { EntradaSe.DocEntry = int.Parse(docEntry); } var beEntrada = TD.SeToBe.EntradaAlmacen(EntradaSe); beEntrada.Empresa = beEmpresa; beEntrada.TipoDocumento = beTipoEntrada; var rpta = bdEntrada.Insertar(ref beEntrada); if (rpta == true && docEntry.Length == 0) { this.RegistrarErrorSap(ENTRADA, beEntrada.IdEntradaAlmacen, errMessage); } } } catch (Exception ex) { throw ex; } }
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 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; } }