Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        public ServiceResponseData OPRefund()
        {
            List <DS_OPDispHead> dispHead = new List <DS_OPDispHead>();
            DataTable            dtRefund = requestData.GetData <DataTable>(0);
            int    sendEmpID   = requestData.GetData <int>(1);
            string sendEmpName = requestData.GetData <string>(2);
            int    deptId      = requestData.GetData <int>(3);

            //判断退费消息是否存在,不存在抛出异常
            foreach (DataRow row in dtRefund.Rows)
            {
                int       reHeadID       = Convert.ToInt32(row["ReHeadID"]);
                DataTable dtRefundRecord = NewObject <OP_FeeRefundHead>().gettable("ReHeadID=" + reHeadID.ToString());
                if (dtRefundRecord == null || dtRefundRecord.Rows.Count <= 0)
                {
                    throw new Exception("该退药单已经被删除,请刷新界面重新操作!");
                }

                int recipeId = Convert.ToInt32(row["FeeItemHeadID"]);

                //判断是否存在
                if (dispHead.FindIndex(x => x.RecipeID == recipeId) >= 0)
                {
                    continue;
                }

                DS_OPDispHead modelHead = new DS_OPDispHead();
                modelHead.BillNO   = 0;
                modelHead.BusiType = DGConstant.OP_DS_OPREFUND;

                //求退费总金额
                modelHead.RetailFee      = Convert.ToDecimal(dtRefund.Compute("sum(RefundAmount)", "FeeItemHeadID=" + recipeId.ToString()));
                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     = 1;//发药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);
            }

            //获取该结算单所有明细记录
            List <DS_OPDispDetail> dispDetail = ConvertRefundDetailModel(dtRefund, deptId);
            OPDispBill             iProcess   = NewObject <OPDispBill>();
            DGBillResult           rtn        = new DGBillResult();

            try
            {
                oleDb.BeginTransaction();
                rtn = iProcess.OPRefund(dispHead, dispDetail, dtRefund);
                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);
        }