|
|
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.WorkFlow;
|
|
|
using DSWeb.Log;
|
|
|
|
|
|
namespace DSWeb.Settlements
|
|
|
{
|
|
|
public partial class DoRecvApplication : System.Web.UI.Page
|
|
|
{
|
|
|
private string strBillNO;
|
|
|
private string strUserID;
|
|
|
private string strCacheName;
|
|
|
private string strSettleCurrency;
|
|
|
private decimal usdToRmb;
|
|
|
private decimal rmbToUsd;
|
|
|
private string strModuleName;//模块名称
|
|
|
private string strCompanyID;//公司GID
|
|
|
private string strDeptName;//部门名称
|
|
|
private string strShowName;
|
|
|
private string stroplb;//业务类别
|
|
|
|
|
|
protected void Page_Load(object sender, EventArgs e)
|
|
|
{
|
|
|
if (Session["USERID"] != null)
|
|
|
{
|
|
|
this.strUserID = Session["USERID"].ToString();
|
|
|
}
|
|
|
if (Session["SHOWNAME"] != null)
|
|
|
{
|
|
|
this.strShowName = Session["SHOWNAME"].ToString();
|
|
|
}
|
|
|
if (Session["COMPANYID"] != null)
|
|
|
{
|
|
|
strCompanyID = Session["COMPANYID"].ToString();
|
|
|
}
|
|
|
if (Session["DEPTNAME"] != null)
|
|
|
{
|
|
|
strDeptName = Session["DEPTNAME"].ToString();
|
|
|
}
|
|
|
|
|
|
if (Request.QueryString["oplb"] != null)
|
|
|
{
|
|
|
stroplb = Request.QueryString["oplb"].ToString();
|
|
|
}
|
|
|
if (Request.QueryString["mod"] != null)
|
|
|
{
|
|
|
strModuleName = Request.QueryString["mod"].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();
|
|
|
}
|
|
|
|
|
|
InitDoSettlement();
|
|
|
if(ViewState["enter"] == null)
|
|
|
{
|
|
|
ResovlePostSessionTable(strCacheName);
|
|
|
ViewState["enter"] = "0";//已经完成初始化
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (h_enter.Value.Trim().Equals("2"))
|
|
|
{
|
|
|
if (ViewState["enter"] != null)
|
|
|
{
|
|
|
PostPaySettleRequest(strCacheName);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
#region 提交收费申请
|
|
|
/// <summary>
|
|
|
/// 提交收费申请
|
|
|
/// </summary>
|
|
|
private void PostPaySettleRequest(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];
|
|
|
if (bsnoTable == null || feeTable == null || totalTable == null || bsnoTable.Rows.Count < 1 || feeTable.Rows.Count < 1 || totalTable.Rows.Count < 1)
|
|
|
{
|
|
|
ViewState["enter"] = "2";
|
|
|
Page.ClientScript.RegisterStartupScript(this.GetType(), "key2", "<script>alert('缓存信息出错,申请提交失败,请重新登录系统!');refresh()</script>");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
int result = 0;//为0表示只有一种业务类型,大于0表示有多个
|
|
|
string bsnotypeName = GetOplbnameByBsno(bsnoTable.Rows[0]["BSNO"].ToString().Trim());
|
|
|
for (int i = 1; i < bsnoTable.Rows.Count; i++)
|
|
|
{
|
|
|
if (bsnotypeName != GetOplbnameByBsno(bsnoTable.Rows[i]["BSNO"].ToString().Trim()))
|
|
|
{
|
|
|
result++;
|
|
|
break;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
string strFeePayApplicationID = Guid.NewGuid().ToString();
|
|
|
string strCustomerName = "";
|
|
|
//收费申请费用明细信息
|
|
|
IList<FeeDoEntity> feeDoEntities = new List<FeeDoEntity>();
|
|
|
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());
|
|
|
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 == "1")//RMB
|
|
|
{
|
|
|
feeDoEntity.ExchangeRate = usdToRmb;
|
|
|
}
|
|
|
else if (strSettleCurrency == "2")//USD
|
|
|
{
|
|
|
if (rmbToUsd == 0 || rmbToUsd.ToString().Trim().Equals("0.00000") || rmbToUsd == 1 || rmbToUsd.ToString().Trim().Equals("1.00000"))
|
|
|
{
|
|
|
feeDoEntity.ExchangeRate = decimal.Parse(feeTable.Rows[i]["EXCHANGERATE"].ToString());
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
feeDoEntity.ExchangeRate = rmbToUsd;
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
feeDoEntity.ExchangeRate = decimal.Parse(feeTable.Rows[i]["EXCHANGERATE"].ToString());
|
|
|
}
|
|
|
|
|
|
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 = 4;
|
|
|
feeDoEntity.BSType = 1;
|
|
|
feeDoEntity.BillStatus = 2;
|
|
|
feeDoEntity.Remark = "";
|
|
|
feeDoEntity.CompanyID = strCompanyID;
|
|
|
feeDoEntities.Add(feeDoEntity);
|
|
|
}
|
|
|
}
|
|
|
//收费申请表信息
|
|
|
ChFeeRecvApplicationEntity ChFeeRecvApplicationEntity = new ChFeeRecvApplicationEntity();
|
|
|
ChFeeRecvApplicationEntity.GID = strFeePayApplicationID;
|
|
|
|
|
|
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);
|
|
|
//折算汇率
|
|
|
ChFeeRecvApplicationEntity.RATE = totalUsd != 0 ? usdToRmb : 1;
|
|
|
}
|
|
|
else if (strSettleCurrency == "2")
|
|
|
{
|
|
|
//美元结算
|
|
|
FinalUsd = (StatisticSettleAmount(totalRmb, rmbToUsd) + totalUsd);
|
|
|
//折算汇率
|
|
|
ChFeeRecvApplicationEntity.RATE = totalRmb != 0 ? rmbToUsd : 1;
|
|
|
}
|
|
|
else if (strSettleCurrency == "3")
|
|
|
{
|
|
|
FinalRmd = totalRmb;
|
|
|
FinalUsd = totalUsd;
|
|
|
ChFeeRecvApplicationEntity.RATE = 1;
|
|
|
}
|
|
|
|
|
|
ChFeeRecvApplicationEntity.AMOUNTRMB = FinalRmd;
|
|
|
ChFeeRecvApplicationEntity.AMOUNTUSD = FinalUsd;
|
|
|
ChFeeRecvApplicationEntity.BILLSTATUS = 0;
|
|
|
ChFeeRecvApplicationEntity.INVOICETITLE = txt_chequeNo.Value.Trim();
|
|
|
ChFeeRecvApplicationEntity.APPLICANT = strUserID;
|
|
|
ChFeeRecvApplicationEntity.APPLYTIME = DateTime.Parse(txt_applyTime.Value.Trim());
|
|
|
ChFeeRecvApplicationEntity.RECVTIME = txt_payableDate.Value.Trim().Equals("") ? System.DateTime.MinValue : DateTime.Parse(txt_payableDate.Value.Trim());
|
|
|
ChFeeRecvApplicationEntity.CUSTOMERNAME = strCustomerName;//结算单位
|
|
|
ChFeeRecvApplicationEntity.SETTLETYPE = int.Parse(this.sel_settlemode.Value);
|
|
|
ChFeeRecvApplicationEntity.REMARK = txt_remark.Value.Trim();
|
|
|
ChFeeRecvApplicationEntity.COMPANYID = strCompanyID;
|
|
|
ChFeeRecvApplicationEntity.INVOICENUMREMARK = this.chequenumermark.Text.Trim();//发票号备注
|
|
|
|
|
|
ChFeeRecvApplicationDA ChFeeRecvApplicationDA = new ChFeeRecvApplicationDA();
|
|
|
int iResult = ChFeeRecvApplicationDA.InsertFeeRecvApplication(feeDoEntities, ChFeeRecvApplicationEntity);
|
|
|
|
|
|
if (iResult == 1)
|
|
|
{
|
|
|
ViewState["enter"] = "1";
|
|
|
this.btn_enter.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), "收费申请", "申请编号:" + strBillNO);
|
|
|
|
|
|
Logger.Instance.WriteLog(logEntity);
|
|
|
|
|
|
ViewState["PaySettleAppID"] = strFeePayApplicationID;
|
|
|
Page.ClientScript.RegisterStartupScript(this.GetType(), "key1", "<script>alert('申请提交成功');openAction('" + strFeePayApplicationID + "');</script>");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
ViewState["enter"] = "2";
|
|
|
Page.ClientScript.RegisterStartupScript(this.GetType(), "key2", "<script>alert('申请提交失败');refresh()</script>");
|
|
|
}
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
/// <summary>
|
|
|
/// 获取业务类型
|
|
|
/// </summary>
|
|
|
/// <param name="bsno"></param>
|
|
|
/// <returns></returns>
|
|
|
protected string GetOplbnameByBsno(string bsno)
|
|
|
{
|
|
|
T_ALL_DA tallda = new T_ALL_DA();
|
|
|
return tallda.GetStrSQL("OPLBNAME", "SELECT OPLBNAME FROM VW_Settlement WHERE BSNO='" + bsno.Trim() + "'");
|
|
|
}
|
|
|
|
|
|
private void InitDoSettlement()
|
|
|
{
|
|
|
txt_applicant.Value = strShowName;
|
|
|
txt_applyTime.Value = DateTime.Now.ToString();
|
|
|
txt_billStatus.Value = "锁定";
|
|
|
}
|
|
|
|
|
|
#region 获取缓存收费申请合计信息
|
|
|
/// <summary>
|
|
|
/// 获取缓存收费申请合计信息
|
|
|
/// </summary>
|
|
|
/// <param name="tempPostSessionName">缓存名称</param>
|
|
|
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;
|
|
|
|
|
|
string currency = "";
|
|
|
|
|
|
if (strSettleCurrency == "1")
|
|
|
{
|
|
|
//人民币结算
|
|
|
FinalRmd = (StatisticSettleAmount(totalUsd, usdToRmb) + totalRmb);
|
|
|
currency = "RMB";
|
|
|
}
|
|
|
else if (strSettleCurrency == "2")
|
|
|
{
|
|
|
//美元结算
|
|
|
FinalUsd = (StatisticSettleAmount(totalRmb, rmbToUsd) + totalUsd);
|
|
|
currency = "USD";
|
|
|
}
|
|
|
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("\"currency\":\"" + currency + "\"");
|
|
|
|
|
|
totalBuilder.Append("}");
|
|
|
totalBuilder.Append("]");
|
|
|
totalBuilder.Append("}");
|
|
|
|
|
|
h_total.Value = totalBuilder.ToString();
|
|
|
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 不同币别金额换算
|
|
|
/// <summary>
|
|
|
/// 不同币别金额换算
|
|
|
/// </summary>
|
|
|
/// <param name="tempOrigAmount">原币别金额</param>
|
|
|
/// <param name="tempRate">汇率</param>
|
|
|
/// <returns>返回折算后的金额</returns>
|
|
|
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 金额四舍五入
|
|
|
/// <summary>
|
|
|
/// 金额四舍五入
|
|
|
/// </summary>
|
|
|
/// <param name="value">金额值</param>
|
|
|
/// <param name="digit">小数点后位数</param>
|
|
|
/// <returns>返回Double型四舍五入金额</returns>
|
|
|
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;
|
|
|
}
|
|
|
}
|
|
|
}
|