1
|
-- BIEU DO O3 NGAN SACH
|
2
|
ALTER PROC dbo.DB_BUDGET_PIE
|
3
|
@p_USER_LOGIN VARCHAR(250) = NULL,
|
4
|
@p_YEAR VARCHAR(4) = NULL, -- YEAR
|
5
|
@p_DATE VARCHAR(20) = NULL, -- DD/MM/YYYY
|
6
|
@p_GD_ID VARCHAR(15) = NULL, -- GD_NAME
|
7
|
@p_PLAN_TYPE_ID VARCHAR(15) = NULL, -- BUDGET TYPE
|
8
|
@p_GD_TYPE_ID VARCHAR(15) = NULL, -- BUDGET GROUP
|
9
|
@p_BRANCH_ID VARCHAR(15) = NULL, -- BRANCH NAME
|
10
|
@p_FILTER VARCHAR(15) = NULL -- BRANCH NAME
|
11
|
AS
|
12
|
BEGIN
|
13
|
DECLARE @TABLE_BRANCH TABLE(
|
14
|
BRANCH_ID VARCHAR(15)
|
15
|
)
|
16
|
DECLARE @BRANCH_LOGIN varchar(15) =''
|
17
|
DECLARE @DEP_LOGIN varchar(15) =''
|
18
|
SELECT @BRANCH_LOGIN = TLSUBBRID, @DEP_LOGIN = SECUR_CODE FROM TL_USER WHERE TLNANME = @p_USER_LOGIN
|
19
|
insert into @TABLE_BRANCH SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID_Funct](@BRANCH_LOGIN)
|
20
|
DECLARE @TONG_CHI_PHI FLOAT = 0
|
21
|
|
22
|
DECLARE @RESULT TABLE(
|
23
|
[MADE] FLOAT,
|
24
|
[DOING] FLOAT,
|
25
|
[RESIDUAL] FLOAT
|
26
|
)
|
27
|
INSERT INTO @RESULT select
|
28
|
ISNULL(SUM(SD.NS_SU_DUNG),0) AS [MADE],
|
29
|
ISNULL(SUM(NSDT.NS_DANG_TRINH),0) AS [DOING] ,
|
30
|
--SUM(NS_CHO.NS_TRANSFER) AS NS_TRANSFER , SUM(NS_NHAN.NS_RECIVER) AS NS_TRANSFER,
|
31
|
--SUM(NS_SD_TT.NS_SD_REAL) AS DA_THUC_HIEN,
|
32
|
ISNULL(SUM(A.AMT_APP),0) + ISNULL(SUM(NS_NHAN.NS_RECIVER),0) - ISNULL(SUM(NS_CHO.NS_TRANSFER),0) - ISNULL(SUM(SD.NS_SU_DUNG),0) - ISNULL(SUM(NSDT.NS_DANG_TRINH),0) AS [RESIDUAL]
|
33
|
FROM PL_TRADEDETAIL
|
34
|
A
|
35
|
LEFT JOIN PL_MASTER M ON A.PLAN_ID =M.PLAN_ID
|
36
|
LEFT JOIN CM_GOODS G ON A.GOODS_ID=G.GD_ID
|
37
|
LEFT JOIN CM_GOODSTYPE GT ON GT.GD_TYPE_CODE IN (SELECT G.GD_TYPE_CODE FROM WSISPLIT(G.GD_CODE,'.') J JOIN CM_GOODSTYPE G ON G.GD_TYPE_CODE = J.VALUE)
|
38
|
LEFT JOIN
|
39
|
(
|
40
|
SELECT A.TRADE_ID, SUM (A.TOTAL_AMT) AS NS_SU_DUNG
|
41
|
FROM PL_REQUEST_DOC_DT A
|
42
|
INNER JOIN PL_REQUEST_DOC B ON A.REQ_ID = B.REQ_ID
|
43
|
WHERE 1 = 1
|
44
|
AND ((@p_FILTER = 'cumulative' AND B.EFFEC_DT <= CONVERT(datetime,@p_DATE,103)) OR (@p_FILTER = 'year' AND YEAR(B.EFFEC_DT) <= CONVERT(INT,@p_YEAR)))
|
45
|
AND B.PROCESS_ID ='APPROVE'
|
46
|
GROUP BY A.TRADE_ID
|
47
|
) SD ON SD.TRADE_ID = A.TRADE_ID
|
48
|
LEFT JOIN
|
49
|
(
|
50
|
SELECT A.TRADE_ID, SUM (A.TOTAL_AMT) AS NS_DANG_TRINH
|
51
|
FROM PL_REQUEST_DOC_DT A
|
52
|
INNER JOIN PL_REQUEST_DOC B ON A.REQ_ID = B.REQ_ID
|
53
|
INNER JOIN PL_REQUEST_PROCESS D ON B.REQ_ID = D.REQ_ID AND D.[STATUS] = 'C'
|
54
|
WHERE ((@p_FILTER = 'cumulative' AND D.APPROVE_DT <= CONVERT(datetime,@p_DATE,103)) OR (@p_FILTER = 'year' AND YEAR(D.APPROVE_DT) <= CONVERT(INT,@p_YEAR)))
|
55
|
AND D.PROCESS_ID NOT IN ('APPROVE','APPNEW')
|
56
|
GROUP BY A.TRADE_ID
|
57
|
) NSDT ON NSDT.TRADE_ID = A.TRADE_ID
|
58
|
---- NS MANG ĐI CHO
|
59
|
LEFT JOIN
|
60
|
(
|
61
|
SELECT A.FR_TRADE_ID, SUM (A.TOTAL_AMT) AS NS_TRANSFER
|
62
|
FROM PL_REQUEST_TRANSFER A
|
63
|
INNER JOIN PL_REQUEST_DOC B ON A.REQ_DOC_ID = B.REQ_ID
|
64
|
WHERE 1=1
|
65
|
AND ((@p_FILTER = 'cumulative' AND B.EFFEC_DT <= CONVERT(datetime,@p_DATE,103)) OR (@p_FILTER = 'year' AND YEAR(B.EFFEC_DT) <= CONVERT(INT,@p_YEAR)))
|
66
|
AND B.PROCESS_ID ='APPROVE'
|
67
|
GROUP BY A.FR_TRADE_ID
|
68
|
|
69
|
) NS_CHO ON NS_CHO.FR_TRADE_ID = A.TRADE_ID
|
70
|
|
71
|
---- NS NHẬN ĐƯỢC
|
72
|
LEFT JOIN
|
73
|
(
|
74
|
SELECT A.TO_TRADE_ID, SUM (A.TOTAL_AMT) AS NS_RECIVER
|
75
|
--- BẢNG SỬ DỤNG NGÂN SÁCH
|
76
|
FROM PL_REQUEST_TRANSFER A
|
77
|
--- BẢNG CHỨA THÔNG TIN CỘT MỐC NGÀY HOÀN TẤT TỜ TRÌNH
|
78
|
INNER JOIN PL_REQUEST_DOC B ON A.REQ_DOC_ID = B.REQ_ID
|
79
|
WHERE 1=1
|
80
|
AND ((@p_FILTER = 'cumulative' AND B.EFFEC_DT <= CONVERT(datetime,@p_DATE,103)) OR (@p_FILTER = 'year' AND YEAR(B.EFFEC_DT) <= CONVERT(INT,@p_YEAR)))
|
81
|
AND B.PROCESS_ID ='APPROVE'
|
82
|
GROUP BY A.TO_TRADE_ID
|
83
|
|
84
|
) NS_NHAN ON NS_NHAN.TO_TRADE_ID = A.TRADE_ID
|
85
|
--- NS SỬ DỤNG THỰC TẾ
|
86
|
-- LEFT JOIN
|
87
|
-- (
|
88
|
-- SELECT A.TRADE_ID, SUM (A.AMT_EXE) AS NS_SD_REAL
|
89
|
-- FROM TR_REQ_PAY_BUDGET A
|
90
|
-- INNER JOIN TR_REQ_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID
|
91
|
-- WHERE 1=1
|
92
|
-- --AND B.APPROVE_DT_KT <= CONVERT(datetime,@p_DATE,103)
|
93
|
-- AND B.AUTH_STATUS_KT ='A'
|
94
|
--
|
95
|
-- AND
|
96
|
-- (
|
97
|
-- EXISTS(
|
98
|
-- SELECT PLAN_TYPE_ID FROM CM_PLAN_TYPE PL WHERE PLAN_TYPE_ID
|
99
|
-- IN
|
100
|
-- (SELECT PLAN_TYPE_ID FROM PL_MASTER PLM
|
101
|
-- LEFT JOIN PL_TRADEDETAIL TRD ON TRD.GOODS_ID = GD_ID
|
102
|
-- WHERE PL.PLAN_TYPE_ID = @p_PLAN_TYPE_ID
|
103
|
-- AND PLM.PLAN_ID = TRD.PLAN_ID
|
104
|
-- )
|
105
|
-- )OR @p_PLAN_TYPE_ID IS NULL OR @p_PLAN_TYPE_ID = ''
|
106
|
-- )
|
107
|
-- AND (B.BRANCH_ID= @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '' OR B.DEP_ID = @p_BRANCH_ID)
|
108
|
-- AND ((EXISTS(SELECT A.ID FROM PL_ROLE_DATA_CONFIG A WHERE A.ROLE_TYPE = 'DASHBOARD_ALL' AND A.BRANCH_ID = @BRANCH_LOGIN AND A.DEP_ID = @DEP_LOGIN)
|
109
|
-- AND EXISTS(SELECT BRANCH_ID FROM @TABLE_BRANCH X WHERE X.BRANCH_ID = B.BRANCH_ID))
|
110
|
-- OR (NOT EXISTS(SELECT A.ID FROM PL_ROLE_DATA_CONFIG A WHERE A.ROLE_TYPE = 'DASHBOARD_ALL' AND A.BRANCH_ID = @BRANCH_LOGIN AND A.DEP_ID = @DEP_LOGIN)
|
111
|
-- AND B.BRANCH_ID = @BRANCH_LOGIN AND (B.DEP_ID = @DEP_LOGIN OR @BRANCH_LOGIN <> 'DV0001')))
|
112
|
-- --AND
|
113
|
-- GROUP BY A.TRADE_ID
|
114
|
--
|
115
|
-- ) NS_SD_TT ON NS_SD_TT.TRADE_ID = A.TRADE_ID
|
116
|
|
117
|
WHERE 1=1
|
118
|
AND (M.BRANCH_ID= @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '' OR M.DEPT_ID = @p_BRANCH_ID)
|
119
|
AND ((EXISTS(SELECT A.ID FROM PL_ROLE_DATA_CONFIG A WHERE A.ROLE_TYPE = 'DASHBOARD_ALL' AND A.BRANCH_ID = @BRANCH_LOGIN AND A.DEP_ID = @DEP_LOGIN)
|
120
|
AND EXISTS(SELECT BRANCH_ID FROM @TABLE_BRANCH X WHERE X.BRANCH_ID = M.BRANCH_ID))
|
121
|
OR (NOT EXISTS(SELECT A.ID FROM PL_ROLE_DATA_CONFIG A WHERE A.ROLE_TYPE = 'DASHBOARD_ALL' AND A.BRANCH_ID = @BRANCH_LOGIN AND A.DEP_ID = @DEP_LOGIN)
|
122
|
AND M.BRANCH_ID = @BRANCH_LOGIN AND (M.DEPT_ID = @DEP_LOGIN OR @BRANCH_LOGIN <> 'DV0001')))
|
123
|
AND (M.PLAN_TYPE_ID= @p_PLAN_TYPE_ID OR @p_PLAN_TYPE_ID IS NULL OR @p_PLAN_TYPE_ID = '')
|
124
|
AND (GT.GD_TYPE_ID= @p_GD_TYPE_ID OR @p_GD_TYPE_ID IS NULL OR @p_GD_TYPE_ID = '')
|
125
|
AND (YEAR(M.YEAR)=@p_YEAR OR @p_YEAR IS NULL OR @p_YEAR = '' )
|
126
|
|
127
|
select @TONG_CHI_PHI = CASE WHEN ISNULL(MADE,0) + ISNULL(DOING,0) + ISNULL(RESIDUAL,0) = 0 THEN NULL ELSE ISNULL(MADE,0) + ISNULL(DOING,0) + ISNULL(RESIDUAL,0) END from @RESULT
|
128
|
----------CHUYỂN SANG %-----------
|
129
|
UPDATE @RESULT SET
|
130
|
MADE = ROUND(MADE * 100 / @TONG_CHI_PHI,2),
|
131
|
DOING = ROUND(DOING * 100 / @TONG_CHI_PHI,2),
|
132
|
RESIDUAL = ROUND(RESIDUAL * 100 / @TONG_CHI_PHI,2)
|
133
|
----------CHUYỂN SANG %-----------
|
134
|
SELECT * FROM @RESULT
|
135
|
END
|