/// <summary> /// 取消冲账 /// </summary> /// <param name="strikeABalanceDt">取消冲账的数据</param> /// <param name="msgList">错误消息</param> /// <returns>true:取消冲账成功</returns> public bool CancelStrikeABalance(DataTable strikeABalanceDt, List <string> msgList) { // 项目已做不能冲账提示消息。 StringBuilder strMsg = new StringBuilder(); bool isStrikeABalance = true; if (strikeABalanceDt != null && strikeABalanceDt.Rows.Count > 0) { for (int i = 0; i < strikeABalanceDt.Rows.Count; i++) { int feeRecordID = Convert.ToInt32(strikeABalanceDt.Rows[i]["FeeRecordID"].ToString()); DataTable feeItemRecordDt = NewDao <IIPManageDao>().GetIPFeeItemRecordInfo(feeRecordID); IP_FeeItemRecord feeItemRecord = ConvertExtend.ToObject <IP_FeeItemRecord>(feeItemRecordDt, 0); // 检查药品是否已发药、检查项目是否已做检查 bool result = NewDao <IIPManageDao>().CheckIsMedicine(Convert.ToInt32(strikeABalanceDt.Rows[i]["FeeRecordID"].ToString())); // 取得账单类型 int feeClass = Convert.ToInt32(strikeABalanceDt.Rows[i]["FeeClass"].ToString()); // 未发药 if (result) { switch (feeClass) { // 药品 case 1: // 处方明细取消冲正 try { // 减去有效库存 NewObject <DrugStoreManagement>().UpdateStorage(feeItemRecord.ItemID, feeItemRecord.ExecDeptID, feeItemRecord.Amount); } catch (Exception ex) { if (ex.Message.Contains("库存数不够")) { strMsg.Append("[" + feeItemRecord.ItemName + "]、"); continue; } } // 将选中记录改成9,(9=已取消冲账) feeItemRecord.RecordFlag = 9; feeItemRecord.ChargeDate = DateTime.Now; this.BindDb(feeItemRecord); feeItemRecord.save(); // 重新走记账流程重新生成费用数据 feeItemRecord = feeItemRecord.Clone() as IP_FeeItemRecord; feeItemRecord.OldFeeRecordID = 0; feeItemRecord.FeeRecordID = 0; feeItemRecord.RecordFlag = 0; feeItemRecord.ChargeDate = DateTime.Now; feeItemRecord.Amount = Math.Abs(feeItemRecord.Amount); feeItemRecord.TotalFee = Math.Abs(feeItemRecord.TotalFee); this.BindDb(feeItemRecord); feeItemRecord.save(); break; // 材料/项目 case 2: case 3: // 处方明细取消冲账 // 将选中记录改成9,(9=已取消冲账) feeItemRecord.RecordFlag = 9; feeItemRecord.ChargeDate = DateTime.Now; this.BindDb(feeItemRecord); feeItemRecord.save(); // 重新走记账流程重新生成费用数据 feeItemRecord = feeItemRecord.Clone() as IP_FeeItemRecord; feeItemRecord.OldFeeRecordID = 0; feeItemRecord.FeeRecordID = 0; feeItemRecord.RecordFlag = 0; feeItemRecord.ChargeDate = DateTime.Now; if (feeItemRecord.Amount < 0) { feeItemRecord.Amount = Math.Abs(feeItemRecord.Amount); } feeItemRecord.TotalFee = Math.Abs(feeItemRecord.TotalFee); this.BindDb(feeItemRecord); feeItemRecord.save(); break; // 组合项目/医嘱 case 4: case 5: default: break; } } else { // 已发药 switch (feeClass) { // 药品 case 1: // 处方明细取消冲正 try { // 减去有效库存 NewObject <DrugStoreManagement>().UpdateStorage(feeItemRecord.ItemID, feeItemRecord.ExecDeptID, feeItemRecord.Amount); } catch (Exception ex) { if (ex.Message.Contains("库存数不够")) { strMsg.Append("[" + feeItemRecord.ItemName + "]、"); continue; } } // 将选中记录改成9,(9=已取消冲账) feeItemRecord.RecordFlag = 9; feeItemRecord.ChargeDate = DateTime.Now; this.BindDb(feeItemRecord); feeItemRecord.save(); feeItemRecord = feeItemRecord.Clone() as IP_FeeItemRecord; feeItemRecord.OldFeeRecordID = 0; feeItemRecord.FeeRecordID = 0; feeItemRecord.RecordFlag = 0; feeItemRecord.DrugFlag = 0; feeItemRecord.ChargeDate = DateTime.Now; feeItemRecord.Amount = Math.Abs(feeItemRecord.Amount); feeItemRecord.TotalFee = Math.Abs(feeItemRecord.TotalFee); this.BindDb(feeItemRecord); feeItemRecord.save(); break; // 材料/项目 case 2: case 3: // 项目已做不能冲账 // 提示消息 strMsg.Append("[" + strikeABalanceDt.Rows[i]["ItemName"].ToString() + "]、"); break; // 组合项目/医嘱 case 4: case 5: default: break; } } } } if (!string.IsNullOrEmpty(strMsg.ToString())) { msgList.Add(strMsg.ToString()); isStrikeABalance = false; } return(isStrikeABalance); }
/// <summary> /// 费用冲账 /// </summary> /// <param name="strikeABalanceDt">冲账数据</param> /// <param name="msgList">错误消息</param> /// <returns>true:冲账成功</returns> public bool StrikeABalance(DataTable strikeABalanceDt, List <string> msgList) { // 项目已做不能冲账提示消息。 StringBuilder strMsg = new StringBuilder(); bool isStrikeABalance = true; if (strikeABalanceDt != null && strikeABalanceDt.Rows.Count > 0) { for (int i = 0; i < strikeABalanceDt.Rows.Count; i++) { int feeRecordID = Convert.ToInt32(strikeABalanceDt.Rows[i]["FeeRecordID"].ToString()); DataTable feeItemRecordDt = NewDao <IIPManageDao>().GetIPFeeItemRecordInfo(feeRecordID); IP_FeeItemRecord feeItemRecord = ConvertExtend.ToObject <IP_FeeItemRecord>(feeItemRecordDt, 0); // 检查药品是否已发药、检查项目是否已做检查 bool result = NewDao <IIPManageDao>().CheckIsMedicine(Convert.ToInt32(strikeABalanceDt.Rows[i]["FeeRecordID"].ToString())); // 取得账单类型 int feeClass = Convert.ToInt32(strikeABalanceDt.Rows[i]["FeeClass"].ToString()); // 未发药 if (result) { switch (feeClass) { // 药品 case 1: // 检查是否已生成统领单,如果已生成统领单,则需要删除统领单对应的信息 bool isDrugBillDetail = NewDao <IIPManageDao>().CheckIsGenerateDrugBillDetail(feeRecordID); if (isDrugBillDetail) { // 删除统领单明细数据 NewDao <IIPManageDao>().DelDrugBillDetail(feeRecordID); } feeItemRecord.RecordFlag = 1; feeItemRecord.ChargeDate = DateTime.Now; this.BindDb(feeItemRecord); feeItemRecord.save(); // 冲账时产生负数记录 feeItemRecord = feeItemRecord.Clone() as IP_FeeItemRecord; feeItemRecord.OldFeeRecordID = feeRecordID; feeItemRecord.FeeRecordID = 0; feeItemRecord.RecordFlag = 2; feeItemRecord.ChargeDate = DateTime.Now; feeItemRecord.Amount = 0 - feeItemRecord.Amount; feeItemRecord.TotalFee = 0 - feeItemRecord.TotalFee; this.BindDb(feeItemRecord); feeItemRecord.save(); // 追加有效库存 NewObject <DrugStoreManagement>().UpdateStorage( feeItemRecord.ItemID, feeItemRecord.ExecDeptID, Math.Abs(feeItemRecord.Amount)); break; // 材料/项目 case 2: case 3: // 处方明细冲正 feeItemRecord.RecordFlag = 1; feeItemRecord.ChargeDate = DateTime.Now; this.BindDb(feeItemRecord); feeItemRecord.save(); // 冲账时产生负数记录 feeItemRecord = feeItemRecord.Clone() as IP_FeeItemRecord; feeItemRecord.OldFeeRecordID = feeRecordID; feeItemRecord.FeeRecordID = 0; feeItemRecord.RecordFlag = 2; feeItemRecord.ChargeDate = DateTime.Now; feeItemRecord.Amount = 0 - feeItemRecord.Amount; feeItemRecord.TotalFee = 0 - feeItemRecord.TotalFee; this.BindDb(feeItemRecord); feeItemRecord.save(); break; // 组合项目/医嘱 case 4: case 5: default: break; } } else { // 已发药 switch (feeClass) { // 药品 case 1: // 处方明细冲正 feeItemRecord.RecordFlag = 1; feeItemRecord.ChargeDate = DateTime.Now; this.BindDb(feeItemRecord); feeItemRecord.save(); // 冲账时产生负数记录 feeItemRecord = feeItemRecord.Clone() as IP_FeeItemRecord; feeItemRecord.OldFeeRecordID = feeRecordID; feeItemRecord.FeeRecordID = 0; feeItemRecord.RecordFlag = 2; feeItemRecord.ChargeDate = DateTime.Now; feeItemRecord.Amount = 0 - feeItemRecord.Amount; feeItemRecord.TotalFee = 0 - feeItemRecord.TotalFee; this.BindDb(feeItemRecord); feeItemRecord.save(); break; // 材料/项目 case 2: case 3: // 项目已做不能冲账 strMsg.Append("[" + strikeABalanceDt.Rows[i]["ItemName"].ToString() + "]、"); break; // 组合项目/医嘱 case 4: case 5: default: break; } } } } if (!string.IsNullOrEmpty(strMsg.ToString())) { msgList.Add(strMsg.ToString()); isStrikeABalance = false; } return(isStrikeABalance); }