2025-03-14 10:00:24 +08:00
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 ;
2025-03-14 20:02:04 +08:00
using Pilot.Report.Exploitation.Common ;
2025-03-14 10:00:24 +08:00
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 = ' 670 cc977263353 ' ) 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 ( ' 派 诺 科 技 ( 香 港 ) 有 限 公 司 ',' 武 汉 派 诺 科 技 发 展 有 限 公 司 ' )
2025-03-14 20:02:04 +08:00
AND X . FNAME ! = ' 兴 诺 总 ' ", year, year - 1, year - 2, year - 3, year - 4, year - 5, year - 6, tableNameView);
2025-03-14 10:00:24 +08:00
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 = ' 670 cc977263353 ' ) 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);
2025-03-17 19:04:06 +08:00
Loghelp . Log ( "BuilderReportSqlAndTempTable" ) ;
2025-03-14 20:02:04 +08:00
Loghelp . Log ( sql ) ;
2025-03-14 10:00:24 +08:00
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;
//}
}
}