2025-03-17 19:04:06 +08:00

452 lines
31 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;
using DocumentFormat.OpenXml.Bibliography;
using DocumentFormat.OpenXml.Spreadsheet;
using NPOI.SS.Formula.Functions;
using Pilot.Report.Exploitation.Common;
namespace Pilot.Report.Exploitation.SaleOrderProgress
{
/// <summary>
/// 销售业绩排行榜报表
/// </summary>
[Description("【列表插件】销售业绩排行榜【报表】"), HotUpdate]
public class PHBSaleOrderReport : 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)
{
DynamicObject customFilter = filter.FilterParameter.CustomFilter;
base.GetReportHeaders(filter);
ReportHeader header = new ReportHeader();
// 下单时间
string fDate = customFilter["F_Date"]?.ToString();
int year = Convert.ToInt32(fDate.Split('-')[0]);
header.AddChild("SBU", new LocaleValue("部门(SBU)"), SqlStorageType.Sqlvarchar);
header.AddChild("DetailArea", new LocaleValue("区域明细"), SqlStorageType.Sqlvarchar);
header.AddChild("GName", new LocaleValue("职位名称"), SqlStorageType.Sqlvarchar);
header.AddChild("Salesperson", new LocaleValue("姓名"), SqlStorageType.Sqlvarchar);
header.AddChild("RDate", new LocaleValue("入司时间"), SqlStorageType.SqlDatetime);
header.AddChild("ZWDate", new LocaleValue("担任本职位日期"), SqlStorageType.SqlDatetime);
header.AddChild("XSDate", new LocaleValue("担任销售日期"), SqlStorageType.SqlDatetime);
header.AddChild("RZYear", new LocaleValue("入职年限"), SqlStorageType.Sqlvarchar);
header.AddChild("CliqueBG", new LocaleValue("派诺集团-已进行集团业绩调整(含往年订单变更)"), SqlStorageType.SqlDecimal);
header.AddChild("PNBG", new LocaleValue("派诺业绩(含往年订单变更)"), SqlStorageType.SqlDecimal);
header.AddChild("XNBG", new LocaleValue("兴诺业绩(含往年订单变更)"), SqlStorageType.SqlDecimal);
header.AddChild("WHPNBG", new LocaleValue("武汉派诺业绩(含往年订单变更)"), SqlStorageType.SqlDecimal);
header.AddChild("TSBG", new LocaleValue("广东碳索业绩(含往年订单变更)"), SqlStorageType.SqlDecimal);
header.AddChild("XGPNBG", new LocaleValue("香港派诺业绩(含往年订单变更)"), SqlStorageType.SqlDecimal);
header.AddChild("HXYLBG", new LocaleValue("华夏云联业绩(含往年订单变更)"), SqlStorageType.SqlDecimal);
header.AddChild("DNLJYJ", new LocaleValue("当年累计业绩"), SqlStorageType.SqlDecimal);
header.AddChild("WNBGHTE", new LocaleValue("往年变更合同额"), SqlStorageType.SqlDecimal);
header.AddChild("JTHKHJ", new LocaleValue("集团回款合计"), SqlStorageType.SqlDecimal);
header.AddChild("PNLJHKE", new LocaleValue("派诺累计回款额"), SqlStorageType.SqlDecimal);
header.AddChild("XNLJHKE", new LocaleValue("兴诺累计回款额"), SqlStorageType.SqlDecimal);
header.AddChild("WHPNLJHKE", new LocaleValue("武汉派诺累计回款额"), SqlStorageType.SqlDecimal);
header.AddChild("GDTSLJHKE", new LocaleValue("广东碳索累计回款额"), SqlStorageType.SqlDecimal);
header.AddChild("XGPNLJHKE", new LocaleValue("香港派诺累计回款额"), SqlStorageType.SqlDecimal);
header.AddChild("HXYLLJHKE", new LocaleValue("华夏云联累计回款额"), SqlStorageType.SqlDecimal);
header.AddChild("XXSMB", new LocaleValue(year + "年销售目标-新"), SqlStorageType.SqlDecimal);
header.AddChild("DBL1", new LocaleValue(year + "年达标率(不含往年订单变更)-新"), SqlStorageType.SqlDecimal);
header.AddChild("YXSMB", new LocaleValue(year + "年销售目标-原"), SqlStorageType.SqlDecimal);
header.AddChild("DBL2", new LocaleValue(year + "年达标率(不含往年订单变更)-原"), SqlStorageType.SqlDecimal);
header.AddChild("MBTZJE", new LocaleValue("目标调整金额"), SqlStorageType.SqlDecimal);
header.AddChild("NDXSE1", new LocaleValue((year - 1) + "年度销售额"), SqlStorageType.SqlDecimal);
header.AddChild("NDXSE2", new LocaleValue((year - 2) + "年度销售额"), SqlStorageType.SqlDecimal);
header.AddChild("NDXSE3", new LocaleValue((year - 3) + "年度销售额"), SqlStorageType.SqlDecimal);
header.AddChild("NDXSE4", new LocaleValue((year - 4) + "年度销售额"), SqlStorageType.SqlDecimal);
header.AddChild("NDXSE5", new LocaleValue((year - 5) + "年度销售额"), SqlStorageType.SqlDecimal);
header.AddChild("NDXSE6", new LocaleValue((year - 6) + "年度销售额"), SqlStorageType.SqlDecimal);
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 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(X2.FNAME,'') = '' THEN S.区域 ELSE S2.区域 END as 'SBU',--部门SBU
CASE WHEN ISNULL(X2.FNAME,'') = '' THEN S.明细区域 ELSE S2.明细区域 END as 'DetailArea',--区域明细
G.GFNAME as 'GName', --职位名称
CASE WHEN ISNULL(X2.FNAME,'') = '' THEN X.FNAME ELSE X2.FNAME END as 'Salesperson', --销售员
ISNULL(G2.FSTARTDATE,'') as 'RDate',--入司时间
ISNULL(G.FSTARTDATE,'') as 'ZWDate', --担任本职位日期
CASE WHEN ISNULL(G3.FSTARTDATE,'')='' THen null ELSE ISNULL(G3.FSTARTDATE,'') END as 'XSDate',--担任销售日期
ROUND((DATEDIFF(DAY, ISNULL(G2.FSTARTDATE,''), GETDATE()) / 365.0), 1) as 'RZYear',--入职年限
--ISNULL(Y2.FSHARERATE,100) as 'FSHARERATE', --分摊比例
ISNULL(A.F_AMOUNTSTAR,0)-ISNULL(B.FBILLALLAMOUNT_LC,0) as 'CliqueBG',--派诺集团-已进行集团业绩调整(含往年订单变更)
CASE WHEN A.FSaleOrgId = 100302 THEN ISNULL(A.F_AMOUNTSTAR,0)-ISNULL(B.FBILLALLAMOUNT_LC,0) ELSE null END as 'PNBG',--派诺业绩(含往年订单变更)
CASE WHEN A.FSaleOrgId = 100303 THEN (ISNULL(A.F_AMOUNTSTAR,0)-ISNULL(B.FBILLALLAMOUNT_LC,0)) ELSE null END as 'XNBG',--兴诺业绩(含往年订单变更) *(ISNULL(Y2.FSHARERATE,100)/100)
CASE WHEN A.FSaleOrgId = 100305 THEN (ISNULL(A.F_AMOUNTSTAR,0)-ISNULL(B.FBILLALLAMOUNT_LC,0)) ELSE null END as 'WHPNBG',--武汉派诺业绩(含往年订单变更) *(ISNULL(Y2.FSHARERATE,100)/100)
CASE WHEN A.FSaleOrgId = 438223 THEN (ISNULL(A.F_AMOUNTSTAR,0)-ISNULL(B.FBILLALLAMOUNT_LC,0)) ELSE null END as 'TSBG',--碳索业绩(含往年订单变更) *(ISNULL(Y2.FSHARERATE,100)/100)
CASE WHEN A.FSaleOrgId = 438224 THEN (ISNULL(A.F_AMOUNTSTAR,0)-ISNULL(B.FBILLALLAMOUNT_LC,0)) ELSE null END as 'XGPNBG',--香港派诺业绩(含往年订单变更) *(ISNULL(Y2.FSHARERATE,100)/100)
CASE WHEN A.FSaleOrgId = 533896 THEN (ISNULL(A.F_AMOUNTSTAR,0)-ISNULL(B.FBILLALLAMOUNT_LC,0)) ELSE null END as 'HXYLBG',--华夏云联业绩(含往年订单变更) *(ISNULL(Y2.FSHARERATE,100)/100)
CASE WHEN YEAR(A.FDATE) = {0} THEN (Select SUM(a1.FALLAMOUNT_LC) as 'FALLAMOUNT_LC' From T_SAL_ORDERENTRY_F a1 JOIN T_SAL_ORDERENTRY a2 on a1.FENTRYID = a2.FENTRYID
Where a2.FMANUALROWCLOSE!='1' AND a1.FID = A.FID)*ISNULL(Y2.FSHARERATE,100)/100 ELSE 0 END as 'DNLJYJ',--当年累计业绩
CASE WHEN YEAR(A.FDATE)<{0} THEN ISNULL(A.F_AMOUNTSTAR,0)-ISNULL(B.FBILLALLAMOUNT_LC,0) ELSE null END as 'WNBGHTE',--往年变更合同额(派诺+兴诺+武兴派诺)
ISNULL(H.FALLAMOUNT,0)-ISNULL(C.FREALREFUNDAMOUNT,0) as 'JTHKHJ',--集团回款合计
CASE WHEN A.FSaleOrgId = 100302 THEN ISNULL(H.FALLAMOUNT,0)-ISNULL(C.FREALREFUNDAMOUNT,0) ELSE null END as 'PNLJHKE',--派诺累计回款额
CASE WHEN A.FSaleOrgId = 100303 THEN ISNULL(H.FALLAMOUNT,0)-ISNULL(C.FREALREFUNDAMOUNT,0) ELSE null END as 'XNLJHKE',--兴诺累计回款额
CASE WHEN A.FSaleOrgId = 100305 THEN ISNULL(H.FALLAMOUNT,0)-ISNULL(C.FREALREFUNDAMOUNT,0) ELSE null END as 'WHPNLJHKE',--武汉派诺累计回款额
CASE WHEN A.FSaleOrgId = 438223 THEN ISNULL(H.FALLAMOUNT,0)-ISNULL(C.FREALREFUNDAMOUNT,0) ELSE null END as 'GDTSLJHKE',--广东碳索累计回款额
CASE WHEN A.FSaleOrgId = 438224 THEN ISNULL(H.FALLAMOUNT,0)-ISNULL(C.FREALREFUNDAMOUNT,0) ELSE null END as 'XGPNLJHKE',--香港派诺累计回款额
CASE WHEN A.FSaleOrgId = 533896 THEN ISNULL(H.FALLAMOUNT,0)-ISNULL(C.FREALREFUNDAMOUNT,0) ELSE null END as 'HXYLLJHKE',--华夏云联累计回款额
ISNULL(G4.FPERFORMANCETARGETS,0) as 'XXSMB',--2024年销售目标-新
CASE WHEN ISNULL(G4.FPERFORMANCETARGETS,0) = 0 THEN 0 ELSE ROUND((ISNULL(B.FBILLALLAMOUNT_LC,0)*ISNULL(Y2.FSHARERATE,100)/100)/ISNULL(G4.FPERFORMANCETARGETS,0),2) END as 'DBL1',--2024年达成率不含往年订单变更
ISNULL(G4.FPERFORMANCETARGETS,0) as 'YXSMB',--2024年销售目标-原
CASE WHEN ISNULL(G4.FPERFORMANCETARGETS,0) = 0 THEN 0 ELSE ROUND((ISNULL(B.FBILLALLAMOUNT_LC,0)*ISNULL(Y2.FSHARERATE,100)/100)/ISNULL(G4.FPERFORMANCETARGETS,0),2) END as 'DBL2',--2024年达成率不含往年订单变更)
ISNULL(G4.FPERFORMANCETARGETS,0)-ISNULL(G4.FPERFORMANCETARGETS,0) as 'MBTZJE',--目标调整金额
CASE WHEN YEAR(A.FDATE) = {1} THEN ISNULL(B.FBILLALLAMOUNT_LC,0)*ISNULL(Y2.FSHARERATE,100)/100 ELSE 0 END as 'NDXSE1',--2024年度销售额
CASE WHEN YEAR(A.FDATE) = {2} THEN ISNULL(B.FBILLALLAMOUNT_LC,0)*ISNULL(Y2.FSHARERATE,100)/100 ELSE 0 END as 'NDXSE2',--2023年度销售额
CASE WHEN YEAR(A.FDATE) = {3} THEN ISNULL(B.FBILLALLAMOUNT_LC,0)*ISNULL(Y2.FSHARERATE,100)/100 ELSE 0 END as 'NDXSE3',--2022年度销售额
CASE WHEN YEAR(A.FDATE) = {4} THEN ISNULL(B.FBILLALLAMOUNT_LC,0)*ISNULL(Y2.FSHARERATE,100)/100 ELSE 0 END as 'NDXSE4',--2021年度销售额
CASE WHEN YEAR(A.FDATE) = {5} THEN ISNULL(B.FBILLALLAMOUNT_LC,0)*ISNULL(Y2.FSHARERATE,100)/100 ELSE 0 END as 'NDXSE5',--2020年度销售额
CASE WHEN YEAR(A.FDATE) = {6} THEN ISNULL(B.FBILLALLAMOUNT_LC,0)*ISNULL(Y2.FSHARERATE,100)/100 ELSE 0 END as 'NDXSE6'--2019年度销售额
INTO #TABLETMEP1
From
T_SAL_ORDER A --销售订单
LEFT JOIN
(Select FNumber,FENTRYID From T_BAS_ASSISTANTDATAENTRY Where FID = '670cc977263353') W8 --合同类型
on W8.FENTRYID = A.F_ORDERCATEGORY
LEFT JOIN
T_SAL_ORDERFIN B on A.FID = B.FID
LEFT JOIN
V_BD_SALESMAN_L X on X.fid = A.FSALERID
LEFT JOIN
T_BD_CUSTOMER_L K on K.FCUSTID = A.FCUSTID
LEFT JOIN --收款退款单
T_AR_REFUNDBILL C on C.F_VRYF_TEXT_83G = A.F_CONTRACTNUMBER
LEFT JOIN
T_PerformanceSharing Y on Y.FSOURCEBILLNO = A.FBILLNO
LEFT JOIN
T_PerformanceSharingEntry Y2 on Y2.FID = Y.FID
LEFT JOIN
V_BD_SALESMAN_L X2 on Y2.FSALEID = X2.fid
LEFT JOIN
{7} S on X.FNAME = S.名称
LEFT JOIN
{7} S2 on X2.FNAME = S2.名称
LEFT JOIN
(Select a1.FNAME,a2.*,a3.FNAME as 'GFNAME' From T_HR_EMPINFO_L a1 JOIN T_BD_STAFFTEMP a2 on a1.FID = a2.FID
LEFT JOIN T_ORG_POST_L a3 on a2.FPOSTID = a3.FPOSTID
Where a2.FENTRYID in (Select * From V_User_FID_GW)) G on G.FNAME = (CASE WHEN ISNULL(X2.FNAME,'') = '' THEN X.FNAME ELSE X2.FNAME END)
LEFT JOIN --获取入司时间
V_User_FID_GW2 G2 on G2.FNAME = (CASE WHEN ISNULL(X2.FNAME,'') = '' THEN X.FNAME ELSE X2.FNAME END)
LEFT JOIN --获取销售任刚时间
V_User_FID_GW3 G3 on G3.FNAME = (CASE WHEN ISNULL(X2.FNAME,'') = '' THEN X.FNAME ELSE X2.FNAME END)
LEFT JOIN--业绩目标回款表
(Select a2.FPERFORMANCETARGETS,a2.FPAYMENTSUM,a3.FNAME From MBBA_t_Cust100002 a1 JOIn MBBA_t_Cust_Entry100003 a2 on a1.FID = a2.FID
JOIN V_BD_SALESMAN_L a3 on a2.FNAME = a3.fid Where a1.FDOCUMENTSTATUS = 'C' AND F_MBBA_Combo_qtr = '{0}')
G4 on G4.FNAME = (CASE WHEN ISNULL(X2.FNAME,'') = '' THEN X.FNAME ELSE X2.FNAME END)
LEFT JOIN
(Select a2.FBILLNO2,CASE WHEN ISNULL(a2.FALLAMOUNT2,0)>ISNULL(b1.FALLAMOUNT3,0) THEN ISNULL(b1.FALLAMOUNT3,0)
ELSE ISNULL(a2.FALLAMOUNT2,0) END as 'FALLAMOUNT' From T_AutoWrireRecord a1
JOIN T_AutoWrireRecordEntry a2 on a1.FID = a2.FID
LEFT JOIN
(Select a1.FID,SUM(CAST(a2.FALLAMOUNT3 as DECIMAL(10,2))) as 'FALLAMOUNT3' From T_AutoWrireRecord a1
JOIN T_AutoWrireRecordEntry2 a2 on a1.FID = a2.FID
Where a1.FDOCUMENTSTATUS = 'C' AND Year(a2.FDATE3) = '{0}'
GROUP BY a1.FID) b1 on b1.FID = a1.FID
Where a1.FDOCUMENTSTATUS = 'C') H on H.FBILLNO2 = A.FBILLNO
Where A.FDOCUMENTSTATUS = 'C' AND W8.FNumber != 'Z' --AND ISNULL(X.FNAME,'') != ''
AND A.FSALEORGID = 100302 AND S.区域 != '碳索智控' AND A.FMANUALCLOSE != '1'
AND ISNULL(K.FNAME,'') NOT IN ('派诺科技(香港)有限公司','武汉派诺科技发展有限公司')
AND X.FNAME != '兴诺总' ", year, year - 1, year - 2, year - 3, year - 4, year - 5, year - 6, tableNameView);
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 < DATEADD(DAY, 1, CONVERT(DATE, '{0}'))", fEDate);
}
sql += string.Format(@";");
sql += string.Format(@"/*dialect*/
Select
CASE WHEN ISNULL(X2.FNAME,'') = '' THEN S.区域 ELSE S2.区域 END as 'SBU',--部门SBU
CASE WHEN ISNULL(X2.FNAME,'') = '' THEN S.明细区域 ELSE S2.明细区域 END as 'DetailArea',--区域明细
G.GFNAME as 'GName', --职位名称
CASE WHEN ISNULL(X2.FNAME,'') = '' THEN X.FNAME ELSE X2.FNAME END as 'Salesperson', --销售员
ISNULL(G2.FSTARTDATE,'') as 'RDate',--入司时间
ISNULL(G.FSTARTDATE,'') as 'ZWDate', --担任本职位日期
CASE WHEN ISNULL(G3.FSTARTDATE,'')='' THen null ELSE ISNULL(G3.FSTARTDATE,'') END as 'XSDate',--担任销售日期
ROUND((DATEDIFF(DAY, ISNULL(G2.FSTARTDATE,''), GETDATE()) / 365.0), 1) as 'RZYear',--入职年限
--ISNULL(Y2.FSHARERATE,100) as 'FSHARERATE', --分摊比例
ISNULL(A.F_AMOUNTSTAR,0)-ISNULL(B.FBILLALLAMOUNT_LC,0) as 'CliqueBG',--派诺集团-已进行集团业绩调整(含往年订单变更)
CASE WHEN A.FSaleOrgId = 100302 THEN ISNULL(A.F_AMOUNTSTAR,0)-ISNULL(B.FBILLALLAMOUNT_LC,0) ELSE null END as 'PNBG',--派诺业绩(含往年订单变更)
CASE WHEN A.FSaleOrgId = 100303 THEN (ISNULL(A.F_AMOUNTSTAR,0)-ISNULL(B.FBILLALLAMOUNT_LC,0)) ELSE null END as 'XNBG',--兴诺业绩(含往年订单变更) *(ISNULL(Y2.FSHARERATE,100)/100)
CASE WHEN A.FSaleOrgId = 100305 THEN (ISNULL(A.F_AMOUNTSTAR,0)-ISNULL(B.FBILLALLAMOUNT_LC,0)) ELSE null END as 'WHPNBG',--武汉派诺业绩(含往年订单变更) *(ISNULL(Y2.FSHARERATE,100)/100)
CASE WHEN A.FSaleOrgId = 438223 THEN (ISNULL(A.F_AMOUNTSTAR,0)-ISNULL(B.FBILLALLAMOUNT_LC,0)) ELSE null END as 'TSBG',--碳索业绩(含往年订单变更) *(ISNULL(Y2.FSHARERATE,100)/100)
CASE WHEN A.FSaleOrgId = 438224 THEN (ISNULL(A.F_AMOUNTSTAR,0)-ISNULL(B.FBILLALLAMOUNT_LC,0)) ELSE null END as 'XGPNBG',--香港派诺业绩(含往年订单变更) *(ISNULL(Y2.FSHARERATE,100)/100)
CASE WHEN A.FSaleOrgId = 533896 THEN (ISNULL(A.F_AMOUNTSTAR,0)-ISNULL(B.FBILLALLAMOUNT_LC,0)) ELSE null END as 'HXYLBG',--华夏云联业绩(含往年订单变更) *(ISNULL(Y2.FSHARERATE,100)/100)
CASE WHEN YEAR(A.FDATE) = {0} THEN (Select SUM(a1.FALLAMOUNT_LC) as 'FALLAMOUNT_LC' From T_SAL_ORDERENTRY_F a1 JOIN T_SAL_ORDERENTRY a2 on a1.FENTRYID = a2.FENTRYID
Where a2.FMANUALROWCLOSE!='1' AND a1.FID = A.FID)*ISNULL(Y2.FSHARERATE,100)/100 ELSE 0 END as 'DNLJYJ',--当年累计业绩
CASE WHEN YEAR(A.FDATE)<{0} THEN ISNULL(A.F_AMOUNTSTAR,0)-ISNULL(B.FBILLALLAMOUNT_LC,0) ELSE null END as 'WNBGHTE',--往年变更合同额(派诺+兴诺+武兴派诺)
ISNULL(H.FALLAMOUNT,0)-ISNULL(C.FREALREFUNDAMOUNT,0) as 'JTHKHJ',--集团回款合计
CASE WHEN A.FSaleOrgId = 100302 THEN ISNULL(H.FALLAMOUNT,0)-ISNULL(C.FREALREFUNDAMOUNT,0) ELSE null END as 'PNLJHKE',--派诺累计回款额
CASE WHEN A.FSaleOrgId = 100303 THEN ISNULL(H.FALLAMOUNT,0)-ISNULL(C.FREALREFUNDAMOUNT,0) ELSE null END as 'XNLJHKE',--兴诺累计回款额
CASE WHEN A.FSaleOrgId = 100305 THEN ISNULL(H.FALLAMOUNT,0)-ISNULL(C.FREALREFUNDAMOUNT,0) ELSE null END as 'WHPNLJHKE',--武汉派诺累计回款额
CASE WHEN A.FSaleOrgId = 438223 THEN ISNULL(H.FALLAMOUNT,0)-ISNULL(C.FREALREFUNDAMOUNT,0) ELSE null END as 'GDTSLJHKE',--广东碳索累计回款额
CASE WHEN A.FSaleOrgId = 438224 THEN ISNULL(H.FALLAMOUNT,0)-ISNULL(C.FREALREFUNDAMOUNT,0) ELSE null END as 'XGPNLJHKE',--香港派诺累计回款额
CASE WHEN A.FSaleOrgId = 533896 THEN ISNULL(H.FALLAMOUNT,0)-ISNULL(C.FREALREFUNDAMOUNT,0) ELSE null END as 'HXYLLJHKE',--华夏云联累计回款额
ISNULL(G4.FPERFORMANCETARGETS,0) as 'XXSMB',--2024年销售目标-新
CASE WHEN ISNULL(G4.FPERFORMANCETARGETS,0) = 0 THEN 0 ELSE ROUND((ISNULL(B.FBILLALLAMOUNT_LC,0)*ISNULL(Y2.FSHARERATE,100)/100)/ISNULL(G4.FPERFORMANCETARGETS,0),2) END as 'DBL1',--2024年达成率不含往年订单变更
ISNULL(G4.FPERFORMANCETARGETS,0) as 'YXSMB',--2024年销售目标-原
CASE WHEN ISNULL(G4.FPERFORMANCETARGETS,0) = 0 THEN 0 ELSE ROUND((ISNULL(B.FBILLALLAMOUNT_LC,0)*ISNULL(Y2.FSHARERATE,100)/100)/ISNULL(G4.FPERFORMANCETARGETS,0),2) END as 'DBL2',--2024年达成率不含往年订单变更)
ISNULL(G4.FPERFORMANCETARGETS,0)-ISNULL(G4.FPERFORMANCETARGETS,0) as 'MBTZJE',--目标调整金额
CASE WHEN YEAR(A.FDATE) = {1} THEN ISNULL(B.FBILLALLAMOUNT_LC,0)*ISNULL(Y2.FSHARERATE,100)/100 ELSE 0 END as 'NDXSE1',--2024年度销售额
CASE WHEN YEAR(A.FDATE) = {2} THEN ISNULL(B.FBILLALLAMOUNT_LC,0)*ISNULL(Y2.FSHARERATE,100)/100 ELSE 0 END as 'NDXSE2',--2023年度销售额
CASE WHEN YEAR(A.FDATE) = {3} THEN ISNULL(B.FBILLALLAMOUNT_LC,0)*ISNULL(Y2.FSHARERATE,100)/100 ELSE 0 END as 'NDXSE3',--2022年度销售额
CASE WHEN YEAR(A.FDATE) = {4} THEN ISNULL(B.FBILLALLAMOUNT_LC,0)*ISNULL(Y2.FSHARERATE,100)/100 ELSE 0 END as 'NDXSE4',--2021年度销售额
CASE WHEN YEAR(A.FDATE) = {5} THEN ISNULL(B.FBILLALLAMOUNT_LC,0)*ISNULL(Y2.FSHARERATE,100)/100 ELSE 0 END as 'NDXSE5',--2020年度销售额
CASE WHEN YEAR(A.FDATE) = {6} THEN ISNULL(B.FBILLALLAMOUNT_LC,0)*ISNULL(Y2.FSHARERATE,100)/100 ELSE 0 END as 'NDXSE6'--2019年度销售额
INTO #TABLETMEP2
From
T_SAL_ORDER A --销售订单
LEFT JOIN
(Select FNumber,FENTRYID From T_BAS_ASSISTANTDATAENTRY Where FID = '670cc977263353') W8 --合同类型
on W8.FENTRYID = A.F_ORDERCATEGORY
LEFT JOIN
T_SAL_ORDERFIN B on A.FID = B.FID
LEFT JOIN
V_BD_SALESMAN_L X on X.fid = A.FSALERID
LEFT JOIN
T_BD_CUSTOMER_L K on K.FCUSTID = A.FCUSTID
LEFT JOIN --收款退款单
T_AR_REFUNDBILL C on C.F_VRYF_TEXT_83G = A.F_CONTRACTNUMBER
LEFT JOIN
T_PerformanceSharing Y on Y.FSOURCEBILLNO = A.FBILLNO
LEFT JOIN
T_PerformanceSharingEntry Y2 on Y2.FID = Y.FID
LEFT JOIN
V_BD_SALESMAN_L X2 on Y2.FSALEID = X2.fid
LEFT JOIN
{7} S on X.FNAME = S.名称
LEFT JOIN
{7} S2 on X2.FNAME = S2.名称
LEFT JOIN
(Select a1.FNAME,a2.*,a3.FNAME as 'GFNAME' From T_HR_EMPINFO_L a1 JOIN T_BD_STAFFTEMP a2 on a1.FID = a2.FID
LEFT JOIN T_ORG_POST_L a3 on a2.FPOSTID = a3.FPOSTID
Where a2.FENTRYID in (Select * From V_User_FID_GW)) G on G.FNAME = (CASE WHEN ISNULL(X2.FNAME,'') = '' THEN X.FNAME ELSE X2.FNAME END)
LEFT JOIN --获取入司时间
V_User_FID_GW2 G2 on G2.FNAME = (CASE WHEN ISNULL(X2.FNAME,'') = '' THEN X.FNAME ELSE X2.FNAME END)
LEFT JOIN --获取销售任刚时间
V_User_FID_GW3 G3 on G3.FNAME = (CASE WHEN ISNULL(X2.FNAME,'') = '' THEN X.FNAME ELSE X2.FNAME END)
LEFT JOIN--业绩目标回款表
(Select a2.FPERFORMANCETARGETS,a2.FPAYMENTSUM,a3.FNAME From MBBA_t_Cust100002 a1 JOIn MBBA_t_Cust_Entry100003 a2 on a1.FID = a2.FID
JOIN V_BD_SALESMAN_L a3 on a2.FNAME = a3.fid Where a1.FDOCUMENTSTATUS = 'C' AND F_MBBA_Combo_qtr = '{0}')
G4 on G4.FNAME = (CASE WHEN ISNULL(X2.FNAME,'') = '' THEN X.FNAME ELSE X2.FNAME END)
LEFT JOIN
(Select a2.FBILLNO2,CASE WHEN ISNULL(a2.FALLAMOUNT2,0)>ISNULL(b1.FALLAMOUNT3,0) THEN ISNULL(b1.FALLAMOUNT3,0)
ELSE ISNULL(a2.FALLAMOUNT2,0) END as 'FALLAMOUNT' From T_AutoWrireRecord a1
JOIN T_AutoWrireRecordEntry a2 on a1.FID = a2.FID
LEFT JOIN
(Select a1.FID,SUM(CAST(a2.FALLAMOUNT3 as DECIMAL(10,2))) as 'FALLAMOUNT3' From T_AutoWrireRecord a1
JOIN T_AutoWrireRecordEntry2 a2 on a1.FID = a2.FID
Where a1.FDOCUMENTSTATUS = 'C' AND Year(a2.FDATE3) = '{0}'
GROUP BY a1.FID) b1 on b1.FID = a1.FID
Where a1.FDOCUMENTSTATUS = 'C') H on H.FBILLNO2 = A.FBILLNO
Where A.FDOCUMENTSTATUS = 'C' AND W8.FNumber != 'Z' --AND ISNULL(X.FNAME,'') != ''
AND A.FSALEORGID != 100302 AND A.FMANUALCLOSE != '1'"
, year, year - 1, year - 2, year - 3, year - 4, year - 5, year - 6, tableNameView);
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 < DATEADD(DAY, 1, CONVERT(DATE, '{0}'))", fEDate);
}
sql += string.Format(@";");
sql += string.Format(@"/*dialect*/Select * INTO #TABLETMEP3 From #TABLETMEP1 UNION ALL (Select * From #TABLETMEP2)");
sql += string.Format(@"/*dialect*/
Select
SBU,DetailArea,GName,Salesperson,RDate,ZWDate,XSDate,RZYear,SUM(CliqueBG)/10000'CliqueBG',SUM(PNBG)/10000'PNBG',SUM(XNBG)/10000'XNBG',
SUM(WHPNBG)/10000'WHPNBG',SUM(TSBG)/10000'TSBG',SUM(XGPNBG)/10000'XGPNBG',SUM(HXYLBG)/10000'HXYLBG',SUM(DNLJYJ)/10000'DNLJYJ',SUM(WNBGHTE)/10000'WNBGHTE',SUM(JTHKHJ)/10000'JTHKHJ',SUM(PNLJHKE)/10000'PNLJHKE',
SUM(XNLJHKE)/10000'XNLJHKE',SUM(WHPNLJHKE)/10000'WHPNLJHKE',SUM(GDTSLJHKE)/10000'GDTSLJHKE',SUM(XGPNLJHKE)/10000'XGPNLJHKE',SUM(HXYLLJHKE)/10000'HXYLLJHKE',SUM(XXSMB)/10000'XXSMB',SUM(DBL1)/10000'DBL1',
SUM(YXSMB)/10000'YXSMB',SUM(DBL2)/10000'DBL2',SUM(MBTZJE)/10000'MBTZJE',SUM(NDXSE1)/10000'NDXSE1',SUM(NDXSE2)/10000'NDXSE2',SUM(NDXSE3)/10000'NDXSE3',SUM(NDXSE4)/10000'NDXSE4',SUM(NDXSE5)/10000'NDXSE5',SUM(NDXSE6)/10000'NDXSE6'
INTO #TABLETMEP4
From #TABLETMEP3 GROUP BY SBU,DetailArea,GName,Salesperson,RDate,ZWDate,XSDate,RZYear;");
sql += string.Format(@"/*dialect*/
SELECT
*,
ROW_NUMBER() OVER (ORDER BY Sort) AS FID,
ROW_NUMBER() OVER (ORDER BY Sort) AS FIDENTITYID
INTO {0}
FROM(SELECT *,1 Sort FROM #TABLETMEP4
UNION ALL
SELECT
'总合计:','','','',null,null,null,null,
SUM(CliqueBG)'CliqueBG',SUM(PNBG)'PNBG',SUM(XNBG)'XNBG',
SUM(WHPNBG)'WHPNBG',SUM(TSBG)'TSBG',SUM(XGPNBG)'XGPNBG',SUM(HXYLBG)'HXYLBG',SUM(DNLJYJ)'DNLJYJ',SUM(WNBGHTE)'WNBGHTE',SUM(JTHKHJ)'JTHKHJ',SUM(PNLJHKE)'PNLJHKE',
SUM(XNLJHKE)'XNLJHKE',SUM(WHPNLJHKE)'WHPNLJHKE',SUM(GDTSLJHKE)'GDTSLJHKE',SUM(XGPNLJHKE)'XGPNLJHKE',SUM(HXYLLJHKE)'HXYLLJHKE',SUM(XXSMB)'XXSMB',SUM(DBL1)'DBL1',
SUM(YXSMB)'YXSMB',SUM(DBL2)'DBL2',SUM(MBTZJE)'MBTZJE',SUM(NDXSE1)'NDXSE1',SUM(NDXSE2)'NDXSE2',SUM(NDXSE3)'NDXSE3',SUM(NDXSE4)'NDXSE4',SUM(NDXSE5)'NDXSE5',SUM(NDXSE6)'NDXSE6',
0 Sort
FROM #TABLETMEP4) t1
order by Sort;", tableName);
Loghelp.Log("BuilderReportSqlAndTempTable");
Loghelp.Log(sql);
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)
// {
// // 年份
// string fDate = customFilter["F_Date"]?.ToString();
// // 开始日期
// string fStrartDate = customFilter["FStrartDate"]?.ToString();
// // 结束日期
// string fEndDate = customFilter["FEndDate"]?.ToString();
// // 组织
// var organizationList = (customFilter["FZuZhi"] as DynamicObjectCollection)?.Select(n => (n["FZuZhi"] as DynamicObject)["Name"].ToString()).ToList();
// //这里是报表页面的标识
// reportTitles.AddTitle("FDate", fDate == 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("FZuZhi", organizationList == null ? "" : string.Join(",", organizationList));
// }
// return reportTitles;
//}
}
}