示例#1
0
        private void CreateNeedToSynchronize(List <CommissionSettlementItemEntity> commItemEntitys)
        {
            for (int i = 0; i < commItemEntitys.Count; i++)
            {
                commItemEntitys[i].OrderProductList = new List <OrderProductEntity>();
                if (commItemEntitys[i].Type == "SO")
                {
                    commItemEntitys[i].OrderProductList = SyncCommissionSettlementDAL.GetItemSO(commItemEntitys[i].OrderSysNo);
                }
                else if (commItemEntitys[i].Type == "RMA")
                {
                    commItemEntitys[i].OrderProductList = SyncCommissionSettlementDAL.GetItemRMA(commItemEntitys[i].OrderSysNo);
                }
            }

            //1.计算佣金
            //2.写入数据到表
            for (int i = 0; i < commItemEntitys.Count; i++)
            {
                //commItemEntitys_Create[i].OrderProductList = new List<OrderProductEntity>();
                commItemEntitys[i].CommissionAmt = Math.Abs(commItemEntitys[i].OrderProductList.Sum(x => x.Price * x.Quantity * x.Percentage));
                bool isSuccess = SyncCommissionSettlementDAL.CreateCommissionSettlementItem(commItemEntitys[i]);
                if (!isSuccess)
                {
                    log.WriteLog(string.Format("[Create]同步CPS单据失败!单据编号{0},单据类型{1}", commItemEntitys[i].OrderSysNo, commItemEntitys[i].Type));
                }
            }
        }
示例#2
0
        /// <summary>
        /// 操作
        /// </summary>
        public void ProcessWork()
        {
            //0.获取佣金结算单据SO & RMA
            List <CommissionSettlementItemEntity> commItemEntitys_Create = SyncCommissionSettlementDAL.GetNeedToSynchronizeCreate();
            List <CommissionSettlementItemEntity> commItemEntitys_Update = SyncCommissionSettlementDAL.GetNeedToSynchronizeUpdate();

            //1.同步创建 CommItem中没有的数据
            CreateNeedToSynchronize(commItemEntitys_Create);

            //2.同步更新 CommItem中存在的数据
            UpdateNeedToSynchronize(commItemEntitys_Update);

            //3.同步作废CPS单据【SO & RMA 被作废】
            SyncCommissionSettlementDAL.VoidCommissionSettlementItem(Settings.SyncCount);

            SyncCommissionSettlementDAL.UpdateCommissionSettlementItemOrder(Settings.SyncCount);
        }
        /// <summary>
        ///
        /// </summary>
        public void ProcessWork()
        {
            //1.获取时间
            DateTime now = Settings.SettledDate;
            int      day = 20;

            if (Settings.SettledDay.HasValue)
            {
                day = Settings.SettledDay.Value;
            }
            if (now.Day != day)
            {   //默认每月20号结算
                return;
            }
            DateTime endDate   = new DateTime(now.Year, now.Month, 1);
            DateTime beginDate = endDate.AddMonths(-1);

            //2.获取结算用户
            List <UserEntity> userEntitys = SettledCommissionDAL.GetSettledUserList(beginDate, endDate);

            //3.依次结算
            for (int i = 0; i < userEntitys.Count; i++)
            {
                //1>获取佣金结算单信息
                int userSysNo = userEntitys[i].UserSysNo;
                List <CommissionSettlementItemEntity> commItemEntitys = SettledCommissionDAL.CommissionSettlementItemBySysNo(userSysNo, beginDate, endDate);

                TransactionOptions options = new TransactionOptions();
                options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;
                options.Timeout        = TransactionManager.DefaultTimeout;
                using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options))
                {
                    int commSysNo = SyncCommissionSettlementDAL.CreateCommissionSettlement(new CommissionSettlementEntity
                    {
                        UserSysNo        = userEntitys[i].UserSysNo,
                        SettledBeginDate = beginDate,
                        SettledEndDate   = endDate,
                        InUser           = "******"
                    });
                    if (commSysNo == 0)
                    {
                        continue;
                    }

                    //2>重新计算佣金
                    foreach (CommissionSettlementItemEntity entity in commItemEntitys)
                    {
                        entity.OrderProductList = new List <OrderProductEntity>();
                        if (entity.Type == "SO")
                        {
                            entity.OrderProductList = SyncCommissionSettlementDAL.GetItemSO(entity.OrderSysNo);
                        }
                        else if (entity.Type == "RMA")
                        {
                            entity.OrderProductList = SyncCommissionSettlementDAL.GetItemRMA(entity.OrderSysNo);
                        }

                        entity.CommissionAmt             = entity.OrderProductList.Sum(x => x.Price * x.Quantity * x.Percentage);
                        entity.Status                    = "S";
                        entity.CommissionSettlementSysNo = commSysNo;
                        bool isSuccess = SettledCommissionDAL.UpdateCommissionSettlementItem(entity);
                        if (!isSuccess)
                        {
                            log.WriteLog(string.Format("结算CPS单据失败!单据编号{0},单据类型{1}", entity.OrderSysNo, entity.Type));
                        }
                    }
                    decimal totalAmt = 0.00m;

                    commItemEntitys.ForEach(x =>
                    {
                        if (x.Type == "SO")
                        {
                            totalAmt += x.CommissionAmt;
                        }
                        if (x.Type == "RMA")
                        {
                            totalAmt -= x.CommissionAmt;
                        }
                    });

                    bool isUpdate = SyncCommissionSettlementDAL.UpdateCommissionSettlement(commSysNo, totalAmt);
                    if (!isUpdate)
                    {
                        log.WriteLog(string.Format("更新结算单失败!单据编号{0}", commSysNo));
                        continue;
                    }
                    //修改用户余额
                    bool isAdd = SyncCommissionSettlementDAL.AddUserBalanceAmt(userSysNo, totalAmt);

                    if (!isAdd)
                    {
                        log.WriteLog(string.Format("添加用户余额失败!用户编号{0},余额{1}", userSysNo, totalAmt));
                        continue;
                    }

                    scope.Complete();
                }



                //3>记录数据
            }
        }