Example #1
0
        //订单商品列表
        private void BGOrdPro()
        {
            DataTable dtPro = Ord_Pro.List(id);

            pageTotalPrice1 = PriceHandler.GetTotalPrice(dtPro, "op_UserTotalPrice");

            Bind.BGRepeater(dtPro, this.rpListProUp);
        }
Example #2
0
        /// <summary>
        /// 产品列表
        /// </summary>
        /// <returns></returns>
        public static Dictionary <int, DataTable> List(int pUserID, int pUserLevel, int pUserIdentity)
        {
            string sSQL = "select CartSN,Num,FK_All,ProSN,ProIsHas,ProName,Number,Price,Price1,Price2,MS_StartTime,MS_EndTime,PicS,LevelPrice,Item,StockN,Unit,UnitNum from "
                          + "User_Cart uc left join Pro_Info pi on uc.FK_All=pi.ProSN "
                          + "left join (select LevelPrice,Fk_Pro from Pro_LevelPrice where FK_User_Level=" + pUserLevel + ") lp on lp.Fk_Pro=pi.ProSN "
                          + "where FK_User="******" and CartType=0";

            DataTable dt = DbHelp.GetDataTable(sSQL);

            PriceHandler ph = new PriceHandler(dt, pUserLevel, pUserIdentity);

            return(ph.Change());
        }
Example #3
0
        public async Task Handle(SettlementPriceMessageEvent @event)
        {
            if (@event == null)
            {
                throw new ArgumentNullException(nameof(SettlementPriceMessageEvent));
            }
            //根据event内容分析出各种费项与计价单位
            //获取计价单位
            var priceUnit = GetPriceUnit(@event.Calculates.FirstOrDefault());
            //分析各种费项结果,并生成各种费项类
            var prices = AnalyzeFeesAndSetTransportFees(@event.Fees);
            //开始计算费用
            var priceHandler = new PriceHandler(prices, priceUnit, @event.Goods);

            priceHandler.Handle();
            if (priceHandler != null && priceHandler.PriceValue > 0)
            {
                //根据operationid取相关任务
                var task = await _taskRepository.FindByOperationAsync(@event.OperationID);

                if (task == null)
                {
                    throw new SettlementDomainException(@event.OperationID + "下的运输任务不存在");
                }
                if (task.Payable == null)
                {
                    throw new SettlementDomainException(@event.OperationID + "运输下的应付没有被初始化");
                }
                task.Payable.ExChangeStatus(PayableStatusEnum.Todo);
                task.Payable.SetPrice(priceHandler.PriceValue);
                //应付子集
                foreach (var item in prices)
                {
                    PayableItem pi = new PayableItem
                    {
                        Amount       = item.Value,
                        CostCode     = item.Code,
                        CostName     = item.Name,
                        CostType     = item.Id,
                        PayableBasis = PayableBasisEnum.Contract
                    };
                    task.Payable.AddItem(pi);
                }
                await _taskRepository.UpdateAsync(task);

                //这里可以继续发送FinishPriceEvent事件
            }
            await _taskRepository.UnitOfWork.SaveChangesAsync();
        }
Example #4
0
        private void ProList(string pIds)
        {
            int userLevel = LoginInfo.UserLevel;

            string sql = "select ProSN," + num + " as Num,ProName,Number,Price,Price1,Price2,MS_StartTime,MS_EndTime,PicS,LevelPrice,Item,ProIsHas,StockN,pi.Unit,pi.UnitNum from "
                         + "vgPro_Info pi left join (select LevelPrice,Fk_Pro from Pro_LevelPrice where FK_User_Level=" + userLevel + ") lp on lp.Fk_Pro=pi.ProSN "
                         + "where ProSN in(" + pIds + ")";

            DataTable    dt = DbHelp.GetDataTable(sql);
            PriceHandler ph = new PriceHandler(dt, userLevel, userIdentifier);

            Dictionary <int, DataTable> dirc = ph.Change();

            Bind.BGRepeater(dirc[10], this.rpList);
        }
Example #5
0
        public async Task CalculatePrice(SettlementPriceMessageEvent evt)
        {
            if (evt == null)
            {
                throw new ArgumentNullException(nameof(SettlementPriceMessageEvent));
            }
            if (evt.Calculates.Count == 0)
            {
                throw new ArgumentException("指派操作为:" + evt.OperationID + "的报价不存在");
            }
            if (evt.Fees.Count == 0)
            {
                throw new ArgumentException("指派操作为:" + evt.OperationID + "的费项不存在");
            }
            //根据event内容分析出各种费项与计价单位
            //获取计价单位
            var priceUnit = GetPriceUnit(evt.Calculates.FirstOrDefault());
            //分析各种费项结果,并生成各种费项类
            var prices = AnalyzeFeesAndSetTransportFees(evt.Fees);
            //开始计算费用
            var priceHandler = new PriceHandler(prices, priceUnit, evt.Goods);

            priceHandler.Handle();
            if (priceHandler != null && priceHandler.PriceValue > 0)
            {
                //根据operationid取相关任务
                var task = await _taskRepository.FindByOperationAsync(evt.OperationID);

                if (task == null)
                {
                    throw new SettlementDomainException(evt.OperationID + "下的运输任务不存在");
                }
                if (task.Payable == null)
                {
                    throw new SettlementDomainException(evt.OperationID + "运输下的应付没有被初始化");
                }
                task.Payable.ExChangeStatus(PayableStatusEnum.Todo);
                task.Payable.SetPrice(priceHandler.PriceValue);
                //取送货类
                var sendPrice = prices.Where(p => p.GetType() == typeof(SendGoodsPrice)).Where(p => p.Value > 0).Cast <SendGoodsPrice>().FirstOrDefault();
                if (sendPrice != null)
                {
                    task.Payable.AddItem(new PayableItem
                    {
                        Amount       = sendPrice.SumPrice,
                        UnitPrice    = sendPrice.Value,
                        CostCode     = sendPrice.Code,
                        CostName     = sendPrice.Name,
                        CostType     = sendPrice.Id,
                        LowestPrice  = sendPrice.LowestPrice,
                        Unit         = sendPrice.Unit,
                        Number       = sendPrice.Number,
                        PayableBasis = PayableBasisEnum.Contract,
                        Note         = sendPrice.Remark
                    });
                }
                prices.Where(p => p.GetType() != typeof(LowestPrice))
                .Where(p => p.GetType() != typeof(SendGoodsPrice))
                .Where(p => p.GetType() != typeof(FreePickWeightOrVolumePrice))
                .Where(p => p.GetType() != typeof(FreeSendWeightOrVolumePrice))
                .Where(p => p.Value > 0)
                .ForEach(item =>
                {
                    PayableItem pi = new PayableItem
                    {
                        Amount       = item.SumPrice,
                        UnitPrice    = item.Value,
                        CostCode     = item.Code,
                        CostName     = item.Name,
                        CostType     = item.Id,
                        LowestPrice  = item.LowestPrice,
                        Unit         = item.Unit,
                        Number       = item.Number,
                        PayableBasis = PayableBasisEnum.Contract
                    };
                    if (item.GetType() == typeof(PickGoodsPrice))
                    {
                        pi.Note = (item as PickGoodsPrice).Remark;
                    }
                    task.Payable.AddItem(pi);
                });
                await _taskRepository.UpdateAsync(task);

                //这里可以继续发送FinishPriceEvent领域事件
                var finishSettlementEvent = new FinishSettlementEvent();
                var settlementPayable     = new SettlementPayable
                {
                    Amount             = task.Payable.Amount,
                    OperationId        = evt.OperationID,
                    SettlementUnit     = task.Payable.SettlementUnit,
                    SettlementUnitCode = task.Payable.SettlementUnitCode,
                    PayableItems       = _mapper.Map <List <SettlementPayableItem> >(task.Payable.Details)
                };
                finishSettlementEvent.SetPayable(settlementPayable);
                task.AddDomainEvent(finishSettlementEvent);
                await _taskRepository.UnitOfWork.SaveEntitiesAsync();
            }
        }