/// <summary> /// 药房主表信息 /// </summary> /// <returns>药房主表</returns> public DS_OutStoreHead GetHeadInfoDS() { DS_OutStoreHead inHead = new DS_OutStoreHead(); frmCommon.GetValue <DS_OutStoreHead>(inHead); return(inHead); }
public void RefreshHead(string frmName) { if (frmName == "FrmOutStoreDetailDW") { if (billStatus == DGEnum.BillEditStatus.ADD_STATUS) { DW_OutStoreHead editHead = frmOutstoreDetailDW.GetInHeadInfoDW(); currentDWHead.BillTime = editHead.BillTime; currentDWHead.ToDeptID = editHead.ToDeptID; currentDWHead.Remark = editHead.Remark; currentDWHead.BusiType = editHead.BusiType; currentDWHead.LostReason = editHead.LostReason; currentDWHead.ApplyHeadId = editHead.ApplyHeadId; } } else { if (billStatus == DGEnum.BillEditStatus.ADD_STATUS) { DS_OutStoreHead editHead = frmOutstoreDetailDS.GetHeadInfoDS(); currentDSHead.BillTime = editHead.BillTime; currentDSHead.ToDeptID = editHead.ToDeptID; currentDSHead.Remark = editHead.Remark; currentDSHead.BusiType = editHead.BusiType; } } }
/// <summary> /// 台账写入 /// </summary> /// <typeparam name="THead">药房出库单表头模板</typeparam> /// <typeparam name="TDetail">药房出库单明细模板</typeparam> /// <param name="billHead">药房出库单表头</param> /// <param name="billDetails">药房出库单明细</param> /// <param name="storeResult">库存处理结果</param> /// <param name="packAmount">包装数量</param> public void WriteAccount <THead, TDetail>(THead billHead, TDetail billDetails, DGStoreResult storeResult, decimal packAmount) { //1、构建台账表实体; //2、根据台账表内容填写相应的信息; //3、保存台账表 DS_OutStoreDetail detail = billDetails as DS_OutStoreDetail; DS_OutStoreHead head = billHead as DS_OutStoreHead; int actYear; int actMonth; string errMsg; if (!GetAccountTime(head.DeptID, out errMsg, out actYear, out actMonth)) { throw new Exception(errMsg); } packAmount = packAmount > 0 ? packAmount : GetPackAmount(detail.DrugID); DS_Account account = NewObject <DS_Account>(); account.BalanceYear = actYear; account.BalanceMonth = actMonth; account.AccountType = 0; account.BalanceFlag = 0; account.BillNO = head.BillNO; account.BatchNO = detail.BatchNO; account.BusiType = head.BusiType; account.CTypeID = detail.CTypeID; account.DeptID = head.DeptID; account.DetailID = detail.OutDetailID; account.DrugID = detail.DrugID; account.UnitID = detail.UnitID; account.UnitName = detail.UnitName; account.RegTime = System.DateTime.Now; account.UnitAmount = Convert.ToInt32(packAmount); if (head.BusiType == DGConstant.OP_DS_RETURNSOTRE) { account.StockPrice = storeResult.BatchAllot[0].StockPrice; account.RetailPrice = storeResult.BatchAllot[0].RetailPrice; account.DebitAmount = detail.Amount; account.DebitRetailFee = account.DebitAmount * (account.RetailPrice / packAmount); account.DebitStockFee = account.DebitAmount * (account.StockPrice / packAmount); } else { account.StockPrice = detail.StockPrice; account.RetailPrice = detail.RetailPrice; account.DebitAmount = detail.Amount; account.DebitRetailFee = account.DebitAmount * (account.RetailPrice / packAmount); account.DebitStockFee = account.DebitAmount * (account.StockPrice / packAmount); } account.OverAmount = storeResult.BatchAllot[0].StoreAmount; account.OverStockFee = storeResult.BatchAllot[0].StoreAmount * (account.RetailPrice / packAmount); account.OverRetailFee = storeResult.BatchAllot[0].StoreAmount * (account.StockPrice / packAmount); account.save(); }
/// <summary> /// 删除药房出库单 /// </summary> /// <param name="billID">药房出库单表头ID</param> public override void DeleteBill(int billID) { DS_OutStoreHead inHead = (DS_OutStoreHead)NewObject <DS_OutStoreHead>().getmodel(billID); if (inHead.AuditFlag == 1) { throw new Exception("当前单据已经审核,无法删除"); } else { inHead.DelFlag = 1; inHead.save(); } }
/// <summary> /// 药库出库头转药房出库头 /// </summary> /// <param name="dwhead">药库出库主实体</param> /// <param name="userId">操作用户ID</param> /// <param name="userName">操作用户名</param> /// <returns>药房出库头对象集</returns> public DS_OutStoreHead ConvertOutFromDwOutHead(DW_OutStoreHead dwhead, int userId, string userName) { DS_OutStoreHead dshead = new DS_OutStoreHead(); dshead.DelFlag = 0; dshead.BusiType = DGConstant.OP_DS_RETURNSOTRE; dshead.BillTime = System.DateTime.Now; dshead.DeptID = dwhead.ToDeptID; dshead.RegEmpID = userId; dshead.RegEmpName = userName; dshead.RegTime = DateTime.Now; dshead.StockFee = dwhead.StockFee; dshead.RetailFee = dwhead.RetailFee; dshead.OutStoreHeadID = dwhead.OutStoreHeadID; return(dshead); }
public ServiceResponseData GetEditBillHead() { string belongSys = requestData.GetData <string>(0); int billID = requestData.GetData <int>(1); if (belongSys == DGConstant.OP_DW_SYSTEM) { DW_OutStoreHead head = (DW_OutStoreHead)NewObject <DW_OutStoreHead>().getmodel(billID); responseData.AddData(head); } else { DS_OutStoreHead head = (DS_OutStoreHead)NewObject <DS_OutStoreHead>().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) { DS_OutStoreHead outHead = billHead as DS_OutStoreHead; List <DS_OutStoreDetail> inDetals = billDetails as List <DS_OutStoreDetail>; outHead.RegTime = System.DateTime.Now; string serialNO = NewObject <SerialNumberSource>().GetSerialNumber(SnType.药品, outHead.DeptID, outHead.BusiType); outHead.BillNO = Convert.ToInt64(serialNO); BindDb(outHead); outHead.save(); if (outHead.OutStoreHeadID > 0) { foreach (DS_OutStoreDetail detail in inDetals) { detail.OutHeadID = outHead.OutStoreHeadID; detail.BillNO = outHead.BillNO; BindDb(detail); detail.save(); } } }
/// <summary> /// 获取头表信息 /// </summary> /// <param name="opType">业务类型</param> /// <param name="deptId">科室Id</param> /// <param name="detailID">明细Id</param> /// <returns>头表信息</returns> public BillMasterShower GetBillHeadInfo(string opType, int deptId, int detailID) { BillMasterShower shower = new BillMasterShower(); switch (opType) { case "011": //采购入库 case "012": //期初入库 case "013": //流通入库 DS_InStoreDetail inStoreDetail = (DS_InStoreDetail)NewObject <DS_InStoreDetail>().getmodel(detailID); if (inStoreDetail != null) { DS_InstoreHead instoreHead = (DS_InstoreHead)NewObject <DS_InstoreHead>().getmodel(inStoreDetail.InHeadID); if (instoreHead != null) { shower.RegTime = instoreHead.RegTime; shower.AuditTime = instoreHead.AuditTime; shower.BillNo = instoreHead.BillNO.ToString(); shower.RelationPeopleNo = instoreHead.OpEmpID.ToString(); shower.RelationPeople = instoreHead.OpEmpName; shower.RelationUnit = instoreHead.SupplierName; shower.RetailFee = instoreHead.RetailFee; shower.StockFee = instoreHead.StockFee; shower.OpType = GetBusiTypeName(opType); shower.RegPeople = instoreHead.RegEmpName; shower.Remark = instoreHead.Remark; } } break; case "021": //内耗出库 case "022": //报损出库 DS_OutStoreDetail outStoreDetail = (DS_OutStoreDetail)NewObject <DS_OutStoreDetail>().getmodel(detailID); if (outStoreDetail != null) { DS_OutStoreHead outStoreHead = (DS_OutStoreHead)NewObject <DS_OutStoreHead>().getmodel(outStoreDetail.OutHeadID); if (outStoreDetail != null) { shower.RegTime = outStoreHead.RegTime; shower.AuditTime = outStoreHead.AuditTime; shower.BillNo = outStoreHead.BillNO.ToString(); shower.RelationPeopleNo = "暂无"; shower.RelationPeople = "暂无"; shower.RelationUnit = outStoreHead.ToDeptName; shower.RetailFee = outStoreHead.RetailFee; shower.StockFee = outStoreHead.StockFee; shower.OpType = GetBusiTypeName(opType); shower.RegPeople = outStoreHead.RegEmpName; shower.Remark = outStoreHead.Remark; } } break; case "031": //门诊发药 case "032": //门诊退药 DS_OPDispDetail oPDispDetail = (DS_OPDispDetail)NewObject <DS_OPDispDetail>().getmodel(detailID); if (oPDispDetail != null) { DS_OPDispHead oPDispHead = (DS_OPDispHead)NewObject <DS_OPDispHead>().getmodel(oPDispDetail.DispHeadID); if (oPDispHead != null) { shower.RegTime = oPDispHead.DispTime; shower.AuditTime = oPDispHead.DispTime; shower.BillNo = oPDispHead.BillNO.ToString(); shower.RelationPeopleNo = "暂无"; shower.RelationPeople = "暂无"; shower.RelationUnit = oPDispHead.PresDeptName; shower.RetailFee = oPDispHead.RetailFee; shower.StockFee = 0; shower.OpType = GetBusiTypeName(opType); shower.RegPeople = oPDispHead.PharmacistName; shower.Remark = string.Empty; } } break; case "033": //住院发药 DS_IPDispDetail iPDispDetail = (DS_IPDispDetail)NewObject <DS_IPDispDetail>().getmodel(detailID); if (iPDispDetail != null) { DS_IPDispHead iPDispHead = (DS_IPDispHead)NewObject <DS_IPDispHead>().getmodel(iPDispDetail.DispHeadID); if (iPDispHead != null) { shower.RegTime = iPDispHead.DispTime; shower.AuditTime = iPDispHead.DispTime; shower.BillNo = iPDispHead.BillNO.ToString(); shower.RelationPeopleNo = "暂无"; shower.RelationPeople = "暂无"; shower.RelationUnit = GetDeptName(iPDispHead.DeptID); shower.RetailFee = iPDispHead.RetailFee; shower.StockFee = 0; shower.OpType = GetBusiTypeName(opType); shower.RegPeople = GetEmpName(iPDispHead.PharmacistID); shower.Remark = string.Empty; } } break; case "042": //盘点审核 DS_AuditDetail auditDetail = (DS_AuditDetail)NewObject <DS_AuditDetail>().getmodel(detailID); if (auditDetail != null) { DS_AuditHead auditHead = (DS_AuditHead)NewObject <DS_AuditHead>().getmodel(auditDetail.AuditHeadID); if (auditHead != null) { shower.RegTime = auditHead.AuditTime; shower.AuditTime = auditHead.AuditTime; shower.BillNo = auditHead.BillNO.ToString(); shower.RelationPeopleNo = auditHead.EmpID.ToString(); shower.RelationPeople = auditHead.EmpName; shower.RelationUnit = GetDeptName(auditHead.DeptID); shower.RetailFee = auditHead.CheckRetailFee; shower.StockFee = auditHead.CheckStockFee; shower.OpType = GetBusiTypeName(opType); shower.RegPeople = auditHead.EmpName; shower.Remark = string.Empty; } } break; case "051": //药房调价 DG_AdjDetail adjDetail = (DG_AdjDetail)NewObject <DG_AdjDetail>().getmodel(detailID); if (adjDetail != null) { DG_AdjHead adjHead = (DG_AdjHead)NewObject <DG_AdjHead>().getmodel(adjDetail.AdjHeadID); if (adjHead != null) { shower.RegTime = adjHead.RegTime; shower.AuditTime = adjHead.ExecTime; shower.BillNo = adjHead.BillNO.ToString(); shower.RelationPeopleNo = adjHead.RegEmpID.ToString(); shower.RelationPeople = GetEmpName(adjHead.RegEmpID); shower.RelationUnit = GetDeptName(adjHead.DeptID); shower.RetailFee = 0; shower.StockFee = 0; shower.OpType = GetBusiTypeName(opType); shower.RegPeople = GetEmpName(adjHead.RegEmpID); shower.Remark = adjHead.Remark; } } break; } return(shower); }
public bool InitBillHead(string frmName, DGEnum.BillEditStatus billEditStatus, int currentBillID) { if (LoginUserInfo.DeptId == 0) { MessageBoxShowSimple("用户没有选择登录科室"); return(false); } billStatus = billEditStatus; if (frmName == "FrmOutStoreDW") { if (billStatus == DGEnum.BillEditStatus.ADD_STATUS) { DW_OutStoreHead outHead = new DW_OutStoreHead(); outHead.AuditFlag = 0; outHead.AuditEmpID = 0; outHead.AuditEmpName = string.Empty; outHead.Remark = string.Empty; outHead.DeptID = selectedDeptID; outHead.BusiType = DGConstant.OP_DW_DEPTDRAW;//默认内耗流通出库 outHead.BillTime = System.DateTime.Now; outHead.RegTime = System.DateTime.Now; outHead.RegEmpID = GetUserInfo().EmpId; outHead.RegEmpName = GetUserInfo().EmpName; currentDWHead = outHead; frmOutstoreDetailDW.BindInHeadInfo(currentDWHead); } else { Action <ClientRequestData> requestAction = ((ClientRequestData request) => { request.AddData(DGConstant.OP_DW_SYSTEM); request.AddData(currentBillID); }); ServiceResponseData retdata = InvokeWcfService("DrugProject.Service", "OutStoreController", "GetEditBillHead", requestAction); DW_OutStoreHead inStoreHead = retdata.GetData <DW_OutStoreHead>(0); currentDWHead = inStoreHead; if (currentDWHead.ApplyHeadId != 0) { frmOutstoreDetailDW.IsApplyStatus = true; } frmOutstoreDetailDW.BindInHeadInfo(currentDWHead); } frmOutstoreDetailDW.InitControStatus(billEditStatus); } else { if (billStatus == DGEnum.BillEditStatus.ADD_STATUS) { DS_OutStoreHead outHead = new DS_OutStoreHead(); outHead.AuditFlag = 0; outHead.AuditEmpID = 0; outHead.AuditEmpName = string.Empty; outHead.Remark = string.Empty; outHead.DeptID = selectedDeptID; outHead.BusiType = DGConstant.OP_DS_DEPTDRAW;//默认内耗流通出库 outHead.BillTime = System.DateTime.Now; outHead.RegTime = System.DateTime.Now; outHead.RegEmpID = GetUserInfo().EmpId; outHead.RegEmpName = GetUserInfo().EmpName; currentDSHead = outHead; frmOutstoreDetailDS.BindInHeadInfo(currentDSHead); } else { Action <ClientRequestData> requestAction = ((ClientRequestData request) => { request.AddData(DGConstant.OP_DS_SYSTEM); request.AddData(currentBillID); }); ServiceResponseData retdata = InvokeWcfService("DrugProject.Service", "OutStoreController", "GetEditBillHead", requestAction); DS_OutStoreHead outStoreHead = retdata.GetData <DS_OutStoreHead>(0); outStoreHead.DeptID = selectedDeptID; currentDSHead = outStoreHead; frmOutstoreDetailDS.BindInHeadInfo(currentDSHead); } frmOutstoreDetailDS.InitControStatus(billEditStatus); } return(true); }
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_OutStoreHead head = requestData.GetData <DW_OutStoreHead>(2); List <DW_OutStoreDetail> details = requestData.GetData <List <DW_OutStoreDetail> >(3); List <int> deleteDetails = requestData.GetData <List <int> >(4); //oleDb.BeginTransaction(); try { foreach (int detailID in deleteDetails) { NewObject <DW_OutStoreDetail>().delete(detailID); } iProcess.SaveBill(head, details); Basic_SystemConfig config = NewObject <IDGDao>().GetDeptParameters(head.DeptID, "AutoAuditOutStore"); if (config != null) { //是否配置需要审核 if (config.Value == "1") { result = iProcess.AuditBill(head.OutStoreHeadID, LoginUserInfo.EmpId, LoginUserInfo.EmpName, LoginUserInfo.WorkId); } } /*if (result.Result == 0) * { * oleDb.CommitTransaction(); * } * else * { * oleDb.RollbackTransaction(); * }*/ if (result.Result != 0) { throw new Exception(result.ErrMsg); } responseData.AddData(result); //oleDb.CommitTransaction(); //responseData.AddData(true); } catch (Exception error) { throw error; //oleDb.RollbackTransaction(); //responseData.AddData(false); //responseData.AddData(error.Message); } } else { //药房 DS_OutStoreHead head = requestData.GetData <DS_OutStoreHead>(2); List <DS_OutStoreDetail> details = requestData.GetData <List <DS_OutStoreDetail> >(3); List <int> deleteDetails = requestData.GetData <List <int> >(4); //oleDb.BeginTransaction(); try { foreach (int detailID in deleteDetails) { NewObject <DS_OutStoreDetail>().delete(detailID); } iProcess.SaveBill(head, details); Basic_SystemConfig config = NewObject <IDGDao>().GetDeptParameters(head.DeptID, "AutoAuditOutStore"); if (config != null) { //是否需要审核 if (config.Value == "1") { result = iProcess.AuditBill(head.OutStoreHeadID, LoginUserInfo.EmpId, LoginUserInfo.EmpName, LoginUserInfo.WorkId); } } /*if (result.Result == 0) * { * oleDb.CommitTransaction(); * } * else * { * oleDb.RollbackTransaction(); * }*/ if (result.Result != 0) { throw new Exception(result.ErrMsg); } responseData.AddData(result); } catch (Exception error) { throw error; //oleDb.RollbackTransaction(); //responseData.AddData(false); //responseData.AddData(error.Message); } } return(responseData); }
/// <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) { DS_OutStoreHead outHead = (DS_OutStoreHead)NewObject <DS_OutStoreHead>().getmodel(headID); outHead.AuditEmpID = auditEmpID; outHead.AuditEmpName = auditEmpName; outHead.AuditTime = System.DateTime.Now; outHead.AuditFlag = 1; outHead.save(); List <DS_OutStoreDetail> lstDetails = NewObject <DS_OutStoreDetail>().getlist <DS_OutStoreDetail>("OutHeadID=" + headID); DGBillResult result = new DGBillResult(); if (!NewObject <DrugDeptMgr>().IsDeptChecked(outHead.DeptID, workId)) { result.Result = 1; result.ErrMsg = "当前科室处于盘点状态或者没有设置科室的盘点状态 不能处理业务操作"; return(result); } foreach (var outDeatils in lstDetails) { StoreParam storeParam = new StoreParam(); storeParam.Amount = outDeatils.Amount; decimal packAmount = GetPackAmount(outDeatils.DrugID); storeParam.PackAmount = Convert.ToInt32(packAmount); 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.DrugID + " 药品批次号:" + outDeatils.BatchNO; result.LstNotEnough.Add(notEnough); result.ErrMsg = "【" + notEnough.DrugInfo + "】库存不足"; } else { result.ErrMsg = "药品更新库存出错"; } return(result); } else { DGStoreResult vStoreRtn = NewObject <DSStore>().ReduceValidStore(storeParam); if (vStoreRtn.Result != 0) { result.Result = 1; if (vStoreRtn.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.DrugID + " 药品批次号:" + outDeatils.BatchNO; result.LstNotEnough.Add(notEnough); result.ErrMsg = "【" + notEnough.DrugInfo + "】没有有效库存"; } else { result.ErrMsg = "药品更新有效库存出错"; } return(result); } WriteAccount(outHead, outDeatils, storeRtn, packAmount); } } return(result); }