public void OPDisp(DataTable dtFeeHead, int deptId) { Action <ClientRequestData> requestAction = ((ClientRequestData request) => { request.AddData(dtFeeHead); request.AddData(GetUserInfo().EmpId); request.AddData(GetUserInfo().EmpName); request.AddData(deptId); }); ServiceResponseData retdata = InvokeWcfService("DrugProject.Service", "OpDispController", "OPDisp", requestAction); DGBillResult result = retdata.GetData <DGBillResult>(0); if (result.Result == 0) { MessageBoxShowSimple("发药成功..."); } else { string rtnMsg = result.ErrMsg; string message = string.Empty; if (result.LstNotEnough == null) { MessageBoxShowSimple("发药失败:\r\n" + rtnMsg); } else { foreach (DGNotEnough m in result.LstNotEnough) { message = message + m.DrugInfo + "\r\n"; } MessageBoxShowSimple("发药失败,以下药品库存不足:\r\n" + message); } } }
public ServiceResponseData SystemCheckAccount() { string opType = requestData.GetData <string>(0); int deptId = requestData.GetData <int>(1); int userId = requestData.GetData <int>(2); //科室 是 1药库 或 0药房 int deptType = opType == DGConstant.OP_DW_MONTHACCOUNT ? 1 : 0; DrugBalance balance = GetBalance(opType); DGBillResult rtn = new DGBillResult(); oleDb.BeginTransaction(); try { DgSpResult result = balance.SystemCheckAccount(deptId, LoginUserInfo.WorkId); oleDb.CommitTransaction(); responseData.AddData(result); return(responseData); } catch { oleDb.RollbackTransaction(); } return(null); }
/// <summary> /// 保存数据 /// </summary> /// <param name="product">生产商对象</param> /// <param name="workId">机构ID</param> /// <returns>返回结果对象</returns> public DGBillResult SaveProduct(DG_ProductDic product, int workId) { DGBillResult result = new DGBillResult(); List <Tuple <string, string, SqlOperator> > lst = new List <Tuple <string, string, SqlOperator> >(); lst.Add(Tuple.Create("ProductName", product.ProductName, SqlOperator.Equal)); lst.Add(Tuple.Create("delflag", "0", SqlOperator.Equal)); lst.Add(Tuple.Create("WorkId", workId.ToString(), SqlOperator.Equal)); IEnumerable <DG_ProductDic> objs = NewObject <IDGDao>().GetEntityType <DG_ProductDic>(lst, null); var p = objs.FirstOrDefault(i => i.ProductID == product.ProductID); if (p != null) { product.save(); result.Result = 0; return(result); } if (objs != null && objs.Any()) { result.Result = 1; result.ErrMsg = "已经存在同名的生产厂厂家名称"; return(result); } else { result.Result = 0; product.save(); return(result); } }
public void SaveDrugDic(string frmName, bool isNew) { if (frmName == "FrmHisDrugDic") { frmDrugDic.CurrentData.CreateWorkID = LoginUserInfo.WorkId; } Action <ClientRequestData> requestAction = ((ClientRequestData request) => { request.AddData(frmDrugDic.CurrentData); }); ServiceResponseData retdata = InvokeWcfService("DrugProject.Service", "DrugDicController", "SaveDrugDic", requestAction); DGBillResult result = retdata.GetData <DGBillResult>(0); if (result.Result == 0) { MessageBoxShowSimple("药品属性 保存成功"); frmDrugDic.CurrentData.CenteDrugID = EfwControls.Common.Tools.ToInt32(result.ErrMsg); frmDrugDic.SaveSuccess(isNew); if (!isNew) { GetDurgDic(frmName); } } else { MessageBoxShowSimple("保存失败:" + result.ErrMsg); } }
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); IDGBill iProcess = NewObject <DGBillFactory>().GetBillProcess(busiType); DGBillResult rtn = new DGBillResult(); try { oleDb.BeginTransaction(); rtn = iProcess.AuditBill(billID, auditEmpID, auditEmpName, LoginUserInfo.WorkId); 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 AuditDurgDic(string frmName) { var dic = frmDrugDic.CurrentData; dic.Auditor = LoginUserInfo.EmpId; dic.AuditStatus = 1; dic.AuditTime = DateTime.Now; Action <ClientRequestData> requestAction = ((ClientRequestData request) => { request.AddData(dic); }); ServiceResponseData retdata = InvokeWcfService("DrugProject.Service", "DrugDicController", "SaveDrugDic", requestAction); DGBillResult result = retdata.GetData <DGBillResult>(0); if (result.Result != 0) { MessageBoxShowError(result.ErrMsg); } else { MessageBoxShowSimple("审核成功"); GetDurgDic(frmName); } }
/// <summary> /// 保存调价单 /// </summary> /// <typeparam name="THead">调价单表头模板</typeparam> /// <typeparam name="TDetail">调价单明细模板</typeparam> /// <param name="billHead">调价单表头</param> /// <param name="billDetails">调价单明细</param> /// <param name="workId">机构ID</param> /// <returns>返回结果</returns> public DGBillResult SaveBill <THead, TDetail>(THead billHead, List <TDetail> billDetails, int workId) { DG_AdjHead adjHead = billHead as DG_AdjHead; List <DG_AdjDetail> adjDetails = billDetails as List <DG_AdjDetail>; DGBillResult result = new DGBillResult(); if (!NewObject <DrugDeptMgr>().IsDeptChecked(adjHead.DeptID, workId)) { result.Result = 1; result.ErrMsg = "当前科室处于盘点状态或者没有设置科室的盘点状态 不能处理业务操作"; return(result); } string serialNO = NewObject <SerialNumberSource>().GetSerialNumber(SnType.药品, adjHead.DeptID, adjHead.BusiType); adjHead.BillNO = Convert.ToInt64(serialNO); this.BindDb(adjHead); int headid = adjHead.save(); if (headid > 0) { adjHead.AdjHeadID = headid; foreach (DG_AdjDetail currentDetail in adjDetails) { WriteAccount(adjHead, currentDetail, null); } } result.Result = 0; return(result); }
public void AuditBill(string frmName, int deptId) { string busiType = string.Empty; if (frmName == "FrmCheckAudit") { busiType = MWConstant.OP_MW_CHECK; } Action <ClientRequestData> requestAction = ((ClientRequestData request) => { request.AddData(busiType); request.AddData(deptId); request.AddData(GetUserInfo().EmpId); request.AddData(GetUserInfo().EmpName); }); ServiceResponseData retdata = InvokeWcfService("DrugProject.Service", "MaterialCheckStoreController", "AuditBill", requestAction); DGBillResult result = retdata.GetData <DGBillResult>(0); if (result.Result == 0) { MessageBoxShowSimple("单据已经成功审核,请确认库存是否更新..."); } else { string rtnMsg = result.ErrMsg; MessageBoxShowSimple("单据审核失败:" + result.ErrMsg); } }
/// <summary> /// 审核药库入库单 /// </summary> /// <param name="headID">药库入库单表头</param> /// <param name="auditEmpID">审核人ID</param> /// <param name="auditEmpName">审核人姓名</param> /// <returns>单据处理结果</returns> public override DGBillResult AuditBill(int headID, int auditEmpID, string auditEmpName) { DW_InStoreHead head = (DW_InStoreHead)NewObject <DW_InStoreHead>().getmodel(headID); List <DW_InStoreDetail> lstDetails = NewObject <DW_InStoreDetail>().getlist <DW_InStoreDetail>("InHeadID=" + headID); head.AuditEmpID = auditEmpID; head.AuditEmpName = auditEmpName; head.AuditTime = System.DateTime.Now; head.AuditFlag = 1; head.save(); DGBillResult result = new DGBillResult(); foreach (DW_InStoreDetail detail in lstDetails) { StoreParam storeParam = new StoreParam(); storeParam.Amount = detail.Amount; storeParam.BatchNO = detail.BatchNo; storeParam.DeptID = head.DeptID; storeParam.DrugID = detail.DrugID; storeParam.RetailPrice = detail.RetailPrice; storeParam.StockPrice = detail.StockPrice; storeParam.UnitID = detail.UnitID; storeParam.UnitName = detail.UnitName; storeParam.ValidityTime = detail.ValidityDate; storeParam.BussConstant = head.BusiType; //storeParam.PackUnit = detail.PackUnit; 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 = head.DeptID; notEnough.DrugID = detail.DrugID; notEnough.LackAmount = storeRtn.StoreAmount + detail.Amount; notEnough.DrugInfo = "药品编号" + detail.DrugID + "药品批次号:" + detail.BatchNo; result.LstNotEnough.Add(notEnough); result.ErrMsg = "【" + notEnough.DrugInfo + "】库存不足"; } else { result.ErrMsg = "药品更新库存出错"; } return(result); } else { WriteAccount(head, detail, storeRtn); } } result.Result = 0; return(result); }
public ServiceResponseData SaveSupply() { var product = requestData.GetData <DG_SupportDic>(0); var workId = requestData.GetData <int>(1); DGBillResult flag = NewObject <DrugSupplyMgr>().SaveSupply(product, workId); responseData.AddData(flag); return(responseData); }
public ServiceResponseData ExcutePrice() { List <DG_AdjDetail> details = requestData.GetData <List <DG_AdjDetail> >(0); DG_AdjHead head = requestData.GetData <DG_AdjHead>(1); int workId = requestData.GetData <int>(2); DGBillResult result = NewObject <DGAdjPriceBill>().SaveBill(head, details, workId); responseData.AddData(result); return(responseData); }
public void SaveBill(string frmName) { Action <ClientRequestData> requestAction = null; ServiceResponseData retdata = null; RefreshHead(frmName); currentHead.StockFee = 0; currentHead.RetailFee = 0; List <MW_InStoreDetail> lstDetails = new List <MW_InStoreDetail>(); for (int index = 0; index < currentDetails.Rows.Count; index++) { MW_InStoreDetail detail = ConvertExtend.ToObject <MW_InStoreDetail>(currentDetails, index); decimal pAmount = 0; if (currentDetails.Rows[index]["pAmount"] != DBNull.Value) { pAmount = Convert.ToDecimal(currentDetails.Rows[index]["pAmount"].ToString()); } detail.Amount = pAmount; currentHead.StockFee += detail.StockFee; currentHead.RetailFee += detail.RetailFee; lstDetails.Add(detail); } requestAction = ((ClientRequestData request) => { request.AddData(MWConstant.MW_IN_SYSTEM); request.AddData(currentHead.BusiType); request.AddData(currentHead); request.AddData <List <MW_InStoreDetail> >(lstDetails); request.AddData <List <int> >(ifrmInstoreDetail.GetDeleteDetails()); }); retdata = InvokeWcfService("DrugProject.Service", "MaterialInStoreController", "SaveBill", requestAction); DGBillResult result = retdata.GetData <DGBillResult>(0); if (result.Result == 0) { MessageBoxShowSimple("单据已经保存成功,如果没有配置自动审核.请及时审核单据"); if (billStatus == MWEnum.BillEditStatus.ADD_STATUS) { ifrmInstoreDetail.NewBillClear(); } else { ifrmInstoreDetail.CloseCurrentWindow(); } } else { string rtnMsg = result.ErrMsg; MessageBoxShowSimple("单据保存失败:" + result.ErrMsg); } }
/// <summary> /// 执行完成函数 /// </summary> /// <param name="result">结果</param> public void ExcuteComplete(DGBillResult result) { if (result.Result == 0) { MessageBoxEx.Show("执行调价成功"); btnRefreshDetail_Click(null, null); txtAdjCode.Text = string.Empty; txtAdjRemark.Text = string.Empty; } else { MessageBoxEx.Show(result.ErrMsg); } }
public ServiceResponseData SaveDrugDic() { DGBillResult result = new DGBillResult(); var p = requestData.GetData <DG_CenterSpecDic>(0); List <Tuple <string, string, SqlOperator> > andWhere = new List <Tuple <string, string, SqlOperator> >(); andWhere.Add(Tuple.Create("ChemName", p.ChemName, SqlOperator.Equal)); andWhere.Add(Tuple.Create("Spec", p.Spec, SqlOperator.Equal)); var t = NewObject <IDGDao>().GetDataTable <DG_CenterSpecDic>(andWhere, null); if (p.CenteDrugID != 0) { //修改药品 if (CheckDrugStore(p)) { if (t != null && t.Rows.Count > 1) { result.Result = 1; result.ErrMsg = "同名 同规格的药品已经存在"; responseData.AddData(result); return(responseData); } } else { result.Result = 1; result.ErrMsg = "已经有库存的药品 不能更改药品关键属性 包装单位,包装数量,最小单位,含量系数,含量单位,是否停用"; responseData.AddData(result); return(responseData); } } else { if (t != null && t.Rows.Count > 0) { result.Result = 1; result.ErrMsg = "同名 同规格的药品已经存在"; responseData.AddData(result); return(responseData); } } SetWorkId(oleDb.WorkId); this.BindDb(p); NewObject <DrugSpecDicMgr>().SaveDrugDic(p); result.Result = 0; result.ErrMsg = p.CenteDrugID.ToString(); responseData.AddData(result); return(responseData); }
public void MonthAccount(string frmName) { Action <ClientRequestData> requestAction = null; if (frmName == "FrmBalance") { frmBalance = frmBalanceDW; requestAction = ((ClientRequestData request) => { request.AddData(DGConstant.OP_DW_MONTHACCOUNT); request.AddData(selectedDeptID); request.AddData(LoginUserInfo.EmpId); }); } else { frmBalance = frmBalanceDS; requestAction = ((ClientRequestData request) => { request.AddData(DGConstant.OP_DS_MONTHACCOUNT); request.AddData(selectedDeptID); request.AddData(LoginUserInfo.EmpId); }); } frmBalance.SetBtnEnable(false); frmBalance.SetLabelText("月结操作执行中,请等待"); try { ServiceResponseData retdata = InvokeWcfService("DrugProject.Service", "BalanceController", "MonthAccount", requestAction); DGBillResult result = retdata.GetData <DGBillResult>(0); if (result.Result == 0) { GetMonthBalaceByDept(frmName); MessageBoxShowSimple("月结操作成功"); } else { MessageBoxShowSimple("月结操作失败:" + result.ErrMsg); } } finally { frmBalance.SetBtnEnable(true); frmBalance.SetLabelText(string.Empty); } }
public void SaveProduct() { Action <ClientRequestData> requestAction = ((ClientRequestData request) => { request.AddData(frmProduct.CurrentData); request.AddData(LoginUserInfo.WorkId); }); ServiceResponseData retdata = InvokeWcfService("DrugProject.Service", "ProductController", "SaveProduct", requestAction); DGBillResult k = retdata.GetData <DGBillResult>(0); if (k.Result == 0) { GetProduct(); MessageBoxShowSimple("厂家信息保存成功"); } else { MessageBoxShowSimple(k.ErrMsg); } }
public void SaveSupply(int pageNO, int pageSize) { Action <ClientRequestData> requestAction = ((ClientRequestData request) => { request.AddData(frmSupply.CurrentData); request.AddData(LoginUserInfo.WorkId); }); ServiceResponseData retdata = InvokeWcfService("DrugProject.Service", "SupplyController", "SaveSupply", requestAction); DGBillResult result = retdata.GetData <DGBillResult>(0); if (result.Result == 0) { MessageBoxShowSimple("保存成功"); GetSupply(pageNO, pageSize); } else { MessageBoxShowError(result.ErrMsg); } }
public void OPRefund(DataTable dtRefund) { Action <ClientRequestData> requestAction = ((ClientRequestData request) => { request.AddData(dtRefund); request.AddData(GetUserInfo().EmpId); request.AddData(GetUserInfo().EmpName); request.AddData(selectedDeptID); }); ServiceResponseData retdata = InvokeWcfService("DrugProject.Service", "OpDispController", "OPRefund", requestAction); DGBillResult result = retdata.GetData <DGBillResult>(0); if (result.Result == 0) { MessageBoxShowSimple("退药成功..."); } else { string rtnMsg = result.ErrMsg; MessageBoxShowSimple("退药失败:" + result.ErrMsg); } }
public void AuditBill(string frmName, int billID, string busiType) { Action <ClientRequestData> requestAction = ((ClientRequestData request) => { request.AddData(busiType); request.AddData(billID); request.AddData(GetUserInfo().EmpId); request.AddData(GetUserInfo().EmpName); }); ServiceResponseData retdata = InvokeWcfService("DrugProject.Service", "InStoreController", "AuditBill", requestAction); DGBillResult result = retdata.GetData <DGBillResult>(0); if (result.Result == 0) { MessageBoxShowSimple("单据已经成功审核,请确认库存是否更新..."); LoadBillHead(frmName); } else { string rtnMsg = result.ErrMsg; MessageBoxShowSimple("单据审核失败:" + result.ErrMsg); } }
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); IDGBill iProcess = NewObject <DGBillFactory>().GetBillProcess(busiType); DGBillResult rtn = new DGBillResult(); 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="dispHead">退药单表头</param> /// <param name="dispDetail">退药单明细</param> /// <param name="dtRefund">退药单明细数据</param> /// <returns>返回处理结果</returns> public DGBillResult OPRefund(List <DS_OPDispHead> dispHead, List <DS_OPDispDetail> dispDetail, DataTable dtRefund) { //药品单据处理结果 DGBillResult result = new DGBillResult(); if (dispHead.Count > 0) { //1.判断药房是否处于盘点状态中 if (NewObject <DrugStoreManagement>().IsCheckStatus(dispHead[0].DeptID, 0)) { throw new Exception("药房当前正在盘点中,不能退药"); } //2.创建发药单表头,保存数据到发药表头中,发药单是多张,所以要做循环 foreach (DS_OPDispHead dispHeadModel in dispHead) { //生成单据号 string serialNO = NewObject <SerialNumberSource>().GetSerialNumber(SnType.药品, dispHeadModel.DeptID, DGConstant.OP_DS_OPREFUND); dispHeadModel.BillNO = Convert.ToInt64(serialNO); dispHeadModel.DispTime = System.DateTime.Now;//退药时间 BindDb(dispHeadModel); dispHeadModel.save(); //3.发药明细列表dispDetail通过字段(FeeItemHeadID)过滤出该表头对应的退药明细 List <DS_OPDispDetail> dispDetailList = dispDetail.Where(w => w.FeeItemHeadID == dispHeadModel.RecipeID).ToList(); //4.循环该张处方明细记录,更新DispHeadID等相关字段,保存数据到发药明细中,同时判断库存量,批次库存量,调用加库存的方法并返回处理结果 //退药如果跨批次的话,台账需要记录差额调整记录 foreach (DS_OPDispDetail ispDetailModel in dispDetailList) { decimal dispRetailPrice = ispDetailModel.RetailPrice; //5发药明细设置发药头表ID,保存数据在库存处理方法中 ispDetailModel.DispHeadID = dispHeadModel.DispHeadID; //6.加库存处理 StoreParam storeParam = new StoreParam(); storeParam.Amount = ispDetailModel.DispAmount; storeParam.BatchNO = ispDetailModel.BatchNO; storeParam.DeptID = ispDetailModel.DeptID; storeParam.DrugID = ispDetailModel.DrugID; storeParam.RetailPrice = ispDetailModel.RetailPrice; storeParam.StockPrice = ispDetailModel.StockPrice; storeParam.UnitID = ispDetailModel.UnitID; storeParam.UnitName = ispDetailModel.UnitName; storeParam.UnitAmount = ispDetailModel.UnitAmount; DGStoreResult storeRtn = NewObject <DSStore>().AddStoreAuto(storeParam, false); if (storeRtn.Result != 0) { result.Result = 1; if (storeRtn.Result == 1) { result.ErrMsg = "药品更新库存出错"; } return(result); } else { foreach (DGBatchAllot batchAllot in storeRtn.BatchAllotList) { //保存发药明细数据 ispDetailModel.DispDetailID = 0; ispDetailModel.DispAmount = batchAllot.DispAmount; ispDetailModel.RetailPrice = batchAllot.RetailPrice; ispDetailModel.StockPrice = batchAllot.StockPrice; ispDetailModel.RetailFee = batchAllot.DispRetailFee; ispDetailModel.StockFee = batchAllot.DispStockFee; ispDetailModel.BatchNO = batchAllot.BatchNO; BindDb(ispDetailModel); ispDetailModel.save(); if (ispDetailModel.RetailPrice != dispRetailPrice) { //零售价不一致,调整金额差额台账 WriteAccount(dispHeadModel, ispDetailModel, storeParam, batchAllot);//按收费价格算 } //写减批次库存台账 WriteAccount(dispHeadModel, ispDetailModel, batchAllot, 1, storeParam); } } int feeDetailID = ispDetailModel.FeeDetailID; //更新明细退药标志 NewDao <IDSDao>().UpdateFeeRefundStatus(feeDetailID); } } } //退药成功 result.Result = 0; return(result); }
/// <summary> /// 门诊处方发药 /// </summary> /// <param name="dispHead">发药单表头</param> /// <param name="dispDetail">发药单明细</param> /// <param name="execEmpID">执行人ID</param> /// <returns>处理结果</returns> public DGBillResult OPDisp(List <DS_OPDispHead> dispHead, List <DS_OPDispDetail> dispDetail, int execEmpID) { //药品单据处理结果 DGBillResult result = new DGBillResult(); if (dispHead.Count > 0) { //1.判断药房是否处于盘点状态中 if (NewObject <DrugStoreManagement>().IsCheckStatus(dispHead[0].DeptID, 0)) { throw new Exception("药房当前正在盘点中,不能发药"); } //2.创建发药单表头,保存数据到发药表头中,发药单是多张,所以要做循环 foreach (DS_OPDispHead dispHeadModel in dispHead) { //生成单据号 string serialNO = NewObject <SerialNumberSource>().GetSerialNumber(SnType.药品, dispHeadModel.DeptID, DGConstant.OP_DS_OPDISPENSE); dispHeadModel.BillNO = Convert.ToInt64(serialNO); dispHeadModel.DispTime = System.DateTime.Now; BindDb(dispHeadModel); dispHeadModel.save(); //3.发药明细列表dispDetail通过字段(FeeItemHeadID)过滤出该表头对应的发药明细 List <DS_OPDispDetail> dispDetailList = dispDetail.Where(w => w.FeeItemHeadID == dispHeadModel.RecipeID).ToList(); //4.循环该张处方明细记录,更新DispHeadID等相关字段,保存数据到发药明细中,同时判断库存量,批次库存量,调用减库存的方法并返回处理结果 //发药如果跨批次的化,台账需要记录差额调整记录 foreach (DS_OPDispDetail ispDetailModel in dispDetailList) { decimal dispRetailPrice = ispDetailModel.RetailPrice; //5发药明细设置发药头表ID,保存数据在库存处理方法中 ispDetailModel.DispHeadID = dispHeadModel.DispHeadID; //6减库存处理 StoreParam storeParam = new StoreParam(); storeParam.Amount = ispDetailModel.DispAmount; storeParam.BatchNO = ispDetailModel.BatchNO; storeParam.DeptID = ispDetailModel.DeptID; storeParam.DrugID = ispDetailModel.DrugID; storeParam.RetailPrice = ispDetailModel.RetailPrice;//收费价格 storeParam.StockPrice = ispDetailModel.StockPrice; storeParam.UnitID = ispDetailModel.UnitID; storeParam.UnitName = ispDetailModel.UnitName; DGStoreResult storeRtn = NewObject <DSStore>().ReduceStoreAuto(storeParam, true); if (storeRtn.Result != 0) { result.Result = 1; if (storeRtn.Result == 1) { result.LstNotEnough = new List <DGNotEnough>(); DGNotEnough notEnough = new DGNotEnough(); notEnough.DeptID = ispDetailModel.DeptID; notEnough.DrugID = ispDetailModel.DrugID; notEnough.LackAmount = ispDetailModel.DispAmount - storeRtn.StoreAmount; notEnough.DrugInfo = "药品批次号:" + ispDetailModel.BatchNO.ToString(); result.LstNotEnough.Add(notEnough); result.ErrMsg = "【" + notEnough.DrugInfo + "】库存不足"; } else { result.ErrMsg = "药品更新库存出错"; } return(result); } else { foreach (DGBatchAllot batchAllot in storeRtn.BatchAllotList) { //保存发药明细数据 ispDetailModel.DispDetailID = 0; if (batchAllot.DispAmount == 0) { continue; } ispDetailModel.DispAmount = batchAllot.DispAmount; ispDetailModel.RetailPrice = batchAllot.RetailPrice; ispDetailModel.StockPrice = batchAllot.StockPrice; ispDetailModel.RetailFee = batchAllot.DispRetailFee; ispDetailModel.StockFee = batchAllot.DispStockFee; ispDetailModel.BatchNO = batchAllot.BatchNO; BindDb(ispDetailModel); ispDetailModel.save(); if (ispDetailModel.RetailPrice != dispRetailPrice) { //零售价不一致,调整金额差额台账 WriteAccount(dispHeadModel, ispDetailModel, storeParam, batchAllot);//按收费价格算 } //写减批次库存台账 WriteAccount(dispHeadModel, ispDetailModel, batchAllot, 0, storeParam); } } } //8.在循环发药头表末尾处,更新收费主表发药标志DistributeFlag=1 OP_FeeItemHead feeItemHead = (OP_FeeItemHead)NewObject <OP_FeeItemHead>().getmodel(dispHeadModel.RecipeID); feeItemHead.DistributeFlag = 1;//发药标识=1 feeItemHead.ExecDate = System.DateTime.Now; feeItemHead.ExecEmpID = execEmpID; feeItemHead.save(); } } //发药成功 result.Result = 0; return(result); }
public ServiceResponseData OPDisp() { List <DS_OPDispHead> dispHead = new List <DS_OPDispHead>(); DataTable dtFeeHead = requestData.GetData <DataTable>(0); int sendEmpID = requestData.GetData <int>(1); string sendEmpName = requestData.GetData <string>(2); int deptId = requestData.GetData <int>(3); string feeHeadIds = "("; foreach (DataRow row in dtFeeHead.Rows) { DS_OPDispHead modelHead = new DS_OPDispHead(); DrugStoreManagement model = NewObject <DrugStoreManagement>(); if (model.HasRefund(row["InvoiceNO"].ToString())) { throw new Exception("本张单据不能发药,存在退费记录,请进行退费操作"); } modelHead.BillNO = 0; modelHead.BusiType = DGConstant.OP_DS_OPDISPENSE; modelHead.RetailFee = Convert.ToDecimal(row["TotalFee"]); modelHead.PatListID = Convert.ToInt32(row["PatListID"]); modelHead.PatName = row["PatName"].ToString(); modelHead.PatSex = row["PatSex"].ToString(); modelHead.Diagnose = row["DiseaseName"].ToString(); modelHead.PatAge = row["Age"].ToString(); modelHead.PresDocID = Convert.ToInt32(row["PresEmpID"]); modelHead.PresDocName = row["PresEmpName"].ToString(); modelHead.PresDeptID = Convert.ToInt32(row["PresDeptID"]); modelHead.PresDeptName = row["PresDeptName"].ToString(); modelHead.DispenserID = sendEmpID; modelHead.DispenserName = sendEmpName; modelHead.PharmacistID = sendEmpID; modelHead.PharmacistName = sendEmpName; modelHead.RefundFlag = 0;//发药0退药1 modelHead.DispTime = System.DateTime.Now; modelHead.FeeNO = row["FeeNo"].ToString(); modelHead.InvoiceNO = row["InvoiceNO"].ToString(); modelHead.ChargeTime = Convert.ToDateTime(row["ChargeDate"]); modelHead.ChargeEmpID = Convert.ToInt32(row["ChargeEmpID"]); modelHead.ChargeEmpName = row["ChargeEmpName"].ToString(); modelHead.FeeItemHeadID = Convert.ToInt32(row["CostHeadID"]); modelHead.RecipeID = Convert.ToInt32(row["FeeItemHeadID"]); modelHead.RecipeType = row["PresType"].ToString(); modelHead.RecipeAmount = Convert.ToInt32(row["PresAmount"]); modelHead.DeptID = deptId; dispHead.Add(modelHead); feeHeadIds += row["FeeItemHeadID"].ToString() + ","; } feeHeadIds = feeHeadIds.Substring(0, feeHeadIds.Length - 1) + ")"; //获取该结算单所有明细记录 List <DS_OPDispDetail> dispDetail = ConvertFeeDetailModel(feeHeadIds, deptId); OPDispBill iProcess = NewObject <OPDispBill>(); DGBillResult rtn = new DGBillResult(); try { oleDb.BeginTransaction(); rtn = iProcess.OPDisp(dispHead, dispDetail, sendEmpID); 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 ServiceResponseData SaveBill() { string belongSys = requestData.GetData <string>(0); string busiType = requestData.GetData <string>(1); IDGBill iProcess = NewObject <DGBillFactory>().GetBillProcess(busiType); DGBillResult result = new DGBillResult(); if (belongSys == DGConstant.OP_DW_SYSTEM) { DW_InStoreHead head = requestData.GetData <DW_InStoreHead>(2); List <DW_InStoreDetail> details = requestData.GetData <List <DW_InStoreDetail> >(3); List <int> deleteDetails = requestData.GetData <List <int> >(4); oleDb.BeginTransaction(); try { foreach (int detailID in deleteDetails) { NewObject <DW_InStoreDetail>().delete(detailID); } iProcess.SaveBill(head, details); Basic_SystemConfig config = NewObject <IDGDao>().GetDeptParameters(head.DeptID, "AutoAuditInstore"); if (config != null) { //是否配置需要审核 if (config.Value == "1") { result = iProcess.AuditBill(head.InHeadID, LoginUserInfo.EmpId, LoginUserInfo.EmpName, LoginUserInfo.WorkId); } } 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); } } else { DS_InstoreHead head = requestData.GetData <DS_InstoreHead>(2); List <DS_InStoreDetail> details = requestData.GetData <List <DS_InStoreDetail> >(3); List <int> deleteDetails = requestData.GetData <List <int> >(4); oleDb.BeginTransaction(); try { foreach (int detailID in deleteDetails) { NewObject <DS_InStoreDetail>().delete(detailID); } iProcess.SaveBill(head, details); Basic_SystemConfig config = NewObject <IDGDao>().GetDeptParameters(head.DeptID, "AutoAuditInstore"); if (config != null) { //是否直接审核 if (config.Value == "1") { result = iProcess.AuditBill(head.InHeadID, LoginUserInfo.EmpId, LoginUserInfo.EmpName, LoginUserInfo.WorkId); } } 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); }
/// <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 <SqlDSDao>().GetStoreRoomStatus(deptId); if (checkStatus == 0) { throw new Exception("药房系统没有进入盘点状态,请启用盘点状态"); } //2.提取所有未审核的单据返回DataTable; Dictionary <string, string> queryCondition = new Dictionary <string, string>(); queryCondition.Add("a.DeptID", deptId.ToString()); DataTable dtNotAuditDetail = LoadAllNotAuditDetail(queryCondition, true); //3.创建盘点审核单据头 DS_AuditHead auditHead = NewObject <DS_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_DS_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_DS_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) { StoreParam storeParam = new StoreParam(); storeParam.DeptID = auditHead.DeptID; storeParam.DrugID = Convert.ToInt32(drNotAuditRow["DrugID"]); storeParam.RetailPrice = Convert.ToDecimal(drNotAuditRow["RetailPrice"]); storeParam.StockPrice = Convert.ToDecimal(drNotAuditRow["StockPrice"]); storeParam.FactAmount = Convert.ToDecimal(drNotAuditRow["FactAmount"]); storeParam.ActAmount = Convert.ToDecimal(drNotAuditRow["ActAmount"]); DGStoreResult storeRtn = NewObject <DSStore>().AddStoreAuto(storeParam, true); if (storeRtn.Result != 0) { result.Result = 1; if (storeRtn.Result == 1) { result.LstNotEnough = new List <DGNotEnough>(); DGNotEnough notEnough = new DGNotEnough(); notEnough.DeptID = Convert.ToInt32(drNotAuditRow["DeptID"]); notEnough.DrugID = Convert.ToInt32(drNotAuditRow["DrugID"]); notEnough.DrugInfo = "药品名称:" + drNotAuditRow["ChemName"].ToString(); result.LstNotEnough.Add(notEnough); result.ErrMsg = "【" + notEnough.DrugInfo + "】保存错误"; } else { result.ErrMsg = "药品更新库存出错"; } return(result); } else { foreach (DGBatchAllot batchAllot in storeRtn.BatchAllotList) { DS_AuditDetail auditdetail = NewObject <DS_AuditDetail>(); auditdetail.StorageID = Convert.ToInt32(drNotAuditRow["StorageID"]); auditdetail.CTypeID = Convert.ToInt32(drNotAuditRow["CTypeID"]); auditdetail.DrugID = Convert.ToInt32(drNotAuditRow["DrugID"]); auditdetail.Place = drNotAuditRow["Place"].ToString(); auditdetail.DeptID = auditHead.DeptID; auditdetail.BillNO = auditHead.BillNO; auditdetail.UnitID = Convert.ToInt32(drNotAuditRow["UnitID"]); auditdetail.UnitName = drNotAuditRow["UnitName"].ToString(); auditdetail.PackUnit = drNotAuditRow["PackUnit"].ToString(); auditdetail.UnitAmount = Convert.ToInt32(drNotAuditRow["UnitAmount"].ToString()); auditdetail.AuditHeadID = auditHead.AuditHeadID; auditdetail.BatchNO = batchAllot.BatchNO; auditdetail.ValidityDate = batchAllot.ValidityDate; auditdetail.RetailPrice = batchAllot.RetailPrice; auditdetail.StockPrice = batchAllot.StockPrice; auditdetail.FactAmount = batchAllot.FactAmount; auditdetail.FactStockFee = batchAllot.FactStockFee; auditdetail.FactRetailFee = batchAllot.FactRetailFee; auditdetail.ActAmount = batchAllot.ActAmount; auditdetail.ActStockFee = batchAllot.ActStockFee; auditdetail.ActRetailFee = batchAllot.ActRetailFee; BindDb(auditdetail); auditdetail.save(); //写台账表 WriteAccount(auditHead, auditdetail, batchAllot); } } } //7、更新所有未审核的盘点录入单状态 DS_CheckHead checkHead = NewObject <DS_CheckHead>(); checkHead.AuditEmpID = auditEmpID; checkHead.AuditEmpName = auditEmpName; checkHead.AuditHeadID = auditHead.AuditHeadID; checkHead.AuditNO = (int)auditHead.BillNO; checkHead.DeptID = deptId; int ret = NewDao <IDSDao>().UpdateCheckHeadStatus(checkHead); if (ret > 0) { //8、设置库房盘点状态为运营状态 NewDao <IDGDao>().SetCheckStatus(deptId, 0, 0); result.Result = 0; } else { result.Result = 1; } return(result); }
public ServiceResponseData MonthAccount() { string opType = requestData.GetData <string>(0); int deptId = requestData.GetData <int>(1); int userId = requestData.GetData <int>(2); //科室 是 1药库 或 0药房 int deptType = opType == DGConstant.OP_DW_MONTHACCOUNT ? 1 : 0; DrugBalance balance = GetBalance(opType); DGBillResult rtn = new DGBillResult(); if (balance.IsMonthAccount(deptId)) { rtn.Result = 1; rtn.ErrMsg = "本月已经月结过,不能再次月结"; responseData.AddData(rtn); return(responseData); } var depdic = NewObject <DrugDeptMgr>().GetDepdic(deptId, LoginUserInfo.WorkId); if (depdic == null) { rtn.Result = 1; rtn.ErrMsg = "本科室不是药剂科室,不能进行相关操作"; responseData.AddData(rtn); return(responseData); } if (deptType == 1 && depdic.DeptType != 1) { rtn.Result = 1; rtn.ErrMsg = "您所在科室没有单前科室的操作权限"; responseData.AddData(rtn); return(responseData); } if (deptType == 0 && depdic.DeptType != 0) { rtn.Result = 1; rtn.ErrMsg = "您所在科室没有单前科室的操作权限"; responseData.AddData(rtn); return(responseData); } if (!NewObject <DrugDeptMgr>().IsDeptChecked(deptId, LoginUserInfo.WorkId)) { rtn.Result = 1; rtn.ErrMsg = "当前科室处于盘点状态或者没有设置科室的盘点状态 不能处理业务操作"; responseData.AddData(rtn); return(responseData); } try { NewDao <IDGDao>().SetCheckStatus(deptId, 1, deptType);//设置盘点状态 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 <IDGDao>().SetCheckStatus(deptId, 0, deptType); //恢复盘点状态 } return(responseData); }
/// <summary> /// 审核药库出库单 /// </summary> /// <param name="headID">药库出库单表头ID</param> /// <param name="auditEmpID">审核人ID</param> /// <param name="auditEmpName">审核人姓名</param> /// <returns>单据处理结果</returns> public override DGBillResult AuditBill(int headID, int auditEmpID, string auditEmpName) { DW_OutStoreHead outHead = (DW_OutStoreHead)NewObject <DW_OutStoreHead>().getmodel(headID); outHead.AuditEmpID = auditEmpID; outHead.AuditEmpName = auditEmpName; outHead.AuditTime = System.DateTime.Now; outHead.AuditFlag = 1; outHead.save(); List <DW_OutStoreDetail> lstDetails = NewObject <DW_OutStoreDetail>().getlist <DW_OutStoreDetail>("OutHeadID=" + headID); DGBillResult result = new DGBillResult(); foreach (var outDeatils in lstDetails) { StoreParam storeParam = new StoreParam(); storeParam.Amount = outDeatils.Amount; storeParam.BatchNO = outDeatils.BatchNO; storeParam.DeptID = outDeatils.DeptID; storeParam.DrugID = outDeatils.DrugID; storeParam.RetailPrice = outDeatils.RetailPrice; storeParam.StockPrice = outDeatils.StockPrice; storeParam.UnitID = outDeatils.UnitID; storeParam.UnitName = outDeatils.UnitName; storeParam.ValidityTime = outDeatils.ValidityDate; DGStoreResult storeRtn = iStore.ReduceStore(storeParam); if (storeRtn.Result != 0) { result.Result = 1; if (storeRtn.Result == 1) { result.LstNotEnough = new List <DGNotEnough>(); DGNotEnough notEnough = new DGNotEnough(); notEnough.DeptID = outHead.DeptID; notEnough.DrugID = outDeatils.DrugID; notEnough.LackAmount = outDeatils.Amount - storeRtn.StoreAmount; notEnough.DrugInfo = "药品批次号:" + outDeatils.BatchNO; result.LstNotEnough.Add(notEnough); result.ErrMsg = "【" + notEnough.DrugInfo + "】库存不足"; } else { result.ErrMsg = "药品更新库存出错"; } return(result); } else { WriteAccount(outHead, outDeatils, storeRtn); } } if (outHead.BusiType == DGConstant.OP_DW_CIRCULATEOUT || outHead.BusiType == DGConstant.OP_DW_RETURNSTORE) { //流通出库业务和退库业务 var t = outHead.BusiType == DGConstant.OP_DW_CIRCULATEOUT ? DGConstant.OP_DS_CIRCULATEIN:DGConstant.OP_DS_RETURNSOTRE; DS_InstoreHead dshead = NewObject <DGBillConverter>().ConvertInFromDWOutHead(outHead, auditEmpID, auditEmpName, t); IDGBill iProcess = NewObject <DGBillFactory>().GetBillProcess(t); List <DS_InStoreDetail> dsInStore = NewObject <DGBillConverter>().ConvertInFromDwStoreDetail(headID); iProcess.SaveBill(dshead, dsInStore);//药房入库 Basic_SystemConfig config = NewObject <IDGDao>().GetDeptParameters(dshead.DeptID, "AutoAuditInstore"); if (config != null) { //药房是否需要审核 if (config.Value == "1") { result = iProcess.AuditBill(dshead.InHeadID, auditEmpID, auditEmpName); } } } return(result); }
/// <summary> /// 审核药库单据 /// </summary> /// <param name="headID">药库入库单表头ID</param> /// <param name="auditEmpID">审核人ID</param> /// <param name="auditEmpName">审核人姓名</param> /// <param name="workId">机构ID</param> /// <returns>单据处理结果</returns> public override DGBillResult AuditBill(int headID, int auditEmpID, string auditEmpName, int workId) { DW_InStoreHead head = (DW_InStoreHead)NewObject <DW_InStoreHead>().getmodel(headID); List <DW_InStoreDetail> lstDetails = NewObject <DW_InStoreDetail>().getlist <DW_InStoreDetail>("InHeadID=" + headID); head.AuditEmpID = auditEmpID; head.AuditEmpName = auditEmpName; head.AuditTime = System.DateTime.Now; head.AuditFlag = 1; head.save(); DGBillResult result = new DGBillResult(); if (!NewObject <DrugDeptMgr>().IsDeptChecked(head.DeptID, workId)) { result.Result = 1; result.ErrMsg = "当前科室处于盘点状态或者没有设置科室的盘点状态 不能处理业务操作"; return(result); } foreach (DW_InStoreDetail detail in lstDetails) { //获取批次数据 DW_Batch batch = NewDao <IDWDao>().GetBatchAmount(head.DeptID, detail.DrugID, detail.BatchNo); if (batch != null) { if (detail.Amount < 0) { if ((batch.RetailPrice.Equals(detail.RetailPrice) == false) || (batch.StockPrice.Equals(detail.StockPrice) == false)) { result.Result = 1; result.ErrMsg = "编码【" + detail.DrugID.ToString() + "的(进货价/零售价)】与【" + batch.BatchNO + "】批次价格不一致(进货价:" + batch.StockPrice.ToString() + ",零售价:" + batch.RetailPrice.ToString() + "),请核查库存!"; return(result); } } else { if ((batch.RetailPrice.Equals(detail.RetailPrice) == false) || (batch.StockPrice.Equals(detail.StockPrice) == false)) { result.Result = 1; result.ErrMsg = "编码【" + detail.DrugID.ToString() + "的(进货价/零售价)】与【" + batch.BatchNO + "】批次价格不一致(进货价:" + batch.StockPrice.ToString() + ",零售价:" + batch.RetailPrice.ToString() + "),请核查库存!"; return(result); } } } StoreParam storeParam = new StoreParam(); storeParam.Amount = detail.Amount; storeParam.BatchNO = detail.BatchNo; storeParam.DeptID = head.DeptID; storeParam.DrugID = detail.DrugID; storeParam.RetailPrice = detail.RetailPrice; storeParam.StockPrice = detail.StockPrice; storeParam.UnitID = detail.UnitID; storeParam.UnitName = detail.UnitName; storeParam.ValidityTime = detail.ValidityDate; storeParam.BussConstant = head.BusiType; //storeParam.PackUnit = detail.PackUnit; 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 = head.DeptID; notEnough.DrugID = detail.DrugID; notEnough.LackAmount = storeRtn.StoreAmount + detail.Amount; notEnough.DrugInfo = "药品编号" + detail.DrugID + " 药品批次号:" + detail.BatchNo; result.LstNotEnough.Add(notEnough); result.ErrMsg = "【" + notEnough.DrugInfo + "】库存不足"; } else { result.ErrMsg = "药品更新库存出错"; } return(result); } else { WriteAccount(head, detail, storeRtn); } } result.Result = 0; return(result); }
public void SaveBill(string frmName) { Action <ClientRequestData> requestAction = null; ServiceResponseData retdata = null; RefreshHead(frmName); if (frmName == "FrmOutStoreDetailDW") { currentDWHead.StockFee = 0; currentDWHead.RetailFee = 0; List <DW_OutStoreDetail> lstDetails = new List <DW_OutStoreDetail>(); for (int index = 0; index < currentDWDetails.Rows.Count; index++) { DW_OutStoreDetail detail = ConvertExtend.ToObject <DW_OutStoreDetail>(currentDWDetails, index); var pAmount = 0; if (currentDWDetails.Rows[index]["pAmount"] != DBNull.Value) { pAmount = Convert.ToInt32(currentDWDetails.Rows[index]["pAmount"].ToString()); } detail.Amount = pAmount; detail.DeptID = currentDWHead.DeptID; detail.ToDeptID = currentDWHead.ToDeptID; currentDWHead.StockFee += detail.StockFee; currentDWHead.RetailFee += detail.RetailFee; lstDetails.Add(detail); } requestAction = ((ClientRequestData request) => { request.AddData(DGConstant.OP_DW_SYSTEM); request.AddData(currentDWHead.BusiType); request.AddData(currentDWHead); request.AddData <List <DW_OutStoreDetail> >(lstDetails); request.AddData <List <int> >(frmOutstoreDetailDW.GetDeleteDetails()); }); if (frmOutstoreDetailDW.IsApplyStatus == true) { retdata = InvokeWcfService("DrugProject.Service", "OutStoreController", "SaveBillFromApply", requestAction); } else { retdata = InvokeWcfService("DrugProject.Service", "OutStoreController", "SaveBill", requestAction); } DGBillResult result = retdata.GetData <DGBillResult>(0); if (result.Result == 0) { frmOutstoreDetailDW.IsApplyStatus = false; MessageBoxShowSimple("单据已经保存成功,如果没有配置自动审核.请及时审核单据"); if (billStatus == DGEnum.BillEditStatus.ADD_STATUS) { frmOutstoreDetailDW.NewBillClear(); } else { frmOutstoreDetailDW.CloseCurrentWindow(); } } else { MessageBoxShowSimple("单据保存失败:" + result.ErrMsg); } } else { currentDSHead.StockFee = 0; currentDSHead.RetailFee = 0; List <DS_OutStoreDetail> lstDetails = new List <DS_OutStoreDetail>(); for (int index = 0; index < currentDSDetails.Rows.Count; index++) { DS_OutStoreDetail detail = ConvertExtend.ToObject <DS_OutStoreDetail>(currentDSDetails, index); var uAmount = 0; if (currentDSDetails.Rows[index]["uAmount"] != DBNull.Value) { uAmount = Convert.ToInt32(currentDSDetails.Rows[index]["uAmount"].ToString()); } var pAmount = 0; if (currentDSDetails.Rows[index]["pAmount"] != DBNull.Value) { pAmount = Convert.ToInt32(currentDSDetails.Rows[index]["pAmount"].ToString()); } var packAmount = currentDSDetails.Rows[index]["packAmount"] == DBNull.Value ? 0 : Convert.ToInt32(currentDSDetails.Rows[index]["packAmount"]); detail.Amount = uAmount + (pAmount * packAmount); detail.DeptID = currentDSHead.DeptID; detail.ToDeptID = currentDSHead.ToDeptID; currentDSHead.StockFee += detail.StockFee; currentDSHead.RetailFee += detail.RetailFee; lstDetails.Add(detail); } requestAction = ((ClientRequestData request) => { request.AddData(DGConstant.OP_DS_SYSTEM); request.AddData(currentDSHead.BusiType); request.AddData(currentDSHead); request.AddData <List <DS_OutStoreDetail> >(lstDetails); request.AddData <List <int> >(frmOutstoreDetailDS.GetDeleteDetails()); }); retdata = InvokeWcfService("DrugProject.Service", "OutStoreController", "SaveBill", requestAction); DGBillResult result = retdata.GetData <DGBillResult>(0); if (result.Result == 0) { MessageBoxShowSimple("单据已经保存成功,如果没有配置自动审核.请及时审核单据"); if (billStatus == DGEnum.BillEditStatus.ADD_STATUS) { frmOutstoreDetailDS.NewBillClear(); } else { frmOutstoreDetailDS.CloseCurrentWindow(); } } else { MessageBoxShowSimple("单据保存失败:" + result.ErrMsg); } } }
public ServiceResponseData IPDisp() { //每次发药产生一个发药表头 DS_IPDispHead dispHead = new DS_IPDispHead(); DataTable dtDispDetail = requestData.GetData <DataTable>(0); int sendEmpID = requestData.GetData <int>(1); string sendEmpName = requestData.GetData <string>(2); int deptId = requestData.GetData <int>(3); dispHead.DispHeadID = 0; dispHead.BillNO = 0; dispHead.RetailFee = Convert.ToDecimal(dtDispDetail.Compute("sum(SellFee)", "chk=1")); dispHead.DispenserID = sendEmpID; dispHead.PharmacistID = sendEmpID; dispHead.DispTime = DateTime.Now; dispHead.RefFlag = 0; dispHead.BusiType = DGConstant.OP_DS_IPDISPENSE; dispHead.DeptID = Convert.ToInt32(dtDispDetail.Rows[0]["PresDeptID"]);//科室 dispHead.ExecDeptID = deptId; dispHead.BillTypeID = Convert.ToInt32(dtDispDetail.Rows[0]["BillTypeID"]); //检查统领单是否存在,不存在抛出异常 DataTable dtCheck = DistinctTableInfo(dtDispDetail, new string[] { "chk", "BillHeadID", "BillDetailID", "ChemName", "PatName" }); foreach (DataRow r in dtCheck.Rows) { if (r["chk"].ToString() == "1") { IP_DrugBillDetail m = (IP_DrugBillDetail)NewObject <IP_DrugBillDetail>().getmodel(r["BillDetailID"].ToString()); if (m == null) { throw new Exception("患者【" + r["PatName"].ToString() + "】的药品【" + r["ChemName"].ToString() + "】明细单据不存在,请刷新数据重发"); } } } //获取该结算单所有明细记录 List <DS_IPDispDetail> dispDetail = ConvertFeeDetailModel(dtDispDetail, deptId); IPDispBill iProcess = NewObject <IPDispBill>(); DGBillResult rtn = new DGBillResult(); try { oleDb.BeginTransaction(); rtn = iProcess.IPDisp(dispHead, dispDetail); 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); }