/// <summary>
        /// From,To,netsales for General Rate. 
        /// </summary>
        /// <param name="From">From</param>
        /// <param name="To">To</param>
        /// <param name="netsales">netsales</param>
        /// <param name="PartyType">PartyType</param>
        /// <param name="Party">Party</param>
        /// <returns></returns>
        public decimal GetCommissionRate(DateTime From, DateTime To, decimal netsales, int PartyType, int Party)
        {
            decimal commission = 0;

            if (PartyType == 1)
            {
                //set commission from Distributor's own account
                var distributors = new DistributorRepository(new DatabaseFactory()).GetAll();
                var distributor = distributors.Where(i => i.Id == Party).FirstOrDefault();
                if (distributor != null && distributor.Id > 0 && distributor.RateOfCommission != null)
                {
                    commission = (decimal)distributor.RateOfCommission;
                }
            }
            else if (PartyType == 3)
            {
                //set commission from Dealer's own account
                var dealers = new DealerRepository(new DatabaseFactory()).GetAll();
                var dealer = dealers.Where(i => i.Id == Party).FirstOrDefault();
                if (dealer != null && dealer.Id > 0 && dealer.RateOfCommission != null)
                {
                    commission = (decimal)dealer.RateOfCommission;
                }
            }

            if (commission <= 0)
            {
                //Get recent package settings
                var list = _CommissionPackageRepository.GetAll();
                if (list != null && list.Count() > 0)
                {
                    list = list.Where(i => From.Year >= i.Year && To.Year <= i.Year &&
                        From.Month >= i.Month && To.Month <= i.Month &&
                        netsales >= i.LowerTarget && netsales <= i.UpperTarget).ToList();

                    //22-04-2015: Here if multiple package information found, latest package will be set as commission rate.
                    if(list != null && list.Count() > 0)
                    {
                        var recent = list.OrderByDescending(i => i.Year).OrderByDescending(i => i.Month).ToList().FirstOrDefault();
                        commission = recent.Commission;
                    }
                }
            }

            return commission;
        }