Exemple #1
0
        ///// <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
            });
        }
Exemple #4
0
        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);
     }
 }
Exemple #6
0
        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 = "配送成功."
            });
        }
Exemple #7
0
 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);
        }