/// <summary> /// 确认结算,如果这条消费记录的卡号不属于自己的,则给下级经销商生成结算请求 /// </summary> /// <param name="id"></param> /// <returns></returns> public void Close(int id) { TransactionHelper.BeginTransaction(); var item = DistributorBrokerageService.GetDistributorBrokerageById(id); if (item == null) { return; } var user = this.SecurityHelper.GetCurrentUser(); int currentId = -1; if (user is DistributorUserModel) { currentId = DistributorService.GetByUserId(user.CurrentUser.Id).DistributorId; } if (item.settlementDistributorId == currentId && item.status == false) { item.status = true; DistributorBrokerageService.UpdateDistributorBrokerage(item); //增加经销商的余额 var distributor1 = DistributorService.GetById(item.settlementDistributorId); distributor1.Amount += item.brokerage; DistributorService.Update(distributor1); if (item.DistributorId != item.settlementDistributorId) { //归属他下属的卡消费,他要跟下属结算。 //如果是多级还要找到他的直接下属,只能向他的直接下属发起结算请求。 int underId = GetDirectlyUnder(item.settlementDistributorId, item.DistributorId); if (underId != 0) { var distributor = DistributorService.GetAccountLevelPolicyRates(underId).FirstOrDefault(); DistributorBrokerage model = new DistributorBrokerage(); model.DistributorId = item.DistributorId; model.AccountId = item.AccountId; model.Bdate = item.Bdate; model.consume = item.consume; model.Edate = item.Edate; model.settlementDistributorId = underId; model.Rate = distributor.Rate; model.brokerage = item.consume * distributor.Rate; model.status = false; DistributorBrokerageService.CreateDistributorBrokerage(model); } AddMessage("update.success", item.Id); } } else { AddError("不是结算经销商", item.Id); } TransactionHelper.Commit(); }
public ListDistributorBrokerage(DistributorBrokerage adminUser) { _innerObject = adminUser; }
public ListDistributorBrokerage() { _innerObject = new DistributorBrokerage(); }
public void Execute() { _databaseInstance.BeginTransaction(); //自动向一级经销商发起结算请求。 //1、取得所有的一级经销商 var distributors = _databaseInstance.Query <Distributor>("select * from Distributors where ParentId=0", null).ToList(); DateTime?bdate = null; //2、上次结算的截止时间,取得上次截止时间到现在的消费。 string sql = "select * from DistributorBrokerage where Edate=(select MAX(edate) from DistributorBrokerage)"; var lastLog = _databaseInstance.Query <DistributorBrokerage>(sql, null).FirstOrDefault(); if (lastLog != null) { bdate = lastLog.Edate; } var dealLogs = _databaseInstance.Query <TempDistributorBrokerage>("select AccountId,Amount,DistributorId from V_DistributorRate where (@bdate is null or submitTime>@bdate)", new { bdate = bdate }).ToList(); foreach (var item in distributors) { //判断消费的会员卡所属的经销商是不是当前经销商的下级或者是当前经销商本身。,如果是,则系统向当前经销商发起结算请求。 for (int i = 0; i < dealLogs.Count; i++) { if (dealLogs[i].DistributorId == 0) { continue; } if (IsMyunderOrMyself(item.DistributorId, dealLogs[i].DistributorId)) { var sql1 = @"select t.* from DistributorAccountLevelPolicyRates t where t.DistributorId = @DistributorId"; decimal myRate = 0m; var rate = _databaseInstance.Query <DistributorAccountLevelRate>(sql1, new { DistributorId = item.DistributorId }).FirstOrDefault(); if (rate != null) { myRate = rate.Rate; } var distributorBrokerageItem = new DistributorBrokerage(); distributorBrokerageItem.Edate = DateTime.Now; distributorBrokerageItem.DistributorId = dealLogs[i].DistributorId; distributorBrokerageItem.settlementDistributorId = item.DistributorId; distributorBrokerageItem.consume = dealLogs[i].Amount; distributorBrokerageItem.brokerage = dealLogs[i].Amount * myRate; distributorBrokerageItem.AccountId = dealLogs[i].AccountId; distributorBrokerageItem.Rate = myRate; distributorBrokerageItem.status = false; if (bdate.HasValue) { distributorBrokerageItem.Bdate = bdate.Value; } else { distributorBrokerageItem.Bdate = DateTime.Now.AddDays(-1); //系统第一次生成的时候。开始时间从半年前开始。 } _databaseInstance.Insert(distributorBrokerageItem, "DistributorBrokerage"); //已经发起请求的就把DistributorId改成-1 dealLogs[i].DistributorId = -1; } } } // _databaseInstance.Commit(); }
public void UpdateDistributorBrokerage(DistributorBrokerage item) { _databaseInstance.Update(item, TableName1); }
public void CreateDistributorBrokerage(DistributorBrokerage item) { _databaseInstance.Insert(item, TableName1); }