/// <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; }