/// <summary> /// 体检划价 /// 1、形成FeeItemList:MakeFeeItemList /// 2、分配项目应收金额(PAY_COST)(收费项目在体检中心定价) /// 2.1 药品按照销售价格分配(PHA_COM_BASEINFO) /// 2.2 非药品按照剩余金额平均分配(FIN_COM_UNDRUGINFO) /// 3、分配项目实收金额(OWN_COST)(实际应该收取患者) /// 3.1 药品按照销售价格分配(PHA_COM_BASEINFO) /// 3.2 非药品按照剩余金额平均分配(FIN_COM_UNDRUGINFO) /// 4、计算项目减免/优惠金额(ECO_COST)(收费时如果有减免,那么ECO_COST=PAY_COST-OWN_COST) /// 4.1 药品没有减免金额 /// 4.2 非药品按照平均分配 /// </summary> /// <param name="checkUpRegister">体检顾客类(包括应收金额)</param> /// <param name="checkUpFeeList">FeeItemList类的ArrayList</param> /// <param name="ownCost">自付金额(实收)</param> /// <param name="shouldCost">处方应收金额</param> /// <param name="t">事务</param> /// <returns>1:成功;-1:没有处方</returns> public int CheckUpFee(ChkRegister checkUpRegister, ArrayList checkUpFeeList, Decimal ownCost, Decimal shouldCost, neusoft.neuFC.Management.Transaction t) { this.drugCost = 0; this.undrugCost = 0; this.realCost = 0; this.priceCost = 0; clinicNo = ""; undrugFunction.SetTrans(t.Trans); outPatient.SetTrans(t.Trans); int j = 0; // 形成FeeItemList // j = MakeFeeItemList(ref checkUpFeeList,checkUpRegister,t); // if (j<=0) // { // this.SetError("200001","没有用于划价的处方!"); // return -1; // } if (checkUpFeeList == null) { return(-1); } foreach (neusoft.HISFC.Object.Fee.OutPatient.FeeItemList obj in checkUpFeeList) { if (!obj.isPharmacy) { j++; undrugCost = obj.Price * obj.Amount; } else { drugCost = obj.Price * obj.Amount; } } // 计算项目总金额 priceCost = this.drugCost + this.undrugCost; // 计算非药品项目划价的实收金额 realCost = ownCost - drugCost; // 删除现有未收费的处方明细 try { this.outPatient.DeleteFeeDetail(this.clinicNo); } catch { this.SetError("200003", "删除处方明细失败!"); t.Trans.Rollback(); return(-3); } // 分配非药品费用,插入处方表 foreach (neusoft.HISFC.Object.Fee.OutPatient.FeeItemList fee in checkUpFeeList) { if (fee.isPharmacy) { } else { fee.Cost.Pay_Cost = Decimal.Round(realCost / j, 2); // 自付金额 fee.Cost.Own_Cost = fee.Cost.Pay_Cost; // 现金 fee.Cost.Dereate_Cost = 0; // 优惠金额 } this.intReturn = this.outPatient.InsertFeeDetail(fee, true); // 体检插入处方明细 if (this.intReturn <= 0) { this.Err = "插入处方表失败:" + outPatient.Err; this.SetError("200002", "插入处方表失败!"); return(-2); } } return(1); }
/// <summary> /// 形成完整FeeItemList /// </summary> /// <param name="checkUpFeeList">体检处方的ArrayList</param> /// <param name="checkUpRegister">体检顾客类</param> /// <param name="t">事务</param> /// <returns>1:成功;-1:失败</returns> private int MakeFeeItemList(ref ArrayList checkUpFeeList, ChkRegister checkUpRegister, neusoft.neuFC.Management.Transaction t) { // int i = 1; int j = 0; // string recipeNO = ""; // 处方号 // string clinicCode = ""; // 门诊号 // outPatient.SetTrans(t.Trans); // recipeNO = outPatient.GetRecipeNo(); // 取处方号 // this.clinicNo = checkUpRegister.ChkClinicNo; // // // 循环每一条处方,设置每一条处方明细 // foreach(neusoft.HISFC.Object.Fee.OutPatient.FeeItemList fee in checkUpFeeList) // { // fee.ID = fee.ID; // 项目编号 // fee.Name = fee.Name; // 项目名称 // fee.RecipeNo = recipeNO; // 处方号 // fee.SeqNo = i; // 处方内流水号 // fee.TransType = neusoft.HISFC.Object.Base.TransTypes.Positive; // 交易类型 // fee.ClinicCode = checkUpRegister.ChkClinicNo; // 门诊号 // fee.CardNo = checkUpRegister.PatientInfo.Patient.Card.ID; // 病历卡号 // fee.RegDate = checkUpRegister.CheckDate; // 挂号日期 // fee.RegDeptInfo.ID = ""; // 挂号科室编号 // fee.RegDeptInfo.Name = ""; // 挂号科室名称 // fee.DoctDeptInfo.ID = ""; // 开方医生所在科室编码 // fee.Qty = fee.Qty; // 数量 // if (fee.Qty==0) fee.Qty = 1; // fee.Days = fee.Days; // 草药付数 // fee.IsUrgent = fee.IsUrgent; // 是否加急 // fee.LabTypeInfo = fee.LabTypeInfo; // 样本类型 // fee.Cost.Pub_Cost = 0; // 可报销金额 // fee.ExeDeptInfo = fee.ExeDeptInfo; // 执行科室 // fee.CombNo = fee.CombNo; // 组合号 // fee.ChargeOperInfo = this.Operator; // 划价人信息 // fee.ChargeDate = this.GetDateTimeFromSysDateTime(); // 划价时间 // fee.PayType = neusoft.HISFC.Object.Base.PayTypes.Charged; // 收费标志 // fee.CancelType = neusoft.HISFC.Object.Base.CancelTypes.Valid; // 状态 // fee.IsConfirm = false; // 确认标志 // if (fee.isPharmacy) // 药品 // { // this.drug = this.drugFunction.GetItem(fee.ID); // fee.Name = drug.Name; // fee.Specs = drug.Specs; // 规格 // fee.IsSelfMade = drug.IsSelfMade; // 自制药标志 // fee.DrugQualityInfo = new neuObject(); // 药品性质 // fee.DoseInfo = drug.DosageForm; // 剂型 // fee.Price = drug.Price; // 价格 // fee.FreqInfo = drug.Frequency; // 频次 // fee.UsageInfo = drug.Usage; // 用法 // fee.InjectCount = fee.InjectCount; // 院注次数 // fee.MinFee = drug.MinFee; // 最小费用代码 // fee.DoseOnce = drug.OnceDose; // 每次用量 // fee.DoseUnit = drug.DoseUnit; // 每次用量单位 // fee.BaseDose = drug.BaseDose; // 基本剂量 // fee.PackQty = drug.PackQty; // 包装数量 // fee.PriceUnit = drug.PriceUnit; // 计价单位 // fee.Cost.Pay_Cost = fee.Price*fee.Qty; // 自付金额 // fee.Cost.Own_Cost = fee.Price*fee.Qty; // 现金 // fee.CenterInfo = new Object.InterfaceSi.Item(); // 医保对照信息 // fee.IsMainDrug = false; // 主药标志 // fee.Cost.Dereate_Cost = 0; // 减免金额 // drugCost = drugCost + fee.Cost.Own_Cost; // 药品总金额 // } // else // 非药品 // { // j++; // 用来计算非药品处方明细个数 // undrug = undrugFunction.GetItem(fee.ID); // fee.Name = undrug.Name; // 名称 // fee.Price = undrug.Price; // 价格 // fee.MinFee = undrug.MinFee; // 最小费用代码 // fee.CheckBody = undrug.DefaultSample; // 检体 // fee.Cost.Pay_Cost = 0; // 自付金额 // fee.Cost.Own_Cost = 0; // 现金 // fee.Cost.Dereate_Cost = 0; // 减免金额 // undrugCost = undrugCost + fee.Price*fee.Qty; // 非药品总金额 // } // i++; // } return(j); }