using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using SOH.Kernel; using EAS; using EAS.Services; using SOH.BLL; using SOH.Entities.DTO; using SOH.Data; using SOH.Entities; namespace SOH.ShouFei { [ModuleAttribute(ModuleID = "C17DB9E6-1C77-4585-8F0D-9498BE1FE917", ModuleName = "退费")] public partial class frmTuiFei : SOH.Window.baseChildForm { private short fddm; //分店代码 private short tjlx; //体检类型,1个检 2团检 public frmTuiFei() { InitializeComponent(); } private void frmTuiFei_Load(object sender, EventArgs e) { Init(); this.gvKTF.AutoGenerateColumns = false; this.gvTF.AutoGenerateColumns = false; } private void Init() { //获取分店代码 string fddmstr = LoginUser.yydm; short fd = 0; short.TryParse(fddmstr, out fd); fddm = fd; } private void tb_TM_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode != Keys.Enter) { return; } //除去手动输入的条码以外,其他的清空 DoClear(); string tmstr = this.tb_TM.Text.Trim(); if (string.IsNullOrEmpty(tmstr) || tmstr.Length != 10) { MessageBox.Show("条码号格式不正确"); return; } int tm = 0; if (Int32.TryParse(tmstr, out tm)) { //条码格式正确,进入查询 var vs = ServiceContainer.GetService(); dto_gzb dg = vs.GetInfoByTm(tm); if (dg == null) { MessageBox.Show("未能找到条码对应的客户"); return; } if (dg.fddm != fddm) { MessageBox.Show("此客人不是在本店收费的"); return; } //tmztz=2或3的时候允许退费 if (dg.tmztz != 2 && dg.tmztz != 3) { MessageBox.Show("此客人的状态不允许退费"); return; } //体检类型赋值 this.tjlx = dg.lx; //展示会员的相关信息 this.tbHYH.Text = dg.hyh.ToString(); this.tbXM.Text = dg.xm; this.tbXB.Text = dg.xb == 0 ? "男" : (dg.xb == 1 ? "女" : ""); this.tbNL.Text = dg.nl.ToString(); this.tbSFLX.Text = dg.gzfbj == 0 ? "公费" : "自费"; this.tbTMH.Text = dg.tm.ToString(); this.tbTCMC.Text = dg.tcmc; this.tbJXSF.Text = dg.jxgzfbj == 0 ? "公费" : "自费"; var vstf = ServiceContainer.GetService(); List ldt = vstf.GetKtfByTm(tm, dg.lx); this.gvKTF.DataSource = null; this.gvTF.DataSource = null; this.tbYTJE.Text = "0"; if (ldt == null || ldt.Count == 0) { } else { this.gvKTF.DataSource = ldt; } } else { MessageBox.Show("条码号格式不正确"); return; } } //取消操作 private void btnQX_Click(object sender, EventArgs e) { this.tb_TM.Text = ""; DoClear(); } //清空各项信息 private void DoClear() { this.tjlx = 0; //清除体检类型的信息 //this.tb_TM.Text = ""; //手动输入的条码号 ,要手动清空 this.tbTMH.Text = ""; this.tbHYH.Text = ""; this.tbXM.Text = ""; this.tbXB.Text = ""; this.tbNL.Text = ""; this.tbSFLX.Text = ""; this.tbTCMC.Text = ""; this.tbJXSF.Text = ""; //清空2个grid this.gvKTF.DataSource = null; this.gvTF.DataSource = null; //清空金额 费用 卡信息 this.tbYTJE.Text = "0"; this.tbHJJE.Text = "0"; } //进行退费操作 private void btnTF_Click(object sender, EventArgs e) { string czy=LoginUser.username; DateTime tjrq=DateTime.Now; //先进行相关判断 string tmstr = this.tbTMH.Text; if(string.IsNullOrEmpty(tmstr)) { MessageBox.Show("请扫描条码,找到相关信息后操作"); return; } int tm = 0; if (!Int32.TryParse(tmstr, out tm)) { MessageBox.Show("条码号格式错误"); return; } if (this.gvTF.Rows.Count == 0) { MessageBox.Show("没有可退费项,请选择退费项目后操作"); return; } //判断金额是否符合,退费总金额,现金0,银行卡1,支票2,支付宝3,网上套餐5,免费4 string ytjestr = this.tbYTJE.Text.Trim(); if (string.IsNullOrEmpty(ytjestr) || ytjestr == "0") { MessageBox.Show("没有应退金额,请重新操作"); return; } string xjstr = this.tbXJ.Text.Trim(); string yhkstr = this.tbYHK.Text.Trim(); string zpstr = this.tbZP.Text.Trim(); string mfstr = this.tbMF.Text.Trim(); string zfbstr = this.tbZfb.Text.Trim(); string wxstr = this.tbWx.Text.Trim(); string wstcstr = this.tbWstc.Text.Trim(); int ytje =0; //应退金额 int xj = 0; //现金 int yhk = 0; //银行卡金额 int zp = 0; //支票金额 int mf = 0; //免费金额 int zfb = 0;//支付宝金额 int wx = 0;//微信金额 int wstc = 0;//网上套餐金额 if (!Int32.TryParse(ytjestr, out ytje) || ytje < 0) { MessageBox.Show("应退金额格式错误"); return; } if (!Int32.TryParse(xjstr, out xj)||xj<0) { MessageBox.Show("现金金额格式错误"); this.tbXJ.Select(); return; } if (!Int32.TryParse(yhkstr, out yhk)||yhk<0) { MessageBox.Show("银行卡金额格式错误"); this.tbYHK.Select(); return; } if (!Int32.TryParse(zpstr, out zp)||zp<0) { MessageBox.Show("体检卡金额格式错误"); this.tbZP.Select(); return; } if (!Int32.TryParse(mfstr, out mf) || mf < 0) { MessageBox.Show("免费金额格式错误"); this.tbMF.Select(); return; } if (!Int32.TryParse(zfbstr, out zfb) || zfb < 0) { MessageBox.Show("支付宝金额格式错误"); this.tbZfb.Select(); return; } if (!Int32.TryParse(wxstr, out wx) || wx < 0) { MessageBox.Show("微信金额格式错误"); this.tbWx.Select(); return; } if (!Int32.TryParse(wstcstr, out wstc) || wstc < 0) { MessageBox.Show("网上套餐金额格式错误"); this.tbWstc.Select(); return; } int zje=xj+yhk+zp+mf+zfb+wx+wstc; if(zje!=ytje) { MessageBox.Show("应退金额与实际退款金额不符"); this.tbXJ.Select(); return; } //拼接收费明细信息 List lts = new List(); t_sfmxb ts = new t_sfmxb(); ts.tm = tm; ts.tjrq = tjrq; ts.sffx = 1; ts.czy = czy; if (xj > 0) { ts.sffs = 0; //0现金 ts.je = xj * 100; lts.Add(ts); } if (yhk > 0) { ts.sffs = 1; //1银行卡 ts.je = yhk * 100; lts.Add(ts); } if (zp > 0) { ts.sffs = 2; //5支票 ts.je = zp * 100; lts.Add(ts); } if (mf > 0) { ts.sffs = 4; //2免费 ts.je = mf * 100; lts.Add(ts); } if (zfb > 0) { ts.sffs = 3; //3支付宝 ts.je = zfb * 100; lts.Add(ts); } if (wx > 0) { ts.sffs = 6; //6微信 ts.je = wx * 100; lts.Add(ts); } if (wstc > 0) { ts.sffs = 5; //5网上套餐 ts.je = wstc * 100; lts.Add(ts); } List ltt = new List(); //按照zhbm拼接退费表信息 //拼接所需参数信息 List ldt = this.gvTF.DataSource == null ? null : (this.gvTF.DataSource as List); if (ldt == null || ldt.Count == 0) { MessageBox.Show("没有可退费项,请选择退费项目后操作"); return; } else { for (int i = 0; i < ldt.Count; i++) { dto_tempdjxm dt = ldt[i]; t_tfb tt = new t_tfb(); tt.tm = tm; tt.zhbm = dt.zhbm; tt.tfje = dt.zhjg; tt.czy = czy; tt.tjrq = tjrq; ltt.Add(tt); } } short lx = tjlx; //体检类型 1个人 2团体 T_drxpjl td = new T_drxpjl(); td.tm = tm; td.xm = this.tbXM.Text; td.hyh = this.tbHYH.Text; td.dw = ""; td.tcorfzname = this.tbTCMC.Text; td.shouldpay = this.tbYTJE.Text; if (xj.ToString().Equals("0")) { td.pay = xj.ToString(); } else { td.pay = "-" + (xj * 100).ToString(); } if (zfb.ToString().Equals("0")) { td.cash = zfb.ToString(); } else { td.cash = "-" + (zfb * 100).ToString(); } if (wx.ToString().Equals("0")) { td.sex = wx.ToString(); } else { td.sex = "-" + (wx * 100).ToString(); } if (yhk.ToString().Equals("0")) { td.bank = yhk.ToString(); } else { td.bank = "-" + (yhk * 100).ToString(); } if (mf.ToString().Equals("0")) { td.nomoney = mf.ToString(); } else { td.nomoney = "-" + (mf * 100).ToString(); } if (zp.ToString().Equals("0")) { td.checkpaper = zp.ToString(); } else { td.checkpaper = "-" + (zp * 100).ToString(); } if (wstc.ToString().Equals("0")) { td.tccard = wstc.ToString(); } else { td.tccard = "-" + (wstc * 100).ToString(); } td.jzcard = "0"; td.jzmoney = "0"; td.paper = "0"; td.sftf = 1; td.rq = tjrq; td.sfjx = 0; var vs = ServiceContainer.GetService(); OperationResult or = new OperationResult(); or = vs.TF(lx, ltt, lts, td); if(or.State==1) { MessageBox.Show("退费成功"); this.tb_TM.Clear(); DoClear(); return; } else { MessageBox.Show("退费失败了,"+or.Message); return; } } private void btnJia_Click(object sender, EventArgs e) { if (this.gvKTF.SelectedRows.Count > 0) { int rindex = this.gvKTF.SelectedRows[0].Index; dto_tempdjxm dt = this.gvKTF.Rows[rindex].DataBoundItem as dto_tempdjxm; List ldt1 = new List(); ldt1 = this.gvKTF.DataSource == null ? null : (this.gvKTF.DataSource as List); if (ldt1 == null) { ldt1 = new List(); } ldt1.Remove(dt); this.gvKTF.DataSource = null; this.gvKTF.DataSource = ldt1; List ldt2 = new List(); ldt2 = this.gvTF.DataSource == null ? null : this.gvTF.DataSource as List; if (ldt2 == null) { ldt2 = new List(); } ldt2.Add(dt); this.gvTF.DataSource = null; this.gvTF.DataSource = ldt2; SetJE(ldt2); } else { return; } } private void btnJian_Click(object sender, EventArgs e) { if (this.gvTF.SelectedRows.Count > 0) { int rindex = this.gvTF.SelectedRows[0].Index; dto_tempdjxm dt = this.gvTF.Rows[rindex].DataBoundItem as dto_tempdjxm; List ldt2 = new List(); ldt2 = this.gvTF.DataSource == null ? null : (this.gvTF.DataSource as List); if (ldt2 == null) { ldt2 = new List(); } else { ldt2.Remove(dt); } this.gvTF.DataSource = null; this.gvTF.DataSource = ldt2; List ldt1 = new List(); ldt1 = this.gvKTF.DataSource == null ? null : (this.gvKTF.DataSource as List); if (ldt1 == null) { ldt1 = new List(); } ldt1.Add(dt); this.gvKTF.DataSource = null; this.gvKTF.DataSource = ldt1; SetJE(ldt2); } else { return; } } //获取退费金额 private void SetJE(List ldt) { if (ldt == null || ldt.Count == 0) { this.tbYTJE.Text = "0"; } else { double je = 0D; for (int i = 0; i < ldt.Count; i++) { double tempje = ldt[i].zhjg_v == null ? 0D : ldt[i].zhjg_v; je += tempje; } int jeint = (int)je; this.tbYTJE.Text = jeint.ToString(); } } private void tbXJ_TextChanged(object sender, EventArgs e) { SetHJJE(); } private void tbYHK_TextChanged(object sender, EventArgs e) { SetHJJE(); } private void tbZP_TextChanged(object sender, EventArgs e) { SetHJJE(); } //根据现金、银行卡、支票的退费金额 合计出总的退费金额 private void SetHJJE() { string xjstr = this.tbXJ.Text.Trim(); string yhkstr = this.tbYHK.Text.Trim(); string zpstr = this.tbZP.Text.Trim(); string zfbstr = this.tbZfb.Text.Trim(); string wxstr = this.tbWx.Text.Trim(); string wstcstr = this.tbWstc.Text.Trim(); int xj = 0; //现金 int yhk = 0; //银行卡金额 int zp = 0; //支票金额 int zfb = 0;//支付宝金额 int wstc = 0;//网上套餐 int wx = 0;//微信金额 if (!Int32.TryParse(xjstr, out xj)||xj<0) { MessageBox.Show("现金金额格式错误"); this.tbXJ.Select(); return; } if (!Int32.TryParse(yhkstr, out yhk) || yhk < 0) { MessageBox.Show("银行卡金额格式错误"); this.tbYHK.Select(); return; } if (!Int32.TryParse(zpstr, out zp)||zp<0) { MessageBox.Show("支票金额格式错误"); this.tbZP.Select(); return; } if (!Int32.TryParse(zfbstr, out zfb) || zfb < 0) { MessageBox.Show("支付宝金额格式错误"); this.tbZfb.Select(); return; } if (!Int32.TryParse(wxstr, out wx) || wx < 0) { MessageBox.Show("微信金额格式错误"); this.tbWx.Select(); return; } if (!Int32.TryParse(wstcstr, out wstc) || wstc < 0) { MessageBox.Show("网上套餐金额格式错误"); this.tbWstc.Select(); return; } int zje = xj + yhk + zp+zfb+wstc+wx; this.tbHJJE.Text = zje.ToString(); } private void tbZfb_TextChanged(object sender, EventArgs e) { SetHJJE(); } private void tbWstc_TextChanged(object sender, EventArgs e) { SetHJJE(); } private void label16_Click(object sender, EventArgs e) { } private void tbWx_TextChanged(object sender, EventArgs e) { SetHJJE(); } } }