public StoreTransferModel(StoreTransfer storeTransfer)
            : base(storeTransfer)
        {
            this.CodeNo = storeTransfer.CodeNo;
            this.OrderCode = storeTransfer.OrderCode;
            this.OrderTimeStr = storeTransfer.OrderTime.ToString("yyyy-MM-dd HH:mm:ss");

            if (storeTransfer.FromStore != null)
            {
                this.FromStoreId = storeTransfer.FromStore.Id;
                this.FromStoreName = storeTransfer.FromStore.Name;
            }

            if (storeTransfer.ToStore != null)
            {
                this.ToStoreId = storeTransfer.ToStore.Id;
                this.ToStoreName = storeTransfer.ToStore.Name;
            }

            this.Note = storeTransfer.Note;
        }
 public static StoreTransferModel From(StoreTransfer storeTransfer)
 {
     return new StoreTransferModel(storeTransfer);
 }
        public ActionResult SaveOrUpdate(StoreTransfer obj, string sgoods)
        {
            try
            {
                if (obj.Id > 0)
                {
                    obj = this.StoreTransferRepository.Get(obj.Id);
                    TryUpdateModel(obj);

                    var jser = new JavaScriptSerializer();
                    IList<StoreTransferDetailModel> datas = jser.Deserialize<IList<StoreTransferDetailModel>>(sgoods);

                    var list = this.StoreTransferDetailRepository.GetAll(new StoreTransferDetailQuery
                    {
                        StoreTransferId = obj.Id
                    });

                    IList<StoreTransferDetail> dts = new List<StoreTransferDetail>();

                    //找到存在的进行更新,不存在的删除
                    foreach (var item1 in list)
                    {
                        bool bFlag = false;

                        for (int i = datas.Count - 1; i >= 0; i--)
                        {
                            var item2 = datas[i];

                            if (item1.Goods.Id == item2.Id)
                            {
                                item1.Price = item2.Price;
                                item1.Quantity = item2.StoreGoodsQuantity;
                                item1.TotalAomount = item2.TotalAomount;
                                item1.Note = item2.StoreGoodsNote;

                                dts.Add(item1);
                                datas.Remove(item2);

                                bFlag = true;
                            }
                        }

                        if (!bFlag)
                        {
                            this.StoreTransferDetailRepository.Delete(item1);
                        }
                    }

                    //添加新增的
                    foreach (var item in datas)
                    {
                        dts.Add(new StoreOutDetail()
                        {
                            StoreOut = obj,
                            Goods = this.GoodsRepository.Get(item.Id),
                            Price = item.Price,
                            Quantity = item.StoreGoodsQuantity,
                            TotalAomount = item.TotalAomount,
                            Note = item.StoreGoodsNote
                        });
                    }

                    foreach (var item in dts)
                    {
                        this.StoreOutDetailRepository.SaveOrUpdate(item);
                    }
                }
                else
                {
                    if (obj.Store == null)
                    {
                        return JsonError("请选择仓库");
                    }

                    if (obj.Customer == null)
                    {
                        return JsonError("请选择客户");
                    }

                    if (obj.Seller == null)
                    {
                        return JsonError("请选择销售员");
                    }
                }

                obj = this.StoreOutRepository.SaveOrUpdate(obj);

                return JsonSuccess(obj);
            }
            catch (Exception ex)
            {
                return JsonError(ex.Message);
            }
        }