void CheckUniqueIdentifierCode(DepotManagementDataContext ctx, Out_ManeuverBill maneuverBill) { var varDetail = from a in ctx.Out_ManeuverList where a.Bill_ID == maneuverBill.Bill_ID select a; foreach (Out_ManeuverList detail in varDetail) { object cvt = UniversalFunction.GetGoodsAttributeInfo(ctx, detail.GoodsID, CE_GoodsAttributeName.CVT); object tcu = UniversalFunction.GetGoodsAttributeInfo(ctx, detail.GoodsID, CE_GoodsAttributeName.TCU); if ((cvt != null && Convert.ToBoolean(cvt)) || (tcu != null && Convert.ToBoolean(tcu))) { var varUnique = from a in ctx.Out_UniqueIdentifierData where a.Bill_ID == maneuverBill.Bill_ID && a.GoodsID == detail.GoodsID select a; if (varUnique.Count() != detail.ShipperCount) { throw new Exception(UniversalFunction.GetGoodsMessage(ctx, detail.GoodsID) + "请录入对应【出库数量】的唯一标识码"); } } } }
/// <summary> /// 创建调运单 /// </summary> /// <param name="dataContext">数据上下文</param> /// <param name="afterService">数据集</param> /// <param name="listInfo">明细信息</param> /// <param name="error">错误信息</param> /// <returns>成功返回True,失败返回False</returns> bool CreateManeuver(DepotManagementDataContext dataContext, Out_AfterServicePartsApplyBill afterService, DataTable listInfo, out string error) { error = null; try { Out_ManeuverBill lnqBill = new Out_ManeuverBill(); lnqBill.AssociatedBillNo = afterService.Bill_ID; lnqBill.Bill_ID = "由系统自动生成"; lnqBill.BillStatus = "等待出库"; lnqBill.InStorageID = afterService.InStorageID; lnqBill.OutStorageID = afterService.OutStorageID; lnqBill.Proposer = afterService.Proposer; lnqBill.ProposerTime = afterService.ProposerTime; lnqBill.Remark = afterService.Remark; listInfo.Columns.Add("收货数量"); listInfo.Columns.Add("发货数量"); for (int i = 0; i < listInfo.Rows.Count; i++) { listInfo.Rows[i]["申请数量"] = Convert.ToDecimal(listInfo.Rows[i]["审核数量"]); } if (!m_serverManeuver.InsertBill(lnqBill, listInfo, out error)) { return(false); } if (!m_serverManeuver.OperationInfo(lnqBill, listInfo, out error)) { return(false); } return(true); } catch (Exception ex) { error = ex.Message; return(false); } }
public 调运单明细(string billID, AuthorityFlag authFlag) { InitializeComponent(); FaceAuthoritySetting.SetEnable(this.Controls, authFlag); FaceAuthoritySetting.SetVisibly(this.toolStrip, authFlag); this.toolStrip.Visible = true; if (billID == "") { txtBill_ID.Text = "系统自动生成"; lbBillStatus.Text = "新建单据"; } else { m_lnqManeuverBill = m_serverManeuver.GetBillInfo(billID); txtBill_ID.Text = m_lnqManeuverBill.Bill_ID; lbBillStatus.Text = m_lnqManeuverBill.BillStatus; txtReceiving.Tag = m_lnqManeuverBill.InStorageID; txtShipments.Tag = m_lnqManeuverBill.OutStorageID; txtReceiving.Text = UniversalFunction.GetStorageName(m_lnqManeuverBill.InStorageID); txtShipments.Text = UniversalFunction.GetStorageName(m_lnqManeuverBill.OutStorageID); txtBillRemark.Text = m_lnqManeuverBill.Remark; txtLogisticsBillNo.Text = m_lnqManeuverBill.LogisticsBillNo; txtLogisticsName.Text = m_lnqManeuverBill.LogisticsName; txtPhone.Text = m_lnqManeuverBill.Phone; txtScrapBillNo.Text = m_lnqManeuverBill.ScrapBillNo; btnReceiving.Visible = IntegrativeQuery.IsStockPrincipal(txtReceiving.Tag.ToString(), BasicInfo.LoginName); btnShipments.Visible = IntegrativeQuery.IsStockPrincipal(txtShipments.Tag.ToString(), BasicInfo.LoginName); if (IntegrativeQuery.IsSalesStorage(m_lnqManeuverBill.InStorageID)) { btnReceiving.Visible = false; } } switch (lbBillStatus.Text) { case "新建单据": numProposerCount.ReadOnly = false; btnAdd.Visible = true; btnModify.Visible = true; btnDelete.Visible = true; break; case "等待主管审核": numProposerCount.ReadOnly = false; break; case "等待出库": numShipperCount.ReadOnly = false; btnModify.Visible = true; txtGoodsCode.Enabled = false; break; case "等待入库": numConfirmorCount.ReadOnly = false; btnModify.Visible = true; txtGoodsCode.Enabled = false; break; default: break; } dataGridView1.DataSource = m_serverManeuver.GetListInfo(billID); dataGridView1.Columns["物品ID"].Visible = false; dataGridView1.Columns["Bill_ID"].Visible = false; }
/// <summary> /// 删除单据 /// </summary> /// <param name="billNo">单据号</param> /// <param name="error">错误信息</param> /// <returns>成功返回True,失败返回False</returns> public bool DeleteBill(string billNo, out string error) { error = null; DepotManagementDataContext dataContext = CommentParameter.DepotDataContext; dataContext.Connection.Open(); dataContext.Transaction = dataContext.Connection.BeginTransaction(); try { var varData = from a in dataContext.Out_ManeuverBill where a.Bill_ID == billNo select a; if (varData.Count() != 1) { error = "数据为空或者不唯一"; return(false); } else { Out_ManeuverBill billInfo = varData.Single(); foreach (var item in varData) { Out_UniqueIdentifierData lnqIdentifier = new Out_UniqueIdentifierData(); lnqIdentifier.Bill_ID = item.Bill_ID; if (!m_serverIdentifier.DeleteIdentifier(dataContext, lnqIdentifier, out error)) { return(false); } } if (billInfo.AssociatedBillNo != null && billInfo.AssociatedBillNo.Contains("YXTK")) { var varMarketing = from a in dataContext.S_MarketingBill where a.DJH == varData.Single().AssociatedBillNo select a; dataContext.S_MarketingBill.DeleteAllOnSubmit(varMarketing); m_billMessageServer.DestroyMessage(billInfo.AssociatedBillNo); } var varAfterService = from a in dataContext.Out_AfterServicePartsApplyBill where a.Bill_ID == billInfo.AssociatedBillNo select a; foreach (var item in varAfterService) { item.BillStatus = "新建单据"; } var varDetail = from a in dataContext.Out_ManeuverList where a.Bill_ID == billInfo.Bill_ID select a; List <Out_ManeuverList> lstList = varDetail.ToList(); dataContext.Out_ManeuverBill.DeleteAllOnSubmit(varData); dataContext.SubmitChanges(); foreach (Out_ManeuverList detail in lstList) { var varAccount = from a in dataContext.Out_DetailAccount where a.Bill_ID == billInfo.Bill_ID && a.GoodsID == detail.GoodsID && a.SecStorageID == billInfo.OutStorageID && a.StorageID == detail.StorageID select a; if (varAccount.Count() == 1) { Out_DetailAccount lnqAccount = varAccount.Single(); lnqAccount.OperationCount = -lnqAccount.OperationCount; if (!m_serverBusiness.OperationStock(dataContext, lnqAccount, out error)) { throw new Exception(error); } } dataContext.Out_DetailAccount.DeleteAllOnSubmit(varAccount); dataContext.SubmitChanges(); } } dataContext.Transaction.Commit(); return(true); } catch (Exception ex) { dataContext.Transaction.Rollback(); error = ex.Message; return(false); } }
/// <summary> /// 操作业务 /// </summary> /// <param name="maneuverBill">单据信息数据集</param> /// <param name="listInfo">单据明细信息</param> /// <param name="error">错误信息</param> /// <returns>成功返回True,失败返回False</returns> public bool OperationInfo(Out_ManeuverBill maneuverBill, DataTable listInfo, out string error) { error = null; DepotManagementDataContext dataContext = CommentParameter.DepotDataContext; dataContext.Connection.Open(); dataContext.Transaction = dataContext.Connection.BeginTransaction(); try { var varData = from a in dataContext.Out_ManeuverBill where a.Bill_ID == maneuverBill.Bill_ID select a; if (varData.Count() == 1) { Out_ManeuverBill lnqBill = varData.Single(); switch (lnqBill.BillStatus) { case "等待主管审核": lnqBill.BillStatus = "等待出库"; lnqBill.Verify = BasicInfo.LoginName; lnqBill.VerifyTime = ServerTime.Time; break; case "等待出库": lnqBill.BillStatus = "等待发货"; lnqBill.Shipper = BasicInfo.LoginName; lnqBill.ShipperTime = ServerTime.Time; for (int i = 0; i < listInfo.Rows.Count; i++) { if (listInfo.Rows[i]["发货数量"] == null || listInfo.Rows[i]["发货数量"].ToString() == "" || Convert.ToDecimal(listInfo.Rows[i]["发货数量"]) == 0) { listInfo.Rows[i]["发货数量"] = listInfo.Rows[i]["申请数量"]; } } if (!DeleteList(dataContext, maneuverBill.Bill_ID, out error)) { throw new Exception(error); } if (!InsertList(dataContext, maneuverBill.Bill_ID, listInfo, out error)) { throw new Exception(error); } dataContext.SubmitChanges(); CheckUniqueIdentifierCode(dataContext, maneuverBill); for (int i = 0; i < listInfo.Rows.Count; i++) { Out_DetailAccount lnqDetail = new Out_DetailAccount(); lnqDetail.Bill_ID = lnqBill.Bill_ID; lnqDetail.BillFinishTime = ServerTime.Time; lnqDetail.Confirmor = BasicInfo.LoginName; lnqDetail.GoodsID = Convert.ToInt32(listInfo.Rows[i]["物品ID"]); lnqDetail.OperationCount = -Convert.ToDecimal(listInfo.Rows[i]["发货数量"]); lnqDetail.Proposer = lnqBill.Proposer; lnqDetail.Remark = listInfo.Rows[i]["备注"].ToString(); lnqDetail.SecStorageID = lnqBill.OutStorageID; lnqDetail.StorageID = listInfo.Rows[i]["账务库房ID"].ToString(); if (!m_serverBusiness.OperationDetailAndStock(dataContext, lnqDetail, out error)) { throw new Exception(error); } } break; case "等待发货": lnqBill.BillStatus = "等待收货"; lnqBill.LogisticsBillNo = maneuverBill.LogisticsBillNo; lnqBill.LogisticsName = maneuverBill.LogisticsName; lnqBill.Phone = maneuverBill.Phone; lnqBill.ExcShipper = BasicInfo.LoginName; lnqBill.ExcShipperTime = ServerTime.Time; break; case "等待收货": lnqBill.BillStatus = "等待入库"; lnqBill.ExcConfirmor = BasicInfo.LoginName; lnqBill.ExcConfirmorTime = ServerTime.Time; break; case "等待入库": lnqBill.BillStatus = "已完成"; lnqBill.Confirmor = BasicInfo.LoginName; lnqBill.ConfirmorTime = ServerTime.Time; for (int i = 0; i < listInfo.Rows.Count; i++) { if (listInfo.Rows[i]["收货数量"] == null || listInfo.Rows[i]["收货数量"].ToString() == "" || Convert.ToDecimal(listInfo.Rows[i]["收货数量"]) == 0) { listInfo.Rows[i]["收货数量"] = listInfo.Rows[i]["发货数量"]; } } //删除明细 if (!DeleteList(dataContext, maneuverBill.Bill_ID, out error)) { throw new Exception(error); } //添加明细 if (!InsertList(dataContext, maneuverBill.Bill_ID, listInfo, out error)) { throw new Exception(error); } dataContext.SubmitChanges(); for (int i = 0; i < listInfo.Rows.Count; i++) { Out_DetailAccount lnqDetail = new Out_DetailAccount(); lnqDetail.Bill_ID = lnqBill.Bill_ID; lnqDetail.BillFinishTime = ServerTime.Time; lnqDetail.Confirmor = lnqBill.Confirmor; lnqDetail.GoodsID = Convert.ToInt32(listInfo.Rows[i]["物品ID"]); lnqDetail.OperationCount = Convert.ToDecimal(listInfo.Rows[i]["收货数量"]); lnqDetail.Proposer = lnqBill.Proposer; lnqDetail.Remark = listInfo.Rows[i]["备注"].ToString(); lnqDetail.SecStorageID = lnqBill.InStorageID; lnqDetail.StorageID = listInfo.Rows[i]["账务库房ID"].ToString(); //操作外部业务明细与库存 if (!m_serverBusiness.OperationDetailAndStock(dataContext, lnqDetail, out error)) { throw new Exception(error); } } dataContext.SubmitChanges(); if (!InsertProductStock(dataContext, lnqBill.Bill_ID, out error)) { throw new Exception(error); } break; default: break; } } else { error = "数据重复或者为空"; throw new Exception(error); } dataContext.SubmitChanges(); dataContext.Transaction.Commit(); return(true); } catch (Exception ex) { dataContext.Transaction.Rollback(); error = ex.Message; return(false); } }
/// <summary> /// 提交申请 /// </summary> /// <param name="maneuverBill">单据信息数据集</param> /// <param name="listInfo">明细信息</param> /// <param name="error">错误信息</param> /// <returns>成功返回True,失败返回False</returns> public bool InsertBill(Out_ManeuverBill maneuverBill, DataTable listInfo, out string error) { error = null; DepotManagementDataContext dataContext = CommentParameter.DepotDataContext; try { dataContext.Connection.Open(); dataContext.Transaction = dataContext.Connection.BeginTransaction(); var varData = from a in dataContext.Out_ManeuverBill where a.Bill_ID == maneuverBill.Bill_ID select a; if (varData.Count() == 0) { maneuverBill.Bill_ID = m_serverBillNo.AssignNewNo(this, "调运单"); maneuverBill.BillStatus = "等待主管审核"; if (!InsertList(dataContext, maneuverBill.Bill_ID, listInfo, out error)) { throw new Exception(error); } dataContext.Out_ManeuverBill.InsertOnSubmit(maneuverBill); m_billMessageServer.DestroyMessage(maneuverBill.Bill_ID); m_billMessageServer.SendNewFlowMessage(maneuverBill.Bill_ID, string.Format("{0}号调运单已提交,请营销主管审核", maneuverBill.Bill_ID), CE_RoleEnum.营销主管); } else if (varData.Count() == 1) { Out_ManeuverBill lnqBill = varData.Single(); lnqBill.BillStatus = "等待主管审核"; lnqBill.Remark = maneuverBill.Remark; lnqBill.InStorageID = maneuverBill.InStorageID; lnqBill.OutStorageID = maneuverBill.OutStorageID; lnqBill.ScrapBillNo = maneuverBill.ScrapBillNo; if (!DeleteList(dataContext, maneuverBill.Bill_ID, out error)) { throw new Exception(error); } if (!InsertList(dataContext, maneuverBill.Bill_ID, listInfo, out error)) { throw new Exception(error); } m_billMessageServer.DestroyMessage(maneuverBill.Bill_ID); m_billMessageServer.SendNewFlowMessage(maneuverBill.Bill_ID, string.Format("{0}号调运单已提交,请营销主管审核", maneuverBill.Bill_ID), CE_RoleEnum.营销主管); } else { error = "数据重复"; throw new Exception(error); } dataContext.SubmitChanges(); dataContext.Transaction.Commit(); return(true); } catch (Exception ex) { dataContext.Transaction.Rollback(); error = ex.Message; return(false); } }