This commit is contained in:
李狗蛋 2025-04-01 11:42:17 +08:00
parent 088c7ab970
commit a1966d09c4
2 changed files with 451 additions and 0 deletions

View File

@ -0,0 +1,41 @@
CREATE TABLE YJPHB_GZTH (
_SBU NVARCHAR(50),
NVARCHAR(50),
NVARCHAR(50),
NVARCHAR(50),
datetime,
datetime,
datetime,
decimal(23,1),
_已进行集团业绩调整_含往年订单变更 decimal(23,10),
_含往年订单变更 decimal(23,10),
_含往年订单变更 decimal(23,10),
_含往年订单变更 decimal(23,10),
广_含往年订单变更 decimal(23,10),
_含往年订单变更 decimal(23,10),
_含往年订单变更 decimal(23,10),
decimal(23,10),
decimal(23,10),
decimal(23,10),
decimal(23,10),
decimal(23,10),
decimal(23,10),
广 decimal(23,10),
decimal(23,10),
decimal(23,10),
_新 decimal(23,10),
_不含往年订单变更_新 decimal(23,10),
_原 decimal(23,10),
_不含往年订单变更_原 decimal(23,10),
decimal(23,10),
1 decimal(23,10),
2 decimal(23,10),
3 decimal(23,10),
4 decimal(23,10),
5 decimal(23,10),
6 decimal(23,10)
);
CREATE TABLE SalesIDTable (
SalesID NVARCHAR(1000)
);
--DROP TABLE YJPHB_GZTH

View File

@ -0,0 +1,410 @@
CREATE PROCEDURE GZYJPHB_TH
@FSDate NVARCHAR(50),
@FEDate NVARCHAR(50),
@FSaleOrgId nvarchar(1000)
AS
BEGIN
DECLARE @Year INT;
DECLARE @SixYearsAgoYear INT;
DECLARE @FEDateDate DATE = CAST(@FEDate AS DATE);
DECLARE @FSDateDate DATE = CAST(@FSDate AS DATE);
-- 提取年份
SET @Year = YEAR(@FSDate) - 1;
-- 计算六年前的年份
SET @SixYearsAgoYear = @Year - 6;
-- 创建变量来存储拆分后的值
DECLARE @SalesID NVARCHAR(50);
DECLARE @Pos INT;
DECLARE @FSaleOrgId1 NVARCHAR(50);
-- 初始化
SET @FSaleOrgId1 = LTRIM(RTRIM(@FSaleOrgId)) + ',';
SET @Pos = CHARINDEX(',', @FSaleOrgId1);
TRUNCATE TABLE SalesIDTable
-- 循环拆分字符串
WHILE @Pos > 0
BEGIN
SET @SalesID = SUBSTRING(@FSaleOrgId1, 1, @Pos - 1);
INSERT INTO SalesIDTable (SalesID) VALUES (@SalesID);
SET @FSaleOrgId1 = SUBSTRING(@FSaleOrgId1, @Pos + 1, LEN(@FSaleOrgId1));
SET @Pos = CHARINDEX(',', @FSaleOrgId1);
END
--
TRUNCATE TABLE YJPHB_GZTH
--
SELECT A.FID AS FID
INTO #TEMP3
FROM T_SAL_ORDER A
INNER JOIN T_BD_CUSTOMER_L C ON C.FCUSTID= A.FCUSTID AND C.FLOCALEID= 2052
LEFT JOIN V_BD_SALESMAN_L L ON L.fid = A.FSALERID
left JOIN T_PerformanceSharing M ON M.FSOURCEBILLNO = A.FBILLNO AND M.FDOCUMENTSTATUS = 'C'
left JOIN T_PerformanceSharingEntry N ON N.FID=M.FID
LEFT JOIN V_BD_SALESMAN_L O ON O.fid= N.FSALEID
LEFT JOIN ERPTOHR.HYHRV3.dbo.v_erp_empinfo ACO ON ACO.=O.FNAME
LEFT JOIN ERPTOHR.HYHRV3.dbo.v_erp_empinfo ACL ON ACL.=L.FNAME
WHERE A.FSALEORGID = 100302 AND
ACO. = '碳索智控'
OR ACL. = '碳索智控'
OR C.FNAME IN ('派诺科技(香港)有限公司','武汉派诺科技发展有限公司')
OR L.FNAME = '兴诺总'
AND (ISNULL(@FSDate,'') = '' or FORMAT(A.FAPPROVEDATE,'yyyy-MM-dd') >= @FSDate)
AND (ISNULL(@FEDate,'') = '' or FORMAT(A.FAPPROVEDATE,'yyyy-MM-dd') <= @FEDate)
--
SELECT
A.FSALEORGID AS '组织FID',
FORMAT(A.FAPPROVEDATE,'yyyy') AS '年份',
CASE WHEN ISNULL(O.FNAME,'')='' THEN ACL. ELSE ACO. END AS '部门(SBU)',
CASE WHEN ISNULL(O.FNAME,'')='' THEN ACL. ELSE ACO. END AS '区域明细',
CASE WHEN ISNULL(O.FNAME,'')='' THEN L.FNAME ELSE O.FNAME END AS '销售员',
CASE WHEN n.FSHARERATE IS NULL THEN ROUND(F.FALLAMOUNT_LC,10)
ELSE ROUND( F.FALLAMOUNT_LC * (n.FSHARERATE/100) ,10) END as '订单业绩'
INTO #SixYearEMP1
FROM T_SAL_ORDER A --
INNER JOIN T_SAL_orderentry b on a.FID = B.FID --
INNER JOIN T_SAL_ORDERENTRY_F F ON F.FENTRYID = B.FENTRYID
INNER JOIN T_SAL_ORDERENTRY_R AR ON AR.FENTRYID = B.FENTRYID
LEFT JOIN V_BD_SALESMAN_L L ON L.fid = A.FSALERID
left JOIN T_PerformanceSharing M ON M.FSOURCEBILLNO = A.FBILLNO AND M.FDOCUMENTSTATUS = 'C'
left JOIN T_PerformanceSharingEntry N ON N.FID=M.FID
LEFT JOIN V_BD_SALESMAN_L O ON O.fid= N.FSALEID
LEFT JOIN ERPTOHR.HYHRV3.dbo.v_erp_empinfo ACO ON ACO.=O.FNAME AND ISNULL(ACO.,'') != ''
LEFT JOIN ERPTOHR.HYHRV3.dbo.v_erp_empinfo ACL ON ACL.=L.FNAME AND ISNULL(ACL.,'') != ''
WHERE
1=1 AND
A.FID NOT IN(
SELECT FID FROM #TEMP3
)
AND(@FSaleOrgId = '' Or A.FSALEORGID IN (SELECT SalesID FROM SalesIDTable))
AND (ISNULL(@FSDate,'') = '' or FORMAT(A.FAPPROVEDATE,'yyyy') >= @SixYearsAgoYear)
AND (ISNULL(@FEDate,'') = '' or FORMAT(A.FAPPROVEDATE,'yyyy') <= @Year)
AND A.FDocumentStatus = 'C'
AND A.FManualClose <> '1'
AND B.FManualRowClose <> '1'
AND A.F_contractnumber NOT LIKE 'Z%'
--
SELECT
A.FSALEORGID AS '组织FID',
CASE WHEN ISNULL(O.FNAME,'')='' THEN ACL. ELSE ACO. END AS '部门(SBU)',
CASE WHEN ISNULL(O.FNAME,'')='' THEN ACL. ELSE ACO. END AS '区域明细',
CASE WHEN ISNULL(O.FNAME,'')='' THEN L.FNAME ELSE O.FNAME END AS '销售员',
CASE WHEN n.FSHARERATE IS NULL THEN ROUND(F.FALLAMOUNT_LC,10)
ELSE ROUND( F.FALLAMOUNT_LC * (n.FSHARERATE/100) ,10) END as '订单业绩'
INTO #TEMP1
FROM T_SAL_ORDER A --
INNER JOIN T_SAL_orderentry b on a.FID = B.FID --
INNER JOIN T_SAL_ORDERENTRY_F F ON F.FENTRYID = B.FENTRYID
INNER JOIN T_SAL_ORDERENTRY_R AR ON AR.FENTRYID = B.FENTRYID
LEFT JOIN V_BD_SALESMAN_L L ON L.fid = A.FSALERID
left JOIN T_PerformanceSharing M ON M.FSOURCEBILLNO = A.FBILLNO AND M.FDOCUMENTSTATUS = 'C'
left JOIN T_PerformanceSharingEntry N ON N.FID=M.FID
LEFT JOIN V_BD_SALESMAN_L O ON O.fid= N.FSALEID
LEFT JOIN ERPTOHR.HYHRV3.dbo.v_erp_empinfo ACO ON ACO.=O.FNAME AND ISNULL(ACO.,'') != ''
LEFT JOIN ERPTOHR.HYHRV3.dbo.v_erp_empinfo ACL ON ACL.=L.FNAME AND ISNULL(ACL.,'') != ''
WHERE
1=1 AND
A.FID NOT IN(
SELECT FID FROM #TEMP3
)
AND(@FSaleOrgId = '' Or A.FSALEORGID IN(SELECT SalesID FROM SalesIDTable))
AND (ISNULL(@FSDate,'') = '' or FORMAT(A.FAPPROVEDATE,'yyyy-MM-dd') >= @FSDate)
AND (ISNULL(@FEDate,'') = '' or FORMAT(A.FAPPROVEDATE,'yyyy-MM-dd') <= @FEDate)
AND A.FDocumentStatus = 'C'
AND A.FManualClose <> '1'
AND B.FManualRowClose <> '1'
AND A.F_contractnumber NOT LIKE 'Z%'
--
SELECT
A.FSaleOrgId AS '组织FID'
,CASE WHEN ISNULL(O.FNAME,'')='' THEN ACL. ELSE ACO. END AS '部门(SBU)'
,CASE WHEN ISNULL(O.FNAME,'')='' THEN ACL. ELSE ACO. END AS '区域明细'
,CASE WHEN ISNULL(O.FNAME,'')='' THEN XS_L.FNAME
ELSE O.FNAME END AS '销售员'
,CAST(AN.FBillAllAmount_LC - A.F_Amountstar AS DECIMAL(20, 10)) AS '变更金额'
INTO #BGTEMP1
FROM T_SAL_ORDER A
LEFT JOIN T_SAL_ORDERFIN AN ON A.FID = AN.FID --
LEFT JOIN V_BD_SALESMAN XS ON XS.fid = A.FSalerId
LEFT JOIN V_BD_SALESMAN_L XS_L ON XS_L.fid = XS.fid --
left JOIN T_PerformanceSharing M ON M.FSOURCEBILLNO = A.FBILLNO AND M.FDOCUMENTSTATUS = 'C'
left JOIN T_PerformanceSharingEntry N ON N.FID=M.FID --
LEFT JOIN V_BD_SALESMAN_L O ON O.fid= N.FSALEID --
LEFT JOIN ERPTOHR.HYHRV3.dbo.v_erp_empinfo ACO ON ACO.=O.FNAME AND ISNULL(ACO.,'') != ''
LEFT JOIN ERPTOHR.HYHRV3.dbo.v_erp_empinfo ACL ON ACL.=XS_L.FNAME AND ISNULL(ACL.,'') != ''
INNER JOIN T_SEC_USER TU ON A.FChangerId = TU.FUSERID -- 用户单关联表体,获取变更人人
WHERE
A.FID NOT IN(
SELECT FID FROM #TEMP3
)
AND(@FSaleOrgId = '' Or A.FSALEORGID IN (SELECT SalesID FROM SalesIDTable))
AND (ISNULL(@FSDate,'') = '' OR FORMAT(A.FApproveDate,'yyyy-MM-dd') <= @FSDate)
AND FORMAT(A.FDATE,'yyyy') != FORMAT(A.FChangeDate,'yyyy')
AND A.F_contractnumber NOT LIKE 'Z%'
AND A.FManualClose <> '1'
AND (A.F_HSYJ <> '0' OR FORMAT(A.F_HSRQ,'yyyy') != FORMAT(A.FChangeDate,'yyyy'))
AND TU.FNAME NOT LIKE 'ERP%' AND TU.FNAME NOT LIKE '13570668909'
--()
INSERT INTO YJPHB_GZTH([_SBU],[],[],[_含往年订单变更])
SELECT [(SBU)],[],[],SUM([]) AS '订单业绩' FROM #TEMP1 WHERE [组织FID] = 100302 GROUP BY [部门(SBU)],[区域明细],[销售员]
--()
INSERT INTO YJPHB_GZTH([_SBU],[],[],[_含往年订单变更])
SELECT [(SBU)],[],[],SUM([]) AS '订单业绩' FROM #TEMP1 WHERE [组织FID] = 100303 GROUP BY [部门(SBU)],[区域明细],[销售员]
--()
INSERT INTO YJPHB_GZTH([_SBU],[],[],[_含往年订单变更])
SELECT [(SBU)],[],[],SUM([]) AS '订单业绩' FROM #TEMP1 WHERE [组织FID] = 100305 GROUP BY [部门(SBU)],[区域明细],[销售员]
--广()
INSERT INTO YJPHB_GZTH([_SBU],[],[],[广_含往年订单变更])
SELECT [(SBU)],[],[],SUM([]) AS '订单业绩' FROM #TEMP1 WHERE [组织FID] = 438223 GROUP BY [部门(SBU)],[区域明细],[销售员]
--()
INSERT INTO YJPHB_GZTH([_SBU],[],[],[_含往年订单变更])
SELECT [(SBU)],[],[],SUM([]) AS '订单业绩' FROM #TEMP1 WHERE [组织FID] = 438224 GROUP BY [部门(SBU)],[区域明细],[销售员]
--()
INSERT INTO YJPHB_GZTH([_SBU],[],[],[_含往年订单变更])
SELECT [(SBU)],[],[],SUM([]) AS '订单业绩' FROM #TEMP1 WHERE [组织FID] = 533896 GROUP BY [部门(SBU)],[区域明细],[销售员]
--()
INSERT INTO YJPHB_GZTH([_SBU],[],[],[_含往年订单变更])
SELECT [(SBU)],[],[],sum([]) AS '变更金额' FROM #BGTEMP1 WHERE [组织FID] = 100302 GROUP BY [部门(SBU)],[区域明细],[销售员]
--()
INSERT INTO YJPHB_GZTH([_SBU],[],[],[_含往年订单变更])
SELECT [(SBU)],[],[],sum([]) AS '变更金额' FROM #BGTEMP1 WHERE [组织FID] = 100303 GROUP BY [部门(SBU)],[区域明细],[销售员]
--()
INSERT INTO YJPHB_GZTH([_SBU],[],[],[_含往年订单变更])
SELECT [(SBU)],[],[],sum([]) AS '变更金额' FROM #BGTEMP1 WHERE [组织FID] = 100305 GROUP BY [部门(SBU)],[区域明细],[销售员]
--广()
INSERT INTO YJPHB_GZTH([_SBU],[],[],[广_含往年订单变更])
SELECT [(SBU)],[],[],sum([]) AS '变更金额' FROM #BGTEMP1 WHERE [组织FID] = 438223 GROUP BY [部门(SBU)],[区域明细],[销售员]
--()
INSERT INTO YJPHB_GZTH([_SBU],[],[],[_含往年订单变更])
SELECT [(SBU)],[],[],SUM([]) AS '变更金额' FROM #BGTEMP1 WHERE [组织FID] = 438224 GROUP BY [部门(SBU)],[区域明细],[销售员]
--()
INSERT INTO YJPHB_GZTH([_SBU],[],[],[_含往年订单变更])
SELECT [(SBU)],[],[],[] FROM #BGTEMP1 WHERE [组织FID] = 533896;
--2024
INSERT INTO YJPHB_GZTH([_SBU],[],[],[1])
SELECT [(SBU)],[],[],[] FROM #SixYearEMP1 WHERE [年份] = '2024'
--2023
INSERT INTO YJPHB_GZTH([_SBU],[],[],[2])
SELECT [(SBU)],[],[],[] FROM #SixYearEMP1 WHERE [年份] = '2023'
--2022
INSERT INTO YJPHB_GZTH([_SBU],[],[],[3])
SELECT [(SBU)],[],[],[] FROM #SixYearEMP1 WHERE [年份] = '2022'
--2021
INSERT INTO YJPHB_GZTH([_SBU],[],[],[4])
SELECT [(SBU)],[],[],[] FROM #SixYearEMP1 WHERE [年份] = '2021'
--2020
INSERT INTO YJPHB_GZTH([_SBU],[],[],[5])
SELECT [(SBU)],[],[],[] FROM #SixYearEMP1 WHERE [年份] = '2020'
--2019
INSERT INTO YJPHB_GZTH([_SBU],[],[],[6])
SELECT [(SBU)],[],[],[] FROM #SixYearEMP1 WHERE [年份] = '2019'
--
SELECT
A.FSALEORGID AS '销售组织FID',
O.FNAME AS '销售员'
,A.FREALRECAMOUNT AS '收款金额'
,ACO. AS '部门_SBU'
,ACO. AS '区域明细'
INTO #SKTEMP1
FROM T_AR_RECEIVEBILL A
INNER JOIN V_BD_SALESMAN_L O ON O.fid= A.FSALEERID
INNER JOIN ERPTOHR.HYHRV3.dbo.v_erp_empinfo ACO ON ACO.=O.FNAME AND ISNULL(ACO.,'') != ''
WHERE (@FSaleOrgId = '' Or A.FSALEORGID IN (SELECT SalesID FROM SalesIDTable))
--退
SELECT
A.FSALEORGID AS '销售组织FID',
B.FNAME AS '销售员',
A.FREFUNDAMOUNT_H * -1 AS '收款退款金额'
,ACO. AS '部门_SBU'
,ACO. AS '区域明细'
INTO #SKTKTEMP1
FROM T_AR_REFUNDBILL A
INNER JOIN V_BD_SALESMAN_L B ON A.FSALEERID = B.fid
INNER JOIN ERPTOHR.HYHRV3.dbo.v_erp_empinfo ACO ON ACO.=B.FNAME AND ISNULL(ACO.,'') != ''
WHERE (@FSaleOrgId = '' Or A.FSALEORGID IN (SELECT SalesID FROM SalesIDTable))
--(线)
--
INSERT INTO YJPHB_GZTH([_SBU],[],[],[])
SELECT [_SBU],[],[],[] FROM #SKTEMP1 WHERE [销售组织FID] = '100303'
--退
INSERT INTO YJPHB_GZTH([_SBU],[],[],[])
SELECT [_SBU],[], [],[退] FROM #SKTKTEMP1 WHERE [销售组织FID] = '100303'
--
INSERT INTO YJPHB_GZTH([_SBU],[],[],[])
SELECT [_SBU],[], [],[] FROM #SKTEMP1 WHERE [销售组织FID] = '100305'
--退
INSERT INTO YJPHB_GZTH([_SBU],[],[],[])
SELECT [_SBU],[], [],[退] FROM #SKTKTEMP1 WHERE [销售组织FID] = '100305'
--广
INSERT INTO YJPHB_GZTH([_SBU],[],[],[])
SELECT [_SBU],[], [],[] FROM #SKTEMP1 WHERE [销售组织FID] = '438223'
--广+退
INSERT INTO YJPHB_GZTH([_SBU],[],[],[])
SELECT [_SBU],[],[],[退] FROM #SKTKTEMP1 WHERE [销售组织FID] = '438223'
--
INSERT INTO YJPHB_GZTH( [_SBU],[],[],[])
SELECT[_SBU],[],[],[] FROM #SKTEMP1 WHERE [销售组织FID] = '438224'
--退
INSERT INTO YJPHB_GZTH([_SBU],[],[],[])
SELECT [_SBU],[], [],[退] FROM #SKTKTEMP1 WHERE [销售组织FID] = '438224'
--
INSERT INTO YJPHB_GZTH([_SBU],[],[],[])
SELECT [_SBU],[],[],[] FROM #SKTEMP1 WHERE [销售组织FID] = '533896'
--退
INSERT INTO YJPHB_GZTH([_SBU],[],[],[])
SELECT [_SBU],[],[],[退] FROM #SKTKTEMP1 WHERE [销售组织FID] = '533896'
--
SELECT *
INTO #TEMP2
FROM
(
SELECT [_SBU],[],[],
SUM([_含往年订单变更]) AS '派诺业绩_含往年订单变更',
SUM([_含往年订单变更]) AS '兴诺业绩_含往年订单变更',
SUM([_含往年订单变更]) AS '武汉派诺业绩_含往年订单变更',
SUM([广_含往年订单变更]) AS '广东碳索业绩_含往年订单变更',
SUM([_含往年订单变更]) AS '香港派诺业绩_含往年订单变更',
SUM([_含往年订单变更]) AS '华夏云联业绩_含往年订单变更',
SUM([]) AS '派诺累计回款额',
SUM([]) AS '兴诺累计回款额',
SUM([]) AS '武汉派诺累计回款额',
SUM([广]) AS '广东碳索累计回款额',
SUM([]) AS '香港派诺累计回款额',
SUM([]) AS '华夏云联累计回款额',
SUM([1]) AS '年度销售额1',
SUM([2]) AS '年度销售额2',
SUM([3]) AS '年度销售额3',
SUM([4]) AS '年度销售额4',
SUM([5]) AS '年度销售额5',
SUM([6]) AS '年度销售额6'
FROM YJPHB_GZTH
GROUP BY [_SBU],[],[]
) AS IDa
--
TRUNCATE TABLE YJPHB_GZTH
--
INSERT INTO YJPHB_GZTH([_SBU],[],[],[_含往年订单变更],[_含往年订单变更],
[_含往年订单变更],[广_含往年订单变更],[_含往年订单变更],[_含往年订单变更]
,[],[],[],[广],[],[]
,[1],[2],[3],[4],[5],[6])
SELECT * FROM #TEMP2
--
update A
SET [] = B.[]
FROM YJPHB_GZTH A
INNER JOIN (SELECT [],SUM([]) AS '订单业绩' FROM #TEMP1 GROUP BY [销售员]) B ON A.[姓名] = B.[销售员]
--
update A
SET [] = B.[]
FROM YJPHB_GZTH A
INNER JOIN (SELECT [],SUM([]) AS '变更金额' FROM #BGTEMP1 GROUP BY [销售员]) B ON A.[姓名] = B.[销售员]
---()
UPDATE YJPHB_GZTH
SET [_已进行集团业绩调整_含往年订单变更] = ISNULL([_含往年订单变更],0) + ISNULL([_含往年订单变更],0) + ISNULL([_含往年订单变更],0)
+ISNULL([广_含往年订单变更],0) + ISNULL([_含往年订单变更],0) + ISNULL([_含往年订单变更],0);
--
UPDATE YJPHB_GZTH
SET [] = ISNULL([],0);
--YJPHB_GZTH表中
WITH RankedPositions AS (
SELECT B.FNAME AS '员工姓名',
D.FNAME AS '就任岗位',
C.FWORKORGID AS '就任组织FID',
ROW_NUMBER() OVER(
PARTITION BY B.FNAME
ORDER BY
CASE WHEN C.FWORKORGID = '100302' THEN 1 ELSE 2 END,
C.FWORKORGID DESC
)AS Rank
FROM YJPHB_GZTH A
INNER JOIN T_HR_EMPINFO_L B ON A.[] = B.FNAME
INNER JOIN T_BD_STAFFTEMP C ON C.FID = B.FID
INNER JOIN T_ORG_POST_L D ON C.FPOSTID = D.FPOSTID
)
SELECT [],[]
INTO #YGTEMP1
FROM RankedPositions
WHERE RANK = 1
--
UPDATE A
SET [] = B.[]
FROM YJPHB_GZTH A
INNER JOIN #YGTEMP1 B ON A.[姓名] = B.[员工姓名]
--
SELECT B.FNAME AS '员工姓名',
MIN(C.FSTARTDATE) AS '就任岗时间'
INTO #DateTEMP3
FROM YJPHB_GZTH A
INNER JOIN T_HR_EMPINFO_L B ON A.[] = B.FNAME
INNER JOIN T_BD_STAFFTEMP C ON C.FID = B.FID
INNER JOIN T_ORG_POST_L D ON C.FPOSTID = D.FPOSTID
GROUP BY B.FNAME
--
update A
SET A.[] = CONVERT(NVARCHAR(10), B.[], 120),A.[]= B.[],A.[] = B.[]
FROM YJPHB_GZTH A
INNER JOIN #DateTEMP3 B ON A.[姓名] = B.[员工姓名]
--
UPDATE A
SET A.[] = CAST(ROUND((DATEDIFF(DAY, A.[], @FEDateDate) / 365.0), 1) AS DECIMAL(23,1))
FROM YJPHB_GZTH A
DROP TABLE #TEMP1,#TEMP2,#TEMP3,#BGTEMP1,#YGTEMP1,#DateTEMP3,#SKTEMP1,#SKTKTEMP1,#SixYearEMP1
END;