public ActionResult Third(string id) { DeliveryThirdModel model = new DeliveryThirdModel(id); if (string.IsNullOrWhiteSpace(model.Id) || this.Session[model.Id] == null) { return(RedirectToAction("First", "Delivery")); } DeliveryAddDTO dto = (DeliveryAddDTO)this.Session[model.Id]; List <SaleOrderExpressDTO> saleOrders = dto.SaleOrders; List <SaleOrder> entities = this.saleOrderService.SearchNeedExpress(); Dictionary <string, PurchaseItemCacheModel> items = ParameterHelper.GetPurchaseItem(PurchaseItemCategory.Product, false); foreach (SaleOrder entity in entities) { SaleOrderNeedExpressModel saleOrder = new SaleOrderNeedExpressModel(entity); PurchaseItemCacheModel purchaseItem = items[entity.Item]; if (purchaseItem != null) { saleOrder.ItemName = purchaseItem.Name; } if (saleOrders.Exists(x => x.Id == entity.Id)) { saleOrder.Selected = Constant.COMMON_Y; } model.SaleOrders.Add(saleOrder); } return(View(model)); }
public ActionResult PostAdd(string id, DeliveryFourthModel model) { JsonResultModel result = new JsonResultModel(); try { Validate validate = new Validate(); validate.CheckStringArgument(WebResource.Field_Id, id, true); validate.CheckObjectArgument <DeliveryFourthModel>("model", model); if (validate.IsFailed) { result.BuilderErrorMessage(validate.ErrorMessages); return(Json(result)); } if (this.Session[id] == null) { result.BuilderErrorMessage(WebResource.Message_DeliverySessionOut); result.Data = "/Delivery/First"; return(Json(result)); } model.PostValidate(ref validate); if (validate.IsFailed) { result.BuilderErrorMessage(validate.ErrorMessages); return(Json(result)); } DeliveryAddDTO dto = (DeliveryAddDTO)this.Session[id]; dto.Date = model.Date; dto.ExpressCompany = model.ExpressCompany; dto.ExpressBill = model.ExpressBill; dto.Remark = model.Remark; dto.Creator = this.Session["Mobile"].ToString(); dto.Costs = new List <CostAddDTO>(); foreach (CostAddModel cost in model.Costs) { dto.Costs.Add(new CostAddDTO { Item = cost.Item, Money = cost.Money }); } this.deliveryService.Add(dto); result.Result = true; result.Data = "/Delivery/Index"; return(Json(result)); } catch (Exception ex) { result.BuilderErrorMessage(ex.Message); return(Json(result)); } }
public ActionResult First(string id) { DeliveryFirstModel model = new DeliveryFirstModel(id); DeliveryAddDTO dto; if (string.IsNullOrWhiteSpace(model.Id)) { model.NewId(); dto = new DeliveryAddDTO(); this.Session[model.Id] = dto; } else { if (this.Session[model.Id] == null) { this.Session[model.Id] = new DeliveryAddDTO(); } dto = (DeliveryAddDTO)this.Session[model.Id]; } List <DeliveryDetailAddDTO> deliveryProducts = dto.DeliveryDetails; List <Purchase> entities = this.purchaseService.GetDeliverable(PurchaseItemCategory.Product); Dictionary <string, PurchaseItemCacheModel> items = ParameterHelper.GetPurchaseItem(PurchaseItemCategory.Product, false); foreach (Purchase entity in entities) { PurchaseDeliveryModel product = new PurchaseDeliveryModel(entity); PurchaseItemCacheModel purchaseItem = items[entity.Item]; if (purchaseItem != null) { product.ItemName = purchaseItem.Name; product.PackUnit = purchaseItem.OutUnit; product.InOutRate = purchaseItem.InOutRate; } if (deliveryProducts.Count > 0) { DeliveryDetailAddDTO deliveryProduct = deliveryProducts.Find(x => x.ItemCategory == PurchaseItemCategory.Product && x.PurchaseId == entity.Id); if (deliveryProduct != null) { if (deliveryProduct.DeliveryQuantity > 0) { product.DeliveryQuantity = deliveryProduct.DeliveryQuantity.ToString("0.##"); } if (deliveryProduct.PackQuantity > 0) { product.PackQuantity = deliveryProduct.PackQuantity.ToString("0.##"); } } } model.Products.Add(product); } return(View(model)); }
public ActionResult PostSecond(string id, List <DeliveryDetailAddModel> packs) { JsonResultModel result = new JsonResultModel(); try { Validate validate = new Validate(); validate.CheckStringArgument(WebResource.Field_Id, id, true); validate.CheckList <DeliveryDetailAddModel>(WebResource.PurchaseItemCategory_Pack, packs); if (validate.IsFailed) { result.BuilderErrorMessage(validate.ErrorMessages); return(Json(result)); } if (this.Session[id] == null) { result.BuilderErrorMessage(WebResource.Message_DeliverySessionOut); result.Data = "/Delivery/First"; return(Json(result)); } DeliveryAddDTO dto = (DeliveryAddDTO)this.Session[id]; Dictionary <string, DeliveryDetailAddDTO> packDict = new Dictionary <string, DeliveryDetailAddDTO>(); Dictionary <string, PurchaseItemCacheModel> purchaseItems = ParameterHelper.GetPurchaseItem(PurchaseItemCategory.Pack, false); foreach (DeliveryDetailAddModel pack in packs) { pack.PostValidate(ref validate); dto.DeliveryDetails.Add(new DeliveryDetailAddDTO { PurchaseId = pack.PurchaseId, Item = pack.Item, ItemCategory = pack.ItemCategory, ItemName = pack.ItemName, DeliveryQuantity = pack.DeliveryQuantity }); } if (validate.IsFailed) { result.BuilderErrorMessage(validate.ErrorMessages); return(Json(result)); } this.Session[id] = dto; result.Data = "/Delivery/Third?id=" + id; result.Result = true; } catch (Exception ex) { result.BuilderErrorMessage(ex.Message); } return(Json(result)); }
public ActionResult Fourth(string id) { DeliveryFourthModel model = new DeliveryFourthModel(id); if (string.IsNullOrWhiteSpace(model.Id) || this.Session[model.Id] == null) { return(RedirectToAction("First", "Delivery")); } DeliveryAddDTO dto = (DeliveryAddDTO)this.Session[model.Id]; model.CurrentDate = DataConvert.ConvertDateToString(dto.Date); model.ExpressCompany = dto.ExpressCompany; model.ExpressBill = dto.ExpressBill; model.Remark = dto.Remark; return(View(model)); }
public ActionResult Second(string id) { DeliverySecondModel model = new DeliverySecondModel(id); if (string.IsNullOrWhiteSpace(model.Id) || this.Session[model.Id] == null) { return(RedirectToAction("First", "Delivery")); } DeliveryAddDTO dto = (DeliveryAddDTO)this.Session[model.Id]; List <DeliveryDetailAddDTO> deliveryPacks = dto.DeliveryDetails; List <Purchase> entities = this.purchaseService.GetDeliverable(PurchaseItemCategory.Pack); Dictionary <string, PurchaseItemCacheModel> items = ParameterHelper.GetPurchaseItem(PurchaseItemCategory.Pack, false); foreach (Purchase entity in entities) { PurchaseDeliveryModel pack = new PurchaseDeliveryModel(entity); PurchaseItemCacheModel purchaseItem = items[entity.Item]; if (purchaseItem != null) { pack.ItemName = purchaseItem.Name; } if (deliveryPacks.Count > 0) { DeliveryDetailAddDTO deliveryPack = deliveryPacks.Find(x => x.ItemCategory == PurchaseItemCategory.Pack && x.PurchaseId == entity.Id); if (deliveryPack != null) { if (deliveryPack.DeliveryQuantity > 0) { pack.DeliveryQuantity = deliveryPack.DeliveryQuantity.ToString("0.##"); } } } model.Packs.Add(pack); } return(View(model)); }
/// <summary> /// 新增交付记录 /// </summary> /// <param name="dto">新增交付数据对象</param> public void Add(DeliveryAddDTO dto) { using (DbConnection conn = DbHelper.CreateConnection()) { DbTransaction trans = null; try { conn.Open(); trans = conn.BeginTransaction(); if (trans == null) { throw new ArgumentNullException("DbTransaction"); } #region Delivery and Cost Delivery entity = new Delivery(); entity.Create(dto.Date, dto.ExpressCompany, dto.ExpressBill, dto.IncludeOrder, dto.Summary, dto.Remark, dto.Costs, dto.Creator); this.deliveryRepository.Insert(trans, entity); foreach (Cost cost in entity.Costs) { this.costRepository.Insert(trans, cost); } #endregion Dictionary <string, Sale> sales = new Dictionary <string, Sale>(); Dictionary <string, string> items = new Dictionary <string, string>(); foreach (DeliveryDetailAddDTO detail in dto.DeliveryDetails) { #region Purchase Purchase purchase = this.purchaseRepository.Select(trans, detail.PurchaseId); if (purchase == null || purchase.Category != detail.ItemCategory || purchase.Item != detail.Item) { throw new EasySoftException(string.Format("关联的采购单不存在或项目不正确。采购单ID:{0}, 采购项:{1}", purchase.Id, detail.ItemName)); } if (purchase.Inventory < detail.DeliveryQuantity) { throw new EasySoftException(string.Format("库存不足。采购单ID:{0}, 采购项:{1}", purchase.Id, detail.ItemName)); } purchase.Delivery(detail.DeliveryQuantity, dto.Creator); this.purchaseRepository.Update(trans, purchase); #endregion #region DeliveryDetail DeliveryDetail detailEntity = new DeliveryDetail(); detailEntity.Create(entity.Id, purchase.Id, detail.ItemCategory, detail.DeliveryQuantity, detail.PackQuantity, detail.PackUnit, dto.Creator); this.deliveryDetailRepository.Insert(trans, detailEntity); #endregion } #region SaleOrder if (dto.IncludeOrder == Constant.COMMON_Y) { foreach (SaleOrderExpressDTO order in dto.SaleOrders) { SaleOrder orderEntity = this.saleOrderRepository.Select(trans, order.Id); if (orderEntity == null || orderEntity.NeedExpress == Constant.COMMON_N || orderEntity.Item != order.Item || orderEntity.Quantity != order.Quantity || orderEntity.Status != SaleOrderStatus.Ordered) { throw new EasySoftException(string.Format("关联的订单不存在或状态不正确,订单信息Id:{0}, 订单项:{1}", order.Id, order.ItemName)); } orderEntity.SentExpress(orderEntity.Id, dto.Creator); this.saleOrderRepository.Update(trans, orderEntity); } } #endregion #region Sale foreach (SaleAddDTO sale in dto.Sales) { Sale saleEntity = new Sale(); saleEntity.Create(entity.Id, sale.Item, sale.Quantity, sale.Unit, dto.Creator); this.saleRepository.Insert(trans, saleEntity); } #endregion trans.Commit(); } catch { if (trans != null) { trans.Rollback(); } throw; } } }
public ActionResult PostThird(string id, List <SaleOrderExpressModel> orders) { JsonResultModel result = new JsonResultModel(); try { Validate validate = new Validate(); validate.CheckStringArgument(WebResource.Field_Id, id, true); if (validate.IsFailed) { result.BuilderErrorMessage(validate.ErrorMessages); return(Json(result)); } if (this.Session[id] == null) { result.BuilderErrorMessage(WebResource.Message_DeliverySessionOut); result.Data = "/Delivery/First"; return(Json(result)); } if (orders != null && orders.Count > 0) { DeliveryAddDTO dto = (DeliveryAddDTO)this.Session[id]; dto.IncludeOrder = Constant.COMMON_Y; Dictionary <string, SaleOrderExpressModel> orderDict = new Dictionary <string, SaleOrderExpressModel>(); foreach (SaleOrderExpressModel order in orders) { order.PostValidate(ref validate); dto.SaleOrders.Add(new SaleOrderExpressDTO { Id = order.Id, Item = order.Item, ItemName = order.ItemName, Quantity = order.Quantity, Unit = order.Unit }); if (orderDict.ContainsKey(order.Item)) { orderDict[order.Item].Quantity += order.Quantity; } else { orderDict.Add(order.Item, order); } } List <string> summary = new List <string>(); foreach (KeyValuePair <string, SaleOrderExpressModel> saleAdd in orderDict) { summary.Add(string.Format("{0}{1}{2}", saleAdd.Value.ItemName, saleAdd.Value.Quantity, saleAdd.Value.Unit)); SaleAddDTO saleDto = dto.Sales.Find(x => x.Item == saleAdd.Value.Item); if (saleDto == null) { throw new EasySoftException(string.Format("出库产品中没有包含{0}", saleAdd.Value.ItemName)); } else { dto.Sales.RemoveAll(x => x.Item == saleAdd.Value.Item); saleDto.Quantity -= saleAdd.Value.Quantity; if (saleDto.Quantity < 0) { throw new EasySoftException(string.Format("{0}的出库量少于订单数量", saleAdd.Value.ItemName)); } dto.Sales.Add(saleDto); } } dto.Summary = string.Format("{0}, 其中包含快递{1}", dto.Summary, string.Join(", ", summary.ToArray())); this.Session[id] = dto; } result.Data = "/Delivery/Fourth?id=" + id; result.Result = true; } catch (Exception ex) { result.BuilderErrorMessage(ex.Message); } return(Json(result)); }
public ActionResult PostFirst(string id, List <DeliveryDetailAddModel> products) { JsonResultModel result = new JsonResultModel(); try { Validate validate = new Validate(); validate.CheckStringArgument(WebResource.Field_Id, id, true); validate.CheckList <DeliveryDetailAddModel>(WebResource.PurchaseItemCategory_Product, products); if (validate.IsFailed) { result.BuilderErrorMessage(validate.ErrorMessages); return(Json(result)); } if (this.Session[id] == null) { result.BuilderErrorMessage(WebResource.Message_DeliverySessionOut); result.Data = "/Delivery/First"; return(Json(result)); } DeliveryAddDTO dto = (DeliveryAddDTO)this.Session[id]; Dictionary <string, SaleAddDTO> saleAddDict = new Dictionary <string, SaleAddDTO>(); foreach (DeliveryDetailAddModel product in products) { product.PostValidate(ref validate); dto.DeliveryDetails.Add(new DeliveryDetailAddDTO { PurchaseId = product.PurchaseId, Item = product.Item, ItemCategory = product.ItemCategory, ItemName = product.ItemName, DeliveryQuantity = product.DeliveryQuantity, PackQuantity = product.PackQuantity, PackUnit = product.PackUnit }); if (saleAddDict.ContainsKey(product.Item)) { saleAddDict[product.Item].Quantity += product.PackQuantity; } else { saleAddDict.Add(product.Item, new SaleAddDTO { Item = product.Item, ItemName = product.ItemName, Quantity = product.PackQuantity, Unit = product.PackUnit }); } } List <string> summary = new List <string>(); foreach (KeyValuePair <string, SaleAddDTO> saleAdd in saleAddDict) { summary.Add(string.Format("{0}{1}{2}", saleAdd.Value.ItemName, saleAdd.Value.Quantity, saleAdd.Value.Unit)); dto.Sales.Add(saleAdd.Value); } dto.Summary = string.Join(",", summary.ToArray()); if (validate.IsFailed) { result.BuilderErrorMessage(validate.ErrorMessages); return(Json(result)); } this.Session[id] = dto; result.Data = "/Delivery/Second?id=" + id; result.Result = true; } catch (Exception ex) { result.BuilderErrorMessage(ex.Message); } return(Json(result)); }