protected void grid_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            try
            {
                // Doy de baja el registro
                ICodigoPostalAgrupacion codigoPostal = CodigoPostalAgrupacionFactory.GetCodigoPostalAgrupacion();
                codigoPostal.DeleteRetiroEntrega(Convert.ToInt32(e.Keys["CodigoPostalAgrupacionRetiroEntregaID"]));

                // Cargo la grilla nuevamente
                BindGrid(grid.PageIndex);
            }
            catch (Exception ex)
            {
                ((ErrorWeb)this.phErrores.Controls[0]).setMensaje(ex.Message.ToString());
            }
        }
        private void BindGrid(Int32 currentPage)
        {
            try
            {
                // Configuro la grilla
                SisPackController.AdministrarGrillas.Configurar(grid, this.CantidadOpciones);

                // busco los datos
                ICodigoPostalAgrupacion codigoPostal     = CodigoPostalAgrupacionFactory.GetCodigoPostalAgrupacion();
                DsCodigoPostalAgrupacionRetiroEntrega ds = codigoPostal.GetByFilterRetiroEntrega(txtLocalidadDescrip.Text);

                // Cargo los datos en la grilla
                grid.PageIndex  = currentPage;
                grid.DataSource = ds.Datos;
                grid.DataBind();
            }
            catch
            {
                ((ErrorWeb)this.phErrores.Controls[0]).setMensaje("Error al cargar listado de agrupaciones de retiro entrega");
            }
        }
        /// <summary>
        /// Metodo que filtra los clientes por agencia, de acuerdo al origen que los clientes tienen en sus convenios.
        /// Solo busca entre los clientes CORPORATIVOS!!!!!!
        /// </summary>
        private void BuscarPorAgencia()
        {
            int total = 0;

            try
            {
                IAdministrarClientes clientes = AdministrarClientesFactory.GetAdministrarClientes();
                DsClientesGuia       ds       = new DsClientesGuia();
                //DsClientesGuia ds = clientes.GetClientesCorpOrigenSet(codigo,nombre,"",apellido,cuit);
                IAgencia agencia = AgenciaFactory.GetAgencia();
                agencia.AgenciaID = Convert.ToInt32(this.agenciaID);
                //OJO!!!
                agencia.ConsultarBasico();
                int localidadID    = agencia.Domicilio.Localidad.LocalidadID;
                int codigoPostalID = agencia.Domicilio.OCodigoPostal.CodigoPostalID;

                /*SFE: Desarrollo de Codigos Postales. Veo si la localidad origen de la Agencia esta incluida en una agrupacion de codigos postales. Me traigo el ID de la agrupacion para ver si esta como origenflete en un convenio de cliente*/
                ICodigoPostalAgrupacion codigoPostalAgrupacion = CodigoPostalAgrupacionFactory.GetCodigoPostalAgrupacion();
                int agrupacionLocalidadOrigenID = codigoPostalAgrupacion.GetAgrupacionDeLocalidad(localidadID, codigoPostalID);

                int    provinciaID    = agencia.Domicilio.Localidad.Provincia.ProvinciaID;
                int    departamentoID = agencia.Domicilio.Localidad.Departamento.DepartamentoID;
                int    paisID         = agencia.Domicilio.Localidad.Provincia.Pais.PaisID;
                string filtroCorp     = "";
                int    totalPrueba;

                if (this.tipoCliConsul != null)
                {
                    if (tipoCliConsul == "1")
                    {
                        ds = clientes.GetClientesCorpOrigenSet(codigo, nombre, "", apellido, cuit, 0, out totalPrueba,
                                                               Utiles.Validaciones.obtieneEntero(agenciaID), localidadID, departamentoID, provinciaID, paisID, codigoPostalID);

                        /*filtroCorp = "Codigo LIKE '" + codigo + "%'AND Nombre LIKE '" + nombre + "%' AND Apellido LIKE'%"+ apellido +
                         *      "%' AND TipoCliente = 1 AND NroCuit like '" + this.cuit + "%' AND ((TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Agencia + " AND OrigenID=" + agenciaID +") OR (TipoOrigenDestinoID=" +(int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Localidad +" AND OrigenID="+ localidadID +
                         *      ")OR ( TipoOrigenDestinoID = "+ (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Departamento + " AND OrigenID=" + departamentoID +
                         *      ")OR (TipoOrigenDestinoID = " + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Provincia + " AND OrigenID=" + provinciaID +
                         *      ") OR (TipoOrigenDestinoID = " + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Pais + " AND OrigenID=" + paisID + ") OR (TipoOrigenDestinoID = 0 AND OrigenID = 0))";*/

                        //Utiles.DataSetHelper.RemoveEqualRows(ds.Datos,"ClienteID", ""); //filtroCorp
                        total = ds.Datos.Select("").Length;                         //filtroCorp
                    }
                    else
                    {
                        ds = clientes.GetClientesEvenOrigenSet(codigo, nombre, "", apellido, cuit, 0, out totalPrueba);

                        /*filtroCorp = "Codigo LIKE '" + codigo + "%'AND Nombre LIKE '" + nombre + "%' AND Apellido LIKE'%"+ apellido +
                         *      "%' AND TipoCliente = 0 AND NroCuit like '" + this.cuit + "'";*/
                        total = ds.Datos.Rows.Count;
                    }
                }

                /*
                 * string filtro = "Codigo LIKE '" + codigo + "%' AND Nombre LIKE '%" + nombre + "%' AND Apellido LIKE'%"+ apellido +
                 *                                                                      "%' AND (TipoCliente = 0 OR (TipoCliente = 1 AND ((TipoOrigenDestinoID="+ (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Agencia + " AND OrigenID=" + agenciaID + ") OR (TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Localidad + " AND OrigenID=" + localidadID +
                 *                                                                      ") OR ( TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Departamento + " AND OrigenID=" + departamentoID + ") OR (TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Provincia + " AND OrigenID=" + provinciaID +
                 *                                                                      " )OR (TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Pais + " AND OrigenID=" + paisID +" ))))";
                 *
                 * DsClientesGuia.DatosRow[] drLista = (DsClientesGuia.DatosRow[])ds.Datos.Select ("Codigo LIKE '" + codigo + "%' AND Nombre LIKE '%" + nombre + "%' AND Apellido LIKE'%"+ apellido +
                 *                                                                      "%' AND ((TipoOrigenDestinoID="+ (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Agencia + " AND OrigenID=" + agenciaID + ") OR (TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Localidad + " AND OrigenID=" + localidadID +
                 *                                                                      ") OR ( TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Departamento + " AND OrigenID=" + departamentoID + ") OR (TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Provincia + " AND OrigenID=" + provinciaID +
                 *                                                                      " )OR (TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Pais + " AND OrigenID=" + paisID +" ))","ClienteID");
                 */
                //DsClientesGuia.DatosDataTable  tablaResul;
                //DataTable tablaResul;


                //tablaResul = Utiles.DataSetHelper.SelectDistinct("Datos", ds.Datos , "ClienteID",filtro);
                //tablaResul = Utiles.DataSetHelper.SelectDistinct("Datos", ds.Datos , "ClienteID",filtro);
                //Utiles.DataSetHelper.RemoveEquals((DataRowCollection)drLista,"ClienteID");
                //	System.Data.DataTable tablaResul = new DataTable();
                //	tablaResul = Utiles.DataSetHelper.SelectDistinct("Resul",ds.Datos,"ClienteID", filtro);

                /*
                 * DsClientesGuia.DatosRow[] drLista = (DsClientesGuia.DatosRow[])ds.Datos.Select ("Codigo LIKE '" + codigo + "%' AND Nombre LIKE '%" + nombre + "%' AND Apellido LIKE'%"+ apellido +
                 *      "%' AND ((TipoOrigenDestinoID="+ (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Agencia + " AND OrigenID=" + agenciaID + ") OR (TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Localidad + " AND OrigenID=" + localidadID +
                 *      ") OR ( TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Departamento + " AND OrigenID=" + departamentoID + ") OR (TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Provincia + " AND OrigenID=" + provinciaID +
                 *      " )OR (TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Pais + " AND OrigenID=" + paisID +" ))","ClienteID");
                 */
                /*
                 * select * from #temp
                 * where Codigo LIKE '6%'
                 * AND Nombre LIKE '%%'
                 * AND Apellido LIKE'%'
                 * AND (TipoCliente = 0 OR (TipoCliente = 1 AND ((TipoOrigenDestinoID=1 AND OrigenID=1) OR (TipoOrigenDestinoID=2 AND OrigenID=1)
                 * OR ( TipoOrigenDestinoID = 3 AND OrigenID=1)
                 * OR (TipoOrigenDestinoID = 4 AND OrigenID=1 )
                 * OR (TipoOrigenDestinoID = 5 AND OrigenID=1 ))))
                 *
                 * string filtroCorp = "Codigo LIKE '" + codigo + "%'AND Nombre LIKE '%" + nombre + "%' AND Apellido LIKE'%"+ apellido +
                 * "%' AND TipoCliente = 1 AND ((TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Agencia + " AND OrigenID=" + agenciaID +") OR (TipoOrigenDestinoID=" +(int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Localidad +" AND OrigenID="+ localidadID +
                 * ")OR ( TipoOrigenDestinoID = "+ (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Departamento + " AND OrigenID=" + departamentoID +
                 * ")OR (TipoOrigenDestinoID = " + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Provincia + " AND OrigenID=" + provinciaID +
                 * ") OR (TipoOrigenDestinoID = " + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Pais + " AND OrigenID=" + paisID + ") OR (TipoOrigenDestinoID = 0 AND OrigenID = 0))";
                 *
                 * Utiles.DataSetHelper.RemoveEqualRows(ds.Datos,"ClienteID", filtroCorp);*/
/*
 *                              string filtro  = "Codigo LIKE '" + codigo + "%'AND Nombre LIKE '%" + nombre + "%' AND Apellido LIKE'%"+ apellido +
 *                                      "%' AND (TipoCliente = 0 OR (TipoCliente = 1 AND ((TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Agencia + " AND OrigenID=" + agenciaID +") OR (TipoOrigenDestinoID=" +(int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Localidad +" AND OrigenID="+ localidadID +
 *                                      ")OR ( TipoOrigenDestinoID = "+ (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Departamento + " AND OrigenID=" + departamentoID +
 *                                      ")OR (TipoOrigenDestinoID = " + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Provincia + " AND OrigenID=" + provinciaID +
 *                                      ") OR (TipoOrigenDestinoID = " + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Pais + " AND OrigenID=" + paisID + ") OR (TipoOrigenDestinoID = 0 AND OrigenID = 0))))";
 *                              Utiles.DataSetHelper.RemoveEqualRows(ds.Datos,"ClienteID", filtro);*///NATI
                //total = Utiles.DataSetHelper.DeleteCollectionEqualRows(drLista,"ClienteID");

                //if(tablaResul != null)
                //total = tablaResul.Rows.Count;
                //total = ds.Datos.Select(filtro).Length;// tablaResul.Rows.Count;
                ////total = ((DsClientesGuia.DatosRow[]) ds.Datos.Rows
                //total = ds.Datos.Select(filtro).Length;


                //total = ds.Datos.Select(filtroCorp).Length; --original



                //[0];
                //else
                //	total = 0;
                //total = drLista.Length;

                if (ds == null)
                {
                    total = 0;
                }

                if (total > 0)
                {
                    if (total == 1)
                    {
                        //DsClientesGuia.DatosRow dr = (DsClientesGuia.DatosRow) ((DsClientesGuia.DatosDataTable) ds.Datos).Rows[0]; //drLista[0];

                        //DsClientesGuia.DatosRow dr =(DsClientesGuia.DatosRow) ds.Datos.Rows[0];
                        //DataRow dr = tablaResul.Rows[0];
                        //DsClientesGuia.DatosRow dr =(DsClientesGuia.DatosRow) drLista[0];
                        //DsClientesGuia.DatosRow dr = (DsClientesGuia.DatosRow) ((DsClientesGuia.DatosDataTable)drLista).Rows[0]; //drLista[0];

                        /*
                         * this.txtClienteID.Text = dr["ClienteID"].ToString();
                         * this.txtTipoDoc.Text= dr["TipoDoc"] == null ? "" : dr["TipoDoc"].ToString();
                         * this.txtCodigo.Text = dr["Codigo"] == null ? "" : dr["Codigo"].ToString();
                         * this.txtNombre.Text = dr["Nombre"] == null ? "": dr["Nombre"].ToString();
                         * this.txtApellido.Text = dr["Apellido"] == null ? "" : dr["Apellido"].ToString();
                         * this.txtCalle.Text = dr["Calle"] == null ? "" : dr["Calle"].ToString();
                         * this.txtCalleNro.Text=dr["CalleNro"] == null ? "" : dr["CalleNro"].ToString();
                         * this.txtTelefono.Text=dr["Telefono"] == null ? "" : dr ["Telefono"].ToString();
                         * this.txtFax.Text=dr["Fax"] == null ? "" : dr["Fax"].ToString();
                         * this.txtLocalidadID.Text=dr["LocalidadID"] == null ? "" : dr["LocalidadID"].ToString();
                         * this.txtProvinciaID.Text=dr["ProvinciaID"] == null ? "" : dr["ProvinciaID"].ToString();
                         * this.txtDpto.Text=dr["Depto"] == null ? "" : dr["Depto"].ToString();
                         * this.txtCondicionIVA.Text=dr["CondicionIvaID"] == null ? "" : dr["CondicionIvaID"].ToString();
                         * this.txtCondicionPago.Text=dr["CondicionPagoDescrip"] == null ? "" : dr["CondicionPagoDescrip"].ToString();;
                         * this.txtCuit.Text=dr["NroCUIT"] == null ? "" : dr["NroCUIT"].ToString();
                         * this.txtTipoCliente.Text=dr["TipoCliente"].ToString();
                         */
                        //DsClientesGuia.DatosRow dr = (DsClientesGuia.DatosRow)((DsClientesGuia.DatosRow[]) ds.Datos.Select(filtro))[0];
                        DsClientesGuia.DatosRow dr = (DsClientesGuia.DatosRow)((DsClientesGuia.DatosRow[])ds.Datos.Select(filtroCorp))[0];
                        Session["ClienteCorp.ClienteID"] = dr.ClienteID;
                        this.txtClienteID.Text           = dr.ClienteID.ToString();
                        this.txtTipoDoc.Text             = dr.IsTipoDocNull()? "":dr.TipoDoc.ToString();
                        this.txtCodigo.Text   = dr.IsCodigoNull() ? "" : dr.Codigo;
                        this.txtNombre.Text   = dr.IsNombreNull()? "": dr.Nombre;
                        this.txtApellido.Text = dr.IsApellidoNull()? "": dr.Apellido;


                        if (tipoCliConsul == "1")
                        {
                            /*SFE: Implementacion Codigos Postales. Buscar el domicilio del cliente en la tabla GuiaFacturaCorporativo.*/
                            DsClientesGuia dsC = new DsClientesGuia();
                            dsC = clientes.GetClientesCorpDomicilio(dr.ClienteID, Utiles.Validaciones.obtieneEntero(agenciaID), (int)NegociosSisPackInterface.SisPack.TipoAgenteGuia.Remitente);
                            if (dsC.Datos.Count > 0)
                            {
                                DsClientesGuia.DatosRow drC = (DsClientesGuia.DatosRow)dsC.Tables[0].Rows[0];
                                dr.Calle       = drC.IsCalleNull() ? "" : drC.Calle;
                                dr.CalleNro    = drC.IsCalleNroNull() ? "" : drC.CalleNro;
                                dr.Telefono    = drC.IsTelefonoNull() ? "" : drC.Telefono;
                                dr.TelCodArea  = drC.IsTelCodAreaNull() ? "" : drC.TelCodArea;
                                dr.LocalidadID = drC.LocalidadID;
                                dr.ProvinciaID = drC.ProvinciaID;
                                dr.Depto       = drC.IsDeptoNull() ? "" : drC.Depto;
                                dr.Fax         = drC.IsFaxNull() ? "" : drC.Fax;
                                //VSA: Modificación desarrollo Código postales
                                dr.CodPostal                 = drC.IsCodPostalNull() ? "" : drC.CodPostal;
                                dr.CodigoPostalID            = drC.IsCodigoPostalIDNull() ? 0 : drC.CodigoPostalID;
                                dr.Localidad                 = drC.IsLocalidadNull() ? "" : drC.Localidad;
                                dr.DomicilioID               = drC.IsDomicilioIDNull() ? 0 : drC.DomicilioID;
                                dr.Provincia                 = drC.IsProvinciaNull() ? "" : drC.Provincia;
                                Session["DsClientesGuiaRem"] = drC;
                            }
                            /*SFE: Implementacion Codigos Postales. Buscar el domicilio del cliente en la tabla GuiaFacturaCorporativo.*/
                        }
                        this.txtCalle.Text           = dr.IsCalleNull()? "":dr.Calle;
                        this.txtCalleNro.Text        = dr.IsCalleNroNull()? "":dr.CalleNro;
                        this.txtTelefono.Text        = dr.IsTelefonoNull()? "":dr.Telefono;
                        this.txtTelefonoCodArea.Text = dr.IsTelCodAreaNull() ? "" : dr.TelCodArea;
                        this.txtFax.Text             = dr.IsFaxNull()? "":dr.Fax;
                        this.txtLocalidadID.Text     = dr.IsLocalidadIDNull()?"":dr.LocalidadID.ToString();
                        this.txtDomicilioID.Text     = dr.IsDomicilioIDNull() ? "" : dr.DomicilioID.ToString();
                        this.txtProvinciaID.Text     = dr.IsProvinciaIDNull()?"":dr.ProvinciaID.ToString();
                        this.txtDpto.Text            = dr.IsDeptoNull() ? "" : dr.Depto;
                        //VSA: Modificación desarrollo Código postales
                        this.txtCodPostal.Text      = dr.IsCodPostalNull() ? "" : dr.CodPostal;
                        this.txtCodigoPostalID.Text = dr.IsCodigoPostalIDNull() ? "" : dr.CodigoPostalID.ToString();
                        this.txtLocalidad.Text      = dr.IsLocalidadNull() ? "" : dr.Localidad;
                        this.txtProvincia.Text      = dr.IsProvinciaNull() ? "" : dr.Provincia;
                        if (this.tipoCliConsul == "1")
                        {
                            string locDescrip = dr.IsLocalidadNull()?"":dr.Localidad;
                            this.txtLocalidades.Text = this.txtLocalidadID.Text + "," + locDescrip + ";";
                        }
                        else
                        {
                            this.txtLocalidades.Text = string.Empty;
                            // SFE: Desarrollo de codigos postales, se comenta el llenado de este txt
                            //this.txtLocalidades.Text = LlenarCombos.LlenarStringLocalidades(Convert.ToInt32(this.txtProvinciaID.Text));
                        }


                        this.txtCondicionIVA.Text  = dr.IsCondicionIvaIDNull()? "":dr.CondicionIvaID.ToString();
                        this.txtCondicionPago.Text = dr.IsCondicionPagoDescripNull()?"":dr.CondicionPagoDescrip;
                        this.txtCuit.Text          = dr.IsNroCUITNull()? "": dr.NroCUIT;
                        this.txtTipoCliente.Text   = dr.TipoCliente.ToString();
                        this.txtErrorMsg.Text      = "";
                        this.txtOpen.Text          = "";


                        //Aqui se ejecuta el SP que busca por UVenta para un cliente, desde un origen.
                        //Sólo se ejecuta cuando se selecciona un cliente, y cuando se filtra por agencia.
                        this.txtProducto.Text   = "";
                        this.txtTEntrega.Text   = "";
                        this.txtServicio.Text   = "";
                        this.txtModEntrega.Text = "";


                        if (this.tipoCliConsul == "1")
                        {
                            IAdministrarGuias oAdmGuia = AdministrarGuiasFactory.GetAdministrarGuias();
                            oAdmGuia.ClienteCorp.ClienteID = dr.ClienteID;
                            oAdmGuia.AgenciaOrigenID       = agencia.AgenciaID;
                            //ICotizacionCliente oCotiz = CotizacionClienteFactory.GetCotizacionCliente();
                            //oCotiz.ClienteID = dr.ClienteID;//Convert.ToInt32(dr["ClienteID"]);
                            //oCotiz.ClienteID = Convert.ToInt32(dr["ClienteID"]);
                            //DsUnidadVentaTEntregaProductoServicio dsProd = oCotiz.GetUVentaServTEntregaModOrigenCotizadasByClienteIDDataSet();
                            DsUnidadVentaTEntregaProductoServicio dsProd = oAdmGuia.GetUVentaServTEntregaModOrigenCotizadasByClienteAgenciaDataSet();

                            if (dsProd == null)
                            {
                                return;
                            }

                            DsUnidadVentaTEntregaProductoServicio.DatosRow[] drDatos = (DsUnidadVentaTEntregaProductoServicio.DatosRow[])dsProd.Datos.Select("((TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Agencia + " AND OrigenID=" + agenciaID + ") OR (TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.AgrupacionLocalidad + " AND OrigenID=" + agrupacionLocalidadOrigenID +
                                                                                                                                                             ")  OR (TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Localidad + " AND OrigenID=" + localidadID +
                                                                                                                                                             ") OR ( TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Departamento + " AND OrigenID=" + departamentoID + ") OR (TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Provincia + " AND OrigenID=" + provinciaID +
                                                                                                                                                             " )OR (TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Pais + " AND OrigenID=" + paisID + " )OR (TipoOrigenDestinoID = 0 AND OrigenID = 0))");

                            //SortedList listaProd = new SortedList();


                            if (drDatos.Length > 0)
                            {
                                string datosProd       = "";
                                string datosTEntrega   = "";
                                string datosServ       = "";
                                string datosModEntrega = "";


                                /*	foreach(DsUnidadVentaTEntregaProductoServicio.DatosRow dr in ds.Datos.Rows)
                                 *              datos += dr.ProductoID + "," + dr.ProductoDescrip + "," + dr.TiempoEntregaID + "," + dr.TiempoEntregaDescrip + "," + (dr.IsServicioIDNull() ? 0 : Convert.ToInt32(dr.ServicioID)) + "," + (dr.IsServicioDescripNull() ? "Sin Servicio" : dr.ServicioDescrip) + "," + dr.ModalidadEntregaID + "," + dr.ModalidadEntregaDescrip + ";" ;
                                 */
                                foreach (DsUnidadVentaTEntregaProductoServicio.DatosRow drProd in dsProd.Datos.Rows)
                                {
                                    //if(!listaProd.Contains(dr.ProductoID))
                                    //listaProd.Add(dr.ProductoID,dr.ProductoDescrip);

                                    string nuevoProd = drProd.ProductoID + "," + drProd.ProductoDescrip + ";";
                                    if (datosProd.IndexOf(nuevoProd) < 0)
                                    {
                                        datosProd += nuevoProd;
                                    }

                                    string nuevoTEntrega = drProd.ProductoID + "," + drProd.TiempoEntregaID + "," + drProd.TiempoEntregaDescrip + ";";
                                    if (datosTEntrega.IndexOf(nuevoTEntrega) < 0)
                                    {
                                        datosTEntrega += nuevoTEntrega;
                                    }

                                    string nuevoServ = drProd.UnidadVentaID + "," + drProd.ProductoID + "," + drProd.TiempoEntregaID + "," + (drProd.IsServicioIDNull() ? 0 : Convert.ToInt32(drProd.ServicioID)) + "," + (drProd.IsServicioDescripNull() ? "Sin Servicio" : drProd.ServicioDescrip) + ";";
                                    if (datosServ.IndexOf(nuevoServ) < 0)
                                    {
                                        datosServ += nuevoServ;
                                    }

                                    string nuevaMEntrega = drProd.UnidadVentaID + "," + drProd.ModalidadEntregaID + "," + drProd.ModalidadEntregaDescrip + ";";
                                    if (datosModEntrega.IndexOf(nuevaMEntrega) < 0)
                                    {
                                        datosModEntrega += nuevaMEntrega;
                                    }
                                }

                                this.txtProducto.Text   = datosProd;
                                this.txtTEntrega.Text   = datosTEntrega;
                                this.txtServicio.Text   = datosServ;
                                this.txtModEntrega.Text = datosModEntrega;
                            }
                        }
                    }
                    else
                    {
                        this.txtCodigo.Text        = this.codigo;
                        this.txtNombre.Text        = this.nombre;
                        this.txtApellido.Text      = this.apellido;
                        this.txtAgenciaID.Text     = this.agenciaID;
                        this.txtTipoCliConsul.Text = this.tipoCliConsul;
                        this.txtCuit.Text          = this.cuit;
                        this.txtOpen.Text          = "S";
                    }
                }
                else
                {
                    this.txtClienteID.Text = "";
                    this.txtErrorMsg.Text  = "No se encontraron datos.";
                    this.txtOpen.Text      = "";
                }
            }
            catch (Exception ex)
            {
                this.txtErrorMsg.Text = "Error al consultar datos de clientes: " + ex.Message;
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            #region IsAuthenticated
            if (Session["Usuario"] != null)
            {
                usuario = (IUsuarios)Session["Usuario"];
            }


            if (User.Identity.IsAuthenticated)
            {
                string       sOpcion = "CodigoPostalAgrupacionRetiroEntregaConsul";
                SisPacK.Menu oMenu   = (SisPacK.Menu) this.FindControl("Menu1");
                this.ValidarSeguridad(oMenu, sOpcion);
            }
            #endregion

            if (IsPostBack == false)
            {
                CargarCombos();

                codigoPostalAgrupacion        = CodigoPostalAgrupacionFactory.GetCodigoPostalAgrupacion();
                codigoPostalAgrupacionListado = CodigoPostalAgrupacionFactory.GetCodigoPostalAgrupacion();
                dsLocalidades = new DsLocalidadesCodigosPostales();

                // Reviso si se paso un id de tarifario
                if (CodigoPostalAgrupacionRetiroEntregaID != null)
                {
                    // Si se paso. Busco y cargo los datos
                    codigoPostalAgrupacion.GetOneRetiroEntrega(CodigoPostalAgrupacionRetiroEntregaID ?? 0);
                    CargarDatosEnPantalla();
                }
                else
                {
                    // No se paso. Es un registro nuevo
                    pnlDatosTarifario.Visible = false;
                }

                // Cargo el dataset en memoria
                Session["CodigoPostalAgrupacionRetiroEntrega"]       = codigoPostalAgrupacion;
                Session["DsLocalidadesCodigosPostalesRetiroEntrega"] = null;
                BindGrid();
                BindGridLocalidades();
            }
            else
            {
                if (Session["CodigoPostalAgrupacionRetiroEntrega"] != null)
                {
                    //dsTarifario = (DsTarifarioConceptoFacturable)Session["TarifarioConceptoFacturable"];
                    codigoPostalAgrupacion = (ICodigoPostalAgrupacion)Session["CodigoPostalAgrupacionRetiroEntrega"];
                }
                else
                {
                    //dsTarifario = new DsTarifarioConceptoFacturable();
                    codigoPostalAgrupacion = CodigoPostalAgrupacionFactory.GetCodigoPostalAgrupacion();
                    Session["CodigoPostalAgrupacionRetiroEntrega"] = codigoPostalAgrupacion;
                }

                if (Session["DsLocalidadesCodigosPostalesRetiroEntrega"] != null)
                {
                    dsLocalidades = (DsLocalidadesCodigosPostales)Session["DsLocalidadesCodigosPostalesRetiroEntrega"];
                }
                else
                {
                    dsLocalidades = new DsLocalidadesCodigosPostales();
                    Session["DsLocalidadesCodigosPostalesRetiroEntrega"] = dsLocalidades;
                }
            }

            if (Utiles.Validaciones.obtieneEntero(ddlProvincia.SelectedValue) == (int)NegociosSisPackInterface.SisPack.Provincia.BsAs)
            {
                gvLocalidades.Columns[4].Visible = true;
                //gvLocalidadesAgrupadas.Columns[2].Visible = true;
            }
            else
            {
                gvLocalidades.Columns[4].Visible = false;
                //gvLocalidadesAgrupadas.Columns[2].Visible = false;
            }
        }
        private void ObtenerUVentaOrigenByCliente(int clienteID, ref string sProducto, ref string sTEntrega, ref string sServicio, ref string sModEntrega)
        {
            string agenciaID = this.txtAgenciaID.Text;

            //Si la localidad es igual a cero, significa que aún no se ha consultado la agencia
            if (agenciaFiltro.Domicilio.Localidad.LocalidadID == 0)
            {
                agenciaFiltro           = AgenciaFactory.GetAgencia();
                agenciaFiltro.AgenciaID = Convert.ToInt32(agenciaID);
                agenciaFiltro.ConsultarBasico();
            }
            int localidadID    = agenciaFiltro.Domicilio.Localidad.LocalidadID;
            int codigoPostalID = agenciaFiltro.Domicilio.OCodigoPostal.CodigoPostalID;

            /*SFE: Desarrollo de Codigos Postales. Veo si la localidad origen de la Agencia esta incluida en una agrupacion de codigos postales. Me traigo el ID de la agrupacion para ver si esta como origenflete en un convenio de cliente*/
            ICodigoPostalAgrupacion codigoPostalAgrupacion = CodigoPostalAgrupacionFactory.GetCodigoPostalAgrupacion();
            int agrupacionLocalidadOrigenID = codigoPostalAgrupacion.GetAgrupacionDeLocalidad(localidadID, codigoPostalID);

            int provinciaID    = agenciaFiltro.Domicilio.Localidad.Provincia.ProvinciaID;
            int departamentoID = agenciaFiltro.Domicilio.Localidad.Departamento.DepartamentoID;
            int paisID         = agenciaFiltro.Domicilio.Localidad.Provincia.Pais.PaisID;

            /*ICotizacionCliente oCotiz = CotizacionClienteFactory.GetCotizacionCliente();
             * oCotiz.ClienteID = clienteID;
             * DsUnidadVentaTEntregaProductoServicio dsProd = oCotiz.GetUVentaServTEntregaModOrigenCotizadasByClienteIDDataSet();
             */
            IAdministrarGuias oAdmGuia = AdministrarGuiasFactory.GetAdministrarGuias();

            oAdmGuia.ClienteCorp.ClienteID = clienteID;
            oAdmGuia.AgenciaOrigenID       = agenciaFiltro.AgenciaID;
            DsUnidadVentaTEntregaProductoServicio dsProd = oAdmGuia.GetUVentaServTEntregaModOrigenCotizadasByClienteAgenciaDataSet();

            if (dsProd == null)
            {
                return;
            }

            DsUnidadVentaTEntregaProductoServicio.DatosRow[] drDatos = (DsUnidadVentaTEntregaProductoServicio.DatosRow[])dsProd.Datos.Select("((TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Agencia + " AND OrigenID=" + agenciaID + ") OR (TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.AgrupacionLocalidad + " AND OrigenID=" + agrupacionLocalidadOrigenID +
                                                                                                                                             ")   OR (TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Localidad + " AND OrigenID=" + localidadID +
                                                                                                                                             ") OR ( TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Departamento + " AND OrigenID=" + departamentoID + ") OR (TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Provincia + " AND OrigenID=" + provinciaID +
                                                                                                                                             " )OR (TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Pais + " AND OrigenID=" + paisID + " ) OR (TipoOrigenDestinoID = 0 AND OrigenID=0))");

            if (drDatos.Length > 0)
            {
                string datosProd       = "";
                string datosTEntrega   = "";
                string datosServ       = "";
                string datosModEntrega = "";


                /*	foreach(DsUnidadVentaTEntregaProductoServicio.DatosRow dr in ds.Datos.Rows)
                 *                                      datos += dr.ProductoID + "," + dr.ProductoDescrip + "," + dr.TiempoEntregaID + "," + dr.TiempoEntregaDescrip + "," + (dr.IsServicioIDNull() ? 0 : Convert.ToInt32(dr.ServicioID)) + "," + (dr.IsServicioDescripNull() ? "Sin Servicio" : dr.ServicioDescrip) + "," + dr.ModalidadEntregaID + "," + dr.ModalidadEntregaDescrip + ";" ;
                 */
                foreach (DsUnidadVentaTEntregaProductoServicio.DatosRow drProd in dsProd.Datos.Rows)
                {
                    //if(!listaProd.Contains(dr.ProductoID))
                    //listaProd.Add(dr.ProductoID,dr.ProductoDescrip);

                    string nuevoProd = drProd.ProductoID + "," + drProd.ProductoDescrip + ";";
                    if (datosProd.IndexOf(nuevoProd) < 0)
                    {
                        datosProd += nuevoProd;
                    }

                    string nuevoTEntrega = drProd.ProductoID + "," + drProd.TiempoEntregaID + "," + drProd.TiempoEntregaDescrip + ";";
                    if (datosTEntrega.IndexOf(nuevoTEntrega) < 0)
                    {
                        datosTEntrega += nuevoTEntrega;
                    }

                    string nuevoServ = drProd.UnidadVentaID + "," + drProd.ProductoID + "," + drProd.TiempoEntregaID + "," + (drProd.IsServicioIDNull() ? 0 : Convert.ToInt32(drProd.ServicioID)) + "," + (drProd.IsServicioDescripNull() ? "Sin Servicio" : drProd.ServicioDescrip) + ";";
                    if (datosServ.IndexOf(nuevoServ) < 0)
                    {
                        datosServ += nuevoServ;
                    }

                    string nuevaMEntrega = drProd.UnidadVentaID + "," + drProd.ModalidadEntregaID + "," + drProd.ModalidadEntregaDescrip + ";";
                    if (datosModEntrega.IndexOf(nuevaMEntrega) < 0)
                    {
                        datosModEntrega += nuevaMEntrega;
                    }
                }

                sProducto   = datosProd;
                sTEntrega   = datosTEntrega;
                sServicio   = datosServ;
                sModEntrega = datosModEntrega;
            }
        }
        private void BindGridPorAgencia()
        {
            SisPackController.AdministrarGrillas.Configurar(this.dtgClientes, "ClienteID", this.CantidadOpciones);
            try
            {
                IAdministrarClientes clientes = AdministrarClientesFactory.GetAdministrarClientes();

                string codi = this.txtCodigo.Text;
                //string nombre = this.txtNombre.Text;
                string nombre         = this.txtNombreCompleto.Text;
                string nombreCompleto = this.txtNombreCompleto.Text;
                string apellido       = this.txtApellido.Text;
                string agenciaID      = this.txtAgenciaID.Text;
                agenciaFiltro           = AgenciaFactory.GetAgencia();
                agenciaFiltro.AgenciaID = Convert.ToInt32(agenciaID);
                agenciaFiltro.ConsultarBasico();
                int localidadID    = agenciaFiltro.Domicilio.Localidad.LocalidadID;
                int codigoPostalID = agenciaFiltro.Domicilio.OCodigoPostal.CodigoPostalID;

                /*SFE: Desarrollo de Codigos Postales. Veo si la localidad origen de la Agencia esta incluida en una agrupacion de codigos postales. Me traigo el ID de la agrupacion para ver si esta como origenflete en un convenio de cliente*/
                ICodigoPostalAgrupacion codigoPostalAgrupacion = CodigoPostalAgrupacionFactory.GetCodigoPostalAgrupacion();
                int agrupacionLocalidadOrigenID = codigoPostalAgrupacion.GetAgrupacionDeLocalidad(localidadID, codigoPostalID);

                int    provinciaID    = agenciaFiltro.Domicilio.Localidad.Provincia.ProvinciaID;
                int    departamentoID = agenciaFiltro.Domicilio.Localidad.Departamento.DepartamentoID;
                int    paisID         = agenciaFiltro.Domicilio.Localidad.Provincia.Pais.PaisID;
                string cuit           = this.txtNroCUIT.Text;

                string tipoCliConsul = this.txtTipoCliConsul.Text;
                string filtro        = "";

                //original
                //DsClientesGuia ds = clientes.GetClientesCorpOrigenSet(codi, nombre, nombreCompleto, apellido, cuit);


                //nuevo
                DsClientesGuia ds = new DsClientesGuia();

                int totalPrueba = 0;

                if (tipoCliConsul.Length > 0)
                {
                    if (tipoCliConsul == "0")                    //Cliente eventual
                    {
                        ds = clientes.GetClientesEvenOrigenSet(codi, nombre, nombreCompleto, apellido, cuit, dtgClientes.CurrentPageIndex, out totalPrueba);

                        /*filtro = "Codigo LIKE '" + codi + "%'AND Nombre LIKE '" + nombre + "%' AND Apellido LIKE'%"+ apellido +
                         *      "%' AND TipoCliente = 0 AND NroCuit like '" + cuit + "'";*/

                        dtgClientes.DataSource = ds.Datos.Select("");
                    }
                    else                     //Cliente corporativo
                    {
                        // 29/09/2014. Si viene de emision de conceptos no tiene que verificar convenios, sino traer todos los clientes
                        if (txtEsConceptoFacturacion.Text == "1")
                        {
                            ds = clientes.GetClientesCorpALLDataSet(codi, nombre, nombreCompleto, apellido, cuit, dtgClientes.CurrentPageIndex, out totalPrueba);
                        }
                        // 29/09/2014. Esta consulta estaba, si viene de la emision de guia, verifica los convenios
                        else
                        {
                            ds = clientes.GetClientesCorpOrigenSet(codi, nombre, nombreCompleto, apellido, cuit, dtgClientes.CurrentPageIndex, out totalPrueba, Utiles.Validaciones.obtieneEntero(agenciaID), localidadID, departamentoID, provinciaID, paisID, codigoPostalID);
                        }

                        /*
                         * filtro = "Codigo LIKE '" + codi + "%'AND NombreCompleto LIKE'"+ nombreCompleto +
                         *      "%' AND TipoCliente = 1 AND NroCuit like '" + cuit + "%' AND ((TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Agencia + " AND OrigenID=" + agenciaID +") OR (TipoOrigenDestinoID=" +(int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Localidad +" AND OrigenID="+ localidadID +
                         *      ")OR ( TipoOrigenDestinoID = "+ (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Departamento + " AND OrigenID=" + departamentoID +
                         *      ")OR (TipoOrigenDestinoID = " + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Provincia + " AND OrigenID=" + provinciaID +
                         *      ") OR (TipoOrigenDestinoID = " + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Pais + " AND OrigenID=" + paisID + ") OR (TipoOrigenDestinoID = 0 AND OrigenID = 0))";
                         */

                        Utiles.DataSetHelper.RemoveEqualRows(ds.Datos, "ClienteID", "");

                        dtgClientes.DataSource = ds.Datos.Select("");                         //filtro
                    }
                }
                else                 //VER QUE HACE ESTO!! -tavo-
                {
                    filtro = "Codigo LIKE '" + codi + "%'AND NombreCompleto LIKE'%" + nombreCompleto +
                             "%' AND TipoCliente = 1 AND NroCuit like '" + cuit + "' ((TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Agencia + " AND OrigenID=" + agenciaID + ") OR (TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.AgrupacionLocalidad + " AND OrigenID=" + agrupacionLocalidadOrigenID +
                             ")    OR (TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Localidad + " AND OrigenID=" + localidadID +
                             ")OR ( TipoOrigenDestinoID = " + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Departamento + " AND OrigenID=" + departamentoID +
                             ")OR (TipoOrigenDestinoID = " + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Provincia + " AND OrigenID=" + provinciaID +
                             ") OR (TipoOrigenDestinoID = " + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Pais + " AND OrigenID=" + paisID + ") OR (TipoOrigenDestinoID = 0 AND OrigenID = 0))";

                    Utiles.DataSetHelper.RemoveEqualRows(ds.Datos, "ClienteID", filtro);
                    dtgClientes.DataSource = ds.Datos.Select(filtro);
                }

                /*DsClientesGuia.DatosRow[] drLista = (DsClientesGuia.DatosRow[])ds.Datos.Select ("Codigo LIKE '" + codi + "%' AND Nombre LIKE '%" + nombre + "%' AND Apellido LIKE'%"+ apellido +
                 *      "%' AND ((TipoOrigenDestinoID="+ (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Agencia + " AND OrigenID=" + agenciaID + ") OR (TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Localidad + " AND OrigenID=" + localidadID +
                 *      ") OR ( TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Departamento + " AND OrigenID=" + departamentoID + ") OR (TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Provincia + " AND OrigenID=" + provinciaID +
                 *      " )OR (TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Pais + " AND OrigenID=" + paisID +" )OR(TipoCliente=False))","NombreCompleto");
                 */
                //Utiles.DataSetHelper.DeleteCollectionEqualRows(drLista,"ClienteID");

                /*	string filtro  = "Codigo LIKE '" + codi + "%'AND Nombre LIKE '%" + nombre + "%' AND Apellido LIKE'%"+ apellido +
                 *              "%' AND (TipoCliente = 0 OR (TipoCliente = 1 AND ((TipoOrigenDestinoID=" + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Agencia + " AND OrigenID=" + agenciaID +") OR (TipoOrigenDestinoID=" +(int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Localidad +" AND OrigenID="+ localidadID +
                 *              ")OR ( TipoOrigenDestinoID = "+ (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Departamento + " AND OrigenID=" + departamentoID +
                 *              ")OR (TipoOrigenDestinoID = " + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Provincia + " AND OrigenID=" + provinciaID +
                 *              ") OR (TipoOrigenDestinoID = " + (int)NegociosSisPackInterface.SisPack.TipoOrigenDestino.Pais + " AND OrigenID=" + paisID + ") OR (TipoOrigenDestinoID = 0 AND OrigenID = 0))))";
                 */


                //dtgClientes.DataSource = ds.Datos.Select(filtro);
                //dtgClientes.DataSource = ds.Datos.Select(filtro);
                //dtgClientes.DataSource = ds.Datos.Select("");
                dtgClientes.AllowCustomPaging = true;
                dtgClientes.VirtualItemCount  = totalPrueba;
                dtgClientes.DataBind();
            }
            catch (Exception ex)
            {
                throw ex;
                //this.txtErrorMsg.Text = "Error al consultar datos de clientes: " + ex.Message;
            }
        }