/// <summary> /// 确认单据 /// </summary> /// <param name="billNo">单据号</param> /// <param name="list">明细信息</param> /// <param name="error">错误信息</param> /// <returns>成功返回True,失败返回False</returns> public bool AffirmBill(string billNo, DataTable list, out string error) { error = null; DepotManagementDataContext ctx = CommentParameter.DepotDataContext; ctx.Connection.Open(); ctx.Transaction = ctx.Connection.BeginTransaction(); try { var varData = from a in ctx.WS_ConsumptionBill where a.BillNo == billNo select a; WS_ConsumptionBill tempBill = new WS_ConsumptionBill(); if (varData.Count() == 1) { tempBill = varData.Single(); if (tempBill.BillStatus != ConsumptionBillStatus.等待确认.ToString()) { throw new Exception("单据状态错误,请重新确认"); } tempBill.BillStatus = ConsumptionBillStatus.单据已完成.ToString(); tempBill.Affirm = BasicInfo.LoginName; tempBill.AffirmDate = ServerTime.Time; } else { throw new Exception("数据不唯一,请重新确认"); } ListControl(ctx, tempBill, list); ctx.SubmitChanges(); foreach (DataRow dr in list.Rows) { WS_Subsidiary tempSubsidiary = new WS_Subsidiary(); tempSubsidiary.BatchNo = dr["批次号"].ToString(); tempSubsidiary.BillNo = tempBill.BillNo; tempSubsidiary.GoodsID = Convert.ToInt32(dr["物品ID"]); tempSubsidiary.OperationCount = Convert.ToDecimal(dr["数量"]); tempSubsidiary.OperationType = (int)CE_SubsidiaryOperationType.车间耗用; tempSubsidiary.Remark = dr["备注"].ToString(); tempSubsidiary.WSCode = tempBill.WSCode; tempSubsidiary.Proposer = tempBill.Proposer; tempSubsidiary.ProposerDate = (DateTime)tempBill.ProposerDate; tempSubsidiary.Affirm = BasicInfo.LoginName; tempSubsidiary.AffirmDate = ServerTime.Time; IWorkShopStock serverStock = ServerModuleFactory.GetServerModule <IWorkShopStock>(); WS_WorkShopStock tempWSStock = serverStock.GetStockSingleInfo(tempSubsidiary.WSCode, tempSubsidiary.GoodsID, tempSubsidiary.BatchNo); tempSubsidiary.UnitPrice = tempWSStock == null ? 0 : tempWSStock.UnitPrice; tempSubsidiary.BillTime = ServerTime.Time; View_HR_Personnel tempHR = UniversalFunction.GetPersonnelInfo(tempSubsidiary.Proposer); if (tempHR == null) { throw new Exception("申请人员不存在"); } tempSubsidiary.Applicant = tempHR.部门名称; serverStock.OperationSubsidiary(ctx, tempSubsidiary); } ctx.SubmitChanges(); ctx.Transaction.Commit(); return(true); } catch (Exception ex) { ctx.Transaction.Rollback(); error = ex.Message; return(false); } }