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.
DS7/DSWeb/Settlements/PaySettlementEdit.aspx.cs

451 lines
23 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.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);
}
}
}
}
/// <summary>
/// 执行更新预收预付信息
/// </summary>
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", "<script>alert('此“预付支资料”已使用,不允许操作!请先删除已使用的“预付支取用资料”!');</script>");
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", "<script>alert('付费结算成功');window.parent.opener.location.href = window.parent.opener.location.href;window.close();</script>");
}
else
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "key2", "<script>alert('付费结算失败');</script>");
}
#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();
}
}
}
}