/// <summary> /// 从界面获取药库盘点表头信息 /// </summary> /// <returns>药库盘点表头信息</returns> public DW_CheckHead GetInHeadInfoDW() { DW_CheckHead inHead = new DW_CheckHead(); frmFormInHead.GetValue <DW_CheckHead>(inHead); return(inHead); }
public ServiceResponseData SaveBill() { string belongSys = requestData.GetData <string>(0); string busiType = requestData.GetData <string>(1); IDGBill iProcess = NewObject <DGBillFactory>().GetBillProcess(busiType); if (belongSys == DGConstant.OP_DW_SYSTEM) { DW_CheckHead head = requestData.GetData <DW_CheckHead>(2); List <DW_CheckDetail> details = requestData.GetData <List <DW_CheckDetail> >(3); List <int> deleteDetails = requestData.GetData <List <int> >(4); oleDb.BeginTransaction(); try { foreach (int detailID in deleteDetails) { NewObject <DW_CheckDetail>().delete(detailID); } iProcess.SaveBill(head, details); oleDb.CommitTransaction(); responseData.AddData(true); } catch (Exception error) { oleDb.RollbackTransaction(); responseData.AddData(false); responseData.AddData(error.Message); } } else { DS_CheckHead head = requestData.GetData <DS_CheckHead>(2); List <DS_CheckDetail> details = requestData.GetData <List <DS_CheckDetail> >(3); List <int> deleteDetails = requestData.GetData <List <int> >(4); oleDb.BeginTransaction(); try { foreach (int detailID in deleteDetails) { NewObject <DS_CheckDetail>().delete(detailID); } iProcess.SaveBill(head, details); oleDb.CommitTransaction(); responseData.AddData(true); } catch (Exception error) { oleDb.RollbackTransaction(); responseData.AddData(false); responseData.AddData(error.Message); } } return(responseData); }
/// <summary> /// 删除药库盘点单 /// </summary> /// <param name="billID">药库盘点单头ID</param> public override void DeleteBill(int billID) { DW_CheckHead inHead = (DW_CheckHead)NewObject <DW_CheckHead>().getmodel(billID); if (inHead.AuditFlag == 1) { throw new Exception("当前单据已经审核,无法删除"); } else { inHead.DelFlag = 1; inHead.save(); } }
public ServiceResponseData GetEditBillHead() { string belongSys = requestData.GetData <string>(0); int billID = requestData.GetData <int>(1); if (belongSys == DGConstant.OP_DW_SYSTEM) { DW_CheckHead head = (DW_CheckHead)NewObject <DW_CheckHead>().getmodel(billID); responseData.AddData(head); } else { DS_CheckHead head = (DS_CheckHead)NewObject <DS_CheckHead>().getmodel(billID); responseData.AddData(head); } return(responseData); }
/// <summary> /// 保存药库盘点录入单 /// </summary> /// <typeparam name="THead">药库盘点单表头模板</typeparam> /// <typeparam name="TDetail">药库盘点单明细模板</typeparam> /// <param name="billHead">药库盘点单头</param> /// <param name="billDetails">药库盘点单明细</param> public override void SaveBill <THead, TDetail>(THead billHead, List <TDetail> billDetails) { DW_CheckHead inHead = billHead as DW_CheckHead; List <DW_CheckDetail> inDetals = billDetails as List <DW_CheckDetail>; inHead.RegTime = System.DateTime.Now; string serialNO = NewObject <SerialNumberSource>().GetSerialNumber(SnType.药品, inHead.DeptID, inHead.BusiType); inHead.BillNO = Convert.ToInt64(serialNO); BindDb(inHead); inHead.save(); if (inHead.CheckHeadID > 0) { foreach (DW_CheckDetail detail in inDetals) { detail.CheckHeadID = inHead.CheckHeadID; BindDb(detail); detail.save(); } } //设置盘点状态:将库房的盘点状态修改成1 NewDao <IDGDao>().SetCheckStatus(inHead.DeptID, 1, 1); }
/// <summary> /// 审核药库盘点单 /// </summary> /// <param name="deptId">库房ID</param> /// <param name="auditEmpID">审核人ID</param> /// <param name="auditEmpName">审核人姓名</param> /// <returns>单据处理结果</returns> public override DGBillResult AuditBill(int deptId, int auditEmpID, string auditEmpName) { string serialNO = string.Empty;//审核单据号 //1.检查库房状态是否处于盘点状态 int checkStatus = NewDao <SqlDWDao>().GetStoreRoomStatus(deptId); if (checkStatus == 0) { throw new Exception("系统没有进入盘点状态,请启用盘点状态"); } //2.提取所有未审核的单据返回DataTable; DataTable dtNotAuditDetail = NewDao <SqlDWDao>().GetAllNotAuditDetail(deptId); //3.创建盘点审核单据头 DW_AuditHead auditHead = NewObject <DW_AuditHead>(); decimal profitRetailFee = 0, profitStockFee = 0, lossRetailFee = 0, lossStockFee = 0; decimal checkStockFee = 0, actStockFee = 0, checkRetailFee = 0, actRetailFee = 0; checkStockFee = Convert.ToDecimal(dtNotAuditDetail.Compute("sum(FactStockFee)", "true")); //盘存进货金额 actStockFee = Convert.ToDecimal(dtNotAuditDetail.Compute("sum(ActStockFee)", "true")); //账存进货金额 checkRetailFee = Convert.ToDecimal(dtNotAuditDetail.Compute("sum(FactRetailFee)", "true")); //盘存零售金额 actRetailFee = Convert.ToDecimal(dtNotAuditDetail.Compute("sum(ActRetailFee)", "true")); //账存零售金额 profitRetailFee = checkRetailFee - actRetailFee > 0 ? checkRetailFee - actRetailFee : 0; //盘盈零售金额 profitStockFee = checkStockFee - actStockFee > 0 ? checkStockFee - actStockFee : 0; //盘盈进货金额 lossRetailFee = checkRetailFee - actRetailFee < 0 ? Math.Abs(checkRetailFee - actRetailFee) : 0; //盘亏零售金额 lossStockFee = checkStockFee - actStockFee < 0 ? Math.Abs(checkStockFee - actStockFee) : 0; //盘亏进货金额 serialNO = NewObject <SerialNumberSource>().GetSerialNumber(SnType.药品, deptId, DGConstant.OP_DW_AUDITCHECK); auditHead.BillNO = Convert.ToInt64(serialNO); auditHead.EmpID = auditEmpID; auditHead.EmpName = auditEmpName; auditHead.AuditTime = System.DateTime.Now; auditHead.Remark = string.Empty; auditHead.DelFlag = 0; auditHead.AuditFlag = 1; auditHead.BusiType = DGConstant.OP_DW_AUDITCHECK; auditHead.DeptID = deptId; auditHead.ProfitRetailFee = profitRetailFee; auditHead.ProfitStockFee = profitStockFee; auditHead.LossRetailFee = lossRetailFee; auditHead.LossStockFee = lossStockFee; auditHead.CheckStockFee = checkStockFee; auditHead.ActStockFee = actStockFee; auditHead.CheckRetailFee = checkRetailFee; auditHead.ActRetailFee = actRetailFee; BindDb(auditHead); auditHead.save(); //循环DataTable,根据DataTable的每一行的值去构建盘点审核单明细和盘点审核单头; //4.保存盘点审核单表头和明细 //5、按盘点审核单内容更新药库库存 DGBillResult result = new DGBillResult(); foreach (DataRow drNotAuditRow in dtNotAuditDetail.Rows) { DW_AuditDetail auditdetail = NewObject <DW_AuditDetail>(); auditdetail.DrugStoreID = Convert.ToInt32(drNotAuditRow["DrugStoreID"]); auditdetail.CTypeID = Convert.ToInt32(drNotAuditRow["CTypeID"]); auditdetail.DrugID = Convert.ToInt32(drNotAuditRow["DrugID"]); auditdetail.Place = drNotAuditRow["Place"].ToString(); auditdetail.BatchNO = drNotAuditRow["BatchNO"].ToString(); auditdetail.ValidityDate = Convert.ToDateTime(drNotAuditRow["ValidityDate"]); auditdetail.DeptID = deptId; auditdetail.BillNO = Convert.ToInt64(serialNO); auditdetail.FactAmount = Convert.ToDecimal(drNotAuditRow["FactAmount"]); auditdetail.FactStockFee = Convert.ToDecimal(drNotAuditRow["FactStockFee"]); auditdetail.FactRetailFee = Convert.ToDecimal(drNotAuditRow["FactRetailFee"]); auditdetail.ActAmount = Convert.ToDecimal(drNotAuditRow["ActAmount"]); auditdetail.ActStockFee = Convert.ToDecimal(drNotAuditRow["ActStockFee"]); auditdetail.ActRetailFee = Convert.ToDecimal(drNotAuditRow["ActRetailFee"]); auditdetail.UnitID = Convert.ToInt32(drNotAuditRow["UnitID"]); auditdetail.UnitName = drNotAuditRow["UnitName"].ToString(); auditdetail.RetailPrice = Convert.ToDecimal(drNotAuditRow["RetailPrice"]); auditdetail.StockPrice = Convert.ToDecimal(drNotAuditRow["StockPrice"]); auditdetail.AuditHeadID = auditHead.AuditHeadID; BindDb(auditdetail); auditdetail.save(); StoreParam storeParam = new StoreParam(); storeParam.Amount = auditdetail.FactAmount - auditdetail.ActAmount; storeParam.BatchNO = auditdetail.BatchNO; storeParam.DeptID = auditdetail.DeptID; storeParam.DrugID = auditdetail.DrugID; storeParam.RetailPrice = auditdetail.RetailPrice; storeParam.StockPrice = auditdetail.StockPrice; storeParam.UnitID = auditdetail.UnitID; storeParam.UnitName = auditdetail.UnitName; storeParam.ValidityTime = auditdetail.ValidityDate; DGStoreResult storeRtn = iStore.AddStore(storeParam); if (storeRtn.Result != 0) { result.Result = 1; if (storeRtn.Result == 1) { result.LstNotEnough = new List <DGNotEnough>(); DGNotEnough notEnough = new DGNotEnough(); notEnough.DeptID = auditdetail.DeptID; notEnough.DrugID = auditdetail.DrugID; notEnough.LackAmount = storeRtn.StoreAmount + auditdetail.FactAmount - auditdetail.ActAmount; notEnough.DrugInfo = "药品批次号:" + auditdetail.BatchNO.ToString(); result.LstNotEnough.Add(notEnough); result.ErrMsg = "【" + notEnough.DrugInfo + "】库存不足"; } else { result.ErrMsg = "药品更新库存出错"; } return(result); } else { //6、按盘点审核单内容写入台账 WriteAccount(auditHead, auditdetail, storeRtn); } } //7、更新所有未审核的盘点录入单状态 DW_CheckHead checkHead = NewObject <DW_CheckHead>(); checkHead.AuditEmpID = auditEmpID; checkHead.AuditEmpName = auditEmpName; checkHead.AuditHeadID = auditHead.AuditHeadID; checkHead.AuditNO = auditHead.BillNO; checkHead.DeptID = deptId; int ret = NewDao <IDWDao>().UpdateCheckHeadStatus(checkHead); if (ret > 0) { //8、设置库房盘点状态为运营状态 NewDao <IDGDao>().SetCheckStatus(deptId, 0, 1); result.Result = 0; } else { result.Result = 1; } return(result); }