///// <summary> ///// 生成出库单 ///// </summary> //private BillStoreOutVM GenerateStoreOut() //{ // BillStoreOutVM storeout = BillDataContextHelper.GenerateStoreOut<BillDelivery, BillDeliveryDetails>(Master, Details); // var soMaster = storeout.Master; // soMaster.StorageID = Master.StorageID; // soMaster.BrandID = Master.BrandID; // //IEnumerable<BillDetailBase> details = this.Details;//协变(逆变一般使用在委托中) // //List<BillStoreOutDetails> soDetails = new List<BillStoreOutDetails>(); // //foreach (var d in details) // //{ // // //类型转换重载,直接用BillDeliveryDetails(不必中间先转成基类BillDetailBase)应该也行 // // //可惜.net框架不支持这种父子类之间的类型转换重载 // // //soDetails.Add(d); // // soDetails.Add(new BillStoreOutDetails // // { // // ProductID = d.ProductID, // // Quantity = d.Quantity // // }); // //} // //storeout.Details = soDetails; // return storeout; //} /// <summary> /// 检查下级机构资金和资信余额是否满足发货要求 /// </summary> public OPResult CheckFundSatisfyDelivery() { var oid = this.Master.ToOrganizationID; //var type = VMGlobal.OrganizationTypes.Find(o => o.Name == "自营店"); //if (type != null && type.ID == VMGlobal.SysProcessQuery.LinqOP.GetById<SysOrganization>(oid).TypeId) //{ // return new OPResult { IsSucceed = true }; //} if (_isSelfShop = OrganizationListVM.IsSelfRunShop(oid)) { return new OPResult { IsSucceed = true } } ; var lp = VMGlobal.DistributionQuery.LinqOP; var bid = this.Master.BrandID; var totalMoney = GetTotalMoney(); return(new OPResult { IsSucceed = true }); }
protected override IEnumerable <PreStoreSearchEntity> SearchData() { var oids = OrganizationListVM.GetOrganizationDownHierarchy(VMGlobal.CurrentUser.OrganizationID); var lp = VMGlobal.DistributionQuery.LinqOP; var vips = lp.GetDataContext <VIPCard>(); var prestores = lp.Search <VIPPredepositTrack>(o => oids.Contains(o.OrganizationID)); var organizations = lp.GetDataContext <ViewOrganization>(); var query = from prestore in prestores from vip in vips where prestore.VIPID == vip.ID from organization in organizations where vip.OrganizationID == organization.ID select new PreStoreSearchEntity { ConsumeMoney = prestore.ConsumeMoney, CreateTime = prestore.CreateTime, OccurDate = prestore.CreateTime.Date, FreeMoney = prestore.FreeMoney, Kind = prestore.Kind, OrganizationName = organization.Name, RefrenceBillCode = prestore.RefrenceBillCode, Remark = prestore.Remark, StoreMoney = prestore.StoreMoney, VIPCode = vip.Code, VIPName = vip.CustomerName }; var filtedData = (IQueryable <PreStoreSearchEntity>)query.Where(FilterDescriptors); var result = filtedData.ToList(); foreach (var r in result) { r.KindName = Kinds.Find(o => o.Flag == r.Kind).Name; } return(result); }
public override OPResult Save() { BillGoodReturn goodreturn = VMGlobal.DistributionQuery.LinqOP.Search <BillGoodReturn>(o => o.Code == Master.RefrenceBillCode).First(); if (goodreturn.Status == (int)BillGoodReturnStatusEnum.已入库) { return new OPResult { IsSucceed = false, Message = "该单已入库" } } ; //var uniqueCodes = GetSnapshotDetails(goodreturn.ID); if (!OrganizationListVM.IsSelfRunShop(goodreturn.OrganizationID))//检查当初发这些货品的时候的发货价.另:非自营店不能退不是发给自己的货物 { //var index = goodreturn.Remark.LastIndexOf(':'); //if (index != -1) //{ ReturnMoney = goodreturn.TotalPrice;//Convert.ToDecimal(goodreturn.Remark.Substring(index + 1)); //} } goodreturn.Status = (int)BillGoodReturnStatusEnum.已入库; using (TransactionScope scope = new TransactionScope()) { try { base.SaveWithNoTran(); VMGlobal.DistributionQuery.LinqOP.Update <BillGoodReturn>(goodreturn); if (ReturnMoney != 0) { VMGlobal.DistributionQuery.LinqOP.Add <OrganizationFundAccount>( new OrganizationFundAccount { BrandID = Master.BrandID, OrganizationID = goodreturn.OrganizationID, //this.Master.OrganizationID, NeedIn = 0, AlreadyIn = ReturnMoney, CreatorID = VMGlobal.CurrentUser.ID, BillKind = (int)BillTypeEnum.BillGoodReturn, Remark = "退货入库生成,退货单号" + goodreturn.Code, RefrenceBillCode = this.Master.Code }); } Details.ForEach(d => BillLogic.AddStock(Master.StorageID, d.ProductID, d.Quantity)); //SaveUniqueCodes(uniqueCodes); scope.Complete(); } catch (Exception e) { return(new OPResult { IsSucceed = false, Message = e.Message }); } } return(new OPResult { IsSucceed = true }); }
public override OPResult Save() { if (!IsDefectiveReturn && !OrganizationListVM.IsSelfRunShop(Master.OrganizationID)) { var result = this.CheckGoodReturnRate(Master.OrganizationID); if (!result.IsSucceed) { return(result); } } this.Master.TotalPrice = this.GridDataItems.Sum(o => o.Quantity * o.Price * o.Discount) / 100;//本单退货金额 this.Master.Quantity = this.GridDataItems.Sum(o => o.Quantity); this.Master.Status = (int)BillGoodReturnStatusEnum.未审核; //this.Master.StorageID = (-1) * StorageID;//入库仓库ID以负数形式保存到数据库,用以后续审核入库 var details = this.Details = new List <BillGoodReturnDetails>(); TraverseGridDataItems(p => { details.Add(new BillGoodReturnDetails { ProductID = p.ProductID, Quantity = p.Quantity, Discount = p.Discount, Price = p.Price }); }); if (details.Count == 0) { return(new OPResult { IsSucceed = false, Message = "没有需要保存的数据" }); } OPResult opresult = null; if (Master.StorageID == default(int)) { opresult = base.Save(); } else { opresult = BillWebApiInvoker.Instance.SaveBill <BillGoodReturn, BillGoodReturnDetails>(new BillBO <BillGoodReturn, BillGoodReturnDetails>() { Bill = this.Master, Details = this.Details }); } if (opresult.IsSucceed) { var users = IMHelper.OnlineUsers.Where(o => o.OrganizationID == OrganizationListVM.CurrentOrganization.ParentID).ToArray(); IMHelper.AsyncSendMessageTo(users, new IMessage { Message = string.Format("{2}退货{0}件,单号{1},请注意查收.", Details.Sum(o => o.Quantity), Master.Code, OrganizationListVM.CurrentOrganization.Name) }, IMReceiveAccessEnum.退货单); this.Init(); } return(opresult); }
private void myRadDataForm_EditEnding(object sender, EditEndingEventArgs e) { //点击取消按钮也会触发该事件,因此此处加了判断 if (myRadDataForm.CanCommitEdit && e.EditAction == EditAction.Commit) { var lbBrand = GetBrandListBox(); var brandSets = lbBrand.ItemsSource as List <HoldableEntity <ProBrand> >; SysOrganizationBO org = (SysOrganizationBO)myRadDataForm.CurrentItem; org.Brands = brandSets.FindAll(bs => bs.IsHold).Select(bs => bs.Entity).ToList(); OrganizationListVM context = this.DataContext as OrganizationListVM; UIHelper.AddOrUpdateRecord(myRadDataForm, context, e); } }
public OPResult Send(DeliverySearchEntity entity) { if (entity.Status != (int)BillDeliveryStatusEnum.已装箱未配送) { return(new OPResult { IsSucceed = false, Message = "该单已配送" }); } var bill = VMGlobal.DistributionQuery.LinqOP.GetById <BillDelivery>(entity.ID); if (bill.Status != (int)BillDeliveryStatusEnum.已装箱未配送) { return(new OPResult { IsSucceed = false, Message = "该单已由他人配送" }); } OrganizationFundAccount fundAccount = null; bool isSelfShop = OrganizationListVM.IsSelfRunShop(entity.ToOrganizationID);//是否自营店 if (!isSelfShop) { var result = this.CheckFundSatisfyDelivery(entity); if (!result.IsSucceed) { return(result); } var totalMoney = GetTotalMoney(entity); fundAccount = new OrganizationFundAccount { BrandID = entity.BrandID, OrganizationID = entity.ToOrganizationID, NeedIn = totalMoney, AlreadyIn = 0.0M, CreatorID = VMGlobal.CurrentUser.ID, BillKind = (int)BillTypeEnum.BillDelivery, Remark = "发货单生成", RefrenceBillCode = entity.Code }; } //生成出库单 var storeout = this.GenerateStoreOut(entity); entity.Status = (int)BillDeliveryStatusEnum.在途中; using (TransactionScope scope = new TransactionScope()) { try { if (fundAccount != null) { VMGlobal.DistributionQuery.LinqOP.Add <OrganizationFundAccount>(fundAccount); } VMGlobal.DistributionQuery.LinqOP.Update <BillDelivery>(entity); storeout.SaveWithNoTran(); scope.Complete(); } catch (Exception e) { return(new OPResult { IsSucceed = false, Message = "配送失败\n失败原因:" + e.Message }); } } ((ObservableCollection <DeliverySearchEntity>) this.Entities).Remove(entity); var users = IMHelper.OnlineUsers.Where(o => o.OrganizationID == entity.ToOrganizationID || o.OrganizationID == VMGlobal.CurrentUser.OrganizationID).ToArray(); var toName = VMGlobal.SysProcessQuery.LinqOP.GetById <SysOrganization>(entity.ToOrganizationID).Name; IMHelper.AsyncSendMessageTo(users, new IMessage { Message = string.Format("发往{2}{0}件,单号{1},到货后请及时入库.", entity.Quantity, entity.Code, toName), Sender = IMHelper.CurrentUser }, IMReceiveAccessEnum.发货单); return(new OPResult { IsSucceed = true, Message = "配送成功." }); }
public VIPProportionVM(int brandID, int organizationID) { BrandID = brandID; _downHierarchyOrganizationIDArray = OrganizationListVM.GetOrganizationDownHierarchy(organizationID); }
public override OPResult Save() { if (!OrganizationListVM.IsSelfRunShop(VMGlobal.CurrentUser.OrganizationID)) { #if UniqueCode List <string> uniqueCodes = new List <string>(); TraverseGridDataItems( item => { if (item.UniqueCodes.Count > 0) { uniqueCodes.AddRange(item.UniqueCodes); } } ); var ucarray = uniqueCodes.ToArray(); var result = this.CheckDataAvaliable(ucarray); if (!result.IsSucceed) { return(result); } result = #else var result = #endif this.CheckGoodReturnRate(VMGlobal.CurrentUser.OrganizationID); if (!result.IsSucceed) { return(result); } } this.Master.TotalPrice = this.GridDataItems.Sum(o => o.Quantity * o.Price * o.Discount) / 100;//本单退货金额 this.Master.Quantity = this.GridDataItems.Sum(o => o.Quantity); var details = this.Details = new List <BillGoodReturnDetails>(); TraverseGridDataItems(p => { details.Add(new BillGoodReturnDetails { ProductID = p.ProductID, Quantity = p.Quantity, Discount = p.Discount, Price = p.Price }); }); if (details.Count == 0) { return(new OPResult { IsSucceed = false, Message = "没有需要保存的数据" }); } var opresult = BillWebApiInvoker.Instance.SaveBill <BillGoodReturn, BillGoodReturnDetails>(new BillBO <BillGoodReturn, BillGoodReturnDetails>() { Bill = this.Master, Details = this.Details }); if (opresult.IsSucceed) { var users = IMHelper.OnlineUsers.Where(o => o.OrganizationID == OrganizationListVM.CurrentOrganization.ParentID).ToArray(); IMHelper.AsyncSendMessageTo(users, new IMessage { Message = string.Format("{2}退货{0}件,单号{1},请注意查收.", Details.Sum(o => o.Quantity), Master.Code, OrganizationListVM.CurrentOrganization.Name) }, IMReceiveAccessEnum.退货单); this.Init(); } return(opresult); }