Пример #1
0
        /// <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();
        }
Пример #2
0
 public ListDistributorBrokerage(DistributorBrokerage adminUser)
 {
     _innerObject = adminUser;
 }
Пример #3
0
 public ListDistributorBrokerage()
 {
     _innerObject = new DistributorBrokerage();
 }
Пример #4
0
        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();
        }
Пример #5
0
 public void UpdateDistributorBrokerage(DistributorBrokerage item)
 {
     _databaseInstance.Update(item, TableName1);
 }
Пример #6
0
 public void CreateDistributorBrokerage(DistributorBrokerage item)
 {
     _databaseInstance.Insert(item, TableName1);
 }