/// <summary> /// 保存 /// </summary> /// <returns></returns> private int Save() { if (this.neuSpread1_Sheet1.RowCount <= 0) { return(0); } if (this.fpSpread1_Sheet1.RowCount <= 0) { MessageBox.Show("请选择需取消的明细"); return(0); } if (MessageBox.Show("是否取消该次终端确认?\r\n 取消确认操作不可回退", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) { return(0); } Neusoft.FrameWork.Management.PublicTrans.BeginTransaction(); Neusoft.HISFC.BizLogic.Terminal.TerminalConfirm terMgr = new Neusoft.HISFC.BizLogic.Terminal.TerminalConfirm(); //Neusoft.FrameWork.Management.Transaction t = new Neusoft.FrameWork.Management.Transaction(this.tecManager.Connection); //t.BeginTransaction(); this.feeManager.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans); this.orderManager.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans); //terMgr.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans); Neusoft.HISFC.Models.Terminal.TerminalConfirmDetail obj = ((Neusoft.HISFC.Models.Terminal.TerminalConfirmDetail) this.fpSpread1_Sheet1.Cells[this.fpSpread1_Sheet1.ActiveRowIndex, (int)Cols.MoOrder].Tag).Clone(); #region 医嘱 if (this.fpSpread1_Sheet1.RowCount == 1)//如果就剩一条,就说明所有的都取消了 { if (terMgr.CancelInpatientConfirmMoOrder(obj) <= 0) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show("更新医嘱失败" + terMgr.Err); return(-1); } } #endregion #region 费用 #region {2CE2BB1D-9DEB-4afa-90CF-15E3E44285E1} 重取明细数目,防止明细数目与组套项目数目不一致时出错 //if (terMgr.CancelInpatientItemList(obj) <= 0) //{ // Neusoft.FrameWork.Management.PublicTrans.RollBack(); // MessageBox.Show("更新费用明细失败" + terMgr.Err); // return -1; //} foreach (FarPoint.Win.Spread.Row r in this.fpSpread1_Sheet1.Rows) { Neusoft.HISFC.Models.Terminal.TerminalConfirmDetail tcd = ((Neusoft.HISFC.Models.Terminal.TerminalConfirmDetail) this.fpSpread1_Sheet1.Cells[r.Index, (int)Cols.MoOrder].Tag).Clone(); if (terMgr.CancelInpatientItemListWithSeq(tcd) <= 0) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show("更新费用明细失败" + terMgr.Err); return(-1); } } #endregion #endregion #region 确认明细 if (terMgr.CancelInpatientConfirmDetail(obj) <= 0) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show("更新确认明细失败" + terMgr.Err); return(-1); } #endregion Neusoft.FrameWork.Management.PublicTrans.Commit(); MessageBox.Show("取消成功"); this.fpSpread1_Sheet1.Rows.Remove(this.fpSpread1_Sheet1.ActiveRowIndex, 1); return(1); }
///// <summary> ///// 初始化事件 ///// </summary> ///// <param name="sender"></param> ///// <param name="neuObject"></param> ///// <param name="param"></param> ///// <returns></returns> //protected override Neusoft.FrameWork.WinForms.Forms.ToolBarService OnInit(object sender, object neuObject, object param) //{ // if (this.DesignMode) // { // return null; // } // if (this.isQueryForm) // { // this.neuButtonOK.Visible = false; // } // else // { // this.neuButtonOK.Visible = true; // } // return null; //} #endregion #region 取消终端确认 private void CancelConfirm() { if (this.neuSpreadItemDetail_SheetItemDetail.RowCount == 0) { return; } if (MessageBox.Show("是否取消该次确认", "确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) { return; } if (this.neuSpreadItemDetail_SheetItemDetail.Rows[this.neuSpreadItemDetail_SheetItemDetail.ActiveRowIndex].Tag == null) { MessageBox.Show("获取终端确认明细出错"); return; } Neusoft.FrameWork.Management.PublicTrans.BeginTransaction(); Neusoft.HISFC.BizLogic.Terminal.TerminalConfirm terminalConfim = new Neusoft.HISFC.BizLogic.Terminal.TerminalConfirm(); Neusoft.HISFC.BizProcess.Integrate.PhysicalExamination.ExamiManager examiMgr = new Neusoft.HISFC.BizProcess.Integrate.PhysicalExamination.ExamiManager(); Neusoft.HISFC.BizProcess.Integrate.Fee feeMgr = new Neusoft.HISFC.BizProcess.Integrate.Fee(); Neusoft.HISFC.BizProcess.Integrate.RADT serviceInpatient = new Neusoft.HISFC.BizProcess.Integrate.RADT(); //Neusoft.FrameWork.Management.Transaction t = new Neusoft.FrameWork.Management.Transaction(terminalConfim.Connection); //t.BeginTransaction(); //terminalConfim.SetTrans(t.Trans); //examiMgr.SetTrans(t.Trans); //feeMgr.SetTrans(t.Trans); //serviceInpatient.SetTrans(t.Trans); Neusoft.HISFC.Models.Terminal.TerminalConfirmDetail detail = (Neusoft.HISFC.Models.Terminal.TerminalConfirmDetail) this.neuSpreadItemDetail_SheetItemDetail.Rows[this.neuSpreadItemDetail_SheetItemDetail.ActiveRowIndex].Tag; Neusoft.HISFC.Models.Terminal.TerminalApply apply = terminalConfim.GetItemListBySequence(detail.Apply.Order.ID, detail.Apply.ID); Neusoft.HISFC.Models.Base.Employee employee = (Neusoft.HISFC.Models.Base.Employee)terminalConfim.Operator; if (detail.OperInfo.ID != terminalConfim.Operator.ID) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show("只能取消自己做过的终端确认"); return; } if (detail == null) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show("获取终端确认明细出错"); return; } int BackQty = Neusoft.FrameWork.Function.NConvert.ToInt32(detail.Apply.Item.ConfirmedQty); if (terminalConfim.UpdateConfirmDetail(detail.Sequence, "1") <= 0) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show("作废终端确认明细表出错" + terminalConfim.Err); return; } if (terminalConfim.UpdateTerminalConfirmByMoOrder(detail.Apply.Order.ID, BackQty) <= 0) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show("更新终端确认主表失败" + terminalConfim.Err); return; } string confirmFlag = "1"; if (apply.AlreadyConfirmCount - BackQty == 0) { confirmFlag = "0"; } if (apply.PatientType != "5" && (apply.PatientType == "1" || apply.PatientType == "4")) { if (terminalConfim.UpdateFeeConfirmQty(detail.Apply.Order.ID, confirmFlag, -BackQty) <= 0) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show("更新费用表失败" + terminalConfim.Err); return; } #region 扣门诊账户 if (detail.Apply.SpecalFlag == "1") { //退费用到门诊账户 ,目前门诊账户项目不能分开多次确认 decimal totCost = decimal.Round(apply.Item.Item.Price * apply.Item.Item.Qty, 2); if (feeMgr.AccountCancelPay(apply.Patient, totCost, "终端退费", employee.Dept.ID, "") < 0) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show("退门诊账户失败 :" + feeMgr.Err); return; } #region 更新费用表 if (feeMgr.UpdateAccountByMoOrderAndItemCode(apply.Item.Item.ID, apply.Order.ID, false) <= 0) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show("门诊收费表扣费标志失败 :" + feeMgr.Err); return; } #endregion #region 更新执行标志到划价状态 if (terminalConfim.UpdateConfirmSendFlag(detail.Apply.Order.ID, detail.Apply.Item.Item.ID, "0") <= 0) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show("更新终端确认表执行标志失败 :" + terminalConfim.Err); return; } #endregion } #endregion } if (apply.PatientType == "4" || apply.PatientType == "5") { //体检中心的可退数量 int NoBackQty = Neusoft.FrameWork.Function.NConvert.ToInt32(apply.Item.Item.Qty - apply.Item.ConfirmedQty + BackQty); if (examiMgr.UpdateConfirmInfo(detail.Apply.Order.ID, confirmFlag, NoBackQty) <= 0) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show("更新体检表失败:" + examiMgr.Err); return; } } if (apply.PatientType == "2" && detail.Apply.SpecalFlag == "2") //回退住院费用 { #region 构建住院患者实体 Neusoft.HISFC.Models.RADT.PatientInfo patientInfo = serviceInpatient.QueryPatientInfoByInpatientNO(apply.Patient.PID.ID); if (patientInfo == null) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show("获取住院患者信息失败:" + serviceInpatient.Err); return; } #endregion #region 构建住院费用实体 Neusoft.HISFC.Models.Fee.Inpatient.FeeItemList feeItemList = new Neusoft.HISFC.Models.Fee.Inpatient.FeeItemList(); Neusoft.HISFC.Models.Terminal.TerminalApply terminalApply = apply.Clone(); feeItemList.Item = terminalApply.Item.Item.Clone(); feeItemList.Item.PriceUnit = terminalApply.Item.Item.PriceUnit;//计价单位 if (terminalApply.Item.Order.DoctorDept.ID == null || terminalApply.Item.Order.DoctorDept.ID == "") { feeItemList.RecipeOper.Dept = employee.Dept; } else { feeItemList.RecipeOper.Dept = terminalApply.Item.Order.DoctorDept; } if (terminalApply.Item.Order.Doctor.ID == null || terminalApply.Item.Order.Doctor.ID == "") { feeItemList.RecipeOper.ID = employee.ID; feeItemList.RecipeOper.Name = employee.Name; feeItemList.ChargeOper.ID = employee.ID; feeItemList.ChargeOper.Name = employee.Name; feeItemList.ChargeOper.Dept = employee.Dept; } else { feeItemList.RecipeOper.ID = terminalApply.Item.Order.Doctor.ID; feeItemList.RecipeOper.Name = terminalApply.Item.Order.Doctor.Name; feeItemList.ChargeOper.ID = terminalApply.Item.Order.Doctor.ID; feeItemList.ChargeOper.Name = terminalApply.Item.Order.Doctor.Name; } feeItemList.ExecOper.ID = employee.ID; feeItemList.ExecOper.Name = employee.Name; feeItemList.ExecOper.Dept = employee.Dept; feeItemList.StockOper.Dept = employee.Dept;//药品的扣库存的科室 feeItemList.Item.PackQty = terminalApply.Item.Item.PackQty; feeItemList.Item.Qty = terminalApply.Item.Item.Price; feeItemList.Item.Qty = terminalApply.Item.Item.Qty; if (feeItemList.Item.PackQty == 0) { feeItemList.Item.PackQty = 1; } feeItemList.FT.TotCost = Neusoft.FrameWork.Public.String.FormatNumber((feeItemList.Item.Price * feeItemList.Item.Qty / feeItemList.Item.PackQty), 2); feeItemList.FT.OwnCost = feeItemList.FT.TotCost; feeItemList.IsBaby = patientInfo.IsBaby; feeItemList.IsEmergency = false; feeItemList.Order = new Neusoft.HISFC.Models.Order.Inpatient.Order(); feeItemList.ExecOrder.ID = terminalApply.Item.Order.ID; feeItemList.NoBackQty = 0; feeItemList.FTRate.OwnRate = 1; feeItemList.BalanceState = "0"; feeItemList.FeeOper.ID = employee.ID; feeItemList.FeeOper.Name = employee.Name; feeItemList.FeeOper.Dept = employee.Dept; feeItemList.TransType = TransTypes.Positive; #endregion if (feeMgr.QuitItem(patientInfo, feeItemList) <= 0) { MessageBox.Show("退住院费用失败" + feeMgr.Err); return; } } Neusoft.FrameWork.Management.PublicTrans.Commit(); this.neuSpreadItemDetail_SheetItemDetail.Rows.Remove(this.neuSpreadItemDetail_SheetItemDetail.ActiveRowIndex, 1); #region 修改界面上的数量 for (int i = 0; i < this.neuSpreadItem_SheetItem.RowCount; i++) { Neusoft.HISFC.Models.Terminal.TerminalApply obj = (Neusoft.HISFC.Models.Terminal.TerminalApply) this.neuSpreadItem_SheetItem.Rows[i].Tag; if (obj.Order.ID == detail.Apply.Order.ID) { int freeQty = Neusoft.FrameWork.Function.NConvert.ToInt32(detail.Apply.Item.ConfirmedQty) + Neusoft.FrameWork.Function.NConvert.ToInt32(neuSpreadItem_SheetItem.Cells[i, (int)ApplyField.FreeQty].Text); this.neuSpreadItem_SheetItem.Cells[i, (int)ApplyField.FreeQty].Text = freeQty.ToString(); break; } } #endregion MessageBox.Show("取消成功"); }
/// <summary> /// 保存 /// </summary> /// <returns></returns> private int Save() { if (this.neuSpread1_Sheet1.RowCount <= 0) { return(0); } if (this.fpSpread1_Sheet1.RowCount <= 0) { MessageBox.Show("请选择需取消的明细"); return(0); } if (MessageBox.Show("是否取消该次终端确认?\r\n 取消确认操作不可回退", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) { CancelItem();//{5C66549E-AA04-4f72-8AA8-717FF5FB5E4F} return(0); } Neusoft.FrameWork.Management.PublicTrans.BeginTransaction(); Neusoft.HISFC.BizLogic.Terminal.TerminalConfirm terMgr = new Neusoft.HISFC.BizLogic.Terminal.TerminalConfirm(); //Neusoft.FrameWork.Management.Transaction t = new Neusoft.FrameWork.Management.Transaction(this.tecManager.Connection); //t.BeginTransaction(); this.feeManager.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans); this.orderManager.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans); //terMgr.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans); #region 可以一次取消多条 by yuyun 08-8-12 {58B76F7C-A35D-4cbb-8948-8163EA3C5191} System.Collections.Hashtable hsMoExecNOList = new Hashtable(); foreach (FarPoint.Win.Spread.Row r in this.fpSpread1_Sheet1.Rows) { //Neusoft.HISFC.Models.Terminal.TerminalConfirmDetail obj = ((Neusoft.HISFC.Models.Terminal.TerminalConfirmDetail)this.fpSpread1_Sheet1.Cells[this.fpSpread1_Sheet1.ActiveRowIndex, (int)Cols.MoOrder].Tag).Clone(); Neusoft.HISFC.Models.Terminal.TerminalConfirmDetail obj = ((Neusoft.HISFC.Models.Terminal.TerminalConfirmDetail) this.fpSpread1_Sheet1.Cells[r.Index, (int)Cols.MoOrder].Tag).Clone(); obj.FreeCount = Neusoft.FrameWork.Function.NConvert.ToDecimal(this.fpSpread1_Sheet1.Cells[r.Index, (int)Cols.ConfirmQty].Value.ToString()); #region 医嘱 if (!hsMoExecNOList.ContainsKey(obj.MoOrder + obj.ExecMoOrder)) { if (!string.IsNullOrEmpty(obj.MoOrder))//如果就剩一条,就说明所有的都取消了 ???不懂 { if (terMgr.CancelInpatientConfirmMoOrder(obj) <= 0) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show("更新医嘱失败" + terMgr.Err); return(-1); } } hsMoExecNOList.Add(obj.MoOrder + obj.ExecMoOrder, null); } #endregion #region 费用 //更新可退数量 if (terMgr.CancelInpatientItemList(obj) <= 0) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show("更新费用明细失败" + terMgr.Err); return(-1); } #endregion #region 判断是否需要作废执行档,对已全部确认完的项目作废执行档,未全部确认的项目不作废 //{0A8C4027-210C-49e0-977F-576789F46946} by yuyun 08-8-13 //取医嘱执行档的数量 decimal execOrderQty = terMgr.GetExecOrderQty(obj.ExecMoOrder); if (execOrderQty == -1) { MessageBox.Show(terMgr.Err); return(-1); } //取已确认的总数量 decimal confirmedQty = terMgr.GetAlreadConfirmNum(obj.MoOrder, obj.ExecMoOrder); //MessageBox.Show(execOrderQty.ToString() + "|||||||" + confirmedQty.ToString()); //对比两个数量 判断是否需要作废执行档 if (confirmedQty == execOrderQty) { //作废执行档 if (!string.IsNullOrEmpty(obj.ExecMoOrder)) //为医嘱开立项目才进行执行档作废 { if (terMgr.CancelExecOrder(obj.ExecMoOrder) <= 0) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show("作废医嘱执行档失败" + terMgr.Err); return(-1); } } //MessageBox.Show("更新"); } #endregion #region 确认明细 if (terMgr.CancelInpatientConfirmDetail(obj) <= 0) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show("更新确认明细失败" + terMgr.Err); return(-1); } #endregion #region {5D274E04-7B3D-449c-AB72-3DAAC9414D6C} if (this.isUsePACSApplySheet) { try { if (PACSApplyInterfaceNew == null) { PACSApplyInterfaceNew = new Neusoft.HISFC.Components.PacsApply.HisInterface(Neusoft.FrameWork.Management.Connection.Operator.ID, (Neusoft.FrameWork.Management.Connection.Operator as Neusoft.HISFC.Models.Base.Employee).Dept.ID); } if (PACSApplyInterfaceNew != null) { Neusoft.HISFC.Models.Order.Inpatient.Order orderInfo = this.orderManager.QueryOneOrder(obj.MoOrder); if (orderInfo != null && orderInfo.ApplyNo != "") { if (PACSApplyInterfaceNew.DeleteApply(orderInfo.ApplyNo) < 0) { MessageBox.Show("查询电子申请单失败!"); } } } } catch { } } #endregion } #endregion Neusoft.FrameWork.Management.PublicTrans.Commit(); MessageBox.Show("取消成功"); //可以一次取消多条 by yuyun 08-8-12 {58B76F7C-A35D-4cbb-8948-8163EA3C5191} //this.fpSpread1_Sheet1.Rows.Remove(this.fpSpread1_Sheet1.ActiveRowIndex,1); this.fpSpread1_Sheet1.RowCount = 0; //--------------- #region addby xuewj 2010-10-3 增加单价、合计 {AB2D96F8-2CB3-49d2-9445-CCFDA1FFFCE7} this.lblTotCancelCost.Text = "当前待取消项目合计:0.00"; #endregion return(1); }