//订单商品列表 private void BGOrdPro() { DataTable dtPro = Ord_Pro.List(id); pageTotalPrice1 = PriceHandler.GetTotalPrice(dtPro, "op_UserTotalPrice"); Bind.BGRepeater(dtPro, this.rpListProUp); }
/// <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()); }
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(); }
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); }
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(); } }