李狗蛋 69cf26105d 0
2025-03-14 10:00:24 +08:00

1101 lines
52 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Kingdee.BOS.App.Data;
using Kingdee.BOS;
using Kingdee.BOS.Contracts.Report;
using Kingdee.BOS.Core.Report;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Pilot.Report.Exploitation.PublicClass;
namespace Pilot.Report.Exploitation.AnnualSalesPaymentSum
{
[Description("【列表插件】年度销售额&回款额汇总【报表】"), HotUpdate]
public class AnnualSalesPaymentSumReport: SysReportBaseService
{
private string tableNameView = EnvironmentTEST.tableNameView_TEST;
/// <summary>
/// 初始化
/// </summary>
public override void Initialize()
{
base.Initialize();
this.ReportProperty.ReportName = new LocaleValue("年度销售额-回款额汇总", base.Context.UserLocale.LCID);
this.ReportProperty.IsUIDesignerColumns = false;
// 简单账表类型:普通、树形、分页
this.ReportProperty.ReportType = ReportType.REPORTTYPE_NORMAL;
this.IsCreateTempTableByPlugin = true;
//
this.IsCreateTempTableByPlugin = true;
//
this.ReportProperty.IsGroupSummary = true;
//
this.ReportProperty.SimpleAllCols = false;
// 单据主键两行FID相同则为同一单的两条分录单据编号可以不重复显示
this.ReportProperty.PrimaryKeyFieldName = "FID";
//
this.ReportProperty.IsDefaultOnlyDspSumAndDetailData = true;
// 设置精度控制
var list = new List<DecimalControlField>
{
new DecimalControlField("FDECIMALS", "OrigInvoiceAmount"),
new DecimalControlField("FDECIMALS", "ExchangeRate"),
new DecimalControlField("FDECIMALS", "InvoiceAmountTHB"),
new DecimalControlField("FDECIMALS", "MonthEndExRate"),
new DecimalControlField("FDECIMALS", "RevaluationAountInTHB"),
new DecimalControlField("FDECIMALS", "UnrealizedGainLoss"),
};
this.ReportProperty.DecimalControlFieldList = list;
}
/// <summary>
/// 报表列表头
/// </summary>
/// <param name="filter"></param>
/// <returns></returns>
public override ReportHeader GetReportHeaders(IRptParams filter)
{
base.GetReportHeaders(filter);
ReportHeader header = new ReportHeader();
header.AddChild("Salesperson", new LocaleValue("销售人员"), SqlStorageType.Sqlvarchar);
header.AddChild("XOneMonth", new LocaleValue("1月(销售额)"), SqlStorageType.SqlDecimal);
header.AddChild("HOneMonth", new LocaleValue("1月(回款额)"), SqlStorageType.SqlDecimal);
header.AddChild("XTwoMonth", new LocaleValue("2月(销售额)"), SqlStorageType.SqlDecimal);
header.AddChild("HTwoMonth", new LocaleValue("2月(回款额)"), SqlStorageType.SqlDecimal);
header.AddChild("XThreeMonth", new LocaleValue("3月(销售额)"), SqlStorageType.SqlDecimal);
header.AddChild("HThreeMonth", new LocaleValue("3月(回款额)"), SqlStorageType.SqlDecimal);
header.AddChild("XFourMonth", new LocaleValue("4月(销售额)"), SqlStorageType.SqlDecimal);
header.AddChild("HFourMonth", new LocaleValue("4月(回款额)"), SqlStorageType.SqlDecimal);
header.AddChild("XFiveMonth", new LocaleValue("5月(销售额)"), SqlStorageType.SqlDecimal);
header.AddChild("HFiveMonth", new LocaleValue("5月(回款额)"), SqlStorageType.SqlDecimal);
header.AddChild("XSixMonth", new LocaleValue("6月(销售额)"), SqlStorageType.SqlDecimal);
header.AddChild("HSixMonth", new LocaleValue("6月(回款额)"), SqlStorageType.SqlDecimal);
header.AddChild("XSevenMonth", new LocaleValue("7月(销售额)"), SqlStorageType.SqlDecimal);
header.AddChild("HSevenMonth", new LocaleValue("7月(回款额)"), SqlStorageType.SqlDecimal);
header.AddChild("XEightMonth", new LocaleValue("8月(销售额)"), SqlStorageType.SqlDecimal);
header.AddChild("HEightMonth", new LocaleValue("8月(回款额)"), SqlStorageType.SqlDecimal);
header.AddChild("XNineMonth", new LocaleValue("9月(销售额)"), SqlStorageType.SqlDecimal);
header.AddChild("HNineMonth", new LocaleValue("9月(回款额)"), SqlStorageType.SqlDecimal);
header.AddChild("XTenMonth", new LocaleValue("10月(销售额)"), SqlStorageType.SqlDecimal);
header.AddChild("HTenMonth", new LocaleValue("10月(回款额)"), SqlStorageType.SqlDecimal);
header.AddChild("XElevenMonth", new LocaleValue("11月(销售额)"), SqlStorageType.SqlDecimal);
header.AddChild("HElevenMonth", new LocaleValue("11月(回款额)"), SqlStorageType.SqlDecimal);
header.AddChild("XTwelveMonth", new LocaleValue("12月(销售额)"), SqlStorageType.SqlDecimal);
header.AddChild("HTwelveMonth", new LocaleValue("12月(回款额)"), SqlStorageType.SqlDecimal);
header.AddChild("XCumulative", new LocaleValue("累计销售额"), SqlStorageType.SqlDecimal);
header.AddChild("HCumulative", new LocaleValue("累计回款额"), SqlStorageType.SqlDecimal);
header.AddChild("UsualAlterAmount", new LocaleValue("往年订单变更金额"), SqlStorageType.SqlDecimal);
header.AddChild("ZhuhaiPilot", new LocaleValue("珠海派诺业绩合计"), SqlStorageType.SqlDecimal);
header.AddChild("SiNO", new LocaleValue("兴诺业绩"), SqlStorageType.SqlDecimal);
header.AddChild("SiNOUsualAlter", new LocaleValue("兴诺往年订单变更"), SqlStorageType.SqlDecimal);
header.AddChild("WuhanPilotThisYear", new LocaleValue("武汉派诺-当年业绩"), SqlStorageType.SqlDecimal);
header.AddChild("WuhanPilotUsualAlter", new LocaleValue("武汉派诺-往年订单变更"), SqlStorageType.SqlDecimal);
header.AddChild("Discovery", new LocaleValue("碳索业绩"), SqlStorageType.SqlDecimal);
header.AddChild("HongKongPilot", new LocaleValue("香港派诺业绩"), SqlStorageType.SqlDecimal);
header.AddChild("HuaXiaYunLian", new LocaleValue("华夏云联业绩"), SqlStorageType.SqlDecimal);
header.AddChild("PilotSumAmount", new LocaleValue("派诺集团最终业绩合计金额"), SqlStorageType.SqlDecimal);
header.AddChild("SBU", new LocaleValue("SBU"), SqlStorageType.Sqlvarchar);
header.AddChild("DetailArea", new LocaleValue("明细区域"), SqlStorageType.Sqlvarchar);
foreach (var item in header.GetChilds())
{
item.Width = 160;
}
return header;
}
/// <summary>
/// 显示报表数据
/// </summary>
/// <param name="filter"></param>
/// <param name="tableName"></param>
public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
{
DynamicObject customFilter = filter.FilterParameter.CustomFilter;
// 销售员列表
var salesperson = (customFilter["F_Salesperson"] as DynamicObjectCollection)?.Select(n => (n["F_Salesperson"] as DynamicObject)["msterID"].ToString()).ToList();
// 销售员
var salespersonString = salesperson == null ? "" : string.Join(",", salesperson);
// 组织列表
var organizationList = (customFilter["FZuZhi"] as DynamicObjectCollection)?.Select(n => (n["FZuZhi"] as DynamicObject)["ID"].ToString()).ToList();
// 组织
var organization = organizationList == null ? "" : (string.Join(",", organizationList));
// 开始日期
string fStrartDate = customFilter["FStrartDate"]?.ToString();
// 结束日期
string fEndDate = customFilter["FEndDate"]?.ToString();
// 审核开始日期
string fSDate = customFilter["FSDate"]?.ToString();
// 审核结束日期
string fEDate = customFilter["FEDate"]?.ToString();
// 下单时间
string fDate = customFilter["F_Date"]?.ToString();
int year = Convert.ToInt32(fDate.Split('-')[0]);
base.BuilderReportSqlAndTempTable(filter, tableName);
string sql = string.Format(@"/*dialect*/
Select
CASE WHEN ISNULL(W4.FNAME,'') = '' THEN W1.FNAME
ELSE W4.FNAME END as 'Salesperson', --销售员
CASE WHEN Month(D.FDATE)= 1 AND YEAR(D.FDATE)= {0} AND ISNULL(W3.FSHAREAMOUNT,-1)!=-1
THEN ISNULL(W3.FSHAREAMOUNT,0)
WHEN Month(D.FDATE)= 1 AND YEAR(D.FDATE)= {0} THEN ISNULL(DD.FBILLALLAMOUNT_LC,0)
ELSE 0
END as 'XOneMonth', --> 一月销售额
CASE WHEN MONTH(D.FDATE) = 1 AND YEAR(D.FDATE)= {0}
THEN ISNULL(E.FALLAMOUNT,0)
ELSE 0
END as 'HOneMonth', --> 一月回款额
CASE WHEN Month(D.FDATE)= 2 AND YEAR(D.FDATE)= {0} AND ISNULL(W3.FSHAREAMOUNT,-1)!=-1
THEN ISNULL(W3.FSHAREAMOUNT,0)
WHEN Month(D.FDATE)= 2 AND YEAR(D.FDATE)= {0} THEN ISNULL(DD.FBILLALLAMOUNT_LC,0)
ELSE 0
END as 'XTwoMonth', --> 二月销售额
CASE WHEN MONTH(D.FDATE) = 2 AND YEAR(D.FDATE)= {0}
THEN ISNULL(E.FALLAMOUNT,0)
ELSE 0
END as 'HTwoMonth', --> 二月回款额
CASE WHEN Month(D.FDATE)= 3 AND YEAR(D.FDATE)= {0} AND ISNULL(W3.FSHAREAMOUNT,-1)!=-1
THEN ISNULL(W3.FSHAREAMOUNT,0)
WHEN Month(D.FDATE)= 3 AND YEAR(D.FDATE)= {0} THEN ISNULL(DD.FBILLALLAMOUNT_LC,0)
ELSE 0
END as 'XThreeMonth', --> 三月销售额
CASE WHEN MONTH(D.FDATE) = 3 AND YEAR(D.FDATE)= {0}
THEN ISNULL(E.FALLAMOUNT,0)
ELSE 0
END as 'HThreeMonth', --> 三月回款额
CASE WHEN Month(D.FDATE)= 4 AND YEAR(D.FDATE)= {0} AND ISNULL(W3.FSHAREAMOUNT,-1)!=-1
THEN ISNULL(W3.FSHAREAMOUNT,0)
WHEN Month(D.FDATE)= 4 AND YEAR(D.FDATE)= {0} THEN ISNULL(DD.FBILLALLAMOUNT_LC,0)
ELSE 0
END as 'XFourMonth', --> 四月销售额
CASE WHEN MONTH(D.FDATE) = 4 AND YEAR(D.FDATE)= {0}
THEN ISNULL(E.FALLAMOUNT,0)
ELSE 0
END as 'HFourMonth', --> 四月回款额
CASE WHEN Month(D.FDATE)= 5 AND YEAR(D.FDATE)= {0} AND ISNULL(W3.FSHAREAMOUNT,-1)!=-1
THEN ISNULL(W3.FSHAREAMOUNT,0)
WHEN Month(D.FDATE)= 5 AND YEAR(D.FDATE)= {0} THEN ISNULL(DD.FBILLALLAMOUNT_LC,0)
ELSE 0
END as 'XFiveMonth', --> 五月销售额
CASE WHEN MONTH(D.FDATE) = 5 AND YEAR(D.FDATE)= {0}
THEN ISNULL(E.FALLAMOUNT,0)
ELSE 0
END as 'HFiveMonth', --> 五月回款额
CASE WHEN Month(D.FDATE)= 6 AND YEAR(D.FDATE)= {0} AND ISNULL(W3.FSHAREAMOUNT,-1)!=-1
THEN ISNULL(W3.FSHAREAMOUNT,0)
WHEN Month(D.FDATE)= 6 AND YEAR(D.FDATE)= {0} THEN ISNULL(DD.FBILLALLAMOUNT_LC,0)
ELSE 0
END as 'XSixMonth', --> 六月销售额
CASE WHEN MONTH(D.FDATE) = 6 AND YEAR(D.FDATE)= {0}
THEN ISNULL(E.FALLAMOUNT,0)
ELSE 0
END as 'HSixMonth', --> 六月回款额
CASE WHEN Month(D.FDATE)= 7 AND YEAR(D.FDATE)= {0} AND ISNULL(W3.FSHAREAMOUNT,-1)!=-1
THEN ISNULL(W3.FSHAREAMOUNT,0)
WHEN Month(D.FDATE)= 7 AND YEAR(D.FDATE)= {0} THEN ISNULL(DD.FBILLALLAMOUNT_LC,0)
ELSE 0
END as 'XSevenMonth', --> 七月销售额
CASE WHEN MONTH(D.FDATE) = 7 AND YEAR(D.FDATE)= {0}
THEN ISNULL(E.FALLAMOUNT,0)
ELSE 0
END as 'HSevenMonth', --> 七月回款额
CASE WHEN Month(D.FDATE)= 8 AND YEAR(D.FDATE)= {0} AND ISNULL(W3.FSHAREAMOUNT,-1)!=-1
THEN ISNULL(W3.FSHAREAMOUNT,0)
WHEN Month(D.FDATE)= 8 AND YEAR(D.FDATE)= {0} THEN ISNULL(DD.FBILLALLAMOUNT_LC,0)
ELSE 0
END as 'XEightMonth', --> 八月销售额
CASE WHEN MONTH(D.FDATE) = 8 AND YEAR(D.FDATE)= {0}
THEN ISNULL(E.FALLAMOUNT,0)
ELSE 0
END as 'HEightMonth', --> 八月回款额
CASE WHEN Month(D.FDATE)= 9 AND YEAR(D.FDATE)= {0} AND ISNULL(W3.FSHAREAMOUNT,-1)!=-1
THEN ISNULL(W3.FSHAREAMOUNT,0)
WHEN Month(D.FDATE)= 9 AND YEAR(D.FDATE)= {0} THEN ISNULL(DD.FBILLALLAMOUNT_LC,0)
ELSE 0
END as 'XNineMonth', --> 九月销售额
CASE WHEN MONTH(D.FDATE) = 9 AND YEAR(D.FDATE)= {0}
THEN ISNULL(E.FALLAMOUNT,0)
ELSE 0
END as 'HNineMonth', --> 九月回款额
CASE WHEN Month(D.FDATE)= 10 AND YEAR(D.FDATE)= {0} AND ISNULL(W3.FSHAREAMOUNT,-1)!=-1
THEN ISNULL(W3.FSHAREAMOUNT,0)
WHEN Month(D.FDATE)= 10 AND YEAR(D.FDATE)= {0} THEN ISNULL(DD.FBILLALLAMOUNT_LC,0)
ELSE 0
END as 'XTenMonth', --> 十月销售额
CASE WHEN MONTH(D.FDATE) = 10 AND YEAR(D.FDATE)= {0}
THEN ISNULL(E.FALLAMOUNT,0)
ELSE 0
END as 'HTenMonth', --> 十月回款额
CASE WHEN Month(D.FDATE)= 11 AND YEAR(D.FDATE)= {0} AND ISNULL(W3.FSHAREAMOUNT,-1)!=-1
THEN ISNULL(W3.FSHAREAMOUNT,0)
WHEN Month(D.FDATE)= 11 AND YEAR(D.FDATE)= {0} THEN ISNULL(DD.FBILLALLAMOUNT_LC,0)
ELSE 0
END as 'XElevenMonth', --> 十一月销售额
CASE WHEN MONTH(D.FDATE) = 11 AND YEAR(D.FDATE)= {0}
THEN ISNULL(E.FALLAMOUNT,0)
ELSE 0
END as 'HElevenMonth', --> 十一月回款额
CASE WHEN Month(D.FDATE)= 12 AND YEAR(D.FDATE)= {0} AND ISNULL(W3.FSHAREAMOUNT,-1)!=-1
THEN ISNULL(W3.FSHAREAMOUNT,0)
WHEN Month(D.FDATE)= 12 AND YEAR(D.FDATE)= {0} THEN ISNULL(DD.FBILLALLAMOUNT_LC,0)
ELSE 0
END as 'XTwelveMonth', --> 十二月销售额
CASE WHEN MONTH(D.FDATE) = 12 AND YEAR(D.FDATE)= {0}
THEN ISNULL(E.FALLAMOUNT,0)
ELSE 0
END as 'HTwelveMonth', --> 十二月回款额
CASE WHEN YEAR(D.FDATE)= {0} AND ISNULL(W3.FSHAREAMOUNT,-1)!=-1
THEN ISNULL(W3.FSHAREAMOUNT,0)
WHEN YEAR(D.FDATE)= {0} THEN ISNULL(DD.FBILLALLAMOUNT_LC,0)
ELSE 0
END as 'XCumulative', --> 累计销售额
CASE WHEN YEAR(D.FDATE)= {0}
THEN ISNULL(E.FALLAMOUNT,0)
ELSE 0
END as 'HCumulative', --> 累计回款额
CASE WHEN YEAR(D.FDATE) < {0} AND D.FSalerId = D.FSALERID
THEN
ISNULL(((SELECT
CAST(JSON_VALUE(CAST(FJSONDATA AS NVARCHAR(MAX)), '$.SaleOrderFinance[0].BillAllAmount_LC') as decimal(23,10) ) AS FPrice
From T_SCM_BILLCHANGEVERSIONS
WHere FVERSION =
(
Select MAX(FVERSION) as FVERSION From T_SCM_BILLCHANGEVERSIONS
WHERE
FFORMID = 'SAL_SaleOrder'
AND FBILLNO = D.FBILLNO
)
AND FFORMID = 'SAL_SaleOrder'
AND FBILLNO = D.FBILLNO)
-
(SELECT
CAST(JSON_VALUE(CAST(FJSONDATA AS NVARCHAR(MAX)), '$.SaleOrderFinance[0].BillAllAmount_LC') as decimal(23,10) ) AS FPrice
From T_SCM_BILLCHANGEVERSIONS
WHere FVERSION =
(
Select MIN(FVERSION) as FVERSION From T_SCM_BILLCHANGEVERSIONS
WHERE
FFORMID = 'SAL_SaleOrder'
AND FBILLNO = D.FBILLNO
)
AND FFORMID = 'SAL_SaleOrder'
AND FBILLNO = D.FBILLNO)),0)
ELSE 0
END as 'UsualAlterAmount', --> 往年订单变更金额
CASE WHEN D.FSaleOrgId = 100302 AND ISNULL(W3.FSHAREAMOUNT,-1)!=-1
THEN ISNULL(W3.FSHAREAMOUNT,0)
WHEN YEAR(D.FDATE)= {0} THEN ISNULL(DD.FBILLALLAMOUNT_LC,0)
ELSE 0
END as 'ZhuhaiPilot', --> 珠海派诺业绩合计
CASE WHEN D.FSaleOrgId = 100303 AND ISNULL(W3.FSHAREAMOUNT,-1)!=-1
THEN ISNULL(W3.FSHAREAMOUNT,0)
WHEN YEAR(D.FDATE)= {0} THEN ISNULL(DD.FBILLALLAMOUNT_LC,0)
ELSE 0
END as 'SiNO', --> 兴诺合计
CASE WHEN YEAR(D.FDATE) < {0} AND D.FSalerId = D.FSALERID AND D.FSaleOrgId = 100303 --兴诺
THEN
ISNULL(((SELECT
CAST(JSON_VALUE(CAST(FJSONDATA AS NVARCHAR(MAX)), '$.SaleOrderFinance[0].BillAllAmount_LC') as decimal(23,10) ) AS FPrice
From T_SCM_BILLCHANGEVERSIONS
WHere FVERSION =
(
Select MAX(FVERSION) as FVERSION From T_SCM_BILLCHANGEVERSIONS
WHERE
FFORMID = 'SAL_SaleOrder'
AND FBILLNO = D.FBILLNO
)
AND FFORMID = 'SAL_SaleOrder'
AND FBILLNO = D.FBILLNO)
-
(SELECT
CAST(JSON_VALUE(CAST(FJSONDATA AS NVARCHAR(MAX)), '$.SaleOrderFinance[0].BillAllAmount_LC') as decimal(23,10) ) AS FPrice
From T_SCM_BILLCHANGEVERSIONS
WHere FVERSION =
(
Select MIN(FVERSION) as FVERSION From T_SCM_BILLCHANGEVERSIONS
WHERE
FFORMID = 'SAL_SaleOrder'
AND FBILLNO = D.FBILLNO
)
AND FFORMID = 'SAL_SaleOrder'
AND FBILLNO = D.FBILLNO)),0)
ELSE 0
END as 'SiNOUsualAlter', --> 兴诺往年订单变更
CASE WHEN D.FSaleOrgId = 100305 AND YEAR(D.FDATE) = {0} AND ISNULL(W3.FSHAREAMOUNT,-1)!=-1
THEN ISNULL(W3.FSHAREAMOUNT,0)
WHEN YEAR(D.FDATE)= {0} THEN ISNULL(DD.FBILLALLAMOUNT_LC,0)
ELSE 0
END as 'WuhanPilotThisYear', --> 武汉派诺-当年业绩
CASE WHEN YEAR(D.FDATE) < {0} AND D.FSalerId = D.FSALERID AND D.FSaleOrgId = 100305 --武汉派诺
THEN
ISNULL(((SELECT
CAST(JSON_VALUE(CAST(FJSONDATA AS NVARCHAR(MAX)), '$.SaleOrderFinance[0].BillAllAmount_LC') as decimal(23,10) ) AS FPrice
From T_SCM_BILLCHANGEVERSIONS
WHere FVERSION =
(
Select MAX(FVERSION) as FVERSION From T_SCM_BILLCHANGEVERSIONS
WHERE
FFORMID = 'SAL_SaleOrder'
AND FBILLNO = D.FBILLNO
)
AND FFORMID = 'SAL_SaleOrder'
AND FBILLNO = D.FBILLNO)
-
(SELECT
CAST(JSON_VALUE(CAST(FJSONDATA AS NVARCHAR(MAX)), '$.SaleOrderFinance[0].BillAllAmount_LC') as decimal(23,10) ) AS FPrice
From T_SCM_BILLCHANGEVERSIONS
WHere FVERSION =
(
Select MIN(FVERSION) as FVERSION From T_SCM_BILLCHANGEVERSIONS
WHERE
FFORMID = 'SAL_SaleOrder'
AND FBILLNO = D.FBILLNO
)
AND FFORMID = 'SAL_SaleOrder'
AND FBILLNO = D.FBILLNO)),0)
ELSE 0
END as 'WuhanPilotUsualAlter', --> 武汉派诺-往年订单变更
CASE WHEN D.FSaleOrgId = 438223 AND ISNULL(W3.FSHAREAMOUNT,-1)!=-1
THEN ISNULL(W3.FSHAREAMOUNT,0)
WHEN YEAR(D.FDATE)= {0} THEN ISNULL(DD.FBILLALLAMOUNT_LC,0)
ELSE 0
END as 'Discovery', --> 碳索业绩
CASE WHEN D.FSaleOrgId = 438224 AND YEAR(D.FDATE) = {0} AND ISNULL(W3.FSHAREAMOUNT,-1)!=-1
THEN ISNULL(W3.FSHAREAMOUNT,0)
WHEN YEAR(D.FDATE)= {0} THEN ISNULL(DD.FBILLALLAMOUNT_LC,0)
ELSE 0
END as 'HongKongPilot', --> 香港派诺业绩
CASE WHEN D.FSaleOrgId = 533896 AND ISNULL(W3.FSHAREAMOUNT,-1)!=-1
THEN ISNULL(W3.FSHAREAMOUNT,0)
WHEN YEAR(D.FDATE)= {0} THEN ISNULL(DD.FBILLALLAMOUNT_LC,0)
ELSE 0
END as 'HuaXiaYunLian', --> 华夏云联业绩
CASE WHEN ISNULL(W3.FSHAREAMOUNT,-1)!=-1
THEN ISNULL(W3.FSHAREAMOUNT,0)
WHEN YEAR(D.FDATE)= {0} THEN ISNULL(DD.FBILLALLAMOUNT_LC,0)
ELSE 0
END as 'PilotSumAmount', --> 派诺集团最终业绩合计金额
ISNULL(A.区域,'') as 'SBU',
ISNULL(A.明细区域,'') as 'DetailArea'
INTO #TempTable1
From
T_SAL_ORDER D --销售订单
LEFT JOIN T_SAL_ORDERFIN DD on D.FID = DD.FID
LEFT JOIN
V_BD_SALESMAN_L W1 on W1.fid = D.FSALERID
LEFT JOIN
T_PerformanceSharing W2 on W2.FSOURCEBILLNO = D.FBILLNO
LEFT JOIN
T_PerformanceSharingEntry W3 on W2.FID = W3.FID
LEFT JOIN
V_BD_SALESMAN_L W4 on W3.FSALEID = W4.fid
LEFT JOIN
ERPTOHR.HYHRV3.dbo.v_erp_empinfo A on W1.FNAME = A.名称
LEFT JOIN
(Select FNumber,FENTRYID From T_BAS_ASSISTANTDATAENTRY Where FID = '670cc977263353') W8 --合同类型
on W8.FENTRYID = D.F_ORDERCATEGORY
LEFT JOIN
(Select
a1.FORDERNUMBER,
SUM(a1.FALLAMOUNT) as 'FALLAMOUNT'
From
T_AR_RECEIVABLEENTRY a1
JOIN
T_AR_RECEIVABLE a2
on a1.FID = a2.FID
Where a1.FORDERNUMBER != '' AND a2.FSETACCOUNTTYPE = 3
GROUP BY a1.FORDERNUMBER) E
on D.FBILLNO = E.FORDERNUMBER
-- 条件
Where D.FDocumentStatus = 'C' AND W8.FNumber != 'Z' --AND D.FID in (Select * From #TABLEXYX)
", year, year - 1, tableNameView);
if (!string.IsNullOrEmpty(salespersonString))
{
sql += string.Format(@" AND (W3.FSALEID in ({0}) or D.FSALERID in ({0}))", salespersonString);
}
if (!string.IsNullOrEmpty(organization))
{
sql += string.Format(@" AND D.FSALEORGID in ({0})", organization);
}
if (!string.IsNullOrEmpty(fStrartDate))
{
sql += string.Format(@" AND D.FDate >= '{0}'", fStrartDate);
}
if (!string.IsNullOrEmpty(fEndDate))
{
sql += string.Format(@" AND D.FDate <= '{0}'", fEndDate);
}
sql += string.Format(@";");
sql += string.Format(@"/*dialect*/
Select
Salesperson,
ISNULL(SUM(XOneMonth),0) as 'XOneMonth',
ISNULL(SUM(HOneMonth),0) as 'HOneMonth',
ISNULL(SUM(XTwoMonth),0) as 'XTwoMonth',
ISNULL(SUM(HTwoMonth),0) as 'HTwoMonth',
ISNULL(SUM(XThreeMonth),0) as 'XThreeMonth',
ISNULL(SUM(HThreeMonth),0) as 'HThreeMonth',
ISNULL(SUM(XFourMonth),0) as 'XFourMonth',
ISNULL(SUM(HFourMonth),0) as 'HFourMonth',
ISNULL(SUM(XFiveMonth),0) as 'XFiveMonth',
ISNULL(SUM(HFiveMonth),0) as 'HFiveMonth',
ISNULL(SUM(XSixMonth),0) as 'XSixMonth',
ISNULL(SUM(HSixMonth),0) as 'HSixMonth',
ISNULL(SUM(XSevenMonth),0) as 'XSevenMonth',
ISNULL(SUM(HSevenMonth),0) as 'HSevenMonth',
ISNULL(SUM(XEightMonth),0) as 'XEightMonth',
ISNULL(SUM(HEightMonth),0) as 'HEightMonth',
ISNULL(SUM(XNineMonth),0) as 'XNineMonth',
ISNULL(SUM(HNineMonth),0) as 'HNineMonth',
ISNULL(SUM(XTenMonth),0) as 'XTenMonth',
ISNULL(SUM(HTenMonth),0) as 'HTenMonth',
ISNULL(SUM(XElevenMonth),0) as 'XElevenMonth',
ISNULL(SUM(HElevenMonth),0) as 'HElevenMonth',
ISNULL(SUM(XTwelveMonth),0) as 'XTwelveMonth',
ISNULL(SUM(HTwelveMonth),0) as 'HTwelveMonth',
ISNULL(SUM(XCumulative),0) as 'XCumulative',
ISNULL(SUM(HCumulative),0) as 'HCumulative',
ISNULL(SUM(UsualAlterAmount),0) as 'UsualAlterAmount',
ISNULL(SUM(ZhuhaiPilot),0) as 'ZhuhaiPilot',
ISNULL(SUM(SiNO),0) as 'SiNO',
ISNULL(SUM(SiNOUsualAlter),0) as 'SiNOUsualAlter',
ISNULL(SUM(WuhanPilotThisYear),0) as 'WuhanPilotThisYear',
ISNULL(SUM(WuhanPilotUsualAlter),0) as 'WuhanPilotUsualAlter',
ISNULL(SUM(Discovery),0) as 'Discovery',
ISNULL(SUM(HongKongPilot),0) as 'HongKongPilot',
ISNULL(SUM(HuaXiaYunLian),0) as 'HuaXiaYunLian',
ISNULL(SUM(PilotSumAmount),0) as 'PilotSumAmount',
SBU,
DetailArea,
0 Sort
Into #TempTable2
From
#TempTable1
Group by Salesperson,SBU,DetailArea;");
sql += string.Format(@"/*dialect*/
Select
*
INTO #TempTable3
From (SELECT * FROM #TempTable2
UNION ALL
Select
(t1.SBU+'小计'),
ISNULL(SUM(t1.XOneMonth),0),
ISNULL(SUM(t1.HOneMonth),0),
ISNULL(SUM(t1.XTwoMonth),0),
ISNULL(SUM(t1.HTwoMonth),0),
ISNULL(SUM(t1.XThreeMonth),0),
ISNULL(SUM(t1.HThreeMonth),0),
ISNULL(SUM(t1.XFourMonth),0),
ISNULL(SUM(t1.HFourMonth),0),
ISNULL(SUM(t1.XFiveMonth),0),
ISNULL(SUM(t1.HFiveMonth),0),
ISNULL(SUM(t1.XSixMonth),0),
ISNULL(SUM(t1.HSixMonth),0),
ISNULL(SUM(t1.XSevenMonth),0),
ISNULL(SUM(t1.HSevenMonth),0),
ISNULL(SUM(t1.XEightMonth),0),
ISNULL(SUM(t1.HEightMonth),0),
ISNULL(SUM(t1.XNineMonth),0),
ISNULL(SUM(t1.HNineMonth),0),
ISNULL(SUM(t1.XTenMonth),0),
ISNULL(SUM(t1.HTenMonth),0),
ISNULL(SUM(t1.XElevenMonth),0),
ISNULL(SUM(t1.HElevenMonth),0),
ISNULL(SUM(t1.XTwelveMonth),0),
ISNULL(SUM(t1.HTwelveMonth),0),
ISNULL(SUM(t1.XCumulative),0),
ISNULL(SUM(t1.HCumulative),0),
ISNULL(SUM(t1.UsualAlterAmount),0),
ISNULL(SUM(t1.ZhuhaiPilot),0),
ISNULL(SUM(t1.SiNO),0),
ISNULL(SUM(t1.SiNOUsualAlter),0),
ISNULL(SUM(t1.WuhanPilotThisYear),0),
ISNULL(SUM(t1.WuhanPilotUsualAlter),0),
ISNULL(SUM(t1.Discovery),0),
ISNULL(SUM(t1.HongKongPilot),0),
ISNULL(SUM(t1.HuaXiaYunLian),0),
ISNULL(SUM(t1.PilotSumAmount),0),
t1.SBU,
'',
1 Sort
From #TempTable2 t1 GROUP BY t1.SBU) t1
ORDER BY t1.SBU,Sort;
SELECT
*
INTO #TempTable4
FROM #TempTable3
UNION ALL
Select
'事业部+海外+市场部+EMT/售后团队+产品线+市场部+商运部-小计' as 'Salesperson',
ISNULL(SUM(XOneMonth),0) as 'XOneMonth',
ISNULL(SUM(HOneMonth),0) as 'HOneMonth',
ISNULL(SUM(XTwoMonth),0) as 'XTwoMonth',
ISNULL(SUM(HTwoMonth),0) as 'HTwoMonth',
ISNULL(SUM(XThreeMonth),0) as 'XThreeMonth',
ISNULL(SUM(HThreeMonth),0) as 'HThreeMonth',
ISNULL(SUM(XFourMonth),0) as 'XFourMonth',
ISNULL(SUM(HFourMonth),0) as 'HFourMonth',
ISNULL(SUM(XFiveMonth),0) as 'XFiveMonth',
ISNULL(SUM(HFiveMonth),0) as 'HFiveMonth',
ISNULL(SUM(XSixMonth),0) as 'XSixMonth',
ISNULL(SUM(HSixMonth),0) as 'HSixMonth',
ISNULL(SUM(XSevenMonth),0) as 'XSevenMonth',
ISNULL(SUM(HSevenMonth),0) as 'HSevenMonth',
ISNULL(SUM(XEightMonth),0) as 'XEightMonth',
ISNULL(SUM(HEightMonth),0) as 'HEightMonth',
ISNULL(SUM(XNineMonth),0) as 'XNineMonth',
ISNULL(SUM(HNineMonth),0) as 'HNineMonth',
ISNULL(SUM(XTenMonth),0) as 'XTenMonth',
ISNULL(SUM(HTenMonth),0) as 'HTenMonth',
ISNULL(SUM(XElevenMonth),0) as 'XElevenMonth',
ISNULL(SUM(HElevenMonth),0) as 'HElevenMonth',
ISNULL(SUM(XTwelveMonth),0) as 'XTwelveMonth',
ISNULL(SUM(HTwelveMonth),0) as 'HTwelveMonth',
ISNULL(SUM(XCumulative),0) as 'XCumulative',
ISNULL(SUM(HCumulative),0) as 'HCumulative',
ISNULL(SUM(UsualAlterAmount),0) as 'UsualAlterAmount',
ISNULL(SUM(ZhuhaiPilot),0) as 'ZhuhaiPilot',
ISNULL(SUM(SiNO),0) as 'SiNO',
ISNULL(SUM(SiNOUsualAlter),0) as 'SiNOUsualAlter',
ISNULL(SUM(WuhanPilotThisYear),0) as 'WuhanPilotThisYear',
ISNULL(SUM(WuhanPilotUsualAlter),0) as 'WuhanPilotUsualAlter',
ISNULL(SUM(Discovery),0) as 'Discovery',
ISNULL(SUM(HongKongPilot),0) as 'HongKongPilot',
ISNULL(SUM(HuaXiaYunLian),0) as 'HuaXiaYunLian',
ISNULL(SUM(PilotSumAmount),0) as 'PilotSumAmount',
'',
'',
1 Sort
From
#TempTable2
Where SBU in ('事业部','海外','市场部','EMT/售后团队','产品线','市场部','商运部')
UNION ALL
Select
'派诺集团合计(行业线+SBU+事业部+海外+市场部+EMT团队+产品线+市场部+其他+各子公司)' as 'Salesperson',
ISNULL(SUM(XOneMonth),0) as 'XOneMonth',
ISNULL(SUM(HOneMonth),0) as 'HOneMonth',
ISNULL(SUM(XTwoMonth),0) as 'XTwoMonth',
ISNULL(SUM(HTwoMonth),0) as 'HTwoMonth',
ISNULL(SUM(XThreeMonth),0) as 'XThreeMonth',
ISNULL(SUM(HThreeMonth),0) as 'HThreeMonth',
ISNULL(SUM(XFourMonth),0) as 'XFourMonth',
ISNULL(SUM(HFourMonth),0) as 'HFourMonth',
ISNULL(SUM(XFiveMonth),0) as 'XFiveMonth',
ISNULL(SUM(HFiveMonth),0) as 'HFiveMonth',
ISNULL(SUM(XSixMonth),0) as 'XSixMonth',
ISNULL(SUM(HSixMonth),0) as 'HSixMonth',
ISNULL(SUM(XSevenMonth),0) as 'XSevenMonth',
ISNULL(SUM(HSevenMonth),0) as 'HSevenMonth',
ISNULL(SUM(XEightMonth),0) as 'XEightMonth',
ISNULL(SUM(HEightMonth),0) as 'HEightMonth',
ISNULL(SUM(XNineMonth),0) as 'XNineMonth',
ISNULL(SUM(HNineMonth),0) as 'HNineMonth',
ISNULL(SUM(XTenMonth),0) as 'XTenMonth',
ISNULL(SUM(HTenMonth),0) as 'HTenMonth',
ISNULL(SUM(XElevenMonth),0) as 'XElevenMonth',
ISNULL(SUM(HElevenMonth),0) as 'HElevenMonth',
ISNULL(SUM(XTwelveMonth),0) as 'XTwelveMonth',
ISNULL(SUM(HTwelveMonth),0) as 'HTwelveMonth',
ISNULL(SUM(XCumulative),0) as 'XCumulative',
ISNULL(SUM(HCumulative),0) as 'HCumulative',
ISNULL(SUM(UsualAlterAmount),0) as 'UsualAlterAmount',
ISNULL(SUM(ZhuhaiPilot),0) as 'ZhuhaiPilot',
ISNULL(SUM(SiNO),0) as 'SiNO',
ISNULL(SUM(SiNOUsualAlter),0) as 'SiNOUsualAlter',
ISNULL(SUM(WuhanPilotThisYear),0) as 'WuhanPilotThisYear',
ISNULL(SUM(WuhanPilotUsualAlter),0) as 'WuhanPilotUsualAlter',
ISNULL(SUM(Discovery),0) as 'Discovery',
ISNULL(SUM(HongKongPilot),0) as 'HongKongPilot',
ISNULL(SUM(HuaXiaYunLian),0) as 'HuaXiaYunLian',
ISNULL(SUM(PilotSumAmount),0) as 'PilotSumAmount',
'',
'',
2 Sort
From
#TempTable2;");
sql += string.Format(@"/*dialect*/
Select
B.FNAME,
ISNULL((Select SUM(a2.FBILLALLAMOUNT_LC) From T_SAL_ORDER a1 JOIN T_SAL_ORDERFIN a2 on a1.FID = a2.FID Where a1.FDocumentStatus = 'C'
AND a1.FID = A.FID AND Month(A.FDATE)=1 AND YEAR(A.FDATE)={0}),0)
as 'XOneMonth', --> 一月销售额
CASE WHEN MONTH(A.FDATE) = 1
THEN ISNULL(C.FALLAMOUNT,0)
ELSE 0
END as 'HOneMonth', --> 一月回款额
ISNULL((Select SUM(a2.FBILLALLAMOUNT_LC) From T_SAL_ORDER a1 JOIN T_SAL_ORDERFIN a2 on a1.FID = a2.FID Where a1.FDocumentStatus = 'C'
AND a1.FID = A.FID AND Month(A.FDATE)=2 AND YEAR(A.FDATE)={0}),0)
as 'XTwoMonth', --> 二月销售额
CASE WHEN MONTH(A.FDATE) = 2
THEN ISNULL(C.FALLAMOUNT,0)
ELSE 0
END as 'HTwoMonth', --> 二月回款额
ISNULL((Select SUM(a2.FBILLALLAMOUNT_LC) From T_SAL_ORDER a1 JOIN T_SAL_ORDERFIN a2 on a1.FID = a2.FID Where a1.FDocumentStatus = 'C'
AND a1.FID = A.FID AND Month(A.FDATE)=3 AND YEAR(A.FDATE)={0}),0)
as 'XThreeMonth', --> 三月销售额
CASE WHEN MONTH(A.FDATE) = 3
THEN ISNULL(C.FALLAMOUNT,0)
ELSE 0
END as 'HThreeMonth', --> 三月回款额
ISNULL((Select SUM(a2.FBILLALLAMOUNT_LC) From T_SAL_ORDER a1 JOIN T_SAL_ORDERFIN a2 on a1.FID = a2.FID Where a1.FDocumentStatus = 'C'
AND a1.FID = A.FID AND Month(A.FDATE)=4 AND YEAR(A.FDATE)={0}),0)
as 'XFourMonth', --> 四月销售额
CASE WHEN MONTH(A.FDATE) = 4
THEN ISNULL(C.FALLAMOUNT,0)
ELSE 0
END as 'HFourMonth', --> 四月回款额
ISNULL((Select SUM(a2.FBILLALLAMOUNT_LC) From T_SAL_ORDER a1 JOIN T_SAL_ORDERFIN a2 on a1.FID = a2.FID Where a1.FDocumentStatus = 'C'
AND a1.FID = A.FID AND Month(A.FDATE)=5 AND YEAR(A.FDATE)={0}),0)
as 'XFiveMonth', --> 五月销售额
CASE WHEN MONTH(A.FDATE) = 5
THEN ISNULL(C.FALLAMOUNT,0)
ELSE 0
END as 'HFiveMonth', --> 五月回款额
ISNULL((Select SUM(a2.FBILLALLAMOUNT_LC) From T_SAL_ORDER a1 JOIN T_SAL_ORDERFIN a2 on a1.FID = a2.FID Where a1.FDocumentStatus = 'C'
AND a1.FID = A.FID AND Month(A.FDATE)=6 AND YEAR(A.FDATE)={0}),0)
as 'XSixMonth', --> 六月销售额
CASE WHEN MONTH(A.FDATE) = 6
THEN ISNULL(C.FALLAMOUNT,0)
ELSE 0
END as 'HSixMonth', --> 六月回款额
ISNULL((Select SUM(a2.FBILLALLAMOUNT_LC) From T_SAL_ORDER a1 JOIN T_SAL_ORDERFIN a2 on a1.FID = a2.FID Where a1.FDocumentStatus = 'C'
AND a1.FID = A.FID AND Month(A.FDATE)=7 AND YEAR(A.FDATE)={0}),0)
as 'XSevenMonth', --> 七月销售额
CASE WHEN MONTH(A.FDATE) = 7
THEN ISNULL(C.FALLAMOUNT,0)
ELSE 0
END as 'HSevenMonth', --> 七月回款额
ISNULL((Select SUM(a2.FBILLALLAMOUNT_LC) From T_SAL_ORDER a1 JOIN T_SAL_ORDERFIN a2 on a1.FID = a2.FID Where a1.FDocumentStatus = 'C'
AND a1.FID = A.FID AND Month(A.FDATE)=8 AND YEAR(A.FDATE)={0}),0)
as 'XEightMonth', --> 八月销售额
CASE WHEN MONTH(A.FDATE) = 8
THEN ISNULL(C.FALLAMOUNT,0)
ELSE 0
END as 'HEightMonth', --> 八月回款额
ISNULL((Select SUM(a2.FBILLALLAMOUNT_LC) From T_SAL_ORDER a1 JOIN T_SAL_ORDERFIN a2 on a1.FID = a2.FID Where a1.FDocumentStatus = 'C'
AND a1.FID = A.FID AND Month(A.FDATE)=9 AND YEAR(A.FDATE)={0}),0)
as 'XNineMonth', --> 九月销售额
CASE WHEN MONTH(A.FDATE) = 9
THEN ISNULL(C.FALLAMOUNT,0)
ELSE 0
END as 'HNineMonth', --> 九月回款额
ISNULL((Select SUM(a2.FBILLALLAMOUNT_LC) From T_SAL_ORDER a1 JOIN T_SAL_ORDERFIN a2 on a1.FID = a2.FID Where a1.FDocumentStatus = 'C'
AND a1.FID = A.FID AND Month(A.FDATE)=10 AND YEAR(A.FDATE)={0}),0)
as 'XTenMonth', --> 十月销售额
CASE WHEN MONTH(A.FDATE) = 10
THEN ISNULL(C.FALLAMOUNT,0)
ELSE 0
END as 'HTenMonth', --> 十月回款额
ISNULL((Select SUM(a2.FBILLALLAMOUNT_LC) From T_SAL_ORDER a1 JOIN T_SAL_ORDERFIN a2 on a1.FID = a2.FID Where a1.FDocumentStatus = 'C'
AND a1.FID = A.FID AND Month(A.FDATE)=11 AND YEAR(A.FDATE)={0}),0)
as 'XElevenMonth', --> 十一月销售额
CASE WHEN MONTH(A.FDATE) = 11
THEN ISNULL(C.FALLAMOUNT,0)
ELSE 0
END as 'HElevenMonth', --> 十一月回款额
ISNULL((Select SUM(a2.FBILLALLAMOUNT_LC) From T_SAL_ORDER a1 JOIN T_SAL_ORDERFIN a2 on a1.FID = a2.FID Where a1.FDocumentStatus = 'C'
AND a1.FID = A.FID AND Month(A.FDATE)=12 AND YEAR(A.FDATE)={0}),0)
as 'XTwelveMonth', --> 十二月销售额
CASE WHEN MONTH(A.FDATE) = 12
THEN ISNULL(C.FALLAMOUNT,0)
ELSE 0
END as 'HTwelveMonth', --> 十二月回款额
ISNULL((Select SUM(a2.FBILLALLAMOUNT_LC) From T_SAL_ORDER a1 JOIN T_SAL_ORDERFIN a2 on a1.FID = a2.FID Where a1.FDocumentStatus = 'C'
AND a1.FID = A.FID AND YEAR(A.FDATE)={0}),0)
as 'XCumulative', --> 累计销售额
ISNULL(C.FALLAMOUNT,0) as 'HCumulative', --> 累计回款额
CASE WHEN YEAR(A.FDATE) < YEAR(GETDATE())
THEN
ISNULL(((SELECT
CAST(JSON_VALUE(CAST(FJSONDATA AS NVARCHAR(MAX)), '$.SaleOrderFinance[0].BillAllAmount_LC') as decimal(23,10) ) AS FPrice
From T_SCM_BILLCHANGEVERSIONS
WHere FVERSION =
(
Select MAX(FVERSION) as FVERSION From T_SCM_BILLCHANGEVERSIONS
WHERE
FFORMID = 'SAL_SaleOrder'
AND FBILLNO = A.FBILLNO
)
AND FFORMID = 'SAL_SaleOrder'
AND FBILLNO = A.FBILLNO)
-
(SELECT
CAST(JSON_VALUE(CAST(FJSONDATA AS NVARCHAR(MAX)), '$.SaleOrderFinance[0].BillAllAmount_LC') as decimal(23,10) ) AS FPrice
From T_SCM_BILLCHANGEVERSIONS
WHere FVERSION =
(
Select MIN(FVERSION) as FVERSION From T_SCM_BILLCHANGEVERSIONS
WHERE
FFORMID = 'SAL_SaleOrder'
AND FBILLNO = A.FBILLNO
)
AND FFORMID = 'SAL_SaleOrder'
AND FBILLNO = A.FBILLNO)),0)
ELSE 0
END as 'UsualAlterAmount', --> 往年订单变更金额
ISNULL((Select SUM(a2.FBILLALLAMOUNT_LC) From T_SAL_ORDER a1 JOIN T_SAL_ORDERFIN a2 on a1.FID = a2.FID Where a1.FDocumentStatus = 'C'
AND a1.FID = A.FID AND A.FSaleOrgId = 100302),0)
as 'ZhuhaiPilot', --> 珠海派诺业绩合计
ISNULL((Select SUM(a2.FBILLALLAMOUNT_LC) From T_SAL_ORDER a1 JOIN T_SAL_ORDERFIN a2 on a1.FID = a2.FID Where a1.FDocumentStatus = 'C'
AND a1.FID = A.FID AND A.FSaleOrgId = 100303),0)
as 'SiNO', --> 兴诺合计
CASE WHEN YEAR(A.FDATE) < YEAR(GETDATE()) AND A.FSaleOrgId = 100303 --兴诺
THEN
ISNULL(((SELECT
CAST(JSON_VALUE(CAST(FJSONDATA AS NVARCHAR(MAX)), '$.SaleOrderFinance[0].BillAllAmount_LC') as decimal(23,10) ) AS FPrice
From T_SCM_BILLCHANGEVERSIONS
WHere FVERSION =
(
Select MAX(FVERSION) as FVERSION From T_SCM_BILLCHANGEVERSIONS
WHERE
FFORMID = 'SAL_SaleOrder'
AND FBILLNO = A.FBILLNO
)
AND FFORMID = 'SAL_SaleOrder'
AND FBILLNO = A.FBILLNO)
-
(SELECT
CAST(JSON_VALUE(CAST(FJSONDATA AS NVARCHAR(MAX)), '$.SaleOrderFinance[0].BillAllAmount_LC') as decimal(23,10) ) AS FPrice
From T_SCM_BILLCHANGEVERSIONS
WHere FVERSION =
(
Select MIN(FVERSION) as FVERSION From T_SCM_BILLCHANGEVERSIONS
WHERE
FFORMID = 'SAL_SaleOrder'
AND FBILLNO = A.FBILLNO
)
AND FFORMID = 'SAL_SaleOrder'
AND FBILLNO = A.FBILLNO)),0)
ELSE 0
END as 'SiNOUsualAlter', --> 兴诺往年订单变更
ISNULL((Select SUM(a2.FBILLALLAMOUNT_LC) From T_SAL_ORDER a1 JOIN T_SAL_ORDERFIN a2 on a1.FID = a2.FID Where a1.FDocumentStatus = 'C'
AND a1.FID = A.FID AND A.FSaleOrgId = 100305),0)
as 'WuhanPilotThisYear', --> 武汉派诺-当年业绩
CASE WHEN YEAR(A.FDATE) < YEAR(GETDATE()) AND A.FSaleOrgId = 100305 --武汉派诺
THEN
ISNULL(((SELECT
CAST(JSON_VALUE(CAST(FJSONDATA AS NVARCHAR(MAX)), '$.SaleOrderFinance[0].BillAllAmount_LC') as decimal(23,10) ) AS FPrice
From T_SCM_BILLCHANGEVERSIONS
WHere FVERSION =
(
Select MAX(FVERSION) as FVERSION From T_SCM_BILLCHANGEVERSIONS
WHERE
FFORMID = 'SAL_SaleOrder'
AND FBILLNO = A.FBILLNO
)
AND FFORMID = 'SAL_SaleOrder'
AND FBILLNO = A.FBILLNO)
-
(SELECT
CAST(JSON_VALUE(CAST(FJSONDATA AS NVARCHAR(MAX)), '$.SaleOrderFinance[0].BillAllAmount_LC') as decimal(23,10) ) AS FPrice
From T_SCM_BILLCHANGEVERSIONS
WHere FVERSION =
(
Select MIN(FVERSION) as FVERSION From T_SCM_BILLCHANGEVERSIONS
WHERE
FFORMID = 'SAL_SaleOrder'
AND FBILLNO = A.FBILLNO
)
AND FFORMID = 'SAL_SaleOrder'
AND FBILLNO = A.FBILLNO)),0)
ELSE 0
END as 'WuhanPilotUsualAlter', --> 武汉派诺-往年订单变更
ISNULL((Select SUM(a2.FBILLALLAMOUNT_LC) From T_SAL_ORDER a1 JOIN T_SAL_ORDERFIN a2 on a1.FID = a2.FID Where a1.FDocumentStatus = 'C'
AND a1.FID = A.FID AND A.FSaleOrgId = 438223),0)
as 'Discovery', --> 碳索业绩
ISNULL((Select SUM(a2.FBILLALLAMOUNT_LC) From T_SAL_ORDER a1 JOIN T_SAL_ORDERFIN a2 on a1.FID = a2.FID Where a1.FDocumentStatus = 'C'
AND a1.FID = A.FID AND A.FSaleOrgId = 438224),0)
as 'HongKongPilot', --> 香港派诺业绩
ISNULL((Select SUM(a2.FBILLALLAMOUNT_LC) From T_SAL_ORDER a1 JOIN T_SAL_ORDERFIN a2 on a1.FID = a2.FID Where a1.FDocumentStatus = 'C'
AND a1.FID = A.FID AND A.FSaleOrgId = 533896),0)
as 'HuaXiaYunLian', --> 华夏云联业绩
ISNULL((Select SUM(a2.FBILLALLAMOUNT_LC) From T_SAL_ORDER a1 JOIN T_SAL_ORDERFIN a2 on a1.FID = a2.FID Where a1.FDocumentStatus = 'C'
AND a1.FID = A.FID),0)
as 'PilotSumAmount', --> 派诺集团最终业绩合计金额
'' as 'SBU',
'' as 'DetailArea'
Into #TempTable5
From
T_SAL_ORDER A
Right JOIN
(Select a2.FNAME,a1.FORGID From
T_ORG_ORGANIZATIONS a1
JOIN
T_ORG_ORGANIZATIONS_L a2
on a1.FORGID = a2.FORGID
Where a2.FLOCALEID = 2052
AND a1.FDocumentStatus = 'C'
AND a2.FNAME != '总帐套') B
on A.FSaleOrgId = B.FORGID
AND A.FDocumentStatus = 'C'
AND A.FCancelStatus = 'A'
LEFT JOIN
(Select
a1.FORDERNUMBER,
SUM(a1.FALLAMOUNT) as 'FALLAMOUNT'
From
T_AR_RECEIVABLEENTRY a1
JOIN
T_AR_RECEIVABLE a2
on a1.FID = a2.FID
Where a1.FORDERNUMBER != '' AND a2.FSETACCOUNTTYPE = 3
GROUP BY a1.FORDERNUMBER) C
on A.FBILLNO = C.FORDERNUMBER
LEFT JOIN
(Select FNumber,FENTRYID From T_BAS_ASSISTANTDATAENTRY Where FID = '670cc977263353') W8 --合同类型
on W8.FENTRYID = A.F_ORDERCATEGORY
Where A.FDocumentStatus = 'C' AND W8.FNumber != 'Z' --AND A.FID in (Select * From #TABLEXYX)", year);
if (!string.IsNullOrEmpty(salespersonString))
{
sql += string.Format(@" AND A.FSalerId in ({0})", salespersonString);
}
if (!string.IsNullOrEmpty(organization))
{
sql += string.Format(@" AND A.FSaleOrgId in ({0})", organization);
}
if (!string.IsNullOrEmpty(fStrartDate))
{
sql += string.Format(@" AND A.FDate >= '{0}'", fStrartDate);
}
if (!string.IsNullOrEmpty(fEndDate))
{
sql += string.Format(@" AND A.FDate <= '{0}'", fEndDate);
}
if (!string.IsNullOrEmpty(fSDate))
{
sql += string.Format(@" AND A.FAPPROVEDATE >= '{0}'", fSDate);
}
if (!string.IsNullOrEmpty(fEDate))
{
sql += string.Format(@" AND A.FAPPROVEDATE <= '{0}'", fEDate);
}
sql += string.Format(@";");
sql += string.Format(@"/*dialect*/
Select
FNAME+'合计:' as 'FNAME',
ISNULL(SUM(XOneMonth),0) as 'XOneMonth',
ISNULL(SUM(HOneMonth),0) as 'HOneMonth',
ISNULL(SUM(XTwoMonth),0) as 'XTwoMonth',
ISNULL(SUM(HTwoMonth),0) as 'HTwoMonth',
ISNULL(SUM(XThreeMonth),0) as 'XThreeMonth',
ISNULL(SUM(HThreeMonth),0) as 'HThreeMonth',
ISNULL(SUM(XFourMonth),0) as 'XFourMonth',
ISNULL(SUM(HFourMonth),0) as 'HFourMonth',
ISNULL(SUM(XFiveMonth),0) as 'XFiveMonth',
ISNULL(SUM(HFiveMonth),0) as 'HFiveMonth',
ISNULL(SUM(XSixMonth),0) as 'XSixMonth',
ISNULL(SUM(HSixMonth),0) as 'HSixMonth',
ISNULL(SUM(XSevenMonth),0) as 'XSevenMonth',
ISNULL(SUM(HSevenMonth),0) as 'HSevenMonth',
ISNULL(SUM(XEightMonth),0) as 'XEightMonth',
ISNULL(SUM(HEightMonth),0) as 'HEightMonth',
ISNULL(SUM(XNineMonth),0) as 'XNineMonth',
ISNULL(SUM(HNineMonth),0) as 'HNineMonth',
ISNULL(SUM(XTenMonth),0) as 'XTenMonth',
ISNULL(SUM(HTenMonth),0) as 'HTenMonth',
ISNULL(SUM(XElevenMonth),0) as 'XElevenMonth',
ISNULL(SUM(HElevenMonth),0) as 'HElevenMonth',
ISNULL(SUM(XTwelveMonth),0) as 'XTwelveMonth',
ISNULL(SUM(HTwelveMonth),0) as 'HTwelveMonth',
ISNULL(SUM(XCumulative),0) as 'XCumulative',
ISNULL(SUM(HCumulative),0) as 'HCumulative',
ISNULL(SUM(UsualAlterAmount),0) as 'UsualAlterAmount',
ISNULL(SUM(ZhuhaiPilot),0) as 'ZhuhaiPilot',
ISNULL(SUM(SiNO),0) as 'SiNO',
ISNULL(SUM(SiNOUsualAlter),0) as 'SiNOUsualAlter',
ISNULL(SUM(WuhanPilotThisYear),0) as 'WuhanPilotThisYear',
ISNULL(SUM(WuhanPilotUsualAlter),0) as 'WuhanPilotUsualAlter',
ISNULL(SUM(Discovery),0) as 'Discovery',
ISNULL(SUM(HongKongPilot),0) as 'HongKongPilot',
ISNULL(SUM(HuaXiaYunLian),0) as 'HuaXiaYunLian',
ISNULL(SUM(PilotSumAmount),0) as 'PilotSumAmount',
SBU,
DetailArea,
3 Sort
Into #TempTable6
From
#TempTable5
Group by FNAME,SBU,DetailArea;");
sql += string.Format(@"/*dialect*/
Select
*
INTO #TempTable7
From
#TempTable6
UNION ALL
Select
'派诺集团总计:' as 'FNAME',
ISNULL(SUM(XOneMonth),0) as 'XOneMonth',
ISNULL(SUM(HOneMonth),0) as 'HOneMonth',
ISNULL(SUM(XTwoMonth),0) as 'XTwoMonth',
ISNULL(SUM(HTwoMonth),0) as 'HTwoMonth',
ISNULL(SUM(XThreeMonth),0) as 'XThreeMonth',
ISNULL(SUM(HThreeMonth),0) as 'HThreeMonth',
ISNULL(SUM(XFourMonth),0) as 'XFourMonth',
ISNULL(SUM(HFourMonth),0) as 'HFourMonth',
ISNULL(SUM(XFiveMonth),0) as 'XFiveMonth',
ISNULL(SUM(HFiveMonth),0) as 'HFiveMonth',
ISNULL(SUM(XSixMonth),0) as 'XSixMonth',
ISNULL(SUM(HSixMonth),0) as 'HSixMonth',
ISNULL(SUM(XSevenMonth),0) as 'XSevenMonth',
ISNULL(SUM(HSevenMonth),0) as 'HSevenMonth',
ISNULL(SUM(XEightMonth),0) as 'XEightMonth',
ISNULL(SUM(HEightMonth),0) as 'HEightMonth',
ISNULL(SUM(XNineMonth),0) as 'XNineMonth',
ISNULL(SUM(HNineMonth),0) as 'HNineMonth',
ISNULL(SUM(XTenMonth),0) as 'XTenMonth',
ISNULL(SUM(HTenMonth),0) as 'HTenMonth',
ISNULL(SUM(XElevenMonth),0) as 'XElevenMonth',
ISNULL(SUM(HElevenMonth),0) as 'HElevenMonth',
ISNULL(SUM(XTwelveMonth),0) as 'XTwelveMonth',
ISNULL(SUM(HTwelveMonth),0) as 'HTwelveMonth',
ISNULL(SUM(XCumulative),0) as 'XCumulative',
ISNULL(SUM(HCumulative),0) as 'HCumulative',
ISNULL(SUM(UsualAlterAmount),0) as 'UsualAlterAmount',
ISNULL(SUM(ZhuhaiPilot),0) as 'ZhuhaiPilot',
ISNULL(SUM(SiNO),0) as 'SiNO',
ISNULL(SUM(SiNOUsualAlter),0) as 'SiNOUsualAlter',
ISNULL(SUM(WuhanPilotThisYear),0) as 'WuhanPilotThisYear',
ISNULL(SUM(WuhanPilotUsualAlter),0) as 'WuhanPilotUsualAlter',
ISNULL(SUM(Discovery),0) as 'Discovery',
ISNULL(SUM(HongKongPilot),0) as 'HongKongPilot',
ISNULL(SUM(HuaXiaYunLian),0) as 'HuaXiaYunLian',
ISNULL(SUM(PilotSumAmount),0) as 'PilotSumAmount',
'',
'',
4 Sort
From
#TempTable6;");
sql += string.Format(@"/*dialect*/
Select
*
Into #TempTable8
From
#TempTable4 v1
UNION ALL
Select * From #TempTable7;");
sql += string.Format(@"/*dialect*/
Select *,0 A
INTO #TempTable9
From #TempTable8");
sql += string.Format(@"/*dialect*/
SELECT
*,
ROW_NUMBER() OVER (ORDER BY A) AS FID,
ROW_NUMBER() OVER (ORDER BY A) AS FIDENTITYID
INTO {0}
From
#TempTable9;", tableName);
DBUtils.Execute(this.Context, sql);
}
/// <summary>
/// 获取前端组件转换过滤条件
/// </summary>
/// <param name="filter"></param>
/// <returns></returns>
public override ReportTitles GetReportTitles(IRptParams filter)
{
ReportTitles reportTitles = new ReportTitles();
DynamicObject customFilter = filter.FilterParameter.CustomFilter;
if (customFilter != null)
{
// 销售员
var salesperson = (customFilter["F_Salesperson"] as DynamicObjectCollection)?.Select(n => (n["F_Salesperson"] as DynamicObject)["Name"].ToString()).ToList();
// 年份
string fDate = customFilter["F_Date"]?.ToString();
// 开始日期
string fStrartDate = customFilter["FStrartDate"]?.ToString();
// 结束日期
string fEndDate = customFilter["FEndDate"]?.ToString();
// 开始日期
string fSDate = customFilter["FSDate"]?.ToString();
// 结束日期
string fEDate = customFilter["FEDate"]?.ToString();
// 组织
var organizationList = (customFilter["FZuZhi"] as DynamicObjectCollection)?.Select(n => (n["FZuZhi"] as DynamicObject)["Name"].ToString()).ToList();
//这里是报表页面的标识 FStrartDate
reportTitles.AddTitle("FSalesperson", salesperson == null ? "" : string.Join(",", salesperson));
reportTitles.AddTitle("FDate", fDate == null ? null : Convert.ToDateTime(fDate).ToString("yyyy-MM-dd"));
reportTitles.AddTitle("FStrartDate", string.IsNullOrWhiteSpace(fStrartDate) ? "" : Convert.ToDateTime(fStrartDate).ToString("yyyy-MM-dd"));
reportTitles.AddTitle("FEndDate", string.IsNullOrWhiteSpace(fEndDate) ? "" : Convert.ToDateTime(fEndDate).ToString("yyyy-MM-dd"));
reportTitles.AddTitle("FSDate", string.IsNullOrWhiteSpace(fSDate) ? "" : Convert.ToDateTime(fSDate).ToString("yyyy-MM-dd"));
reportTitles.AddTitle("FEDate", string.IsNullOrWhiteSpace(fEDate) ? "" : Convert.ToDateTime(fEDate).ToString("yyyy-MM-dd"));
reportTitles.AddTitle("FZuZhi", organizationList == null ? "" : string.Join(",", organizationList));
}
return reportTitles;
}
}
}