public virtual ActionResult Editar(int id) { var reserva = TReservation.Load(id); ViewBag.Client = TClient.ListAll().ToSelectList(x => x.Id, x => x.Name); ViewBag.Iten = TMovie.ListAll().ToSelectList(x => x.Id, x => x.Name); ViewBag.Sale = TSale.ListAll().ToSelectList(x => x.Id, x => x.EnumStatusSale); return(View(reserva)); }
/// <summary> /// 保存销售单 /// </summary> /// <param name="obj"> 自定义销售单实体 </param> /// <returns> 销售单ID号 </returns> public int SaveSale(TSale obj) { if (obj.Content.ID != null && obj.Content.ID > 0) { MMS_SaleContent content = dao.GetInfo(obj.Content.ID); if (content.AuditFlag == true) { throw new Exception("该单据已经审核" + content.SaleBillCode); } } return(dao.SaveSale(obj)); }
/// <summary> /// 打印销售单 /// </summary> /// <param name="id"> </param> /// <param name="isAudit"> </param> /// <param name="operatorCode"> </param> /// <returns> </returns> public bool AuditSale(int id, bool isAudit, string operatorCode) { using (TransactionScope ts = new TransactionScope()) //开启DTC事务 { TSale tsale = dao.GetSale(id); //取销售单组合实体 MMS_SaleContent content = tsale.Content; //取入销售主内容实体 if (content.AuditFlag == true) //如果销售单已审核 { throw new Exception("该单据已经审核" + content.SaleBillCode); } foreach (TSaleDetail tSaleDetail in tsale.Detail) //遍历销售单货品 { MMS_Store storeParam = new MMS_Store(); storeParam.Warehouse = content.WareHouse; storeParam.ProductCode = tSaleDetail.DetDetail.ProductCode; MMS_Store sto = null; //根据仓库、货品代码取库存表中该货品信息 sto = daoStore.GetStore(storeParam); if (sto == null) //库存中没有该商品 { throw new Exception("库存中没有该商品,不能销售" + tSaleDetail.DetDetail.ProductCode); } else { if (tSaleDetail.DetDetail.Quantity > sto.Quantity) //如果销售数量大于库存数量 { throw new Exception("库存数据不足,不能销售" + tSaleDetail.DetDetail.ProductCode); } sto.Quantity -= tSaleDetail.DetDetail.Quantity; //销售冲减数量 sto.Amount -= tSaleDetail.DetDetail.Quantity * sto.Price; //销售冲减金额 if (sto.Quantity > 0) { sto.Price = sto.Amount / sto.Quantity; //生新计算单价 } daoStore.UpdateInfo(sto); //更新库存表 } //更新成本价 MMS_SaleDetail saleDet = tSaleDetail.DetDetail; saleDet.Cost = sto.Price; dao.UpdateSaleDetail(saleDet); } content.AuditFlag = isAudit; //设销售单已审核 content.Operator = operatorCode; content.OperateDate = DateTime.Now; dao.UpdateInfo(content); ts.Complete(); //提交事务 } return(true); }
/// <summary> /// 根据主键值获取销售单组合实体 /// </summary> /// <param name="id"> </param> /// <returns> </returns> public TSale GetSale(int id) { TSale resu = new TSale(); resu.OprType = OperateType.otNone; resu.Content = dc.MMS_SaleContent.Where(itm => itm.ID == id).First(); List <MMS_SaleDetail> tempList = dc.MMS_SaleDetail.Where(itm => itm.SaleBillCode == resu.Content.SaleBillCode).ToList(); foreach (MMS_SaleDetail item in tempList) { TSaleDetail TDetail = new TSaleDetail(); TDetail.OprType = OperateType.otNone; TDetail.DetDetail = item; resu.Detail.Add(TDetail); } return(resu); }
/// <summary> /// 保存销售单 /// </summary> /// <param name="obj"> 自定义销售单实体 </param> /// <returns> 销售单ID号 </returns> public int SaveSale(TSale obj) { if (obj.OprType == OperateType.otInsert) //传入的是插入操作标志 { dc.MMS_SaleContent.InsertOnSubmit(obj.Content); //执行插入操作 } else if (obj.OprType == OperateType.otUpdate) //传入的是修改操作标志 { var query = from item in dc.MMS_SaleContent where item.ID == obj.Content.ID select item; BatchEvaluate.Eval(obj.Content, query.First()); //调用Eval方法进行实体间赋值 } else if (obj.OprType == OperateType.otDelete) //传入的是删除操作标志 { dc.MMS_SaleContent.DeleteOnSubmit(obj.Content); //执行删除操作 } foreach (TSaleDetail item in obj.Detail) //遍历采购计划货品明细 { if (item.OprType == OperateType.otInsert) //传入的是插入操作标志 { dc.MMS_SaleDetail.InsertOnSubmit(item.DetDetail); //执行插入操作 } else if (item.OprType == OperateType.otUpdate) //传入的是修改操作标志 { var query = from itm in dc.MMS_SaleDetail where itm.ID == item.DetDetail.ID select itm; BatchEvaluate.Eval(item.DetDetail, query.First()); //执行修改操作 } else if (item.OprType == OperateType.otDelete) //传入的是删除操作标志 { dc.MMS_SaleDetail.DeleteOnSubmit(item.DetDetail); //执行删除操作 } } dc.SubmitChanges(); //最后提交操作 return(obj.Content.ID); }