public ServiceResponseData AuditBill() { string busiType = requestData.GetData <string>(0); int billID = requestData.GetData <int>(1); int auditEmpID = requestData.GetData <int>(2); string auditEmpName = requestData.GetData <string>(3); IMwBill iProcess = NewObject <MwBillFactory>().GetBillProcess(busiType); MWBillResult rtn = new MWBillResult(); try { oleDb.BeginTransaction(); rtn = iProcess.AuditBill(billID, auditEmpID, auditEmpName); if (rtn.Result == 0) { oleDb.CommitTransaction(); } else { oleDb.RollbackTransaction(); } responseData.AddData(rtn); } catch (Exception error) { oleDb.RollbackTransaction(); rtn.ErrMsg = error.Message; rtn.Result = 2; responseData.AddData(rtn); } return(responseData); }
public void SaveBill(string frmName) { Action <ClientRequestData> requestAction = null; ServiceResponseData retdata = null; RefreshHead(frmName); currentHead.StockFee = 0; currentHead.RetailFee = 0; List <MW_OutStoreDetail> lstDetails = new List <MW_OutStoreDetail>(); for (int index = 0; index < currentDetails.Rows.Count; index++) { MW_OutStoreDetail detail = ConvertExtend.ToObject <MW_OutStoreDetail>(currentDetails, index); var pAmount = 0; if (currentDetails.Rows[index]["pAmount"] != DBNull.Value) { pAmount = Convert.ToInt32(currentDetails.Rows[index]["pAmount"].ToString()); } detail.Amount = pAmount; detail.DeptID = currentHead.DeptID; detail.ToDeptID = currentHead.ToDeptID; currentHead.StockFee += detail.StockFee; currentHead.RetailFee += detail.RetailFee; lstDetails.Add(detail); } requestAction = ((ClientRequestData request) => { request.AddData(MWConstant.MW_Out_SYSTEM); request.AddData(currentHead.BusiType); request.AddData(currentHead); request.AddData <List <MW_OutStoreDetail> >(lstDetails); request.AddData <List <int> >(ifrmOutstoreDetail.GetDeleteDetails()); }); retdata = InvokeWcfService("DrugProject.Service", "MaterialOutStoreController", "SaveBill", requestAction); MWBillResult result = retdata.GetData <MWBillResult>(0); if (result.Result == 0) { MessageBoxShowSimple("单据已经保存成功,如果没有配置自动审核.请及时审核单据"); if (billStatus == MWEnum.BillEditStatus.ADD_STATUS) { ifrmOutstoreDetail.NewBillClear(); } else { ifrmOutstoreDetail.CloseCurrentWindow(); } } else { MessageBoxShowSimple("单据保存失败:" + result.ErrMsg); } }
public ServiceResponseData SaveBill() { string belongSys = requestData.GetData <string>(0); string busiType = requestData.GetData <string>(1); IMwBill iProcess = NewObject <MwBillFactory>().GetBillProcess(busiType); MWBillResult result = new MWBillResult(); MW_InStoreHead head = requestData.GetData <MW_InStoreHead>(2); List <MW_InStoreDetail> details = requestData.GetData <List <MW_InStoreDetail> >(3); List <int> deleteDetails = requestData.GetData <List <int> >(4); oleDb.BeginTransaction(); try { foreach (int detailID in deleteDetails) { NewObject <MW_InStoreDetail>().delete(detailID); } iProcess.SaveBill(head, details); Basic_SystemConfig config = NewObject <IMWDao>().GetDeptParameters(head.DeptID, "AutoAuditInstore"); if (config != null) { if (config.Value == "1") { result = iProcess.AuditBill(head.InHeadID, LoginUserInfo.EmpId, LoginUserInfo.EmpName); } } if (result.Result == 0) { oleDb.CommitTransaction(); } else { oleDb.RollbackTransaction(); } responseData.AddData(result); } catch (Exception error) { oleDb.RollbackTransaction(); result.Result = 1; result.ErrMsg = error.Message; } responseData.AddData(result); return(responseData); }
public void MonthAccount(string frmName) { Action <ClientRequestData> requestAction = null; requestAction = ((ClientRequestData request) => { request.AddData(MWConstant.OP_MW_MONTHACCOUNT); request.AddData(selectedDeptID); request.AddData(LoginUserInfo.EmpId); }); frmBalance.SetBtnEnable(false); frmBalance.SetLabelText("月结操作执行中,请等待"); try { ServiceResponseData retdata = InvokeWcfService( "DrugProject.Service", "MatBalanceController", "MonthAccount", requestAction); MWBillResult result = retdata.GetData <MWBillResult>(0); if (result.Result == 0) { GetMonthBalaceByDept(frmName); MessageBoxShowSimple("月结操作成功"); } else { MessageBoxShowSimple("月结操作失败:" + result.ErrMsg); } } finally { frmBalance.SetBtnEnable(true); frmBalance.SetLabelText(string.Empty); } }
public ServiceResponseData AuditBill() { string busiType = requestData.GetData <string>(0); int deptId = requestData.GetData <int>(1); int auditEmpID = requestData.GetData <int>(2); string auditEmpName = requestData.GetData <string>(3); IMwBill iProcess = NewObject <MwBillFactory>().GetBillProcess(busiType); MWBillResult rtn = new MWBillResult(); try { rtn = iProcess.AuditBill(deptId, auditEmpID, auditEmpName); responseData.AddData(rtn); } catch (Exception error) { rtn.ErrMsg = error.Message; rtn.Result = 2; responseData.AddData(rtn); throw error; } return(responseData); }
/// <summary> /// 审核物资库盘点单 /// </summary> /// <param name="deptId">库房ID</param> /// <param name="auditEmpID">审核人ID</param> /// <param name="auditEmpName">审核人姓名</param> /// <returns>单据处理结果</returns> public MWBillResult AuditBill(int deptId, int auditEmpID, string auditEmpName) { string serialNO = string.Empty;//审核单据号 //1.检查库房状态是否处于盘点状态 int checkStatus = NewDao <SqlMWDao>().GetStoreRoomStatus(deptId); if (checkStatus == 0) { throw new Exception("系统没有进入盘点状态,请启用盘点状态"); } //2.提取所有未审核的单据返回DataTable; DataTable dtNotAuditDetail = NewDao <SqlMWDao>().GetAllNotAuditDetail(deptId); //3.创建盘点审核单据头 MW_AuditHead auditHead = NewObject <MW_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, MWConstant.OP_MW_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 = MWConstant.OP_MW_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、按盘点审核单内容更新物资库库存 MWBillResult result = new MWBillResult(); foreach (DataRow drNotAuditRow in dtNotAuditDetail.Rows) { MW_AuditDetail auditdetail = NewObject <MW_AuditDetail>(); auditdetail.StorageID = Convert.ToInt32(drNotAuditRow["StorageID"]); auditdetail.MaterialID = Convert.ToInt32(drNotAuditRow["MaterialID"]); 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.MaterialId = auditdetail.MaterialID; storeParam.RetailPrice = auditdetail.RetailPrice; storeParam.StockPrice = auditdetail.StockPrice; storeParam.UnitID = auditdetail.UnitID; storeParam.UnitName = auditdetail.UnitName; storeParam.ValidityTime = auditdetail.ValidityDate; MWStoreResult storeRtn = NewObject <MwStore>().AddStore(storeParam); if (storeRtn.Result != 0) { result.Result = 1; if (storeRtn.Result == 1) { result.LstNotEnough = new List <MWNotEnoughInfo>(); MWNotEnoughInfo notEnough = new MWNotEnoughInfo(); notEnough.DeptID = auditdetail.DeptID; notEnough.MaterialId = auditdetail.MaterialID; notEnough.LackAmount = storeRtn.StoreAmount + auditdetail.FactAmount - auditdetail.ActAmount; notEnough.MaterialInfo = "物资批次号:" + auditdetail.BatchNO.ToString(); result.LstNotEnough.Add(notEnough); result.ErrMsg = "【" + notEnough.MaterialInfo + "】库存不足"; } else { result.ErrMsg = "物资更新库存出错"; } return(result); } else { //6、按盘点审核单内容写入台账 WriteAccount(auditHead, auditdetail, storeRtn); } } //7、更新所有未审核的盘点录入单状态 MW_CheckHead checkHead = NewObject <MW_CheckHead>(); checkHead.AuditEmpID = auditEmpID; checkHead.AuditEmpName = auditEmpName; checkHead.AuditHeadID = auditHead.AuditHeadID; checkHead.AuditNO = auditHead.BillNO; checkHead.DeptID = deptId; int ret = NewDao <IMWDao>().UpdateCheckHeadStatus(checkHead); if (ret > 0) { //8、设置库房盘点状态为运营状态 NewDao <IMWDao>().SetCheckStatus(deptId, 0); result.Result = 0; } else { result.Result = 1; } return(result); }
/// <summary> /// 审核单据 /// </summary> /// <param name="headID">头id</param> /// <param name="auditEmpID">审核人id</param> /// <param name="auditEmpName">审核人名称</param> /// <returns>审核结果信息</returns> public MWBillResult AuditBill(int headID, int auditEmpID, string auditEmpName) { MW_OutStoreHead head = (MW_OutStoreHead)NewObject <MW_OutStoreHead>().getmodel(headID); MWBillResult result = new MWBillResult(); if (!NewObject <MaterialDeptMgr>().IsDeptChecked(head.DeptID)) { result.Result = 1; result.ErrMsg = "当前科室处于盘点状态或者没有设置科室的盘点状态 不能处理业务操作"; return(result); } if (head.AuditFlag == 1) { result.Result = 1; result.ErrMsg = "物资已经被审核,请刷新数据"; return(result); } if (head != null) { List <MW_OutStoreDetail> lstDetails = NewObject <MW_OutStoreDetail>().getlist <MW_OutStoreDetail>("OutHeadID=" + headID); head.AuditEmpID = auditEmpID; head.AuditEmpName = auditEmpName; head.AuditTime = System.DateTime.Now; head.AuditFlag = 1; head.save(); foreach (MW_OutStoreDetail detail in lstDetails) { StoreParam storeParam = new StoreParam(); storeParam.BatchNO = detail.BatchNO; storeParam.DeptID = head.DeptID; storeParam.MaterialId = detail.MaterialID; storeParam.RetailPrice = detail.RetailPrice; storeParam.StockPrice = detail.StockPrice; storeParam.UnitID = detail.UnitID; storeParam.UnitName = detail.UnitName; storeParam.ValidityTime = detail.ValidityDate; storeParam.UnitAmount = 1; storeParam.Amount = detail.Amount; storeParam.PackAmount = 1; storeParam.BussConstant = head.BusiType; MWStoreResult storeRtn = NewObject <MwStore>().ReduceStore(storeParam); if (storeRtn.Result != 0) { result.Result = 1; if (storeRtn.Result == 1) { result.LstNotEnough = new List <MWNotEnoughInfo>(); MWNotEnoughInfo notEnough = new MWNotEnoughInfo(); notEnough.DeptID = head.DeptID; notEnough.MaterialId = detail.MaterialID; notEnough.LackAmount = storeRtn.StoreAmount + detail.Amount; notEnough.MaterialInfo = "药品编号" + detail.MaterialID + "批次号:" + detail.BatchNO; result.LstNotEnough.Add(notEnough); result.ErrMsg = "【" + notEnough.MaterialInfo + "】库存不足"; } else { result.ErrMsg = "药品更新库存出错"; } return(result); } else { WriteAccount(head, detail, storeRtn); } } result.Result = 0; return(result); } return(result); }
public ServiceResponseData MonthAccount() { string opType = requestData.GetData <string>(0); int deptId = requestData.GetData <int>(1); int userId = requestData.GetData <int>(2); //int deptType = opType == MWConstant.OP_MW_MONTHACCOUNT ? 1 : 0; MaterialBalance balance = NewObject <MaterialBalance>(); MWBillResult rtn = new MWBillResult(); if (balance.IsMonthAccount(deptId)) { rtn.Result = 1; rtn.ErrMsg = "本月已经月结过,不能再次月结"; responseData.AddData(rtn); return(responseData); } var depdic = NewObject <MaterialDeptMgr>().GetDepdic(deptId, LoginUserInfo.WorkId); if (depdic == null) { rtn.Result = 1; rtn.ErrMsg = "本科室不是物资管理科室,不能进行相关操作"; responseData.AddData(rtn); return(responseData); } if (depdic.DeptType != 2) { rtn.Result = 1; rtn.ErrMsg = "您所在科室没有单前科室的操作权限"; responseData.AddData(rtn); return(responseData); } if (!NewObject <MaterialDeptMgr>().IsDeptChecked(deptId)) { rtn.Result = 1; rtn.ErrMsg = "当前科室处于盘点状态或者没有设置科室的盘点状态 不能处理业务操作"; responseData.AddData(rtn); return(responseData); } try { NewDao <IMWDao>().SetCheckStatus(deptId, 1);//设置盘点状态 oleDb.BeginTransaction(); rtn = balance.MonthAccount(userId, deptId, LoginUserInfo.WorkId); if (rtn.Result == 0) { oleDb.CommitTransaction(); } else { oleDb.RollbackTransaction(); } responseData.AddData(rtn); } catch (Exception error) { oleDb.RollbackTransaction(); rtn.Result = 2; rtn.ErrMsg = error.Message; responseData.AddData(rtn); } finally { NewDao <IMWDao>().SetCheckStatus(deptId, 0); //恢复盘点状态 } return(responseData); }