实现挂号收费的收费录入功能的代码(九)
2015-06-02 19:53
288 查看
实现挂号收费的收费录入功能的代码(九)
3.2.5收费录入
3.2.5.1收费录入主界面
收费录入这个模块可以实现对处方单进行收费的功能,他可以根据病人是否为会员来收费。如果病人是会员,则可以根据该病人所属会员类型进行自动打折,并进行会员卡积分。消费一元人民币就可以积分0.01分。同时还可以根据是否有医保进行医保结账,就是如果该病人有医保,就可以该医保进行医保结账一部分。病人还可以进行多种方式的结账如现金、卡付或记账。他还可以查询所有的已收费的处方信息等功能。界面效果图:
[align=left] [/align]
3.2.5.1(图1)
从界面上可以看到我们这里用到的控件有:
控件名称 | 说明 |
组装箱控件groupBox | 第一要设置每个控件的Text,第二设置控件Name;不同的是dataGridView右键进行编辑列。 |
标签控件lable | |
文本框控件textBox | |
下拉框控件comboBox | |
时间控件dateTimePicker | |
按钮控件button | |
嵌板控件panel | |
表格控件dataGridView |
第一步:数据库
1、 表与关系
[align=left] [/align]
3.2.5.1(图2)
表1:处方单表(PW_OrdonnanceTable)
列名 | 数据类型 | 主键/外键 | 说明 |
OrdonnanceID | int - Identity | 主键 | 处方单ID |
OrdonnanceNumber | nchar (30) | 处方单号 | |
PatientID | int | 外键 | 病人ID |
PrescriptionDate | datetime | 处方时间 | |
ClinicTechnicalOffices_TechnicalOfficesID | int | 外键 | 就诊科室_科室ID |
TreatmentDoctor_StaffID | int | 外键 | 就诊医生_员工ID |
AS_ChargeStatusID | int | 外键 | 收费状态ID |
ChargeForPersonnel_StaffID | int | 外键 | 收费人员_员工ID |
ChargeTime | datetime | 收费时间 | |
AS_TakeMedicineStatusID | int | 外键 | 发药状态ID |
TakeMedicinePersonnel_StaffID | int | 外键 | 发药人员_员工ID |
TakeMedicineTime | datetime | 发药时间 | |
BedID | int | 外键 | 床位ID |
OutpatientMedicalRecordsTemplateID | int | 外键 | 门诊病历模板ID |
WhetherEffective | bit | ((1)) | 有效否 |
列名 | 数据类型 | 主键/外键 | 说明 |
BedID | int - Identity | 主键 | 床位ID |
BedNumber | nchar (50) | 床位编号 | |
BedName | nchar (50) | 床位名称 | |
AlphabeticBrevityCode | nchar (30) | 拼音简码 | |
WubiInCode | nchar (30) | 五笔简码 | |
TechnicalOfficesID | int | 外键 | 科室ID |
AS_BedRankID | int | 外键 | 床位级别ID |
WhetherEffective | bit | ((1)) | 有效否 |
NormalSum | decimal (18, 2) | 标准金额 | |
BedRemarks | nchar (150) | 床位备注 |
列名 | 数据类型 | 主键/外键 | 说明 |
PatientID | int - Identity | 主键 | 病人ID |
PatientCardNumber | nchar (50) | 病人卡号 | |
PatientName | nchar (30) | 病人名称 | |
AS_SexID | int | 外键 | 性别ID |
Birthday | datetime | 出生年月 | |
IDCardNo | nchar (50) | 身份证号 | |
AS_MaritalStatusID | int | 外键 | 婚姻情况ID |
Profession | nchar (50) | 所在职业 | |
MemberTypeID | int | 外键 | 会员类型ID |
MedicareCardNumber | nchar (50) | 医保卡号 | |
AS_InsuredTypeID | int | 外键 | 参保类型ID |
ContactTelephone | nchar (30) | 联系电话 | |
ContactAddress | nchar (100) | 联系地址 | |
DrugAllergyHistory | nchar (100) | 药物过敏史 | |
PatientCategoryID | int | 外键 | 病人类别ID |
Age | nchar (30) | 年龄 | |
AlphabeticBrevityCode | nchar (20) | 拼音简码 | |
WubiInCode | nchar (20) | 五笔简码 | |
ContactMobilePhone | nchar (30) | 联系手机 | |
Email | nchar (30) | 电子邮件 | |
Introducer | nchar (30) | 介绍人员 | |
PersonalTaboo | nchar (70) | 个人忌讳 | |
HighestReputation | nchar (70) | 信誉上限 | |
NowIntegral | nchar (50) | 当前积分 | |
Debt | decimal (18, 2) | 尚欠金额 | |
ExpenseSum | decimal (18, 2) | 消费金额 | |
LastTime | datetime | 上次时间 | |
LastDoctor_StaffID | int | 外键 | 上次医生 |
Prescriptions | nchar (50) | 总处方数 | |
PatientPhotos | char (200) | 病人照片 | |
WhetherEffective | bit | 有效否 | |
WhetherMember | bit | 会员否 |
列名 | 数据类型 | 主键/外键 | 说明 |
StaffID | int - Identity | 主键 | 员工ID |
TechnicalOfficesID | int | 外键 | 科室ID |
StaffNumber | nchar (20) | 员工编号 | |
StaffName | nchar (20) | 员工名称 | |
WhetherOperator | bit | 操作员否 | |
AlphabeticBrevityCode | nchar (20) | 拼音简码 | |
WubiInCode | nchar (20) | 五笔简码 | |
AS_StaffPositionID | int | 外键 | 员工职务ID |
AS_MedicalTitlesID | int | 外键 | 医务职称ID |
AS_WorkingStatusID | int | 外键 | 工作状态ID |
AS_SexID | int | 外键 | 性别ID |
ContactTelephone | nchar (50) | 联系电话 | |
WhetherBuiltIn | bit | 内置否 | |
RegisteredSum | decimal (18, 2) | 挂号金额 | |
AS_IntoTheHobbyID | int | 外键 | 录入爱好ID |
StaffPhotos | char (200) | 员工照片 | |
Email | nchar (70) | 电子邮件 | |
IDCardNo | nchar (100) | 身份证号 | |
ContactAddress | nchar (100) | 联系地址 | |
Birthday | datetime | 出生日期 | |
WhetherBirthdayRemind | bit | 生日提醒否 | |
WorkDate | datetime | 工作日期 | |
TerminationDate | datetime | 离职日期 | |
AS_OfficialAcademicCredentialsID | int | 外键 | 最高学历ID |
StudySubject | nchar (70) | 学习专业 | |
AS_PoliticsStatusID | int | 外键 | 政治面貌ID |
Remarks | nchar (100) | 员工备注 | |
WhetherEffective | bit | 有效否 |
列名 | 数据类型 | 主键/外键 | 说明 |
RegisterCategoryID | int - Identity | 主键 | 挂号类别ID |
RegisterCategoryNumber | nchar (50) | 挂号类别编号 | |
RegisterCategoryName | nchar (100) | 挂号类别名称 | |
RegisterNormalSum | decimal (18, 2) | 挂号标准金额 | |
Remarks | nchar (200) | 备注 | |
WhetherEffective | bit | 有效否 |
列名 | 数据类型 | 主键/外键 | 说明 |
PatientCategoryID | int - Identity | 主键 | 病人类别 ID |
CategoryNumber | nchar (20) | 类别编号 | |
CategoryName | nchar (30) | 类别名称 | |
CategoryDiscount | decimal (18, 2) | 类别折扣 | |
WhetherEffective | bit | 有效否 | |
CategoryRemarks | nchar (100) | 类别备注 |
列名 | 数据类型 | 主键/外键 | 说明 |
TechnicalOfficesID | int - Identity | 主键 | 科室ID |
DepartmentID | int | 外键 | 部门ID |
TechnicalOfficesNumber | nchar (20) | 科室编号 | |
TechnicalOfficesName | nchar (20) | 科室名称 | |
RegisterSum | decimal (18, 2) | 挂号金额 | |
WhetherAllowRegister | bit | 允许挂号否 | |
AlphabeticBrevityCode | nchar (20) | 拼音简码 | |
WubiInCode | nchar (20) | 五笔简码 | |
TechnicalOfficesLocation | nchar (100) | 科室位置 | |
Remarks | nchar (200) | 备注 | |
WhetherEffective | bit | 有效否 |
列名 | 数据类型 | 主键/外键 | 说明 |
AttributeDetailsID | int - Identity | 主键 | 属性明细ID |
AttributeDetailsID_F | int | 外键 | 属性明细ID_父 |
AttributeSetID | int | 外键 | 属性集合ID |
AttributeDetailsName | nchar (30) | 属性明细名称 | |
Number | nchar (30) | 编号 | |
RetrievalInCode | nchar (30) | 检索简码 | |
BuiltInIdentifiers | bit | 内置标识 | |
Remarks | nchar (100) | 备注 | |
WhetherEffective | bit | 有效否 |
1、把处方单药品和辅助检查项目一共六张表用一张表查询出来(注意六张表的字段的个数、排序和名称必须一致)
(1)、数据库存储过程:
IF(@Type='cboOrdonnanceNumber_SelectedIndexChanged_SelectOrdonnanceDetail') --查询药品 BEGIN SELECTLTRIM(RTRIM(PW_OrdonnanceDetailTable.TotalDrug))ASTotalDrug, LTRIM(RTRIM(BT_DrugTable.DrugSpecification))ASDrugSpecification, LTRIM(RTRIM(1))ASIssueMedicineUnit,--用药单位 LTRIM(RTRIM(BT_DrugTable.WhetherMedicare))ASWhetherMedicare, LTRIM(RTRIM(BT_DrugPriceTable.MedicarePrice))ASMedicarePrice, LTRIM(RTRIM(PW_OrdonnanceDetailTable.DrugID))ASAllItemID, LTRIM(RTRIM(PW_OrdonnanceDetailTable.OrdonnanceDetailEncoding))ASAllICoding, LTRIM(RTRIM(BT_DrugTable.DrugName))ASAllIName, isnull(BT_DrugPriceTable.ScatteredPrice, 0)ASAllIPrice FROMBT_DrugPriceTableRIGHTOUTERJOIN BT_DrugTableONBT_DrugPriceTable.DrugID=BT_DrugTable.DrugIDRIGHTOUTERJOIN PW_OrdonnanceDetailTableONBT_DrugTable.DrugID=PW_OrdonnanceDetailTable.DrugID WHEREPW_OrdonnanceDetailTable.OrdonnanceID=@OrdonnanceID union --查询辅助检查项目(体检项目) SELECT LTRIM(RTRIM(1))ASTotalDrug, LTRIM(RTRIM(0))ASDrugSpecification, LTRIM(RTRIM(0))ASIssueMedicineUnit, LTRIM(RTRIM(0))ASWhetherMedicare, LTRIM(RTRIM(0))ASMedicarePrice, LTRIM(RTRIM(PW_AuxiliaryItemDetailTable.AllItemID))ASAllItemID, LTRIM(RTRIM(BT_ItemTable.ItemCoding))ASAllICoding, LTRIM(RTRIM(BT_ItemTable.ItemName))ASAllIName, isnull(BT_ItemTable.ProjectPrice,0)ASAllIPrice FROMPW_AuxiliaryItemDetailTableINNERJOIN BT_ItemTableONPW_AuxiliaryItemDetailTable.AllItemID=BT_ItemTable.ItemID WHEREPW_AuxiliaryItemDetailTable.OrdonnanceID=@OrdonnanceIDANDPW_AuxiliaryItemDetailTable.ItemCategoryID=1 union --化验项目 SELECT LTRIM(RTRIM(1))ASTotalDrug, LTRIM(RTRIM(0))ASDrugSpecification, LTRIM(RTRIM(0))ASIssueMedicineUnit, LTRIM(RTRIM(0))ASWhetherMedicare, LTRIM(RTRIM(0))ASMedicarePrice, LTRIM(RTRIM(PW_AuxiliaryItemDetailTable.AllItemID))ASAllItemID, LTRIM(RTRIM(BT_AssayItemsTable.AssayItemsNumber))ASAllICoding, LTRIM(RTRIM(BT_AssayItemsTable.ChineseName))ASAllIName, isnull(BT_AssayItemsTable.AssayItemsPrice,0)ASAllIPrice FROMPW_AuxiliaryItemDetailTableINNERJOIN BT_AssayItemsTableONPW_AuxiliaryItemDetailTable.AllItemID=BT_AssayItemsTable.AssayItemsID WHEREPW_AuxiliaryItemDetailTable.OrdonnanceID=@OrdonnanceIDANDPW_AuxiliaryItemDetailTable.ItemCategoryID=2 --治疗项目 union SELECTLTRIM(RTRIM(BT_TreatmentItemsTable.TotalInvestment))ASTotalDrug, LTRIM(RTRIM(0))ASDrugSpecification, LTRIM(RTRIM(0))ASIssueMedicineUnit, LTRIM(RTRIM(BT_TreatmentItemsTable.WhetherMedicare))ASWhetherMedicare, LTRIM(RTRIM(BT_TreatmentItemsTable.MedicarePricing))ASMedicarePrice, LTRIM(RTRIM(PW_AuxiliaryItemDetailTable.AllItemID))ASAllItemID, LTRIM(RTRIM(BT_TreatmentItemsTable.ItemNumber))ASAllICoding, LTRIM(RTRIM(BT_TreatmentItemsTable.TreatmentItemName))ASAllIName, LTRIM(RTRIM(BT_TreatmentItemsTable.GeneralPricing))ASAllIPrice FROMPW_AuxiliaryItemDetailTableLEFTOUTERJOIN BT_TreatmentItemsTableONPW_AuxiliaryItemDetailTable.AllItemID=BT_TreatmentItemsTable.TreatmentItemID WHEREPW_AuxiliaryItemDetailTable.OrdonnanceID=@OrdonnanceIDANDPW_AuxiliaryItemDetailTable.ItemCategoryID=3 --体检套餐 union SELECT LTRIM(RTRIM(1))ASTotalDrug, LTRIM(RTRIM(0))ASDrugSpecification, LTRIM(RTRIM(0))ASIssueMedicineUnit, LTRIM(RTRIM(0))ASWhetherMedicare, LTRIM(RTRIM(0))ASMedicarePrice, LTRIM(RTRIM(PW_AuxiliaryItemDetailTable.AllItemID))ASAllItemID, LTRIM(RTRIM(BT_PhysicalExaminationSetMealTable.SetMealNumber))ASAllICoding, LTRIM(RTRIM(BT_PhysicalExaminationSetMealTable.PhysicalExaminationSetMealName))ASAllIName, isnull(BT_PhysicalExaminationSetMealTable.CashPrice,0)ASAllIPrice FROMPW_AuxiliaryItemDetailTableINNERJOIN BT_PhysicalExaminationSetMealTableONPW_AuxiliaryItemDetailTable.AllItemID= BT_PhysicalExaminationSetMealTable.PhysicalExaminationSetMealID WHEREPW_AuxiliaryItemDetailTable.OrdonnanceID=@OrdonnanceIDANDPW_AuxiliaryItemDetailTable.ItemCategoryID=4 --化验组合 union SELECT LTRIM(RTRIM(1))ASTotalDrug, LTRIM(RTRIM(0))ASDrugSpecification, LTRIM(RTRIM(0))ASIssueMedicineUnit, LTRIM(RTRIM(0))ASWhetherMedicare, LTRIM(RTRIM(0))ASMedicarePrice, LTRIM(RTRIM(PW_AuxiliaryItemDetailTable.AllItemID))ASAllItemID, LTRIM(RTRIM(BT_AssayInspectCombinationTable.CombinationNumber))ASAllICoding, LTRIM(RTRIM(BT_AssayInspectCombinationTable.CombinationName))ASAllIName, isnull(BT_AssayInspectCombinationTable.Price,0)ASAllIPrice FROMPW_AuxiliaryItemDetailTableINNERJOIN BT_AssayInspectCombinationTableONPW_AuxiliaryItemDetailTable.AllItemID=BT_AssayInspectCombinationTable.AssayInspectCombinationID WHEREPW_AuxiliaryItemDetailTable.OrdonnanceID=@OrdonnanceIDANDPW_AuxiliaryItemDetailTable.ItemCategoryID=5 END
存储过程截图:
[align=left] [/align]
3.2.5.1(图3)
[b](2)、逻辑层代码:[/b]
[OperationContract] #region 查询处方明细 publicDataSet cboOrdonnanceNumber_SelectedIndexChanged_SelectOrdonnanceDetail(int intOrdonnanceID) { SqlParameter[] SQLCMDpas ={ newSqlParameter ("@Type",SqlDbType.Char), newSqlParameter ("@OrdonnanceID",SqlDbType.Int), }; SQLCMDpas[0].Value = "cboOrdonnanceNumber_SelectedIndexChanged_SelectOrdonnanceDetail"; SQLCMDpas[1].Value = intOrdonnanceID; DataTable myDataTable = myDALMethod.QueryDataTable("GuaHaoShouFei_FRM_ShouFeiLuRu", SQLCMDpas); DataSet myDataSet = newDataSet(); myDataSet.Tables.Add(myDataTable); return myDataSet; } #endregion
(3)、界面层代码:
#region 查询处方明细 DataTable dtOrdonnanceDetail = myFRM_ShouFeiLuRuClient.cboOrdonnanceNumber_SelectedIndexChanged_SelectOrdonnanceDetail(Convert.ToInt32(cboOrdonnanceNumber.SelectedValue)).Tables[0]; //根据处方单号查询处方单。 dgvOrdonnanceDetail.DataSource = dtOrdonnanceDetail;//获取dgvOrdonnanceDetail处方明细信息。 dgvOrdonnanceDetail.ClearSelection();//清空dgvOrdonnanceDetail默认选项。 for (int i = 0; i < dgvOrdonnanceDetail.Rows.Count;) //循环dgvOrdonnanceDetail的行总数 { if (dgvOrdonnanceDetail.Rows[i].Cells["TotalDrug"].Value.ToString () !=""&& dgvOrdonnanceDetail.Rows[i].Cells["AllPrice"].Value.ToString ()!="") //如果dgvOrdonnanceDetail的用药总量和单价不为空时。 { dgvOrdonnanceDetail.Rows[i].Cells["PRICE"].Value = Convert.ToInt32(dgvOrdonnanceDetail.Rows[i].Cells["TotalDrug"].Value) * Convert.ToDecimal(dgvOrdonnanceDetail.Rows[i].Cells["AllIPrice"].Value); // dgvOrdonnanceDetail的总金额=用药总量*单价 } else { if (dgvOrdonnanceDetail.Rows[i].Cells["AllIPrice"].Value != null) //如果金额的值不为空,而用药总量没有(一般是一些检查项目) { dgvOrdonnanceDetail.Rows[i].Cells["PRICE"].Value = Convert.ToInt32(1) * Convert.ToDecimal(dgvOrdonnanceDetail.Rows[i].Cells["AllIPrice"].Value); // dgvOrdonnanceDetail的总金额=1(一般一个项目值检查一次这里默认为一)*单价 } else {//如果金额的值为空,而用药总量没有(一般是一些检查项目) dgvOrdonnanceDetail.Rows[i].Cells["PRICE"].Value = "0";//总金额为零 } } i = i + 1; } if (txtDiscount.Text != "")//折扣的文本框不为空 { decimal Sum = 0; //声明一个小数型变量,并附初次值为0 decimal Sum1 = 0; //声明一个小数变量,并附初次值为0 decimal Sum2 = 0; //声明一个小数变量,并附初次值为0 decimal decMedicarePayMoney = 0;//医保金额? for (int i = 0; i < dgvOrdonnanceDetail.Rows.Count; i++) { if (dgvOrdonnanceDetail.Rows[i].Cells["TotalDrug"].Value.ToString() != ""&& dgvOrdonnanceDetail.Rows[i].Cells["MedicarePrice"].Value.ToString() != "") //用药总量和医保金额不为空时。 { Sum1 += Convert.ToInt32(dgvOrdonnanceDetail.Rows[i].Cells["PRICE"].Value); //总金额1=金额之和 decMedicarePayMoney += Convert.ToDecimal(dgvOrdonnanceDetail.Rows[i].Cells["TotalDrug"].Value) * Convert.ToDecimal(dgvOrdonnanceDetail.Rows[i].Cells["MedicarePrice"].Value); //医保金额=用药总量*医保金额 } else { Sum2 += Convert.ToInt32(dgvOrdonnanceDetail.Rows[i].Cells["PRICE"].Value); //总金额2=金额之和 } Sum = Sum1 + Sum2; //总金额=金额1+总金额2 } txtMustCharge.Text = (Sum * decMedicarePayMoney).ToString(); //应付金额 txtMedicarePayMoney.Text = decMedicarePayMoney.ToString();//医保馈金额 txtMedicare.Text = decMedicarePayMoney.ToString();//医保馈金额 //现金 txtReceive.Text = (Convert.ToDecimal(txtMoney.Text) + Convert.ToDecimal(txtMedicare.Text) + Convert.ToDecimal(txtCarComeDownWith.Text)).ToString();//收到金额 lblNow.Text = Convert.ToDecimal(Sum * Convert.ToDecimal(0.01)).ToString().Trim (); //本单积分 } else { txtDiscount_TextChanged(null,null); } #endregion
2、收费单收费数据处理
(1)、界面层代码:
#region 限制文本框只能输入数字 privatevoid txtMoney_KeyPress(object sender, KeyPressEventArgs e) { PublicStaticMothd.XianZhiShuRuShuZi(sender, e);//现金 } privatevoid txtCarComeDownWith_KeyPress(object sender, KeyPressEventArgs e) { PublicStaticMothd.XianZhiShuRuShuZi(sender, e);//卡付 } privatevoid txtTally_KeyPress(object sender, KeyPressEventArgs e) { PublicStaticMothd.XianZhiShuRuShuZi(sender, e);//记账 } #endregion #region txtDiscount_TextChanged事件,当文本框值改变是发生。 privatevoid txtDiscount_TextChanged(object sender, EventArgs e) { decimal AllSum = 0; decimal AllSum1 = 0; decimal AllSum2 = 0; decimal decMedicarePayMoney = 0;//医保金额? for (int i = 0; i < dgvOrdonnanceDetail.Rows.Count; i++) { if (dgvOrdonnanceDetail.Rows[i].Cells["TotalDrug"].Value.ToString() != ""&& dgvOrdonnanceDetail.Rows[i].Cells["MedicarePrice"].Value.ToString() != "")//用药总量和医保金额不为空 { AllSum1 += Convert.ToInt32(dgvOrdonnanceDetail.Rows[i].Cells["PRICE"].Value); //总金额 decMedicarePayMoney += Convert.ToDecimal(dgvOrdonnanceDetail.Rows[i].Cells["TotalDrug"].Value) * Convert.ToDecimal(dgvOrdonnanceDetail.Rows[i].Cells["MedicarePrice"].Value); //医保总金额=用药总量*医保金额 } else { AllSum2 += Convert.ToInt32(dgvOrdonnanceDetail.Rows[i].Cells["PRICE"].Value); //总金额 } AllSum = AllSum1 + AllSum2; //最终总金额=总金额1+总金额2 } #region 价格处理 int Discount = 0; try { Discount = Convert.ToInt32(txtDiscount.Text); decimal decDiscount = Convert.ToDecimal(Discount) * Convert.ToDecimal(0.01); txtLastDiscountPay.Text = AllSum.ToString().Trim();//折前应收 txtNextDiscountPay.Text = (AllSum * decDiscount).ToString();//折后收=最终总金额*折扣 txtMedicarePayMoney.Text = decMedicarePayMoney.ToString();//医保金额 txtMedicare.Text = decMedicarePayMoney.ToString();//医保 txtPrivilege.Text = (AllSum - (AllSum * decDiscount)).ToString();//最终总金额-(优惠最终总金额*折扣 ) txtMustCharge.Text = (AllSum * decDiscount).ToString(); //应付金额=最终总金额*折扣=折后收 } catch(Exception ex) { } #endregion } #endregion #region 卡付TextChanged事件 privatevoid txtCarComeDownWith_TextChanged(object sender, EventArgs e) { try { txtReceive.Text = (Convert.ToDecimal(txtMoney.Text) + Convert.ToDecimal(txtMedicare.Text) + Convert.ToDecimal(txtCarComeDownWith.Text)).ToString();//受到金额=现金+医保+卡付 if ( Convert.ToDecimal(txtReceive.Text)-Convert.ToDecimal( txtMustCharge.Text ) >0)//收到-应收〉0表示应找 { txtChange.Text = (Convert.ToDecimal(txtReceive.Text) - Convert.ToDecimal(txtMustCharge.Text)).ToString();//找零=收到-应收 } else { lblChange.Text = "欠费:"; lblChange.ForeColor = Color.Tomato; //颜色为红色 txtChange.Text = ( Convert.ToDecimal(txtMustCharge.Text) -Convert.ToDecimal(txtReceive.Text)).ToString();//欠费=应收-收到 } } catch { } } #endregion
3.2.5.2查询收费历史处方记录单
点击收费录入主界面(2.2.5.1(图1))的“查询历史“按钮可以弹出查询历史处方记录单的窗体,历史处方记录单可以查询所有的收费的处方单的同时还可以知道每条单据消费的金额,还可以根据处方单号、病人姓名、常用时段等进行多条件查询处方单。
截图如下:[align=left] [/align]
3.2.5.2(图1)
1、根据常用时段来查询收费单:
(1)、数据库存储过程:
--查询时间段 IF(@Type='FRM_LiShiJiLu_Select_Load_ChaXunTimeSection') BEGIN SELECTLTRIM(RTRIM(AttributeDetailsID))ASTimeSectionID, LTRIM(RTRIM(AttributeDetailsName))ASTimeSection FROMBT_AttributeDetailsTable WHEREBT_AttributeDetailsTable.AttributeSetID=41 END
(2)、逻辑层代码:
[OperationContract] #region 查询时间段 publicDataSet FRM_LiShiJiLu_Select_Load_ChaXunTimeSection() { SqlParameter[] SQLCMDpas ={ newSqlParameter ("@Type",SqlDbType.Char), }; SQLCMDpas[0].Value = "FRM_LiShiJiLu_Select_Load_ChaXunTimeSection"; DataTable myDataTable = myDALMethod.QueryDataTable("GuaHaoShouFei_FRM_ShouFeiLuRu", SQLCMDpas); DataSet myDataSet = newDataSet(); myDataSet.Tables.Add(myDataTable); return myDataSet; } #endregion
(3)、界面层代码:
#region 时间段查询 privatevoid cboTimeInterval_SelectedIndexChanged(object sender, EventArgs e) { DateTime dtpDateNow = DateTime.Now;//声明一个日期变量 DateTime dtpDateNowAddMonth = dtpDateNow.AddMonths(1); DateTime dtpNowDay = DateTime.Now.Date;//获取今天的日期和时间 string strNowDay = DateTime.Now.Day.ToString();//获取今天日号 if (cboTimeInterval.Text == "今天")//根据今天进行时间日期查询 { string strYesterday = DateTime.Now.AddDays(-1).ToShortDateString() + " 23:59:59"; string strTomorrow = DateTime.Now.AddDays(1).ToShortDateString() + " 00:00:00"; dtpBeginTime.Text = strYesterday;//把昨天的日期和时间绑定到开始时间的控件上 dtpEndTime.Text = strTomorrow;//把明天的日期和时间绑定到结束时间的控件上 } if (cboTimeInterval.Text == "昨天") { decimal decTheDayBeforeYesterday = Convert.ToDecimal(strNowDay) - 2;//获取前天的日号 //获取前天的日期和时间 string strTheDayBeforeYesterday = DateTime.Now.Year.ToString() + (DateTime.Now.Month > 9 ? "-" + DateTime.Now.Month.ToString() : "-0" + DateTime.Now.Month.ToString()) + "-" + decTheDayBeforeYesterday + " 23:59:59"; dtpBeginTime.Text = strTheDayBeforeYesterday;//把前天的日期和时间绑定到开始时间的控件上 dtpEndTime.Text = dtpNowDay.ToString();//把今天的日期和时间绑定到结束时间的控件上 } if (cboTimeInterval.Text == "本周") { int intThisWeek = Convert.ToInt32(dtpDateNow.DayOfWeek.ToString("d"));//根据获取的星期的星期天数转型为整形对应的号码 DateTime dtpStartWeek = dtpDateNow.AddDays(1 - intThisWeek);//获取本周周一 DateTime dtpEndweek = dtpStartWeek.AddDays(6);//获取本周周日 dtpBeginTime.Text = dtpStartWeek.ToString();//把本周周一绑定到开始时间的控件中 dtpEndTime.Text = dtpEndweek.ToString();//把本周周日绑定到结束时间的控件中 } if (cboTimeInterval.Text == "上周") { int intLastWeek = Convert.ToInt32(dtpDateNow.DayOfWeek.ToString("d"));///根据获取的星期的星期天数转型为整形对应的号码 DateTime dtpStartweek = dtpDateNow.AddDays(1 - intLastWeek - 7); //获取?上周周一 DateTime dtpEndWeek = dtpStartweek.AddDays(6);//获取上周周日 dtpBeginTime.Text = dtpStartweek.ToString(); //把上周周一绑定到开始时间的控件中 dtpEndTime.Text = dtpEndWeek.ToString();//把上周周日绑定到结束时间的控件中 } if (cboTimeInterval.Text == "本月") { string strThisMonthStart=dtpDateNow.AddDays (-(dtpDateNow.Day)+1).ToString("yyyy-MM-dd");//获取本月月初 string strThisMonthEnd = dtpDateNowAddMonth.AddDays(-dtpDateNow.Day).ToString("yyyy-MM-dd");//本月最后一天 dtpBeginTime .Text =strThisMonthStart ;//把本月初绑定到开始时间上 dtpEndTime .Text =strThisMonthEnd;//把本月末绑定到结束时间上 } if (cboTimeInterval.Text == "上月") { string strLastMonthStart = dtpDateNow.AddMonths(-1).AddDays(-(dtpDateNow.Day) + 1).ToString("yyyy-MM-dd");//获取上个月的月初 string strLastMonthEnd = dtpDateNow.AddDays(-(dtpDateNow.Day)).ToString("yyyy-MM-dd");//获取上个月的月末 dtpBeginTime.Text = strLastMonthStart;//把上个月初绑定登记开始时间上 dtpEndTime.Text = strLastMonthEnd;//把上个月末绑定到结束时骸间上 } if (cboTimeInterval.Text == "本季度") { DateTime dtpThisStartQuarter = dtpDateNow.AddMonths(0 - (dtpDateNow.Month - 1) % 3).AddDays(1 - dtpDateNow.Day);//获取本季度初 DateTime dtpThisEndQuarter = dtpDateNow.AddMonths(3).AddDays(-1);//获取本季度末 dtpBeginTime.Text = dtpThisStartQuarter.ToString();//把本季度初绑定到开始时间上 dtpEndTime.Text = dtpThisEndQuarter.ToString();//把本月末绑定到结束时间上 } if (cboTimeInterval.Text == "上季度") { DateTime dtpLastStartQuarter = dtpDateNow.AddMonths(-3 - (dtpDateNow.Month - 1) % 3).AddDays(1 - dtpDateNow.Day); //上季度初 DateTime dtpLastEndQuarter = dtpLastStartQuarter.AddMonths(3).AddDays(-1); //上季度末 dtpBeginTime.Text = dtpLastStartQuarter.ToString(); //把上季度初绑定到开始时间上 dtpEndTime.Text = dtpLastEndQuarter.ToString();//把上季度末绑定到结束时间上 } if (cboTimeInterval.Text == "本年") { string strThisYearStart = DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).ToShortDateString();//获取本年初 string strThisYearEnd = DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(1).AddDays(-1).ToShortDateString();//获取本年末 dtpBeginTime.Text = strThisYearStart.ToString(); //把本年初绑定到开始时间上 dtpEndTime.Text = strThisYearEnd.ToString();//把本年末绑定到结束时间上 } if (cboTimeInterval.Text == "上年") { string strLastYearStart = DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(-1).ToShortDateString();//获取上年年初 string strLastYearEnd = DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddDays(-1).ToShortDateString();//获取上年年末 dtpBeginTime.Text = strLastYearStart.ToString();//把上年初绑定到开始时间上 dtpEndTime.Text = strLastYearEnd.ToString();//把上年末绑定到结束时间上 } } #endregion
仅供学习,禁止用于商业用途。
相关文章推荐
- java中的TreeMap和HashMap的区别和联系:
- Java异常处理
- 实现医生工作站的历次处方功能的代码(八)
- ubuntu rmvb
- C语言——几道习题
- NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config
- 1002 c与c++的区别啊
- java中的多态性
- 系统编程之文件操作
- c++中六种构造函数的实现以及9中情况下,构造函数的调用过程
- poj2195_GoingHome【最小费用最大流】
- 集体编程的智慧下载(超高清版+源代码)
- c++11 新特性之lambda表达式
- 【学习笔记】【C语言】算术运算
- Python入门图
- Qt连接MySQL
- Eclipse里面使用Maven搭建Web工程
- 【Interleaving String】cpp
- c++primer第一章
- python socket 入门