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.

5185 lines
249 KiB
C#

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 System.Text;
using DSWeb.Models;
using DSWeb.EntityDA;
using System.Text.RegularExpressions;
using System.Collections.Generic;
using DSWeb.Authority;
namespace DSWeb.Settlements
{
public partial class SettlementGridSource : PageBase
{
private string strHandle;//操作方式
private string strCondition;//委托条件查询
private string strBSNO;//委托编号GID
private string strSearch;//查询条件
private string strFeeSearch;//费用查询条件
private string strCurrency;//币别名称
private string strBillNO;//结算编号
private string strALLBSNO;//所有委托信息
private string strOrderCacheName;//缓存名称
private string strSelectedOrder;//已经选择的委托信息
private string strCheckType;//全选类型 值"check"选中的值 值"uncheck"去除选择的值
private string strFeeID;//费用GID
private string strPostSessionID;//提交发票申请Session
private decimal dExchangeRate;//折算汇率
private decimal dCSTL;//本次结算
private decimal dUSTL;//未结金额
private int iCurrentPage;//当前页数
private int iShowPage;//显示最大页数
private string strSettlementID;//收费结算GID
private string strCompanyID;//公司GID
private string strShowName;//用户显示名
private string strDeptName;//部门名称
private string strDoTypeName;//调用页面标识
private string strUserID;//登录人GID
private string strVerifyCacheName;//实收核销缓存名称
private string strRecvAmountGID;//实收核销费用GID
private string strPayAppGID;//付费申请GID
private string strTotalCacheName;//结算合计缓存名称
private string strBsnoCacheName;//委托缓存名称
private string stroplb;//业务类别
private string strbstype;//业务类别
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["handle"] != null)
{
strHandle = Request.QueryString["handle"].ToString().Trim().ToLower();
}
if (Request.QueryString["oplb"] != null)
{
stroplb = Request.QueryString["oplb"].ToString().Trim();
}
if (Request.QueryString["bstype"] != null)
{
strbstype = Request.QueryString["bstype"].ToString().Trim();
}
if (Request.QueryString["condition"] != null)
{
strCondition = Request.QueryString["condition"].ToString();
}
if (Request.QueryString["bsno"] != null)
{
strBSNO = Request.QueryString["bsno"].ToString();
}
if (Request.QueryString["billno"] != null)
{
strBillNO = Request.QueryString["billno"].ToString();
}
if (Request.QueryString["payappid"] != null)
{
strPayAppGID = Request.QueryString["payappid"].ToString();
}
if (Request.QueryString["search"] != null)
{
UnicodeEncoding unicode = new UnicodeEncoding();
strSearch = unicode.GetString(unicode.GetBytes(Regex.Unescape(Request.QueryString["search"].ToString())));
}
if (Request.QueryString["fsearch"] != null)
{
UnicodeEncoding unicode = new UnicodeEncoding();
strFeeSearch = unicode.GetString(unicode.GetBytes(Regex.Unescape(Request.QueryString["fsearch"].ToString())));
}
if (Request.QueryString["all"] != null)
{
UnicodeEncoding unicode = new UnicodeEncoding();
strALLBSNO = unicode.GetString(unicode.GetBytes(Regex.Unescape(Request.QueryString["all"].ToString())));
}
if (Request.QueryString["ordercachename"] != null)
{
strOrderCacheName = Request.QueryString["ordercachename"].ToString();
}
if (Request.QueryString["selectedorder"] != null)
{
strSelectedOrder = Request.QueryString["selectedorder"].ToString();
}
if (Request.QueryString["op"] != null)
{
strCheckType = Request.QueryString["op"].ToString();
}
if (Request.QueryString["feeid"] != null)
{
strFeeID = Request.QueryString["feeid"].ToString().Trim();
}
if (Request.QueryString["postsession"] != null)
{
strPostSessionID = Request.QueryString["postsession"].ToString();
}
if (Request.QueryString["exchange"] != null)
{
dExchangeRate = decimal.Parse(Request.QueryString["exchange"].ToString());
}
if (Request.QueryString["cstl"] != null)
{
dCSTL = decimal.Parse(Request.QueryString["cstl"].ToString());
}
if (Request.QueryString["ustl"] != null)
{
dUSTL = decimal.Parse(Request.QueryString["ustl"].ToString());
}
if (Request.QueryString["currency"] != null)
{
strCurrency = Request.QueryString["currency"].ToString().Trim().ToUpper();
}
if (Request.QueryString["cur_page"] != null)
{
iCurrentPage = int.Parse(Request.QueryString["cur_page"].ToString().Trim());
}
else
{
iCurrentPage = 0;
}
if (Request.QueryString["show_page"] != null)
{
iShowPage = int.Parse(Request.QueryString["show_page"].ToString().Trim());
}
else
{
iShowPage = 0;
}
if (Request.QueryString["settlementid"] != null)
{
strSettlementID = Request.QueryString["settlementid"].ToString();
}
if (Request.QueryString["do"] != null)
{
strDoTypeName = Request.QueryString["do"].ToString().ToLower();
}
if (Request.QueryString["verifycachename"] != null)
{
strVerifyCacheName = Request.QueryString["verifycachename"].ToString();
}
if (Request.QueryString["recvamountid"] != null)
{
strRecvAmountGID = Request.QueryString["recvamountid"].ToString();
}
if (Request.QueryString["totalcachename"] != null)
{
strTotalCacheName = Request.QueryString["totalcachename"].ToString();
}
if (Request.QueryString["bsnocachename"] != null)
{
strBsnoCacheName = Request.QueryString["bsnocachename"].ToString();
}
if (strHandle != null)
{
if (strHandle == "orderlist")
{
Response.Write(GetSeaeOrder());
}
else if (strHandle == "feelist" && strBSNO != null)
{
Response.Write(GetFeeList(strBSNO));
}
else if (strHandle == "ordersearch")
{
Response.Write(GetSeaeOrderBySearch(strSearch));
}
else if (strHandle == "billlist")
{
Response.Write(GetSettleBill(strBillNO));
}
else if (strHandle == "settlelist")
{
Response.Write(GetSettleList());
}
else if (strHandle == "settlelistpage")
{
Response.Write(GetSettleListPage());
}
else if (strHandle == "orderfee")
{
Response.Write(GetSelectedOrderFee(strBSNO));
}
else if (strHandle == "bankinfo")
{
Response.Write(GetBankInfoList());
}
else if (strHandle == "cacheorder" && strOrderCacheName != null && strBsnoCacheName != null && strTotalCacheName != null && strSearch != null)
{
//当全选委托时缓存数据
//Response.Write(CacheOrderFee(strSelectedOrder, strOrderCacheName));
Response.Write(CheckAllOrder(strSearch, strBsnoCacheName, strOrderCacheName, strTotalCacheName, strCheckType));
}
else if (strHandle == "checkorder" && strBSNO != null && strOrderCacheName != null && strCheckType != null && strBsnoCacheName != null && strTotalCacheName != null)
{
//单选委托信息
Response.Write(ExcuteCheckOrder(strBSNO, strCheckType, strOrderCacheName,strBsnoCacheName,strTotalCacheName));
}
else if (strHandle == "checkfee" && strFeeID != null && strOrderCacheName != null && strCheckType != null && strBsnoCacheName != null && strTotalCacheName != null && strBSNO != null)
{
Response.Write(ExcuteCheckFee(strFeeID, strCheckType, strOrderCacheName, strBsnoCacheName, strTotalCacheName, strBSNO));
}
else if (strHandle == "checkallfee" && strBSNO != null && strOrderCacheName != null && strCheckType != null)
{
//费用全选操作
Response.Write(ExcuteCheckAllFee(strBSNO, strCheckType, strOrderCacheName, strBsnoCacheName, strTotalCacheName));
}
else if (strHandle == "validatepost" && strOrderCacheName != null)
{
//查看是否有不同的结算单位
Response.Write(ValidatePostInfo(strOrderCacheName));
}
else if (strHandle == "postrecvsettle" && strPostSessionID != null && strOrderCacheName != null)
{
//提交收费结算SESSION信息
Response.Write(PostRecvSettlementSession(strPostSessionID, strOrderCacheName));
}
else if (strHandle == "postpaysettle" && strPostSessionID != null && strOrderCacheName != null)
{
//提交付费申请SESSION信息
Response.Write(PostPaySettlementSession(strPostSessionID,strBsnoCacheName,strOrderCacheName,strTotalCacheName));
}
else if (strHandle == "changefee" && strOrderCacheName != null && strFeeID != null && strBsnoCacheName != null && strTotalCacheName != null && strBSNO != null)
{
//更改本次结算费用金额
Response.Write(ChangeFeeCstl(strOrderCacheName, strFeeID, dCSTL, dUSTL, strBsnoCacheName, strTotalCacheName, strBSNO));
}
else if (strHandle == "settleeditfee" && strSettlementID != null && strBSNO != null)
{
Response.Write(GetSettlementEditFeeByGID(strSettlementID, strBSNO));
}
else if (strHandle == "paysettleeditfee" && strSettlementID != null && strBSNO != null)
{
Response.Write(GetSettlementEditFeeByGID(strSettlementID, strBSNO));
}
else if (strHandle == "payauditfeelist" && strBSNO != null)
{
Response.Write(GetPaySettleApplicationList(strBSNO));
}
else if (strHandle == "cancelrecvsettle" && strBillNO != null)
{
//撤销收费结算
Response.Write(CancelRecvSettlement(strUserID, strBillNO));
}
else if (strHandle == "cancelpaysettle" && strBillNO != null)
{
Response.Write(CancelPaySettlement(strUserID, strBillNO));
}
else if (strHandle == "getrecvamount")
{
Response.Write(GetReceiveAmountList());
}
else if (strHandle == "getrecvamountpage")
{
Response.Write(GetReceiveAmountListPage());
}
else if (strHandle == "getunverfiyrecvamount")
{
Response.Write(GetUnverifyReceiveAmountList());
}
else if (strHandle == "getunverfiyrecvamountpage")
{
Response.Write(GetUnverifyReceiveAmountListPage());
}
else if (strHandle == "cacheverify")
{
Response.Write(CacheReceiveAmountVerify(strVerifyCacheName,strRecvAmountGID));
}
else if (strHandle == "getverifycache" && strVerifyCacheName != null)
{
Response.Write(GetVerifyCacheRecvAmount(strVerifyCacheName));
}
else if (strHandle == "deleterecvamount" && strRecvAmountGID != null)
{
Response.Write(DeleteReceiveAmountByGID(strRecvAmountGID));
}
else if (strHandle == "refreshorder" && strOrderCacheName != null && strBsnoCacheName != null && strTotalCacheName != null && strSearch != null)
{
Response.Write(RefreshOrder(strSearch, strBsnoCacheName, strOrderCacheName, strTotalCacheName, strCheckType));
}
}
}
#region 删除实收费用
/// <summary>
/// 删除实收费用
/// </summary>
/// <param name="tempRecvAmountGID">实收费用GID</param>
/// <returns>值1表示删除成功 值不等于1表示删除失败</returns>
private int DeleteReceiveAmountByGID(string tempRecvAmountGID)
{
int iResult = 0;
ReceiveAmountDA receiveAmountDA = new ReceiveAmountDA();
ReceiveAmountEntity receiveAmountEntity = new ReceiveAmountEntity();
receiveAmountEntity = receiveAmountDA.GetRecvAmountByGID(tempRecvAmountGID);
if (receiveAmountEntity != null)
{
if (receiveAmountEntity.GID != null)
{
if (receiveAmountEntity.IsFinish)
{
iResult = -2;//实收费用已经核销不能删除
}
else if (receiveAmountEntity.DoAmount > 0)
{
iResult = -3;//实收费用已经进行了部分核销不能删除
}
else if (receiveAmountEntity.IsDelete)
{
iResult = -4;//实收费用已被删除,不能重复操作
}
else
{
iResult = receiveAmountDA.DeleteRecvAmountByGID(tempRecvAmountGID);
}
}
}
return iResult;
}
#endregion
#region 获取实收缓存信息
/// <summary>
/// 获取实收缓存信息
/// </summary>
/// <param name="tempVerifyCacheName">实收缓存名称</param>
/// <returns>返回JSON数据</returns>
private string GetVerifyCacheRecvAmount(string tempVerifyCacheName)
{
ReceiveAmountDA receiveAmountDA = new ReceiveAmountDA();
DataTable sourceTable;
DataTable cacheTable = new DataTable();
if (Session[tempVerifyCacheName] != null)
{
cacheTable = (DataTable)Session[tempVerifyCacheName];
}
string strRecvSql = "";
if (cacheTable != null)
{
if (cacheTable.Rows.Count > 0)
{
for (int i = 0; i < cacheTable.Rows.Count; i++)
{
strRecvSql += "'"+cacheTable.Rows[i]["GID"].ToString() + "',";
}
}
}
if (strRecvSql.Trim().EndsWith(","))
{
strRecvSql = strRecvSql.Trim().Substring(0, strRecvSql.Trim().Length - 1);
}
string strSql = String.Format("SELECT A.GID,B.SHORTNAME,A.CURRENCY,(ISNULL(A.RECVAMOUNT,0) - ISNULL(A.DOAMOUNT,0)) AS DOAMOUNT,(ISNULL(A.RECVAMOUNT,0) - ISNULL(A.DOAMOUNT,0)) AS UNSETTLE "
+ " FROM ch_fee_recvamount AS A INNER JOIN info_client AS B ON A.CLIENTID = B.GID WHERE A.GID IN ({0})", strRecvSql);
sourceTable = receiveAmountDA.GetExcuteSql(strSql).Tables[0];
StringBuilder sourceBuilder = new StringBuilder();
sourceBuilder.Append("{");
sourceBuilder.Append("rows:[");
for (int i = 0; i < sourceTable.Rows.Count; i++)
{
sourceBuilder.Append("{id:\"" + sourceTable.Rows[i][0].ToString() + "\",");
sourceBuilder.Append("data:[");
sourceBuilder.Append("\"1\",");
for (int j = 1; j < sourceTable.Columns.Count; j++)
{
if (j == sourceTable.Columns.Count - 1)
{
sourceBuilder.Append("\"" + sourceTable.Rows[i][j].ToString() + "\"");
}
else
{
sourceBuilder.Append("\"" + sourceTable.Rows[i][j].ToString() + "\",");
}
}
if (i == sourceTable.Rows.Count - 1)
{
sourceBuilder.Append("]}");
}
else
{
sourceBuilder.Append("]},");
}
}
sourceBuilder.Append("]");
sourceBuilder.Append("}");
return sourceBuilder.ToString();
}
#endregion
#region 缓存要结算的应收费用
/// <summary>
/// 缓存要结算的应收费用
/// </summary>
/// <param name="tempCacheName">缓存名称</param>
/// <param name="tempRecvAmountGID">实收费用GID</param>
/// <returns>值1表示缓存成功 值不等于1表示缓存失败</returns>
private int CacheReceiveAmountVerify(string tempCacheName,string tempRecvAmountGID)
{
int iResult = 0;
DataTable recvAmountTable;
if (Session[tempCacheName] != null)
{
recvAmountTable = (DataTable)Session[tempCacheName];
for (int i = 0; i < recvAmountTable.Rows.Count; i++)
{
if (!recvAmountTable.Rows[i]["GID"].ToString().Equals(tempRecvAmountGID))
{
DataRow newRow = recvAmountTable.NewRow();
newRow["GID"] = tempRecvAmountGID;
recvAmountTable.Rows.Add(newRow);
}
}
}
else
{
recvAmountTable = new DataTable();
recvAmountTable.Columns.Add("GID");
DataRow newRow = recvAmountTable.NewRow();
newRow["GID"] = tempRecvAmountGID;
recvAmountTable.Rows.Add(newRow);
}
Session[tempCacheName] = recvAmountTable;
iResult = 1;
return iResult;
}
#endregion
#region 获取实收录入总页数
/// <summary>
/// 获取实收录入总页数
/// </summary>
/// <returns></returns>
private int GetUnverifyReceiveAmountListPage()
{
ReceiveAmountDA receiveAmountDA = new ReceiveAmountDA();
string strSql = "SELECT COUNT(*) FROM ch_fee_recvamount as A WHERE ISNULL(ISDELETE,0) <> 1 AND ISFINISH <> 1 ";
//string strAuthorityCondition = "";
//UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modRecvSettleList");
//if (userAuthorityManage.OperateType != AuthorityType.NULL)
//{
// strAuthorityCondition = userAuthorityManage.GetVisibleRangeSql(userAuthorityManage.VisibleType, ModuleType.RECVSETTLELIST, strShowName, strCompanyID, strDeptName, strUserID);
// strSql += strAuthorityCondition;
//}
string strCondition = "";
if (strSearch != null)
{
if (!strSearch.Trim().Equals(""))
{
string tempSearch = strSearch;
tempSearch = tempSearch.Replace("{", "");
tempSearch = tempSearch.Replace("}", "");
tempSearch = tempSearch.Replace("[", "");
tempSearch = tempSearch.Replace("]", "");
string[] searchArg = tempSearch.Split(new char[] { ',' });
for (int i = 0; i < searchArg.Length; i++)
{
string[] strArg = searchArg[i].Split(new char[] { ':' });
if (!strArg[1].Replace("\"", "").Trim().Equals(""))
{
switch (strArg[0].Replace("\"", ""))
{
case "btime"://Customer
strCondition += String.Format(" AND convert(char(10),SETTLETIME,120) >= '{0}' ", strArg[1].Replace("\"", ""));
break;
case "etime"://BillNO
strCondition += String.Format(" AND convert(char(10),SETTLETIME,120) <= '{0}' ", strArg[1].Replace("\"", ""));
break;
case "cus"://ETD BeginDate
strCondition += String.Format(" AND CUSTOMERNAME LIKE '%{0}%' ", strArg[1].Replace("\"", ""));
break;
case "no"://ETD EndDate
strCondition += String.Format(" AND BILLNO LIKE '%{0}%'", strArg[1].Replace("\"", ""));
break;
default:
break;
}
}
}
strSql += strCondition;
}
}
int iTotal = int.Parse(receiveAmountDA.GetExcuteSql(strSql).Tables[0].Rows[0][0].ToString());
return iTotal;
}
#endregion
#region 获取所有未核销实收金额信息
/// <summary>
/// 获取所有未核销实收金额信息
/// </summary>
/// <returns>返回JSON未核销实收金额信息</returns>
private string GetUnverifyReceiveAmountList()
{
ReceiveAmountDA receiveAmountDA = new ReceiveAmountDA();
DataTable sourceTable;
string strCondition = "";
string strTopInclude = "";
string strTopNotInclude = "";
if (strSearch != null)
{
if (!strSearch.Trim().Equals(""))
{
string tempSearch = strSearch;
tempSearch = tempSearch.Replace("{", "");
tempSearch = tempSearch.Replace("}", "");
tempSearch = tempSearch.Replace("[", "");
tempSearch = tempSearch.Replace("]", "");
string[] searchArg = tempSearch.Split(new char[] { ',' });
for (int i = 0; i < searchArg.Length; i++)
{
string[] strArg = searchArg[i].Split(new char[] { ':' });
if (!strArg[1].Replace("\"", "").Trim().Equals(""))
{
switch (strArg[0].Replace("\"", ""))
{
case "btime"://Customer
strCondition += String.Format(" AND convert(char(10),A.SETTLETIME,120) >= '{0}' ", strArg[1].Replace("\"", ""));
break;
case "etime"://BillNO
strCondition += String.Format(" AND convert(char(10),A.SETTLETIME,120) <= '{0}' ", strArg[1].Replace("\"", ""));
break;
case "cus"://ETD BeginDate
strCondition += String.Format(" AND A.CUSTOMERNAME LIKE '%{0}%' ", strArg[1].Replace("\"", ""));
break;
case "no"://ETD EndDate
strCondition += String.Format(" AND A.BILLNO LIKE '%{0}%'", strArg[1].Replace("\"", ""));
break;
default:
break;
}
}
}
}
}
string strAuthorityCondition = "";
//UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modRecvSettleList");
//if (userAuthorityManage.OperateType != AuthorityType.NULL)
//{
// strAuthorityCondition = userAuthorityManage.GetVisibleRangeSql(userAuthorityManage.VisibleType, ModuleType.RECVSETTLELIST, strShowName, strCompanyID, strDeptName, strUserID);
//}
string strSql = "";
if (iCurrentPage > 0 && iShowPage > 0)
{
if (iCurrentPage == 1)
{
strSql = String.Format(" SELECT {0} A.GID,A.DESCRIPTION, A.RECVAMOUNT, ISNULL(D.SHORTNAME,'') AS CUSTOMERNAME,B.SHOWNAME AS CREATEUSER, A.CREATETIME, A.CURRENCY,ISNULL(A.DOAMOUNT,0) AS DOAMOUNT,(A.RECVAMOUNT - ISNULL(A.DOAMOUNT,0)) AS UNSETTLEAMOUNT,A.SETTLETIME, C.SHOWNAME AS SETTLEUSER,A.REMARK "
+ " FROM ch_fee_recvamount as A LEFT JOIN [user] as B ON A.CREATEUSER = B.GID LEFT JOIN [user] AS C ON A.SETTLEUSER = C.GID LEFT JOIN info_client AS D ON A.CLIENTID = D.GID "
+ " WHERE ISNULL(ISDELETE,0) <> 1 AND ISNULL(ISFINISH,0) <> 1 " + strAuthorityCondition + strCondition
+ " ORDER BY A.CREATETIME DESC ", "top " + iShowPage.ToString());
}
else
{
strTopNotInclude = "top " + (iShowPage * (iCurrentPage - 1)).ToString();//RowCount*PageNum
strTopInclude = "top " + iShowPage.ToString();
strSql = String.Format(" SELECT {0} A.GID,A.DESCRIPTION, A.RECVAMOUNT, ISNULL(D.SHORTNAME,'') AS CUSTOMERNAME,B.SHOWNAME AS CREATEUSER, A.CREATETIME,A.CURRENCY,ISNULL(A.DOAMOUNT,0) AS DOAMOUNT,(A.RECVAMOUNT - ISNULL(A.DOAMOUNT,0)) AS UNSETTLEAMOUNT,A.SETTLETIME, C.SHOWNAME AS SETTLEUSER,A.REMARK "
+ " FROM ch_fee_recvamount as A LEFT JOIN [user] as B ON A.CREATEUSER = B.GID LEFT JOIN [user] AS C ON A.SETTLEUSER = C.GID LEFT JOIN info_client AS D ON A.CLIENTID = D.GID WHERE ISNULL(ISDELETE,0) <> 1 AND ISNULL(ISFINISH,0) <> 1 AND A.GID NOT IN "
+ " (SELECT {1} GID FROM ch_fee_recvamount WHERE 1 > 0 " + strAuthorityCondition + strCondition + " AND ISNULL(ISDELETE,0) <> 1 AND ISNULL(ISFINISH,0) <> 1 ORDER BY CREATETIME DESC ) " + strAuthorityCondition + strCondition
+ " ORDER BY A.CREATETIME DESC ", strTopInclude, strTopNotInclude);
}
}
else
{
strSql = " SELECT A.GID,A.DESCRIPTION, A.RECVAMOUNT, ISNULL(D.SHORTNAME,'') AS CUSTOMERNAME,B.SHOWNAME AS CREATEUSER, A.CREATETIME,A.CURRENCY, ISNULL(A.DOAMOUNT,0) AS DOAMOUNT,(A.RECVAMOUNT - ISNULL(A.DOAMOUNT,0)) AS UNSETTLEAMOUNT, A.SETTLETIME, C.SHOWNAME AS SETTLEUSER,A.REMARK "
+ " FROM ch_fee_recvamount as A LEFT JOIN [user] as B ON A.CREATEUSER = B.GID LEFT JOIN [user] AS C ON A.SETTLEUSER = C.GID LEFT JOIN info_client AS D ON A.CLIENTID = D.GID WHERE ISNULL(ISDELETE,0) <> 1 AND ISNULL(ISFINISH,0) <> 1 "
+ " ORDER BY A.CREATETIME DESC ";
}
sourceTable = receiveAmountDA.GetExcuteSql(strSql).Tables[0];
StringBuilder sourceBuilder = new StringBuilder();
sourceBuilder.Append("{");
sourceBuilder.Append("rows:[");
for (int i = 0; i < sourceTable.Rows.Count; i++)
{
sourceBuilder.Append("{id:\"" + sourceTable.Rows[i][0].ToString() + "\",");
sourceBuilder.Append("data:[");
sourceBuilder.Append("\"0\",");
for (int j = 1; j < sourceTable.Columns.Count; j++)
{
if (j == sourceTable.Columns.Count - 1)
{
sourceBuilder.Append("\"" + sourceTable.Rows[i][j].ToString() + "\"");
}
else
{
sourceBuilder.Append("\"" + sourceTable.Rows[i][j].ToString() + "\",");
}
}
if (i == sourceTable.Rows.Count - 1)
{
sourceBuilder.Append("]}");
}
else
{
sourceBuilder.Append("]},");
}
}
sourceBuilder.Append("]");
sourceBuilder.Append("}");
return sourceBuilder.ToString();
}
#endregion
#region 获取实收录入总页数
/// <summary>
/// 获取实收录入总页数
/// </summary>
/// <returns></returns>
private int GetReceiveAmountListPage()
{
ReceiveAmountDA receiveAmountDA = new ReceiveAmountDA();
string strSql = "SELECT COUNT(*) FROM ch_fee_recvamount as A WHERE ISNULL(ISDELETE,0) <> 1 ";
//string strAuthorityCondition = "";
//UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modRecvSettleList");
//if (userAuthorityManage.OperateType != AuthorityType.NULL)
//{
// strAuthorityCondition = userAuthorityManage.GetVisibleRangeSql(userAuthorityManage.VisibleType, ModuleType.RECVSETTLELIST, strShowName, strCompanyID, strDeptName, strUserID);
// strSql += strAuthorityCondition;
//}
string strCondition = "";
if (strSearch != null)
{
if (!strSearch.Trim().Equals(""))
{
string tempSearch = strSearch;
tempSearch = tempSearch.Replace("{", "");
tempSearch = tempSearch.Replace("}", "");
tempSearch = tempSearch.Replace("[", "");
tempSearch = tempSearch.Replace("]", "");
string[] searchArg = tempSearch.Split(new char[] { ',' });
for (int i = 0; i < searchArg.Length; i++)
{
string[] strArg = searchArg[i].Split(new char[] { ':' });
if (!strArg[1].Replace("\"", "").Trim().Equals(""))
{
switch (strArg[0].Replace("\"", ""))
{
case "btime"://Customer
strCondition += String.Format(" AND convert(char(10),CREATETIME,120) >= '{0}' ", strArg[1].Replace("\"", ""));
break;
case "etime"://BillNO
strCondition += String.Format(" AND convert(char(10),CREATETIME,120) <= '{0}' ", strArg[1].Replace("\"", ""));
break;
case "cus"://ETD BeginDate
strCondition += String.Format(" AND (CLIENTID IN (SELECT GID FROM info_client WHERE SHORTNAME LIKE '%{0}%')) ", strArg[1].Replace("\"", ""));
break;
case "no"://ETD EndDate
strCondition += String.Format(" AND NO LIKE '%{0}%'", strArg[1].Replace("\"", ""));
break;
default:
break;
}
}
}
strSql += strCondition;
}
}
int iTotal = int.Parse(receiveAmountDA.GetExcuteSql(strSql).Tables[0].Rows[0][0].ToString());
return iTotal;
}
#endregion
#region 获取所有实收录入信息
/// <summary>
/// 获取所有实收录入信息
/// </summary>
/// <returns>返回JSON实收录入数据集信息</returns>
private string GetReceiveAmountList()
{
ReceiveAmountDA receiveAmountDA = new ReceiveAmountDA();
DataTable sourceTable;
string strCondition = "";
string strTopInclude = "";
string strTopNotInclude = "";
if (strSearch != null)
{
if (!strSearch.Trim().Equals(""))
{
string tempSearch = strSearch;
tempSearch = tempSearch.Replace("{", "");
tempSearch = tempSearch.Replace("}", "");
tempSearch = tempSearch.Replace("[", "");
tempSearch = tempSearch.Replace("]", "");
string[] searchArg = tempSearch.Split(new char[] { ',' });
for (int i = 0; i < searchArg.Length; i++)
{
string[] strArg = searchArg[i].Split(new char[] { ':' });
if (!strArg[1].Replace("\"", "").Trim().Equals(""))
{
switch (strArg[0].Replace("\"", ""))
{
case "btime"://Customer
strCondition += String.Format(" AND convert(char(10),A.CREATETIME,120) >= '{0}' ", strArg[1].Replace("\"", ""));
break;
case "etime"://BillNO
strCondition += String.Format(" AND convert(char(10),A.CREATETIME,120) <= '{0}' ", strArg[1].Replace("\"", ""));
break;
case "cus"://ETD BeginDate
strCondition += String.Format(" AND (A.CLIENTID IN (SELECT GID FROM info_client WHERE SHORTNAME LIKE '%{0}%')) ", strArg[1].Replace("\"", ""));
break;
case "no"://ETD EndDate
strCondition += String.Format(" AND A.NO LIKE '%{0}%'", strArg[1].Replace("\"", ""));
break;
default:
break;
}
}
}
}
}
string strAuthorityCondition = "";
//UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modRecvSettleList");
//if (userAuthorityManage.OperateType != AuthorityType.NULL)
//{
// strAuthorityCondition = userAuthorityManage.GetVisibleRangeSql(userAuthorityManage.VisibleType, ModuleType.RECVSETTLELIST, strShowName, strCompanyID, strDeptName, strUserID);
//}
string strSql = "";
if (iCurrentPage > 0 && iShowPage > 0)
{
if (iCurrentPage == 1)
{
strSql = String.Format(" SELECT {0} A.GID,A.DESCRIPTION,A.NO, A.RECVAMOUNT, ISNULL(D.SHORTNAME,'') AS CUSTOMERNAME,B.SHOWNAME AS CREATEUSER, A.CREATETIME, A.CURRENCY,ISNULL(A.DOAMOUNT,0) AS DOAMOUNT,(A.RECVAMOUNT - ISNULL(A.DOAMOUNT,0)) AS UNSETTLEAMOUNT,A.SETTLETIME, C.SHOWNAME AS SETTLEUSER,A.REMARK "
+ " FROM ch_fee_recvamount as A LEFT JOIN [user] as B ON A.CREATEUSER = B.GID LEFT JOIN [user] AS C ON A.SETTLEUSER = C.GID LEFT JOIN info_client AS D ON A.CLIENTID = D.GID WHERE ISDELETE <> 1 AND COMPANYID = '"+strCompanyID+"' "
+ strAuthorityCondition + strCondition
+ " ORDER BY A.CREATETIME DESC ", "top " + iShowPage.ToString());
}
else
{
strTopNotInclude = "top " + (iShowPage * (iCurrentPage - 1)).ToString();//RowCount*PageNum
strTopInclude = "top " + iShowPage.ToString();
strSql = String.Format(" SELECT {0} A.GID,A.DESCRIPTION,A.NO, A.RECVAMOUNT, ISNULL(D.SHORTNAME,'') AS CUSTOMERNAME,B.SHOWNAME AS CREATEUSER, A.CREATETIME,A.CURRENCY,ISNULL(A.DOAMOUNT,0) AS DOAMOUNT,(A.RECVAMOUNT - ISNULL(A.DOAMOUNT,0)) AS UNSETTLEAMOUNT,A.SETTLETIME, C.SHOWNAME AS SETTLEUSER,A.REMARK "
+ " FROM ch_fee_recvamount as A LEFT JOIN [user] as B ON A.CREATEUSER = B.GID LEFT JOIN [user] AS C ON A.SETTLEUSER = C.GID LEFT JOIN info_client AS D ON A.CLIENTID = D.GID WHERE ISDELETE <> 1 AND COMPANYID = '"+strCompanyID+"' AND A.GID NOT IN "
+ " (SELECT {1} GID FROM ch_fee_recvamount WHERE 1 > 0 " + strAuthorityCondition + strCondition + " AND ISNULL(ISDELETE,0) <> 1 ORDER BY CREATETIME DESC ) " + strAuthorityCondition + strCondition
+ " ORDER BY A.CREATETIME DESC ", strTopInclude, strTopNotInclude);
}
}
else
{
strSql = " SELECT A.GID,A.DESCRIPTION,A.NO, A.RECVAMOUNT, ISNULL(D.SHORTNAME,'') AS CUSTOMERNAME,B.SHOWNAME AS CREATEUSER, A.CREATETIME,A.CURRENCY, ISNULL(A.DOAMOUNT,0) AS DOAMOUNT,(A.RECVAMOUNT - ISNULL(A.DOAMOUNT,0)) AS UNSETTLEAMOUNT, A.SETTLETIME, C.SHOWNAME AS SETTLEUSER,A.REMARK "
+ " FROM ch_fee_recvamount as A LEFT JOIN [user] as B ON A.CREATEUSER = B.GID LEFT JOIN [user] AS C ON A.SETTLEUSER = C.GID LEFT JOIN info_client AS D ON A.CLIENTID = D.GID WHERE ISDELETE <> 1 AND COMPANYID = '"+strCompanyID+"' " + strAuthorityCondition + strCondition
+ " ORDER BY A.CREATETIME DESC ";
}
sourceTable = getStatusNameTable(receiveAmountDA.GetExcuteSql(strSql).Tables[0]);
StringBuilder sourceBuilder = new StringBuilder();
sourceBuilder.Append("{");
sourceBuilder.Append("rows:[");
for (int i = 0; i < sourceTable.Rows.Count; i++)
{
sourceBuilder.Append("{id:\"" + sourceTable.Rows[i][0].ToString() + "\",");
sourceBuilder.Append("data:[");
sourceBuilder.Append("\"0\",");
for (int j = 1; j < sourceTable.Columns.Count; j++)
{
if (j == sourceTable.Columns.Count - 1)
{
sourceBuilder.Append("\"" + sourceTable.Rows[i][j].ToString() + "\"");
}
else
{
sourceBuilder.Append("\"" + sourceTable.Rows[i][j].ToString() + "\",");
}
}
if (i == sourceTable.Rows.Count - 1)
{
sourceBuilder.Append("]}");
}
else
{
sourceBuilder.Append("]},");
}
}
sourceBuilder.Append("]");
sourceBuilder.Append("}");
return sourceBuilder.ToString();
}
#endregion
#region 撤销收费结算
/// <summary>
/// 撤销收费结算
/// </summary>
/// <param name="tempUserID">用户GID</param>
/// <param name="tempBillNO">业务编号</param>
/// <returns>值等于1表示撤销成功 值不等1表示撤销失败</returns>
private string CancelPaySettlement(string tempUserID, string tempBillNO)
{
string strResult = "";
FeeSettlementDA feeSettlementDA = new FeeSettlementDA();
FeeSettlementEntity feeSettlementEntity = new FeeSettlementEntity();
feeSettlementEntity = feeSettlementDA.GetFeeSettlementByBillNO(tempBillNO);
if (feeSettlementEntity != null)
{
if (feeSettlementEntity.GID != null)
{
if (!feeSettlementEntity.IsDelete)
{
strResult = feeSettlementDA.RevocateSettlement(tempUserID, tempBillNO).ToString();
}
else
{
strResult = "-3";//收费结算已撤销,不能重复操作
}
}
else
{
strResult = "-4";//收费结算信息不存在
}
}
else
{
strResult = "-4";//收费结算信息不存在
}
return strResult;
}
#endregion
#region 撤销收费结算
/// <summary>
/// 撤销收费结算
/// </summary>
/// <param name="tempUserID">用户GID</param>
/// <param name="tempBillNO">业务编号</param>
/// <returns>值等于1表示撤销成功 值不等1表示撤销失败</returns>
private string CancelRecvSettlement(string tempUserID,string tempBillNO)
{
string strResult = "";
FeeSettlementDA feeSettlementDA = new FeeSettlementDA();
FeeSettlementEntity feeSettlementEntity = new FeeSettlementEntity();
feeSettlementEntity = feeSettlementDA.GetFeeSettlementByBillNO(tempBillNO);
if (feeSettlementEntity != null)
{
if (feeSettlementEntity.GID != null)
{
if (!feeSettlementEntity.IsDelete)
{
strResult = feeSettlementDA.RevocateSettlement(tempUserID, tempBillNO).ToString();
}
else
{
strResult = "-3";//收费结算已撤销,不能重复操作
}
}
else
{
strResult = "-4";//收费结算信息不存在
}
}
else
{
strResult = "-4";//收费结算信息不存在
}
return strResult;
}
#endregion
#region 获取收费结算费用明细
/// <summary>
/// 获取收费结算费用明细
/// </summary>
/// <param name="tempPaySettlementAppID">付费申请GID</param>
/// <param name="tempBSNO">委托编号</param>
/// <returns>JSON数据集</returns>
private string GetSettlementEditFeeByGID(string tempSettlementID, string tempBSNO)
{
FeePaySettleApplicationDA feePaySettleApplicaionDA = new FeePaySettleApplicationDA();
string strConditionBSNO = tempBSNO.Trim() == "" ? "" : " AND C.BSNO = '" + tempBSNO + "'";
string strSql = " SELECT C.GID,CASE WHEN C.FEETYPE = 1 THEN '收' ELSE '付' END as FEETYPE,C.FEENAME,C.CUSTOMERNAME,C.UNIT, "
+ " C.UNITPRICE,C.QUANTITY,C.AMOUNT,C.CURRENCY,C.EXCHANGERATE,ISNULL(A.AMOUNT,0) as SETTLEMENT,C.AMOUNT - ISNULL(A.AMOUNT,0) as UNSETTLEMENT,C.REMARK "
+ " FROM ch_fee_do as A INNER JOIN ch_fee_settlement as B ON A.BILLNO = B.BILLNO INNER JOIN ch_fee as C ON A.FEEID = C.GID WHERE B.GID = '" + tempSettlementID + "' " + strConditionBSNO;
DataTable sourceTable = new DataTable();
sourceTable = feePaySettleApplicaionDA.GetDataSetBySql(strSql).Tables[0];
StringBuilder sourceBuilder = new StringBuilder();
sourceBuilder.Append("{");
sourceBuilder.Append("rows:[");
for (int i = 0; i < sourceTable.Rows.Count; i++)
{
sourceBuilder.Append("{id:\"" + sourceTable.Rows[i][0].ToString() + "\",");
sourceBuilder.Append("data:[");
sourceBuilder.Append("\"0\",");
for (int j = 1; j < sourceTable.Columns.Count; j++)
{
if (j == sourceTable.Columns.Count - 1)
{
sourceBuilder.Append("\"" + sourceTable.Rows[i][j].ToString() + "\"");
}
else
{
sourceBuilder.Append("\"" + sourceTable.Rows[i][j].ToString() + "\",");
}
}
if (i == sourceTable.Rows.Count - 1)
{
sourceBuilder.Append("]}");
}
else
{
sourceBuilder.Append("]},");
}
}
sourceBuilder.Append("]");
sourceBuilder.Append("}");
return sourceBuilder.ToString();
}
#endregion
/// <summary>
/// 获取收费结算分页总页数
/// </summary>
/// <returns>返回总页数</returns>
private string GetSettleListPage()
{
FeeSettlementDA feeSettlementDA = new FeeSettlementDA();
//获取分公司的票号头字符
//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";
string strSql = "SELECT COUNT(*) FROM ch_fee_settlement as A WHERE BILLNO LIKE '%CR%' AND ISNULL(ISDELETE,0) <> 1 ";
string strAuthorityCondition = "";
UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modRecvSettleList");
if (userAuthorityManage.OperateType != AuthorityType.NULL)
{
strAuthorityCondition = userAuthorityManage.GetVisibleRangeSql(userAuthorityManage.VisibleType, ModuleType.RECVSETTLELIST, strShowName, strCompanyID, strDeptName, strUserID);
strSql += strAuthorityCondition;
}
string strCondition = "";
if (strSearch != null)
{
if (!strSearch.Trim().Equals(""))
{
string tempSearch = strSearch;
tempSearch = tempSearch.Replace("{", "");
tempSearch = tempSearch.Replace("}", "");
tempSearch = tempSearch.Replace("[", "");
tempSearch = tempSearch.Replace("]", "");
string[] searchArg = tempSearch.Split(new char[] { ',' });
for (int i = 0; i < searchArg.Length; i++)
{
string[] strArg = searchArg[i].Split(new char[] { ':' });
if (!strArg[1].Replace("\"", "").Trim().Equals(""))
{
switch (strArg[0].Replace("\"", ""))
{
case "btime"://Customer
strCondition += String.Format(" AND convert(char(10),SETTLETIME,120) >= '{0}' ", strArg[1].Replace("\"", ""));
break;
case "etime"://BillNO
strCondition += String.Format(" AND convert(char(10),SETTLETIME,120) <= '{0}' ", strArg[1].Replace("\"", ""));
break;
case "cus"://ETD BeginDate
strCondition += String.Format(" AND CUSTOMERNAME LIKE '%{0}%' ", strArg[1].Replace("\"", ""));
break;
case "no"://ETD EndDate
strCondition += String.Format(" AND BILLNO LIKE '%{0}%'", strArg[1].Replace("\"", ""));
break;
default:
break;
}
}
}
strSql += strCondition;
}
}
int iTotal = int.Parse(feeSettlementDA.GetExcuteSql(strSql).Tables[0].Rows[0][0].ToString());
return iTotal.ToString();
}
#region 获取付费申请费用信息列表数据源
/// <summary>
/// 获取付费申请费用信息列表数据源
/// </summary>
/// <param name="tempBSNO">委托业务编号GID</param>
/// <returns>返回json字符串</returns>
public string GetPaySettleApplicationList(string tempBSNO)
{
FeeSettlementDA feeSettlementDA = new FeeSettlementDA();
DataTable sourceTable;
string strCondition = "";
if (strFeeSearch != null)
{
if (!strFeeSearch.Trim().Equals(""))
{
string tempSearch = strFeeSearch;
tempSearch = tempSearch.Replace("{", "");
tempSearch = tempSearch.Replace("}", "");
tempSearch = tempSearch.Replace("[", "");
tempSearch = tempSearch.Replace("]", "");
string[] searchArg = tempSearch.Split(new char[] { ',' });
for (int i = 0; i < searchArg.Length; i++)
{
string[] strArg = searchArg[i].Split(new char[] { ':' });
if (!strArg[1].Replace("\"", "").Trim().Equals(""))
{
switch (strArg[0].Replace("\"", ""))
{
case "cus"://Customer
strCondition += String.Format(" AND C.CUSTOMERNAME LIKE '%{0}%' ", strArg[1].Replace("\"", ""));
break;
case "fnm"://FeeName
if (!strArg[1].Replace("\"", "").Trim().Equals(""))
{
int iFeeName = -1;
try
{
iFeeName = int.Parse(strArg[1].Replace("\"", "").Trim());
}
catch { }
if (iFeeName == -1)
{
strCondition += String.Format(" AND C.FEENAME LIKE '%{0}%' ", strArg[1].Replace("\"", ""));
}
}
break;
case "fty"://FeeType
int iFeeType = int.Parse(strArg[1].Replace("\"", "").Trim());
if (iFeeType > 0)
{
strCondition += String.Format(" AND C.FEETYPE = {0}", iFeeType);
}
break;
case "cur"://Currency
int iCurrency = int.Parse(strArg[1].Replace("\"", "").Trim());
if (iCurrency == 1)
{
strCondition += String.Format(" AND C.CURRENCY LIKE '%{0}%' ", "RMB");
}
else if (iCurrency == 2)
{
strCondition += String.Format(" AND C.CURRENCY LIKE '%{0}%' ", "USD");
}
break;
case "billno"://Currency
string strbillno = strArg[1].Replace("\"", "").Trim();
if (strbillno.Trim() != "")
{
strCondition += String.Format(" AND A.billno = '{0}' ", strbillno.Trim());
}
break;
default:
break;
}
}
}
}
}
//string strSql = String.Format(" SELECT C.GID,C.FEETYPE,C.CUSTOMERNAME,C.FEENAME,C.CURRENCY,C.AMOUNT,B.AMOUNT,B.AMOUNT "
// + " FROM ch_fee_payapplication as A INNER JOIN ch_fee_do as B ON A.BILLNO = B.BILLNO INNER JOIN ch_fee as C ON B.FEEID = C.GID WHERE "
// + " C.BSNO IN (SELECT BSNO FROM op_seae WHERE 1 > 0 AND BSNO = '{0}') {1}", strBSNO, strCondition);
//string strSql = String.Format(" SELECT C.GID,C.FEETYPE,C.CUSTOMERNAME,C.FEENAME,C.CURRENCY,C.AMOUNT,B.AMOUNT,B.AMOUNT,'op_Seae' OPLB "
// + " FROM ch_fee_payapplication as A INNER JOIN ch_fee_do as B ON A.BILLNO = B.BILLNO INNER JOIN ch_fee as C ON B.FEEID = C.GID WHERE "
// + " C.BSNO IN (SELECT BSNO FROM op_seae WHERE 1 > 0 AND BSNO = '{0}') {1}"
// + " union all "
// + " SELECT C.GID,C.FEETYPE,C.CUSTOMERNAME,C.FEENAME,C.CURRENCY,C.AMOUNT,B.AMOUNT,B.AMOUNT,'op_Seai' OPLB "
// + " FROM ch_fee_payapplication as A INNER JOIN ch_fee_do as B ON A.BILLNO = B.BILLNO INNER JOIN ch_fee as C ON B.FEEID = C.GID WHERE "
// + " C.BSNO IN (SELECT BSNO FROM op_seai WHERE 1 > 0 AND BSNO = '{0}') {1}"
// , strBSNO, strCondition);
//2013-02-05 修改
string strSql = String.Format(" SELECT C.GID,C.FEETYPE,C.CUSTOMERNAME,C.FEENAME,C.CURRENCY,C.AMOUNT,B.AMOUNT,B.AMOUNT,OPLB=(SELECT BSNO FROM VW_Settlement WHERE BSNO=C.BSNO),C.REMARK "
+ " FROM ch_fee_payapplication as A INNER JOIN ch_fee_do as B ON A.BILLNO = B.BILLNO INNER JOIN ch_fee as C ON B.FEEID = C.GID "
+ " WHERE C.BSNO IN (SELECT BSNO FROM VW_Settlement WHERE 1 > 0 AND BSNO = '{0}') {1}"
, strBSNO, strCondition);
sourceTable = getStatusNameTable(feeSettlementDA.GetExcuteSql(strSql).Tables[0]);
StringBuilder sourceBuilder = new StringBuilder();
sourceBuilder.Append("{");
sourceBuilder.Append("rows:[");
for (int i = 0; i < sourceTable.Rows.Count; i++)
{
sourceBuilder.Append("{id:\"" + sourceTable.Rows[i][0].ToString() + "\",");
sourceBuilder.Append("data:[");
sourceBuilder.Append("\"0\",");
for (int j = 1; j < sourceTable.Columns.Count; j++)
{
if (j == sourceTable.Columns.Count - 1)
{
sourceBuilder.Append("\"" + sourceTable.Rows[i][j].ToString() + "\"");
}
else
{
sourceBuilder.Append("\"" + sourceTable.Rows[i][j].ToString() + "\",");
}
}
if (i == sourceTable.Rows.Count - 1)
{
sourceBuilder.Append("]}");
}
else
{
sourceBuilder.Append("]},");
}
}
sourceBuilder.Append("]");
sourceBuilder.Append("}");
return sourceBuilder.ToString();
}
#endregion
public string GetBankInfoList()
{
FeeSettlementDA feeSettlementDA = new FeeSettlementDA();
DataTable sourceTable;
string strSql = "SELECT GID,CODENAME,CURRENCY,BANKNAME,ACCOUNT FROM sys_bank";
sourceTable = feeSettlementDA.GetExcuteSql(strSql).Tables[0];
StringBuilder sourceBuilder = new StringBuilder();
sourceBuilder.Append("{");
sourceBuilder.Append("banks:[");
for (int i = 0; i < sourceTable.Rows.Count; i++)
{
if (i == 0)
{
sourceBuilder.Append("{id:\"" + sourceTable.Rows[i][0].ToString() + "\",");
}
else
{
sourceBuilder.Append(",{id:\"" + sourceTable.Rows[i][0].ToString() + "\",");
}
sourceBuilder.Append("\"code\":\"" + sourceTable.Rows[i][1].ToString() + "\",");
sourceBuilder.Append("\"cur\":\"" + sourceTable.Rows[i][2].ToString() + "\",");
sourceBuilder.Append("\"bank\":\"" + sourceTable.Rows[i][3].ToString() + "\",");
sourceBuilder.Append("\"acc\":\"" + sourceTable.Rows[i][4].ToString() + "\"}");
}
sourceBuilder.Append("]");
sourceBuilder.Append("}");
return sourceBuilder.ToString();
}
public string GetSettleList()
{
FeeSettlementDA feeSettlementDA = new FeeSettlementDA();
DataTable sourceTable;
string strCondition = "";
string strTopInclude = "";
string strTopNotInclude = "";
if (strSearch != null)
{
if (!strSearch.Trim().Equals(""))
{
string tempSearch = strSearch;
tempSearch = tempSearch.Replace("{", "");
tempSearch = tempSearch.Replace("}", "");
tempSearch = tempSearch.Replace("[", "");
tempSearch = tempSearch.Replace("]", "");
string[] searchArg = tempSearch.Split(new char[] { ',' });
for (int i = 0; i < searchArg.Length; i++)
{
string[] strArg = searchArg[i].Split(new char[] { ':' });
if (!strArg[1].Replace("\"", "").Trim().Equals(""))
{
switch (strArg[0].Replace("\"", ""))
{
case "btime"://Customer
strCondition += String.Format(" AND convert(char(10),A.SETTLETIME,120) >= '{0}' ", strArg[1].Replace("\"", ""));
break;
case "etime"://BillNO
strCondition += String.Format(" AND convert(char(10),A.SETTLETIME,120) <= '{0}' ", strArg[1].Replace("\"", ""));
break;
case "cus"://ETD BeginDate
strCondition += String.Format(" AND A.CUSTOMERNAME LIKE '%{0}%' ", strArg[1].Replace("\"", ""));
break;
case "no"://ETD EndDate
strCondition += String.Format(" AND A.BILLNO LIKE '%{0}%'", strArg[1].Replace("\"", ""));
break;
default:
break;
}
}
}
}
}
string strAuthorityCondition = "";
UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modRecvSettleList");
if (userAuthorityManage.OperateType != AuthorityType.NULL)
{
strAuthorityCondition = userAuthorityManage.GetVisibleRangeSql(userAuthorityManage.VisibleType, ModuleType.RECVSETTLELIST, strShowName, strCompanyID, strDeptName, strUserID);
}
//获取分公司的票号头字符
//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";
string strSql = "";
if (iCurrentPage > 0 && iShowPage > 0)
{
if (iCurrentPage == 1)
{
strSql = String.Format(" SELECT {0} A.GID,A.BILLNO,A.BILLSTATUS,A.SETTLEMODE,A.CUSTOMERNAME,A.SETTLETYPE,A.AMOUNTUSD,A.AMOUNTRMB,B.SHOWNAME,A.SETTLETIME,A.REMARK "
+ " FROM ch_fee_settlement as A INNER JOIN [user] as B ON A.SETTLEUSER = B.GID WHERE BILLNO LIKE '%CR%' " + strAuthorityCondition + strCondition + " AND ISNULL(ISDELETE,0) <> 1 ORDER BY BILLNO DESC ", "top " + iShowPage.ToString());
}
else
{
strTopNotInclude = "top " + (iShowPage * (iCurrentPage - 1)).ToString();//RowCount*PageNum
strTopInclude = "top " + iShowPage.ToString();
strSql = String.Format(" SELECT {0} A.GID,A.BILLNO,A.BILLSTATUS,A.SETTLEMODE,A.CUSTOMERNAME,A.SETTLETYPE,A.AMOUNTUSD,A.AMOUNTRMB,B.SHOWNAME,A.SETTLETIME,A.REMARK "
+ " FROM ch_fee_settlement as A INNER JOIN [user] as B ON A.SETTLEUSER = B.GID WHERE BILLNO LIKE '%CR%' AND A.GID NOT IN "
+ " (SELECT {1} GID FROM ch_fee_settlement WHERE BILLNO LIKE '%CR%' " + strAuthorityCondition.Replace("A.", "") + strCondition + " AND ISNULL(ISDELETE,0) <> 1 ORDER BY BILLNO DESC ) " + strAuthorityCondition + strCondition
+ " AND ISNULL(ISDELETE,0) <> 1 ORDER BY BILLNO DESC ", strTopInclude, strTopNotInclude);
}
}
else
{
strSql = " SELECT A.GID,A.BILLNO,A.BILLSTATUS,A.SETTLEMODE,A.CUSTOMERNAME,A.SETTLETYPE,A.AMOUNTUSD,A.AMOUNTRMB,B.SHOWNAME,A.SETTLETIME,A.REMARK "
+ " FROM ch_fee_settlement as A INNER JOIN [user] as B ON A.SETTLEUSER = B.GID WHERE BILLNO LIKE '%CR%' " + strAuthorityCondition + strCondition + " AND ISNULL(ISDELETE,0) <> 1 ORDER BY BILLNO DESC ";
}
sourceTable = getStatusNameTableBillStatus(feeSettlementDA.GetExcuteSql(strSql).Tables[0]);
StringBuilder sourceBuilder = new StringBuilder();
sourceBuilder.Append("{");
sourceBuilder.Append("rows:[");
for (int i = 0; i < sourceTable.Rows.Count; i++)
{
sourceBuilder.Append("{id:\"" + sourceTable.Rows[i][0].ToString() + "\",");
sourceBuilder.Append("data:[");
sourceBuilder.Append("\"0\",");
for (int j = 1; j < sourceTable.Columns.Count; j++)
{
if (j == sourceTable.Columns.Count - 1)
{
sourceBuilder.Append("\"" + sourceTable.Rows[i][j].ToString() + "\"");
}
else
{
sourceBuilder.Append("\"" + sourceTable.Rows[i][j].ToString() + "\",");
}
}
if (i == sourceTable.Rows.Count - 1)
{
sourceBuilder.Append("]}");
}
else
{
sourceBuilder.Append("]},");
}
}
sourceBuilder.Append("]");
sourceBuilder.Append("}");
return sourceBuilder.ToString();
}
public string GetSettleBill(string strBillNO)
{
//FeeDoDA feeDoDA = new FeeDoDA();
//DataTable feeDoTable = feeDoDA.GetExcuteSql("SELECT * FROM ch_fee_do")
return "{rows:[]}";
}
public string GetSelectedOrderFee(string tempBSNO)
{
FeeSettlementDA feeSettlementDA = new FeeSettlementDA();
DataTable sourceTable;
string strCondition = "";
if (strFeeSearch != null)
{
if (!strFeeSearch.Trim().Equals(""))
{
string tempSearch = strFeeSearch;
tempSearch = tempSearch.Replace("{", "");
tempSearch = tempSearch.Replace("}", "");
tempSearch = tempSearch.Replace("[", "");
tempSearch = tempSearch.Replace("]", "");
string[] searchArg = tempSearch.Split(new char[] { ',' });
for (int i = 0; i < searchArg.Length; i++)
{
string[] strArg = searchArg[i].Split(new char[] { ':' });
if (!strArg[1].Replace("\"", "").Trim().Equals(""))
{
switch (strArg[0].Replace("\"", ""))
{
case "cus"://Customer
strCondition += String.Format(" AND CUSTOMERNAME = '{0}' ", strArg[1].Replace("\"", ""));
break;
case "fnm"://FeeName
if (!strArg[1].Replace("\"", "").Trim().Equals(""))
{
int iFeeName = -1;
try
{
iFeeName = int.Parse(strArg[1].Replace("\"", "").Trim());
}
catch { }
if (iFeeName == -1)
{
strCondition += String.Format(" AND FEENAME LIKE '%{0}%' ", strArg[1].Replace("\"", ""));
}
}
break;
case "fty"://FeeType
int iFeeType = int.Parse(strArg[1].Replace("\"", "").Trim());
if (iFeeType > 0)
{
strCondition += String.Format(" AND FEETYPE = {0}", iFeeType);
}
break;
case "cur"://Currency
int iCurrency = int.Parse(strArg[1].Replace("\"", "").Trim());
if (iCurrency == 1)
{
strCondition += String.Format(" AND CURRENCY LIKE '%{0}%' ", "RMB");
}
else if (iCurrency == 2)
{
strCondition += String.Format(" AND CURRENCY LIKE '%{0}%' ", "USD");
}
break;
case "amount1"://
strCondition += String.Format(" AND AMOUNT >= '{0}'", strArg[1].Replace("\"", ""));
break;
case "amount2"://
strCondition += String.Format(" AND AMOUNT <= '{0}'", strArg[1].Replace("\"", ""));
break;
default:
break;
}
}
}
}
}
//string strSql = String.Format("SELECT GID,FEETYPE,CUSTOMERNAME,FEENAME,CURRENCY,AMOUNT,AMOUNT-SETTLEMENT,AMOUNT-SETTLEMENT FROM ch_fee WHERE BSNO = '{0}' AND (FEESTATUS = 0 OR FEESTATUS = 8) AND GID NOT IN (SELECT FEEID FROM ch_fee_do WHERE BSNO IN ('{0}'))", tempBSNO);
//string strSql = String.Format(" SELECT GID,FEETYPE,CUSTOMERNAME,FEENAME,CURRENCY,AMOUNT,AMOUNT-SETTLEMENT,AMOUNT-SETTLEMENT FROM ch_fee "
// + " WHERE BSNO IN ('{0}') AND FEESTATUS = 0 AND GID NOT IN (SELECT FEEID FROM ch_fee_do) " + strCondition, tempBSNO);
//string strSql = String.Format(" SELECT C.GID,C.FEETYPE,C.CUSTOMERNAME,C.FEENAME,C.CURRENCY,CASE WHEN C.FEESTATUS = 8 THEN C.AMOUNT - D.DOAMOUNT "
// + " ELSE CASE WHEN C.FEESTATUS =0 AND C.ORDERAMOUNT <> C.AMOUNT THEN C.AMOUNT - C.ORDERAMOUNT END END , "
// + " CASE WHEN C.FEESTATUS = 8 THEN C.AMOUNT - D.DOAMOUNT "
// + " ELSE CASE WHEN C.FEESTATUS =0 AND C.ORDERAMOUNT <> C.AMOUNT THEN C.AMOUNT - C.ORDERAMOUNT END END ,0 "
// + " FROM ch_fee as C LEFT JOIN ch_fee_do as D ON C.GID = D.FEEID WHERE C.GID IN ( SELECT A.GID FROM ch_fee as A LEFT JOIN ch_fee_do as B ON A.GID = B.FEEID "
// + " WHERE A.BSNO IN ('{0}') AND (FEEID IS NULL OR FEESTATUS = 8 OR (A.FEESTATUS = 0 AND A.ORDERAMOUNT <> A.AMOUNT AND A.AMOUNT > 0)) "
// + " ) AND (FEESTATUS = 8 OR FEESTATUS = 0) " + strCondition, tempBSNO);
//string strSql = String.Format(" SELECT GID,FEETYPE,CUSTOMERNAME,FEENAME,CURRENCY,AMOUNT,CASE WHEN AMOUNT > SETTLEMENT THEN "
// + " CASE WHEN SETTLEMENT < ORDERAMOUNT THEN AMOUNT - ORDERAMOUNT ELSE AMOUNT - SETTLEMENT END ELSE 0 END, "
// + " CASE WHEN AMOUNT > SETTLEMENT THEN "
// + " CASE WHEN SETTLEMENT < ORDERAMOUNT THEN AMOUNT - ORDERAMOUNT ELSE AMOUNT - SETTLEMENT END ELSE 0 END "
// + " FROM ch_fee WHERE GID NOT IN "
// + " (SELECT DISTINCT B.FEEID FROM ch_fee_payapplication as A INNER JOIN ch_fee_do as B "
// + " ON A.BILLNO = B.BILLNO WHERE A.BILLSTATUS < 4) AND AMOUNT <> SETTLEMENT AND ORDERAMOUNT <= AMOUNT AND BSNO IN ('{0}') AND (FEESTATUS = 0 OR FEESTATUS = 8)" + strCondition, tempBSNO);
string strSql = String.Format(" SELECT GID,FEETYPE,CUSTOMERNAME,FEENAME,CURRENCY,isnull(AMOUNT - SETTLEMENT,0) as AMOUNT"
//+",CASE WHEN AMOUNT > SETTLEMENT THEN AMOUNT - SETTLEMENT ELSE 0 END"//CASE WHEN SETTLEMENT < ORDERAMOUNT THEN AMOUNT - ORDERAMOUNT ELSE END
//+ ",CASE WHEN AMOUNT > SETTLEMENT THEN AMOUNT - SETTLEMENT ELSE 0 END "//CASE WHEN SETTLEMENT < ORDERAMOUNT THEN AMOUNT - ORDERAMOUNT ELSE END
+ ",0"
+ ",0"
+ ",REMARK"
+ " FROM ch_fee WHERE gid not in (select feeid from run_fee_do) and ((FEESTATUS = 0 OR FEESTATUS = 8)) "//ISNULL(SETTLEMENT,0) < AMOUNT AND ISNULL(ORDERAMOUNT,0) < AMOUNT AND
+ " AND BSNO IN ('{0}') " + strCondition+" ORDER BY CUSTOMERNAME DESC ", tempBSNO);
sourceTable = getStatusNameTable(feeSettlementDA.GetExcuteSql(strSql).Tables[0]);
DataTable feeTable = null;
if (strOrderCacheName != null)
{
if (Session[strOrderCacheName] != null)
{
feeTable = (DataTable)Session[strOrderCacheName];
}
}
StringBuilder sourceBuilder = new StringBuilder();
sourceBuilder.Append("{");
sourceBuilder.Append("rows:[");
for (int i = 0; i < sourceTable.Rows.Count; i++)
{
sourceBuilder.Append("{id:\"" + sourceTable.Rows[i][0].ToString() + "\",");
sourceBuilder.Append("data:[");
if (feeTable != null)
{
int iCount = 0;
for (int j = 0; j < feeTable.Rows.Count; j++)
{
if (feeTable.Rows[j]["GID"].ToString().Trim().Equals(sourceTable.Rows[i][0].ToString()))
{
sourceBuilder.Append("\"1\",");
iCount++;
break;
}
}
if (iCount == 0)
{
sourceBuilder.Append("\"0\",");
}
iCount = 0;
}
else
{
sourceBuilder.Append("\"0\",");
}
for (int j = 1; j < sourceTable.Columns.Count; j++)
{
if (j == sourceTable.Columns.Count - 1)
{
sourceBuilder.Append("\"" + sourceTable.Rows[i][j].ToString() + "\"");
}
else
{
sourceBuilder.Append("\"" + sourceTable.Rows[i][j].ToString() + "\",");
}
}
if (i == sourceTable.Rows.Count - 1)
{
sourceBuilder.Append("]}");
}
else
{
sourceBuilder.Append("]},");
}
}
sourceBuilder.Append("]");
sourceBuilder.Append("}");
return sourceBuilder.ToString();
}
#region 获取委托信息列表数据源
/// <summary>
/// 获取委托信息列表数据源
/// </summary>
/// <returns>返回json字符串</returns>
public string GetSeaeOrder()
{
FeeSettlementDA feeSettlementDA = new FeeSettlementDA();
DataTable sourceTable;
//string strSql = "SELECT BSNO,'海运出口' OPLB,CUSTOMERNAME,MBLNO,HBLNO FROM op_seae WHERE BSNO IN (SELECT BSNO FROM ch_fee WHERE (FEESTATUS = 8 OR FEESTATUS = 0)) "
//+ " union all "
//+ "SELECT BSNO,'海运进口' OPLB,CUSTOMERNAME,MBLNO,HBLNO FROM op_seai WHERE BSNO IN (SELECT BSNO FROM ch_fee WHERE (FEESTATUS = 8 OR FEESTATUS = 0)) ";
//2013-02-05 修改
string strSql = "SELECT BSNO,OPLBNAMNE,CUSTOMERNAME,MBLNO,HBLNO,CUSTOMNO FROM VW_Settlement WHERE BSNO IN (SELECT BSNO FROM ch_fee WHERE (FEESTATUS = 8 OR FEESTATUS = 0)) ";
sourceTable = feeSettlementDA.GetExcuteSql(strSql).Tables[0];
StringBuilder sourceBuilder = new StringBuilder();
sourceBuilder.Append("{");
sourceBuilder.Append("rows:[");
for (int i = 0; i < sourceTable.Rows.Count; i++)
{
sourceBuilder.Append("{id:\"" + sourceTable.Rows[i][0].ToString() + "\",");
sourceBuilder.Append("data:[");
sourceBuilder.Append("\"0\",");
for (int j = 1; j < sourceTable.Columns.Count; j++)
{
if (j == sourceTable.Columns.Count - 1)
{
sourceBuilder.Append("\"" + sourceTable.Rows[i][j].ToString() + "\"");
}
else
{
sourceBuilder.Append("\"" + sourceTable.Rows[i][j].ToString() + "\",");
}
}
if (i == sourceTable.Rows.Count - 1)
{
sourceBuilder.Append("]}");
}
else
{
sourceBuilder.Append("]},");
}
}
sourceBuilder.Append("]");
sourceBuilder.Append("}");
return sourceBuilder.ToString();
}
#endregion
public string GetSeaeOrderBySearch(string tempSearch)
{
if (strOrderCacheName != null)
{
if (Session[strOrderCacheName] != null)
{
Session.Remove(strOrderCacheName);
}
}
int strtmpoplb =0;
tempSearch = tempSearch.Replace("{", "");
tempSearch = tempSearch.Replace("}", "");
tempSearch = tempSearch.Replace("[", "");
tempSearch = tempSearch.Replace("]", "");
string[] searchArg = tempSearch.Split(new char[] { ',' });
string strSeaeCondition = "";
string strFeeCondition = "";
string strAuthorityCondition = "";
if (strDoTypeName != null)
{
if (strDoTypeName == "paysettle")
{
UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modPaySettlementSearch");
if (userAuthorityManage.OperateType != AuthorityType.NULL)
{
strAuthorityCondition = userAuthorityManage.GetVisibleRangeSql(userAuthorityManage.VisibleType, ModuleType.PAYSETTLESEARCH, strShowName, strCompanyID, strDeptName, strUserID,strbstype);
}
}
else if (strDoTypeName == "paysettleapp")
{
UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modPaySettleAppSearch");
if (userAuthorityManage.OperateType != AuthorityType.NULL)
{
strAuthorityCondition = userAuthorityManage.GetVisibleRangeSql(userAuthorityManage.VisibleType, ModuleType.PAYSETTLEAPPSEARCH, strShowName, strCompanyID, strDeptName, strUserID,strbstype);
}
}
else if (strDoTypeName == "recvsettle")
{
UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modRecvSettleSearch");
if (userAuthorityManage.OperateType != AuthorityType.NULL)
{
strAuthorityCondition = userAuthorityManage.GetVisibleRangeSql(userAuthorityManage.VisibleType, ModuleType.RECVSETTLESEARCH, strShowName, strCompanyID, strDeptName, strUserID,strbstype);
}
}
}
else
{
strAuthorityCondition = " AND 1< 0 ";
}
for (int i = 0; i < searchArg.Length; i++)
{
string[] strArg = searchArg[i].Split(new char[] { ':' });
if (!strArg[1].Replace("\"", "").Trim().Equals(""))
{
switch (strArg[0].Replace("\"", ""))
{
case "cus"://Customer
strFeeCondition += String.Format(" AND CUSTOMERNAME = '{0}' ", strArg[1].Replace("\"", ""));
break;
case "bno"://BillNO
strSeaeCondition += String.Format(" AND (CUSTNO LIKE '%{0}%' OR MBLNO LIKE '%{0}%' OR HBLNO LIKE '%{0}%' OR CUSTOMNO LIKE '%{0}%' OR CUSTOMNO2 LIKE '%{0}%')", strArg[1].Replace("\"", ""));
break;
case "bt"://ETD BeginDate
strSeaeCondition += String.Format(" AND ETD >= '{0}' ", strArg[1].Replace("\"", ""));
break;
case "et"://ETD EndDate
strSeaeCondition += String.Format(" AND ETD <= '{0}' ", strArg[1].Replace("\"", ""));
break;
case "ves"://Vessel
strSeaeCondition += String.Format(" AND VESSEL LIKE '%{0}%' ", strArg[1].Replace("\"", ""));
break;
case "voy"://Voyno
strSeaeCondition += String.Format(" AND VOYNO LIKE '%{0}%' ", strArg[1].Replace("\"", ""));
break;
//case "deno"://DebitNO
// //strSqlCondition += String.Format(" VOYNO LIKE '%{0}%' ", strArg[1]);
// break;
//case "ise"://IsSettled
// break;
//case "fty"://FeeType
// strSqlCondition += String.Format(" FEETYPE = {0} ", strArg[1]);
// break;
//case "cur"://Currency
// strSqlCondition += String.Format(" FEETYPE = {0} ", strArg[1]);
// break;
case "fnm"://FeeName
if (!strArg[1].Replace("\"", "").Trim().Equals(""))
{
int iFeeName = -1;
try
{
iFeeName = int.Parse(strArg[1].Replace("\"", "").Trim());
}
catch { }
if (iFeeName == -1)
{
strFeeCondition += String.Format(" AND FEENAME LIKE '%{0}%' ", strArg[1].Replace("\"", ""));
}
}
break;
case "fty"://FeeType
int iFeeType = int.Parse(strArg[1].Replace("\"", "").Trim());
if (iFeeType > 0)
{
strFeeCondition += String.Format(" AND FEETYPE = {0}", iFeeType);
}
break;
case "cur"://Currency
int iCurrency = int.Parse(strArg[1].Replace("\"", "").Trim());
if (iCurrency == 1)
{
strFeeCondition += String.Format(" AND CURRENCY LIKE '%{0}%' ", "RMB");
}
else if (iCurrency == 2)
{
strFeeCondition += String.Format(" AND CURRENCY LIKE '%{0}%' ", "USD");
}
break;
case "bty"://业务类型
strtmpoplb = int.Parse(strArg[1].Replace("\"", "").Trim());
break;
case "amount1"://
strFeeCondition += String.Format(" AND AMOUNT >= '{0}'", strArg[1].Replace("\"", ""));
break;
case "amount2"://
strFeeCondition += String.Format(" AND AMOUNT <= '{0}'", strArg[1].Replace("\"", ""));
break;
case "accDate":
strSeaeCondition += string.Format(" AND ACCDATE='{0}'",strArg[1].Replace("\"",""));
break;
default:
break;
}
}
}
FeeSettlementDA feeSettlementDA = new FeeSettlementDA();
DataTable sourceTable;
//string strSql = "SELECT BSNO, CUSTOMERNAME,CUSTNO,MBLNO,HBLNO FROM op_seae WHERE 1 > 0 AND BSNO IN ( "
// + "SELECT BSNO FROM ch_fee WHERE GID IN"
// + "(SELECT A.GID FROM ch_fee as A LEFT JOIN ch_fee_do as B ON A.GID = B.FEEID WHERE FEEID IS NULL OR FEESTATUS = 8 OR (A.FEESTATUS = 0 AND A.ORDERAMOUNT <> B.DOAMOUNT)) AND (FEESTATUS = 8 OR FEESTATUS = 0))"
// + strSeaeCondition;
//string strSql = " SELECT BSNO, CUSTOMERNAME,CUSTNO,MBLNO,HBLNO FROM op_seae WHERE BSNO IN "
// + " (SELECT BSNO FROM ch_fee WHERE GID NOT IN "
// + " (SELECT DISTINCT B.FEEID FROM ch_fee_payapplication as A INNER JOIN ch_fee_do as B ON A.BILLNO = B.BILLNO "
// + " WHERE A.BILLSTATUS < 4) AND ISNULL(SETTLEMENT,0) <> ISNULL(AMOUNT,0) AND (FEESTATUS = 0 OR FEESTATUS = 8) " + strFeeCondition + strAuthorityCondition + " ) " + strSeaeCondition;
//string strSql = " SELECT BSNO, CUSTOMERNAME,CUSTNO,MBLNO,HBLNO FROM op_seae WHERE BSNO IN "
// + " (SELECT BSNO FROM ch_fee WHERE (ISNULL(SETTLEMENT,0) < AMOUNT AND ISNULL(ORDERAMOUNT,0) < AMOUNT AND (FEESTATUS = 0 OR FEESTATUS = 8)) "
// + strFeeCondition + strAuthorityCondition + " ) " + strSeaeCondition + " ORDER BY CUSTOMERNAME DESC ";
string strSql = "";
//2013-02-05 修改 begin
string sOPLBCondition = "";
switch (strtmpoplb)
{
case 0://所有业务类型
sOPLBCondition="";
break;
case 1://海运出口op_Seae
sOPLBCondition = " and OPLBNAME='海运出口' ";
break;
case 2://海运进口op_Seai
sOPLBCondition = " and OPLBNAME='海运进口' ";
break;
case 3:
sOPLBCondition = " and OPLBNAME='空运出口' ";
break;
case 4:
sOPLBCondition = " and OPLBNAME='空运进口' ";
break;
case 5://陆运托运
sOPLBCondition = " and OPLBNAME='陆运托运' ";
break;
case 6://仓储费
sOPLBCondition = " and OPLBNAME='仓储费' ";
break;
case 7://仓储入库
sOPLBCondition = " and OPLBNAME='仓储入库' ";
break;
case 8://仓储出库
sOPLBCondition = " and OPLBNAME='仓储出库' ";
break;
case 9://陆运派车
sOPLBCondition = " and OPLBNAME='陆运派车' ";
break;
case 10://陆运派车
sOPLBCondition = " and OPLBNAME='进口贸易' ";
break;
case 11://陆运派车
sOPLBCondition = " and OPLBNAME='报关业务' ";
break;
default:
break;
}
strSql = String.Format(" SELECT BSNO,OPLBNAME,CUSTOMERNAME,CUSTNO,MBLNO,HBLNO,CUSTOMNO,CUSTOMNO2 FROM VW_Settlement WHERE BSNO IN "
+ " (SELECT BSNO FROM ch_fee WHERE gid not in(select feeid from run_fee_do) and (FEESTATUS = 0 OR FEESTATUS = 8) {0} {1} ) {2} {3}"
+ " ORDER BY CUSTOMERNAME DESC "
, strFeeCondition, strAuthorityCondition, strSeaeCondition, sOPLBCondition);
//end
sourceTable = feeSettlementDA.GetExcuteSql(strSql).Tables[0];
StringBuilder sourceBuilder = new StringBuilder();
sourceBuilder.Append("{");
sourceBuilder.Append("rows:[");
for (int i = 0; i < sourceTable.Rows.Count; i++)
{
sourceBuilder.Append("{id:\"" + sourceTable.Rows[i][0].ToString() + "\",");
sourceBuilder.Append("data:[");
sourceBuilder.Append("\"0\",");
for (int j = 1; j < sourceTable.Columns.Count; j++)
{
if (j == sourceTable.Columns.Count - 1)
{
sourceBuilder.Append("\"" + sourceTable.Rows[i][j].ToString() + "\"");
}
else
{
sourceBuilder.Append("\"" + sourceTable.Rows[i][j].ToString() + "\",");
}
}
if (i == sourceTable.Rows.Count - 1)
{
sourceBuilder.Append("]}");
}
else
{
sourceBuilder.Append("]},");
}
}
sourceBuilder.Append("]");
sourceBuilder.Append("}");
return sourceBuilder.ToString();
}
#region 获取费用信息列表数据源
/// <summary>
/// 获取费用信息列表数据源
/// </summary>
/// <param name="tempBSNO">委托业务编号GID</param>
/// <returns>返回json字符串</returns>
public string GetFeeList(string tempBSNO)
{
FeeSettlementDA feeSettlementDA = new FeeSettlementDA();
DataTable sourceTable;
string strCondition = "";
if (strFeeSearch != null)
{
if (!strFeeSearch.Trim().Equals(""))
{
string tempSearch = strFeeSearch;
tempSearch = tempSearch.Replace("{", "");
tempSearch = tempSearch.Replace("}", "");
tempSearch = tempSearch.Replace("[", "");
tempSearch = tempSearch.Replace("]", "");
string[] searchArg = tempSearch.Split(new char[] { ',' });
for (int i = 0; i < searchArg.Length; i++)
{
string[] strArg = searchArg[i].Split(new char[] { ':' });
if (!strArg[1].Replace("\"", "").Trim().Equals(""))
{
switch (strArg[0].Replace("\"", ""))
{
case "cus"://Customer
strCondition += String.Format(" AND CUSTOMERNAME LIKE '%{0}%' ", strArg[1].Replace("\"", ""));
break;
case "fnm"://FeeName
if (!strArg[1].Replace("\"", "").Trim().Equals(""))
{
int iFeeName = -1;
try
{
iFeeName = int.Parse(strArg[1].Replace("\"", "").Trim());
}
catch { }
if (iFeeName == -1)
{
strCondition += String.Format(" AND FEENAME LIKE '%{0}%' ", strArg[1].Replace("\"", ""));
}
}
break;
case "fty"://FeeType
int iFeeType = int.Parse(strArg[1].Replace("\"", "").Trim());
if (iFeeType > 0)
{
strCondition += String.Format(" AND FEETYPE = {0}", iFeeType);
}
break;
case "cur"://Currency
int iCurrency = int.Parse(strArg[1].Replace("\"", "").Trim());
if (iCurrency == 1)
{
strCondition += String.Format(" AND CURRENCY LIKE '%{0}%' ", "RMB");
}
else if (iCurrency == 2)
{
strCondition += String.Format(" AND CURRENCY LIKE '%{0}%' ", "USD");
}
break;
default:
break;
}
}
}
}
}
//string strSql = String.Format("SELECT GID,FEETYPE,CUSTOMERNAME,FEENAME,CURRENCY,AMOUNT,AMOUNT-SETTLEMENT,AMOUNT-SETTLEMENT FROM ch_fee WHERE BSNO = '{0}' AND (FEESTATUS = 0 OR FEESTATUS = 8) AND GID NOT IN (SELECT FEEID FROM ch_fee_do WHERE BSNO IN ('{0}'))", tempBSNO);
//20110-08-16 注释掉,重新更改费用检索条件,增加部分结算费用信息的现实 JHQ
//string strSql = String.Format(" SELECT GID,FEETYPE,CUSTOMERNAME,FEENAME,CURRENCY,AMOUNT,AMOUNT-SETTLEMENT,AMOUNT-SETTLEMENT FROM ch_fee "
// + " WHERE GID IN (SELECT A.GID FROM ch_fee as A LEFT JOIN ch_fee_do as B ON A.GID = B.FEEID WHERE A.BSNO IN ('{0}') AND FEEID IS NULL) AND (FEESTATUS = 8 OR FEESTATUS = 0)" + strCondition, tempBSNO);
//string strSql = String.Format("SELECT GID,FEETYPE,CUSTOMERNAME,FEENAME,CURRENCY,AMOUNT,CASE WHEN FEESTATUS = 8 THEN AMOUNT - SETTLEMENT ELSE CASE WHEN FEESTATUS =0 AND ORDERAMOUNT <> AMOUNT THEN AMOUNT - ORDERAMOUNT ELSE AMOUNT END END, "
// + "0 FROM ch_fee "
// + "WHERE GID IN (SELECT A.GID FROM ch_fee as A LEFT JOIN ch_fee_do as B ON A.GID = B.FEEID WHERE A.BSNO IN ('{0}') AND (FEEID IS NULL OR FEESTATUS = 8 OR (A.FEESTATUS = 0 AND A.ORDERAMOUNT <> A.AMOUNT)) "
// + ") AND (FEESTATUS = 8 OR FEESTATUS = 0) " + strCondition, tempBSNO);
//string strSql = String.Format(" SELECT C.GID,C.FEETYPE,C.CUSTOMERNAME,C.FEENAME,C.CURRENCY,CASE WHEN C.FEESTATUS = 8 THEN C.AMOUNT - D.DOAMOUNT "
// + " ELSE CASE WHEN C.FEESTATUS =0 AND C.ORDERAMOUNT <> C.AMOUNT THEN C.AMOUNT - C.ORDERAMOUNT END END , "
// + " CASE WHEN C.FEESTATUS = 8 THEN C.AMOUNT - D.DOAMOUNT "
// + " ELSE CASE WHEN C.FEESTATUS =0 AND C.ORDERAMOUNT <> C.AMOUNT THEN C.AMOUNT - C.ORDERAMOUNT END END ,0 "
// + " FROM ch_fee as C LEFT JOIN ch_fee_do as D ON C.GID = D.FEEID WHERE C.GID IN ( SELECT A.GID FROM ch_fee as A LEFT JOIN ch_fee_do as B ON A.GID = B.FEEID "
// + " WHERE A.BSNO IN ('{0}') AND (FEEID IS NULL OR FEESTATUS = 8 OR (A.FEESTATUS = 0 AND A.ORDERAMOUNT <> A.AMOUNT AND A.AMOUNT > 0)) "
// + " ) AND (FEESTATUS = 8 OR FEESTATUS = 0) " + strCondition, tempBSNO);
string strSql = String.Format(" SELECT GID,FEETYPE,CUSTOMERNAME,FEENAME,CURRENCY,AMOUNT"
+ ",CASE WHEN AMOUNT > SETTLEMENT THEN CASE WHEN SETTLEMENT < ORDERAMOUNT THEN AMOUNT - ORDERAMOUNT ELSE AMOUNT - SETTLEMENT END ELSE 0 END as CTL"
+ ",CASE WHEN AMOUNT > SETTLEMENT THEN CASE WHEN SETTLEMENT < ORDERAMOUNT THEN AMOUNT - ORDERAMOUNT ELSE AMOUNT - SETTLEMENT END ELSE 0 END as UCTL,REMARK"
+ " FROM ch_fee "
+ " WHERE GID NOT IN (SELECT DISTINCT B.FEEID FROM ch_fee_payapplication as A INNER JOIN ch_fee_do as B ON A.BILLNO = B.BILLNO WHERE A.BILLSTATUS < 4) AND AMOUNT <> SETTLEMENT AND ORDERAMOUNT <= AMOUNT AND BSNO IN ('{0}') " + strCondition, tempBSNO);
sourceTable = getStatusNameTable(feeSettlementDA.GetExcuteSql(strSql).Tables[0]);
StringBuilder sourceBuilder = new StringBuilder();
sourceBuilder.Append("{");
sourceBuilder.Append("rows:[");
for (int i = 0; i < sourceTable.Rows.Count; i++)
{
sourceBuilder.Append("{id:\"" + sourceTable.Rows[i][0].ToString() + "\",");
sourceBuilder.Append("data:[");
sourceBuilder.Append("\"0\",");
for (int j = 1; j < sourceTable.Columns.Count; j++)
{
if (j == sourceTable.Columns.Count - 1)
{
sourceBuilder.Append("\"" + sourceTable.Rows[i][j].ToString() + "\"");
}
else
{
sourceBuilder.Append("\"" + sourceTable.Rows[i][j].ToString() + "\",");
}
}
if (i == sourceTable.Rows.Count - 1)
{
sourceBuilder.Append("]}");
}
else
{
sourceBuilder.Append("]},");
}
}
sourceBuilder.Append("]");
sourceBuilder.Append("}");
return sourceBuilder.ToString();
}
#endregion
/// <summary>
/// 将数据集表中费用状态FeeStatus和应收应付类型FeeType的数字状态位转换成文字
/// </summary>
/// <param name="tempTable">原数据源DataTable</param>
/// <returns>返回新数据源DataTable</returns>
private DataTable getStatusNameTable(DataTable tempTable)
{
DataTable sourceTable = tempTable;
DataTable cloneTable = new DataTable();
int iSwitch = 0;
for (int i = 0; i < sourceTable.Rows.Count; i++)
{
if (iSwitch == 0)
{
for (int j = 0; j < sourceTable.Columns.Count; j++)
{
if (sourceTable.Columns[j].ColumnName.Equals("FEETYPE"))
{
DataColumn newColumn = new DataColumn();
newColumn.ColumnName = sourceTable.Columns[j].ColumnName;
newColumn.DataType = System.Type.GetType("System.String");
cloneTable.Columns.Add(newColumn);
}
else
{
DataColumn newColumn = new DataColumn();
newColumn.ColumnName = sourceTable.Columns[j].ColumnName;
newColumn.DataType = sourceTable.Columns[j].DataType;
cloneTable.Columns.Add(newColumn);
}
}
iSwitch = 1;
}
DataRow cloneRow = cloneTable.NewRow();
for (int k = 0; k < sourceTable.Columns.Count; k++)
{
if (sourceTable.Columns[k].ColumnName.Equals("FEETYPE"))
{
int iFeeStatus = int.Parse(sourceTable.Rows[i][k].ToString());
string strFeeStatus = "";
switch (iFeeStatus)
{
case 1:
strFeeStatus = "收";
break;
case 2:
strFeeStatus = "付";
break;
default:
break;
}
cloneRow[sourceTable.Columns[k].ColumnName] = strFeeStatus;
}
else
{
cloneRow[sourceTable.Columns[k].ColumnName] = sourceTable.Rows[i][k];
}
}
cloneTable.Rows.Add(cloneRow);
}
//cloneTable.Columns.Remove("FEESTATUS");
//cloneTable.Columns.Add(new DataColumn("FEESTATUS", System.Type.GetType("System.String")));
return cloneTable;
}
private DataTable getStatusNameTableBillStatus(DataTable tempTable)
{
DataTable sourceTable = tempTable;
DataTable cloneTable = new DataTable();
int iSwitch = 0;
for (int i = 0; i < sourceTable.Rows.Count; i++)
{
if (iSwitch == 0)
{
for (int j = 0; j < sourceTable.Columns.Count; j++)
{
if (sourceTable.Columns[j].ColumnName.Equals("BILLSTATUS") || sourceTable.Columns[j].ColumnName.Equals("SETTLEMODE") || sourceTable.Columns[j].ColumnName.Equals("SETTLETYPE"))
{
DataColumn newColumn = new DataColumn();
newColumn.ColumnName = sourceTable.Columns[j].ColumnName;
newColumn.DataType = System.Type.GetType("System.String");
cloneTable.Columns.Add(newColumn);
}
else
{
DataColumn newColumn = new DataColumn();
newColumn.ColumnName = sourceTable.Columns[j].ColumnName;
newColumn.DataType = sourceTable.Columns[j].DataType;
cloneTable.Columns.Add(newColumn);
}
}
iSwitch = 1;
}
DataRow cloneRow = cloneTable.NewRow();
for (int k = 0; k < sourceTable.Columns.Count; k++)
{
if (sourceTable.Columns[k].ColumnName.Equals("BILLSTATUS"))
{
int iFeeStatus = int.Parse(sourceTable.Rows[i][k].ToString());
string strFeeStatus = "";
switch (iFeeStatus)
{
case 1:
strFeeStatus = "锁定";
break;
case 2:
strFeeStatus = "未锁定";
break;
default:
break;
}
cloneRow[sourceTable.Columns[k].ColumnName] = strFeeStatus;
}
else if (sourceTable.Columns[k].ColumnName.Equals("SETTLEMODE"))
{
int iFeeStatus = int.Parse(sourceTable.Rows[i][k].ToString());
string strFeeStatus = "";
switch (iFeeStatus)
{
case 1:
strFeeStatus = "申请";
break;
case 2:
strFeeStatus = "自由";
break;
case 3:
strFeeStatus = "发票";
break;
case 4:
strFeeStatus = "流程";
break;
default:
break;
}
cloneRow[sourceTable.Columns[k].ColumnName] = strFeeStatus;
}
else if (sourceTable.Columns[k].ColumnName.Equals("SETTLETYPE"))
{
int iFeeStatus = int.Parse(sourceTable.Rows[i][k].ToString());
string strFeeStatus = "";
switch (iFeeStatus)
{
case 1:
strFeeStatus = "现金";
break;
case 2:
strFeeStatus = "支票";
break;
case 3:
strFeeStatus = "电汇";
break;
case 4:
strFeeStatus = "转账";
break;
case 5:
strFeeStatus = "承兑汇票";
break;
default:
break;
}
cloneRow[sourceTable.Columns[k].ColumnName] = strFeeStatus;
}
else
{
cloneRow[sourceTable.Columns[k].ColumnName] = sourceTable.Rows[i][k];
}
}
cloneTable.Rows.Add(cloneRow);
}
//cloneTable.Columns.Remove("FEESTATUS");
//cloneTable.Columns.Add(new DataColumn("FEESTATUS", System.Type.GetType("System.String")));
return cloneTable;
}
#region 当委托全选或者是去除全选时,缓存费用信息
/// <summary>
/// 当委托全选或者是去除全选时,缓存费用信息
/// </summary>
/// <param name="tempSelectedOrder">选中的委托信息组</param>
/// <param name="tempOrderCacheName">缓存名称</param>
/// <returns>返回动态计算的应收应付金额合计</returns>
private string CacheOrderFee(string tempSelectedOrder, string tempOrderCacheName)
{
string strResult = "";
int iAuthorityStatus = 0;
int iForbidCount = 0;//没有权限添加的委托信息统计
UserAuthorityManage userAuthorityManage = null;
if (strDoTypeName == "paysettle")
{
userAuthorityManage = new UserAuthorityManage(strUserID, "modPaySettlementSearch");
}
if (strDoTypeName == "recvsettle")
{
userAuthorityManage = new UserAuthorityManage(strUserID, "modRecvSettleSearch");
}
if (strDoTypeName == "paysettleapp")
{
userAuthorityManage = new UserAuthorityManage(strUserID, "modPaySettleAppSearch");
}
ArrayList groupArray = new ArrayList();
string strBsnoGroup = "";
string strList = tempSelectedOrder;
string strFilter = "";
if (strList.IndexOf("[") >= 0 && strList.IndexOf("]") > 0)
{
strFilter = strList.Substring(strList.IndexOf("[") + 1, strList.IndexOf("]") - strList.IndexOf("[") - 1);
string[] strFees = strFilter.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 "bsno":
groupArray.Add(strArg[1].ToString().Replace("\"", "").Trim());
if (strDoTypeName == "paysettle")
{
if (userAuthorityManage.OperateType != AuthorityType.NULL)
{
iAuthorityStatus = userAuthorityManage.CheckOperateRange(ModuleType.PAYSETTLESEARCH, userAuthorityManage.OperateType, strShowName, strCompanyID, strDeptName, strArg[1].ToString().Replace("\"", "").Trim(), "", strUserID);
}
}
else if (strDoTypeName == "recvsettle")
{
if (userAuthorityManage.OperateType != AuthorityType.NULL)
{
iAuthorityStatus = userAuthorityManage.CheckOperateRange(ModuleType.RECVSETTLESEARCH, userAuthorityManage.OperateType, strShowName, strCompanyID, strDeptName, strArg[1].ToString().Replace("\"", "").Trim(), "", strUserID);
}
}
else if (strDoTypeName == "paysettleapp")
{
if (userAuthorityManage.OperateType != AuthorityType.NULL)
{
iAuthorityStatus = userAuthorityManage.CheckOperateRange(ModuleType.PAYSETTLEAPPSEARCH, userAuthorityManage.OperateType, strShowName, strCompanyID, strDeptName, strArg[1].ToString().Replace("\"", "").Trim(), "", strUserID);
}
}
//strBsnoGroup += "'" + strArg[1].ToString().Replace("\"", "").Trim() + "',";
if (iAuthorityStatus == 1)
{
strBsnoGroup += "'" + strArg[1].ToString().Replace("\"", "").Trim() + "',";
}
else
{
iForbidCount++;
}
break;
default:
break;
}
}
}
}
}
}
if (strCheckType != null)
{
if (strCheckType.Trim().ToLower().Equals("check"))
{
if (strBsnoGroup.Trim().EndsWith(","))
{
strBsnoGroup = strBsnoGroup.Substring(0, strBsnoGroup.Length - 1);
}
if (strBsnoGroup.Trim().Equals(""))
{
strBsnoGroup = "''";
}
string strSql = GetSearchSql(strSearch, strBsnoGroup);//String.Format("SELECT * FROM ch_fee WHERE BSNO IN ({0})", strBsnoGroup);
DataTable feeTable = new DataTable();
FeeDA feeDA = new FeeDA();
feeTable = feeDA.GetExcuteSql(strSql).Tables[0];
if (feeTable.Rows.Count > 0)
{
Session[tempOrderCacheName] = feeTable;
}
//strResult = GetSumFeeJson(feeTable,1);
if (iForbidCount > 0)
{
strResult = GetSumFeeJson(feeTable, -iForbidCount,0,false);
}
else
{
strResult = GetSumFeeJson(feeTable, 1, 1, true);
}
}
else
{
if (Session[tempOrderCacheName] != null)
{
DataTable feeTable = (DataTable)Session[tempOrderCacheName];
if (groupArray.Count > 0)
{
for (int j = 0; j < groupArray.Count; j++)
{
for (int i = 0; i < feeTable.Rows.Count; i++)
{
if (feeTable.Rows[i]["BSNO"].ToString().Trim().Equals(groupArray[j].ToString()))
{
feeTable.Rows.Remove(feeTable.Rows[i]);
i = -1;
continue;
}
}
}
if (feeTable.Rows.Count == 0)
{
Session.Remove(tempOrderCacheName);
//strResult = GetSumFeeJson(feeTable,1);
if (iForbidCount > 0)
{
strResult = GetSumFeeJson(feeTable, -iForbidCount, 0, false);
}
else
{
strResult = GetSumFeeJson(feeTable, 1, 2, true);
}
}
else
{
Session[tempOrderCacheName] = feeTable;
//strResult = GetSumFeeJson(feeTable,1);
if (iForbidCount > 0)
{
strResult = GetSumFeeJson(feeTable, -iForbidCount, 0, false);
}
else
{
strResult = GetSumFeeJson(feeTable, 1, 2, true);
}
}
}
}
}
}
return strResult;
}
#endregion
#region 选中委托信息,默认缓存委托信息内的所有费用信息
/// <summary>
/// 选中委托信息,默认缓存委托信息内的所有费用信息
/// </summary>
/// <param name="tempBSNO">委托编号</param>
/// <param name="tempCheckType">选中类型 值check表示选中 值uncheck表示取消选中</param>
/// <param name="tempCacheName">缓存名称</param>
/// <param name="tempBsnoCacheName">委托缓存名称</param>
/// <param name="tempTotalCacheName">合计缓存名称</param>
/// <returns>返回重新计算后的利润信息JSON</returns>
private string ExcuteCheckOrder(string tempBSNO, string tempCheckType, string tempCacheName,string tempBsnoCacheName,string tempTotalCacheName)
{
string strResult = "";
DataTable feeTable = null;
int iAuthorityStatus = 0;
if (strDoTypeName == "paysettle")
{
UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modPaySettlementSearch");
if (userAuthorityManage.OperateType != AuthorityType.NULL)
{
iAuthorityStatus = userAuthorityManage.CheckOperateRange(ModuleType.PAYSETTLESEARCH, userAuthorityManage.OperateType, strShowName, strCompanyID, strDeptName, tempBSNO, "", strUserID,"VW_Settlement");
}
if (iAuthorityStatus != 1)
{
if (Session[tempCacheName] != null)
{
feeTable = (DataTable)Session[tempCacheName];
}
strResult = GetSumFeeJson(feeTable, -1, 0, false);
return strResult;
}
}
if (strDoTypeName == "paysettleapp")
{
UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modPaySettleAppSearch");
if (userAuthorityManage.OperateType != AuthorityType.NULL)
{
iAuthorityStatus = userAuthorityManage.CheckOperateRange(ModuleType.PAYSETTLEAPPSEARCH, userAuthorityManage.OperateType, strShowName, strCompanyID, strDeptName, tempBSNO, "", strUserID,"VW_Settlement");
}
if (iAuthorityStatus != 1)
{
if (Session[tempCacheName] != null)
{
feeTable = (DataTable)Session[tempCacheName];
}
strResult = GetSumFeeJson(feeTable, -1,0, false);
return strResult;
}
}
if (strDoTypeName == "recvsettle")
{
UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modRecvSettleSearch");
if (userAuthorityManage.OperateType != AuthorityType.NULL)
{
iAuthorityStatus = userAuthorityManage.CheckOperateRange(ModuleType.RECVSETTLESEARCH, userAuthorityManage.OperateType, strShowName, strCompanyID, strDeptName, tempBSNO, "", strUserID,"VW_Settlement");
}
if (iAuthorityStatus != 1)
{
if (Session[tempCacheName] != null)
{
feeTable = (DataTable)Session[tempCacheName];
}
strResult = GetSumFeeJson(feeTable, -1, 0, false);
return strResult;
}
}
//如果已经存在选中费用明细,则从Session中获取费用信息进行添加
if (Session[tempCacheName] != null)
{
feeTable = (DataTable)Session[tempCacheName];
if (tempCheckType.Trim().ToLower().Equals("check"))
{
string strSql = GetSearchSql(strSearch, "'" + tempBSNO + "'");
DataTable checkFeeTable = new DataTable();
DataTable bsnoTable = null;
FeeDA feeDA = new FeeDA();
//checkFeeTable = feeDA.GetFeeListByCondition(strSql).Tables[0];
checkFeeTable = GetFeeByOrderBsnoTable(strSearch, tempBSNO);
if (checkFeeTable.Rows.Count > 0)
{
for (int i = 0; i < checkFeeTable.Rows.Count; i++)
{
int iCount = 0;
for (int j = 0; j < feeTable.Rows.Count; j++)
{
if (feeTable.Rows[j]["GID"].ToString().Trim().Equals(checkFeeTable.Rows[i]["GID"].ToString().Trim()))
{
iCount++;
break;
}
}
if (iCount == 0)
{
//缓存新的费用信息
DataRow newRow = feeTable.NewRow();
newRow["GID"] = checkFeeTable.Rows[i]["GID"].ToString();
newRow["BSNO"] = checkFeeTable.Rows[i]["BSNO"].ToString();
newRow["FEETYPE"] = checkFeeTable.Rows[i]["FEETYPE"].ToString();
newRow["CUSTOMERNAME"] = checkFeeTable.Rows[i]["CUSTOMERNAME"].ToString();
newRow["FEENAME"] = checkFeeTable.Rows[i]["FEENAME"].ToString();
newRow["CURRENCY"] = checkFeeTable.Rows[i]["CURRENCY"].ToString();
newRow["AMOUNT"] = checkFeeTable.Rows[i]["AMOUNT"].ToString();
newRow["CTL"] = checkFeeTable.Rows[i]["CTL"].ToString();
newRow["UCTL"] = checkFeeTable.Rows[i]["UCTL"].ToString();
newRow["EXCHANGERATE"] = checkFeeTable.Rows[i]["EXCHANGERATE"].ToString();
feeTable.Rows.Add(newRow);
}
}
Session[tempCacheName] = feeTable;
}
if (Session[tempBsnoCacheName] != null)
{
bsnoTable = (DataTable)Session[tempBsnoCacheName];
for (int i = 0; i < bsnoTable.Rows.Count; i++)
{
if (bsnoTable.Rows[i]["BSNO"].ToString().Equals(tempBSNO))
{
bsnoTable.Rows.RemoveAt(i);
break;
}
}
//
DataTable checkBsnoTable = GetOrderTable(strSearch, tempBSNO);
int iBsnoCount = 0;
for (int j = 0; j < bsnoTable.Rows.Count; j++)
{
if (bsnoTable.Rows[j]["BSNO"].ToString().Trim().Equals(tempBSNO))
{
bsnoTable.Rows[j]["BSNO"] = checkBsnoTable.Rows[0]["BSNO"].ToString();
bsnoTable.Rows[j]["CUSTOMERNAME"] = checkBsnoTable.Rows[0]["CUSTOMERNAME"].ToString();
bsnoTable.Rows[j]["CUSTNO"] = checkBsnoTable.Rows[0]["CUSTNO"].ToString();
bsnoTable.Rows[j]["MBLNO"] = checkBsnoTable.Rows[0]["MBLNO"].ToString();
bsnoTable.Rows[j]["HBLNO"] = checkBsnoTable.Rows[0]["HBLNO"].ToString();
iBsnoCount++;
break;
}
}
if (iBsnoCount == 0)
{
//BSNO, CUSTOMERNAME,CUSTNO,MBLNO,HBLNO
//缓存新的委托信息
DataRow newRow = bsnoTable.NewRow();
newRow["BSNO"] = checkBsnoTable.Rows[0]["BSNO"].ToString();
newRow["CUSTOMERNAME"] = checkBsnoTable.Rows[0]["CUSTOMERNAME"].ToString();
newRow["CUSTNO"] = checkBsnoTable.Rows[0]["CUSTNO"].ToString();
newRow["MBLNO"] = checkBsnoTable.Rows[0]["MBLNO"].ToString();
newRow["HBLNO"] = checkBsnoTable.Rows[0]["HBLNO"].ToString();
bsnoTable.Rows.Add(newRow);
}
}
else
{
bsnoTable = GetOrderTable(strSearch, tempBSNO);
}
Session[strBsnoCacheName] = bsnoTable;
strResult = GetSumFeeJson(feeTable, 1, 1, false);
}
else if (tempCheckType.Trim().ToLower().Equals("uncheck"))
{
//string strSql = GetSearchSql(strSearch, "'" + tempBSNO + "'");
DataTable checkFeeTable = null;
//FeeDA feeDA = new FeeDA();
//checkFeeTable = feeDA.GetFeeListByCondition(strSql).Tables[0];
checkFeeTable = GetFeeByOrderBsnoTable(strSearch, tempBSNO);
if (checkFeeTable.Rows.Count > 0)
{
for (int i = 0; i < checkFeeTable.Rows.Count; i++)
{
for (int j = 0; j < feeTable.Rows.Count; j++)
{
if (feeTable.Rows[j]["GID"].ToString().Trim().Equals(checkFeeTable.Rows[i]["GID"].ToString().Trim()))
{
feeTable.Rows.Remove(feeTable.Rows[j]);
break;
}
}
}
Session[tempCacheName] = feeTable;
}
DataTable bsnoTable = null;
if (Session[tempBsnoCacheName] != null)
{
bsnoTable = (DataTable)Session[tempBsnoCacheName];
for (int i = 0; i < bsnoTable.Rows.Count; i++)
{
if (bsnoTable.Rows[i]["BSNO"].ToString().Equals(tempBSNO))
{
bsnoTable.Rows.RemoveAt(i);
break;
}
}
Session[tempBsnoCacheName] = bsnoTable;
}
strResult = GetSumFeeJson(feeTable, 1, 2, false);
}
//strResult = GetSumFeeJson(feeTable, 1);
}
else
{
if (tempCheckType.Trim().ToLower().Equals("check"))
{
DataTable bsnoTable = null;
//如果当前选中的委托下的费用未进行过缓存,则将所有费用明细缓存
if (Session[strBsnoCacheName] != null)
{
bsnoTable = (DataTable)Session[strBsnoCacheName];
}
else
{
bsnoTable = GetOrderTable(strSearch, tempBSNO);
Session[strBsnoCacheName] = bsnoTable;
}
feeTable = GetFeeByOrderBsnoTable(strSearch, tempBSNO);
Session[tempCacheName] = feeTable;
strResult = GetSumFeeJson(feeTable, 1, 1, false);
}
else
{
//如果在没有缓存费用明细情况下,取消选中状态,将委托缓存信息内相关委托移除,最后再缓存
DataTable bsnoTable = null;
if (Session[strBsnoCacheName] != null)
{
bsnoTable = (DataTable)Session[strBsnoCacheName];
}
if (bsnoTable != null)
{
for (int i = 0; i < bsnoTable.Rows.Count; i++)
{
if (bsnoTable.Rows[i]["BSNO"].ToString().Equals(tempBSNO))
{
bsnoTable.Rows.RemoveAt(i);
break;
}
}
Session[strBsnoCacheName] = bsnoTable;
}
strResult = GetSumFeeJson(feeTable, 1, 2, false);
}
}
return strResult;
}
#endregion
#region 单选费用操作
/// <summary>
/// 单选费用操作
/// </summary>
/// <param name="tempBSNO">委托编号BSNO</param>
/// <param name="tempCheckType">选中类型 值check选中状态 值uncheck取消选中状态</param>
/// <param name="tempCacheName">缓存名称</param>
/// <returns>返回缓存数据合计费用JSON</returns>
private string ExcuteCheckFee(string tempFeeID, string tempCheckType, string tempCacheName,string tempBsnoCacheName,string tempTotalCacheName,string tempBSNO)
{
string strResult = "";
DataTable feeTable = (DataTable)Session[tempCacheName] ?? CreateFeeTable();
DataTable bsnoTable = (DataTable)Session[tempBsnoCacheName] ?? CreateBsnoTable();
DataTable totalTable = (DataTable)Session[tempTotalCacheName] ?? CreateTotalTable();
int iAuthorityStatus = 0;
if (strDoTypeName == "paysettle")
{
UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modPaySettlementSearch");
if (userAuthorityManage.OperateType != AuthorityType.NULL)
{
iAuthorityStatus = userAuthorityManage.CheckOperateRange(ModuleType.PAYSETTLESEARCH, userAuthorityManage.OperateType, strShowName, strCompanyID, strDeptName, strBSNO, "", strUserID, "VW_Settlement");//stroplb
}
if (iAuthorityStatus != 1)
{
if (Session[tempCacheName] != null)
{
feeTable = (DataTable)Session[tempCacheName];
}
strResult = GetSumFeeJson(feeTable, -1, 0, false);
return strResult;
}
}
if (strDoTypeName == "paysettleapp")
{
UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modPaySettleAppSearch");
if (userAuthorityManage.OperateType != AuthorityType.NULL)
{
iAuthorityStatus = userAuthorityManage.CheckOperateRange(ModuleType.PAYSETTLEAPPSEARCH, userAuthorityManage.OperateType, strShowName, strCompanyID, strDeptName, strBSNO, "", strUserID, "VW_Settlement");//stroplb
}
if (iAuthorityStatus != 1)
{
if (Session[tempCacheName] != null)
{
feeTable = (DataTable)Session[tempCacheName];
}
strResult = GetSumFeeJson(feeTable, -1, 0, false);
return strResult;
}
}
if (strDoTypeName == "recvsettle")
{
UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modRecvSettleSearch");
if (userAuthorityManage.OperateType != AuthorityType.NULL)
{
iAuthorityStatus = userAuthorityManage.CheckOperateRange(ModuleType.RECVSETTLESEARCH, userAuthorityManage.OperateType, strShowName, strCompanyID, strDeptName, strBSNO, "", strUserID, "VW_Settlement");//stroplb
}
if (iAuthorityStatus != 1)
{
if (Session[tempCacheName] != null)
{
feeTable = (DataTable)Session[tempCacheName];
}
strResult = GetSumFeeJson(feeTable, -1, 0, false);
return strResult;
}
}
if (tempCheckType.Trim().ToLower().Equals("check"))
{
DataTable checkFeeTable = GetSimpleFeeByGID(tempFeeID);
for (int i = 0; i < checkFeeTable.Rows.Count; i++)
{
int iCount = 0;
for (int j = 0; j < feeTable.Rows.Count; j++)
{
if (feeTable.Rows[j]["GID"].ToString().Trim().Equals(checkFeeTable.Rows[i]["GID"].ToString().Trim()))
{
feeTable.Rows[j]["GID"] = checkFeeTable.Rows[i]["GID"].ToString();
feeTable.Rows[j]["BSNO"] = checkFeeTable.Rows[i]["BSNO"].ToString();
feeTable.Rows[j]["FEETYPE"] = checkFeeTable.Rows[i]["FEETYPE"].ToString();
feeTable.Rows[j]["CUSTOMERNAME"] = checkFeeTable.Rows[i]["CUSTOMERNAME"].ToString();
feeTable.Rows[j]["FEENAME"] = checkFeeTable.Rows[i]["FEENAME"].ToString();
feeTable.Rows[j]["CURRENCY"] = checkFeeTable.Rows[i]["CURRENCY"].ToString();
feeTable.Rows[j]["AMOUNT"] = checkFeeTable.Rows[i]["AMOUNT"].ToString();
feeTable.Rows[j]["CTL"] = checkFeeTable.Rows[i]["CTL"].ToString();
feeTable.Rows[j]["UCTL"] = checkFeeTable.Rows[i]["UCTL"].ToString();
feeTable.Rows[j]["EXCHANGERATE"] = checkFeeTable.Rows[i]["EXCHANGERATE"].ToString();
iCount++;
break;
}
}
if (iCount == 0)
{
//缓存新的费用信息
DataRow newRow = feeTable.NewRow();
newRow["GID"] = checkFeeTable.Rows[i]["GID"].ToString();
newRow["BSNO"] = checkFeeTable.Rows[i]["BSNO"].ToString();
newRow["FEETYPE"] = checkFeeTable.Rows[i]["FEETYPE"].ToString();
newRow["CUSTOMERNAME"] = checkFeeTable.Rows[i]["CUSTOMERNAME"].ToString();
newRow["FEENAME"] = checkFeeTable.Rows[i]["FEENAME"].ToString();
newRow["CURRENCY"] = checkFeeTable.Rows[i]["CURRENCY"].ToString();
newRow["AMOUNT"] = checkFeeTable.Rows[i]["AMOUNT"].ToString();
newRow["CTL"] = checkFeeTable.Rows[i]["CTL"].ToString();
newRow["UCTL"] = checkFeeTable.Rows[i]["UCTL"].ToString();
newRow["EXCHANGERATE"] = checkFeeTable.Rows[i]["EXCHANGERATE"].ToString();
feeTable.Rows.Add(newRow);
}
}
DataTable checkBsnoTable = GetOrderTable(strSearch, tempBSNO);
int iBsnoCount = 0;
for (int j = 0; j < bsnoTable.Rows.Count; j++)
{
if (bsnoTable.Rows[j]["BSNO"].ToString().Trim().Equals(tempBSNO))
{
bsnoTable.Rows[j]["BSNO"] = checkBsnoTable.Rows[0]["BSNO"].ToString();
bsnoTable.Rows[j]["CUSTOMERNAME"] = checkBsnoTable.Rows[0]["CUSTOMERNAME"].ToString();
bsnoTable.Rows[j]["CUSTNO"] = checkBsnoTable.Rows[0]["CUSTNO"].ToString();
bsnoTable.Rows[j]["MBLNO"] = checkBsnoTable.Rows[0]["MBLNO"].ToString();
bsnoTable.Rows[j]["HBLNO"] = checkBsnoTable.Rows[0]["HBLNO"].ToString();
iBsnoCount++;
break;
}
}
if (iBsnoCount == 0)
{
//BSNO, CUSTOMERNAME,CUSTNO,MBLNO,HBLNO
//缓存新的委托信息
DataRow newRow = bsnoTable.NewRow();
newRow["BSNO"] = checkBsnoTable.Rows[0]["BSNO"].ToString();
newRow["CUSTOMERNAME"] = checkBsnoTable.Rows[0]["CUSTOMERNAME"].ToString();
newRow["CUSTNO"] = checkBsnoTable.Rows[0]["CUSTNO"].ToString();
newRow["MBLNO"] = checkBsnoTable.Rows[0]["MBLNO"].ToString();
newRow["HBLNO"] = checkBsnoTable.Rows[0]["HBLNO"].ToString();
bsnoTable.Rows.Add(newRow);
}
Session[tempBsnoCacheName] = bsnoTable;
Session[tempCacheName] = feeTable;
strResult = GetSumFeeJson(feeTable, 1, 1, false);
}
else
{
int isExistCount = 0;
DataTable checkFeeTable = GetSimpleFeeByGID(tempFeeID);
for (int i = 0; i < checkFeeTable.Rows.Count; i++)
{
int feeCount = feeTable.Rows.Count;
for (int j = 0; j < feeCount; j++)
{
if (feeTable.Rows[j]["GID"].ToString().Trim().Equals(checkFeeTable.Rows[i]["GID"].ToString().Trim()))
{
feeTable.Rows.Remove(feeTable.Rows[j]);
j = j - 1;
feeCount = feeTable.Rows.Count;
isExistCount--;
continue;
}
if (feeTable.Rows[j]["BSNO"].ToString().Trim().Equals(tempBSNO))
{
isExistCount++;
}
}
}
if (isExistCount == 0)
{
for (int j = 0; j < bsnoTable.Rows.Count; j++)
{
if (bsnoTable.Rows[j]["BSNO"].ToString().Trim().Equals(tempBSNO))
{
bsnoTable.Rows.RemoveAt(j);
break;
}
}
if (bsnoTable.Rows.Count > 0)
{
Session[tempBsnoCacheName] = bsnoTable;
}
else
{
Session.Remove(tempBsnoCacheName);
}
}
if (feeTable.Rows.Count > 0)
{
Session[tempCacheName] = feeTable;
}
else
{
Session.Remove(tempCacheName);
}
strResult = GetSumFeeJson(feeTable, 1, 2, false);
}
return strResult;
}
#endregion
#region 动态计算人民币、美元应收应付合计金额
/// <summary>
/// 动态计算人民币、美元应收应付合计金额
/// </summary>
/// <param name="tempFeeTable">数据表</param>
/// <param name="tempState">返回状态信息</param>
/// <param name="tempCheckType">是否是选中状态1-选中状态 2-取消选中状态</param>
/// <param name="tempCheckAll">是否是全选操作</param>
/// <returns>返回JSON状态信息</returns>
private string GetSumFeeJson(DataTable tempFeeTable, int tempState,int tempCheckType,bool tempCheckAll)
{
StringBuilder totalBuilder = new StringBuilder();
decimal RecvRmbTotal = 0;
decimal PayRmbTotal = 0;
decimal RecvUsdTotal = 0;
decimal PayUsdTotal = 0;
decimal RmbTotal = 0;
decimal UsdTotal = 0;
if (tempFeeTable != null)
{
if (tempFeeTable.Rows.Count > 0)
{
if (tempCheckType == 1)//选中状态
{
for (int i = 0; i < tempFeeTable.Rows.Count; i++)
{
string tempCurrency = tempFeeTable.Rows[i]["CURRENCY"].ToString().Trim().ToUpper();
decimal tempFee = decimal.Parse(tempFeeTable.Rows[i]["CTL"].ToString());
int tempFeeType = int.Parse(tempFeeTable.Rows[i]["FEETYPE"].ToString());
if (tempFeeType == 1 && tempCurrency == "RMB" && tempFee != 0)//tempFee > 0
{
RecvRmbTotal += tempFee;
}
else if (tempFeeType == 1 && tempCurrency == "USD" && tempFee != 0)//tempFee > 0
{
RecvUsdTotal += tempFee;
}
else if (tempFeeType == 2 && tempCurrency == "RMB" && tempFee != 0)//tempFee > 0
{
PayRmbTotal += tempFee;
}
else if (tempFeeType == 2 && tempCurrency == "USD" && tempFee != 0)//tempFee > 0
{
PayUsdTotal += tempFee;
}
}
if (strDoTypeName == "paysettle" || strDoTypeName == "paysettleapp")
{
RmbTotal = PayRmbTotal - RecvRmbTotal;
UsdTotal = PayUsdTotal - RecvUsdTotal;
}
else
{
RmbTotal = RecvRmbTotal - PayRmbTotal;
UsdTotal = RecvUsdTotal - PayUsdTotal;
}
totalBuilder.Append("{");
totalBuilder.Append("\"totals\":");
totalBuilder.Append("[");
totalBuilder.Append("{");
totalBuilder.Append("\"recvrmb\":" + RecvRmbTotal.ToString() + ",");
totalBuilder.Append("\"recvusd\":" + RecvUsdTotal.ToString() + ",");
totalBuilder.Append("\"payrmb\":" + PayRmbTotal.ToString() + ",");
totalBuilder.Append("\"payusd\":" + PayUsdTotal.ToString() + ",");
totalBuilder.Append("\"totalrmb\":" + RmbTotal.ToString() + ",");
totalBuilder.Append("\"totalusd\":" + UsdTotal.ToString() + ",");
totalBuilder.Append("\"state\":" + tempState.ToString());
totalBuilder.Append("}");
totalBuilder.Append("]");
totalBuilder.Append("}");
DataTable totalTable = null;
if (Session[strTotalCacheName] != null)
{
totalTable = (DataTable)Session[strTotalCacheName];
}
else
{
totalTable = CreateTotalTable();
DataRow newRow = totalTable.NewRow();
totalTable.Rows.Add(newRow);
}
totalTable.Rows[0]["RECVRMB"] = RecvRmbTotal.ToString();
totalTable.Rows[0]["RECVUSD"] = RecvUsdTotal.ToString();
totalTable.Rows[0]["PAYRMB"] = PayRmbTotal.ToString();
totalTable.Rows[0]["PAYUSD"] = PayUsdTotal.ToString();
totalTable.Rows[0]["TOTALRMB"] = RmbTotal.ToString();
totalTable.Rows[0]["TOTALUSD"] = UsdTotal.ToString();
Session[strTotalCacheName] = totalTable;
}
else
{
//如果当前是状态为全部取消选中状态,则将合计数据置零并清除Session信息
if (tempCheckAll)
{
if (Session[strTotalCacheName] != null)
{
Session.Remove(strTotalCacheName);
}
totalBuilder.Append("{");
totalBuilder.Append("\"totals\":");
totalBuilder.Append("[");
totalBuilder.Append("{");
totalBuilder.Append("\"recvrmb\":0,");
totalBuilder.Append("\"recvusd\":0,");
totalBuilder.Append("\"payrmb\":0,");
totalBuilder.Append("\"payusd\":0,");
totalBuilder.Append("\"totalrmb\":0,");
totalBuilder.Append("\"totalusd\":0,");
totalBuilder.Append("\"state\":" + tempState.ToString());
totalBuilder.Append("}");
totalBuilder.Append("]");
totalBuilder.Append("}");
}
else
{
for (int i = 0; i < tempFeeTable.Rows.Count; i++)
{
string tempCurrency = tempFeeTable.Rows[i]["CURRENCY"].ToString().Trim().ToUpper();
decimal tempFee = decimal.Parse(tempFeeTable.Rows[i]["CTL"].ToString());
int tempFeeType = int.Parse(tempFeeTable.Rows[i]["FEETYPE"].ToString());
if (tempFeeType == 1 && tempCurrency == "RMB" && tempFee != 0)//tempFee > 0
{
RecvRmbTotal += tempFee;
}
else if (tempFeeType == 1 && tempCurrency == "USD" && tempFee != 0)//tempFee > 0
{
RecvUsdTotal += tempFee;
}
else if (tempFeeType == 2 && tempCurrency == "RMB" && tempFee != 0)//tempFee > 0
{
PayRmbTotal += tempFee;
}
else if (tempFeeType == 2 && tempCurrency == "USD" && tempFee != 0)//tempFee > 0
{
PayUsdTotal += tempFee;
}
}
if (strDoTypeName == "paysettle" || strDoTypeName == "paysettleapp")
{
RmbTotal = PayRmbTotal - RecvRmbTotal;
UsdTotal = PayUsdTotal - RecvUsdTotal;
}
else
{
RmbTotal = RecvRmbTotal - PayRmbTotal;
UsdTotal = RecvUsdTotal - PayUsdTotal;
}
totalBuilder.Append("{");
totalBuilder.Append("\"totals\":");
totalBuilder.Append("[");
totalBuilder.Append("{");
totalBuilder.Append("\"recvrmb\":" + RecvRmbTotal.ToString() + ",");
totalBuilder.Append("\"recvusd\":" + RecvUsdTotal.ToString() + ",");
totalBuilder.Append("\"payrmb\":" + PayRmbTotal.ToString() + ",");
totalBuilder.Append("\"payusd\":" + PayUsdTotal.ToString() + ",");
totalBuilder.Append("\"totalrmb\":" + RmbTotal.ToString() + ",");
totalBuilder.Append("\"totalusd\":" + UsdTotal.ToString() + ",");
totalBuilder.Append("\"state\":" + tempState.ToString());
totalBuilder.Append("}");
totalBuilder.Append("]");
totalBuilder.Append("}");
DataTable totalTable = null;
if (Session[strTotalCacheName] != null)
{
totalTable = (DataTable)Session[strTotalCacheName];
}
else
{
totalTable = CreateTotalTable();
DataRow newRow = totalTable.NewRow();
totalTable.Rows.Add(newRow);
}
totalTable.Rows[0]["RECVRMB"] = RecvRmbTotal.ToString();
totalTable.Rows[0]["RECVUSD"] = RecvUsdTotal.ToString();
totalTable.Rows[0]["PAYRMB"] = PayRmbTotal.ToString();
totalTable.Rows[0]["PAYUSD"] = PayUsdTotal.ToString();
totalTable.Rows[0]["TOTALRMB"] = RmbTotal.ToString();
totalTable.Rows[0]["TOTALUSD"] = UsdTotal.ToString();
Session[strTotalCacheName] = totalTable;
}
}
}
else
{
totalBuilder.Append("{");
totalBuilder.Append("\"totals\":");
totalBuilder.Append("[");
totalBuilder.Append("{");
totalBuilder.Append("\"recvrmb\":" + RecvRmbTotal.ToString() + ",");
totalBuilder.Append("\"recvusd\":" + RecvUsdTotal.ToString() + ",");
totalBuilder.Append("\"payrmb\":" + PayRmbTotal.ToString() + ",");
totalBuilder.Append("\"payusd\":" + PayUsdTotal.ToString() + ",");
totalBuilder.Append("\"totalrmb\":" + RmbTotal.ToString() + ",");
totalBuilder.Append("\"totalusd\":" + UsdTotal.ToString() + ",");
totalBuilder.Append("\"state\":" + tempState.ToString());
totalBuilder.Append("}");
totalBuilder.Append("]");
totalBuilder.Append("}");
}
}
else
{
totalBuilder.Append("{");
totalBuilder.Append("\"totals\":");
totalBuilder.Append("[");
totalBuilder.Append("{");
totalBuilder.Append("\"recvrmb\":" + RecvRmbTotal.ToString() + ",");
totalBuilder.Append("\"recvusd\":" + RecvUsdTotal.ToString() + ",");
totalBuilder.Append("\"payrmb\":" + PayRmbTotal.ToString() + ",");
totalBuilder.Append("\"payusd\":" + PayUsdTotal.ToString() + ",");
totalBuilder.Append("\"totalrmb\":" + RmbTotal.ToString() + ",");
totalBuilder.Append("\"totalusd\":" + UsdTotal.ToString() + ",");
totalBuilder.Append("\"state\":" + tempState.ToString());
totalBuilder.Append("}");
totalBuilder.Append("]");
totalBuilder.Append("}");
}
return totalBuilder.ToString();
}
#endregion
#region 获取数据集的SQL语句
/// <summary>
/// 获取数据集的SQL语句
/// </summary>
/// <param name="tempSearch">查询条件</param>
/// <param name="tempValidateOrder">要包含的委托信息组</param>
/// <returns>返回获取数据集的SQL语句</returns>
private string GetSearchSql(string tempSearch, string tempValidateOrder)
{
tempSearch = tempSearch.Replace("{", "");
tempSearch = tempSearch.Replace("}", "");
tempSearch = tempSearch.Replace("[", "");
tempSearch = tempSearch.Replace("]", "");
string[] searchArg = tempSearch.Split(new char[] { ',' });
string strSeaeCondition = "";
string strFeeCondition = "";
for (int i = 0; i < searchArg.Length; i++)
{
string[] strArg = searchArg[i].Split(new char[] { ':' });
if (!strArg[1].Replace("\"", "").Trim().Equals(""))
{
switch (strArg[0].Replace("\"", ""))
{
case "cus"://Customer
//strSeaeCondition += String.Format("AND CUSTOMERNAME LIKE '%{0}%' ", strArg[1].Replace("\"", ""));
strFeeCondition += String.Format("AND CUSTOMERNAME LIKE '%{0}%' ", strArg[1].Replace("\"", ""));
break;
case "bno"://BillNO
strSeaeCondition += String.Format(" AND (CUSTNO LIKE '%{0}%' OR MBLNO LIKE '%{0}%' OR HBLNO LIKE '%{0}%')", strArg[1].Replace("\"", ""));
break;
case "bt"://ETD BeginDate
strSeaeCondition += String.Format(" AND ETD >= '{0}' ", strArg[1].Replace("\"", ""));
break;
case "et"://ETD EndDate
strSeaeCondition += String.Format(" AND ETD <= '{0}' ", strArg[1].Replace("\"", ""));
break;
case "ves"://Vessel
strSeaeCondition += String.Format(" AND VESSEL LIKE '%{0}%' ", strArg[1].Replace("\"", ""));
break;
case "voy"://Voyno
strSeaeCondition += String.Format(" AND VOYNO LIKE '%{0}%' ", strArg[1].Replace("\"", ""));
break;
case "fnm"://FeeName
if (!strArg[1].Replace("\"", "").Trim().Equals(""))
{
int iFeeName = -1;
try
{
iFeeName = int.Parse(strArg[1].Replace("\"", "").Trim());
}
catch { }
if (iFeeName == -1)
{
strFeeCondition += String.Format(" AND FEENAME LIKE '%{0}%' ", strArg[1].Replace("\"", ""));
}
}
break;
case "fty"://FeeType
int iFeeType = int.Parse(strArg[1].Replace("\"", "").Trim());
if (iFeeType > 0)
{
strFeeCondition += String.Format(" AND FEETYPE = {0}", iFeeType);
}
break;
case "cur"://Currency
int iCurrency = int.Parse(strArg[1].Replace("\"", "").Trim());
if (iCurrency == 1)
{
strFeeCondition += String.Format(" AND CURRENCY LIKE '%{0}%' ", "RMB");
}
else if (iCurrency == 2)
{
strFeeCondition += String.Format(" AND CURRENCY LIKE '%{0}%' ", "USD");
}
break;
//case "deno"://DebitNO
// //strSqlCondition += String.Format(" VOYNO LIKE '%{0}%' ", strArg[1]);
// break;
//case "ise"://IsSettled
// break;
//case "fty"://FeeType
// strSqlCondition += String.Format(" FEETYPE = {0} ", strArg[1]);
// break;
//case "cur"://Currency
// strSqlCondition += String.Format(" FEETYPE = {0} ", strArg[1]);
// break;
default:
break;
}
}
}
//string strSql = String.Format(" SELECT GID,BSNO,FEETYPE,CUSTOMERNAME,FEENAME,CURRENCY,AMOUNT, "
// + " CASE WHEN ISINVOICE = 1 THEN CASE WHEN ISNULL(INVOICE,0) <> AMOUNT THEN CASE WHEN ISNULL(ORDERINVOICE,0) >= ISNULL(INVOICE,0) THEN AMOUNT - ISNULL(ORDERINVOICE,0) ELSE AMOUNT - ISNULL(INVOICE,0) END "
// + " ELSE AMOUNT - ISNULL(INVOICE,0) END ELSE AMOUNT - ISNULL(ORDERINVOICE,0) END as CTL, "
// + " CASE WHEN ISINVOICE = 1 THEN CASE WHEN ISNULL(INVOICE,0) <> AMOUNT THEN CASE WHEN ISNULL(ORDERINVOICE,0) >= ISNULL(INVOICE,0) THEN AMOUNT - ISNULL(ORDERINVOICE,0) ELSE AMOUNT - ISNULL(INVOICE,0) END "
// + " ELSE AMOUNT - ISNULL(INVOICE,0) END ELSE AMOUNT - ISNULL(ORDERINVOICE,0) END as UCTL FROM ch_fee "
// + " WHERE ((ISINVOICE = 1 AND ISNULL(INVOICE,0) <> AMOUNT) OR (ISINVOICE = 0 AND ISNULL(ORDERINVOICE,0) <> AMOUNT)) AND BSNO IN ({0}) " + strFeeCondition, tempValidateOrder);
//string strSql = String.Format(" SELECT GID,FEETYPE,CUSTOMERNAME,FEENAME,CURRENCY,AMOUNT,CASE WHEN AMOUNT > SETTLEMENT THEN "
// + " CASE WHEN SETTLEMENT < ORDERAMOUNT THEN AMOUNT - ORDERAMOUNT ELSE AMOUNT - SETTLEMENT END ELSE 0 END, "
// + " CASE WHEN AMOUNT > SETTLEMENT THEN "
// + " CASE WHEN SETTLEMENT < ORDERAMOUNT THEN AMOUNT - ORDERAMOUNT ELSE AMOUNT - SETTLEMENT END ELSE 0 END "
// + " FROM ch_fee WHERE GID NOT IN "
// + " (SELECT DISTINCT B.FEEID FROM ch_fee_payapplication as A INNER JOIN ch_fee_do as B "
// + " ON A.BILLNO = B.BILLNO WHERE A.BILLSTATUS < 4) AND AMOUNT <> SETTLEMENT AND ORDERAMOUNT <= AMOUNT AND BSNO IN ({0}) " + strFeeCondition, tempValidateOrder);
//string strSql = String.Format(" SELECT GID,BSNO,FEETYPE,CUSTOMERNAME,FEENAME,CURRENCY,AMOUNT,"
//+ " CASE WHEN AMOUNT > SETTLEMENT THEN AMOUNT - SETTLEMENT ELSE 0 END as CTL, "//CASE WHEN SETTLEMENT < ORDERAMOUNT THEN AMOUNT - ORDERAMOUNT ELSE END
//+ " CASE WHEN AMOUNT > SETTLEMENT THEN AMOUNT - SETTLEMENT ELSE 0 END as UCTL "//CASE WHEN SETTLEMENT < ORDERAMOUNT THEN AMOUNT - ORDERAMOUNT ELSE END
//+ " FROM ch_fee WHERE ((FEESTATUS = 0 OR FEESTATUS = 8)) AND BSNO IN ({0}) "+strFeeCondition,tempValidateOrder);//ISNULL(SETTLEMENT,0) < AMOUNT AND ISNULL(ORDERAMOUNT,0) < AMOUNT AND
//2014-05-15 修改(包含负数)
string strSql = String.Format(" SELECT GID,BSNO,FEETYPE,CUSTOMERNAME,FEENAME,CURRENCY,AMOUNT"
+ ",(CASE WHEN ((case when AMOUNT<0 then (-AMOUNT) else AMOUNT end) > (case when SETTLEMENT<0 then (-SETTLEMENT) else SETTLEMENT end)) THEN AMOUNT - SETTLEMENT ELSE 0 END) as CTL"
+ ",(CASE WHEN ((case when AMOUNT<0 then (-AMOUNT) else AMOUNT end) > (case when SETTLEMENT<0 then (-SETTLEMENT) else SETTLEMENT end)) THEN AMOUNT - SETTLEMENT ELSE 0 END) as UCTL,REMARK"
+ " FROM ch_fee WHERE ((FEESTATUS = 0 OR FEESTATUS = 8)) AND BSNO IN ({0}) "+strFeeCondition,tempValidateOrder);
return strSql;
}
#endregion
#region 执行同一委托下费用全选操作
/// <summary>
/// 执行同一委托下费用全选操作
/// </summary>
/// <param name="tempBSNO">委托编号</param>
/// <param name="tempCheckType">选中类型 值check表示全部选中 值uncheck表示取消全部选中</param>
/// <param name="tempCacheName">缓存名称</param>
/// <returns>返回合计费用结果JSON</returns>
private string ExcuteCheckAllFee(string tempBSNO, string tempCheckType, string tempCacheName, string tempBsnoCacheName, string tempTotalCacheName)
{
string strResult = "";
int iAuthorityStatus = 0;
DataTable feeTable = (DataTable)Session[tempCacheName] ?? CreateFeeTable();
DataTable bsnoTable = (DataTable)Session[tempBsnoCacheName] ?? CreateBsnoTable();
DataTable totalTable = (DataTable)Session[tempTotalCacheName] ?? CreateTotalTable();
if (strDoTypeName == "paysettle")
{
UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modPaySettlementSearch");
if (userAuthorityManage.OperateType != AuthorityType.NULL)
{
iAuthorityStatus = userAuthorityManage.CheckOperateRange(ModuleType.PAYSETTLESEARCH, userAuthorityManage.OperateType, strShowName, strCompanyID, strDeptName, tempBSNO, "", strUserID,"VW_Settlement");
}
if (iAuthorityStatus != 1)
{
if (Session[tempCacheName] != null)
{
feeTable = (DataTable)Session[tempCacheName];
}
strResult = GetSumFeeJson(feeTable, -1, 0, false);
return strResult;
}
}
if (strDoTypeName == "recvsettle")
{
UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modRecvSettleSearch");
if (userAuthorityManage.OperateType != AuthorityType.NULL)
{
iAuthorityStatus = userAuthorityManage.CheckOperateRange(ModuleType.RECVSETTLESEARCH, userAuthorityManage.OperateType, strShowName, strCompanyID, strDeptName, tempBSNO, "", strUserID,"VW_Settlement");
}
if (iAuthorityStatus != 1)
{
if (Session[tempCacheName] != null)
{
feeTable = (DataTable)Session[tempCacheName];
}
strResult = GetSumFeeJson(feeTable, -1, 0, false);
return strResult;
}
}
if (strDoTypeName == "paysettleapp")
{
UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modPaySettleAppSearch");
if (userAuthorityManage.OperateType != AuthorityType.NULL)
{
iAuthorityStatus = userAuthorityManage.CheckOperateRange(ModuleType.PAYSETTLEAPPSEARCH, userAuthorityManage.OperateType, strShowName, strCompanyID, strDeptName, tempBSNO, "", strUserID,"VW_Settlement");
}
if (iAuthorityStatus != 1)
{
if (Session[tempCacheName] != null)
{
feeTable = (DataTable)Session[tempCacheName];
}
//string strTempSql = getSqlCondtionString(strSearch);
strResult = GetSumFeeJson(feeTable, -1, 0, false);
return strResult;
}
}
if (tempCheckType.Trim().ToLower().Equals("check"))
{
DataTable checkFeeTable = GetFeeByOrderBsnoTable(strSearch, tempBSNO);
for (int i = 0; i < checkFeeTable.Rows.Count; i++)
{
int iCount = 0;
for (int j = 0; j < feeTable.Rows.Count; j++)
{
if (feeTable.Rows[j]["GID"].ToString().Trim().Equals(checkFeeTable.Rows[i]["GID"].ToString().Trim()))
{
feeTable.Rows[j]["GID"] = checkFeeTable.Rows[i]["GID"].ToString();
feeTable.Rows[j]["BSNO"] = checkFeeTable.Rows[i]["BSNO"].ToString();
feeTable.Rows[j]["FEETYPE"] = checkFeeTable.Rows[i]["FEETYPE"].ToString();
feeTable.Rows[j]["CUSTOMERNAME"] = checkFeeTable.Rows[i]["CUSTOMERNAME"].ToString();
feeTable.Rows[j]["FEENAME"] = checkFeeTable.Rows[i]["FEENAME"].ToString();
feeTable.Rows[j]["CURRENCY"] = checkFeeTable.Rows[i]["CURRENCY"].ToString();
feeTable.Rows[j]["AMOUNT"] = checkFeeTable.Rows[i]["AMOUNT"].ToString();
feeTable.Rows[j]["CTL"] = checkFeeTable.Rows[i]["CTL"].ToString();
feeTable.Rows[j]["UCTL"] = checkFeeTable.Rows[i]["UCTL"].ToString();
feeTable.Rows[j]["EXCHANGERATE"] = checkFeeTable.Rows[i]["EXCHANGERATE"].ToString();
iCount++;
break;
}
}
if (iCount == 0)
{
//缓存新的费用信息
DataRow newRow = feeTable.NewRow();
newRow["GID"] = checkFeeTable.Rows[i]["GID"].ToString();
newRow["BSNO"] = checkFeeTable.Rows[i]["BSNO"].ToString();
newRow["FEETYPE"] = checkFeeTable.Rows[i]["FEETYPE"].ToString();
newRow["CUSTOMERNAME"] = checkFeeTable.Rows[i]["CUSTOMERNAME"].ToString();
newRow["FEENAME"] = checkFeeTable.Rows[i]["FEENAME"].ToString();
newRow["CURRENCY"] = checkFeeTable.Rows[i]["CURRENCY"].ToString();
newRow["AMOUNT"] = checkFeeTable.Rows[i]["AMOUNT"].ToString();
newRow["CTL"] = checkFeeTable.Rows[i]["CTL"].ToString();
newRow["UCTL"] = checkFeeTable.Rows[i]["UCTL"].ToString();
newRow["EXCHANGERATE"] = checkFeeTable.Rows[i]["EXCHANGERATE"].ToString();
feeTable.Rows.Add(newRow);
}
}
DataTable checkBsnoTable = GetOrderTable(strSearch, tempBSNO);
int iBsnoCount = 0;
for (int j = 0; j < bsnoTable.Rows.Count; j++)
{
if (bsnoTable.Rows[j]["BSNO"].ToString().Trim().Equals(tempBSNO))
{
bsnoTable.Rows[j]["BSNO"] = checkBsnoTable.Rows[0]["BSNO"].ToString();
bsnoTable.Rows[j]["CUSTOMERNAME"] = checkBsnoTable.Rows[0]["CUSTOMERNAME"].ToString();
bsnoTable.Rows[j]["CUSTNO"] = checkBsnoTable.Rows[0]["CUSTNO"].ToString();
bsnoTable.Rows[j]["MBLNO"] = checkBsnoTable.Rows[0]["MBLNO"].ToString();
bsnoTable.Rows[j]["HBLNO"] = checkBsnoTable.Rows[0]["HBLNO"].ToString();
iBsnoCount++;
break;
}
}
if (iBsnoCount == 0)
{
//BSNO, CUSTOMERNAME,CUSTNO,MBLNO,HBLNO
//缓存新的委托信息
DataRow newRow = bsnoTable.NewRow();
newRow["BSNO"] = checkBsnoTable.Rows[0]["BSNO"].ToString();
newRow["CUSTOMERNAME"] = checkBsnoTable.Rows[0]["CUSTOMERNAME"].ToString();
newRow["CUSTNO"] = checkBsnoTable.Rows[0]["CUSTNO"].ToString();
newRow["MBLNO"] = checkBsnoTable.Rows[0]["MBLNO"].ToString();
newRow["HBLNO"] = checkBsnoTable.Rows[0]["HBLNO"].ToString();
bsnoTable.Rows.Add(newRow);
}
Session[tempBsnoCacheName] = bsnoTable;
Session[tempCacheName] = feeTable;
strResult = GetSumFeeJson(feeTable, 1, 1, false);
}
else if (tempCheckType.Trim().ToLower().Equals("uncheck"))
{
DataTable checkFeeTable = GetFeeByOrderBsnoTable(strSearch, tempBSNO);
for (int i = 0; i < checkFeeTable.Rows.Count; i++)
{
for (int j = 0; j < feeTable.Rows.Count; j++)
{
if (feeTable.Rows[j]["GID"].ToString().Trim().Equals(checkFeeTable.Rows[i]["GID"].ToString().Trim()))
{
feeTable.Rows.Remove(feeTable.Rows[j]);
break;
}
}
}
for (int j = 0; j < bsnoTable.Rows.Count; j++)
{
if (bsnoTable.Rows[j]["BSNO"].ToString().Trim().Equals(tempBSNO))
{
bsnoTable.Rows.RemoveAt(j);
break;
}
}
if (bsnoTable.Rows.Count > 0)
{
Session[tempBsnoCacheName] = bsnoTable;
}
else
{
Session.Remove(tempBsnoCacheName);
}
if (feeTable.Rows.Count > 0)
{
Session[tempCacheName] = feeTable;
}
else
{
Session.Remove(tempCacheName);
}
strResult = GetSumFeeJson(feeTable, 1, 2, false);
}
return strResult;
}
#endregion
#region 验证提交的开票信息
/// <summary>
/// 验证提交的开票信息
/// </summary>
/// <param name="tempCacheName">缓存名称</param>
/// <returns>返回JSON状态</returns>
private string ValidatePostInfo(string tempCacheName)
{
string strResult = "";
if (Session[tempCacheName] != null)
{
//获取缓存数据
DataTable feeTable = (DataTable)Session[tempCacheName];
//查看是否有不同的结算单位
int iTempDiffCust = IsDifferentCustomer(feeTable);
//查看是否有不同的结算币别
int iTempDiffCurr = IsDifferentCurrency(feeTable);
//查看是否超过发票最大行数
//object configObj = ConfigManager.ConfigManager.Instance().GetConfigInfo(ConfigType.INVOICECONFIG);
//IList<InvoiceConfigEntity> invoiceConfigEntities = new List<InvoiceConfigEntity>();
//invoiceConfigEntities = (IList<InvoiceConfigEntity>)configObj;
//int iTempIsMaxLine = 0;
//int iInvoiceMaxLine = 0;
//if (invoiceConfigEntities.Count > 0)
//{
// foreach (InvoiceConfigEntity invoicConfigEntity in invoiceConfigEntities)
// {
// if (invoicConfigEntity.ItemName.ToLower().Equals("maxline"))
// {
// iInvoiceMaxLine = int.Parse(invoicConfigEntity.ItemValue);
// break;
// }
// }
//}
//if (iInvoiceMaxLine > 0)
//{
// if (feeTable.Rows.Count > iInvoiceMaxLine)
// {
// iTempIsMaxLine = 1;
// }
// else
// {
// iTempIsMaxLine = 0;
// }
//}
//else
//{
// iTempIsMaxLine = 0;
//}
int iTempVerifyClient = 0;
int iTempVerifyCurrency = 0;
if (strVerifyCacheName != null)
{
if (Session[strVerifyCacheName] != null)
{
DataTable verifyTable = (DataTable)Session[strVerifyCacheName];
IList<ReceiveAmountEntity> receiveAmountEntities = new List<ReceiveAmountEntity>();
ReceiveAmountDA receiveAmountDA = new ReceiveAmountDA();
decimal totalRecvAmount = 0;
for (int i = 0; i < verifyTable.Rows.Count; i++)
{
ReceiveAmountEntity receiveAmountEntity = receiveAmountDA.GetRecvAmountByGID(verifyTable.Rows[i]["GID"].ToString());
if (receiveAmountEntity != null)
{
totalRecvAmount = receiveAmountEntity.ReceiveAmount;
if (!strCurrency.Equals(receiveAmountEntity.Currency))
{
iTempVerifyCurrency = 1;
}
CRMClientDA crmClientDA = new CRMClientDA();
CRMClientEntity crmClientEntity = crmClientDA.GetCrmClientInfoByGID(receiveAmountEntity.ClientID);
for (int j = 0; j < feeTable.Rows.Count; j++)
{
if (crmClientEntity.ShortName != feeTable.Rows[j]["CUSTOMERNAME"].ToString().Trim())
{
iTempVerifyClient = 1;//存在不同结算单位信息
break;
}
}
receiveAmountEntities.Add(receiveAmountEntity);
}
}
}
}
strResult = GetValidateResult(iTempDiffCust, iTempDiffCurr, 0, 0, iTempVerifyClient, iTempVerifyCurrency);
}
else
{
strResult = GetValidateResult(-2, -2, -2, -2,-2,-2);
}
return strResult;
}
#endregion
#region 获取JSON值
/// <summary>
/// 获取JSON值
/// </summary>
/// <param name="tempCompanyID">公司GID</param>
/// <param name="tempSourceID">报表资源GID</param>
/// <param name="tempUserID">用户GID</param>
/// <returns>返回JSON字符串</returns>
private string GetValidateResult(int tempIsDiffCust, int tempIsDiffCurr, int tempIsMaxLine, int tempMaxLine,int tempVerifyCurrency,int tempVerifyClient)
{
StringBuilder jsonBuilder = new StringBuilder();
jsonBuilder.Append("{");
jsonBuilder.Append("\"validates\":");
jsonBuilder.Append("[");
jsonBuilder.Append("{");
jsonBuilder.Append("\"diffcust\":" + tempIsDiffCust.ToString() + ",");
jsonBuilder.Append("\"diffcurr\":" + tempIsDiffCurr.ToString() + ",");
jsonBuilder.Append("\"ismaxline\":" + tempIsMaxLine.ToString() + ",");
jsonBuilder.Append("\"maxline\":" + tempMaxLine.ToString() + ",");
jsonBuilder.Append("\"verclient\":" + tempVerifyClient.ToString() + ",");
jsonBuilder.Append("\"vercurr\":" + tempVerifyCurrency.ToString() + "");
jsonBuilder.Append("}");
jsonBuilder.Append("]");
jsonBuilder.Append("}");
return jsonBuilder.ToString();
}
#endregion
#region 是否有不同的结算单位
/// <summary>
/// 是否有不同的结算单位
/// </summary>
/// <param name="tempDataTable">数据源</param>
/// <returns>值0表示不存在不同的结算单位 值1表示存在不同的结算单位 值小于0表示获取缓存数据异常</returns>
private int IsDifferentCustomer(DataTable tempDataTable)
{
int iResult = 0;
if (tempDataTable.Rows.Count > 0)
{
string strCustomerName = tempDataTable.Rows[0]["CUSTOMERNAME"].ToString().Trim();
int iCount = 0;
for (int i = 1; i < tempDataTable.Rows.Count; i++)
{
if (!tempDataTable.Rows[i]["CUSTOMERNAME"].ToString().Trim().Equals(strCustomerName))
{
iCount++;
break;
}
}
if (iCount > 0)
{
iResult = 1;//存在不同的结算单位
}
else
{
iResult = 0;//验证通过,不存在不同的结算单位
}
}
else
{
iResult = -1;//未取到缓存信息
}
return iResult;
}
#endregion
#region 查看是否有不同币别
/// <summary>
/// 查看是否有不同币别
/// </summary>
/// <param name="tempDataTable">数据源</param>
/// <returns>值0表示不存在不同的币别 值1表示存在不同的币别 值小于0表示获取缓存数据异常</returns>
private int IsDifferentCurrency(DataTable tempDataTable)
{
int iResult = 0;
if (strCurrency != null)
{
if (strCurrency.ToUpper().Equals("ALL"))
{
iResult = 0;
}
else
{
if (tempDataTable.Rows.Count > 0)
{
//string strTempCurrency = tempDataTable.Rows[0]["CURRENCY"].ToString().Trim();
int iCount = 0;
for (int i = 0; i < tempDataTable.Rows.Count; i++)
{
if (!tempDataTable.Rows[i]["CURRENCY"].ToString().Trim().ToUpper().Equals(strCurrency))
{
iCount++;
break;
}
}
if (iCount > 0)
{
iResult = 1;//存在不同的币别
}
else
{
iResult = 0;//验证通过,不存在不同的币别
}
}
else
{
iResult = -1;//未取到缓存信息
}
}
}
else
{
if (tempDataTable.Rows.Count > 0)
{
string strTempCurrency = tempDataTable.Rows[0]["CURRENCY"].ToString().Trim();
int iCount = 0;
for (int i = 1; i < tempDataTable.Rows.Count; i++)
{
if (!tempDataTable.Rows[i]["CURRENCY"].ToString().Trim().ToUpper().Equals(strTempCurrency))
{
iCount++;
break;
}
}
if (iCount > 0)
{
iResult = 1;//存在不同的币别
}
else
{
iResult = 0;//验证通过,不存在不同的币别
}
}
else
{
iResult = -1;//未取到缓存信息
}
}
return iResult;
}
#endregion
#region 提交收费结算
/// <summary>
/// 提交收费结算
/// </summary>
/// <param name="tempPostSessionName">提交Session名称</param>
/// <param name="tempCacheName">缓存名称</param>
/// <returns>返回string 值1表示提交成功 值不等于1表示提交失败</returns>
private string PostRecvSettlementSession(string tempPostSessionName, string tempCacheName)
{
string strResult = "";
StringBuilder appBuilder = new StringBuilder();
StringBuilder cacheBuilder = new StringBuilder();
if (Session[tempCacheName] != null)
{
DataTable feeTable = (DataTable)Session[tempCacheName];
appBuilder.Append("{\"caches\":[");
double exchangeRate = double.Parse(dExchangeRate.ToString());
for (int i = 0; i < feeTable.Rows.Count; i++)
{
double dCSTLFee = 0.0;
double dUSTLFee = 0.0;
string tempCurrency = feeTable.Rows[i]["CURRENCY"].ToString().Trim().ToUpper();
double tempFee = double.Parse(feeTable.Rows[i]["CTL"].ToString());
double tempUFee = double.Parse(feeTable.Rows[i]["UCTL"].ToString());
int tempFeeType = int.Parse(feeTable.Rows[i]["FEETYPE"].ToString());
if (tempCurrency.ToUpper().Equals("RMB") && strCurrency.ToUpper().Equals("USD"))
{
dCSTLFee = C1Round(tempFee * exchangeRate, 2);
dUSTLFee = C1Round(tempUFee * exchangeRate, 2);
}
else if (tempCurrency.ToUpper().Equals("USD") && strCurrency.ToUpper().Equals("RMB"))
{
dCSTLFee = C1Round(tempFee * exchangeRate, 2);
dUSTLFee = C1Round(tempUFee * exchangeRate, 2);
}
else
{
dCSTLFee = tempFee;
dUSTLFee = tempUFee;
}
cacheBuilder.Append("{");
cacheBuilder.Append("\"id\":\"" + feeTable.Rows[i]["GID"].ToString() + "\",");
//int iFeeType = int.Parse(feeTable.Rows[i]["FEETYPE"].ToString()) == ? 1 : 2;
cacheBuilder.Append("\"type\":" + feeTable.Rows[i]["FEETYPE"].ToString() + ",");
cacheBuilder.Append("\"bsno\":\"" + feeTable.Rows[i]["BSNO"].ToString() + "\",");
cacheBuilder.Append("\"cus\":\"" + feeTable.Rows[i]["CUSTOMERNAME"].ToString() + "\",");
cacheBuilder.Append("\"fname\":\"" + feeTable.Rows[i]["FEENAME"].ToString() + "\",");
string settleCurrency = strCurrency.ToUpper() == "ALL" ? feeTable.Rows[i]["CURRENCY"].ToString() : strCurrency.ToUpper();
cacheBuilder.Append("\"cur\":\"" + settleCurrency + "\",");
cacheBuilder.Append("\"stl\":" + feeTable.Rows[i]["AMOUNT"].ToString() + ",");
cacheBuilder.Append("\"cstl\":" + dCSTLFee.ToString() + ",");
cacheBuilder.Append("\"ustl\":" + dUSTLFee.ToString() + ",");
cacheBuilder.Append("\"orig\":1,");
cacheBuilder.Append("\"oname\":\"" + feeTable.Rows[i]["FEENAME"].ToString() + "\",");
cacheBuilder.Append("\"ocstl\":" + feeTable.Rows[i]["CTL"].ToString() + ",");
cacheBuilder.Append("\"ocurr\":\"" + feeTable.Rows[i]["CURRENCY"].ToString() + "\"");
cacheBuilder.Append("},");
}
}
if (cacheBuilder.ToString().EndsWith(","))
{
appBuilder.Append(cacheBuilder.ToString().Substring(0, cacheBuilder.Length - 1));
appBuilder.Append("]}");
Session[tempPostSessionName] = appBuilder.ToString();
strResult = GetPostResult(PostNoticeType.POSTSUCCESS);
}
else
{
appBuilder.Append(cacheBuilder.ToString());
appBuilder.Append("]}");
Session[tempPostSessionName] = appBuilder.ToString();
strResult = GetPostResult(PostNoticeType.POSTSUCCESS);
}
return strResult;
}
#endregion
#region 提交付费结算申请或付费结算
/// <summary>
/// 提交付费结算申请或付费结算
/// </summary>
/// <param name="tempPostSessionName">提交Session名称</param>
/// <param name="tempCacheName">缓存名称</param>
/// <returns>返回string 值1表示提交成功 值不等于1表示提交失败</returns>
private string PostPaySettlementSession(string tempPostSessionName, string tempBsnoCacheName,string tempCacheName,string tempTotalCacheName)
{
#region ####
//string strResult = "";
//StringBuilder appBuilder = new StringBuilder();
//StringBuilder cacheBuilder = new StringBuilder();
//if (Session[tempCacheName] != null)
//{
// DataTable feeTable = (DataTable)Session[tempCacheName];
// appBuilder.Append("{\"caches\":[");
// double exchangeRate = double.Parse(dExchangeRate.ToString());
// for (int i = 0; i < feeTable.Rows.Count; i++)
// {
// double dCSTLFee = 0.0;
// double dUSTLFee = 0.0;
// string tempCurrency = feeTable.Rows[i]["CURRENCY"].ToString().Trim().ToUpper();
// double tempFee = double.Parse(feeTable.Rows[i]["CTL"].ToString());
// double tempUFee = double.Parse(feeTable.Rows[i]["UCTL"].ToString());
// int tempFeeType = int.Parse(feeTable.Rows[i]["FEETYPE"].ToString());
// if (tempCurrency.ToUpper().Equals("RMB") && strCurrency.ToUpper().Equals("USD"))
// {
// dCSTLFee = C1Round(tempFee * exchangeRate, 2);
// dUSTLFee = C1Round(tempUFee * exchangeRate, 2);
// }
// else if (tempCurrency.ToUpper().Equals("USD") && strCurrency.ToUpper().Equals("RMB"))
// {
// dCSTLFee = C1Round(tempFee * exchangeRate, 2);
// dUSTLFee = C1Round(tempUFee * exchangeRate, 2);
// }
// else
// {
// dCSTLFee = tempFee;
// dUSTLFee = tempUFee;
// }
// cacheBuilder.Append("{");
// cacheBuilder.Append("\"id\":\"" + feeTable.Rows[i]["GID"].ToString() + "\",");
// //int iFeeType = int.Parse(feeTable.Rows[i]["FEETYPE"].ToString()) == ? 1 : 2;
// cacheBuilder.Append("\"type\":" + feeTable.Rows[i]["FEETYPE"].ToString() + ",");
// cacheBuilder.Append("\"bsno\":\"" + feeTable.Rows[i]["BSNO"].ToString() + "\",");
// cacheBuilder.Append("\"cus\":\"" + feeTable.Rows[i]["CUSTOMERNAME"].ToString() + "\",");
// cacheBuilder.Append("\"fname\":\"" + feeTable.Rows[i]["FEENAME"].ToString() + "\",");
// string settleCurrency = strCurrency.ToUpper() == "ALL" ? feeTable.Rows[i]["CURRENCY"].ToString() : strCurrency.ToUpper();
// cacheBuilder.Append("\"cur\":\"" + settleCurrency + "\",");
// cacheBuilder.Append("\"stl\":" + feeTable.Rows[i]["AMOUNT"].ToString() + ",");
// cacheBuilder.Append("\"cstl\":" + dCSTLFee.ToString() + ",");
// cacheBuilder.Append("\"ustl\":" + dUSTLFee.ToString() + ",");
// cacheBuilder.Append("\"orig\":1,");
// cacheBuilder.Append("\"oname\":\"" + feeTable.Rows[i]["FEENAME"].ToString() + "\",");
// cacheBuilder.Append("\"ocstl\":" + feeTable.Rows[i]["CTL"].ToString() + "");
// cacheBuilder.Append("},");
// }
//}
//if (cacheBuilder.ToString().EndsWith(","))
//{
// appBuilder.Append(cacheBuilder.ToString().Substring(0, cacheBuilder.Length - 1));
// appBuilder.Append("]}");
// Session[tempPostSessionName] = appBuilder.ToString();
// strResult = GetPostResult(PostNoticeType.POSTSUCCESS);
//}
//else
//{
// appBuilder.Append(cacheBuilder.ToString());
// appBuilder.Append("]}");
// Session[tempPostSessionName] = appBuilder.ToString();
// strResult = GetPostResult(PostNoticeType.POSTSUCCESS);
//}
#endregion
string strResult = "";
DataTable bsnoTable = null;
DataTable feeTable = null;
DataTable totalTable = null;
if (Session[tempBsnoCacheName] != null)
{
bsnoTable = (DataTable)Session[tempBsnoCacheName];
}
if (Session[tempCacheName] != null)
{
feeTable = (DataTable)Session[tempCacheName];
}
if (Session[tempTotalCacheName] != null)
{
totalTable = (DataTable)Session[tempTotalCacheName];
}
if (bsnoTable != null && feeTable != null && totalTable != null)
{
DataSet postSet = new DataSet();
postSet.Tables.Add(bsnoTable.Copy());
feeTable.TableName = "feeTableCopy";
postSet.Tables.Add(feeTable.Copy());
totalTable.TableName = "totalTableCopy";
postSet.Tables.Add(totalTable.Copy());
//postSet.Tables["bsno"]. = bsnoTable;
//postSet.Tables["fee"] = feeTable;
//postSet.Tables["total"] = totalTable;
Session[tempPostSessionName] = postSet;
strResult = GetPostResult(PostNoticeType.POSTSUCCESS);
}
else
{
strResult = GetPostResult(PostNoticeType.SESSIONFAILURE);
}
return strResult;
}
#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
#region 获取返回状态
/// <summary>
/// 获取返回状态
/// </summary>
/// <param name="tempPostNoticeType">错误类型</param>
/// <returns>返回String类型状态</returns>
private string GetPostResult(PostNoticeType tempPostNoticeType)
{
string strResult = "";
switch (tempPostNoticeType)
{
case PostNoticeType.DIFFCUSTOMER://同时有多个结算单位
strResult = "-1";
break;
case PostNoticeType.DIFFCURRENCY://有不同币别,需要调用汇率
strResult = "-2";
break;
case PostNoticeType.BEYONDMAXLINE://发票明细超过最大显示条数
strResult = "-3";
break;
case PostNoticeType.SESSIONFAILURE://缓存数据异常
strResult = "-4";
break;
case PostNoticeType.POSTSUCCESS://提交申请成功
strResult = "1";
break;
default:
break;
}
return strResult;
}
#endregion
#region 更改本次结算费用金额
/// <summary>
/// 更改本次结算费用金额
/// </summary>
/// <param name="tempOrderCacheName">缓存名称</param>
/// <param name="tempFeeID">费用GID</param>
/// <param name="tempCSTL">本次结算金额</param>
/// <param name="tempUSTL">未结算金额</param>
/// <returns>返回金额合计总数</returns>
private string ChangeFeeCstl(string tempCacheName, string tempFeeID, decimal tempCSTL, decimal tempUSTL, string tempBsnoCacheName, string tempTotalCacheName,string tempBSNO)
{
string strResult = "";
DataTable feeTable = (DataTable)Session[tempCacheName] ?? CreateFeeTable();
DataTable bsnoTable = (DataTable)Session[tempBsnoCacheName] ?? CreateBsnoTable();
DataTable totalTable = (DataTable)Session[tempTotalCacheName] ?? CreateTotalTable();
int iAuthorityStatus = 0;
if (strDoTypeName == "paysettle")
{
UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modPaySettlementSearch");
if (userAuthorityManage.OperateType != AuthorityType.NULL)
{
iAuthorityStatus = userAuthorityManage.CheckOperateRange(ModuleType.PAYSETTLESEARCH, userAuthorityManage.OperateType, strShowName, strCompanyID, strDeptName, strBSNO, "", strUserID,"VW_Settlement");
}
if (iAuthorityStatus != 1)
{
//if (Session[tempOrderCacheName] != null)
//{
// feeTable = (DataTable)Session[tempOrderCacheName];
//}
strResult = GetSumFeeJson(feeTable, -1, 0, false);
return strResult;
}
}
if (strDoTypeName == "recvsettle")
{
UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modRecvSettleSearch");
if (userAuthorityManage.OperateType != AuthorityType.NULL)
{
iAuthorityStatus = userAuthorityManage.CheckOperateRange(ModuleType.RECVSETTLESEARCH, userAuthorityManage.OperateType, strShowName, strCompanyID, strDeptName, strBSNO, "", strUserID,"VW_Settlement");
}
if (iAuthorityStatus != 1)
{
//if (Session[tempOrderCacheName] != null)
//{
// feeTable = (DataTable)Session[tempOrderCacheName];
//}
strResult = GetSumFeeJson(feeTable, -1, 0, false);
return strResult;
}
}
if (strDoTypeName == "paysettleapp")
{
UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modPaySettleAppSearch");
if (userAuthorityManage.OperateType != AuthorityType.NULL)
{
iAuthorityStatus = userAuthorityManage.CheckOperateRange(ModuleType.PAYSETTLEAPPSEARCH, userAuthorityManage.OperateType, strShowName, strCompanyID, strDeptName, strBSNO, "", strUserID,"VW_Settlement");
}
if (iAuthorityStatus != 1)
{
//if (Session[tempOrderCacheName] != null)
//{
// feeTable = (DataTable)Session[tempOrderCacheName];
//}
strResult = GetSumFeeJson(feeTable, -1, 0, false);
return strResult;
}
}
#region ####
//if (Session[tempOrderCacheName] != null)
//{
// feeTable = (DataTable)Session[tempOrderCacheName];
// int iCount = 0;
// if (feeTable.Rows.Count > 0)
// {
// for (int i = 0; i < feeTable.Rows.Count; i++)
// {
// if (feeTable.Rows[i]["GID"].ToString().Equals(tempFeeID))
// {
// feeTable.Rows[i]["CTL"] = tempCSTL.ToString();
// feeTable.Rows[i]["UCTL"] = tempUSTL.ToString();
// iCount++;
// break;
// }
// }
// }
// if (iCount > 0)
// {
// Session[tempOrderCacheName] = feeTable;
// }
// else
// {
// //string strSql = String.Format("SELECT GID,BSNO,FEETYPE,CUSTOMERNAME,FEENAME,CURRENCY,AMOUNT, "
// // + " CASE WHEN ISINVOICE = 1 THEN CASE WHEN ISNULL(INVOICE,0) <> AMOUNT THEN CASE WHEN ISNULL(ORDERINVOICE,0) >= ISNULL(INVOICE,0) THEN AMOUNT - ISNULL(ORDERINVOICE,0) ELSE AMOUNT - ISNULL(INVOICE,0) END "
// // + " ELSE AMOUNT - ISNULL(INVOICE,0) END ELSE AMOUNT - ISNULL(ORDERINVOICE,0) END as CTL, "
// // + " CASE WHEN ISINVOICE = 1 THEN CASE WHEN ISNULL(INVOICE,0) <> AMOUNT THEN CASE WHEN ISNULL(ORDERINVOICE,0) >= ISNULL(INVOICE,0) THEN AMOUNT - ISNULL(ORDERINVOICE,0) ELSE AMOUNT - ISNULL(INVOICE,0) END "
// // + " ELSE AMOUNT - ISNULL(INVOICE,0) END ELSE AMOUNT - ISNULL(ORDERINVOICE,0) END as UCTL FROM ch_fee WHERE GID = '{0}'", tempFeeID);
// string strSql = String.Format(" SELECT GID,BSNO,FEETYPE,CUSTOMERNAME,FEENAME,CURRENCY,AMOUNT,CASE WHEN AMOUNT > SETTLEMENT THEN "
// + " CASE WHEN SETTLEMENT < ORDERAMOUNT THEN AMOUNT - ORDERAMOUNT ELSE AMOUNT - SETTLEMENT END ELSE 0 END as CTL, "
// + " CASE WHEN AMOUNT > SETTLEMENT THEN "
// + " CASE WHEN SETTLEMENT < ORDERAMOUNT THEN AMOUNT - ORDERAMOUNT ELSE AMOUNT - SETTLEMENT END ELSE 0 END as UCTL "
// + " FROM ch_fee WHERE GID = '{0}'", tempFeeID);
// DataTable sourceTable = new DataTable();
// FeeDA feeDA = new FeeDA();
// sourceTable = feeDA.GetFeeListByCondition(strSql).Tables[0];
// if (sourceTable.Rows.Count > 0)
// {
// sourceTable.Rows[0]["CTL"] = tempCSTL.ToString();
// sourceTable.Rows[0]["UCTL"] = tempUSTL.ToString();
// }
// DataRow newRow = feeTable.NewRow();
// newRow["GID"] = sourceTable.Rows[0]["GID"].ToString();
// newRow["BSNO"] = sourceTable.Rows[0]["BSNO"].ToString();
// newRow["FEETYPE"] = sourceTable.Rows[0]["FEETYPE"].ToString();
// newRow["CUSTOMERNAME"] = sourceTable.Rows[0]["CUSTOMERNAME"].ToString();
// newRow["FEENAME"] = sourceTable.Rows[0]["FEENAME"].ToString();
// newRow["CURRENCY"] = sourceTable.Rows[0]["CURRENCY"].ToString();
// newRow["AMOUNT"] = sourceTable.Rows[0]["AMOUNT"].ToString();
// newRow["CTL"] = sourceTable.Rows[0]["CTL"].ToString();
// newRow["UCTL"] = sourceTable.Rows[0]["UCTL"].ToString();
// feeTable.Rows.Add(newRow);
// Session[tempOrderCacheName] = feeTable;
// }
// strResult = GetSumFeeJson(feeTable, 1,1,false);
//}
//else
//{
// //string strSql = String.Format("SELECT GID,BSNO,FEETYPE,CUSTOMERNAME,FEENAME,CURRENCY,AMOUNT, "
// // + " CASE WHEN ISINVOICE = 1 THEN CASE WHEN ISNULL(INVOICE,0) <> AMOUNT THEN CASE WHEN ISNULL(ORDERINVOICE,0) >= ISNULL(INVOICE,0) THEN AMOUNT - ISNULL(ORDERINVOICE,0) ELSE AMOUNT - ISNULL(INVOICE,0) END "
// // + " ELSE AMOUNT - ISNULL(INVOICE,0) END ELSE AMOUNT - ISNULL(ORDERINVOICE,0) END as CTL, "
// // + " CASE WHEN ISINVOICE = 1 THEN CASE WHEN ISNULL(INVOICE,0) <> AMOUNT THEN CASE WHEN ISNULL(ORDERINVOICE,0) >= ISNULL(INVOICE,0) THEN AMOUNT - ISNULL(ORDERINVOICE,0) ELSE AMOUNT - ISNULL(INVOICE,0) END "
// // + " ELSE AMOUNT - ISNULL(INVOICE,0) END ELSE AMOUNT - ISNULL(ORDERINVOICE,0) END as UCTL FROM ch_fee WHERE GID = '{0}'", tempFeeID);
// string strSql = String.Format(" SELECT GID,BSNO,FEETYPE,CUSTOMERNAME,FEENAME,CURRENCY,AMOUNT,CASE WHEN AMOUNT > SETTLEMENT THEN "
// + " CASE WHEN SETTLEMENT < ORDERAMOUNT THEN AMOUNT - ORDERAMOUNT ELSE AMOUNT - SETTLEMENT END ELSE 0 END as CTL, "
// + " CASE WHEN AMOUNT > SETTLEMENT THEN "
// + " CASE WHEN SETTLEMENT < ORDERAMOUNT THEN AMOUNT - ORDERAMOUNT ELSE AMOUNT - SETTLEMENT END ELSE 0 END as UCTL "
// + " FROM ch_fee WHERE GID = '{0}'", tempFeeID);
// DataTable sourceTable = new DataTable();
// FeeDA feeDA = new FeeDA();
// sourceTable = feeDA.GetFeeListByCondition(strSql).Tables[0];
// if (sourceTable.Rows.Count > 0)
// {
// sourceTable.Rows[0]["CTL"] = tempCSTL.ToString();
// sourceTable.Rows[0]["UCTL"] = tempUSTL.ToString();
// }
// Session[tempOrderCacheName] = sourceTable;
// strResult = GetSumFeeJson(sourceTable, 1,1,false);
//}
#endregion
int iCount = 0;
if (feeTable.Rows.Count > 0)
{
for (int i = 0; i < feeTable.Rows.Count; i++)
{
if (feeTable.Rows[i]["GID"].ToString().Equals(tempFeeID))
{
feeTable.Rows[i]["CTL"] = tempCSTL.ToString();
feeTable.Rows[i]["UCTL"] = tempUSTL.ToString();
iCount++;
break;
}
}
}
if (iCount > 0)
{
Session[tempCacheName] = feeTable;
strResult = GetSumFeeJson(feeTable, 1, 1, false);
}
else
{
DataTable sourceTable = GetSimpleFeeByGID(tempFeeID);
if (sourceTable.Rows.Count > 0)
{
sourceTable.Rows[0]["CTL"] = tempCSTL.ToString();
sourceTable.Rows[0]["UCTL"] = tempUSTL.ToString();
}
DataRow newRow = feeTable.NewRow();
newRow["GID"] = sourceTable.Rows[0]["GID"].ToString();
newRow["BSNO"] = sourceTable.Rows[0]["BSNO"].ToString();
newRow["FEETYPE"] = sourceTable.Rows[0]["FEETYPE"].ToString();
newRow["CUSTOMERNAME"] = sourceTable.Rows[0]["CUSTOMERNAME"].ToString();
newRow["FEENAME"] = sourceTable.Rows[0]["FEENAME"].ToString();
newRow["CURRENCY"] = sourceTable.Rows[0]["CURRENCY"].ToString();
newRow["AMOUNT"] = sourceTable.Rows[0]["AMOUNT"].ToString();
newRow["CTL"] = sourceTable.Rows[0]["CTL"].ToString();
newRow["UCTL"] = sourceTable.Rows[0]["UCTL"].ToString();
newRow["EXCHANGERATE"] = sourceTable.Rows[0]["EXCHANGERATE"].ToString();
feeTable.Rows.Add(newRow);
Session[tempCacheName] = feeTable;
strResult = GetSumFeeJson(feeTable, 1, 1, false);
}
int iBsnoCount = 0;
for (int j = 0; j < bsnoTable.Rows.Count; j++)
{
if (bsnoTable.Rows[j]["BSNO"].ToString().Trim().Equals(tempBSNO))
{
iBsnoCount++;
break;
}
}
if (iBsnoCount == 0)
{
//BSNO, CUSTOMERNAME,CUSTNO,MBLNO,HBLNO
DataTable sourceTable = GetOrderTable(strSearch, tempBSNO);
DataRow newRow = bsnoTable.NewRow();
newRow["BSNO"] = sourceTable.Rows[0]["BSNO"].ToString();
newRow["CUSTOMERNAME"] = sourceTable.Rows[0]["CUSTOMERNAME"].ToString();
newRow["CUSTNO"] = sourceTable.Rows[0]["CUSTNO"].ToString();
newRow["MBLNO"] = sourceTable.Rows[0]["MBLNO"].ToString();
newRow["HBLNO"] = sourceTable.Rows[0]["HBLNO"].ToString();
bsnoTable.Rows.Add(newRow);
Session[tempBsnoCacheName] = bsnoTable;
}
return strResult;
}
#endregion
#region 获取收费结算费用信息
/// <summary>
/// 获取收费结算费用信息
/// </summary>
/// <param name="tempSettlementID">收费结算GID</param>
/// <param name="tempBSNO">委托编号</param>
/// <returns>JSON数据集</returns>
private string GetInvoiceMakeOutEditFeeByGID(string tempSettlementID, string tempBSNO)
{
InvoiceDA invoiceDA = new InvoiceDA();
string strConditionBSNO = tempBSNO.Trim() == "" ? "" : " AND C.BSNO = '" + tempBSNO + "'";
string strSql = " SELECT C.GID,CASE WHEN C.FEETYPE = 1 THEN '收' ELSE '付' END as FEETYPE,C.FEENAME,C.CUSTOMERNAME,C.UNIT, "
+ " C.UNITPRICE,C.QUANTITY,C.AMOUNT,C.CURRENCY,C.EXCHANGERATE,ISNULL(C.INVOICE,0) as INVOICE,C.AMOUNT - ISNULL(C.INVOICE,0) as UNINVOICE,C.REMARK "
+ " FROM ch_fee_do as A INNER JOIN ch_fee_invoice as B ON A.BILLNO = B.BILLNO INNER JOIN ch_fee as C ON A.FEEID = C.GID WHERE B.GID = '" + tempSettlementID + "' " + strConditionBSNO;
DataTable invoiceTable = new DataTable();
invoiceTable = invoiceDA.GetExcuteSql(strSql).Tables[0];
StringBuilder sourceBuilder = new StringBuilder();
sourceBuilder.Append("{");
sourceBuilder.Append("rows:[");
for (int i = 0; i < invoiceTable.Rows.Count; i++)
{
sourceBuilder.Append("{id:\"" + invoiceTable.Rows[i][0].ToString() + "\",");
sourceBuilder.Append("data:[");
sourceBuilder.Append("\"0\",");
for (int j = 1; j < invoiceTable.Columns.Count; j++)
{
if (j == invoiceTable.Columns.Count - 1)
{
sourceBuilder.Append("\"" + invoiceTable.Rows[i][j].ToString() + "\"");
}
else
{
sourceBuilder.Append("\"" + invoiceTable.Rows[i][j].ToString() + "\",");
}
}
if (i == invoiceTable.Rows.Count - 1)
{
sourceBuilder.Append("]}");
}
else
{
sourceBuilder.Append("]},");
}
}
sourceBuilder.Append("]");
sourceBuilder.Append("}");
return sourceBuilder.ToString();
}
#endregion
private DataTable CreateTotalTable()
{
DataTable tempTable = new DataTable();
tempTable.Columns.Add("RECVRMB");
tempTable.Columns.Add("RECVUSD");
tempTable.Columns.Add("PAYRMB");
tempTable.Columns.Add("PAYUSD");
tempTable.Columns.Add("TOTALRMB");
tempTable.Columns.Add("TOTALUSD");
return tempTable;
}
private DataTable CreateBsnoTable()
{
DataTable tempTable = new DataTable();
tempTable.Columns.Add("BSNO");
tempTable.Columns.Add("CUSTOMERNAME");
tempTable.Columns.Add("CUSTNO");
tempTable.Columns.Add("MBLNO");
tempTable.Columns.Add("HBLNO");
return tempTable;
}
private DataTable CreateFeeTable()
{
DataTable tempTable = new DataTable();
tempTable.Columns.Add("GID");
tempTable.Columns.Add("BSNO");
tempTable.Columns.Add("FEETYPE");
tempTable.Columns.Add("CUSTOMERNAME");
tempTable.Columns.Add("FEENAME");
tempTable.Columns.Add("CURRENCY");
tempTable.Columns.Add("AMOUNT");
tempTable.Columns.Add("CTL");
tempTable.Columns.Add("UCTL");
tempTable.Columns.Add("EXCHANGERATE");
return tempTable;
}
private string CheckAllOrder(string tempSearch,string tempBSNOCacheName,string tempOrderCacheName,string tempTotalCacheName,string tempCheckType)
{
string strResult = "";
int itempoplb = 0;//业务类别
if (tempCheckType == "check")
{
#region 先获取全选的委托信息
tempSearch = tempSearch.Replace("{", "");
tempSearch = tempSearch.Replace("}", "");
tempSearch = tempSearch.Replace("[", "");
tempSearch = tempSearch.Replace("]", "");
string[] searchArg = tempSearch.Split(new char[] { ',' });
string strSeaeCondition = "";
string strFeeCondition = "";
string strAuthorityCondition = "";
if (strDoTypeName != null)
{
if (strDoTypeName == "paysettle")
{
UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modPaySettlementSearch");
if (userAuthorityManage.OperateType != AuthorityType.NULL)
{
strAuthorityCondition = userAuthorityManage.GetVisibleRangeSql(userAuthorityManage.VisibleType, ModuleType.PAYSETTLESEARCH, strShowName, strCompanyID, strDeptName, strUserID, strbstype);//"VW_Settlement"
}
}
else if (strDoTypeName == "paysettleapp")
{
UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modPaySettleAppSearch");
if (userAuthorityManage.OperateType != AuthorityType.NULL)
{
strAuthorityCondition = userAuthorityManage.GetVisibleRangeSql(userAuthorityManage.VisibleType, ModuleType.PAYSETTLEAPPSEARCH, strShowName, strCompanyID, strDeptName, strUserID, strbstype);//"VW_Settlement"
}
}
else if (strDoTypeName == "recvsettle")
{
UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modRecvSettleSearch");
if (userAuthorityManage.OperateType != AuthorityType.NULL)
{
strAuthorityCondition = userAuthorityManage.GetVisibleRangeSql(userAuthorityManage.VisibleType, ModuleType.RECVSETTLESEARCH, strShowName, strCompanyID, strDeptName, strUserID, strbstype);//"VW_Settlement"
}
}
}
else
{
strAuthorityCondition = " AND 1< 0 ";
}
for (int i = 0; i < searchArg.Length; i++)
{
string[] strArg = searchArg[i].Split(new char[] { ':' });
if (!strArg[1].Replace("\"", "").Trim().Equals(""))
{
switch (strArg[0].Replace("\"", ""))
{
case "cus"://Customer
strFeeCondition += String.Format(" AND CUSTOMERNAME = '{0}' ", strArg[1].Replace("\"", ""));
break;
case "bno"://BillNO
strSeaeCondition += String.Format(" AND (CUSTNO LIKE '%{0}%' OR MBLNO LIKE '%{0}%' OR HBLNO LIKE '%{0}%' OR CUSTOMNO LIKE '%{0}%' OR CUSTOMNO2 LIKE '%{0}%')", strArg[1].Replace("\"", ""));
break;
case "bt"://ETD BeginDate
strSeaeCondition += String.Format(" AND ETD >= '{0}' ", strArg[1].Replace("\"", ""));
break;
case "et"://ETD EndDate
strSeaeCondition += String.Format(" AND ETD <= '{0}' ", strArg[1].Replace("\"", ""));
break;
case "ves"://Vessel
strSeaeCondition += String.Format(" AND VESSEL LIKE '%{0}%' ", strArg[1].Replace("\"", ""));
break;
case "voy"://Voyno
strSeaeCondition += String.Format(" AND VOYNO LIKE '%{0}%' ", strArg[1].Replace("\"", ""));
break;
case "fnm"://FeeName
if (!strArg[1].Replace("\"", "").Trim().Equals(""))
{
int iFeeName = -1;
try
{
iFeeName = int.Parse(strArg[1].Replace("\"", "").Trim());
}
catch { }
if (iFeeName == -1)
{
strFeeCondition += String.Format(" AND FEENAME LIKE '%{0}%' ", strArg[1].Replace("\"", ""));
}
}
break;
case "fty"://FeeType
int iFeeType = int.Parse(strArg[1].Replace("\"", "").Trim());
if (iFeeType > 0)
{
strFeeCondition += String.Format(" AND FEETYPE = {0}", iFeeType);
}
break;
case "cur"://Currency
int iCurrency = int.Parse(strArg[1].Replace("\"", "").Trim());
if (iCurrency == 1)
{
strFeeCondition += String.Format(" AND CURRENCY LIKE '%{0}%' ", "RMB");
}
else if (iCurrency == 2)
{
strFeeCondition += String.Format(" AND CURRENCY LIKE '%{0}%' ", "USD");
}
break;
case "bty":
itempoplb = int.Parse(strArg[1].Replace("\"", ""));
break;
case "amount1"://
strFeeCondition += String.Format(" AND AMOUNT >= '{0}'", strArg[1].Replace("\"", ""));
break;
case "amount2"://
strFeeCondition += String.Format(" AND AMOUNT <= '{0}'", strArg[1].Replace("\"", ""));
break;
default:
break;
}
}
}
FeeSettlementDA feeSettlementDA = new FeeSettlementDA();
DataTable sourceTable;
//string strSql = " SELECT BSNO, CUSTOMERNAME,CUSTNO,MBLNO,HBLNO FROM op_seae WHERE BSNO IN "
// + " (SELECT BSNO FROM ch_fee WHERE (ISNULL(SETTLEMENT,0) < AMOUNT AND ISNULL(ORDERAMOUNT,0) < AMOUNT AND (FEESTATUS = 0 OR FEESTATUS = 8)) "
// + strFeeCondition + strAuthorityCondition + " ) " + strSeaeCondition + " ORDER BY CUSTOMERNAME DESC ";
string strSql = "";
//switch (itempoplb)
//{
// case 0:
// strSql = String.Format(" SELECT BSNO,'海运出口' OPLB, CUSTOMERNAME,CUSTNO,MBLNO,HBLNO FROM op_seae WHERE BSNO IN "
// + " (SELECT BSNO FROM ch_fee WHERE ((FEESTATUS = 0 OR FEESTATUS = 8)) "//ISNULL(SETTLEMENT,0) < AMOUNT AND ISNULL(ORDERAMOUNT,0) < AMOUNT AND
// + " {0} {1} ) {2} "
// + " union all "
// + " SELECT BSNO,'海运进口' OPLB, CUSTOMERNAME,CUSTNO,MBLNO,HBLNO FROM op_seai WHERE BSNO IN "
// + " (SELECT BSNO FROM ch_fee WHERE ((FEESTATUS = 0 OR FEESTATUS = 8)) "//ISNULL(SETTLEMENT,0) < AMOUNT AND ISNULL(ORDERAMOUNT,0) < AMOUNT AND
// + " {0} {1} ) {2} ORDER BY CUSTOMERNAME DESC "
// , strFeeCondition, strAuthorityCondition, strSeaeCondition);
// break;
// case 1:
// strSql = String.Format(" SELECT BSNO,'海运进口' OPLB, CUSTOMERNAME,CUSTNO,MBLNO,HBLNO FROM op_seae WHERE BSNO IN "
// + " (SELECT BSNO FROM ch_fee WHERE ((FEESTATUS = 0 OR FEESTATUS = 8)) "//ISNULL(SETTLEMENT,0) < AMOUNT AND ISNULL(ORDERAMOUNT,0) < AMOUNT AND
// + " {0} {1} ) {2} ORDER BY CUSTOMERNAME DESC "
// , strFeeCondition, strAuthorityCondition, strSeaeCondition);
// break;
// case 2:
// strSql = String.Format(" SELECT BSNO,'海运进口' OPLB, CUSTOMERNAME,CUSTNO,MBLNO,HBLNO FROM op_seai WHERE BSNO IN "
// + " (SELECT BSNO FROM ch_fee WHERE ((FEESTATUS = 0 OR FEESTATUS = 8)) "//ISNULL(SETTLEMENT,0) < AMOUNT AND ISNULL(ORDERAMOUNT,0) < AMOUNT AND
// + " {0} {1} ) {2} ORDER BY CUSTOMERNAME DESC "
// , strFeeCondition, strAuthorityCondition, strSeaeCondition);
// break;
// case 3-4:
// break;
// default:
// break;
//}
//2013-02-05 修改 begin
string sOPLBCondition = "";
switch (itempoplb)
{
case 0://所有业务类型
sOPLBCondition = "";
break;
case 1://海运出口op_Seae
sOPLBCondition = " and OPLBNAME='海运出口' ";
break;
case 2://海运进口op_Seai
sOPLBCondition = " and OPLBNAME='海运进口' ";
break;
case 3:
sOPLBCondition = " and OPLBNAME='空运出口' ";
break;
case 4:
sOPLBCondition = " and OPLBNAME='空运进口' ";
break;
case 5://陆运托运
sOPLBCondition = " and OPLBNAME='陆运托运' ";
break;
case 6://仓储费
sOPLBCondition = " and OPLBNAME='仓储费' ";
break;
case 7://仓储入库
sOPLBCondition = " and OPLBNAME='仓储入库' ";
break;
case 8://仓储出库
sOPLBCondition = " and OPLBNAME='仓储出库' ";
break;
case 9://陆运派车
sOPLBCondition = " and OPLBNAME='陆运派车' ";
break;
case 10://陆运派车
sOPLBCondition = " and OPLBNAME='进口贸易' ";
break;
default:
break;
}
strSql = String.Format(" SELECT BSNO,OPLBNAME,CUSTOMERNAME,CUSTNO,MBLNO,HBLNO,CUSTOMNO,CUSTOMNO2 FROM VW_Settlement WHERE BSNO IN "
+ " (SELECT BSNO FROM ch_fee WHERE gid not in(select feeid from run_fee_do) and ((FEESTATUS = 0 OR FEESTATUS = 8)) {0} {1} ) {2}{3} ORDER BY CUSTOMERNAME DESC "
, strFeeCondition, strAuthorityCondition, strSeaeCondition,sOPLBCondition);
//end
sourceTable = feeSettlementDA.GetExcuteSql(strSql).Tables[0];
StringBuilder bsnoBuilder = new StringBuilder();
for (int i = 0; i < sourceTable.Rows.Count; i++)
{
if (i == sourceTable.Rows.Count - 1)
{
bsnoBuilder.Append(sourceTable.Rows[i]["BSNO"].ToString());
}
else
{
bsnoBuilder.Append(sourceTable.Rows[i]["BSNO"].ToString() + ",");
}
}
if (Session[strBsnoCacheName] != null)
{
Session[strBsnoCacheName] = sourceTable;
}
else
{
Session[strBsnoCacheName] = sourceTable;
}
#endregion
#region 再缓存所有选中的委托相关的费用明细信息
//string strFeeSql = String.Format(" SELECT GID,BSNO,FEETYPE,CUSTOMERNAME,FEENAME,CURRENCY,AMOUNT,"
//+ " CASE WHEN AMOUNT > SETTLEMENT THEN AMOUNT - SETTLEMENT ELSE 0 END as CTL, "//CASE WHEN SETTLEMENT < ORDERAMOUNT THEN AMOUNT - ORDERAMOUNT ELSE END
//+ " CASE WHEN AMOUNT > SETTLEMENT THEN AMOUNT - SETTLEMENT ELSE 0 END as UCTL "//CASE WHEN SETTLEMENT < ORDERAMOUNT THEN AMOUNT - ORDERAMOUNT ELSE END
//+ " FROM ch_fee WHERE ((FEESTATUS = 0 OR FEESTATUS = 8)) "//ISNULL(SETTLEMENT,0) < AMOUNT AND ISNULL(ORDERAMOUNT,0) < AMOUNT AND
//+ strFeeCondition);
//2014-05-15 修改(包含负数)
string strFeeSql = String.Format(" SELECT GID,BSNO,FEETYPE,CUSTOMERNAME,FEENAME,CURRENCY,AMOUNT"
+ ",(CASE WHEN ((case when AMOUNT<0 then (-AMOUNT) else AMOUNT end) > (case when SETTLEMENT<0 then (-SETTLEMENT) else SETTLEMENT end)) THEN AMOUNT - SETTLEMENT ELSE 0 END) as CTL"
+ ",(CASE WHEN ((case when AMOUNT<0 then (-AMOUNT) else AMOUNT end) > (case when SETTLEMENT<0 then (-SETTLEMENT) else SETTLEMENT end)) THEN AMOUNT - SETTLEMENT ELSE 0 END) as UCTL,REMARK"
+ " FROM ch_fee WHERE ((FEESTATUS = 0 OR FEESTATUS = 8)) "
+ strFeeCondition);
DataTable feeTable = feeSettlementDA.GetExcuteSql(strFeeSql).Tables[0];
if (Session[strOrderCacheName] != null)
{
Session[strOrderCacheName] = feeTable;
}
else
{
Session[strOrderCacheName] = feeTable;
}
#endregion
strResult = GetSumFeeJson(feeTable, 1, 1, true);
}
else
{
DataTable feeTable = null;
//如果是取消全部选中,则自动将缓存的委托、费用明细清除
if (Session[strOrderCacheName] != null)
{
Session.Remove(strOrderCacheName);
}
if (Session[strBsnoCacheName] != null)
{
Session.Remove(strBsnoCacheName);
}
strResult = GetSumFeeJson(feeTable, 1, 2, true);
}
return strResult;
}
private string RefreshOrder(string tempSearch, string tempBSNOCacheName, string tempOrderCacheName, string tempTotalCacheName, string tempCheckType)
{
DataTable orderTable = new DataTable();
if (Session[tempBSNOCacheName] != null)
{
orderTable = (DataTable)Session[tempBSNOCacheName];
}
if (tempCheckType == "check")
{
StringBuilder sourceBuilder = new StringBuilder();
sourceBuilder.Append("{");
sourceBuilder.Append("rows:[");
for (int i = 0; i < orderTable.Rows.Count; i++)
{
sourceBuilder.Append("{id:\"" + orderTable.Rows[i][0].ToString() + "\",");
sourceBuilder.Append("data:[");
sourceBuilder.Append("\"1\",");
for (int j = 1; j < orderTable.Columns.Count; j++)
{
if (j == orderTable.Columns.Count - 1)
{
sourceBuilder.Append("\"" + orderTable.Rows[i][j].ToString() + "\"");
}
else
{
sourceBuilder.Append("\"" + orderTable.Rows[i][j].ToString() + "\",");
}
}
if (i == orderTable.Rows.Count - 1)
{
sourceBuilder.Append("]}");
}
else
{
sourceBuilder.Append("]},");
}
}
sourceBuilder.Append("]");
sourceBuilder.Append("}");
return sourceBuilder.ToString();
}
else
{
tempSearch = tempSearch.Replace("{", "");
tempSearch = tempSearch.Replace("}", "");
tempSearch = tempSearch.Replace("[", "");
tempSearch = tempSearch.Replace("]", "");
string[] searchArg = tempSearch.Split(new char[] { ',' });
string strSeaeCondition = "";
string strFeeCondition = "";
string strAuthorityCondition = "";
if (strDoTypeName != null)
{
if (strDoTypeName == "paysettle")
{
UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modPaySettlementSearch");
if (userAuthorityManage.OperateType != AuthorityType.NULL)
{
strAuthorityCondition = userAuthorityManage.GetVisibleRangeSql(userAuthorityManage.VisibleType, ModuleType.PAYSETTLESEARCH, strShowName, strCompanyID, strDeptName, strUserID, strbstype);//"VW_Settlement"
}
}
else if (strDoTypeName == "paysettleapp")
{
UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modPaySettleAppSearch");
if (userAuthorityManage.OperateType != AuthorityType.NULL)
{
strAuthorityCondition = userAuthorityManage.GetVisibleRangeSql(userAuthorityManage.VisibleType, ModuleType.PAYSETTLEAPPSEARCH, strShowName, strCompanyID, strDeptName, strUserID, strbstype);//"VW_Settlement"
}
}
else if (strDoTypeName == "recvsettle")
{
UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modRecvSettleSearch");
if (userAuthorityManage.OperateType != AuthorityType.NULL)
{
strAuthorityCondition = userAuthorityManage.GetVisibleRangeSql(userAuthorityManage.VisibleType, ModuleType.RECVSETTLESEARCH, strShowName, strCompanyID, strDeptName, strUserID, strbstype);//"VW_Settlement"
}
}
}
else
{
strAuthorityCondition = " AND 1< 0 ";
}
for (int i = 0; i < searchArg.Length; i++)
{
string[] strArg = searchArg[i].Split(new char[] { ':' });
if (!strArg[1].Replace("\"", "").Trim().Equals(""))
{
switch (strArg[0].Replace("\"", ""))
{
case "cus"://Customer
strFeeCondition += String.Format(" AND CUSTOMERNAME = '{0}' ", strArg[1].Replace("\"", ""));
break;
case "bno"://BillNO
strSeaeCondition += String.Format(" AND (CUSTNO LIKE '%{0}%' OR MBLNO LIKE '%{0}%' OR HBLNO LIKE '%{0}%' OR CUSTOMNO LIKE '%{0}%' OR CUSTOMNO2 LIKE '%{0}%')", strArg[1].Replace("\"", ""));
break;
case "bt"://ETD BeginDate
strSeaeCondition += String.Format(" AND ETD >= '{0}' ", strArg[1].Replace("\"", ""));
break;
case "et"://ETD EndDate
strSeaeCondition += String.Format(" AND ETD <= '{0}' ", strArg[1].Replace("\"", ""));
break;
case "ves"://Vessel
strSeaeCondition += String.Format(" AND VESSEL LIKE '%{0}%' ", strArg[1].Replace("\"", ""));
break;
case "voy"://Voyno
strSeaeCondition += String.Format(" AND VOYNO LIKE '%{0}%' ", strArg[1].Replace("\"", ""));
break;
case "fnm"://FeeName
if (!strArg[1].Replace("\"", "").Trim().Equals(""))
{
int iFeeName = -1;
try
{
iFeeName = int.Parse(strArg[1].Replace("\"", "").Trim());
}
catch { }
if (iFeeName == -1)
{
strFeeCondition += String.Format(" AND FEENAME LIKE '%{0}%' ", strArg[1].Replace("\"", ""));
}
}
break;
case "fty"://FeeType
int iFeeType = int.Parse(strArg[1].Replace("\"", "").Trim());
if (iFeeType > 0)
{
strFeeCondition += String.Format(" AND FEETYPE = {0}", iFeeType);
}
break;
case "cur"://Currency
int iCurrency = int.Parse(strArg[1].Replace("\"", "").Trim());
if (iCurrency == 1)
{
strFeeCondition += String.Format(" AND CURRENCY LIKE '%{0}%' ", "RMB");
}
else if (iCurrency == 2)
{
strFeeCondition += String.Format(" AND CURRENCY LIKE '%{0}%' ", "USD");
}
break;
case "amount1"://
strFeeCondition += String.Format(" AND AMOUNT >= '{0}'", strArg[1].Replace("\"", ""));
break;
case "amount2"://
strFeeCondition += String.Format(" AND AMOUNT <= '{0}'", strArg[1].Replace("\"", ""));
break;
default:
break;
}
}
}
FeeSettlementDA feeSettlementDA = new FeeSettlementDA();
DataTable sourceTable;
//string strSql = " SELECT BSNO, CUSTOMERNAME,CUSTNO,MBLNO,HBLNO FROM op_seae WHERE BSNO IN "
// + " (SELECT BSNO FROM ch_fee WHERE (ISNULL(SETTLEMENT,0) < AMOUNT AND ISNULL(ORDERAMOUNT,0) < AMOUNT AND (FEESTATUS = 0 OR FEESTATUS = 8)) "
// + strFeeCondition + strAuthorityCondition + " ) " + strSeaeCondition + " ORDER BY CUSTOMERNAME DESC ";
//string strSql =String.Format( " SELECT BSNO,'海运出口' OPLB, CUSTOMERNAME,CUSTNO,MBLNO,HBLNO FROM op_seae WHERE BSNO IN "
// + " (SELECT BSNO FROM ch_fee WHERE ((FEESTATUS = 0 OR FEESTATUS = 8)) "//ISNULL(SETTLEMENT,0) < AMOUNT AND ISNULL(ORDERAMOUNT,0) < AMOUNT AND
// + " {0} {1} ) {2} "
// + " union all "
// + " SELECT BSNO,'海运进口' OPLB, CUSTOMERNAME,CUSTNO,MBLNO,HBLNO FROM op_seai WHERE BSNO IN "
// + " (SELECT BSNO FROM ch_fee WHERE ((FEESTATUS = 0 OR FEESTATUS = 8)) "//ISNULL(SETTLEMENT,0) < AMOUNT AND ISNULL(ORDERAMOUNT,0) < AMOUNT AND
// + " {0} {1} ) {2} ORDER BY CUSTOMERNAME DESC "
// , strFeeCondition, strAuthorityCondition, strSeaeCondition);
//2013-02-05 修改
string strSql = String.Format(" SELECT BSNO,OPLBNAME,CUSTOMERNAME,CUSTNO,MBLNO,HBLNO,CUSTOMNO,CUSTOMNO2 FROM VW_Settlement WHERE BSNO IN (SELECT BSNO FROM ch_fee WHERE gid not in(select feeid from run_fee_do) and ((FEESTATUS = 0 OR FEESTATUS = 8)) {0} {1} ) {2} ORDER BY CUSTOMERNAME DESC ", strFeeCondition, strAuthorityCondition, strSeaeCondition);
sourceTable = feeSettlementDA.GetExcuteSql(strSql).Tables[0];
StringBuilder sourceBuilder = new StringBuilder();
sourceBuilder.Append("{");
sourceBuilder.Append("rows:[");
for (int i = 0; i < sourceTable.Rows.Count; i++)
{
sourceBuilder.Append("{id:\"" + sourceTable.Rows[i][0].ToString() + "\",");
sourceBuilder.Append("data:[");
sourceBuilder.Append("\"0\",");
for (int j = 1; j < sourceTable.Columns.Count; j++)
{
if (j == sourceTable.Columns.Count - 1)
{
sourceBuilder.Append("\"" + sourceTable.Rows[i][j].ToString() + "\"");
}
else
{
sourceBuilder.Append("\"" + sourceTable.Rows[i][j].ToString() + "\",");
}
}
if (i == sourceTable.Rows.Count - 1)
{
sourceBuilder.Append("]}");
}
else
{
sourceBuilder.Append("]},");
}
}
sourceBuilder.Append("]");
sourceBuilder.Append("}");
return sourceBuilder.ToString();
}
}
#region 根据查询条件获取委托列表信息
/// <summary>
/// 根据查询条件获取委托列表信息
/// </summary>
/// <param name="tempSearch">查询条件</param>
/// <returns>返回DataTable</returns>
private DataTable GetOrderTable(string tempSearch,string tempBSNO)
{
DataTable sourceTable;
tempSearch = tempSearch.Replace("{", "");
tempSearch = tempSearch.Replace("}", "");
tempSearch = tempSearch.Replace("[", "");
tempSearch = tempSearch.Replace("]", "");
string[] searchArg = tempSearch.Split(new char[] { ',' });
string strSeaeCondition = "";
string strFeeCondition = "";
string strAuthorityCondition = "";
if (strDoTypeName != null)
{
if (strDoTypeName == "paysettle")
{
UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modPaySettlementSearch");
if (userAuthorityManage.OperateType != AuthorityType.NULL)
{
strAuthorityCondition = userAuthorityManage.GetVisibleRangeSql(userAuthorityManage.VisibleType, ModuleType.PAYSETTLESEARCH, strShowName, strCompanyID, strDeptName, strUserID);
}
}
else if (strDoTypeName == "paysettleapp")
{
UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modPaySettleAppSearch");
if (userAuthorityManage.OperateType != AuthorityType.NULL)
{
strAuthorityCondition = userAuthorityManage.GetVisibleRangeSql(userAuthorityManage.VisibleType, ModuleType.PAYSETTLEAPPSEARCH, strShowName, strCompanyID, strDeptName, strUserID);
}
}
else if (strDoTypeName == "recvsettle")
{
UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modRecvSettleSearch");
if (userAuthorityManage.OperateType != AuthorityType.NULL)
{
strAuthorityCondition = userAuthorityManage.GetVisibleRangeSql(userAuthorityManage.VisibleType, ModuleType.RECVSETTLESEARCH, strShowName, strCompanyID, strDeptName, strUserID);
}
}
}
else
{
strAuthorityCondition = " AND 1< 0 ";
}
for (int i = 0; i < searchArg.Length; i++)
{
string[] strArg = searchArg[i].Split(new char[] { ':' });
if (!strArg[1].Replace("\"", "").Trim().Equals(""))
{
switch (strArg[0].Replace("\"", ""))
{
case "cus"://Customer
strFeeCondition += String.Format(" AND CUSTOMERNAME = '{0}' ", strArg[1].Replace("\"", ""));
break;
case "bno"://BillNO
strSeaeCondition += String.Format(" AND (CUSTNO LIKE '%{0}%' OR MBLNO LIKE '%{0}%' OR HBLNO LIKE '%{0}%' OR CUSTOMNO LIKE '%{0}%' OR CUSTOMNO2 LIKE '%{0}%')", strArg[1].Replace("\"", ""));
break;
case "bt"://ETD BeginDate
strSeaeCondition += String.Format(" AND ETD >= '{0}' ", strArg[1].Replace("\"", ""));
break;
case "et"://ETD EndDate
strSeaeCondition += String.Format(" AND ETD <= '{0}' ", strArg[1].Replace("\"", ""));
break;
case "ves"://Vessel
strSeaeCondition += String.Format(" AND VESSEL LIKE '%{0}%' ", strArg[1].Replace("\"", ""));
break;
case "voy"://Voyno
strSeaeCondition += String.Format(" AND VOYNO LIKE '%{0}%' ", strArg[1].Replace("\"", ""));
break;
case "fnm"://FeeName
if (!strArg[1].Replace("\"", "").Trim().Equals(""))
{
int iFeeName = -1;
try
{
iFeeName = int.Parse(strArg[1].Replace("\"", "").Trim());
}
catch { }
if (iFeeName == -1)
{
strFeeCondition += String.Format(" AND FEENAME LIKE '%{0}%' ", strArg[1].Replace("\"", ""));
}
}
break;
case "fty"://FeeType
int iFeeType = int.Parse(strArg[1].Replace("\"", "").Trim());
if (iFeeType > 0)
{
strFeeCondition += String.Format(" AND FEETYPE = {0}", iFeeType);
}
break;
case "cur"://Currency
int iCurrency = int.Parse(strArg[1].Replace("\"", "").Trim());
if (iCurrency == 1)
{
strFeeCondition += String.Format(" AND CURRENCY LIKE '%{0}%' ", "RMB");
}
else if (iCurrency == 2)
{
strFeeCondition += String.Format(" AND CURRENCY LIKE '%{0}%' ", "USD");
}
break;
default:
break;
}
}
}
if (strBSNO != null)
{
strSeaeCondition += String.Format(" AND BSNO = '{0}' ", tempBSNO);
}
FeeSettlementDA feeSettlementDA = new FeeSettlementDA();
//string strSql = " SELECT BSNO, CUSTOMERNAME,CUSTNO,MBLNO,HBLNO FROM op_seae WHERE BSNO IN "
// + " (SELECT BSNO FROM ch_fee WHERE (ISNULL(SETTLEMENT,0) < AMOUNT AND ISNULL(ORDERAMOUNT,0) < AMOUNT AND (FEESTATUS = 0 OR FEESTATUS = 8)) "
// + strFeeCondition + strAuthorityCondition + " ) " + strSeaeCondition + " ORDER BY CUSTOMERNAME DESC ";
//string strSql = String.Format(" SELECT BSNO, CUSTOMERNAME,CUSTNO,MBLNO,HBLNO FROM op_seae WHERE BSNO IN "
// + " (SELECT BSNO FROM ch_fee WHERE ((FEESTATUS = 0 OR FEESTATUS = 8)) "
// + " {0} {1} ) {2} "
// + " union all "
// + " SELECT BSNO, CUSTOMERNAME,CUSTNO,MBLNO,HBLNO FROM op_seai WHERE BSNO IN "
// + " (SELECT BSNO FROM ch_fee WHERE ((FEESTATUS = 0 OR FEESTATUS = 8)) "
// + " {0} {1} ) {2} ORDER BY CUSTOMERNAME DESC "
// , strFeeCondition, strAuthorityCondition, strSeaeCondition);
//2013-02-05 修改
string strSql = String.Format(" SELECT BSNO,CUSTOMERNAME,CUSTNO,MBLNO,HBLNO,CUSTOMNO,CUSTOMNO2 FROM VW_Settlement WHERE BSNO IN "
+ " (SELECT BSNO FROM ch_fee WHERE ((FEESTATUS = 0 OR FEESTATUS = 8)) {0} {1} ) {2}"
+ " ORDER BY CUSTOMERNAME DESC "
, strFeeCondition, strAuthorityCondition, strSeaeCondition);
sourceTable = feeSettlementDA.GetExcuteSql(strSql).Tables[0];
return sourceTable;
}
#endregion
#region 根据查询数据获取委托相关费用明细数据信息
/// <summary>
/// 根据查询数据获取委托相关费用明细数据信息
/// </summary>
/// <param name="tempSearch">查询条件</param>
/// <param name="tempBSNO">委托编号</param>
/// <returns>返回DataTable</returns>
private DataTable GetFeeByOrderBsnoTable(string tempSearch,string tempBSNO)
{
DataTable sourceTable;
tempSearch = tempSearch.Replace("{", "");
tempSearch = tempSearch.Replace("}", "");
tempSearch = tempSearch.Replace("[", "");
tempSearch = tempSearch.Replace("]", "");
string[] searchArg = tempSearch.Split(new char[] { ',' });
string strSeaeCondition = "";
string strFeeCondition = "";
string strAuthorityCondition = "";
if (strDoTypeName != null)
{
if (strDoTypeName == "paysettle")
{
UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modPaySettlementSearch");
if (userAuthorityManage.OperateType != AuthorityType.NULL)
{
strAuthorityCondition = userAuthorityManage.GetVisibleRangeSql(userAuthorityManage.VisibleType, ModuleType.PAYSETTLESEARCH, strShowName, strCompanyID, strDeptName, strUserID);
}
}
else if (strDoTypeName == "paysettleapp")
{
UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modPaySettleAppSearch");
if (userAuthorityManage.OperateType != AuthorityType.NULL)
{
strAuthorityCondition = userAuthorityManage.GetVisibleRangeSql(userAuthorityManage.VisibleType, ModuleType.PAYSETTLEAPPSEARCH, strShowName, strCompanyID, strDeptName, strUserID);
}
}
else if (strDoTypeName == "recvsettle")
{
UserAuthorityManage userAuthorityManage = new UserAuthorityManage(strUserID, "modRecvSettleSearch");
if (userAuthorityManage.OperateType != AuthorityType.NULL)
{
strAuthorityCondition = userAuthorityManage.GetVisibleRangeSql(userAuthorityManage.VisibleType, ModuleType.RECVSETTLESEARCH, strShowName, strCompanyID, strDeptName, strUserID);
}
}
}
else
{
strAuthorityCondition = " AND 1< 0 ";
}
for (int i = 0; i < searchArg.Length; i++)
{
string[] strArg = searchArg[i].Split(new char[] { ':' });
if (!strArg[1].Replace("\"", "").Trim().Equals(""))
{
switch (strArg[0].Replace("\"", ""))
{
case "cus"://Customer
strFeeCondition += String.Format(" AND CUSTOMERNAME = '{0}' ", strArg[1].Replace("\"", ""));
break;
case "bno"://BillNO
strSeaeCondition += String.Format(" AND (CUSTNO LIKE '%{0}%' OR MBLNO LIKE '%{0}%' OR HBLNO LIKE '%{0}%')", strArg[1].Replace("\"", ""));
break;
case "bt"://ETD BeginDate
strSeaeCondition += String.Format(" AND ETD >= '{0}' ", strArg[1].Replace("\"", ""));
break;
case "et"://ETD EndDate
strSeaeCondition += String.Format(" AND ETD <= '{0}' ", strArg[1].Replace("\"", ""));
break;
case "ves"://Vessel
strSeaeCondition += String.Format(" AND VESSEL LIKE '%{0}%' ", strArg[1].Replace("\"", ""));
break;
case "voy"://Voyno
strSeaeCondition += String.Format(" AND VOYNO LIKE '%{0}%' ", strArg[1].Replace("\"", ""));
break;
case "fnm"://FeeName
if (!strArg[1].Replace("\"", "").Trim().Equals(""))
{
int iFeeName = -1;
try
{
iFeeName = int.Parse(strArg[1].Replace("\"", "").Trim());
}
catch { }
if (iFeeName == -1)
{
strFeeCondition += String.Format(" AND FEENAME LIKE '%{0}%' ", strArg[1].Replace("\"", ""));
}
}
break;
case "fty"://FeeType
int iFeeType = int.Parse(strArg[1].Replace("\"", "").Trim());
if (iFeeType > 0)
{
strFeeCondition += String.Format(" AND FEETYPE = {0}", iFeeType);
}
break;
case "cur"://Currency
int iCurrency = int.Parse(strArg[1].Replace("\"", "").Trim());
if (iCurrency == 1)
{
strFeeCondition += String.Format(" AND CURRENCY LIKE '%{0}%' ", "RMB");
}
else if (iCurrency == 2)
{
strFeeCondition += String.Format(" AND CURRENCY LIKE '%{0}%' ", "USD");
}
break;
default:
break;
}
}
}
if (strBSNO != null)
{
strFeeCondition += String.Format(" AND BSNO = '{0}' ", tempBSNO);
}
//string strSql = String.Format(" SELECT GID,BSNO,FEETYPE,CUSTOMERNAME,FEENAME,CURRENCY,AMOUNT"
//+ " ,CASE WHEN AMOUNT > SETTLEMENT THEN AMOUNT - SETTLEMENT ELSE 0 END as CTL "//CASE WHEN SETTLEMENT < ORDERAMOUNT THEN AMOUNT - ORDERAMOUNT ELSE END
//+ " ,CASE WHEN AMOUNT > SETTLEMENT THEN AMOUNT - SETTLEMENT ELSE 0 END as UCTL "//CASE WHEN SETTLEMENT < ORDERAMOUNT THEN AMOUNT - ORDERAMOUNT ELSE END
//+ ",EXCHANGERATE "
//+ " FROM ch_fee WHERE ((FEESTATUS = 0 OR FEESTATUS = 8)) " + strFeeCondition);//ISNULL(SETTLEMENT,0) < AMOUNT AND ISNULL(ORDERAMOUNT,0) < AMOUNT AND
//2014-05-15 修改(包含负数)
string strSql = String.Format(" SELECT GID,BSNO,FEETYPE,CUSTOMERNAME,FEENAME,CURRENCY,AMOUNT"
+ ",(CASE WHEN ((case when AMOUNT<0 then (-AMOUNT) else AMOUNT end) > (case when SETTLEMENT<0 then (-SETTLEMENT) else SETTLEMENT end)) THEN AMOUNT - SETTLEMENT ELSE 0 END) as CTL"
+ ",(CASE WHEN ((case when AMOUNT<0 then (-AMOUNT) else AMOUNT end) > (case when SETTLEMENT<0 then (-SETTLEMENT) else SETTLEMENT end)) THEN AMOUNT - SETTLEMENT ELSE 0 END) as UCTL"
+ ",EXCHANGERATE,REMARK "
+ " FROM ch_fee WHERE ((FEESTATUS = 0 OR FEESTATUS = 8)) " + strFeeCondition);
FeeSettlementDA feeSettlementDA = new FeeSettlementDA();
sourceTable = feeSettlementDA.GetExcuteSql(strSql).Tables[0];
return sourceTable;
}
#endregion
#region 根据费用GID获取结算费用明细
/// <summary>
/// 根据费用GID获取结算费用明细
/// </summary>
/// <param name="tempFeeGID">费用GID</param>
/// <returns>返回DataTable费用数据集</returns>
private DataTable GetSimpleFeeByGID(string tempFeeGID)
{
DataTable sourceTable = null;
//string strSql = String.Format(" SELECT GID,BSNO,FEETYPE,CUSTOMERNAME,FEENAME,CURRENCY,AMOUNT"
//+",CASE WHEN AMOUNT > SETTLEMENT THEN AMOUNT - SETTLEMENT ELSE 0 END as CTL"//CASE WHEN SETTLEMENT < ORDERAMOUNT THEN AMOUNT - ORDERAMOUNT ELSE END
//+ ",CASE WHEN AMOUNT > SETTLEMENT THEN AMOUNT - SETTLEMENT ELSE 0 END as UCTL"//CASE WHEN SETTLEMENT < ORDERAMOUNT THEN AMOUNT - ORDERAMOUNT ELSE END
//+ ",EXCHANGERATE "
//+ " FROM ch_fee WHERE GID = '{0}' ", tempFeeGID);
//2014-05-15 修改(包含负数)
string strSql = String.Format(" SELECT GID,BSNO,FEETYPE,CUSTOMERNAME,FEENAME,CURRENCY,AMOUNT"
+ ",(CASE WHEN ((case when AMOUNT<0 then (-AMOUNT) else AMOUNT end) > (case when SETTLEMENT<0 then (-SETTLEMENT) else SETTLEMENT end)) THEN AMOUNT - SETTLEMENT ELSE 0 END) as CTL"
+ ",(CASE WHEN ((case when AMOUNT<0 then (-AMOUNT) else AMOUNT end) > (case when SETTLEMENT<0 then (-SETTLEMENT) else SETTLEMENT end)) THEN AMOUNT - SETTLEMENT ELSE 0 END) as UCTL"
+ ",EXCHANGERATE,REMARK"
+ " FROM ch_fee WHERE GID = '{0}' ", tempFeeGID);
FeeSettlementDA feeSettlementDA = new FeeSettlementDA();
sourceTable = feeSettlementDA.GetExcuteSql(strSql).Tables[0];
return sourceTable;
}
#endregion
}
public enum PostNoticeType
{
DIFFCUSTOMER = 0,
DIFFCURRENCY = 1,
BEYONDMAXLINE = 2,
SESSIONFAILURE = 3,
POSTSUCCESS = 4
}
}