コード例 #1
0
        /// <summary>
        /// Registra el nuevo contrato en la base de datos
        /// </summary>
        /// <param name="contrato">Contrato a Registrar</param>
        /// <returns>Retorna el Identificador del Nuevo Contrato</returns>
        private int? GuardarContrato(ContratoFSLBO contrato)
        {
            try
            {
                //SC_0008
                SeguridadBO seguridadBO = new SeguridadBO(Guid.Empty, new UsuarioBO { Id = this.vista.UsuarioID }, new AdscripcionBO
                {
                    Departamento = new DepartamentoBO(),
                    Sucursal = new SucursalBO(),
                    UnidadOperativa = new UnidadOperativaBO { Id = this.vista.UnidadAdscripcionID }
                });
                //END SC_0008

                var contratoBR = new ContratoFSLBR();
                contratoBR.InsertarCompleto(dataContext, contrato, seguridadBO);
                DataSet ds = contratoBR.ConsultarSet(dataContext, contrato);

                if (ds.Tables[0].Rows.Count > 0)
                {
                    return ds.Tables[0].Rows[0].Field<int>("ContratoID");
                }
                return null;
            }
            catch (Exception ex)
            {
                throw new Exception(nombreClase + ".GuardarContrato:" + ex.Message);
            }

        }
コード例 #2
0
 /// <summary>
 /// Impresion del Manual de Operaciones
 /// </summary>
 public void ImprimirManualOperaciones()
 {
     try
     {
         if (vista.ContratoID != null)
         {
             if (vista.UnidadOperativaContratoID != null)
             {
                 var contratoBR   = new ContratoFSLBR();
                 var DatosReporte = contratoBR.ConsultarManualOperaciones(dataContext, vista.ContratoID.Value,
                                                                          vista.UnidadOperativaContratoID.Value);
                 vista.EstablecerPaqueteNavegacionImprimir("CU017", DatosReporte);
                 vista.IrAImprimir();
             }
             else
             {
                 vista.MostrarMensaje("No se cuenta con la Unidad Operativa del Contrato", ETipoMensajeIU.ADVERTENCIA);
             }
         }
         else
         {
             vista.MostrarMensaje("No se cuenta con el Identificador del Contrato", ETipoMensajeIU.ADVERTENCIA);
         }
     }
     catch (Exception ex)
     {
         vista.MostrarMensaje("Inconsistencias al Intentar  desplegar el Manual de Operaciones", ETipoMensajeIU.ERROR, nombreClase + ".ImprimirManualOperaciones: " + ex.Message);
     }
 }
コード例 #3
0
        /// <summary>
        /// Obtiene el Contrato del Paquete de Navegacion
        /// </summary>
        /// <returns></returns>
        private ContratoFSLBO ObtenerContrato()
        {
            try
            {
                var contrato = vista.Contrato;

                var contratoBR = new ContratoFSLBR();

                List <ContratoFSLBO> resultados = contratoBR.ConsultarDetalle(dataContext, contrato, false);

                contrato = resultados.Find(cont => cont.ContratoID == contrato.ContratoID);

                if (contrato != null && contrato.DocumentosAdjuntos != null && contrato.DocumentosAdjuntos.Count > 0)
                {
                    contrato.DocumentosAdjuntos = contrato.DocumentosAdjuntos.Where(archivo => archivo.Activo == true).ToList();
                }


                return(contrato);
            }
            catch (Exception ex)
            {
                throw new Exception(nombreClase + ".ObtenerContrato: " + ex.Message);
            }
        }
コード例 #4
0
 /// <summary>
 /// Regresar a la pantalla de Detalles
 /// </summary>
 public void RegresarADetalles()
 {
     try {
         ContratoFSLBO contrato = new ContratoFSLBO {
             ContratoID = vista.ContratoID
         };
         ContratoFSLBR ContratoBR = new ContratoFSLBR();
         contrato = ContratoBR.ConsultarCompleto(dataContext, contrato)[0];
         vista.EstablecerPaqueteNavegacion(vista.Codigo, contrato);
         vista.LimpiarSesion();
         vista.IrADetalleContrato();
     } catch (Exception ex) {
         throw new Exception(nombreClase + ".RegresarADetalles: " + ex.Message);
     }
 }
コード例 #5
0
 /// <summary>
 /// Imprimir la plantilla del contrato maestro
 /// </summary>
 /// <param name="tipo">//True si quieres que sea fisica false si squieres que sea moral. bool</param>
 public void ImprimirPlantillaContratoMaestro(bool tipo)
 {
     try
     {
         var contratoBR = new ContratoFSLBR();
         //True si quieres que sea fisica false si squieres que sea moral
         var datos = contratoBR.ObtenerPlantillaContratoMaestro(tipo);
         vista.EstablecerPaqueteNavegacionImprimir("CU018A", datos);
         vista.IrAImprimir();
     }
     catch (Exception ex)
     {
         vista.MostrarMensaje("Inconsistencias al Intentar  desplegar el Contrato Maestro", ETipoMensajeIU.ERROR, nombreClase + ".ImprimirPlantillaContratoMaestro: " + ex.Message);
     }
 }
コード例 #6
0
 /// <summary>
 /// Impresion de la Constancia de Entrega de Bienes
 /// </summary>
 public void ImprimirConstanciaBienes()
 {
     try
     {
         if (vista.ContratoID != null)
         {
             var contratoBR   = new ContratoFSLBR();
             var DatosReporte = contratoBR.ConsultarConstanciaEntregaBienes(dataContext, vista.ContratoID.Value);
             vista.EstablecerPaqueteNavegacionImprimir("CU016", DatosReporte);
             vista.IrAImprimir();
             return;
         }
         vista.MostrarMensaje("No se cuenta con el Identificador del Contrato", ETipoMensajeIU.ADVERTENCIA);
     }
     catch (Exception ex)
     {
         vista.MostrarMensaje("Inconsistencias al Intentar  desplegar la Constancia de Bienes", ETipoMensajeIU.ERROR, nombreClase + ".ImprimirConstanciaBienes: " + ex.Message);
     }
 }
コード例 #7
0
 public void ImprimirPagare()
 {
     try
     {
         if (this.vista.ContratoID == null)
         {
             throw new Exception("No se puede imprimir el pagaré sin el identificador del contrato");
         }
         ContratoFSLBR controlador = new ContratoFSLBR();
         Dictionary <string, Object> datosPagare = controlador.ObtenerDatosPagare(FacadeBR.ObtenerConexion(), new ContratoFSLBO()
         {
             ContratoID = this.vista.ContratoID
         });
         vista.EstablecerPaqueteNavegacionImprimir("CU093", datosPagare);
         vista.IrAImprimir();
     }
     catch (Exception ex)
     {
         throw new Exception("DetalleContratoFSLPRE.ImprimirPagare: " + ex.Message);
     }
 }
コード例 #8
0
 /// <summary>
 /// Impresion del Contrato Maestro
 /// </summary>
 public void ImprimirContratoMaestro()
 {
     try
     {
         if (vista.Contrato != null)
         {
             var contratoBR   = new ContratoFSLBR();
             var DatosReporte = contratoBR.ObtenerDatosContratoMaestro(dataContext, vista.Contrato);
             vista.EstablecerPaqueteNavegacionImprimir("CU018", DatosReporte);
             vista.IrAImprimir();
         }
         else
         {
             vista.MostrarMensaje("No se cuenta con la información necesaria del para imprimir el Contrato Maestro", ETipoMensajeIU.ADVERTENCIA);
         }
     }
     catch (Exception ex)
     {
         vista.MostrarMensaje("Inconsistencias al Intentar  desplegar el Contrato Maestro", ETipoMensajeIU.ERROR, nombreClase + ".ImprimirContratoMaestro: " + ex.Message);
     }
 }
コード例 #9
0
 /// <summary>
 /// Impresion del Anexo A
 /// </summary>
 public void ImprimirAnexoA()
 {
     try
     {
         if (vista.ContratoID != null)
         {
             var contratoBR   = new ContratoFSLBR();
             var DatosReporte = contratoBR.ObtenerDatosAnexoA(dataContext, vista.ContratoID.Value);
             vista.EstablecerPaqueteNavegacionImprimir("CU019", DatosReporte);
             vista.IrAImprimir();
         }
         else
         {
             vista.MostrarMensaje("No se cuenta con el Identificador del Contrato", ETipoMensajeIU.ADVERTENCIA);
         }
     }
     catch (Exception ex)
     {
         vista.MostrarMensaje("Inconsistencias al Intentar  desplegar el Anexo A", ETipoMensajeIU.ERROR, nombreClase + ".ImprimirAnexoA: " + ex.Message);
     }
 }
コード例 #10
0
        /// <summary>
        /// Elimina la linea de contrato desplegada en la Interfaz de Usuario (Con estatus Borrador)
        /// </summary>
        public void EliminarContrato()
        {
            try
            {
                ContratoFSLBO contratoEliminar = InterfazUsuarioADatos();

                if (contratoEliminar.Estatus != EEstatusContrato.Borrador)
                {
                    vista.MostrarMensaje("El contrato debe tener estatus Borrador para ser eliminado.", ETipoMensajeIU.INFORMACION);
                    return;
                }

                contratoEliminar.FUA = vista.FUA;
                contratoEliminar.UUA = vista.UUA;

                var contratoBR = new ContratoFSLBR();
                //SC_0008
                SeguridadBO seguridadBO = new SeguridadBO(Guid.Empty, new UsuarioBO {
                    Id = this.vista.UsuarioID
                }, new AdscripcionBO
                {
                    Departamento    = new DepartamentoBO(),
                    Sucursal        = new SucursalBO(),
                    UnidadOperativa = new UnidadOperativaBO {
                        Id = this.vista.UnidadAdscripcionID
                    }
                });
                //END SC_0008
                contratoBR.BorrarCompleto(dataContext, contratoEliminar, seguridadBO);

                vista.MostrarMensaje("El contrato ha sido eliminado exitosamente.", ETipoMensajeIU.EXITO);

                vista.RegresarAConsultar();
            }
            catch (Exception ex)
            {
                vista.MostrarMensaje("Inconsistencias al intentar eliminar el contrato", ETipoMensajeIU.ERROR, nombreClase + ".EliminarContrato: " + ex.Message);
            }
        }
コード例 #11
0
        /// <summary>
        /// Constructor del presentador
        /// </summary>
        /// <param name="vistaActual">Vista Actual</param>
        public ConsultarContratosFSLPRE(IConsultarContratosFSLVIS vistaActual, ucHerramientasFSLPRE herramientas)
        {
            try
            {
                if (vistaActual != null)
                {
                    vista = vistaActual;
                }
                else
                {
                    throw new Exception("La vista proprocionada no puede ser null.");
                }

                HerramientasPRE = herramientas;

                dataContext = Facade.SDNI.BR.FacadeBR.ObtenerConexion();
                Controlador = new ContratoFSLBR();
            }
            catch (Exception ex)
            {
                vista.MostrarMensaje("Inconsistencias en la construcción del presentador", ETipoMensajeIU.ERROR, nombreClase + ".ConsultarContratosFSLPRE: " + ex.Message);
            }
        }
コード例 #12
0
        /// <summary>
        /// Impresion de los Anexos del Contrato
        /// </summary>
        public void ImprimirAnexosContrato()
        {
            try
            {
                if (vista.ContratoID != null)
                {
                    if (vista.Contrato != null)
                    {
                        var contratoBR   = new ContratoFSLBR();
                        var DatosReporte = new Dictionary <string, object>
                        {
                            { "CU018", contratoBR.ObtenerDatosContratoMaestro(dataContext, vista.Contrato) },
                            { "CU019", contratoBR.ObtenerDatosAnexoA(dataContext, vista.ContratoID.Value) },
                            { "CU021", contratoBR.ObtenerDatosAnexoC(dataContext, vista.Contrato) }
                        };

                        vista.EstablecerPaqueteNavegacionImprimir("CU022", DatosReporte);

                        vista.IrAImprimir();
                    }
                    else
                    {
                        vista.MostrarMensaje("No se cuenta con información necesaria para imprimir los anexos del contrato", ETipoMensajeIU.ADVERTENCIA);
                    }
                }
                else
                {
                    vista.MostrarMensaje("No se cuenta con el Identificador del Contrato", ETipoMensajeIU.ADVERTENCIA);
                }
            }
            catch (Exception ex)
            {
                vista.MostrarMensaje("Inconsistencias al Intentar  desplegar los Anexos del Contrato",
                                     ETipoMensajeIU.ERROR, nombreClase + ".ImprimirAnexosContrato: " + ex.Message);
            }
        }
コード例 #13
0
        /// <summary>
        /// Determina si es posible generar el pago adicional del contrato
        /// </summary>
        /// <returns>Devuelve la inconsitencia encontrada para genera el pago adicional</returns>
        private string ValidarPagoAdicional()
        {
            if (this.vista.TipoContrato == null)
            {
                return("No se ha seleccionado del Departamento del Contrato");
            }
            if (this.vista.SucursalID == null)
            {
                return("No se ha seleccionado la Sucursal del Contrato");
            }
            if (String.IsNullOrEmpty(this.vista.FolioContrato))
            {
                return("No se ha introducido el Folio del Contrato");
            }

            ContratoBO contratoBo = null;

            List <ContratoBO> contratos = new List <ContratoBO>();

            switch (vista.TipoContrato)
            {
            case ETipoContrato.RD:
                contratoBo = new ContratoRDBO {
                    NumeroContrato = vista.FolioContrato, Sucursal = new SucursalBO {
                        Id = vista.SucursalID
                    }, Estatus = EEstatusContrato.EnCurso
                };
                var contratosRD = new ContratoRDBR().Consultar(this.dctx, (ContratoRDBO)contratoBo);
                contratos.AddRange(contratosRD);
                break;

            case ETipoContrato.FSL:
                contratoBo = new ContratoFSLBO {
                    NumeroContrato = vista.FolioContrato, Sucursal = new SucursalBO {
                        Id = vista.SucursalID
                    }, Estatus = EEstatusContrato.EnCurso
                };
                var contratosFsl = new ContratoFSLBR().Consultar(this.dctx, (ContratoFSLBO)contratoBo);
                contratos.AddRange(contratosFsl);
                break;

            case ETipoContrato.CM:
            case ETipoContrato.SD:
                contratoBo = new ContratoManttoBO {
                    NumeroContrato = vista.FolioContrato, Tipo = vista.TipoContrato, Sucursal = new SucursalBO {
                        Id = vista.SucursalID
                    }, Estatus = EEstatusContrato.EnCurso
                };
                var contratosMantto = new ContratoManttoBR().Consultar(this.dctx, (ContratoManttoBO)contratoBo);
                contratos.AddRange(contratosMantto);
                break;
            }

            if (!contratos.Any())
            {
                return("No se encontró el Contrato solicitado");
            }
            switch (vista.TipoContrato)
            {
            case ETipoContrato.RD:
                var contratoRD = contratos.FirstOrDefault() as ContratoRDBO;
                if (!String.IsNullOrEmpty(TiempoMaximoRecepcionRD))
                {
                    if (DateTime.Now < contratoRD.FechaPromesaDevolucion.Value.AddHours(int.Parse(TiempoMaximoRecepcionRD)))
                    {
                        return("Deben pasar al menos " + TiempoMaximoRecepcionRD + " hrs para poder generar un pago adicional después de la Fecha de Promesa de Devolución.");
                    }
                }

                break;
            }
            this.vista.ContratoID = contratos.FirstOrDefault().ContratoID;

            PagoUnidadContratoBO pagoBo = new PagoUnidadContratoBOF {
                ReferenciaContrato = new ReferenciaContratoBO()
                {
                    ReferenciaContratoID = this.vista.ContratoID
                }
            };
            PagoUnidadContratoBR pagoBr = new PagoUnidadContratoBR();
            var pagos = pagoBr.Consultar(this.dctx, (PagoUnidadContratoBO)pagoBo);

            if (!pagos.Any())
            {
                return("No se han generado Pagos para el Contrato");
            }

            var ultimoPago = pagos.Last(x => x.Activo.Value);

            if (ultimoPago.EnviadoFacturacion != null && !ultimoPago.EnviadoFacturacion.Value)
            {
                return("No se ha Facturado el Último Pago Activo del Contrato");
            }

            this.ultimoPagoContrato = ultimoPago;

            return(null);
        }
コード例 #14
0
        /// <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);
            }
        }
コード例 #15
0
        /// <summary>
        /// Obtiene el Contrato que sera Editado
        /// </summary>
        private void ConsultarCompleto()
        {
            ContratoBO contrato = new ContratoProxyBO()
            {
                ContratoID = this.vista.ContratoId
            };
            ContratoBO contratoCompleto = null;

            switch (this.vista.TipoContrato)
            {
            case ETipoContrato.RD:
                ContratoRDBR controladorRD = new ContratoRDBR();
                var          contratoRd    = new ContratoRDBO((ContratoBO)contrato);
                var          contratosRd   = controladorRD.ConsultarCompleto(this.dataContext, contratoRd);
                contratoCompleto = contratosRd.FirstOrDefault();

                this.controlador          = new ContratoRDBR();
                this.vista.ObjetoAnterior = contratoCompleto != null?controladorRD.ConsultarCompleto(this.dataContext, contratoRd).FirstOrDefault() : null;

                break;

            case ETipoContrato.FSL:
                ContratoFSLBR controladorFsl = new ContratoFSLBR();
                var           contratoFsl    = new ContratoFSLBO()
                {
                    ContratoID = this.vista.ContratoId
                };
                var contratosFsl = controladorFsl.ConsultarCompleto(this.dataContext, contratoFsl);
                contratoCompleto = contratosFsl.FirstOrDefault();

                this.controlador          = new ContratoFSLBR();
                this.vista.ObjetoAnterior = contratoCompleto != null?controladorFsl.ConsultarCompleto(this.dataContext, contratoFsl).FirstOrDefault() : null;

                break;

            case ETipoContrato.CM:
            case ETipoContrato.SD:
                ContratoManttoBR controladorMantto = new ContratoManttoBR();
                var contratoMantto  = new ContratoManttoBO((ContratoBO)contrato);
                var contratosMantto = controladorMantto.ConsultarCompleto(this.dataContext, contratoMantto, false);
                contratoCompleto = contratosMantto.FirstOrDefault();

                this.controlador          = new ContratoManttoBR();
                this.vista.ObjetoAnterior = contratoCompleto != null?controladorMantto.ConsultarCompleto(this.dataContext, contratoMantto, false).FirstOrDefault() : null;

                break;

            default:
                contratoCompleto = null;
                break;
            }
            if (contratoCompleto != null)
            {
                this.vista.ContratoId            = contratoCompleto.ContratoID;
                this.vista.NumeroContrato        = contratoCompleto.NumeroContrato;
                this.vista.SucursalIdAntigua     = contratoCompleto.Sucursal.Id;
                this.vista.SucursalNombreAntigua = contratoCompleto.Sucursal.Nombre;
                this.vista.TipoContrato          = contratoCompleto.Tipo;
                this.vista.ContratoConsultado    = contratoCompleto;
            }
            else
            {
                throw new Exception(nombreClase + ".ConsultarCompleto: No se encontro el Contrato solicitado");
            }
        }
コード例 #16
0
        /// <summary>
        /// Actualiza el cierre de un contrato Full Service Leasing
        /// </summary>
        public void CerrarContrato()
        {
            Guid firma = Guid.NewGuid();

            try
            {
                string resultado = finalizacionPRE.ValidarDatosCierre();
                if (!string.IsNullOrEmpty(resultado))
                {
                    vista.MostrarMensaje(resultado, ETipoMensajeIU.INFORMACION);
                    return;
                }
            }
            catch (Exception ex)
            {
                throw new Exception(nombreClase + ".CerrarContrato:" + ex.Message);
            }
            try
            {
                #region Transaccion

                dataContext.SetCurrentProvider("Outsourcing");
                dataContext.OpenConnection(firma);
                dataContext.BeginTransaction(firma);

                #endregion

                ContratoFSLBO anterior = vista.UltimoObjeto;
                ContratoFSLBO actual   = InterfazUsuarioADatos();
                actual.FC      = anterior.FC;
                actual.UC      = anterior.UC;
                actual.Estatus = EEstatusContrato.EnCurso;
                var contratoBR = new ContratoFSLBR();

                var seguridadBO = new SeguridadBO(Guid.Empty, new UsuarioBO {
                    Id = vista.UsuarioID
                }, new AdscripcionBO
                {
                    Departamento    = new DepartamentoBO(),
                    Sucursal        = new SucursalBO(),
                    UnidadOperativa = new UnidadOperativaBO {
                        Id = vista.UnidadAdscripcionID
                    }
                });

                // Determinar si es Cierre anticipado
                bool cierreAnticipado = actual.CierreAnticipado();

                // Terminar el Contrato
                contratoBR.Terminar(dataContext, actual, anterior, seguridadBO, cierreAnticipado);


                if (cierreAnticipado)
                {
                    // Cancelar los pagos restantes
                    var pagosFaltantes = ObtenerPagos(anterior, (DateTime)actual.CierreContrato.Fecha);
                    var pagoBR         = new PagoUnidadContratoBR();
                    foreach (var faltante in pagosFaltantes)
                    {
                        //SC0026, Generación de clase concreta segun el tipo de contrato
                        var cancelado = new PagoUnidadContratoFSLBO(faltante)
                        {
                            Activo = false
                        };
                        cancelado.Auditoria.FUA = vista.FUA;
                        cancelado.Auditoria.UUA = vista.UUA;
                        pagoBR.Actualizar(dataContext, cancelado, faltante, seguridadBO);
                    }
                }


                var generadorPagoBR = new GeneradorPagosFSLBR();

                // Calcular Ultimo Pago
                var pago      = UltimoPago(anterior.ContratoID);
                var nuevoPago = ++pago;

                // Generar los pagos adicionales
                generadorPagoBR.GenerarPagoAdicional(dataContext, actual, nuevoPago, seguridadBO, true, true);

                dataContext.CommitTransaction(firma);

                RegresarADetalles();
            }
            catch (Exception ex)
            {
                dataContext.RollbackTransaction(firma);
                throw new Exception(nombreClase + ".CerrarContrato:" + ex.Message);
            }
            finally
            {
                if (dataContext.ConnectionState == ConnectionState.Open)
                {
                    dataContext.CloseConnection(firma);
                }
            }
        }