/// <summary> /// Establece la Moneda de Compra Seleccionada previamente /// </summary> /// <param name="moneda"></param> public void EstablecerMonedaCompra(MonedaBO moneda) { if (moneda != null && moneda.Codigo != null && moneda.Codigo.Trim().Length > 0) { ddlMonedas.SelectedValue = moneda.Codigo; } else { ddlMonedas.SelectedIndex = 0; } }
/// <summary> /// Registra un Contrato RO /// </summary> private void Registrar() { #region Se inicia la Transaccion dctx.SetCurrentProvider("Outsourcing"); Guid firma = Guid.NewGuid(); try { dctx.OpenConnection(firma); dctx.BeginTransaction(firma); } catch (Exception) { if (dctx.ConnectionState == ConnectionState.Open) { dctx.CloseConnection(firma); } throw new Exception("Se encontraron inconsistencias al insertar el Contrato."); } #endregion try { //Se obtiene la información a partir de la Interfaz de Usuario ContratoPSLBO bo = (ContratoPSLBO)this.InterfazUsuarioADato(); if (bo.Estatus == EEstatusContrato.EnPausa) { #region LLenar el anexo por cambios en la renovación. AnexosContratoPSLBO anexo = new AnexosContratoPSLBO(); anexo.FechaInicio = bo.FechaInicioActual; anexo.FechaFin = bo.FechaPromesaActual; anexo.FechaIntercambioUnidad = null; anexo.MontoTotalArrendamiento = bo.MontoTotalArrendamiento; anexo.TipoAnexoContrato = ETipoAnexoContrato.Contrato; anexo.Vigente = true; anexo.ContratoPSLID = this.vista.ContratoID; anexo.FC = this.vista.FUA; anexo.FUA = this.vista.FUA; anexo.UC = this.vista.UUA; anexo.UUA = this.vista.UUA; ArchivoBO archivo = new ArchivoBO(); archivo.Activo = true; archivo.Auditoria = new AuditoriaBO { FC = this.vista.FUA, FUA = this.vista.FUA, UC = this.vista.UUA, UUA = this.vista.UUA }; archivo.TipoAdjunto = ETipoAdjunto.AnexoContrato; archivo.TipoArchivo = this.presentadorDocumentos.Vista.TiposArchivo.Find(x => x.Extension.ToUpper() == "PDF"); Random random = new Random(); archivo.Nombre = "Anexo_" + DateTime.Now.ToShortDateString().Replace("/", string.Empty) + random.Next(99999).ToString() + ".pdf"; archivo.NombreCorto = archivo.Nombre; Dictionary <string, object> dataSources = new Dictionary <string, object>(); #region Consulta periodoTarifario. List <DiaPeriodoTarifaBO> lstTemp = new List <DiaPeriodoTarifaBO>(); DiaPeriodoTarifaBR periodoTarifaBR = new DiaPeriodoTarifaBR(); lstTemp = periodoTarifaBR.Consultar(dctx, new DiaPeriodoTarifaBO() { UnidadOperativaID = this.vista.UnidadOperativaID }); if (lstTemp.Count == 1) { dataSources.Add("PeriodoTarifa", lstTemp[0]); } if (!string.IsNullOrEmpty(bo.Divisa.MonedaDestino.Codigo)) { MonedaBO moneda = FacadeBR.ConsultarMoneda(this.dctx, new MonedaBO() { Codigo = bo.Divisa.MonedaDestino.Codigo }).FirstOrDefault(); dataSources.Add("Moneda", moneda); } #endregion dataSources["ContratoPSLBO"] = bo; ContratoAnexoROCRPT reporteCorrectivo = new ContratoAnexoROCRPT(dataSources); using (MemoryStream stream = new MemoryStream()) { reporteCorrectivo.CreateDocument(); reporteCorrectivo.ExportToPdf(stream); archivo.Archivo = stream.GetBuffer(); } anexo.AgregarAnexo(archivo); bo.AgregarAnexoContrato(anexo); #endregion #region Llenando información del pago GeneradorPagoPSLBR generadorPago = new GeneradorPagoPSLBR(); //Cuando se genera el pago se llenan los campos de acumulados de tarifas generadorPago.ObtenerPagos(new PagoContratoPSLBO(), bo, null, 0, ETipoPago.NORMAL); #endregion } //Se crea el objeto de seguridad UsuarioBO usuario = new UsuarioBO() { Id = this.vista.UsuarioID }; AdscripcionBO adscripcion = new AdscripcionBO() { UnidadOperativa = new UnidadOperativaBO() { Id = this.vista.UnidadOperativaID } }; SeguridadBO seguridadBO = new SeguridadBO(Guid.Empty, usuario, adscripcion); //Se inserta en la base de datos this.controlador.InsertarCompleto(this.dctx, bo, seguridadBO); //Se consulta lo insertado para recuperar los ID DataSet ds = this.controlador.ConsultarSet(this.dctx, bo); if (ds.Tables[0].Rows.Count <= 0) { throw new Exception("Al consultar lo insertado no se encontraron coincidencias."); } if (ds.Tables[0].Rows.Count > 1) { throw new Exception("Al consultar lo insertado se encontró más de una coincidencia."); } bo.ContratoID = this.controlador.DataRowToContratoPSLBO(ds.Tables[0].Rows[0]).ContratoID; //El proceso de generación de pagos es eliminado de esta sección dctx.CommitTransaction(firma); //Se despliega la información en la Interfaz de Usuario this.DatoAInterfazUsuario(bo); } catch (Exception ex) { dctx.RollbackTransaction(firma); throw new Exception(this.nombreClase + ".Registrar:" + ex.Message); } finally { if (dctx.ConnectionState == ConnectionState.Open) { dctx.CloseConnection(firma); } } }