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.Collections.Generic; using System.Text; using System.Text.RegularExpressions; using System.Globalization; using DSWeb.Log; namespace DSWeb.Settlements { public partial class DoPaySettlement : System.Web.UI.Page { private string strUserID;//登录操作人GID private string strShowName;//操作人显示名称 //private string strFeeCache; private string strCacheName; private string strSettleCurrency; private decimal usdToRmb; private decimal rmbToUsd; private string strCompanyID;//公司GID private string strDeptName;//部门名称 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["obj"] != null) { strCacheName = Request.QueryString["obj"].ToString(); } if (Request.QueryString["currency"] != null) { strSettleCurrency = Request.QueryString["currency"].ToString(); h_settlecurrency.Value = strSettleCurrency; } if (Request.QueryString["uex"] != null) { rmbToUsd = decimal.Parse(Request.QueryString["uex"].ToString()); h_rmbtousd.Value = rmbToUsd.ToString(); } if (Request.QueryString["rex"] != null) { usdToRmb = decimal.Parse(Request.QueryString["rex"].ToString()); h_usdtormb.Value = usdToRmb.ToString(); } #region #### //if (!h_enter.Value.Trim().Equals("1")) //{ // if (Request.QueryString["obj"] != null) // { // strCacheName = Request.QueryString["obj"].ToString(); // if (strCacheName != null) // { // if (Session[strCacheName] != null) // { // strFeeCache = Session[strCacheName].ToString(); // Session.Remove(strCacheName); // } // } // h_feecache.Value = strFeeCache; // InitDoSettlement(); // } // if (Request.QueryString["currency"] != null) // { // strSettleCurrency = Request.QueryString["currency"].ToString(); // h_settlecurrency.Value = strSettleCurrency; // } // if (Request.QueryString["uex"] != null) // { // rmbToUsd = decimal.Parse(Request.QueryString["uex"].ToString()); // h_rmbtousd.Value = rmbToUsd.ToString(); // } // if (Request.QueryString["rex"] != null) // { // usdToRmb = decimal.Parse(Request.QueryString["rex"].ToString()); // h_usdtormb.Value = usdToRmb.ToString(); // } //} //else //{ // RecordSettleFee(); //} #endregion InitDoSettlement(); if (ViewState["enter"] == null) { ResovlePostSessionTable(strCacheName); ViewState["enter"] = "0";//已经完成初始化 } else { if (h_enter.Value.Trim().Equals("1")) { SavePaySettle(strCacheName); } else if (h_enter.Value.Trim().Equals("2")) { if (ViewState["enter"] != null) { PostPaySettle(strCacheName); } } } } #region 获取缓存付费结算合计信息 /// /// 获取缓存付费结算合计信息 /// /// 缓存名称 private void ResovlePostSessionTable(string tempPostSessionName) { DataTable bsnoTable = null; DataTable feeTable = null; DataTable totalTable = null; DataSet postSet = null; if (Session[tempPostSessionName] != null) { postSet = (DataSet)Session[tempPostSessionName]; } bsnoTable = (DataTable)postSet.Tables[0]; feeTable = (DataTable)postSet.Tables[1]; totalTable = (DataTable)postSet.Tables[2]; StringBuilder totalBuilder = new StringBuilder(); totalBuilder.Append("{"); totalBuilder.Append("\"totals\":"); totalBuilder.Append("["); totalBuilder.Append("{"); decimal totalRmb = decimal.Parse(totalTable.Rows[0]["TOTALRMB"].ToString()); decimal totalUsd = decimal.Parse(totalTable.Rows[0]["TOTALUSD"].ToString()); decimal FinalRmd = 0; decimal FinalUsd = 0; if (strSettleCurrency == "1") { //人民币结算 FinalRmd = (StatisticSettleAmount(totalUsd, usdToRmb) + totalRmb); } else if (strSettleCurrency == "2") { //美元结算 FinalUsd = (StatisticSettleAmount(totalRmb, rmbToUsd) + totalUsd); } else if (strSettleCurrency == "3") { FinalRmd = totalRmb; FinalUsd = totalUsd; } totalBuilder.Append("\"recvrmb\":" + totalTable.Rows[0]["RECVRMB"].ToString() + ","); totalBuilder.Append("\"recvusd\":" + totalTable.Rows[0]["RECVUSD"].ToString() + ","); totalBuilder.Append("\"payrmb\":" + totalTable.Rows[0]["PAYRMB"].ToString() + ","); totalBuilder.Append("\"payusd\":" + totalTable.Rows[0]["PAYUSD"].ToString() + ","); totalBuilder.Append("\"totalrmb\":" + FinalRmd.ToString() + ","); totalBuilder.Append("\"totalusd\":" + FinalUsd.ToString() + ""); totalBuilder.Append("}"); totalBuilder.Append("]"); totalBuilder.Append("}"); h_total.Value = totalBuilder.ToString(); } #endregion private void InitDoSettlement() { this.txt_settleUser.Value = strShowName; if (this.txt_settleTime.Value.Trim() == "") { T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA(); string rq = T_ALL_DA.GetStrSQL("rq", "select getdate() as rq");//convert(char(10),getdate(),20) this.txt_settleTime.Value = rq; } this.txt_billStatus.Value = "锁定"; } #region 保存付费结算 /// /// 保存付费结算 /// private void SavePaySettle(string tempPostSessionName) { int billtype = 0;//1收费2付费 DataTable bsnoTable = null; DataTable feeTable = null; DataTable totalTable = null; DataSet postSet = null; if (Session[tempPostSessionName] != null) { postSet = (DataSet)Session[tempPostSessionName]; } bsnoTable = (DataTable)postSet.Tables[0]; feeTable = (DataTable)postSet.Tables[1]; totalTable = (DataTable)postSet.Tables[2]; RunFeeDoDA runFeeDoDA = new RunFeeDoDA(); if (ViewState["SaveState"] == null) { string strCustomerName = ""; string strRunSettleID = Guid.NewGuid().ToString(); //付费申请费用明细信息 IList runFeeDoEntities = new List(); for (int j = 0; j < bsnoTable.Rows.Count; j++) { for (int i = 0; i < feeTable.Rows.Count; i++) { if (i == 0) { strCustomerName = feeTable.Rows[i]["CUSTOMERNAME"].ToString(); } if (bsnoTable.Rows[j]["BSNO"].ToString().Trim() != feeTable.Rows[i]["BSNO"].ToString().Trim()) { continue; } RunFeeDoEntity runFeeDoEntity = new RunFeeDoEntity(); runFeeDoEntity.FeeID = feeTable.Rows[i]["GID"].ToString(); runFeeDoEntity.FeeType = int.Parse(feeTable.Rows[i]["FEETYPE"].ToString()); billtype = runFeeDoEntity.FeeType; runFeeDoEntity.Currency = feeTable.Rows[i]["CURRENCY"].ToString(); runFeeDoEntity.Amount = decimal.Parse(feeTable.Rows[i]["AMOUNT"].ToString()); runFeeDoEntity.DoAmount = decimal.Parse(feeTable.Rows[i]["CTL"].ToString()); runFeeDoEntity.UnsettleAmount = decimal.Parse(feeTable.Rows[i]["UCTL"].ToString()); runFeeDoEntity.CustomerName = feeTable.Rows[i]["CUSTOMERNAME"].ToString(); runFeeDoEntity.FeeName = feeTable.Rows[i]["FEENAME"].ToString(); runFeeDoEntity.OriginalFeeName = feeTable.Rows[i]["CUSTOMERNAME"].ToString(); runFeeDoEntity.OriginalFeeCSTL = decimal.Parse(feeTable.Rows[i]["CTL"].ToString()); if (strSettleCurrency == "1") { runFeeDoEntity.ExchangeRate = usdToRmb; } else if (strSettleCurrency == "2") { runFeeDoEntity.ExchangeRate = rmbToUsd; } runFeeDoEntity.BSNO = bsnoTable.Rows[j]["BSNO"].ToString(); runFeeDoEntity.MBLNO = bsnoTable.Rows[j]["MBLNO"].ToString(); runFeeDoEntity.HBLNO = bsnoTable.Rows[j]["HBLNO"].ToString(); runFeeDoEntity.GID = Guid.NewGuid().ToString(); runFeeDoEntity.Category = 4; runFeeDoEntity.BSType = 1; runFeeDoEntity.BillStatus = 2; runFeeDoEntity.Remark = ""; runFeeDoEntity.OrigCurrency = ""; runFeeDoEntity.RunSettleID = strRunSettleID; runFeeDoEntity.InvoiceSettleNO = ""; runFeeDoEntity.CreateUser = strUserID; runFeeDoEntity.CompanyID = strCompanyID; runFeeDoEntities.Add(runFeeDoEntity); } } RunFeeSettlementEntity runFeeSettlementEntity = new RunFeeSettlementEntity(); runFeeSettlementEntity.GID = strRunSettleID; runFeeSettlementEntity.BillType= billtype;//由 runFeeDoEntity.FeeType决定 runFeeSettlementEntity.BillStatus = 1; runFeeSettlementEntity.CreateUser = strUserID; if (this.txt_settleTime.Value.Trim() != "" && this.txt_settleTime.Value.Trim().IndexOf("0001") < 0) { runFeeSettlementEntity.CreateTime = DateTime.Parse(this.txt_settleTime.Value.Trim()); } runFeeSettlementEntity.PayableTime = System.DateTime.MinValue; runFeeSettlementEntity.CustomerName = strCustomerName;//结算单位 runFeeSettlementEntity.SettleType = int.Parse(this.sel_settlemode.Value); runFeeSettlementEntity.Remark = txt_remark.Value.Trim(); runFeeSettlementEntity.Type = 2;//付费结算 runFeeSettlementEntity.VoucherNO = "";//凭证号 runFeeSettlementEntity.FinancialVoucher = ""; runFeeSettlementEntity.CompanyID = strCompanyID; decimal totalRmb = decimal.Parse(totalTable.Rows[0]["TOTALRMB"].ToString()); decimal totalUsd = decimal.Parse(totalTable.Rows[0]["TOTALUSD"].ToString()); decimal FinalRmd = 0; decimal FinalUsd = 0; if (strSettleCurrency == "1") { //人民币结算 FinalRmd = (StatisticSettleAmount(totalUsd, usdToRmb) + totalRmb); //折算汇率 runFeeSettlementEntity.Rate = totalUsd != 0 ? usdToRmb : 1; } else if (strSettleCurrency == "2") { //美元结算 FinalUsd = (StatisticSettleAmount(totalRmb, rmbToUsd) + totalUsd); //折算汇率 runFeeSettlementEntity.Rate = totalRmb != 0 ? rmbToUsd : 1; } else if (strSettleCurrency == "3") { FinalRmd = totalRmb; FinalUsd = totalUsd; //if (FinalRmd != 0) //{ // //折算汇率 // runFeeSettlementEntity.Rate = totalUsd != 0 ? usdToRmb : 1; // usdToRmb = totalUsd != 0 ? usdToRmb : 1; //} //else if (FinalUsd != 0) //{ // //折算汇率 // runFeeSettlementEntity.Rate = decimal.Parse(feeTable.Rows[0]["EXCHANGERATE"].ToString()); // rmbToUsd = decimal.Parse(feeTable.Rows[0]["EXCHANGERATE"].ToString()); //} //else //{ runFeeSettlementEntity.Rate = 1; // usdToRmb = 1; //} } runFeeSettlementEntity.AmountRMB = FinalRmd; runFeeSettlementEntity.AmountUSD = FinalUsd; runFeeSettlementEntity.AccountRMB = this.h_usdaccount.Value.Trim(); runFeeSettlementEntity.AccountUSD = this.h_rmbaccount.Value.Trim(); runFeeSettlementEntity.ChequeNo = this.txt_chequeno.Value.Trim(); runFeeSettlementEntity.ChequeNoUsd = this.txt_chequenousd.Value.Trim(); runFeeSettlementEntity.CHEQUENUMREMARK = "";//支票号备注 int iResult = runFeeDoDA.InsertRunSettle(runFeeDoEntities, runFeeSettlementEntity,strUserID,strShowName,"UNPAYSETTLE"); if (iResult == 1) { ViewState["enter"] = "1";//已经保存成功 ViewState["SaveState"] = "1";//已经保存成功 ViewState["RunSettleID"] = runFeeSettlementEntity.GID;//保存运行结算表GID this.txt_customerName.Value = runFeeSettlementEntity.CustomerName;//结算单位 //Page.ClientScript.RegisterStartupScript(this.GetType(), "key1", ""); Page.ClientScript.RegisterStartupScript(this.GetType(), "key1", ""); } else { ViewState["enter"] = "1"; ViewState.Remove("SaveState"); Page.ClientScript.RegisterStartupScript(this.GetType(), "key2", ""); } } else { string strRunSettleID = ""; RunFeeSettlementEntity origRunFeeSettlementEntity = new RunFeeSettlementEntity(); RunFeeSettlementEntity newRunFeeSettlementEntity = new RunFeeSettlementEntity(); if (ViewState["RunSettleID"] != null) { strRunSettleID = ViewState["RunSettleID"].ToString(); RunFeeSettlementDA runFeeSettlementDA = new RunFeeSettlementDA(); origRunFeeSettlementEntity = runFeeSettlementDA.GetRunFeeSettlementByGID(strRunSettleID); if (origRunFeeSettlementEntity != null) { if (origRunFeeSettlementEntity.GID != null) { LogEntity logEntity = new LogEntity(); logEntity.GID = Guid.NewGuid().ToString(); logEntity.Name = "更新付费结算保存信息"; logEntity.LogType = "UPDATE 更新操作"; logEntity.CreateUserID = strUserID; int iSettleType = int.Parse(this.sel_settlemode.Value); if (origRunFeeSettlementEntity.SettleType != int.Parse(this.sel_settlemode.Value)) { logEntity.LogContent += String.Format(Logger.Instance.GetLogContentTemplate(Logger.LogTypes.UPDATE), "结算方式", GetSettleTypeName(origRunFeeSettlementEntity.SettleType), GetSettleTypeName(iSettleType)); } string strChequeNo = this.txt_chequeno.Value.Trim(); if ((origRunFeeSettlementEntity.ChequeNo ?? "") != strChequeNo) { logEntity.LogContent += String.Format(Logger.Instance.GetLogContentTemplate(Logger.LogTypes.UPDATE), "支票号码RMB", origRunFeeSettlementEntity.ChequeNo, strChequeNo); } string strChequeNoUsd = this.txt_chequenousd.Value.Trim(); if ((origRunFeeSettlementEntity.ChequeNoUsd ?? "") != strChequeNoUsd) { logEntity.LogContent += String.Format(Logger.Instance.GetLogContentTemplate(Logger.LogTypes.UPDATE), "支票号码USD", origRunFeeSettlementEntity.ChequeNoUsd, strChequeNoUsd); } string strVoucherNO = this.txt_voucherNO.Value.Trim(); if ((origRunFeeSettlementEntity.VoucherNO ?? "") != strVoucherNO) { logEntity.LogContent += String.Format(Logger.Instance.GetLogContentTemplate(Logger.LogTypes.UPDATE), "凭证号码", origRunFeeSettlementEntity.VoucherNO, strVoucherNO); } int iResult = runFeeSettlementDA.UpdateRunSettleByGID(strRunSettleID, iSettleType, strChequeNo, strChequeNoUsd, System.DateTime.MinValue, strUserID, strVoucherNO); if (logEntity.LogContent != null) { if (iResult == 1) { logEntity.LogContent = strShowName + " " + logEntity.LogContent; Logger.Instance.WriteLog(logEntity); } } if (iResult == 1) { this.txt_customerName.Value = origRunFeeSettlementEntity.CustomerName;//结算单位 Page.ClientScript.RegisterStartupScript(this.GetType(), "key1", ""); } } } } } } #endregion #region ##### //private int RecordSettleFee() //{ // int iResult = 0; // string settleFee = ""; // string settleTotal = ""; // string customerName = ""; // settleTotal = h_settleinfo.Value; // strFeeCache = h_feecache.Value; // if (strFeeCache.IndexOf("[") >= 0 && strFeeCache.IndexOf("]") > 0) // { // strBillNO = CreateSettleCode(); // settleFee = strFeeCache.Substring(strFeeCache.IndexOf("[") + 1, strFeeCache.IndexOf("]") - strFeeCache.IndexOf("[") - 1); // IList feeDoEntities = new List(); // //settleFee = settleFee.Replace(, "#"); // string[] strFees = settleFee.Split(new string[] { "},{" }, System.StringSplitOptions.RemoveEmptyEntries); // if (strFees.Length > 0) // { // for (int i = 0; i < strFees.Length; i++) // { // strFees[i] = strFees[i].ToString().Replace("{", ""); // strFees[i] = strFees[i].ToString().Replace("}", ""); // string[] strCell = strFees[i].Split(new char[] { ',' }); // if (strCell.Length > 0) // { // FeeDoEntity feeDoEntity = new FeeDoEntity(); // for (int j = 0; j < strCell.Length; j++) // { // string[] strArg = strCell[j].Split(new char[] { ':' }); // switch (strArg[0].Replace("\"", "")) // { // case "id": // feeDoEntity.FeeID = strArg[1].ToString().Replace("\"", "").Trim(); // break; // case "type": // feeDoEntity.FeeType = int.Parse(strArg[1].ToString().Replace("\"", "").Trim()); // break; // case "cur": // feeDoEntity.Currency = strArg[1].ToString().Replace("\"", "").Trim(); // break; // case "stl": // feeDoEntity.Amount = decimal.Parse(strArg[1].ToString().Replace("\"", "").Trim()); // break; // case "cstl": // feeDoEntity.DoAmount = decimal.Parse(strArg[1].ToString().Replace("\"", "").Trim()); // break; // case "ustl": // break; // case "cus": // if (customerName.Equals("")) // { // customerName = UnicodeToGB(strArg[1].ToString().Replace("\"", "").Trim()); // this.txt_customerName.Value = customerName; // } // feeDoEntity.CustomerName = UnicodeToGB(strArg[1].ToString().Replace("\"", "").Trim()); // break; // case "fname": // feeDoEntity.FeeName = UnicodeToGB(strArg[1].ToString().Replace("\"", "").Trim()); // break; // case "bsno": // feeDoEntity.BSNO = strArg[1].ToString().Replace("\"", "").Trim(); // break; // case "orig": // if (!strArg[1].ToString().Replace("\"", "").Trim().Equals("")) // { // feeDoEntity.Orig = int.Parse(strArg[1].ToString().Replace("\"", "").Trim()); // } // break; // case "oname": // if (!strArg[1].ToString().Replace("\"", "").Trim().Equals("")) // { // feeDoEntity.OriginalFeeName = UnicodeToGB(strArg[1].ToString().Replace("\"", "").Trim()); // } // break; // case "ocstl": // if (!strArg[1].ToString().Replace("\"", "").Trim().Equals("")) // { // feeDoEntity.OriginalFeeCSTL = decimal.Parse(strArg[1].ToString().Replace("\"", "").Trim()); // } // break; // default: // break; // } // } // //feeDoEntity.BSNO = ""; // feeDoEntity.MBLNO = ""; // feeDoEntity.HBLNO = ""; // //feeDoEntity.CustomerName = ""; // //feeDoEntity.FeeName = ""; // feeDoEntity.BillNO = strBillNO; // feeDoEntity.GID = Guid.NewGuid().ToString(); // feeDoEntity.Category = 1; // feeDoEntity.BSType = 1; // feeDoEntity.BillStatus = 1; // feeDoEntity.Remark = ""; // feeDoEntities.Add(feeDoEntity); // } // } // } // if (feeDoEntities.Count > 0) // { // IList feeSettlementEntities = new List(); // FeeSettlementEntity feeSettlementEntity = new FeeSettlementEntity(); // feeSettlementEntity.GID = Guid.NewGuid().ToString(); // if (settleTotal != "") // { // string tempSettle = settleTotal.Substring(settleTotal.IndexOf("[") + 1, settleTotal.IndexOf("]") - settleTotal.IndexOf("[") - 1); // string[] tempSettleFees = tempSettle.Split(new string[] { "},{" }, System.StringSplitOptions.RemoveEmptyEntries); // if (tempSettleFees.Length > 0) // { // for (int i = 0; i < tempSettleFees.Length; i++) // { // tempSettleFees[i] = tempSettleFees[i].ToString().Replace("{", ""); // tempSettleFees[i] = tempSettleFees[i].ToString().Replace("}", ""); // string[] strCell = tempSettleFees[i].Split(new char[] { ',' }); // if (strCell.Length > 0) // { // string strCurrency = ""; // for (int j = 0; j < strCell.Length; j++) // { // string[] strArg = strCell[j].Split(new char[] { ':' }); // switch (strArg[0].Replace("\"", "")) // { // case "id": // //feeSettlementEntity.GID = strArg[1].ToString().Replace("\"", "").Trim(); // break; // case "cur": // strCurrency = strArg[1].ToString().Replace("\"", "").Trim(); // break; // case "amount": // if (strCurrency.Equals("RMB")) // { // feeSettlementEntity.AmountRMB = decimal.Parse(strArg[1].ToString().Replace("\"", "").Trim()); // } // else if (strCurrency.Equals("USD")) // { // feeSettlementEntity.AmountUSD = decimal.Parse(strArg[1].ToString().Replace("\"", "").Trim()); // } // break; // case "account": // if (strCurrency.Equals("RMB")) // { // feeSettlementEntity.AccountRMB = strArg[1].ToString().Replace("\"", "").Trim(); // } // else if (strCurrency.Equals("USD")) // { // feeSettlementEntity.AccountUSD = strArg[1].ToString().Replace("\"", "").Trim(); // } // break; // case "bank": // break; // default: // break; // } // } // } // if (tempSettleFees.Length > 1) // { // feeSettlementEntity.Rate = 1; // } // else // { // if (feeSettlementEntity.AmountRMB > 0) // { // feeSettlementEntity.Rate = decimal.Parse(h_usdtormb.Value); // } // else // { // feeSettlementEntity.Rate = decimal.Parse(h_rmbtousd.Value); // } // } // } // } // } // if (feeSettlementEntity.AccountUSD == null) // { // feeSettlementEntity.AccountUSD = ""; // } // if (feeSettlementEntity.AccountRMB == null) // { // feeSettlementEntity.AccountRMB = ""; // } // feeSettlementEntity.BillNO = strBillNO; // feeSettlementEntity.BillType = 1; // feeSettlementEntity.VoucherNO = txt_voucherNO.Value.Trim(); // feeSettlementEntity.SettleUser = strUserID; // feeSettlementEntity.BillStatus = 1; // feeSettlementEntity.SettleMode = 2;//自由结算 // feeSettlementEntity.FinancialVoucher = ""; // feeSettlementEntity.CustomerName = customerName;//结算单位 // feeSettlementEntity.SettleType = int.Parse(this.sel_settlemode.Value); // feeSettlementEntity.Remark = txt_remark.Value.Trim(); // feeSettlementEntity.ChequeNo = txt_chequeno.Value.Trim(); // feeSettlementEntities.Add(feeSettlementEntity); // FeeDoDA feeDoDA = new FeeDoDA(); // //IList feeEntities = new List(); // //FeeDA feeDA = new FeeDA(); // //foreach (FeeDoEntity tempFeeDoEntity in feeDoEntities) // //{ // // FeeEntity feeEntity = new FeeEntity(); // // feeEntity = feeDA.GetFeeByID(tempFeeDoEntity.FeeID); // // feeEntities.Add(feeEntity); // //} // iResult = feeDoDA.InsertFeeDo(feeDoEntities, feeSettlementEntities); // if (iResult == 1) // { // txt_billNO.Value = feeSettlementEntities[0].BillNO; // this.btn_enter.Disabled = true; // this.txt_chequeno.Disabled = true; // h_enter.Value = "0"; // } // } // } // return iResult; //} #endregion private void PostPaySettle(string tempPostSessionName) { int billtype = 0;//1收费2付费 DataTable bsnoTable = null; DataTable feeTable = null; DataTable totalTable = null; DataSet postSet = null; if (Session[tempPostSessionName] != null) { postSet = (DataSet)Session[tempPostSessionName]; } bsnoTable = (DataTable)postSet.Tables[0]; feeTable = (DataTable)postSet.Tables[1]; totalTable = (DataTable)postSet.Tables[2]; string strFeePaySettleID = Guid.NewGuid().ToString(); FeePaySettleDA feePaySettleDA = new FeePaySettleDA(); if (ViewState["RunSettleID"] == null && ViewState["PaySettleID"] == null) { string strCustomerName = ""; //付费申请表信息 FeeSettlementEntity feeSettlementEntity = new FeeSettlementEntity(); feeSettlementEntity.GID = strFeePaySettleID; decimal totalRmb = decimal.Parse(totalTable.Rows[0]["TOTALRMB"].ToString()); decimal totalUsd = decimal.Parse(totalTable.Rows[0]["TOTALUSD"].ToString()); decimal FinalRmd = 0; decimal FinalUsd = 0; if (strSettleCurrency == "1") { //人民币结算 FinalRmd = (StatisticSettleAmount(totalUsd, usdToRmb) + totalRmb); //折算汇率 feeSettlementEntity.Rate = totalUsd != 0 ? usdToRmb : 1; } else if (strSettleCurrency == "2") { //美元结算 FinalUsd = (StatisticSettleAmount(totalRmb, rmbToUsd) + totalUsd); //折算汇率 feeSettlementEntity.Rate = totalRmb != 0 ? rmbToUsd : 1; } else if (strSettleCurrency == "3") { FinalRmd = totalRmb; FinalUsd = totalUsd; //if (FinalRmd != 0) //{ // //折算汇率 // feeSettlementEntity.Rate = totalUsd != 0 ? usdToRmb : 1; // usdToRmb = totalUsd != 0 ? usdToRmb : 1; //} //else if (FinalUsd != 0) //{ // //折算汇率 // feeSettlementEntity.Rate = decimal.Parse(feeTable.Rows[0]["EXCHANGERATE"].ToString()); // rmbToUsd = decimal.Parse(feeTable.Rows[0]["EXCHANGERATE"].ToString()); //} //else //{ feeSettlementEntity.Rate = 1; // usdToRmb = 1; //} } //付费申请费用明细信息 IList feeDoEntities = new List(); for (int j = 0; j < bsnoTable.Rows.Count; j++) { for (int i = 0; i < feeTable.Rows.Count; i++) { if (i == 0) { strCustomerName = feeTable.Rows[i]["CUSTOMERNAME"].ToString(); } if (bsnoTable.Rows[j]["BSNO"].ToString().Trim() != feeTable.Rows[i]["BSNO"].ToString().Trim()) { continue; } FeeDoEntity feeDoEntity = new FeeDoEntity(); feeDoEntity.FeeID = feeTable.Rows[i]["GID"].ToString(); feeDoEntity.FeeType = int.Parse(feeTable.Rows[i]["FEETYPE"].ToString()); billtype = feeDoEntity.FeeType; feeDoEntity.Currency = feeTable.Rows[i]["CURRENCY"].ToString(); feeDoEntity.Amount = decimal.Parse(feeTable.Rows[i]["AMOUNT"].ToString()); feeDoEntity.DoAmount = decimal.Parse(feeTable.Rows[i]["CTL"].ToString()); feeDoEntity.UnsettleAmount = decimal.Parse(feeTable.Rows[i]["UCTL"].ToString()); feeDoEntity.CustomerName = feeTable.Rows[i]["CUSTOMERNAME"].ToString(); feeDoEntity.FeeName = feeTable.Rows[i]["FEENAME"].ToString(); feeDoEntity.OriginalFeeName = feeTable.Rows[i]["FEENAME"].ToString(); feeDoEntity.OriginalFeeCSTL = decimal.Parse(feeTable.Rows[i]["CTL"].ToString()); if (strSettleCurrency == "RMB") { feeDoEntity.ExchangeRate = usdToRmb; } else if (strSettleCurrency == "USD") { feeDoEntity.ExchangeRate = rmbToUsd; } feeDoEntity.BSNO = bsnoTable.Rows[j]["BSNO"].ToString(); feeDoEntity.MBLNO = bsnoTable.Rows[j]["MBLNO"].ToString(); feeDoEntity.HBLNO = bsnoTable.Rows[j]["HBLNO"].ToString(); feeDoEntity.BillNO = ""; feeDoEntity.GID = Guid.NewGuid().ToString(); feeDoEntity.Category = 8; feeDoEntity.BSType = 1; feeDoEntity.BillStatus = 2; feeDoEntity.Remark = ""; if(feeDoEntity.Currency == "USD") { feeDoEntity.ExchangeRate = usdToRmb; } else if (feeDoEntity.Currency == "RMB") { feeDoEntity.ExchangeRate = rmbToUsd; } else { feeDoEntity.ExchangeRate = 1; } feeDoEntity.CompanyID = strCompanyID; feeDoEntities.Add(feeDoEntity); } } feeSettlementEntity.AmountRMB = FinalRmd; feeSettlementEntity.AmountUSD = FinalUsd; feeSettlementEntity.AccountRMB = this.h_rmbaccount.Value.Trim(); feeSettlementEntity.AccountUSD = this.h_usdaccount.Value.Trim(); //预收预付自由结算时,赋值 feeSettlementEntity.ACCOUNTS_CURRENCY = (feeSettlementEntity.AmountUSD == 0) ? "RMB" : "USD";//记账资料_币别 feeSettlementEntity.ACCOUNTS_RATE = feeSettlementEntity.Rate;//记账资料_汇率 feeSettlementEntity.ACCOUNTS_MONEY = (feeSettlementEntity.AmountUSD == 0) ? feeSettlementEntity.AmountRMB : feeSettlementEntity.AmountUSD;//记账资料_金额 feeSettlementEntity.PREPAY_CURRENCY = (feeSettlementEntity.AmountUSD == 0) ? "RMB" : "USD";//预付支资料_币别 feeSettlementEntity.PREPAY_RATE = feeSettlementEntity.Rate;//预付支资料_汇率 feeSettlementEntity.PREPAY_MONEY = 0;//预付支资料_金额 feeSettlementEntity.AHSR_CURRENCY = (feeSettlementEntity.AmountUSD == 0) ? "RMB" : "USD";//实付支资料_币别 feeSettlementEntity.AHSR_RATE = feeSettlementEntity.Rate;//实付支资料_汇率 feeSettlementEntity.AHSR_MONEY = (feeSettlementEntity.AmountUSD == 0) ? feeSettlementEntity.AmountRMB : feeSettlementEntity.AmountUSD;//实付支资料_金额 feeSettlementEntity.FINANCIAL_CURRENCY = (feeSettlementEntity.AmountUSD == 0) ? "RMB" : "USD";//财务费用_币别 feeSettlementEntity.FINANCIAL_RATE = feeSettlementEntity.Rate;//财务费用_汇率 feeSettlementEntity.FINANCIAL_MONEY = 0;//财务费用_金额 feeSettlementEntity.ADVANCE_CURRENCY = (feeSettlementEntity.AmountUSD == 0) ? "RMB" : "USD";//预付支取用资料_币别 feeSettlementEntity.ADVANCE_RATE = feeSettlementEntity.Rate;//预付支取用资料_汇率 feeSettlementEntity.ADVANCE_MONEY = 0;//预付支取用资料_金额 // feeSettlementEntity.BillType = billtype; //由feeDoEntity.FeeType决定 feeSettlementEntity.BillStatus = 1; feeSettlementEntity.SettleMode = 2;//自由结算 feeSettlementEntity.ChequeNo = txt_chequeno.Value.Trim(); feeSettlementEntity.ChequeNoUsd = txt_chequenousd.Value.Trim(); feeSettlementEntity.SettleUser = strUserID; feeSettlementEntity.CustomerName = strCustomerName;//结算单位 feeSettlementEntity.SettleType = int.Parse(this.sel_settlemode.Value); feeSettlementEntity.Remark = txt_remark.Value.Trim(); feeSettlementEntity.CompanyID = strCompanyID; feeSettlementEntity.FinancialVoucher = ""; feeSettlementEntity.VoucherNO = ""; if (this.txt_settleTime.Value.Trim() != "" && this.txt_settleTime.Value.Trim().IndexOf("0001") < 0) { feeSettlementEntity.SettleTime = DateTime.Parse(this.txt_settleTime.Value.Trim()); } int iResult = feePaySettleDA.InsertFeePaySettle(feeDoEntities, feeSettlementEntity); if (iResult == 1) { ViewState["enter"] = "1"; ViewState["PaySettleID"] = feeSettlementEntity.GID; this.btn_enter.Disabled = true; this.btn_post.Disabled = true; this.txt_customerName.Value = feeSettlementEntity.CustomerName; //判断是否自动生成凭证 T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA(); string strISSETTLEMENTS = T_ALL_DA.GetStrSQL("ISSETTLEMENTS", "SELECT TOP 1 ISSETTLEMENTS FROM cw_design"); if (strISSETTLEMENTS.Trim() == "True") { string strISSETTLEMENTSOPEN = T_ALL_DA.GetStrSQL("ISSETTLEMENTSOPEN", "SELECT TOP 1 ISSETTLEMENTSOPEN FROM cw_design"); if (strISSETTLEMENTSOPEN.Trim() == "True") { Page.ClientScript.RegisterStartupScript(this.GetType(), "key1", ""); } else { Page.ClientScript.RegisterStartupScript(this.GetType(), "key1", ""); } } else { Page.ClientScript.RegisterStartupScript(this.GetType(), "key1", ""); } } else { ViewState["enter"] = "2"; Page.ClientScript.RegisterStartupScript(this.GetType(), "key2", ""); } } else if (ViewState["RunSettleID"] != null && ViewState["PaySettleID"] == null) { //是已保存未结算的付费,则将结算运行表中的结算信息进行结算 string strRunSettleID = ""; string strBillNO = ""; if (ViewState["RunSettleID"] != null) { strRunSettleID = ViewState["RunSettleID"].ToString(); string strRemark = this.txt_remark.Value.Trim(); RunFeeSettlementDA runFeeSettlementDA = new RunFeeSettlementDA(); RunFeeSettlementEntity runFeeSettlementEntity = runFeeSettlementDA.GetRunFeeSettlementByGID(strRunSettleID); if (runFeeSettlementEntity != null) { int iResult = feePaySettleDA.PostSavePaySettle(strFeePaySettleID, strRunSettleID, strUserID, strRemark, strCompanyID); if (iResult == 1) { strBillNO = feePaySettleDA.GetBillNoByPaySettleID(strFeePaySettleID); ViewState["enter"] = "1"; this.btn_enter.Disabled = true; this.btn_post.Disabled = true; LogEntity logEntity = new LogEntity(); logEntity.GID = Guid.NewGuid().ToString(); logEntity.Name = "添加付费结算信息"; logEntity.LogType = "INSERT 插入操作"; logEntity.CreateUserID = strUserID; logEntity.LogContent = strShowName + String.Format(Logger.Instance.GetLogContentTemplate(Logger.LogTypes.INSERT), "付费结算", "由编号:" + runFeeSettlementEntity.SerialNO + " 生成 付费结算 编号:" + strBillNO); Logger.Instance.WriteLog(logEntity); ViewState["PaySettleID"] = strFeePaySettleID; this.txt_customerName.Value = runFeeSettlementEntity.CustomerName; //判断是否自动生成凭证 T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA(); string strISSETTLEMENTS = T_ALL_DA.GetStrSQL("ISSETTLEMENTS", "SELECT TOP 1 ISSETTLEMENTS FROM cw_design"); if (strISSETTLEMENTS.Trim() == "True") { string strISSETTLEMENTSOPEN = T_ALL_DA.GetStrSQL("ISSETTLEMENTSOPEN", "SELECT TOP 1 ISSETTLEMENTSOPEN FROM cw_design"); if (strISSETTLEMENTSOPEN.Trim() == "True") { Page.ClientScript.RegisterStartupScript(this.GetType(), "key1", "");//window.parent.opener.location.href = window.parent.opener.location.href; } else { Page.ClientScript.RegisterStartupScript(this.GetType(), "key1", "");//window.parent.opener.location.href = window.parent.opener.location.href; } } else { Page.ClientScript.RegisterStartupScript(this.GetType(), "key1", "");//window.parent.opener.location.href = window.parent.opener.location.href; } } else { ViewState["enter"] = "2"; Page.ClientScript.RegisterStartupScript(this.GetType(), "key2", ""); } } } } } private string CreateSettleCode() { int CodeLength = 4; string strSettleCode = ""; //获取分公司的票号头字符 T_ALL_DA T_ALL_DA = new EntityDA.T_ALL_DA(); string tempBANKSHEAD = T_ALL_DA.GetStrSQL("BANKSHEAD", "SELECT TOP 1 BANKSHEAD FROM company WHERE GID='" + strCompanyID.Trim() + "'"); string strFeeType = tempBANKSHEAD+"CR"; FeeDoDA feeDoDA = new FeeDoDA(); DateTime nowDateTime = feeDoDA.getServerDateTime(); string strYear = nowDateTime.Year.ToString(); string strMonth = nowDateTime.Month.ToString().Length < 2 ? "0" + nowDateTime.Month.ToString() : nowDateTime.Month.ToString(); //string strDay = nowDateTime.Day.ToString(); string strDateTime = strYear + strMonth; string strCodePrefix = strFeeType + strDateTime; //string strSql = "SELECT TOP 1 BILLNO FROM ch_fee_do WHERE BILLNO LIKE '" + strFeeType + strDateTime + "%' ORDER BY BILLNO DESC"; string strSql = " SELECT TOP 1 BILLNO FROM " + " (SELECT BILLNO FROM ch_fee_do WHERE BILLNO LIKE '" + strFeeType + strDateTime + "%' UNION " + " SELECT BILLNO FROM ch_fee_payapplication WHERE BILLNO LIKE '" + strFeeType + strDateTime + "%') as A ORDER BY BILLNO DESC"; DataTable billTable = feeDoDA.GetExcuteSql(strSql).Tables[0]; ArrayList codeArg = new ArrayList(); for (int i = 0; i < CodeLength; i++) { codeArg.Add(0); } string strCode = "";//编号 if (billTable.Rows.Count > 0) { string oldCode = billTable.Rows[0][0].ToString(); if (oldCode.IndexOf(strCodePrefix) >= 0) { oldCode = oldCode.Substring(strCodePrefix.Length, oldCode.Length - strCodePrefix.Length); if (oldCode.Length == CodeLength) { for (int i = 0; i < oldCode.Length; i++) { if (oldCode[i].ToString().IndexOf("0") == 0) { oldCode = oldCode.Remove(i, 1); i = -1; continue; } else { break; } } } } int newNum = int.Parse(oldCode); newNum = newNum + 1; string strNewNum = newNum.ToString(); int codeArgCount = codeArg.Count - 1; for (int i = strNewNum.Length - 1; i >= 0; i--) { codeArg[codeArgCount] = strNewNum[i]; codeArgCount--; } //for (int i = 0; i < strNewNum.Length; i++) //{ // codeArg[i] = strNewNum[i]; //} } else { int iOld = int.Parse(codeArg[codeArg.Count - 1].ToString()); codeArg[codeArg.Count - 1] = (iOld + 1).ToString(); } for (int i = 0; i < codeArg.Count; i++) { strCode += codeArg[i].ToString(); } strSettleCode = strFeeType + strDateTime + strCode; return strSettleCode; } #region Unicode转换成GB2312 /// /// Unicode转换成GB2312 /// /// /// public string UnicodeToGB(string text) { MatchCollection mc = Regex.Matches(text, "([\\w]+)|(\\\\u([\\w]{4}))"); if (mc != null && mc.Count > 0) { StringBuilder sb = new StringBuilder(); foreach (Match m2 in mc) { string v = m2.Value; if (v.IndexOf("\\") >= 0) { string word = v.Substring(2); byte[] codes = new byte[2]; int code = Convert.ToInt32(word.Substring(0, 2), 16); int code2 = Convert.ToInt32(word.Substring(2), 16); codes[0] = (byte)code2; codes[1] = (byte)code; sb.Append(Encoding.Unicode.GetString(codes)); } else { sb.Append(v); } } return sb.ToString(); } else { return text; } } #endregion #region 不同币别金额换算 /// /// 不同币别金额换算 /// /// 原币别金额 /// 汇率 /// 返回折算后的金额 private decimal StatisticSettleAmount(decimal tempOrigAmount, decimal tempRate) { decimal result = 0; result = decimal.Parse(C1Round((double.Parse((tempOrigAmount * tempRate).ToString())), 2).ToString()); return result; } #endregion #region 金额四舍五入 /// /// 金额四舍五入 /// /// 金额值 /// 小数点后位数 /// 返回Double型四舍五入金额 public double C1Round(double value, int digit) { double vt = Math.Pow(10, digit); double vx = value * vt; vx += 0.5; return (Math.Floor(vx) / vt); } #endregion private string GetSettleTypeName(int iSettleType) { string strResult = ""; switch (iSettleType) { case 1: strResult = "现金"; break; case 2: strResult = "支票"; break; case 3: strResult = "电汇"; break; case 4: strResult = "转账"; break; case 5: strResult = "承兑汇票"; break; } return strResult; } protected void btn_cancelsettle_Click(object sender, EventArgs e) { string strPaySettleID = ""; if (ViewState["PaySettleID"] != null) { strPaySettleID = ViewState["PaySettleID"].ToString().Trim(); FeePaySettleDA feePaySettleDA = new FeePaySettleDA(); FeeSettlementDA feeSettlementDA = new FeeSettlementDA(); FeeSettlementEntity feeSettlementEntity = new FeeSettlementEntity(); feeSettlementEntity = feeSettlementDA.GetFeeSettlementByGID(strPaySettleID); if (feeSettlementEntity != null) { if (feeSettlementEntity.GID != null) { int iResult = feePaySettleDA.CacelPaySettle(strPaySettleID, feeSettlementEntity.BillNO, strUserID, feeSettlementEntity.CompanyID); if (iResult == 1) { LogEntity logEntity = new LogEntity(); logEntity.GID = Guid.NewGuid().ToString(); logEntity.Name = "撤销付费结算信息"; logEntity.LogType = "CANCEL 撤销操作"; logEntity.CreateUserID = strUserID; logEntity.LogContent = strShowName + String.Format(Logger.Instance.GetLogContentTemplate(Logger.LogTypes.CANCEL), "付费结算", "结算单号:" + feeSettlementEntity.BillNO); Logger.Instance.WriteLog(logEntity); this.btn_enter.Disabled = true; this.btn_cancelsettle.Enabled = false; this.btn_post.Disabled = true; Page.ClientScript.RegisterStartupScript(this.GetType(), "key1", ""); } } } } } } }