protected void grdPagosPendientes_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            try
            {
                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    PagoUnidadContratoBO pago = (PagoUnidadContratoBO)e.Row.DataItem;

                    Label lblFechaVencimiento = e.Row.FindControl("lblFechaVencimiento") as Label;
                    if (lblFechaVencimiento != null)
                    {
                        string fecha = string.Empty;
                        if (pago.FechaVencimiento != null)
                        {
                            fecha = String.Format("{0:dd/MM/yyyy hh:ss}", pago.FechaVencimiento);
                        }
                        lblFechaVencimiento.Text = fecha;
                    }
                }
            }
            catch (Exception ex)
            {
                MostrarMensaje("Inconsistencias al presentar la información", ETipoMensajeIU.ERROR, nombreClase + ".grdPagosPendientes_RowDataBound: " + ex.Message);
            }
        }
        protected void grdPagosFacturados_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            try
            {
                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    PagoUnidadContratoBO pago = (PagoUnidadContratoBO)e.Row.DataItem;

                    Label lblFechaVencimiento = e.Row.FindControl("lblFechaVencimiento") as Label;
                    if (lblFechaVencimiento != null)
                    {
                        string fecha = string.Empty;
                        if (pago.FechaVencimiento != null)
                        {
                            fecha = String.Format("{0:dd/MM/yyyy hh:ss}", pago.FechaVencimiento);
                        }
                        lblFechaVencimiento.Text = fecha;
                    }

                    Label lblEnviadoFacturacion = e.Row.FindControl("lblEnviadoFacturacion") as Label;
                    if (lblEnviadoFacturacion != null)
                    {
                        string enviado = String.Empty;
                        if (pago.EnviadoFacturacion != null)
                        {
                            enviado = pago.EnviadoFacturacion.Value ? "SI" : "NO";
                        }
                        lblEnviadoFacturacion.Text = enviado;
                    }

                    Label lblFrecuencia = e.Row.FindControl("lblFrecuencia") as Label;
                    if (lblFrecuencia != null)
                    {
                        string frecuencia = string.Empty;
                        if (pago.Tarifa.FrecuenciaID != null)
                        {
                            frecuencia = ((EFrecuencia)pago.Tarifa.FrecuenciaID).ToString().ToUpper();
                        }
                        lblFrecuencia.Text = frecuencia;
                    }
                }
            }
            catch (Exception ex)
            {
                MostrarMensaje("Inconsistencias al presentar la información", ETipoMensajeIU.ERROR, nombreClase + ".grdPagosFacturados_RowDataBound: " + ex.Message);
            }
        }
        /// <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);
        }