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

589 lines
25 KiB
C#

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Collections.Generic;
using DSWeb.Models;
using DSWeb.EntityDA;
using System.Text;
namespace DSWeb.Shipping
{
public partial class CrmOrderFeeGridSource : System.Web.UI.Page
{
private int iType;//费用类型 应收类型值1 应付类型值 2
private string strReadXmlType = "";//读取xml串方式 "init"-初始化获取所有费用信息;"add"-添加新的费用信息;"delete"-删除费用信息;"exist"查看是否有与委托相关费用
private int iShowCount;//每页显示数据量
private string strBSNO;//委托编号
private string strHandle;
private string strUserID;//用户GID
private string strShowName;//用户登录名
private string strCompanyID;//分公司GID
private string strDeptName;//部门名称
protected void Page_Load(object sender, EventArgs e)
{
if (Session["USERID"] != null)
{
strUserID = Session["USERID"].ToString().Trim();
}
if (Session["COMPANYID"] != null)
{
strCompanyID = Session["COMPANYID"].ToString();
}
if (Session["DEPTNAME"] != null)
{
strDeptName = Session["DEPTNAME"].ToString();
}
if (Session["SHOWNAME"] != null)
{
strShowName = Session["SHOWNAME"].ToString();
}
#region 判断参数是否正确
if (Request.QueryString["type"] != null)
{
iType = int.Parse(Request.QueryString["type"].ToString().Trim());
}
if (Request.QueryString["read"] != null)
{
strReadXmlType = Request.QueryString["read"].ToString().Trim();
}
if (Request.QueryString["showcount"] != null)
{
iShowCount = int.Parse(Request.QueryString["showcount"].ToString());
}
if (Request.QueryString["bsno"] != null)
{
strBSNO = Request.QueryString["bsno"].ToString();
}
if (Request.QueryString["handle"] != null)
{
strHandle = Request.QueryString["handle"].ToString().Trim().ToLower();
}
#endregion
if (strHandle != null && strBSNO != null)
{
if (strHandle.Equals("getauditstatus"))
{
Response.Write(GetAuditStatus(strBSNO));
}
if (strHandle.Equals("postaudit"))
{
Response.Write(PostCrmOrderAudit(strBSNO));
}
}
else
{
if (iType > 0 && !strReadXmlType.Equals(""))
{
string strOutputXml = "";
strOutputXml = GetCells(iShowCount, iType, strReadXmlType);
//输出XML字符串
Response.ContentType = "text/xml";
strOutputXml.Replace("&", "&");
Response.Write(strOutputXml);
}
else
{
//访问参数不正确
Response.ContentType = "text/xml";
Response.Write("-2");
}
}
}
#region 获取订舱费用审核状态,如果审核状态是 9-录入状态,1-提交审核,0-审核通过,2-审核驳回
/// <summary>
/// 获取订舱费用审核状态,如果审核状态是
/// </summary>
/// <returns>9-录入状态,1-提交审核,0-审核通过,2-审核驳回,-1获取数据错误</returns>
private string GetAuditStatus(string tempORDNO)
{
string strStatus = "";
CrmSeaeorderDA crmSeaeOrderDA = new CrmSeaeorderDA();
CrmSeaeorderEntity crmSeaeOrderEntity = new CrmSeaeorderEntity();
crmSeaeOrderEntity = crmSeaeOrderDA.GetID(tempORDNO);
if (crmSeaeOrderEntity != null)
{
if (crmSeaeOrderEntity.ORDNO != null)
{
strStatus = crmSeaeOrderEntity.ORSTATUS.ToString();
}
else
{
strStatus = "-1";//获取数据错误
}
}
else
{
strStatus = "-1";//获取数据错误
}
return strStatus;
}
#endregion
/// <summary>
/// 获取费用信息
/// </summary>
/// <returns></returns>
private string GetCells(int iShowCount, int Type, string readXmlType)
{
CrmOrderFeeEntity crmOrderFeeEntity = new CrmOrderFeeEntity();
CrmOrderFeeDA crmOrderFeeDA = new CrmOrderFeeDA();
CrmOrderFeeEntity existCrmOrderFeeEntity = new CrmOrderFeeEntity();
existCrmOrderFeeEntity = crmOrderFeeDA.GetCrmOrderFeeByBSNOAndType(strBSNO, Type);
if (existCrmOrderFeeEntity != null && !strReadXmlType.Equals("exist"))
{
//获取所有费用信息,用做Grid显示
DataTable feeTable = new DataTable();
//初始化
string strInitSql = " SELECT {0} GID, FEESTATUS, FEENAME, CUSTOMERNAME, UNIT, UNITPRICE, QUANTITY,COMMISSIONRATE,AMOUNT, CURRENCY, "
+ " EXCHANGERATE,FEEFRT,REMARK,ISADVANCEDPAY FROM crm_orderfee WHERE 1> 0 {1} {2} {3}";
string strSql = "";
if (iType == 1)
{
if (iShowCount > 0)
{
//strSql = string.Format(strInitSql, "top " + iShowCount, " AND FEETYPE like '%收%' ", " ORDER BY ENTERDATE DESC ");
strSql = string.Format(strInitSql, "", " AND FEETYPE = 1 ", "AND BSNO = '" + strBSNO + "'", " ORDER BY ENTERDATE ASC ");
}
else
{
strSql = string.Format(strInitSql, "", " AND FEETYPE = 1 ", "AND BSNO = '" + strBSNO + "'", " ORDER BY ENTERDATE ASC ");
}
}
else
{
if (iShowCount > 0)
{
//strSql = string.Format(strInitSql, "top " + iShowCount, " AND FEETYPE like '%付%' ", " ORDER BY ENTERDATE DESC ");
strSql = string.Format(strInitSql, "", " AND FEETYPE = 2 ", "AND BSNO = '" + strBSNO + "'", " ORDER BY ENTERDATE ASC ");
}
else
{
strSql = string.Format(strInitSql, "", " AND FEETYPE = 2 ", "AND BSNO = '" + strBSNO + "'", " ORDER BY ENTERDATE ASC ");
}
}
feeTable = getStatusNameTable(crmOrderFeeDA.GetFeeListByCondition(strSql).Tables[0]);
//编排字符串 xml串
StringBuilder dataBuilder = new StringBuilder();
dataBuilder.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
dataBuilder.Append("<rows>");
int iCount = feeTable.Rows.Count;
for (int i = 0; i < iCount; i++)
{
int jCount = feeTable.Columns.Count;
dataBuilder.Append("<row id=\"" + feeTable.Rows[i]["GID"].ToString() + "\">");
dataBuilder.Append("<cell>0</cell>");
for (int j = 1; j < jCount; j++)
{
switch (j)
{
case 2://FEENAME
dataBuilder.Append(GetFeeCodeCells(feeTable.Rows[i][j].ToString().Trim()));
break;
case 3://CUSTOMERNAME
dataBuilder.Append(GetCRMClientCells(feeTable.Rows[i][j].ToString().Trim()));
break;
case 4:
dataBuilder.Append(GetUnitCells(feeTable.Rows[i][j].ToString().Trim()));
break;
case 9:
dataBuilder.Append(GetCurrencyCells(feeTable.Rows[i][j].ToString().Trim()));
break;
case 10:
dataBuilder.Append("<cell>" + feeTable.Rows[i][j].ToString() + "</cell>");
break;
case 11:
dataBuilder.Append(GetFRTCells(feeTable.Rows[i][j].ToString()));
break;
case 13:
string strIsAdvancedPay = feeTable.Rows[i][j].ToString().Trim().ToLower();
if (strIsAdvancedPay.Equals("true"))
{
dataBuilder.Append("<cell>1</cell>");
}
else
{
dataBuilder.Append("<cell>0</cell>");
}
break;
default:
dataBuilder.Append("<cell>" + feeTable.Rows[i][j].ToString() + "</cell>");
break;
}
}
dataBuilder.Append("</row>");
}
dataBuilder.Append("</rows>");
return dataBuilder.ToString();
}
else if (existCrmOrderFeeEntity != null && strReadXmlType.Equals("exist"))
{
return "1";//存在费用
}
else if (existCrmOrderFeeEntity == null && strReadXmlType.Equals("add"))
{
StringBuilder dataBuilder = new StringBuilder();
dataBuilder.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
dataBuilder.Append("<rows>");
dataBuilder.Append("<row id=\"" + Guid.NewGuid().ToString() + "\">");
dataBuilder.Append("<cell>录入状态</cell>");
dataBuilder.Append(GetFeeCodeCells(""));
dataBuilder.Append(GetCRMClientCells(""));
dataBuilder.Append(GetUnitCells(""));
dataBuilder.Append("<cell>0</cell>");
dataBuilder.Append("<cell>0</cell>");
dataBuilder.Append("<cell>0</cell>");
dataBuilder.Append("<cell>0</cell>");
dataBuilder.Append(GetCurrencyCells("RMB"));
dataBuilder.Append("<cell>0</cell>");
dataBuilder.Append(GetFRTCells("PP"));
dataBuilder.Append("<cell></cell>");
dataBuilder.Append("<cell>0</cell>");
dataBuilder.Append("</row>");
dataBuilder.Append("</rows>");
return dataBuilder.ToString();
}
else
{
return "-3";//没有相关的费用
}
}
#region 获取CRM系统客户信息下拉列表
/// <summary>
/// 获取CRM系统客户信息下拉列表
/// </summary>
/// <param name="strClientValue">当前列表客户信息值</param>
/// <returns></returns>
public string GetCRMClientCells(string strClientValue)
{
CRMClientDA crmClientDA = new CRMClientDA();
//DataTable clientTable = crmClientDA.GetCRMClientList().Tables[0];
StringBuilder clientBuilder = new StringBuilder();
clientBuilder.Append("<cell xmlcontent=\"1\" editable=\"1\">" + strClientValue);
//for (int i = 0; i < clientTable.Rows.Count; i++)
//{
// if (!clientTable.Rows[i]["SHORTNAME"].ToString().Trim().Equals(""))
// {
// clientBuilder.Append("<option value=\"" + clientTable.Rows[i]["SHORTNAME"].ToString() + "\">" + clientTable.Rows[i]["CODENAME"].ToString().ToUpper() + " " + clientTable.Rows[i]["SHORTNAME"].ToString() + "</option>");
// }
//}
clientBuilder.Append("</cell>");
return clientBuilder.ToString();
}
#endregion
#region 获取币别信息下拉列表
/// <summary>
/// 获取币别信息下拉列表
/// </summary>
/// <returns></returns>
public string GetCurrencyCells(string strCurrencyValue)
{
CurrencyDA currencyDA = new CurrencyDA();
//DataTable currencyTable = currencyDA.GetCurrencyList().Tables[0];
StringBuilder currencyBuilder = new StringBuilder();
currencyBuilder.Append("<cell xmlcontent=\"1\">" + strCurrencyValue);
//for (int i = 0; i < currencyTable.Rows.Count; i++)
//{
// if (!currencyTable.Rows[i]["DESCRIPTION"].ToString().Trim().Equals(""))
// {
// currencyBuilder.Append("<option value=\"" + currencyTable.Rows[i]["CODENAME"].ToString() + "\">" + currencyTable.Rows[i]["CODENAME"].ToString() + "</option>");
// }
//}
currencyBuilder.Append("</cell>");
return currencyBuilder.ToString();
}
#endregion
#region 获取费用代码信息下拉列表
/// <summary>
/// 获取费用代码信息下拉列表
/// </summary>
/// <param name="strFeeCodeValue"></param>
/// <returns></returns>
public string GetFeeCodeCells(string strFeeCodeValue)
{
FeeCodeDA feeCodeDA = new FeeCodeDA();
//DataTable feeCodeTable = feeCodeDA.GetFeeCodeList().Tables[0];
StringBuilder feeCodeBuilder = new StringBuilder();
feeCodeBuilder.Append("<cell xmlcontent=\"1\">" + strFeeCodeValue);
//for (int i = 0; i < feeCodeTable.Rows.Count; i++)
//{
// if (!feeCodeTable.Rows[i]["NAME"].ToString().Trim().Equals(""))
// {
// feeCodeBuilder.Append("<option value=\"" + feeCodeTable.Rows[i]["NAME"].ToString() + "\">" + feeCodeTable.Rows[i]["FULLNAME"].ToString() + "</option>");
// }
//}
feeCodeBuilder.Append("</cell>");
return feeCodeBuilder.ToString();
}
#endregion
#region 获取标准信息下拉列表
/// <summary>
/// 获取标准信息下拉列表
/// </summary>
/// <param name="strUnitValue"></param>
/// <returns></returns>
public string GetUnitCells(string strUnitValue)
{
StringBuilder unitBuilder = new StringBuilder();
unitBuilder.Append("<cell xmlcontent=\"1\">" + strUnitValue);
unitBuilder.Append("<option value=\"单票\">单票</option>");
unitBuilder.Append("<option value=\"重量\">重量</option>");
//unitBuilder.Append("<option value=\"净重\">净重</option>");
unitBuilder.Append("<option value=\"尺码\">尺码</option>");
unitBuilder.Append("<option value=\"TEU\">TEU</option>");
unitBuilder.Append("<option value=\"箱型\">箱型</option>");
unitBuilder.Append("<option value=\"CBM\">CBM</option>");
unitBuilder.Append("<option value=\"BILL\">BILL</option>");
unitBuilder.Append("</cell>");
return unitBuilder.ToString();
}
#endregion
#region 获取引入类型信息下拉列表
/// <summary>
/// 获取引入类型信息下拉列表
/// </summary>
/// <param name="strFRTValue"></param>
/// <returns></returns>
public string GetFRTCells(string strFRTValue)
{
StringBuilder frtBuilder = new StringBuilder();
frtBuilder.Append("<cell xmlcontent=\"1\">" + strFRTValue);
frtBuilder.Append("<option value=\"PP\">PP</option>");
frtBuilder.Append("<option value=\"CC\">CC</option>");
frtBuilder.Append("</cell>");
return frtBuilder.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("FEESTATUS"))
{
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("FEESTATUS"))
{
int iFeeStatus = int.Parse(sourceTable.Rows[i][k].ToString());
string strFeeStatus = "";
switch (iFeeStatus)
{
case 0:
strFeeStatus = "审核通过";
break;
case 1:
strFeeStatus = "录入状态";
break;
case 2:
strFeeStatus = "提交审核";
break;
case 3:
strFeeStatus = "申请修改";
break;
case 4:
strFeeStatus = "申请删除";
break;
case 5:
strFeeStatus = "取消申请";
break;
case 6:
strFeeStatus = "驳回提交";
break;
case 7:
strFeeStatus = "驳回申请";
break;
case 8:
strFeeStatus = "部分结算";
break;
case 9:
strFeeStatus = "结算完毕";
break;
case 10:
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="tempBSNO">销售订舱业务编号</param>
/// <returns>值1表示提交审核成功 值不等 表示提交审核失败</returns>
private int PostCrmOrderAudit(string tempBSNO)
{
int iResult = 0;
CrmSeaeorderDA crmSeaeOrderDA = new CrmSeaeorderDA();
if (crmSeaeOrderDA.GetCrmOrderFeeCountByOrderNO(tempBSNO) > 0)
{
iResult = crmSeaeOrderDA.PostAudit(tempBSNO, "1", "");
if (iResult == 1)
{
IList<UserAuthorityRangeEntity> userAuthorityRangeEntities = new List<UserAuthorityRangeEntity>();
UserAuthorityDA userAuthorityDA = new UserAuthorityDA();
userAuthorityRangeEntities = userAuthorityDA.GetAuthorityUsersByNameAndRange("modSeaeOrderAudit", 2);
IList<MessageEntity> messageEntities = new List<MessageEntity>();
MessageDA messageDA = new MessageDA();
if (userAuthorityRangeEntities.Count > 0)
{
foreach (UserAuthorityRangeEntity userAuthorityRangeEntity in userAuthorityRangeEntities)
{
UserDA userDA = new UserDA();
CompanyDA companyDA = new CompanyDA();
CompanyEntity companyEntity = new CompanyEntity();
//先获取提交销售订舱申请人的分公司、部门信息
string applyCompanyID = strCompanyID;
string applyDeptName = userDA.GetUserDepartmentName(strUserID);
//再获取具有销售订舱审核权限的审核人分公司、部门信息
companyEntity = companyDA.GetCompanyByUserID(userAuthorityRangeEntity.UserID);
if (companyEntity != null)
{
if (companyEntity.GID != null)
{
string auditorCompanyID = companyEntity.GID;
string auditorDeptName = userDA.GetUserDepartmentName(userAuthorityRangeEntity.UserID);
if (applyCompanyID == auditorCompanyID)
{
//相同分公司下
if (applyDeptName == auditorDeptName)
{
//插入消息提醒
MessageEntity messageEntity = new MessageEntity();
messageEntity.GID = Guid.NewGuid().ToString();
messageEntity.Name = "SeaOrderAudit";
messageEntity.Description = "销售订舱待审核通知";
messageEntity.IsRead = false;
messageEntity.ReadCount = 0;
messageEntity.MessageContent = strShowName + " 提交 [销售订舱审核] 申请,请审核 ";
messageEntity.TaskID = "";
messageEntity.Receiver = userAuthorityRangeEntity.UserID;
messageEntity.TaskUrl = "shipping/SeaeOrderAudit.aspx";
messageEntity.Type = messageDA.GetMessageType(MessageType.SEAORDERAUDIT);
messageEntity.RecvType = 2;//申请审核类型
messageEntities.Add(messageEntity);
}
}
}
}
}
}
if (messageEntities.Count > 0)
{
messageDA.CreateMessage(MessageType.SEAORDERAUDIT, messageEntities);
}
}
}
else
{
iResult = -3;//销售订舱未录费用不能提交审核
}
return iResult;
}
#endregion
}
}