private void dtgRendiciones_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
        {
            try
            {
                if (e.CommandName == "Recibir")
                {
                    IRendicionAgencia rendicion = RendicionAgenciaFactory.GetRendicionAgencia();
                    rendicion.RendicionAgenciaID = Convert.ToInt32(e.Item.Cells[20].Text);
                    // SFE. Registrar la agencia que va a recibir.
                    rendicion.Agencia.AgenciaID = AgenciaConectadaID;
                    IUsuarios usuario = (IUsuarios)Session["Usuario"];
                    rendicion.Recibir(usuario.UsuarioID);
                    BindGrid(0);
                }
                else if (e.CommandName == "Controlar")
                {
                    IRendicionAgencia rendicion = RendicionAgenciaFactory.GetRendicionAgencia();
                    rendicion.RendicionAgenciaID = Convert.ToInt32(e.Item.Cells[20].Text);
                    // SFE. Registrar la agencia que va a recibir.
                    rendicion.Agencia.AgenciaID = AgenciaConectadaID;
                    IUsuarios   usuario = (IUsuarios)Session["Usuario"];
                    TextBox     txtCaja = (TextBox)e.Item.FindControl("txtCaja");
                    PlaceHolder phCaja  = (PlaceHolder)e.Item.FindControl("phCaja");
                    phCaja.Controls.Add(GenerarValidadores.Requerido("txtCaja", "Debe ingresar el número de caja es obligatorio", false, "cajaReq"));
                    phCaja.Controls.Add(GenerarValidadores.EnteroPositivo("txtCaja", "El número de caja debe ser un entero positivo", false, "cajaValid"));
                    BaseValidator bv;
                    bv         = (BaseValidator)e.Item.FindControl("cajaReq");
                    bv.Enabled = true;
                    bv.Validate();
                    if (!bv.IsValid)
                    {
                        return;
                    }
                    bv         = (BaseValidator)e.Item.FindControl("cajaValid");
                    bv.Enabled = true;
                    bv.Validate();
                    if (!bv.IsValid)
                    {
                        return;
                    }
                    rendicion.Controlar(usuario.UsuarioID, Utiles.Validaciones.obtieneEntero(txtCaja.Text));
                    BindGrid(0);
                }
                else if (e.CommandName == "ReporteComisiones")
                {
                    string rendicionAgenciaID = e.Item.Cells[20].Text;
                    Response.Redirect("ComisionAgenciaPorRendicion.aspx?RendicionAgenciaID=" + rendicionAgenciaID, false);
                }
                else if (e.CommandName == "Imprimir")
                {
                    IRendicionAgencia rendicion = RendicionAgenciaFactory.GetRendicionAgencia();
                    rendicion.RendicionAgenciaID = Convert.ToInt32(e.Item.Cells[20].Text);
                    IUsuarios usuario = (IUsuarios)Session["Usuario"];
                    rendicion.Recibir(usuario.UsuarioID);
                    BindGrid(0);

                    DsRendicionesAgencias rendicionSeleccionada = new DsRendicionesAgencias();
                    foreach (DsRendicionesAgencias.DatosRow item in ((DsRendicionesAgencias)Session["dsRendicionAgencia"]).Datos)
                    {
                        if (Utiles.Formatos.CerosIzq(Convert.ToInt32(item.NroRendicion), 5) == e.Item.Cells[0].Text)
                        {
                            DsRendicionesAgencias.DatosRow myRow = rendicionSeleccionada.Datos.NewDatosRow();
                            myRow.AgenciaID          = item.AgenciaID;
                            myRow.AgenciaNombre      = item.AgenciaNombre;
                            myRow.Archivo            = item.Archivo;
                            myRow.Controlada         = item.Controlada;
                            myRow.EstadoRendicionID  = item.EstadoRendicionID;
                            myRow.Fecha              = item.Fecha;
                            myRow.NroRendicion       = item.NroRendicion;
                            myRow.Recibida           = item.Recibida;
                            myRow.RendicionAgenciaID = item.RendicionAgenciaID;
                            myRow.SaldoRendicion     = item.IsSaldoRendicionNull()? 0.00 : item.SaldoRendicion;
                            myRow.SubTotalFleteA     = item.SubTotalFleteA;
                            myRow.SubTotalFleteB     = item.SubTotalFleteB;
                            myRow.SubTotalFleteE     = item.SubTotalFleteE;
                            //SFE: Correccion de Bug 11/01/2011. Visualizacion de Columnas para Guías R
                            myRow.SubTotalFleteR  = item.SubTotalFleteR;
                            myRow.SubTotalSeguroA = item.SubTotalSeguroA;
                            myRow.SubTotalSeguroB = item.SubTotalSeguroB;
                            myRow.SubTotalSeguroE = item.SubTotalSeguroE;
                            //SFE: Correccion de Bug 11/01/2011. Visualizacion de Columnas para Guías R
                            myRow.SubTotalSeguroR = item.SubTotalSeguroR;
                            myRow.TotalRendidoA   = item.TotalRendidoA;
                            myRow.TotalRendidoB   = item.TotalRendidoB;
                            myRow.TotalRendidoE   = item.TotalRendidoE;
                            //SFE: Correccion de Bug 11/01/2011. Visualizacion de Columnas para Guías R
                            myRow.TotalRendidoR = item.TotalRendidoR;
                            myRow.UsuarioCID    = item.IsUsuarioCIDNull() ? 0 : item.UsuarioCID;
                            myRow.UsuarioRID    = item.IsUsuarioRIDNull() ? 0 : item.UsuarioRID;

                            rendicionSeleccionada.Datos.AddDatosRow(myRow);
                            break;
                        }
                    }

                    string codEmpresaRapiPago = System.Configuration.ConfigurationSettings.AppSettings["CodEmpresaRapiPago"].ToString();

                    IParametroUNegocio paramEmpresa = ParametroUNegocioFactory.GetParametroUNegocio();
                    paramEmpresa.UnidadNegocioID = this.UnidadNegocioID;
                    paramEmpresa.Parametro       = NegociosSisPackInterface.SisPack.Parametro.Empresa;
                    paramEmpresa.Consultar();

                    string codEmpresaGrupoA = paramEmpresa.ValorString;

                    IParametroUNegocio paramZona = ParametroUNegocioFactory.GetParametroUNegocio();
                    paramZona.UnidadNegocioID = this.UnidadNegocioID;
                    paramZona.Parametro       = NegociosSisPackInterface.SisPack.Parametro.Zona;
                    paramZona.Consultar();

                    string zona = paramZona.ValorString;

                    /* Obtenemos el Codigo de la Agencia logueada. */
                    IAgencia oAgencia = AgenciaFactory.GetAgencia();
                    oAgencia.AgenciaID = Convert.ToInt32(this.AgenciaConectadaID);
                    oAgencia.ConsultarBasico();
                    /* Utilizamos la funcion útiles para rellenar con ceros. */
                    string codAgencia = Utiles.Formatos.CerosIzq(Convert.ToInt32(oAgencia.SucursalDGI), 7);

                    string compLiquid = Utiles.Formatos.CerosIzq(rendicionSeleccionada.Datos[0].RendicionAgenciaID, 8);
                    string auxiliar   = "00";

                    /* Sumar el total de los dos tipos de guías. */
                    string importe       = "";
                    double totalARendirA = rendicionSeleccionada != null ? rendicionSeleccionada.Datos[0].TotalRendidoA : 0.00;
                    double totalARendirB = rendicionSeleccionada != null ? rendicionSeleccionada.Datos[0].TotalRendidoB : 0.00;
                    double totalARendirE = rendicionSeleccionada != null ? rendicionSeleccionada.Datos[0].TotalRendidoE : 0.00;
                    //SFE: Correccion de Bug 11/01/2011. Visualizacion de Columnas para Guías R
                    double totalARendirR = rendicionSeleccionada != null ? rendicionSeleccionada.Datos[0].TotalRendidoR : 0.00;

                    double totalGuias = totalARendirA + totalARendirB + totalARendirE + totalARendirR;
                    int    entero     = Convert.ToInt32(Math.Floor(totalGuias));
                    double decimales  = totalGuias - Convert.ToDouble(entero);

                    if (decimales == 0.0)
                    {
                        string dec = Utiles.Formatos.CerosIzq(0, 2);
                        importe = Utiles.Formatos.CerosIzq(entero, 6) + dec;
                    }
                    else
                    {
                        importe = Utiles.Formatos.CerosIzq(entero, 6) + decimales.ToString().Substring(2, 2);
                    }

                    /* Formamos la fecha de vencimiento. */
                    string diasVto = Utiles.Formatos.CerosIzq(Convert.ToInt32(rendicionSeleccionada.Datos[0].Fecha.DayOfYear.ToString()), 3);
                    //string diasVto = Utiles.Formatos.CerosIzq(Convert.ToInt32(System.DateTime.Today.AddMonths(1).DayOfYear.ToString()),3);
                    string anioVto  = System.DateTime.Today.Year.ToString().Substring(System.DateTime.Today.Year.ToString().Length - 2, 2);
                    string fechaVto = anioVto + diasVto;

                    string moneda = "0";

                    string secuencia = codEmpresaRapiPago + codEmpresaGrupoA + zona + codAgencia + compLiquid + auxiliar + importe + fechaVto + moneda;

                    IParametroUNegocio paramCadenaVerificadora = ParametroUNegocioFactory.GetParametroUNegocio();
                    paramCadenaVerificadora.UnidadNegocioID = this.UnidadNegocioID;
                    paramCadenaVerificadora.Parametro       = NegociosSisPackInterface.SisPack.Parametro.CadenaVerificadora;
                    paramCadenaVerificadora.Consultar();

                    string secuenciaControl = paramCadenaVerificadora.ValorString;                     //Secuencia fija elegida.

                    /* Obtenemos los dígitos de verificación de nuestra secuencia. */
                    double totalProductos = 0.00;
                    if (secuencia.Length == secuenciaControl.Length)
                    {
                        for (int i = 0; i < secuencia.Length; i++)
                        {
                            totalProductos += (int)(secuencia[i] - '0') * (int)(secuenciaControl[i] - '0');
                        }
                    }
                    int    ultimosDigitos   = (System.Int32)(totalProductos / 2);
                    string codigoValidacion = ultimosDigitos.ToString().Substring(ultimosDigitos.ToString().Length - 2, 2);

                    /* Concatenamos el código validador a nuestra secuencia y la enviamos como parámetro a la página de impresión. */
                    secuencia = secuencia + codigoValidacion;
                    string nroRendicion = rendicionSeleccionada.Datos[0].NroRendicion + " - " + rendicionSeleccionada.Datos[0].Fecha.ToShortDateString();

                    string script = "<script languaje='javascript'>\n";
                    script += "window.showModalDialog('VoucherRapiPago.aspx?secuencia=" + secuencia + "&nroRendicion=" + nroRendicion + "','','center:Yes;status:No;help:No;resizable:No;scroll:Yes;dialogHeight:580px;dialogWidth:610px');\n";
                    script += "</script>";

                    Page.RegisterClientScriptBlock("generarVoucher", script);
                }
            }
            catch (Exception ex)
            {
                ((ErrorWeb)phErrores.Controls[0]).setMensaje(ex.Message);
            }
        }