/// <summary> /// Metodo que genera el pago adicional /// </summary> public void GenerarPagoAdicional() { try { string validacion = this.ValidarPagoAdicional(); if (!String.IsNullOrEmpty(validacion)) { this.vista.MostrarMensaje("No se puede generar el pago Adicional: " + validacion, ETipoMensajeIU.INFORMACION); return; } ContratoBO contratoBo = null; IGeneradorPagosBR generadorPagos = null; SeguridadBO seguridadBo = this.CrearObjetoSeguridad(); List <ContratoBO> contratos = new List <ContratoBO>(); switch (vista.TipoContrato) { case ETipoContrato.RD: contratoBo = new ContratoRDBO { ContratoID = this.vista.ContratoID }; var contratosRd = new ContratoRDBR().ConsultarCompleto(this.dctx, (ContratoRDBO)contratoBo, false); contratos.AddRange(contratosRd); generadorPagos = new GeneradorPagoRDBR(); break; case ETipoContrato.FSL: contratoBo = new ContratoFSLBO { ContratoID = this.vista.ContratoID }; var contratosFsl = new ContratoFSLBR().ConsultarCompleto(this.dctx, (ContratoFSLBO)contratoBo); contratos.AddRange(contratosFsl); generadorPagos = new GeneradorPagosFSLBR(); break; case ETipoContrato.CM: case ETipoContrato.SD: contratoBo = new ContratoManttoBO { ContratoID = this.vista.ContratoID }; var contratosMantto = new ContratoManttoBR().ConsultarCompleto(this.dctx, (ContratoManttoBO)contratoBo, true, false); contratos.AddRange(contratosMantto); generadorPagos = new GeneradorPagosManttoBR(); break; } if (generadorPagos == null) { throw new Exception("No se pudo determinar el Tipo del Pago a Generar."); } generadorPagos.GenerarPagoAdicional(this.dctx, contratos.First(), (ultimoPagoContrato.NumeroPago.Value + 1), seguridadBo, false, true); PagoUnidadContratoBO pagoBo = new PagoUnidadContratoBOF { ReferenciaContrato = new ReferenciaContratoBO() { ReferenciaContratoID = this.vista.ContratoID } }; PagoUnidadContratoBR pagoBr = new PagoUnidadContratoBR(); var pagos = pagoBr.Consultar(this.dctx, (PagoUnidadContratoBO)pagoBo); this.Inicializar(); this.vista.MostrarMensaje("El pago " + pagos.Last().NumeroPago.ToString() + " con Fecha " + pagos.Last().FechaVencimiento.Value.ToShortDateString() + " se ha Creado con Éxito.", ETipoMensajeIU.EXITO); } catch (Exception ex) { this.vista.MostrarMensaje("Error al generar el pago Adicional", ETipoMensajeIU.ERROR, NombreClase + ".GenerarPagoAdicional: " + ex.GetBaseException().Message); } }
/// <summary> /// Actualiza el cierre de un contrato de RD /// </summary> public void CerrarContrato() { string s; if ((s = this.ValidarCampos()) != null) { this.vista.MostrarMensaje(s, ETipoMensajeIU.ADVERTENCIA, null); return; } Guid firma = Guid.NewGuid(); try { #region Transaccion dctx.SetCurrentProvider("Outsourcing"); dctx.OpenConnection(firma); dctx.BeginTransaction(firma); #endregion //Se obtiene la información a partir de la Interfaz de Usuario ContratoRDBO bo = (ContratoRDBO)this.InterfazUsuarioADato(); IGeneradorPagosBR GenerarPagosBr = new GeneradorPagoRDBR(); var pagos = ObtenerPagosContrato(bo.ContratoID); //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); //Crear pago de adicional var ultimoPago = (int)ObtenerUltimoNumeroPago(pagos); GenerarPagosBr.GenerarPagoAdicional(dctx, bo, (ultimoPago + 1), seguridadBO, true, true); //Se actualiza en la base de datos this.controlador.Terminar(this.dctx, bo, (ContratoRDBO)this.vista.UltimoObjeto, seguridadBO); #region RI0014 dctx.CommitTransaction(firma); #endregion this.LimpiarSesion(); this.vista.LimpiarPaqueteNavegacion("UltimoContratoRDBO"); this.vista.EstablecerPaqueteNavegacion("ContratoRDBO", bo); this.vista.RedirigirADetalles(); } catch (Exception ex) { dctx.RollbackTransaction(firma); throw new Exception(nombreClase + ".CerrarContrato:" + ex.Message); } finally { if (dctx.ConnectionState == ConnectionState.Open) { dctx.CloseConnection(firma); } } }