You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

425 lines
17 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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;
}
}
}