protected void btnRetencion_Click(object sender, EventArgs e)
        {
            lblMensaje.Text             = "";
            lblMensaje.Visible          = false;
            this.trMensajeError.Visible = false;

            string GuiasError = "";
            int    cant       = 0;


            IGuiasSolicitudConfirmacionTurnoDominio _guiasDominio = IoC.GetObjectDominio <IGuiasSolicitudConfirmacionTurnoDominio>();

            List <Int32?> lstDatosIngresados = new List <Int32?>();//datos ya cargados
            List <Dominio.Entidades.ClienteSolicitaTurno> _datosCliente = new List <Dominio.Entidades.ClienteSolicitaTurno>();
            DsDatosMailTurnos dst = new DsDatosMailTurnos();

            usuario = (IUsuarios)Session["usuario"];                             //cargo el usuario
            cant    = Utiles.Validaciones.obtieneEntero(this.txtGuiaIndex.Text); //la cantidad de guias cargadas

            try
            {
                if (cant == 0)
                {
                    throw new Exception("Debe ingresar al menos una guia, para realizar una retención");
                }
                else
                {
                    for (int i = 0; i < cant; i++)
                    {
                        string txt        = "txt" + i;                                 //cargo el numero de la guia
                        string ddl        = "ddl" + i.ToString();
                        string txtNroCaso = "txtnroCaso2" + i.ToString();              //cargo el numero de caso

                        string txtDetalleUsuario = "txtDetalleUsuario" + i.ToString(); //cargo el detalle ingresado
                        string observacionManual = "txtDetalleUsuarioManual" + i.ToString();
                        string Nrocaso           = Request.Form[txtNroCaso].ToString();
                        string nroGuia           = Request.Form[txt].ToString();

                        string ObDetalle = Request.Form[txtDetalleUsuario].ToString();
                        string ObservacionManualUsuario = Request.Form[observacionManual].ToString();


                        string tGuia = "";

                        //separo el numero de la guia
                        tGuia = NegociosSisPackInterface.SisPack.TipoGuia(nroGuia.Substring(0, 1));
                        string nroSucursal = nroGuia.Substring(1, 4);
                        string nGuia       = nroGuia.Substring(5);

                        //traigo el guiaid
                        IGuia oGuia = GuiaFactory.GetGuia();
                        oGuia.NroGuia         = Utiles.Validaciones.obtieneEntero(nGuia);
                        oGuia.NroSucursalGuia = nroSucursal;
                        oGuia.TipoGuia        = tGuia;
                        oGuia.Consultar();

                        //cargo el guiaid para guardar en una tabla para que ya se sepa que guia se pidio turno
                        guiaidST = oGuia.GuiaID;

                        try{
                            Convert.ToInt32(ObDetalle);
                        }
                        catch {
                            ObDetalle = "0";
                        }//Esto es para el caso que no ingresen numero
                         //valida la observacion
                         //ValidaaObservacionTRF


                        int EsObservacion = Convert.ToInt32(_guiasDominio.ValidaObservacionTRF(Convert.ToInt32(ObDetalle)));

                        if (EsObservacion == 1)    //quiere decir que si existe la observacion ingresada
                        {
                            //valida que este en estado en destino para que se pueda solicitar turno y que sea de la agencia
                            if (_guiasDominio.ValidaGuia(guiaidST) == "PendienteDeEntrega" || _guiasDominio.ValidaGuia(guiaidST) == "EnDestino")//trae los estados en destino o pedneinte de entrega
                            {
                                if (_guiasDominio.GuiaRetenidaEstados(guiaidST) == 1)
                                {//se puede retener
                                    IAgencia ag = AgenciaFactory.GetAgencia();
                                    ag.AgenciaID = this.AgenciaConectadaID;
                                    ag.Consultar();

                                    if (oGuia.AgenciaDestinoID != ag.AgenciaID)
                                    {//por si se intenta solicitar turno de una agencia la cual
                                        //no es el destino real.
                                        if (GuiasError == "")
                                        {
                                            GuiasError = tGuia + "-" + nroSucursal + "-" + nGuia;
                                        }
                                        else
                                        {
                                            GuiasError = GuiasError + tGuia + "-" + nroSucursal + "-" + nGuia;
                                        }
                                    }
                                }
                                else
                                {//la guia ya tiene un turno, o no se encuentra en el estado correspondiente
                                    //para solicitar turno.
                                    if (GuiasError == "")
                                    {
                                        GuiasError = tGuia + "-" + nroSucursal + "-" + nGuia;
                                    }
                                    else
                                    {
                                        GuiasError = GuiasError + tGuia + "-" + nroSucursal + "-" + nGuia;
                                    }
                                }

                                if (GuiasError == "")
                                {
                                    try
                                    {
                                        //guarda en la tabla de guias retenidas retencion
                                        //el clienteid va en 0, porque se penso guardar por cliente por las dudas, pero dp se cambio Fquiroga
                                        Int32?datos = _guiasDominio.InsertarGuiaEnRetencion(guiaidST, 0, Nrocaso, usuario.UsuarioID, ObDetalle, ObservacionManualUsuario);
                                        lstDatosIngresados.Add(datos);
                                    }
                                    catch (Exception ex)
                                    {
                                        ((ErrorWeb)(this.phErrores.Controls[0])).setMensaje((ex.Message));
                                    }
                                }
                            }
                            else
                            {
                                GuiasError = GuiasError + tGuia + "-" + nroSucursal + "-" + nGuia;
                            }
                        }
                        else
                        {
                            GuiasError = GuiasError + tGuia + "-" + nroSucursal + "-" + nGuia + "Código de Observación Incorrecto";//no existe la observacion ingresada
                        }
                    }//termina de ver las guias que estan cargando


                    if (GuiasError == "")//si alguna guia tiene algun error
                    {
                        this.txtGuiaIndex.Text = "0";

                        string scriptString = "<script language=JavaScript>\n";
                        scriptString += "alert('Retención Exitosa');\n";
                        scriptString += "</script>";
                        Page.RegisterStartupScript("scrip", scriptString);
                    }
                    else
                    {
                        this.txtGuiaIndex.Text      = "0";
                        lblMensaje.Text             = "Las siguientes guias tienen problemas para ser retenidas: " + GuiasError;
                        lblMensaje.Visible          = true;
                        this.trMensajeError.Visible = true;
                    }
                }
            }
            catch (Exception ex)
            {
                ((ErrorWeb)(this.phErrores.Controls[0])).setMensaje((ex.Message));
            }
        }