示例#1
0
        /// <summary>
        /// Configuracion de controles del formulario.
        /// </summary>
        /// <history>
        /// [edgrodriguez] 03/Mar/2016 Created
        /// [emoguel] 29/09/2016 Modified--->Se agregó un parametro para saber si mostrará el combo de "DateBasedOn" y el nombre del reporte
        /// </history>
        public void ConfigurarFomulario(bool blnSalesRoom           = false, bool blnAllSalesRoom        = false, bool blnGifts       = false, bool blnAllGifts        = false,
                                        bool blnCategories          = false, bool blnAllCategories       = false, bool blnPrograms    = false, bool blnAllPrograms     = false,
                                        bool blnRatetypes           = false, bool blnAllRatetypes        = false, bool blnLeadSources = false, bool blnAllLeadSources  = false,
                                        bool blnWarehouse           = false, bool blnAllWarehouse        = false, bool blnOneDate     = false, bool blnOnlyOneRegister = false, EnumPeriod enumPeriod = EnumPeriod.None,
                                        EnumProgram enumPrograms    = EnumProgram.All, bool blnOnePeriod = false, EnumBasedOnArrival enumBasedOnArrival = EnumBasedOnArrival.NoBasedOnArrival,
                                        EnumQuinellas enumQuinellas = EnumQuinellas.NoQuinellas, EnumDetailGifts enumDetailGifts = EnumDetailGifts.NoDetailGifts, EnumSaveCourtesyTours?enumSaveCourtesyTours = null,
                                        EnumSalesByMemberShipType enumSalesByMemberShipType = EnumSalesByMemberShipType.NoDetail, EnumBasedOnBooking enumBasedOnBooking = EnumBasedOnBooking.NoBasedOnBooking,
                                        EnumExternalInvitation?enumExternalInvitation       = null, bool blncbStatus = false, bool blnGiftReceiptType = false, bool blnGuestId = false, bool blnGiftSale = false, bool blnDateRange = true, bool blnDateBaseOn = false, string strReportName = "")
        {
            ConfigureDates(blnOneDate, enumPeriod, blnDateRange);
            ConfigureFilters(enumBasedOnArrival, enumQuinellas, enumDetailGifts, enumSaveCourtesyTours,
                             enumSalesByMemberShipType, enumBasedOnBooking, enumExternalInvitation, blncbStatus, blnGiftReceiptType,
                             blnGuestId, blnGiftSale, blnDateBaseOn);

            LoadCombos();

            #region Configuracion de Grids.
            LoadSalesRooms(blnOnlyOneRegister, blnSalesRoom, blnAllSalesRoom);
            LoadCategories(blnOnlyOneRegister, blnCategories, blnAllCategories);
            LoadGifts(blnOnlyOneRegister, blnGifts, blnAllGifts);
            LoadLeadSources(blnOnlyOneRegister, blnLeadSources, blnAllLeadSources);
            LoadPrograms(blnOnlyOneRegister, blnPrograms, blnAllPrograms);
            LoadRateTypes(blnOnlyOneRegister, blnRatetypes, blnAllRatetypes);
            LoadWarehouses(blnOnlyOneRegister, blnWarehouse, blnAllWarehouse);
            #endregion Configuracion de Grids.
            LoadDateBasedOn(strReportName);
            LoadUserFilters(blnOneDate);
        }
示例#2
0
        /// <summary>
        /// Configuracion de controles del formulario.
        /// </summary>
        /// <history>
        /// [aalcocer] 03/Mar/2016 Created
        /// [erosado] 19/05/2016  Modified. Se agregó asincronía
        /// [edgrodriguez] 21/May/2016 Modified El método GetLeadSourcesByUser se volvió asincrónico.
        /// </history>
        public void ConfigurarFomulario(bool blnOneDate, bool blnOnlyOneRegister,
                                        bool blnPersonnel     = false, bool blnAllPersonnel          = false, bool blnLeadSources = false, bool blnAllLeadSources = false,
                                        bool blnChargeTo      = false, bool blnAllChargeTo           = false, bool blnGifts       = false, bool blnAllGifts    = false,
                                        bool blnMarkets       = false, bool blnAllMarkets            = false, bool blnAgencies    = false, bool blnAllAgencies = false,
                                        bool blnGiftsQuantity = false, bool blnAllGiftsQuantity      = false,
                                        EnumPeriod enumPeriod = EnumPeriod.None, EnumProgram program = EnumProgram.All, EnumBasedOnArrival?enumBasedOnArrival           = null,
                                        EnumBasedOnPRLocation?enumBasedOnPRLocation         = null, EnumQuinellas?enumQuinellas = null, EnumDetailGifts?enumDetailGifts = null,
                                        EnumSalesByMemberShipType?enumSalesByMemberShipType = null,
                                        EnumSaveCourtesyTours?enumSaveCourtesyTours         = null,
                                        EnumExternalInvitation?enumExternalInvitation       = null, bool blnClub = false, bool blnNight = false, bool blnLsHotelNotNull = false, bool blnAgencyMonthly = false,
                                        EnumOnlyWholesalers?enumOnlyWholesalers             = null)
        {
            ConfigureDates(blnOneDate, enumPeriod);
            ConfigureFilters(enumBasedOnArrival, enumBasedOnPRLocation, enumQuinellas, enumDetailGifts, enumSalesByMemberShipType, enumSaveCourtesyTours, enumExternalInvitation, blnClub, blnNight, enumOnlyWholesalers);

            LoadCombos(blnClub);

            #region Configuracion de Grids.

            LoadPersonnel(blnOnlyOneRegister, blnPersonnel, blnAllPersonnel, program);
            LoadLeadSources(blnOnlyOneRegister, blnLeadSources, blnAllLeadSources, program, blnLsHotelNotNull);
            LoadGifts(blnOnlyOneRegister, blnGifts, blnAllGifts);
            LoadGiftsQuantity(blnOnlyOneRegister, blnGiftsQuantity, blnAllGiftsQuantity);
            LoadChargeTo(blnOnlyOneRegister, blnChargeTo, blnAllChargeTo);
            LoadAgencies(blnOnlyOneRegister, blnAgencies, blnAllAgencies, blnAgencyMonthly);
            LoadMarkets(blnOnlyOneRegister, blnMarkets, blnAllMarkets);

            #endregion Configuracion de Grids.
        }
示例#3
0
 /// <summary>
 /// Contructor Login
 /// </summary>
 /// <history>
 /// [vipacheco] 2-26-2016 Created
 /// [edgrodriguez] 27/02/2016 Modified
 /// [edgrodriguez] 29/02/2016 Modified
 /// [erosado] 25/04/2016  Modified. Se restructuro y se agregaron parametros _permission, _permissionLevel, _program, _modeSwitchLoginUser
 /// [jorcanche] 16/08/2016 Se agrego el parametro windowStartupLocation sirve para definir en que posicion estara el windowStartupLocation
 /// </history>
 public frmLogin(
     Window splash                               = null,
     EnumLoginType loginType                     = EnumLoginType.Normal,
     EnumProgram program                         = EnumProgram.All,
     bool validatePermission                     = false,
     bool validateRole                           = false,
     bool changePassword                         = false,
     bool autoSign                               = false,
     EnumPermission permission                   = EnumPermission.None,
     EnumPermisionLevel permissionLevel          = EnumPermisionLevel.None,
     EnumRole role                               = EnumRole.None,
     bool switchLoginUserMode                    = false,
     bool invitationMode                         = false,
     string invitationPlaceId                    = "",
     WindowStartupLocation windowStartupLocation = WindowStartupLocation.Manual
     )
 {
     InitializeComponent();
     _splash             = splash;
     _loginType          = loginType;
     _program            = program;
     _validatePermission = validatePermission;
     _validateRole       = validateRole;
     _changePassword     = changePassword;
     _autoSign           = autoSign;
     _permission         = permission;
     _permissionLevel    = permissionLevel;
     _role = role;
     _modeSwitchLoginUser  = switchLoginUserMode;
     _invitationMode       = invitationMode;
     _invitationPlaceId    = invitationPlaceId;
     WindowStartupLocation = windowStartupLocation;
     CloseWindow           = new ExecuteCommandHelper(x => btnCancelar_Click(this, null));
 }
示例#4
0
        /// <summary>
        /// Configura los controles del formulario
        /// </summary>
        /// <history>
        ///   [vku] 22/Mar/2016 Created
        /// </history>
        public void ConfigureForm(bool blnLeadSource          = false, bool blnLeadSourcesPaymentComm = false, bool blnAllLeadSource = false, bool blnAllLeadSourcePaymentComm = false,
                                  bool blnPaymentTypes        = false, bool blnAllPaymentTypes        = false, bool blnPRs = false, bool blnAllPRs        = false,
                                  bool blnChargeTo            = false, bool blnAllChargeTo     = false, bool blnGifts      = false, bool blnAllGifts      = false, bool blnGiftProdGift = false, bool blnAllGiftProdGift = false, bool blnRangeFolios = false, bool blnAllRangeFolios = false,
                                  bool blnOneDate             = false, bool blnOnlyOneRegister = false, bool blnChkUsedate = false, EnumPeriod enumPeriod = EnumPeriod.None,
                                  EnumProgram enumPrograms    = EnumProgram.Outhouse, bool blnOnePeriod = false, EnumBasedOnArrival enumBasedOnArrival = EnumBasedOnArrival.NoBasedOnArrival,
                                  EnumQuinellas enumQuinellas = EnumQuinellas.NoQuinellas, EnumDetailGifts enumDetailGifts = EnumDetailGifts.NoDetailGifts, EnumSaveCourtesyTours?enumSaveCourtesyTours = null,
                                  EnumSalesByMemberShipType enumSalesByMemberShipType = EnumSalesByMemberShipType.NoDetail, EnumBasedOnBooking enumBasedOnBooking = EnumBasedOnBooking.NoBasedOnBooking,
                                  EnumExternalInvitation?enumExternalInvitation       = null, bool blnFolSeries = false, bool blnFolFrom = false, bool blnFolTo = false, bool blnUseDates = false, bool blnAllFolios = false)
        {
            ConfigureDates(blnOneDate, enumPeriod);
            ConfigureFilters(enumBasedOnArrival, enumQuinellas, enumDetailGifts, enumSaveCourtesyTours,
                             enumSalesByMemberShipType, enumBasedOnBooking, enumExternalInvitation, blnFolSeries, blnFolFrom, blnFolTo, blnUseDates, blnAllFolios);

            LoadCombos();

            #region Configuracion de grids
            LoadLeadSources(blnOnlyOneRegister, blnLeadSource, blnAllLeadSource, enumPrograms);
            LoadLeadSourcesPaymentCoom(blnOnlyOneRegister, blnLeadSourcesPaymentComm, blnAllLeadSourcePaymentComm);
            LoadPaymentTypes(blnOnlyOneRegister, blnPaymentTypes, blnAllPaymentTypes);
            LoadPRs(blnOnlyOneRegister, blnPRs, blnAllPRs);
            LoadChargeTo(blnOnlyOneRegister, blnChargeTo, blnAllChargeTo);
            LoadGifts(blnOnlyOneRegister, blnGifts, blnAllGifts);
            LoadGiftsProdGift(blnOnlyOneRegister, blnGiftProdGift, blnAllGiftProdGift);
            #endregion

            LoadUserFilters();
        }
示例#5
0
        /// <summary>
        /// Carga el Program para la invitacion
        /// </summary>
        /// <param name="module">EnumModule</param>
        /// <param name="invitationType">EnumInvitationType</param>
        /// <param name="guId">GuestID</param>
        /// <history>
        /// [erosado] 10/08/2016  Created.
        /// </history>
        private async Task LoadProgram(EnumModule module, EnumInvitationType invitationType, int guId)
        {
            EnumProgram program = EnumProgram.All;

            //Si se tiene el GuestID
            if (guId != 0 && module != EnumModule.Host)
            {
                //Obtenemos la informacion del Guest
                var guest = await BRGuests.GetGuest(guId);

                //Obtenemos la informacion de program
                var result = await BRLeadSources.GetLeadSourceProgram(guest.gulsOriginal);

                //Asignamos el Program
                if (result == EnumToListHelper.GetEnumDescription(EnumProgram.Inhouse))
                {
                    program = EnumProgram.Inhouse;
                }
                else
                {
                    program = EnumProgram.Outhouse;
                }
            }
            //Si NO hay un Guest para obtener el program
            else
            {
                //De que modulo me estan hablando
                switch (module)
                {
                case EnumModule.InHouse:
                    if (invitationType == EnumInvitationType.newExternal)
                    {
                        program = EnumProgram.Inhouse;
                    }
                    break;

                case EnumModule.OutHouse:
                    if (invitationType == EnumInvitationType.newOutHouse)
                    {
                        program = EnumProgram.Outhouse;
                    }
                    break;

                case EnumModule.Host:
                    if (invitationType == EnumInvitationType.newOutHouse)
                    {
                        program = EnumProgram.Outhouse;
                    }
                    else
                    {
                        program = EnumProgram.Inhouse;
                    }
                    break;
                }
            }
            Program         = program;
            AllowReschedule = program == EnumProgram.Inhouse;
        }
示例#6
0
 public frmGuest(UserData user, int guestId, EnumModule module, EnumProgram program, EnumMode mode, bool isInvitation)
 {
     WindowStartupLocation = WindowStartupLocation.CenterScreen;
     _user         = user;
     _guestId      = guestId;
     _module       = module;
     _program      = program;
     _mode         = mode;
     _isInvitation = isInvitation;
     InitializeComponent();
 }
示例#7
0
        /// <summary>
        /// Obtiene catalogo de Lead Sources .
        /// </summary>
        /// <param name="status"> 0- Sin filtro, 1-Activos, 2. Inactivos </param>
        /// <returns>List<LeadSource></returns>
        /// <history>
        /// [aalcocer] 09/03/2016 Created
        /// [jorcanche] 02/05/2016 Agrego el parametro EnumProgram para que se puede saleccionar
        /// [aalcocer] 09/06/2016 Modified.  Se agregó asincronía.
        /// </history>
        public static async Task <List <LeadSource> > GetLeadSources(int status = 0, EnumProgram program = EnumProgram.All)
        {
            var leadSources = new List <LeadSource>();
            var pro         = EnumToListHelper.GetEnumDescription(program);
            await Task.Run(() =>
            {
                using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString()))
                {
                    leadSources = dbContext.LeadSources
                                  .Where(ls => status.Equals(1) ? ls.lsA : status.Equals(2) ? !ls.lsA : true)
                                  .Where(ls => program != EnumProgram.All ? ls.lspg == pro : true)
                                  .OrderBy(ls => ls.lsN).ToList();
                }
            });

            return(leadSources);
        }
示例#8
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="userdata"> Informacion del Usuario </param>
        /// <param name="program"> Enumerado que identifica el tipo de programa origen</param>
        public frmSearchGuest(UserData userdata, EnumProgram program, DateTime?dateTimeCurrent = null)
        {
            InitializeComponent();
            user     = userdata;
            _program = program;

            // Cargamos la fecha de busqueda
            DateTime?dateCurrent = dateTimeCurrent ?? BRHelpers.GetServerDate();

            dtpTo.Value   = dateCurrent;
            dtpFrom.Value = dateCurrent.Value.AddDays(-7);

            // Ocultamos los criterios de busqueda no necesarios para el caso
            if (_program == EnumProgram.Inhouse)
            {
                stkSalesRoom.Visibility = stkPR.Visibility = Visibility.Collapsed;
            }
            else
            {
                stkReservation.Visibility = btnCancel.Visibility = guHReservIDColumn.Visibility = guAccountGiftsCardColumn.Visibility = Visibility.Collapsed;
            }
        }
示例#9
0
        /// <summary>
        /// Devuelve los datos para el reporte de produccion por membresia
        /// </summary>
        /// <param name="dtmStart">Fecha desde</param>
        /// <param name="dtmEnd">Fecha hasta</param>
        /// <param name="leadSources">Claves de Lead Sources</param>
        /// <param name="pRs">Claves de PRs</param>
        /// <param name="program">Clave de programa</param>
        /// <param name="aplication">Clave de membresia</param>
        /// <param name="company">Clave de compania</param>
        /// <param name="club">Clave de club</param>
        /// <param name="onlyWholesalers">Indica si se desean solo mayoristas</param>
        /// <param name="considerQuinellas">Indica si se debe considerar quinielas</param>
        /// <param name="basedOnArrival">Indica si se debe basar en la fecha de llegada</param>
        /// <returns><list type="RptProductionByMember"></list></returns>
        /// <history>
        /// [aalcocer] 03/05/2016 Created
        /// [aalcocer] 24/05/2016 Modified. Se agregó asincronía
        /// </history>
        public static async Task <List <RptProductionByMember> > GetRptProductionByMembers(DateTime dtmStart, DateTime dtmEnd, IEnumerable <string> leadSources,
                                                                                           IEnumerable <string> pRs            = null, EnumProgram program = EnumProgram.All, string aplication = "", int company = 0, Club club = null,
                                                                                           EnumOnlyWholesalers onlyWholesalers = EnumOnlyWholesalers.NoOnlyWholesalers, EnumQuinellas considerQuinellas = EnumQuinellas.NoQuinellas,
                                                                                           EnumBasedOnArrival basedOnArrival   = EnumBasedOnArrival.NoBasedOnArrival)
        {
            var result = new List <RptProductionByMember>();

            if (pRs == null || !pRs.Any())
            {
                pRs = new[] { "ALL" }
            }
            ;

            await Task.Run(() =>
            {
                using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString()))
                {
                    dbContext.Database.CommandTimeout = Settings.Default.USP_OR_RptProductionByMember_Timeout;
                    result = dbContext.USP_OR_RptProductionByMember(dtmStart, dtmEnd, string.Join(",", leadSources), string.Join(",", pRs),
                                                                    EnumToListHelper.GetEnumDescription(program), string.IsNullOrWhiteSpace(aplication) ? "ALL" : aplication,
                                                                    company, club?.clID, Convert.ToBoolean(onlyWholesalers), Convert.ToBoolean(considerQuinellas),
                                                                    Convert.ToBoolean(basedOnArrival)).ToList();
                }
            });

            return(result);
        }
示例#10
0
 /// <summary>
 /// Obtiene el reporte Production By Lead Source & Market(Monthly).
 /// </summary>
 /// <returns>List of RptProductionByLeadSourceMarketMonthly</returns>
 /// <history>
 /// [edgrodriguez] 21/Abr/2016 Created
 /// </history>
 public static async Task <List <RptProductionByLeadSourceMarketMonthly> > GetRptProductionByLeadSourceMarketMonthly(DateTime?dtmStart, DateTime?dtmEnd, EnumQuinellas quinellas, EnumExternalInvitation external, EnumBasedOnArrival basedOnArrival, string leadSources = "ALL", EnumProgram program = EnumProgram.All)
 {
     return(await Task.Run(() =>
     {
         using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString()))
         {
             return dbContext.USP_OR_RptProductionByLeadSourceMarketMonthly(dtmStart, dtmEnd, leadSources, EnumToListHelper.GetEnumDescription(program), Convert.ToBoolean(quinellas), Convert.ToInt32(external), Convert.ToBoolean(basedOnArrival)).ToList();
         }
     }));
 }
示例#11
0
        /// <summary>
        /// Carga y configuracion del grid de LeadSources
        /// </summary>
        /// <param name="blnOnlyOneRegister"></param>
        /// <param name="blnLeadSources"></param>
        /// <param name="blnAllLeadSources"></param>
        /// <param name="program"></param>
        /// <param name="blnLsHotelNotNull"></param>
        /// <history>
        /// [aalcocer] 26/May/2016 Created
        /// </history>
        private async void LoadLeadSources(bool blnOnlyOneRegister, bool blnLeadSources, bool blnAllLeadSources, EnumProgram program, bool blnLsHotelNotNull)
        {
            if (!blnLeadSources)
            {
                pnlLeadSource.Visibility = Visibility.Collapsed;
                return;
            }
            grdLeadSources.SelectionMode = (blnOnlyOneRegister) ? DataGridSelectionMode.Single : DataGridSelectionMode.Extended;
            _lstLeadSources = await BRLeadSources.GetLeadSourcesByUser(Context.User.User.peID, program);

            if (blnLsHotelNotNull)
            {
                List <string> lstLsIDHotelNotNull = (await BRLeadSources.GetLeadSources(1, EnumProgram.All)).Where(x => x.lsHotel != null).Select(x => x.lsID).ToList();
                _lstLeadSources = _lstLeadSources.Where(x => lstLsIDHotelNotNull.Contains(x.lsID)).ToList();
            }
            grdLeadSources.ItemsSource  = _lstLeadSources;
            chkAllLeadSources.IsChecked = blnAllLeadSources;
            chkAllLeadSources.IsEnabled = !blnOnlyOneRegister;

            if (!_frmIh._clsFilter.LstLeadSources.Any())
            {
                return;
            }

            chkAllLeadSources.IsChecked = false;
            _frmIh._clsFilter.LstLeadSources.ForEach(c => grdLeadSources.SelectedItems.Add(_lstLeadSources.SingleOrDefault(x => x.lsID == c)));
            if (grdLeadSources.SelectedItems.Count == grdLeadSources.Items.Count)
            {
                chkAllLeadSources.IsChecked = true;
            }
        }
示例#12
0
        /// <summary>
        /// Carga y configuracion del grid de Personnel
        /// </summary>
        /// <param name="blnOnlyOneRegister"></param>
        /// <param name="blnPersonnel"></param>
        /// <param name="blnAllPersonnel"></param>
        /// <param name="program"></param>
        private async void LoadPersonnel(bool blnOnlyOneRegister, bool blnPersonnel, bool blnAllPersonnel, EnumProgram program)
        {
            if (!blnPersonnel)
            {
                pnlPersonnel.Visibility = Visibility.Collapsed;
                return;
            }
            grdPersonnel.SelectionMode = (blnOnlyOneRegister) ? DataGridSelectionMode.Single : DataGridSelectionMode.Extended;
            List <LeadSourceByUser> listLeadSourceByUsers = await BRLeadSources.GetLeadSourcesByUser(Context.User.User.peID, program);

            _lstPersonnel = await BRPersonnel.GetPersonnel(string.Join(",", listLeadSourceByUsers.Select(y => y.lsID)), roles : "PR", status : 0);

            grdPersonnel.ItemsSource  = _lstPersonnel;
            chkAllPersonnel.IsChecked = blnAllPersonnel;
            chkAllPersonnel.IsEnabled = !blnOnlyOneRegister;

            if (!_frmIh._clsFilter.LstPersonnel.Any())
            {
                return;
            }

            chkAllPersonnel.IsChecked = false;
            _frmIh._clsFilter.LstPersonnel.ForEach(c => grdPersonnel.SelectedItems.Add(_lstPersonnel.SingleOrDefault(x => x.peID == c)));
            if (grdPersonnel.SelectedItems.Count == grdPersonnel.Items.Count)
            {
                chkAllPersonnel.IsChecked = true;
            }
        }
示例#13
0
        /// <summary>
        /// Obtiene los Lead Sources de un usuario
        /// </summary>
        /// <param name="user">Usuario </param>
        /// <param name="programs"> Programa o default('ALL') </param>
        /// <param name="regions">Region o default('ALL') </param>
        /// <returns>List<LeadSourceByUser></returns>
        /// <hystory>
        /// [erosado] 08/03/2016  created
        /// [aalcocer] 17/03/2016 Modified. Agregado parametros por default
        /// [erosado] 07/04/2016  Modified. Se cambio el parametro string Progam a EnumPrograms
        /// [edgrodriguez] 21/May/2016 Modified. El método se volvio asincrónico.
        /// </hystory>

        public async static Task <List <LeadSourceByUser> > GetLeadSourcesByUser(string user, EnumProgram program = EnumProgram.All, string regions = "ALL")
        {
            List <LeadSourceByUser> result = new List <LeadSourceByUser>();
            await Task.Run(() =>
            {
                using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString()))
                {
                    result = dbContext.USP_OR_GetLeadSourcesByUser(user, EnumToListHelper.GetEnumDescription(program), regions).ToList();
                }
            });

            return(result);
        }
示例#14
0
        /// <summary>
        ///  Carga y configuración del grid LeadSources
        /// </summary>
        /// <param name="blnOnlyOneRegister"></param>
        /// <param name="blnLeadSources"></param>
        /// <param name="blnAllLeadSources"></param>
        /// <param name="program"></param>
        /// <history>
        ///   [vku] 25/May/2016 Created
        /// </history>
        private async void LoadLeadSources(bool blnOnlyOneRegister, bool blnLeadSource, bool blnAllLeadSources, EnumProgram program = EnumProgram.Outhouse)
        {
            if (!blnLeadSource)
            {
                return;
            }

            grdLeadSources.SelectionMode = (blnOnlyOneRegister) ? DataGridSelectionMode.Single : DataGridSelectionMode.Extended;
            pnlLeadSources.Visibility    = Visibility.Visible;
            _lstLeadSources = await BRLeadSources.GetLeadSourcesByUser(Context.User.User.peID, program, "ALL");

            grdLeadSources.ItemsSource = _lstLeadSources;

            chkAllLeadSources.IsChecked = blnAllLeadSources;
            chkAllLeadSources.IsEnabled = !blnOnlyOneRegister;

            if (!frmPO._clsFilter._lstLeadSources.Any())
            {
                return;
            }

            chkAllLeadSources.IsChecked = (grdLeadSources.SelectionMode == DataGridSelectionMode.Extended) && frmPO._clsFilter.AllLeadSources;

            if (grdLeadSources.ItemsSource != null && !frmPO._clsFilter.AllLeadSources && !blnOnlyOneRegister)
            {
                grdLeadSources.SelectedItem = null;
                frmPO._clsFilter._lstLeadSources.ForEach(c =>
                {
                    grdLeadSources.SelectedItems.Add(_lstLeadSources.FirstOrDefault(l => l.lsID == c));
                });
            }
            else
            {
                grdLeadSources.SelectedItem = _lstLeadSources.FirstOrDefault(c => c.lsID == frmPO._clsFilter._lstLeadSources[0]);
            }
        }