/// <summary>
        /// Lista todos los lideres x zona
        /// </summary>
        /// <param name="Zona"></param>
        /// <returns></returns>
        public List <LiderInfo> ListxZona(string Zona)
        {
            db.SetParameterValue(commandLider, "i_operation", 'S');
            db.SetParameterValue(commandLider, "i_option", 'B');
            db.SetParameterValue(commandLider, "i_zona", Zona);

            List <LiderInfo> col = new List <LiderInfo>();

            IDataReader dr = null;

            LiderInfo m = null;

            try
            {
                dr = db.ExecuteReader(commandLider);

                while (dr.Read())
                {
                    m = Factory.GetLider(dr);

                    col.Add(m);
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Trace.WriteLine(string.Format("NIVI Error: {0} , NameSpace: {1}, Clase: {2}, Metodo: {3} ", ex.Message, MethodBase.GetCurrentMethod().DeclaringType.Namespace, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name));

                bool rethrow = ExceptionPolicy.HandleException(ex, "DataAccess Policy");

                if (rethrow)
                {
                    throw;
                }
            }
            finally
            {
                if (dr != null)
                {
                    dr.Close();
                }
            }

            return(col);
        }
        public ClienteInfo ValidarTipoEnvioPedido(ClienteInfo ObjClienteInfoReq)
        {
            ClienteInfo ObjClienteInfoResponse = new ClienteInfo();

            //si es 1, es envio a la casa de la empresaria.
            if (ObjClienteInfoReq.TipoEnvio == 1)
            {
                Cliente     ObjCliente     = new Cliente("conexion");
                ClienteInfo ObjClienteInfo = new ClienteInfo();
                CiudadInfo  ObjCiudadInfo  = new CiudadInfo();
                Ciudad      ObjCiudad      = new Ciudad("conexion");

                ObjClienteInfo = ObjCliente.ListxNITSimpleEdit(ObjClienteInfoReq.Nit);

                if (ObjClienteInfo != null)
                {
                    string  CodCiudadCliente   = "";
                    decimal PorcentajeIvaFlete = 0;

                    decimal ValorFleteSinIva = 0;

                    //Se obtiene el codigo de la ciudad para el flete.
                    ObjClienteInfo = ObjCliente.ListClienteSVDNxNit(ObjClienteInfoReq.Nit);

                    if (ObjClienteInfo != null)
                    {
                        CodCiudadCliente = ObjClienteInfo.CodCiudad;
                    }

                    //se obtiene la info de la ciudad del cliente.
                    ObjCiudadInfo = ObjCiudad.ListCiudadxId(CodCiudadCliente);

                    PorcentajeIvaFlete = ObjCiudadInfo.IVA;
                    ValorFleteSinIva   = ObjCiudadInfo.ValorFlete;

                    ObjClienteInfoResponse.PorcentajeIvaFlete = PorcentajeIvaFlete;
                    ObjClienteInfoResponse.ValorFleteSinIva   = ValorFleteSinIva;
                    ObjClienteInfoResponse.ValorFlete         = (ValorFleteSinIva + (PorcentajeIvaFlete * (ValorFleteSinIva / 100)));
                    ObjClienteInfoResponse.CodCiudadDespacho  = "";
                }
            }
            else if (ObjClienteInfoReq.TipoEnvio == 2)
            {
                /*********************SE BUSCA EL VALOR DEL FLETE POR GERENTE/DIRECTOR*************************************************/

                ParametrosInfo ObjParametrosInfo = new ParametrosInfo();
                Parametros     ObjParametros     = new Parametros("conexion");

                ObjParametrosInfo = ObjParametros.ListxId((int)ParametrosEnum.ValorIVACOP);
                decimal PorcentajeIvaFlete = Convert.ToDecimal(ObjParametrosInfo.Valor.ToString());

                decimal ValorFleteSinIva = 0;

                ZonaInfo objZonaInfo = new ZonaInfo();
                Zona     objZona     = new Zona("conexion");

                objZonaInfo = objZona.ListxIdZona(ObjClienteInfoReq.Zona.ToString());

                if (objZonaInfo != null)
                {
                    ValorFleteSinIva = objZonaInfo.ValorFlete;
                    ObjClienteInfoResponse.PorcentajeIvaFlete = PorcentajeIvaFlete;
                    ObjClienteInfoResponse.ValorFleteSinIva   = ValorFleteSinIva;
                    ObjClienteInfoResponse.ValorFlete         = (ValorFleteSinIva + (PorcentajeIvaFlete * (ValorFleteSinIva / 100)));
                    ObjClienteInfoResponse.CodCiudadDespacho  = objZonaInfo.CodLocalidad;
                }
            }
            else if (ObjClienteInfoReq.TipoEnvio == 3)
            {
                /*********************SE BUSCA EL VALOR DE FLETE POR LIDER**************************************************/
                FleteLiderInfo FleteLiderInfo = new FleteLiderInfo();
                FleteLider     ObjFletes      = new FleteLider("conexion");

                FleteLiderInfo = ObjFletes.List(ObjClienteInfoReq.EmpresariaLider);
                decimal PorcentajeIvaFlete = Convert.ToDecimal(FleteLiderInfo.Iva.ToString());

                decimal ValorFleteSinIva = 0;

                if (ObjFletes != null)
                {
                    ValorFleteSinIva = FleteLiderInfo.Valor;

                    ObjClienteInfoResponse.PorcentajeIvaFlete = PorcentajeIvaFlete;
                    ObjClienteInfoResponse.ValorFleteSinIva   = ValorFleteSinIva;
                    ObjClienteInfoResponse.ValorFlete         = (ValorFleteSinIva + (PorcentajeIvaFlete * (ValorFleteSinIva / 100)));
                }

                Lider     ObjLider1     = new Lider("conexion");
                LiderInfo ObjLiderInfo1 = new LiderInfo();

                //Se obtiene el codigo de la ciudad para el flete.
                ObjLiderInfo1 = ObjLider1.ListxIdLider(ObjClienteInfoReq.EmpresariaLider);

                if (ObjLiderInfo1 != null)
                {
                    ObjClienteInfoResponse.CodCiudadDespacho = ObjLiderInfo1.Codciudad;
                }
            }
            else if (ObjClienteInfoReq.TipoEnvio == 4)
            {
                /*********************SE BUSCA EL VALOR DEL FLETE POR PUNTO DE VENTA*************************************************/
                //TODO: PREGUNTAR QUE VALOR DE FLETE VA AQUI
                ParametrosInfo ObjParametrosInfo = new ParametrosInfo();
                Parametros     ObjParametros     = new Parametros("conexion");

                ObjParametrosInfo = ObjParametros.ListxId((int)ParametrosEnum.ValorIVACOP);
                decimal PorcentajeIvaFlete = 0; //Siempre es 0 por que se recoge en punto de venta.

                decimal ValorFleteSinIva = 0;

                ZonaInfo objZonaInfo = new ZonaInfo();
                Zona     objZona     = new Zona("conexion");

                objZonaInfo = objZona.ListxIdZona(ObjClienteInfoReq.Zona.ToString());

                if (objZonaInfo != null)
                {
                    ValorFleteSinIva = 0; //Siempre es 0 por que se recoge en punto de venta.
                    ObjClienteInfoResponse.PorcentajeIvaFlete = PorcentajeIvaFlete;
                    ObjClienteInfoResponse.ValorFleteSinIva   = ValorFleteSinIva;
                    ObjClienteInfoResponse.ValorFlete         = (ValorFleteSinIva + (PorcentajeIvaFlete * (ValorFleteSinIva / 100)));
                    ObjClienteInfoResponse.CodCiudadDespacho  = objZonaInfo.CodLocalidad;
                }
            }
            else
            {
                //TODO: PREGUNTAR QUE VALOR DE FLETE VA POR DEFECTO POR SI ALGO PASA
            }


            return(ObjClienteInfoResponse);
        }