public bool UpdateSaleDetail(MMS_SaleDetail saleDet) { var query = from item in dc.MMS_SaleDetail where item.ID == saleDet.ID select item; BatchEvaluate.Eval(saleDet, query.First()); dc.SubmitChanges(); return(true); }
/// <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); }