Example #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();
        }
Example #2
0
        public void Query()
        {
            var request = new DistributorBrokerageRequest();

            //request.AccountId = this.AccountId;
            request.SubmitTimeMin = Data.Start;
            request.SubmitTimeMax = Data.End;
            request.NameWith      = AccountName;
            if (Distributor != -10001)
            {
                request.DistributorId = Distributor;
            }
            if (State == 1)
            {
                request.Status = true;
            }
            if (State == 0)
            {
                request.Status = false;
            }
            var q = DistributorBrokerageService.QueryBrokerage(request).ToList();
            //如果是系统总部,列表中只包含一级经销商。
            var distributors = DistributorService.Query().Where(x => x.ParentId == 0).ToList();
            var user         = this.SecurityHelper.GetCurrentUser();

            if (user is AdminUserModel)
            {
                List = List = q.ToList(this, x => new ListDistributorBrokerage(x));//(from c in q where distributors.Any(p=>p.DistributorId==c.DistributorId) select c).ToList(this,x=>new ListDistributorBrokerage(x));
            }
            //显示直属当前经销商和归属当前经销商的下级
            else if (user is DistributorUserModel)
            {
                int id       = ((DistributorUserModel)user).DistributorId;
                var totalIds = q.Select(x => x.DistributorId).ToList();
                var ids      = GetChildrenDistributorId(id, totalIds);
                ids.Add(id);
                List = (from c in q where ids.Contains(c.settlementDistributorId) select c).ToList(this, x => new ListDistributorBrokerage(x));
            }
            foreach (var item in List)
            {
                var distributor1 = DistributorService.GetById(item.DistributorId);
                if (distributor1 != null)
                {
                    var distributoruser = MembershipService.GetUserById(distributor1.UserId);
                    if (user != null)
                    {
                        item.DistributorName = distributoruser.DisplayName;
                    }
                }
                var distributor2 = DistributorService.GetById(item.settlementDistributorId);
                if (distributor2 != null)
                {
                    var distributoruser = MembershipService.GetUserById(distributor2.UserId);
                    if (user != null)
                    {
                        item.SettlementDistributorName = distributoruser.DisplayName;
                    }
                }
                var account = AccountService.GetById(item.AccountId);
                if (account != null)
                {
                    item.AccountName = account.Name;
                }
            }
        }