예제 #1
0
        public List <ModalidadEntrega> LLenarModalidadEntrega(string unidadVentaID, string clienteID)
        {
            IAdministrarGuias guia = AdministrarGuiasFactory.GetAdministrarGuias();

            guia.ClienteCorp.ClienteID = Utiles.Validaciones.obtieneEntero(clienteID);
            guia.UnidadVentaID         = Utiles.Validaciones.obtieneEntero(unidadVentaID);

            DsUnidadVentaTEntregaProductoServicio dsProd = guia.GetCotizacionClienteUVentaModalidadByClienteID();

            if (dsProd == null)
            {
                return(null);
            }

            List <ModalidadEntrega> modalidades = new List <ModalidadEntrega>();

            foreach (DsUnidadVentaTEntregaProductoServicio.DatosRow dr in dsProd.Datos.Rows)
            {
                ModalidadEntrega m = new ModalidadEntrega();
                m.ModalidadEntregaDescrip = dr.ModalidadEntregaDescrip;
                m.ModalidadEntregaID      = dr.ModalidadEntregaID;

                if ((from c in modalidades
                     where c.ModalidadEntregaID == dr.ModalidadEntregaID
                     select c).FirstOrDefault() == null)
                {
                    modalidades.Add(m);
                }
            }

            return(modalidades);
        }
예제 #2
0
        public List <UnidadVenta> LlenarUnidadesVentaCorporativo(string clienteID, string localidadOrigenID, string localidadDestinoID)
        {
            IAdministrarGuias oAdmGuia = AdministrarGuiasFactory.GetAdministrarGuias();

            oAdmGuia.ClienteCorp.ClienteID = Utiles.Validaciones.obtieneEntero(clienteID);
            oAdmGuia.ClienteCorpRemitente.DomicilioGuia.Localidad.LocalidadID    = Utiles.Validaciones.obtieneEntero(localidadOrigenID);
            oAdmGuia.ClienteCorpDestinatario.DomicilioGuia.Localidad.LocalidadID = Utiles.Validaciones.obtieneEntero(localidadDestinoID);
            DsUnidadVentaTEntregaProductoServicio dsProd = oAdmGuia.GetUVentaServTEntregaModOrigenCotizadasByClienteLocalidadDataSet();

            if (dsProd == null)
            {
                return(null);
            }


            List <UnidadVenta> unidades = new List <UnidadVenta>();

            foreach (DsUnidadVentaTEntregaProductoServicio.DatosRow dr in dsProd.Datos.Rows)
            {
                UnidadVenta m = new UnidadVenta();
                m.UnidadVentaDescrip = dr.UnidadVentaDescrip;
                m.UnidadVentaID      = dr.UnidadVentaID;

                if ((from c in unidades
                     where c.UnidadVentaID == dr.UnidadVentaID
                     select c).FirstOrDefault() == null)
                {
                    unidades.Add(m);
                }
            }

            return(unidades);
        }
예제 #3
0
        public bool Guardar()
        {
            if (this.ProductoID == 0)
            {
                this.ProductoID = Convert.ToInt32(Config.Conexion.EjecutarResultadoUnico("ProductoINS", Utiles.BaseDatos.StrToSql(ProductoDescrip),
                                                                                         DefineMovimientoMensual, Utiles.BaseDatos.IntToSql(DiasPermanenciaAgencia), Utiles.BaseDatos.IntToSql(UnidadNegocioID)));
            }
            else
            {
                Config.Conexion.EjecutarSinResultados("ProductoUPD", Utiles.BaseDatos.IntToSql(ProductoID), Utiles.BaseDatos.StrToSql(ProductoDescrip),
                                                      DefineMovimientoMensual, Utiles.BaseDatos.IntToSql(DiasPermanenciaAgencia), Utiles.BaseDatos.IntToSql(UnidadNegocioID));
            }

            //CacheDataManager.RemoveCacheValue(SisPack.CacheObjetos.UnidadVentaProductos.ToString());
            //CacheDataManager.RemoveCacheValue(SisPack.CacheObjetos.UnidadVentaTEntregaProducto.ToString());
            CacheDataManager.RemoveCacheValue(SisPack.CacheObjetos.UnidadVentaServicioTEntregaProducto.ToString());
            CacheDataManager.RemoveCacheValue(SisPack.CacheObjetos.UnidadVentaServicioTEntregaProductoConvenio.ToString());
            //CacheDataManager.RemoveCacheValue(SisPack.CacheObjetos.UnidadVentaModalidadesEntrega.ToString());

            /*SFE: Se comenta porque para codigos postales ya no se necesitaria. se utiliza el store que esta despues*/
            // Obtengo los datos actualizados, remuevo el cache viejo, y creo el nuevo caché con los nuevos datos
            // con esto logro que el tiempo se disminuya
            //DsDestinosGuias ds = new DsDestinosGuias();
            //Config.Conexion.LlenarTypeDataSet(ds.Datos, System.Data.CommandType.StoredProcedure, "UVentaModEntregaAgenciaDestinoSEL");
            //CacheDataManager.RemoveCacheValue(SisPack.CacheObjetos.UnidadVentaMEntregaDestino.ToString());
            //CacheDataManager.SetCacheValue(SisPack.CacheObjetos.UnidadVentaMEntregaDestino.ToString(), ds);
            // Limpio de cache los datos para la emisión de la guía
            (new AdministrarGuias()).LimpiarCacheUVAgLocParaEmisionGuia();
            //CacheDataManager.RemoveCacheValue(SisPack.CacheObjetos.UnidadVentaMEntregaDestino.ToString());


            DsUnidadVentaTEntregaProductoServicio dsuVenta = new DsUnidadVentaTEntregaProductoServicio();

            Config.Conexion.LlenarTypeDataSet(dsuVenta.Datos, System.Data.CommandType.StoredProcedure, "UVentaServTEntregaModEntregaProductoAgenciaOrigenSEL");
            CacheDataManager.RemoveCacheValue(SisPack.CacheObjetos.UVentaProductoServicioTEntregaMEntregaAgenciaOrigen.ToString());
            CacheDataManager.SetCacheValue(SisPack.CacheObjetos.UVentaProductoServicioTEntregaMEntregaAgenciaOrigen.ToString(), dsuVenta);

            List <Dominio.Entidades.ProductosParaGuia> lst;

            lst = IoC.GetObjectDominio <Dominio.Interfaces.Dominio.Guia.IDestinoGuiaDominio>().GetProductosParaGuia();
            CacheDataManager.RemoveCacheValue(SisPack.CacheObjetos.UVentaProductoServicioTEntregaMEntregaAgenciaOrigenList.ToString());
            CacheDataManager.SetCacheValue(SisPack.CacheObjetos.UVentaProductoServicioTEntregaMEntregaAgenciaOrigenList.ToString(), lst);

            /*SFE: Modificacion para consultar los servicios que puede recibir la agencia*/
            // Obtengo los datos actualizados, remuevo el cache viejo, y creo el nuevo caché con los nuevos datos
            // con esto logro que el tiempo se disminuya
            DsDestinosGuiaServicios dsServicios = new DsDestinosGuiaServicios();

            Config.Conexion.LlenarTypeDataSet(dsServicios.Datos, System.Data.CommandType.StoredProcedure, "UVentaModalidadEntregaServicioAgenciaDestinoSEL");
            CacheDataManager.RemoveCacheValue(SisPack.CacheObjetos.ServiciosGuiaDestino.ToString());
            CacheDataManager.SetCacheValue(SisPack.CacheObjetos.ServiciosGuiaDestino.ToString(), dsServicios);

            return(true);
        }
예제 #4
0
        private void ActualizarCacheModalidadEntrega()
        {
//			DsDestinosGuias ds = new DsDestinosGuias();
//			// Actualizo los datos del store procedure UVentaModEntregaAgenciaDestinoSEL en la cache
//			Config.Conexion.LlenarTypeDataSet(ds.Datos, System.Data.CommandType.StoredProcedure, "UVentaModEntregaAgenciaDestinoSEL");
//			CacheDataManager.RemoveCacheValue(SisPack.CacheObjetos.UnidadVentaMEntregaDestino.ToString());
//			CacheDataManager.SetCacheValue(SisPack.CacheObjetos.UnidadVentaMEntregaDestino.ToString(), ds);
//
            // Actualizo los datos del store procedure UVentaServTEntregaModEntregaProductoAgenciaOrigenSEL en la cache
            DsUnidadVentaTEntregaProductoServicio ds2 = new DsUnidadVentaTEntregaProductoServicio();

            Config.Conexion.LlenarTypeDataSet(ds2.Datos, System.Data.CommandType.StoredProcedure, "UVentaServTEntregaModEntregaProductoAgenciaOrigenSEL");
            CacheDataManager.RemoveCacheValue(SisPack.CacheObjetos.UVentaProductoServicioTEntregaMEntregaAgenciaOrigen.ToString());
            CacheDataManager.SetCacheValue(SisPack.CacheObjetos.UVentaProductoServicioTEntregaMEntregaAgenciaOrigen.ToString(), ds2);

            List <Dominio.Entidades.ProductosParaGuia> lst;

            lst = IoC.GetObjectDominio <Dominio.Interfaces.Dominio.Guia.IDestinoGuiaDominio>().GetProductosParaGuia();
            CacheDataManager.RemoveCacheValue(SisPack.CacheObjetos.UVentaProductoServicioTEntregaMEntregaAgenciaOrigenList.ToString());
            CacheDataManager.SetCacheValue(SisPack.CacheObjetos.UVentaProductoServicioTEntregaMEntregaAgenciaOrigenList.ToString(), lst);
        }
예제 #5
0
        public bool Guardar()
        {
            System.Data.SqlClient.SqlConnection  conexion = new System.Data.SqlClient.SqlConnection();
            System.Data.SqlClient.SqlTransaction transaccion;
            conexion.ConnectionString = Config.ConnectionString;
            conexion.Open();
            transaccion = conexion.BeginTransaction();

            try
            {
                if (this.servicioID == 0)
                {
                    this.servicioID = Convert.ToInt32(Config.Conexion.EjecutarResultadoUnico(transaccion, "ServicioINS", Utiles.BaseDatos.StrToSql(servicioDescrip),
                                                                                             Utiles.BaseDatos.IntToSql(UnidadNegocioID), this.soloParaAgencia, this.TieneFrecuenciaRendicion, this.TieneAdministracionDeuda, this.AsociadoAGuiaRendicionAgOrigen, this.AsociadoAGuiaRendicionAgDestino));

                    if (this.TipoIdentificacionID != 0)
                    {
                        Config.Conexion.EjecutarResultadoUnico(transaccion, "TipoIdentificacionServicioINS", this.ServicioID, this.TipoIdentificacionID);
                    }
                }
                else
                {
                    Config.Conexion.EjecutarSinResultados(transaccion, "ServicioUPD", Utiles.BaseDatos.IntToSql(ServicioID), Utiles.BaseDatos.StrToSql(ServicioDescrip),
                                                          Utiles.BaseDatos.IntToSql(UnidadNegocioID), this.soloParaAgencia, this.TieneFrecuenciaRendicion, this.TieneAdministracionDeuda, this.AsociadoAGuiaRendicionAgOrigen, this.AsociadoAGuiaRendicionAgDestino);

                    Config.Conexion.EjecutarSinResultados(transaccion, "TipoIdentificacionServicioUPD", this.ServicioID, this.TipoIdentificacionID);
                }

                //CacheDataManager.RemoveCacheValue(SisPack.CacheObjetos.UnidadVentaProductos.ToString());
                //CacheDataManager.RemoveCacheValue(SisPack.CacheObjetos.UnidadVentaTEntregaProducto.ToString());
                CacheDataManager.RemoveCacheValue(SisPack.CacheObjetos.UnidadVentaServicioTEntregaProducto.ToString());
                CacheDataManager.RemoveCacheValue(SisPack.CacheObjetos.UnidadVentaServicioTEntregaProductoConvenio.ToString());
                //CacheDataManager.RemoveCacheValue(SisPack.CacheObjetos.UnidadVentaModalidadesEntrega.ToString());

                /*SFE: Se comenta porque para codigos postales ya no se necesitaria. se utiliza el store que esta despues*/
                // Obtengo los datos actualizados, remuevo el cache viejo, y creo el nuevo caché con los nuevos datos
                // con esto logro que el tiempo se disminuya
                //DsDestinosGuias ds = new DsDestinosGuias();
                //Config.Conexion.LlenarTypeDataSet(ds.Datos, System.Data.CommandType.StoredProcedure, "UVentaModEntregaAgenciaDestinoSEL");
                //CacheDataManager.RemoveCacheValue(SisPack.CacheObjetos.UnidadVentaMEntregaDestino.ToString());
                //CacheDataManager.SetCacheValue(SisPack.CacheObjetos.UnidadVentaMEntregaDestino.ToString(), ds);
                // Limpio de cache los datos para la emisión de la guía
                (new AdministrarGuias()).LimpiarCacheUVAgLocParaEmisionGuia();
                //CacheDataManager.RemoveCacheValue(SisPack.CacheObjetos.UnidadVentaMEntregaDestino.ToString());

                DsUnidadVentaTEntregaProductoServicio dsuVenta = new DsUnidadVentaTEntregaProductoServicio();
                Config.Conexion.LlenarTypeDataSet(dsuVenta.Datos, System.Data.CommandType.StoredProcedure, "UVentaServTEntregaModEntregaProductoAgenciaOrigenSEL");
                CacheDataManager.RemoveCacheValue(SisPack.CacheObjetos.UVentaProductoServicioTEntregaMEntregaAgenciaOrigen.ToString());
                CacheDataManager.SetCacheValue(SisPack.CacheObjetos.UVentaProductoServicioTEntregaMEntregaAgenciaOrigen.ToString(), dsuVenta);

                List <Dominio.Entidades.ProductosParaGuia> lst;
                lst = IoC.GetObjectDominio <Dominio.Interfaces.Dominio.Guia.IDestinoGuiaDominio>().GetProductosParaGuia();
                CacheDataManager.RemoveCacheValue(SisPack.CacheObjetos.UVentaProductoServicioTEntregaMEntregaAgenciaOrigenList.ToString());
                CacheDataManager.SetCacheValue(SisPack.CacheObjetos.UVentaProductoServicioTEntregaMEntregaAgenciaOrigenList.ToString(), lst);

                transaccion.Commit();

                return(true);
            }
            catch (Exception ex)
            {
                transaccion.Rollback();
                throw new Exception(ex.Message, ex);
            }

            finally
            {
                conexion.Close();
            }
        }
        /// <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 DevolverGuia(object sender, DataGridCommandEventArgs e)
        {
            try
            {
                bool hayError = false;
                GuiaOriginalID = Convert.ToInt32(this.dtgGuiasNuevas.DataKeys[e.Item.ItemIndex]);
                DsGuias            ds = (DsGuias)Session["DsGuiasConsul"];
                DsGuias.DatosRow[] dr = (DsGuias.DatosRow[])ds.Datos.Select("GuiaID = " + GuiaOriginalID);

                if (dr.Length > 0)
                {
                    DsGuiasFacturas dsGuiasDet;
                    //recupera todas las guías y sus correspondientes detalles
                    if (Session["DsGuiasDetalles"] == null)
                    {
                        IGuiaFactura guiaFact = GuiaFacturaFactory.GetGuiaFactura();
                        ((IGuia)guiaFact).AgenciaDestinoID = this.AgenciaConectadaID;
                        ((IGuia)guiaFact).TipoGuia         = this.rbtGuiaA.Checked ? "A" : this.rbtGuiaB.Checked ? "B" : "";
                        dsGuiasDet = guiaFact.GetGuiasFacturasAgDestinoDataSet(fechaDesde, fechaHasta);

                        Session["DsGuiasDetalles"] = dsGuiasDet;
                    }
                    else
                    {
                        dsGuiasDet = (DsGuiasFacturas)Session["DsGuiasDetalles"];
                    }

                    if (Session["AgenciaConectada"] == null)
                    {
                        oAgencia           = AgenciaFactory.GetAgencia();
                        oAgencia.AgenciaID = Convert.ToInt32(this.AgenciaConectadaID);
                        oAgencia.ConsultarBasico();
                    }
                    else
                    {
                        oAgencia = (IAgencia)Session["AgenciaConectada"];
                    }



                    //CARGO DATOS DE LA CABEZA DE LA FACTURA
                    DsGuiasFacturas.DatosRow[] drFactCab = (DsGuiasFacturas.DatosRow[])dsGuiasDet.Datos.Select("GuiaID = " + GuiaOriginalID + " AND PesoTotal > 0");
                    if (drFactCab.Length > 0)
                    {
                        //Parámetro: ID de cliente correspondiente a ANDESMAR
                        IParametroUNegocio param = ParametroUNegocioFactory.GetParametroUNegocio();
                        param.UnidadNegocioID = this.UnidadNegocioID;
                        param.Parametro       = NegociosSisPackInterface.SisPack.Parametro.ClienteDeAdministracion;
                        param.Consultar();

                        // obtengo los datos de la agencia destino, para guardar el número correcto de la guía
                        // que se devuelve

                        IAgencia agDestino = AgenciaFactory.GetAgencia();
                        agDestino.AgenciaID = drFactCab[0].AgenciaOrigenID;
                        agDestino.ConsultarBasico();

                        guiaNueva = AdministrarGuiasFactory.GetAdministrarGuias();
                        guiaNueva.AgenciaDestinoID = drFactCab[0].AgenciaOrigenID;
                        guiaNueva.AgenciaOrigenID  = drFactCab[0].AgenciaDestinoID;
                        //si la unidad de venta tiene servicio flete pago en destino,
                        //la condición de pago siempre es contado.
                        guiaNueva.CondicionPagoID                = (NegociosSisPackInterface.SisPack.CondicionPago)drFactCab[0].CondicionPagoID;
                        guiaNueva.AgenteGuiaPagoID               = NegociosSisPackInterface.SisPack.TipoAgenteGuia.Destinatario;
                        guiaNueva.AgentePagoCondicionIVA         = (NegociosSisPackInterface.SisPack.CondicionIva)drFactCab[0].CondicionIvaAgentePago;
                        guiaNueva.AgentePagoEsClienteCorporativo = true;
                        guiaNueva.ClienteCorp.ClienteID          = drFactCab[0].RemitenteClienteID;
                        guiaNueva.CantBultos = drFactCab[0].CantidadBultosTotal;
                        guiaNueva.ClienteCorpRemitente.ClienteID = Convert.ToInt32(param.ValorString);
                        guiaNueva.ClienteCorpRemitente.Consultar();
                        guiaNueva.ClienteCorpDestinatario.ClienteID = drFactCab[0].RemitenteClienteID;
                        guiaNueva.ClienteCorpDestinatario.Consultar();

                        guiaNueva.NroCUITAgentePago = drFactCab[0].CUITAgentePago;
                        guiaNueva.NroGuia           = drFactCab[0].NroGuia;
                        guiaNueva.NroSucursalGuia   = oAgencia.SucursalDGI;
                        guiaNueva.Observaciones     = "Devolución guía número " + Utiles.Formatos.CerosIzq(Convert.ToInt32(agDestino.SucursalDGI), 4) + "-" + Utiles.Formatos.CerosIzq(drFactCab[0].NroGuia, 8) + "-" + drFactCab[0].TipoGuia;
                        //guiaNueva.Observaciones = "Devolución guía número " + Utiles.Formatos.CerosIzq(Convert.ToInt32(oAgencia.SucursalDGI), 4) + "-" + Utiles.Formatos.CerosIzq(drFactCab[0].NroGuia, 8) + "-" + drFactCab[0].TipoGuia;
                        guiaNueva.PesoTotal        = drFactCab[0].PesoTotal;
                        guiaNueva.PesoKgReal       = drFactCab[0].PesoTotal;
                        guiaNueva.UnidadNegocioID  = drFactCab[0].UnidadNegocioID;
                        guiaNueva.ValorDeclarado   = drFactCab[0].ValorDeclaradoTotal;
                        guiaNueva.VolumenTotal     = drFactCab[0].VolumenTotal;
                        guiaNueva.RemitoClienteNro = drFactCab[0].RemitoClienteNro.ToString();

                        //CARGO DATOS DEL DETALLE DE LA FACTURA
                        DsGuiasFacturas.DatosDetalleRow[] drFactDet = (DsGuiasFacturas.DatosDetalleRow[])dsGuiasDet.DatosDetalle.Select("GuiaID = " + GuiaOriginalID);
                        if (drFactDet.Length > 0)
                        {
                            guiaNueva.TipoBultoID = (NegociosSisPackInterface.SisPack.TipoBulto)drFactDet[0].TipoBultoID;

                            //el try se usa en caso de que el seguro venga con DBNull
                            //en cuyo caso se le coloca en cero.
                            try
                            {
                                guiaNueva.SeguroTantoPorMil = Convert.ToDouble(drFactDet[0].SeguroTantoPorMil);
                            }
                            catch (Exception)
                            {
                                guiaNueva.SeguroTantoPorMil = 0;
                            }
                            guiaNueva.GuiaDevueltaID = drFactDet[0].GuiaID;


                            //Si la u. de vta de la guía a devolver tiene servicio ContraReembolso, o Acuse de recibo
                            //regresa como encomienda estándar sin servicio adicional.
                            IUnidadVenta uVta = UnidadVentaFactory.GetUnidadVenta();
                            DsUnidadVentaTEntregaProductoServicio            dsUV  = uVta.GetServiciosDisponiblesByProductoTEntregaAgenciaDataSet();
                            DsUnidadVentaTEntregaProductoServicio.DatosRow[] drsUV = (DsUnidadVentaTEntregaProductoServicio.DatosRow[])dsUV.Datos.Select("UnidadVentaID = " + drFactDet[0].UnidadVentaID
                                                                                                                                                         + " AND (ServicioID = " + (int)NegociosSisPackInterface.SisPack.Servicio.ContraReembolso + " OR ServicioID = " + (int)NegociosSisPackInterface.SisPack.Servicio.AcuseRecibo + ")");
                            if (drsUV.Length > 0)
                            {
                                //Parámetro: ID Unidad de venta correspondiente a Encomienda estándar sin servicio adicional
                                param.Parametro = NegociosSisPackInterface.SisPack.Parametro.EncomiendaEstandarSinServAdicional;
                                param.Consultar();
                                guiaNueva.UnidadVentaID = Convert.ToInt32(param.ValorString);
                            }
                            else
                            {
                                guiaNueva.UnidadVentaID = drFactDet[0].UnidadVentaID;
                            }


                            //la guia debe devolverse con la modalidad de entrega inversa a la original
                            // siempre y cuando esa modalidad estè contemplada en el convenio del cliente
                            // para la unidad de venta con la que sale la guia nueva
                            IAdministrarGuias guiaOriginal = AdministrarGuiasFactory.GetAdministrarGuias();
                            guiaOriginal.GuiaID = drFactCab[0].GuiaID;
                            guiaOriginal.ClienteCorp.ClienteID = drFactCab[0].RemitenteClienteID;
                            guiaOriginal.UnidadVentaID         = guiaNueva.UnidadVentaID;
                            guiaOriginal.ModalidadEntregaID    = guiaOriginal.GetModalidadEntrega();
                            guiaOriginal.AgenciaOrigenID       = drFactCab[0].AgenciaOrigenID;

                            /*if(guiaOriginal.GetTieneModalidad((int)NegociosSisPackInterface.SisPack.ModalidadEntrega.PuertaPuerta) && guiaOriginal.GetTieneModalidad((int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalPuerta))
                             *      guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.PuertaPuerta;
                             * if(guiaOriginal.GetTieneModalidad((int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalPuerta))
                             *      guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalPuerta;
                             * else if (guiaOriginal.GetTieneModalidad((int)NegociosSisPackInterface.SisPack.ModalidadEntrega.PuertaPuerta))
                             *      guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.PuertaPuerta;
                             * else
                             *      guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalTerminal;*/

                            //para que vuelva con entrega a domicilio hay 1 condicion:
                            // - que el cliente tenga en el convenio la modalidad de entrega a domic para
                            //	la UV con la que sale la guia para el destino de la guia q vuelve
                            // nota: en ultima instancia vuelve Ter-Ter indptemente de que esté o no en el convenio del cliente

                            if (guiaOriginal.GetTieneModalidad((int)NegociosSisPackInterface.SisPack.ModalidadEntrega.PuertaTerminal) || guiaOriginal.GetTieneModalidad((int)NegociosSisPackInterface.SisPack.ModalidadEntrega.PuertaPuerta))
                            {
                                guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalPuerta;
                            }
                            else
                            {
                                guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalTerminal;
                            }

                            /*if(guiaOriginal.ModalidadEntregaID == (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.PuertaTerminal && guiaOriginal.GetTieneModalidad((int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalPuerta))
                             *      guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalPuerta;
                             * else if (guiaOriginal.ModalidadEntregaID == (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.PuertaPuerta && guiaOriginal.GetTieneModalidad((int)NegociosSisPackInterface.SisPack.ModalidadEntrega.PuertaPuerta))
                             *      guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.PuertaPuerta;
                             * else if (guiaOriginal.ModalidadEntregaID == (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalPuerta)
                             *      guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalTerminal;
                             * else if (guiaOriginal.ModalidadEntregaID == (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalTerminal)
                             *      guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalTerminal;
                             * else
                             *      guiaNueva.ModalidadEntregaID = (int)NegociosSisPackInterface.SisPack.ModalidadEntrega.TerminalTerminal;*/


                            //CARGO DATOS DE LOS SUBCONCEPTOS FACTURADOS
                            DsGuiasFacturas.DatosDetalleSubconceptoFacturableRow[] drFactSCF = (DsGuiasFacturas.DatosDetalleSubconceptoFacturableRow[])dsGuiasDet.DatosDetalleSubconceptoFacturable.Select("GuiaID = " + drFactDet[0].GuiaID
                                                                                                                                                                                                           + " AND GuiaFacturaDetalleID = " + drFactDet[0].GuiaFacturaDetalleID + " AND (SubConceptoFacturableID = " + (int)NegociosSisPackInterface.SisPack.SubConceptoFacturable.FleteNacional + " OR SubConceptoFacturableID = " + (int)NegociosSisPackInterface.SisPack.SubConceptoFacturable.Seguro + ")");
                            if (drFactSCF.Length > 0)
                            {
                                foreach (DsGuiasFacturas.DatosDetalleSubconceptoFacturableRow drSubConcepto in drFactSCF)
                                {
                                    if (drSubConcepto.SubConceptoFacturableID == (int)NegociosSisPackInterface.SisPack.SubConceptoFacturable.FleteNacional)
                                    {
                                        guiaNueva.ImporteFlete = drSubConcepto.Importe;
                                    }
                                    else
                                    {
                                        guiaNueva.ImporteSeguro = drSubConcepto.Importe;
                                    }
                                }

                                guiaNueva.CalcularImportes();
                                Session["guiaNueva"] = guiaNueva;
                                this.ObtenerNroGuia(dr[0].TipoGuia);
                            }
                            else
                            {
                                hayError = true;
                            }
                        }
                        else
                        {
                            hayError = true;
                        }
                    }
                    else
                    {
                        hayError = true;
                    }
                }
                if (hayError)
                {
                    ((ErrorWeb)phErrores.FindControl("Error")).setMensaje(this.TraducirTexto("Errores.Invalidos.GuiaIncompleta"));
                }
            }
            catch (Exception ex)
            {
                ((ErrorWeb)(this.phErrores.Controls[0])).setMensaje(TraducirTexto(ex.Message));
            }
        }
        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;
            }
        }