Example #1
0
        /// <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);
        }