using System; using System.Collections; using System.Configuration; using System.Data; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using DSWeb.Models; using DSWeb.EntityDA; using System.Text; using System.Collections.Generic; using System.Text.RegularExpressions; using System.Globalization; using System.Data.SqlClient; using WebSqlHelper; namespace DSWeb.Settlements { public partial class PaySettlementEdit : System.Web.UI.Page { private string strSettlementID;//付费结算GID private string strRunSettleID;//运行结算表GID private string strCheckType;//查看类型 private string strUserID;//登录人UserID private string strShowName;//登录人名称 private string strCompanyID;//公司GID private string strDeptName;//部门名称 private string recvJSON_2; protected void Page_Load(object sender, EventArgs e) { if (Session["USERID"] != null) { strUserID = Session["USERID"].ToString(); } if (Session["SHOWNAME"] != null) { strShowName = Session["SHOWNAME"].ToString(); } if (Session["COMPANYID"] != null) { strCompanyID = Session["COMPANYID"].ToString(); } if (Session["DEPTNAME"] != null) { strDeptName = Session["DEPTNAME"].ToString(); } if (Request.QueryString["id"] != null) { strSettlementID = Request.QueryString["id"].ToString(); h_settlementid.Value = strSettlementID; } if (Request.QueryString["runsettleid"] != null) { strRunSettleID = Request.QueryString["runsettleid"].ToString(); h_runsettleid.Value = strRunSettleID; } if (Request.QueryString["checktype"] != null) { strCheckType = Request.QueryString["checktype"].ToString().Trim(); h_checktype.Value = strCheckType; } if (!IsPostBack) { //判断是否在结算页面显示预收预付信息录入 T_ALL_DA T_ALL_DA = new T_ALL_DA(); this.h_ISADVANCE.Value = T_ALL_DA.GetStrSQL("ISADVANCE", "select ISADVANCE from subcomp_seae_def where CORPID='" + strCompanyID + "'"); //是否取用预收预付,默认是0 不取用 this.h_isAccess.Value = "0"; this.h_isSHOW.Value = "0"; this.h_enter.Value = "0"; //费用的结算单据用途:1-收款,2-付款 this.h_feetype.Value = "2"; // this.h_bb5.Value = "RMB"; } if (this.h_enter.Value.Trim() == "1") { //提交付费申请结算 RecordSettleFee(); } else { if (strCheckType == "1") { if (strRunSettleID != null) { GetRunPaySettleInfo(strRunSettleID); } } else { if (strSettlementID != null) { GetSettlementInfo(strSettlementID); } } } } /// /// 执行更新预收预付信息 /// private void RecordSettleFee() { string ssql = ""; T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA(); ArrayList alFeeDo = new ArrayList(); FeeSettlementEntity feeSettlementEntity = new FeeSettlementDA().GetFeeSettlementByGID(this.h_settlementid.Value.Trim()); #region 将页面post获取的信息解析 #region 预付支资料,解析使用情况,并形成sql语句 Decimal dlDOAMOUNT = this.txt_je2.Value.Trim() == "" ? 0 : Decimal.Parse(this.txt_je2.Value.Trim()); if (feeSettlementEntity.PREPAY_MONEY != dlDOAMOUNT) { ssql = "select count(*) as nums from ch_fee_advance_payment_detail where BILLNO='" + feeSettlementEntity.BillNO.ToString() + "' and (ISDELETE=0 or ISDELETE is null)"; int nums = int.Parse(T_ALL_DA.GetStrSQL("nums", ssql)); if (nums == 0) { if (dlDOAMOUNT != 0) { //更新主表 ssql = "update [ch_fee_advance_payment] set DOAMOUNT=DOAMOUNT+" + Decimal.Parse(this.txt_je2.Value.Trim()) + ",ISFINISH=0 where LINKGID='" + feeSettlementEntity.GID.ToString() + "' and (ISDELETE=0 or ISDELETE is null)"; alFeeDo.Add(ssql); } else { //删除主表 ssql = "delete from ch_fee_advance_payment where LINKGID='" + feeSettlementEntity.GID.ToString() + "'"; alFeeDo.Add(ssql); } } else { Page.ClientScript.RegisterStartupScript(this.GetType(), "key2", ""); return; } } #endregion if (this.h_isAccess.Value.Trim() == "1") { #region 反向更新和删除此结算以前的“预收预付取用”信息 ssql = "select * from ch_fee_advance_payment_detail where SETTLELINKGID='" + feeSettlementEntity.GID.ToString() + "' and (ISDELETE=0 or ISDELETE is null)"; DataSet ds = T_ALL_DA.GetAllSQL(ssql); if (ds != null) { if (ds.Tables.Count > 0) { for (int i = 0; i < ds.Tables.Count; i++) { //更新主表 ssql = "update [ch_fee_advance_payment] set DOAMOUNT=DOAMOUNT-" + ds.Tables[0].Rows[i]["DOAMOUNT"].ToString() + ",ISFINISH=0 where GID='" + ds.Tables[0].Rows[i]["LINKGID"].ToString() + "' and (ISDELETE=0 or ISDELETE is null)"; alFeeDo.Add(ssql); } //删除明细表 ssql = "delete from ch_fee_advance_payment_detail where SETTLELINKGID='" + feeSettlementEntity.GID.ToString() + "'"; alFeeDo.Add(ssql); } } #endregion // #region 预收预付取用,解析post返回的值,并形成插入更新的sql语句 recvJSON_2 = ""; recvJSON_2 = this.recvContainer_2.Value.Trim(); if (!recvJSON_2.Trim().Equals("")) { string tempSettle = recvJSON_2.Substring(recvJSON_2.IndexOf("[") + 1, recvJSON_2.IndexOf("]") - recvJSON_2.IndexOf("[") - 1); string[] tempSettleFees = tempSettle.Split(new string[] { "},{" }, System.StringSplitOptions.RemoveEmptyEntries); if (tempSettleFees.Length > 0) { for (int i = 0; i < tempSettleFees.Length; i++) { // 1 2 3 4 5 6 7 //客户名称,单号,实录时间,币别,实录金额,未核销金额,本次核销"); string GID = ""; //客户名称 string CUSTOMERNAME = ""; //客户名称 string BILLNO = ""; //单号 string CREATETIME = ""; //实录时间 string CURRENCY = ""; //币别 decimal AMOUNT = 0; //实录金额 decimal DOAMOUNT2 = 0; //未核销金额 decimal DOAMOUNT = 0; //本次核销 string ISFINISH = ""; //是否全部完成核销 tempSettleFees[i] = tempSettleFees[i].ToString().Replace("{", ""); tempSettleFees[i] = tempSettleFees[i].ToString().Replace("}", ""); string[] strCell = tempSettleFees[i].Split(new char[] { ',' }); if (strCell.Length > 0) { for (int j = 0; j < strCell.Length; j++) { string[] strArg = strCell[j].Split(new char[] { ':' }); switch (strArg[0].Replace("\"", "")) { case "GID": GID = strArg[1].ToString().Replace("\"", "").Trim(); break; case "CUSTOMERNAME"://客户名称 UnicodeEncoding unicode = new UnicodeEncoding(); CUSTOMERNAME = unicode.GetString(unicode.GetBytes(Regex.Unescape(strArg[1].ToString().Replace("\"", "").Trim()))); break; case "BILLNO"://单号 BILLNO = strArg[1].ToString().Replace("\"", "").Trim(); break; case "CREATETIME"://实录时间 CREATETIME = strArg[1].ToString().Replace("\"", "").Trim(); break; case "CURRENCY"://币别 CURRENCY = strArg[1].ToString().Replace("\"", "").Trim(); break; case "AMOUNT"://实录金额 AMOUNT = decimal.Parse(strArg[1].ToString().Replace("\"", "").Trim()); break; case "DOAMOUNT2"://未核销金额 DOAMOUNT2 = decimal.Parse(strArg[1].ToString().Replace("\"", "").Trim()); break; case "DOAMOUNT"://本次核销 DOAMOUNT = decimal.Parse(strArg[1].ToString().Replace("\"", "").Trim()); break; case "ISFINISH"://是否全部完成核销 ISFINISH = strArg[1].ToString().Replace("\"", "").Trim(); break; default: break; } } } if (DOAMOUNT != 0 && GID.Trim() != "") { //更新主表 ssql = "update [ch_fee_advance_payment] set DOAMOUNT=DOAMOUNT+" + DOAMOUNT + ",ISFINISH=" + ISFINISH + " where GID='" + GID + "' and (ISDELETE=0 or ISDELETE is null)"; alFeeDo.Add(ssql); //插入明细表 ssql = "INSERT INTO [ch_fee_advance_payment_detail](GID,LINKGID,BILLNO,SETTLELINKGID,SETTLEBILLNO,FEETYPE,CUSTOMERNAME,CURRENCY,DOAMOUNT,SETTLEUSER,SETTLETIME,REMARK,ISDELETE,DELETEUSER,COMPANYID,VOUCHERNO) " + " values ('" + Guid.NewGuid().ToString() + "','" + GID + "','" + BILLNO + "','" + feeSettlementEntity.GID.ToString() + "','" + feeSettlementEntity.BillNO.ToString() + "',2,'" + CUSTOMERNAME + "','" + CURRENCY + "'," + DOAMOUNT + ",'" + strUserID.Trim() + "',getdate(),'',0,'','" + strCompanyID.Trim() + "','')"; alFeeDo.Add(ssql); } // } } // recvJSON_2 = ""; this.recvContainer_2.Value = ""; } #endregion } #region 更新结算表中预收预付信息,形成sql语句 //预付 feeSettlementEntity.ACCOUNTS_CURRENCY = this.ddl_bb1.Value.Trim(); feeSettlementEntity.ACCOUNTS_RATE = this.txt_hl1.Value.Trim() == "" ? 0 : Decimal.Parse(this.txt_hl1.Value.Trim()); feeSettlementEntity.ACCOUNTS_MONEY = this.txt_je1.Value.Trim() == "" ? 0 : Decimal.Parse(this.txt_je1.Value.Trim()); feeSettlementEntity.PREPAY_CURRENCY = this.ddl_bb2.Value.Trim(); feeSettlementEntity.PREPAY_RATE = this.txt_hl2.Value.Trim() == "" ? 0 : Decimal.Parse(this.txt_hl2.Value.Trim()); feeSettlementEntity.PREPAY_MONEY = this.txt_je2.Value.Trim() == "" ? 0 : Decimal.Parse(this.txt_je2.Value.Trim()); feeSettlementEntity.AHSR_CURRENCY = this.ddl_bb3.Value.Trim(); feeSettlementEntity.AHSR_RATE = this.txt_hl3.Value.Trim() == "" ? 0 : Decimal.Parse(this.txt_hl3.Value.Trim()); feeSettlementEntity.AHSR_MONEY = this.txt_je3.Value.Trim() == "" ? 0 : Decimal.Parse(this.txt_je3.Value.Trim()); feeSettlementEntity.FINANCIAL_CURRENCY = this.ddl_bb4.Value.Trim(); feeSettlementEntity.FINANCIAL_RATE = this.txt_hl4.Value.Trim() == "" ? 0 : Decimal.Parse(this.txt_hl4.Value.Trim()); feeSettlementEntity.FINANCIAL_MONEY = this.txt_je4.Value.Trim() == "" ? 0 : Decimal.Parse(this.txt_je4.Value.Trim()); //feeSettlementEntity.ADVANCE_CURRENCY = this.ddl_bb5.Value.Trim(); feeSettlementEntity.ADVANCE_CURRENCY = this.h_bb5.Value.Trim(); feeSettlementEntity.ADVANCE_RATE = this.txt_hl5.Value.Trim() == "" ? 0 : Decimal.Parse(this.txt_hl5.Value.Trim()); feeSettlementEntity.ADVANCE_MONEY = this.txt_je5.Value.Trim() == "" ? 0 : Decimal.Parse(this.txt_je5.Value.Trim()); ssql = "update [ch_fee_settlement] set " + "ACCOUNTS_CURRENCY = '" + feeSettlementEntity.ACCOUNTS_CURRENCY + "'" + ",ACCOUNTS_RATE = '" + feeSettlementEntity.ACCOUNTS_RATE + "'" + ",ACCOUNTS_MONEY = '" + feeSettlementEntity.ACCOUNTS_MONEY + "'" + ",PREPAY_CURRENCY = '" + feeSettlementEntity.PREPAY_CURRENCY + "'" + ",PREPAY_RATE = '" + feeSettlementEntity.PREPAY_RATE + "'" + ",PREPAY_MONEY = '" + feeSettlementEntity.PREPAY_MONEY + "'" + ",AHSR_CURRENCY = '" + feeSettlementEntity.AHSR_CURRENCY + "'" + ",AHSR_RATE = '" + feeSettlementEntity.AHSR_RATE + "'" + ",AHSR_MONEY = '" + feeSettlementEntity.AHSR_MONEY + "'" + ",FINANCIAL_CURRENCY = '" + feeSettlementEntity.FINANCIAL_CURRENCY + "'" + ",FINANCIAL_RATE = '" + feeSettlementEntity.FINANCIAL_RATE + "'" + ",FINANCIAL_MONEY = '" + feeSettlementEntity.FINANCIAL_MONEY + "'" + ",ADVANCE_CURRENCY = '" + feeSettlementEntity.ADVANCE_CURRENCY + "'" + ",ADVANCE_RATE = '" + feeSettlementEntity.ADVANCE_RATE + "'" + ",ADVANCE_MONEY = '" + feeSettlementEntity.ADVANCE_MONEY + "'" + " where GID='" + feeSettlementEntity.GID.ToString() + "'"; alFeeDo.Add(ssql); #endregion FeePaySettleApplicationDA feePaySettleApplicationDA = new FeePaySettleApplicationDA(); int iResult = feePaySettleApplicationDA.alDo(alFeeDo); if (iResult == 1) { h_enter.Value = "0"; Page.ClientScript.RegisterStartupScript(this.GetType(), "key1", ""); } else { Page.ClientScript.RegisterStartupScript(this.GetType(), "key2", ""); } #endregion } private void GetSettlementInfo(string tempSettlementID) { FeeSettlementEntity feeSettlementEntity = new FeeSettlementDA().GetFeeSettlementByGID(tempSettlementID); if (feeSettlementEntity.GID != null) { this.txt_billno.Value = feeSettlementEntity.BillNO; this.h_billno.Value = feeSettlementEntity.BillNO; this.txt_customerName.Value = feeSettlementEntity.CustomerName; switch (feeSettlementEntity.SettleMode) { case 1: this.txt_billstatus.Value = "锁定"; break; case 2: this.txt_billstatus.Value = "未锁定"; break; case 3: this.txt_billstatus.Value = "结算撤销"; break; default: break; } this.h_settletype.Value = feeSettlementEntity.SettleType.ToString(); this.txt_voucherno.Value = feeSettlementEntity.VoucherNO; this.txt_rmb.Value = feeSettlementEntity.AmountRMB.ToString(); this.txt_usd.Value = feeSettlementEntity.AmountUSD.ToString(); this.txt_remark.Text = feeSettlementEntity.Remark.ToString(); // this.ddl_bb1.Value = feeSettlementEntity.ACCOUNTS_CURRENCY.ToString().Trim(); this.txt_hl1.Value = feeSettlementEntity.ACCOUNTS_RATE.ToString().Trim(); this.txt_je1.Value = feeSettlementEntity.ACCOUNTS_MONEY.ToString().Trim(); this.ddl_bb2.Value = feeSettlementEntity.PREPAY_CURRENCY.ToString().Trim(); this.txt_hl2.Value = feeSettlementEntity.PREPAY_RATE.ToString().Trim(); this.txt_je2.Value = feeSettlementEntity.PREPAY_MONEY.ToString().Trim(); this.ddl_bb3.Value = feeSettlementEntity.AHSR_CURRENCY.ToString().Trim(); this.txt_hl3.Value = feeSettlementEntity.AHSR_RATE.ToString().Trim(); this.txt_je3.Value = feeSettlementEntity.AHSR_MONEY.ToString().Trim(); this.ddl_bb4.Value = feeSettlementEntity.FINANCIAL_CURRENCY.ToString().Trim(); this.txt_hl4.Value = feeSettlementEntity.FINANCIAL_RATE.ToString().Trim(); this.txt_je4.Value = feeSettlementEntity.FINANCIAL_MONEY.ToString().Trim(); this.ddl_bb5.Value = feeSettlementEntity.ADVANCE_CURRENCY.ToString().Trim(); this.h_bb5.Value = feeSettlementEntity.ADVANCE_CURRENCY.ToString().Trim(); this.txt_hl5.Value = feeSettlementEntity.ADVANCE_RATE.ToString().Trim(); this.txt_je5.Value = feeSettlementEntity.ADVANCE_MONEY.ToString().Trim(); // this.h_je1.Value = feeSettlementEntity.ACCOUNTS_MONEY.ToString().Trim(); this.h_je2.Value = feeSettlementEntity.PREPAY_MONEY.ToString().Trim(); this.h_je3.Value = feeSettlementEntity.AHSR_MONEY.ToString().Trim(); this.h_je4.Value = feeSettlementEntity.FINANCIAL_MONEY.ToString().Trim(); this.h_je5.Value = feeSettlementEntity.ADVANCE_MONEY.ToString().Trim(); // T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA(); this.txt_chequenum.Value = T_ALL_DA.GetStrSQL("CHEQUENUM", "select top 1 isnull(CHEQUENUM,'') CHEQUENUM from ch_fee where CURRENCY='RMB' and gid in (select feeid from ch_fee_do where billno='" + feeSettlementEntity.BillNO.ToString().Trim() + "')"); this.txt_chequenumusd.Value = T_ALL_DA.GetStrSQL("CHEQUENUM", "select top 1 isnull(CHEQUENUM,'') CHEQUENUM from ch_fee where CURRENCY<>'RMB' and gid in (select feeid from ch_fee_do where billno='" + feeSettlementEntity.BillNO.ToString().Trim() + "')"); // AccountDA accountDA = new AccountDA(); this.txt_rmbaccount.Value = ""; if (feeSettlementEntity.AccountRMB.Trim() != "") { AccountEntity accountEntity = new AccountEntity(); accountEntity = accountDA.GetAccountByID(feeSettlementEntity.AccountRMB.Trim()); if (accountEntity != null) { if (accountEntity.GID != null) { this.txt_rmbaccount.Value = accountEntity.BANKNAME; } } } this.txt_usdaccount.Value = ""; if (feeSettlementEntity.AccountUSD.Trim() != "") { AccountEntity accountEntity = new AccountEntity(); accountEntity = accountDA.GetAccountByID(feeSettlementEntity.AccountUSD.Trim()); if (accountEntity != null) { if (accountEntity.GID != null) { this.txt_usdaccount.Value = accountEntity.BANKNAME; } } } UserEntity userEntity = new UserEntity(); UserDA userDA = new UserDA(); userEntity = userDA.GetUserSignByID(feeSettlementEntity.SettleUser); if (userEntity.Gid != null) { this.txt_settleuser.Value = userEntity.ShowName; } this.txt_settletime.Value = feeSettlementEntity.SettleTime.ToString(); } } private void GetRunPaySettleInfo(string tempRunSettleID) { RunFeeSettlementEntity runFeeSettlementEntity = new RunFeeSettlementDA().GetRunFeeSettlementByGID(tempRunSettleID); if (runFeeSettlementEntity.GID != null) { this.txt_billno.Value = ""; this.h_billno.Value = ""; this.txt_customerName.Value = runFeeSettlementEntity.CustomerName; this.h_settletype.Value = runFeeSettlementEntity.SettleType.ToString(); //this.txt_chequepayable.Value = runFeeSettlementEntity.ChequeNo; UserEntity userEntity = new UserEntity(); UserDA userDA = new UserDA(); userEntity = userDA.GetUserSignByID(runFeeSettlementEntity.CreateUser); if (userEntity.Gid != null) { //this.txt_applyuser.Value = userEntity.ShowName; } //this.txt_applytime.Value = runFeeSettlementEntity.CreateTime.ToString(); this.txt_remark.Text = runFeeSettlementEntity.Remark; this.txt_rmb.Value = runFeeSettlementEntity.AmountRMB.ToString(); this.txt_usd.Value = runFeeSettlementEntity.AmountUSD.ToString(); //this.txt_payabletime.Value = runFeeSettlementEntity.PayableTime == DateTime.MinValue ? "" : runFeeSettlementEntity.PayableTime.ToString(); } } } }