/// <summary> /// 结帐 /// </summary> public void m_mthCharge() { if (this.m_objViewer.ucPatientInfo.BihPatient_VO.Status == 3 && this.m_objViewer.ucPatientInfo.BihPatient_VO.FeeStatus != 4) { MessageBox.Show("该病人已办理出院结算,当前为查询状态。", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } if (m_intParm1068 != 0) { ////////结算前判断病人在门诊是否用未交费用的处方,给出提示 string strMessage = ""; clsPublic.m_lngSelectPatientNoPayRecipe(this.m_objViewer.ucPatientInfo.BihPatient_VO.RegisterID, out strMessage); if (!string.IsNullOrEmpty(strMessage)) { if (m_intParm1068 == 1) { if (MessageBox.Show("是否允许结算" + strMessage, "病人门诊费用未清!", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { return; } } else if (m_intParm1068 == 2) { MessageBox.Show("不允许结算" + strMessage, "病人门诊费用未清!", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } } ////////////////// } if (ChargeDtSelect == null || ChargeDtSelect.Rows.Count == 0) { if (MessageBox.Show("该病人在住院期间没有发生任何费用,是否直接办理出院?", "系统提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes) { frmReckoning f = new frmReckoning(this.m_objViewer.InvoNo); if (this.m_objViewer.ucPatientInfo.BihPatient_VO.FeeStatus == 4) { f.ChargeType = 6; } else { f.ChargeType = 2; } f.ChargeDetail = null; f.objPatient = this.m_objViewer.ucPatientInfo; f.DayChrgType = 0; f.DayAccountsArr = null; f.DirectChargeOut = true; if (f.ShowDialog() == DialogResult.OK) { this.m_objViewer.ucPatientInfo.m_mthShortCurFind(); } } return; } #region 获取帐期信息 //结算类型 1 帐期 2 明细 int DayChrgType = 1; Hashtable has = new Hashtable(); for (int i = 0; i < ChargeDtSelect.Rows.Count; i++) { string dayid = ChargeDtSelect.Rows[i]["dayaccountid_chr"].ToString(); if (!has.ContainsKey(dayid)) { has.Add(dayid, null); } } ArrayList DayaccountsNoArr = new ArrayList(); DayaccountsNoArr.AddRange(has.Keys); DataView dvDayAll = new DataView(ChargeDt); DataView dvDaySub = new DataView(ChargeDtSelect); ArrayList DayAccountsArr = new ArrayList(); for (int i = 0; i < DayaccountsNoArr.Count; i++) { string dayid = DayaccountsNoArr[i].ToString(); clsBihDayAccounts_VO DayAccounts_VO = new clsBihDayAccounts_VO(); DayAccounts_VO.AccountsID = dayid; DayAccounts_VO.ChargeEmp = this.m_objViewer.LoginInfo.m_strEmpID; dvDayAll.RowFilter = "dayaccountid_chr = '" + dayid + "'"; dvDaySub.RowFilter = "dayaccountid_chr = '" + dayid + "'"; decimal decTotalSum = 0; decimal decSbSum = 0; decimal decAcctSum = 0; foreach (DataRowView drv in dvDayAll) { decimal d = clsPublic.ConvertObjToDecimal(drv["unitprice_dec"]) * clsPublic.ConvertObjToDecimal(drv["amount_dec"]); decTotalSum += clsPublic.Round(d, 2); decSbSum += clsPublic.Round(d * clsPublic.ConvertObjToDecimal(drv["precent_dec"]) / 100, 2); } decAcctSum = decTotalSum - decSbSum; DayAccounts_VO.TotalSum = decTotalSum; DayAccounts_VO.SbSum = decSbSum; DayAccounts_VO.AcctSum = decAcctSum; decTotalSum = 0; decSbSum = 0; decAcctSum = 0; foreach (DataRowView drv in dvDaySub) { decimal d = clsPublic.ConvertObjToDecimal(drv["unitprice_dec"]) * clsPublic.ConvertObjToDecimal(drv["amount_dec"]); decTotalSum += clsPublic.Round(d, 2); decSbSum += clsPublic.Round(d * clsPublic.ConvertObjToDecimal(drv["precent_dec"]) / 100, 2); } decAcctSum = decTotalSum - decSbSum; DayAccounts_VO.ClearSbSum = decSbSum; DayAccounts_VO.ClearAcctSum = decAcctSum; DayAccountsArr.Add(DayAccounts_VO); } #endregion //只能结算待结、待清费用 DataView dv = new DataView(ChargeDt); dv.RowFilter = "pstatus_int = 1 or pstatus_int = 2"; DataTable dt = ChargeDt.Clone(); foreach (DataRowView drv in dv) { dt.Rows.Add(drv.Row.ItemArray); } dt.AcceptChanges(); frmReckoning frec = new frmReckoning(this.m_objViewer.InvoNo); if (this.m_objViewer.ucPatientInfo.BihPatient_VO.FeeStatus == 4) { frec.ChargeType = 6; } else { frec.ChargeType = 2; } frec.ChargeDetail = dt; frec.objPatient = this.m_objViewer.ucPatientInfo; frec.DayChrgType = DayChrgType; frec.DayAccountsArr = DayAccountsArr; if (frec.ShowDialog() == DialogResult.OK) { this.m_objViewer.ucPatientInfo.m_mthShortCurFind(); } }
/// <summary> /// 结帐 /// </summary> public void m_mthCharge() { if (ChargeDtSelect == null || ChargeDtSelect.Rows.Count == 0) { MessageBox.Show("请选择结帐项目。", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } #region 获取帐期信息 //结算类型 1 帐期 2 明细 int DayChrgType = 0; ArrayList DayaccountsNoArr = new ArrayList(); if (this.m_objViewer.rdoZq.Checked) { DayChrgType = 1; for (int i = 0; i < this.m_objViewer.dtgMain.Rows.Count; i++) { if (this.m_objViewer.dtgMain.Rows[i].Cells[0].Value.ToString().ToUpper() == "T") { DataRow dr = (DataRow)this.m_objViewer.dtgMain.Rows[i].Tag; DayaccountsNoArr.Add(dr["dayaccountid_chr"].ToString()); } } } else if (this.m_objViewer.rdoMx.Checked) { DayChrgType = 2; //全选明细等同于按帐期结帐 bool b = true; for (int i = 0; i < this.m_objViewer.dtgDetail.Rows.Count; i++) { if (this.m_objViewer.dtgDetail.Rows[i].Cells[0].ReadOnly == true) { continue; } if (this.m_objViewer.dtgDetail.Rows[i].Cells[0].Value.ToString().ToUpper() == "F") { b = false; break; } } if (b) { DayChrgType = 1; } for (int i = 0; i < this.m_objViewer.dtgMain.Rows.Count; i++) { if (this.m_objViewer.dtgMain.Rows[i].Selected) { DataRow dr = (DataRow)this.m_objViewer.dtgMain.Rows[i].Tag; DayaccountsNoArr.Add(dr["dayaccountid_chr"].ToString()); } } } else if (this.m_objViewer.rdoMix.Checked) { DayChrgType = 2; string id = ""; Hashtable hasID = new Hashtable(); for (int i = 0; i < this.ChargeDtSelect.Rows.Count; i++) { id = this.ChargeDtSelect.Rows[i]["dayaccountid_chr"].ToString(); if (!hasID.ContainsKey(id)) { hasID.Add(id, id); } } if (hasID.Count > 0) { DayaccountsNoArr.AddRange(hasID.Values); } } DataView dvDayAll = new DataView(ChargeDt); DataView dvDaySub = new DataView(ChargeDtSelect); ArrayList DayAccountsArr = new ArrayList(); for (int i = 0; i < DayaccountsNoArr.Count; i++) { string dayid = DayaccountsNoArr[i].ToString(); clsBihDayAccounts_VO DayAccounts_VO = new clsBihDayAccounts_VO(); DayAccounts_VO.AccountsID = dayid; DayAccounts_VO.ChargeEmp = this.m_objViewer.LoginInfo.m_strEmpID; dvDayAll.RowFilter = "dayaccountid_chr = '" + dayid + "'"; dvDaySub.RowFilter = "dayaccountid_chr = '" + dayid + "' and pstatus_int = 2"; decimal decTotalSum = 0; decimal decSbSum = 0; decimal decAcctSum = 0; foreach (DataRowView drv in dvDayAll) { decimal d = clsPublic.ConvertObjToDecimal(drv["unitprice_dec"]) * clsPublic.ConvertObjToDecimal(drv["amount_dec"]); decTotalSum += clsPublic.Round(d, 2); decSbSum += clsPublic.Round(d * clsPublic.ConvertObjToDecimal(drv["precent_dec"]) / 100, 2); } decAcctSum = decTotalSum - decSbSum; DayAccounts_VO.TotalSum = decTotalSum; DayAccounts_VO.SbSum = decSbSum; DayAccounts_VO.AcctSum = decAcctSum; decTotalSum = 0; decSbSum = 0; decAcctSum = 0; foreach (DataRowView drv in dvDaySub) { decimal d = clsPublic.ConvertObjToDecimal(drv["unitprice_dec"]) * clsPublic.ConvertObjToDecimal(drv["amount_dec"]); decTotalSum += clsPublic.Round(d, 2); decSbSum += clsPublic.Round(d * clsPublic.ConvertObjToDecimal(drv["precent_dec"]) / 100, 2); } decAcctSum = decTotalSum - decSbSum; DayAccounts_VO.ClearSbSum = decSbSum; DayAccounts_VO.ClearAcctSum = decAcctSum; DayAccountsArr.Add(DayAccounts_VO); } #endregion frmReckoning frec = new frmReckoning(); frec.ChargeType = 1; frec.ChargeDetail = ChargeDtSelect; frec.objPatient = this.m_objViewer.ucPatientInfo; frec.DayChrgType = DayChrgType; frec.DayAccountsArr = DayAccountsArr; if (frec.ShowDialog() == DialogResult.OK) { this.m_objViewer.ucPatientInfo.m_mthShortCurFind(); } }
/// <summary> /// 结帐处理:将待结转为待清,同时生成一笔期帐.(含补滚费) /// </summary> public void m_mthCharge() { if (!this.m_blnBatchCharge(false)) { return; } if (this.dtSource.Rows.Count == 0) { MessageBox.Show("该病人没有待结费用。", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } else { if (MessageBox.Show("结帐收费项目前请再次确认? [是]-确认 [否]-取消", "系统提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.No) { return; } } frmDayReckoningRemark fremark = new frmDayReckoningRemark(); fremark.Text = "结帐备注"; DialogResult dg = fremark.ShowDialog(); if (dg == DialogResult.Yes || dg == DialogResult.OK) { clsBihDayAccounts_VO DayAccounts_VO = new clsBihDayAccounts_VO(); DayAccounts_VO.RegisterID = this.m_objViewer.ucPatientInfo.RegisterID; DayAccounts_VO.PatientID = this.m_objViewer.ucPatientInfo.BihPatient_VO.PatientID; DayAccounts_VO.AreaID = this.m_objViewer.ucPatientInfo.BihPatient_VO.AreaID; DayAccounts_VO.Note = fremark.RemarkInfo; DayAccounts_VO.CurrAreaID = this.m_objViewer.ucPatientInfo.BihPatient_VO.AreaID; DayAccounts_VO.OperID = this.m_objViewer.LoginInfo.m_strEmpID; DayAccounts_VO.Type = "1"; //计算总金额、自付金额和记帐金额 decimal decTotalSum = 0; decimal decSbSum = 0; decimal decAcctSum = 0; for (int i = 0; i < dtSource.Rows.Count; i++) { decimal d = clsPublic.ConvertObjToDecimal(dtSource.Rows[i]["unitprice_dec"]) * clsPublic.ConvertObjToDecimal(dtSource.Rows[i]["amount_dec"]); decTotalSum += clsPublic.Round(d, 2); decSbSum += clsPublic.Round(d * clsPublic.ConvertObjToDecimal(dtSource.Rows[i]["precent_dec"]) / 100, 2); } DayAccounts_VO.TotalSum = decTotalSum; DayAccounts_VO.SbSum = decSbSum; DayAccounts_VO.AcctSum = decAcctSum; long l = this.objSvc.m_lngBuildDayAccounts(DayAccounts_VO, this.m_objViewer.LoginInfo.m_strEmpID, int.Parse(this.m_objViewer.ChargeType)); if (l > 0) { //出院结帐立即腾出床位 if (this.m_objViewer.ChargeType == "1") { this.objSvc.m_lngClearBed(this.m_objViewer.ucPatientInfo.RegisterID); this.objSvc.m_lngUpdatePatientChargeCheckStatus(this.m_objViewer.ucPatientInfo.RegisterID, "3"); } MessageBox.Show("结帐成功!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); this.m_objViewer.ucPatientInfo.m_mthShortCurFind(); } } }