/// <summary> /// 删除单据 /// </summary> /// <param name="billID">单据号</param> /// <param name="error">错误信息</param> /// <returns>成功返回True,失败返回False</returns> public bool DeleteBill(string billID, out string error) { DepotManagementDataContext dataContext = CommentParameter.DepotDataContext; var varData = from a in dataContext.S_StorageCheck where a.DJH == billID select a; if (varData.Count() != 1) { error = "数据不唯一"; return(false); } else { S_StorageCheck lnqCheck = varData.Single(); dataContext.S_StorageCheck.DeleteOnSubmit(lnqCheck); if (!DeleteListDate(dataContext, lnqCheck.DJH, out error)) { return(false); } dataContext.SubmitChanges(); return(true); } }
public 库房盘点表(string DJH, DataTable dt, AuthorityFlag m_authFlag, string strFlag) { InitializeComponent(); m_billInfo = m_serverStroageCheck.GetBill(DJH); dataGridView1.DataSource = m_serverStroageCheck.GetList(DJH, dt); FaceAuthoritySetting.SetEnable(this.Controls, m_authFlag); FaceAuthoritySetting.SetVisibly(this.toolStrip1, m_authFlag); if (!BasicInfo.ListRoles.Contains(CE_RoleEnum.会计.ToString())) { txtZMJE.Visible = false; txtPDJE.Visible = false; label5.Visible = false; label8.Visible = false; dataGridView1.Columns["盘点金额"].Visible = false; dataGridView1.Columns["账面金额"].Visible = false; dataGridView1.Columns["盈亏金额"].Visible = false; } StapleInfo.InitUnitComboBox(cmbUnit); StapleInfo.InitStoreStateComboBox(cmbGoodsStatus); cmbUnit.SelectedIndex = -1; cmbGoodsStatus.SelectedIndex = -1; if (strFlag == "0") { toolStrip1.Visible = true; } m_dtMx = (DataTable)dataGridView1.DataSource; RefreshDataGirdView(m_dtMx); }
/// <summary> /// 添加主表信息 /// </summary> /// <param name="inCheck">盘点单信息</param> /// <param name="checkList">明细信息</param> /// <param name="error">出错时返回错误信息,无错时返回null</param> /// <returns>添加成功返回True,添加失败返回False</returns> public bool AddBill(S_StorageCheck inCheck, DataTable checkList, out string error) { error = null; try { DepotManagementDataContext ctx = CommentParameter.DepotDataContext; var varData = from a in ctx.S_StorageCheck where a.DJH == inCheck.DJH select a; switch (varData.Count()) { case 0: S_StorageCheck lnqCheck = new S_StorageCheck(); lnqCheck.DJH = inCheck.DJH; lnqCheck.DJFS = inCheck.DJFS; lnqCheck.StorageID = inCheck.StorageID; lnqCheck.BZRY = BasicInfo.LoginID; lnqCheck.BZRQ = ServerTime.Time; lnqCheck.DJZT = "新建单据"; ctx.S_StorageCheck.InsertOnSubmit(lnqCheck); break; case 1: S_StorageCheck lnqCheckFor = varData.Single(); if (lnqCheckFor.DJZT == "单据已完成") { error = "单据已完成,无法重新保存,请重新确认单据状态"; return(false); } lnqCheckFor.DJFS = inCheck.DJFS; lnqCheckFor.BZRQ = ServerTime.Time; lnqCheckFor.BZRY = BasicInfo.LoginID; lnqCheckFor.DJZT = "新建单据"; lnqCheckFor.KFRQ = null; lnqCheckFor.KFRY = null; lnqCheckFor.SHRQ = null; lnqCheckFor.SHRY = null; lnqCheckFor.CWRQ = null; lnqCheckFor.CWRY = null; break; default: break; } if (checkList != null) { if (!AddListDate(ctx, inCheck.DJH, checkList, out error)) { return(false); } } ctx.SubmitChanges(); return(true); } catch (Exception ex) { error = ex.Message; return(false); } }
/// <summary> /// 自动生成领料单 /// </summary> /// <param name="contxt">数据上下文</param> /// <param name="djh">单据号</param> void CreateMaterialRequisition(DepotManagementDataContext contxt, string djh) { MaterialRequisitionServer serverMaterialBill = new MaterialRequisitionServer(); string error = null; try { string strBillID = m_assignBill.AssignNewNo(serverMaterialBill, CE_BillTypeEnum.领料单.ToString()); S_StorageCheck billInfo = GetBill(contxt, djh); List <View_S_StorageCheckList> listInfo = (from a in GetList(contxt, djh) where a.盈亏数量 < 0 select a).ToList(); S_MaterialRequisition lnqRequisitionBill = new S_MaterialRequisition(); if (listInfo.Count > 0) { #region 领料单主表 lnqRequisitionBill.AssociatedBillNo = djh; lnqRequisitionBill.AssociatedBillType = "盘点单"; lnqRequisitionBill.Bill_ID = strBillID; lnqRequisitionBill.Bill_Time = ServerTime.Time; lnqRequisitionBill.BillStatus = "已出库"; lnqRequisitionBill.Department = "ZZ05"; lnqRequisitionBill.DepartmentDirector = UniversalFunction.GetPersonnelInfo(contxt, billInfo.SHRY).姓名; lnqRequisitionBill.DepotManager = BasicInfo.LoginName; lnqRequisitionBill.FetchCount = 0; lnqRequisitionBill.FetchType = "零星领料"; lnqRequisitionBill.FillInPersonnel = UniversalFunction.GetPersonnelInfo(contxt, billInfo.BZRY).姓名; lnqRequisitionBill.FillInPersonnelCode = billInfo.BZRY; lnqRequisitionBill.OutDepotDate = ServerTime.Time; lnqRequisitionBill.ProductType = ""; lnqRequisitionBill.PurposeCode = UniversalFunction.GetPurpose(CE_PickingPurposeProperty.盘点).Code; lnqRequisitionBill.Remark = "库房盘点(盘亏)"; lnqRequisitionBill.StorageID = billInfo.StorageID; if (!serverMaterialBill.AutoCreateBill(contxt, lnqRequisitionBill, out error)) { throw new Exception(error); } #endregion foreach (View_S_StorageCheckList listSingle in listInfo) { #region 领料单明细 S_MaterialRequisitionGoods lnqRequisitionGoods = new S_MaterialRequisitionGoods(); lnqRequisitionGoods.BasicCount = 0; lnqRequisitionGoods.BatchNo = listSingle.批次号; lnqRequisitionGoods.Bill_ID = strBillID; lnqRequisitionGoods.GoodsID = (int)listSingle.物品ID; lnqRequisitionGoods.ProviderCode = listSingle.供货单位; lnqRequisitionGoods.RealCount = -(decimal)listSingle.盈亏数量; lnqRequisitionGoods.Remark = "库房盘点(盘亏)"; lnqRequisitionGoods.RequestCount = -(decimal)listSingle.盈亏数量; lnqRequisitionGoods.ShowPosition = 1; MaterialRequisitionGoodsServer serverMaterialGoods = new MaterialRequisitionGoodsServer(); if (!serverMaterialGoods.AutoCreateGoods(contxt, lnqRequisitionGoods, out error)) { throw new Exception(error); } #endregion } contxt.SubmitChanges(); serverMaterialBill.OpertaionDetailAndStock(contxt, lnqRequisitionBill); contxt.SubmitChanges(); m_assignBill.UseBillNo(CE_BillTypeEnum.领料单.ToString(), strBillID); } } catch (Exception ex) { throw new Exception(ex.Message); } }
/// <summary> /// 自动生成领料退库单 /// </summary> /// <param name="contxt">数据上下文</param> /// <param name="djh">单据号</param> void CreateMaterialReturnedInTheDepot(DepotManagementDataContext contxt, string djh) { MaterialReturnedInTheDepot serverReturnedBill = new MaterialReturnedInTheDepot(); try { string strBillID = m_assignBill.AssignNewNo(serverReturnedBill, CE_BillTypeEnum.领料退库单.ToString()); S_StorageCheck billInfo = GetBill(contxt, djh); List <View_S_StorageCheckList> listInfo = (from a in GetList(contxt, djh) where a.盈亏数量 > 0 select a).ToList(); S_MaterialReturnedInTheDepot lnqReturnedInTheDepot = new S_MaterialReturnedInTheDepot(); if (listInfo.Count > 0) { #region 领料退库单主表 lnqReturnedInTheDepot.Bill_ID = strBillID; lnqReturnedInTheDepot.Bill_Time = ServerTime.Time; lnqReturnedInTheDepot.BillStatus = "已完成"; lnqReturnedInTheDepot.Department = "ZZ05"; lnqReturnedInTheDepot.DepartmentDirector = UniversalFunction.GetPersonnelInfo(contxt, billInfo.SHRY).姓名; lnqReturnedInTheDepot.DepotManager = BasicInfo.LoginName; lnqReturnedInTheDepot.FillInPersonnel = UniversalFunction.GetPersonnelInfo(contxt, billInfo.BZRY).姓名; lnqReturnedInTheDepot.FillInPersonnelCode = billInfo.BZRY; lnqReturnedInTheDepot.InDepotDate = ServerTime.Time; lnqReturnedInTheDepot.PurposeCode = UniversalFunction.GetPurpose(CE_PickingPurposeProperty.盘点).Code; lnqReturnedInTheDepot.QualityInputer = ""; lnqReturnedInTheDepot.Remark = "库房盘点(盘盈)"; lnqReturnedInTheDepot.ReturnMode = "领料退库"; lnqReturnedInTheDepot.ReturnReason = "库房盘点(盘盈)"; lnqReturnedInTheDepot.ReturnType = null; lnqReturnedInTheDepot.StorageID = billInfo.StorageID; contxt.S_MaterialReturnedInTheDepot.InsertOnSubmit(lnqReturnedInTheDepot); #endregion foreach (View_S_StorageCheckList listSingle in listInfo) { #region 领料单退库明细 S_MaterialListReturnedInTheDepot lnqReturnedInTheDepotList = new S_MaterialListReturnedInTheDepot(); lnqReturnedInTheDepotList.BatchNo = listSingle.批次号; lnqReturnedInTheDepotList.Bill_ID = strBillID; lnqReturnedInTheDepotList.ColumnNumber = listSingle.列; lnqReturnedInTheDepotList.GoodsID = (int)listSingle.物品ID; lnqReturnedInTheDepotList.LayerNumber = listSingle.层; lnqReturnedInTheDepotList.Provider = listSingle.供货单位; lnqReturnedInTheDepotList.ProviderBatchNo = listSingle.供方批次号; lnqReturnedInTheDepotList.Remark = "库房盘点(盘亏)"; lnqReturnedInTheDepotList.ReturnedAmount = (decimal)listSingle.盈亏数量; lnqReturnedInTheDepotList.ShelfArea = listSingle.货架; contxt.S_MaterialListReturnedInTheDepot.InsertOnSubmit(lnqReturnedInTheDepotList); #endregion } contxt.SubmitChanges(); serverReturnedBill.OpertaionDetailAndStock(contxt, lnqReturnedInTheDepot); contxt.SubmitChanges(); m_assignBill.UseBillNo(CE_BillTypeEnum.领料退库单.ToString(), strBillID); } } catch (Exception ex) { throw new Exception(ex.Message); } }
/// <summary> /// 更新单据状态 /// </summary> /// <param name="djh">单据号</param> /// <param name="billStatus">单据状态</param> /// <param name="error">出错时返回错误信息,无错时返回null</param> /// <returns>更改成功返回True,更改失败返回False</returns> public bool UpdateBill(string djh, string billStatus, out string error) { error = null; DepotManagementDataContext ctx = CommentParameter.DepotDataContext; ctx.Connection.Open(); ctx.Transaction = ctx.Connection.BeginTransaction(); try { var varData = from a in ctx.S_StorageCheck where a.DJH == djh select a; if (varData.Count() == 1) { S_StorageCheck lnqCheck = varData.Single(); if (lnqCheck.DJZT != billStatus) { error = "单据状态错误,请重新刷新单据确认单据状态"; return(false); } switch (lnqCheck.DJZT) { case "新建单据": lnqCheck.BZRQ = ServerTime.Time; lnqCheck.BZRY = BasicInfo.LoginID; lnqCheck.DJZT = "等待主管审核"; lnqCheck.KFRQ = null; lnqCheck.KFRY = null; lnqCheck.SHRQ = null; lnqCheck.SHRY = null; lnqCheck.CWRQ = null; lnqCheck.CWRY = null; break; case "等待主管审核": lnqCheck.SHRY = BasicInfo.LoginID; lnqCheck.SHRQ = ServerTime.Time; lnqCheck.DJZT = "等待负责人批准"; break; case "等待负责人批准": lnqCheck.FGRY = BasicInfo.LoginID; lnqCheck.FGRQ = ServerTime.Time; lnqCheck.DJZT = "等待财务批准"; break; case "等待财务批准": lnqCheck.CWRY = BasicInfo.LoginID; lnqCheck.CWRQ = ServerTime.Time; lnqCheck.DJZT = "等待仓管确认"; break; case "等待仓管确认": if (lnqCheck.DJZT == "单据已完成") { error = "单据不能重复确认"; return(false); } lnqCheck.DJZT = "单据已完成"; lnqCheck.KFRY = BasicInfo.LoginID; lnqCheck.KFRQ = ServerTime.Time; //创建领料单 CreateMaterialRequisition(ctx, lnqCheck.DJH); ctx.SubmitChanges(); //创建领料退库单 CreateMaterialReturnedInTheDepot(ctx, lnqCheck.DJH); ctx.SubmitChanges(); break; default: break; } } else { error = "数据不唯一"; return(false); } ctx.SubmitChanges(); ctx.Transaction.Commit(); return(true); } catch (Exception ex) { error = ex.Message; ctx.Transaction.Rollback(); return(false); } }
/// <summary> /// 获得明细表信息 /// </summary> /// <param name="djh">单据号</param> /// <param name="depotTable">材料类别列表</param> /// <returns>返回获取的明细表信息</returns> public DataTable GetList(string djh, DataTable depotTable) { S_StorageCheck billInfo = GetBill(djh); string strRe = ""; if (depotTable == null || depotTable.Rows.Count == 0) { strRe = ""; } else { for (int i = 0; i < depotTable.Rows.Count; i++) { strRe = strRe + "'" + depotTable.Rows[i][0].ToString() + "'" + ","; } strRe = strRe.Substring(0, strRe.Length - 1); } string strSql = "select * from View_S_StorageCheckList where 单据号 = '" + djh + "'"; DataTable dt = GlobalObject.DatabaseServer.QueryInfo(strSql); if (dt.Rows.Count > 0) { return(dt); } else { if (billInfo.DJFS == "全库房盘点") { strSql = "select 物品ID,图号型号, 物品名称, 规格, 批次号, 库存数量 as 账面数量," + " 实际金额 as 账面金额,库存数量 as 盘点数量,cast(实际金额 as decimal(18, 2)) as 盘点金额,0 as 盈亏数量," + " cast(0 as decimal(18, 2)) as 盈亏金额,供货单位, 单位,物品状态, 材料类别名称, 货架, 列, 层," + " 供方批次号, '' as 备注, 单位ID, b.ID as 物品状态ID, 材料类别编码,'" + djh + "' as 单据号," + " CASE WHEN a.入库时间 IS NULL THEN 0 ELSE a.入库时间 END AS 入库时间," + " CASE WHEN a.入库时间 IS NULL THEN 0 ELSE CAST(GETDATE() - a.入库时间 AS int) / 30 END AS 账龄" + " from View_S_Stock as a inner join S_StockStatus as b on a.物品状态 = b.Description" + " where 库房代码 = '" + billInfo.StorageID + "' and 库存数量 > 0 "; dt = GlobalObject.DatabaseServer.QueryInfo(strSql); } else if (billInfo.DJFS == "分类别盘点" && strRe != "") { strSql = "select 物品ID,图号型号, 物品名称, 规格, 批次号, 库存数量 as 账面数量," + " 实际金额 as 账面金额,库存数量 as 盘点数量,cast(实际金额 as decimal(18, 2)) as 盘点金额,0 as 盈亏数量," + " cast(0 as decimal(18, 2)) as 盈亏金额,供货单位, 单位,物品状态, 材料类别名称, 货架, 列, 层," + " 供方批次号, '' as 备注, 单位ID, b.ID as 物品状态ID, 材料类别编码,'" + djh + "' as 单据号, " + " CASE WHEN a.入库时间 IS NULL THEN 0 ELSE a.入库时间 END AS 入库时间," + " CASE WHEN a.入库时间 IS NULL THEN 0 ELSE CAST(GETDATE() - a.入库时间 AS int) / 30 END AS 账龄" + " from View_S_Stock as a inner join S_StockStatus as b on a.物品状态 = b.Description" + " where 库房代码 = '" + billInfo.StorageID + "' and 库存数量 > 0 " + " and 材料类别编码 in (" + strRe + ")"; dt = GlobalObject.DatabaseServer.QueryInfo(strSql); } } return(dt); }