/// <summary> /// 赋值账务信息 /// </summary> /// <param name="dataContxt">数据上下文</param> /// <param name="bill">单据信息</param> /// <param name="item">明细信息</param> /// <returns>返回账务信息</returns> S_InDepotDetailBill AssignDetailInfo(DepotManagementDataContext dataContxt, S_HomemadeRejectBill bill, S_HomemadeRejectList item) { S_InDepotDetailBill detailBill = new S_InDepotDetailBill(); detailBill.ID = Guid.NewGuid(); detailBill.BillTime = (DateTime)bill.OutDepotDate; detailBill.FillInPersonnel = bill.FillInPersonnel; detailBill.Department = bill.Department; detailBill.FactPrice = -Math.Round(item.UnitPrice * item.Amount, 2); detailBill.FactUnitPrice = item.UnitPrice; detailBill.GoodsID = item.GoodsID; detailBill.BatchNo = item.BatchNo; detailBill.Provider = item.Provider; detailBill.InDepotBillID = bill.Bill_ID; detailBill.InDepotCount = -item.Amount; detailBill.UnitPrice = item.UnitPrice; detailBill.Price = -Math.Round(item.UnitPrice * item.Amount, 2); detailBill.OperationType = (int)CE_SubsidiaryOperationType.自制件退货; detailBill.StorageID = bill.StorageID; detailBill.Remark = bill.Remark + "(根据自制件退货单自动生成)"; detailBill.AffrimPersonnel = bill.DepotManager; detailBill.FillInDate = bill.Bill_Time; return(detailBill); }
/// <summary> /// 添加自制件退货单 /// </summary> /// <param name="bill">添加的自制件退货单据信息</param> /// <param name="returnBill">返回更新后的自制件退货单数据集</param> /// <param name="error">出错时返回错误信息,无错时返回null</param> /// <returns>返回是否成功添加自制件退货单</returns> public bool AddBill(S_HomemadeRejectBill bill, out IQueryResult returnBill, out string error) { returnBill = null; error = null; try { DepotManagementDataContext dataContxt = CommentParameter.DepotDataContext; if (GlobalObject.GeneralFunction.IsNullOrEmpty(bill.Bill_ID)) { throw new Exception("【单据号】获取失败,请重新再试"); } dataContxt.S_HomemadeRejectBill.InsertOnSubmit(bill); dataContxt.SubmitChanges(); if (!GetAllBill(out returnBill, out error)) { return(false); } return(true); } catch (Exception exce) { error = exce.Message; return(false); } }
/// <summary> /// 回退单据 /// </summary> /// <param name="djh">自制件退货单据号</param> /// <param name="billStatus">单据状态</param> /// <param name="returnBill">返回更新后重新查询的自制件退货单数据集</param> /// <param name="error">出错时返回错误信息,无错时返回null</param> /// <param name="rebackReason">回退原因</param> /// <returns>操作成功返回True,操作失败返回False</returns> public bool ReturnBill(string djh, string billStatus, out IQueryResult returnBill, out string error, string rebackReason) { returnBill = null; error = null; try { DepotManagementDataContext dataContext = CommentParameter.DepotDataContext; var varData = from a in dataContext.S_HomemadeRejectBill where a.Bill_ID == djh select a; string strMsg = ""; if (varData.Count() == 1) { S_HomemadeRejectBill lnqMRequ = varData.Single(); switch (billStatus) { case "新建单据": strMsg = string.Format("{0}号自制件退货单已回退,请您重新处理单据; 回退原因为" + rebackReason, djh); m_billMessageServer.PassFlowMessage(djh, strMsg, lnqMRequ.FillInPersonnelCode, false); lnqMRequ.BillStatus = "新建单据"; lnqMRequ.FinanceSignatory = null; break; case "等待财务审核": strMsg = string.Format("{0}号自制件退货单已回退,请您重新处理单据; 回退原因为" + rebackReason, djh); m_billMessageServer.PassFlowMessage(djh, strMsg, UniversalFunction.GetPersonnelCode(lnqMRequ.FinanceSignatory), false); lnqMRequ.BillStatus = "等待质检"; lnqMRequ.FinanceSignatory = null; break; default: break; } dataContext.SubmitChanges(); } else { error = "数据不唯一或者为空"; return(false); } return(GetAllBill(out returnBill, out error)); } catch (Exception ex) { error = ex.Message; return(false); } }
/// <summary> /// 完成自制件退货单 /// </summary> /// <param name="billNo">自制件退货单据号</param> /// <param name="storeManager">仓库管理员</param> /// <param name="returnBill">返回更新后重新查询的自制件退货单数据集</param> /// <param name="error">出错时返回错误信息,无错时返回null</param> /// <returns>返回是否成功添加采购退货单</returns> public bool FinishBill(string billNo, string storeManager, out IQueryResult returnBill, out string error) { returnBill = null; error = null; try { DepotManagementDataContext dataContxt = CommentParameter.DepotDataContext; var result = from r in dataContxt.S_HomemadeRejectBill where r.Bill_ID == billNo select r; if (result.Count() == 0) { error = string.Format("没有找到单据号为 {0} 的自制件退货单信息,无法进行此操作", billNo); return(false); } S_HomemadeRejectBill bill = result.Single(); if (bill.BillStatus == MaterialRejectBillBillStatus.已完成.ToString()) { error = "单据不能重复退货"; return(false); } bill.DepotManager = storeManager; bill.BillStatus = MaterialRejectBillBillStatus.已完成.ToString(); bill.OutDepotDate = ServerTime.Time; IHomemadeRejectBill goodsServer = ServerModuleFactory.GetServerModule <IHomemadeRejectBill>(); //操作账务信息与库存信息 OpertaionDetailAndStock(dataContxt, bill); //更新隔离单单据状态 if (!UpdateIsolationBillStatus(dataContxt, billNo, out error)) { return(false); } // 正式使用单据号 m_assignBill.UseBillNo(dataContxt, "自制件退货单", bill.Bill_ID); dataContxt.SubmitChanges(); return(GetAllBill(out returnBill, out error)); } catch (Exception exce) { error = exce.Message; return(false); } }
private void 修改单据ToolStripMenuItem_Click(object sender, EventArgs e) { if (!CheckSelectedRow()) { return; } if (lblBillStatus.Text != MaterialRejectBillBillStatus.新建单据.ToString() && lblBillStatus.Text != MaterialRejectBillBillStatus.等待财务审核.ToString()) { MessageDialog.ShowPromptMessage("您现在不是处于新建单据状态或者等待财务审核状态,无法进行此操作"); return; } if (!CheckUserOperation(dataGridView1.SelectedRows[0])) { return; } if (!CheckDataItem()) { return; } if (dataGridView1.SelectedRows[0].Cells["供应商"].Value.ToString() != txtProvider.Text) { if (m_goodsServer.IsExist(txtBill_ID.Text)) { MessageDialog.ShowPromptMessage("已经设置好物品清单时不允许再修改供应商"); return; } } S_HomemadeRejectBill bill = new S_HomemadeRejectBill(); bill.Bill_ID = txtBill_ID.Text; bill.Bill_Time = ServerModule.ServerTime.Time; bill.Provider = txtProvider.Text; bill.Reason = txtReason.Text; bill.Remark = txtRemark.Text; bill.StorageID = UniversalFunction.GetStorageID(cmbStorage.Text); if (!m_billServer.UpdateBill(bill, out m_queryResult, out m_strErr)) { MessageDialog.ShowErrorMessage(m_strErr); return; } RefreshDataGridView(m_queryResult); PositioningRecord(bill.Bill_ID); }
/// <summary> /// 赋值库存信息 /// </summary> /// <param name="dataContxt">数据上下文</param> /// <param name="bill">单据信息</param> /// <param name="item">明细信息</param> /// <returns>返回库存信息对象</returns> S_Stock AssignStockInfo(DepotManagementDataContext dataContxt, S_HomemadeRejectBill bill, S_HomemadeRejectList item) { F_GoodsPlanCost info = m_basicGoodsServer.GetGoodsInfo(dataContxt, item.GoodsID); S_Stock stockInfo = new S_Stock(); stockInfo.GoodsID = info.ID; stockInfo.GoodsCode = info.GoodsCode; stockInfo.GoodsName = info.GoodsName; stockInfo.Spec = info.Spec; stockInfo.Provider = item.Provider; stockInfo.BatchNo = item.BatchNo; stockInfo.ExistCount = item.Amount; stockInfo.StorageID = bill.StorageID; return(stockInfo); }
/// <summary> /// 修改自制件退货单(只修改编制人涉及信息) /// </summary> /// <param name="bill">修改的自制件退货单据信息</param> /// <param name="returnBill">返回更新后的自制件退货单数据集</param> /// <param name="error">出错时返回错误信息,无错时返回null</param> /// <returns>返回是否成功添加自制件退货单</returns> public bool UpdateBill(S_HomemadeRejectBill bill, out IQueryResult returnBill, out string error) { returnBill = null; error = null; try { DepotManagementDataContext dataContxt = CommentParameter.DepotDataContext; var result = from r in dataContxt.S_HomemadeRejectBill where r.Bill_ID == bill.Bill_ID select r; if (result.Count() == 0) { error = string.Format("没有找到单据号为 {0} 的自制件退货单信息,无法进行此操作", bill.Bill_ID); return(false); } S_HomemadeRejectBill updateBill = result.Single(); updateBill.Bill_Time = ServerModule.ServerTime.Time; updateBill.Provider = bill.Provider; updateBill.Reason = bill.Reason; updateBill.Remark = bill.Remark; dataContxt.SubmitChanges(); if (!GetAllBill(out returnBill, out error)) { return(false); } return(true); } catch (Exception exce) { error = exce.Message; return(false); } }
/// <summary> /// 根据单据信息操作账务信息与库存信息 /// </summary> /// <param name="dataContext">数据上下文</param> /// <param name="bill">单据信息</param> void OpertaionDetailAndStock(DepotManagementDataContext dataContext, S_HomemadeRejectBill bill) { IFinancialDetailManagement serverDetail = ServerModule.ServerModuleFactory.GetServerModule <IFinancialDetailManagement>(); var result = from r in dataContext.S_HomemadeRejectList where r.Bill_ID == bill.Bill_ID select r; foreach (var item in result) { S_InDepotDetailBill detailInfo = AssignDetailInfo(dataContext, bill, item); S_Stock stockInfo = AssignStockInfo(dataContext, bill, item); if (detailInfo == null || stockInfo == null) { throw new Exception("获取账务信息或者库存信息失败"); } serverDetail.ProcessInDepotDetail(dataContext, detailInfo, stockInfo); } }
private void 设置退货清单ToolStripMenuItem_Click(object sender, EventArgs e) { string billNo = txtBill_ID.Text; try { this.dataGridView1.CellEnter -= new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellEnter); if (lblBillStatus.Text != MaterialRejectBillBillStatus.新建单据.ToString()) { MessageDialog.ShowPromptMessage("您现在不是处于新建单据状态,无法进行此操作"); return; } if (!CheckDataItem()) { return; } // 如果此单据存在则检查选择行 if (m_billServer.IsExist(txtBill_ID.Text)) { if (!CheckSelectedRow()) { return; } if (!CheckUserOperation(dataGridView1.SelectedRows[0])) { return; } } else { BASE_MaterialRequisitionPurpose purpose = txtProvider.Tag as BASE_MaterialRequisitionPurpose; // 如果此单据还不存在则创建 S_HomemadeRejectBill bill = new S_HomemadeRejectBill(); bill.Bill_ID = txtBill_ID.Text; bill.Bill_Time = ServerModule.ServerTime.Time; bill.BillStatus = MaterialRejectBillBillStatus.新建单据.ToString(); bill.Department = BasicInfo.DeptCode; bill.FillInPersonnel = BasicInfo.LoginName; bill.FillInPersonnelCode = BasicInfo.LoginID; bill.Provider = txtProvider.Text; bill.Reason = txtReason.Text; bill.Remark = txtRemark.Text; bill.StorageID = UniversalFunction.GetStorageID(cmbStorage.Text); if (!m_billServer.AddBill(bill, out m_queryResult, out m_strErr)) { MessageDialog.ShowErrorMessage(m_strErr); return; } } FormHomemadeRejectlist frm = new FormHomemadeRejectlist(FormHomemadeRejectlist.OperateMode.修改, txtProvider.Text, txtBill_ID.Text); frm.ShowDialog(); } finally { this.dataGridView1.CellEnter += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellEnter); } RefreshDataGridView(m_queryResult); PositioningRecord(billNo); }