Project

General

Profile

DB_BUDGET_BAR.txt

Luc Tran Van, 03/01/2023 04:07 PM

 
1

    
2
-- BIEU DO O1 NGAN SACH
3
ALTER   PROC dbo.DB_BUDGET_BAR
4
@p_USER_LOGIN VARCHAR(250) = NULL,
5
@p_YEAR VARCHAR(4) = NULL, -- YEAR
6
@p_DATE VARCHAR(20) = NULL, -- DD/MM/YYYY
7
@p_GD_ID VARCHAR(15) = NULL, -- GD_NAME
8
@p_PLAN_TYPE_ID VARCHAR(15) = NULL, -- BUDGET TYPE
9
@p_GD_TYPE_ID VARCHAR(15) = NULL, -- BUDGET GROUP
10
@p_BRANCH_ID VARCHAR(15) = NULL, -- BRANCH NAME
11
@p_FILTER VARCHAR(15) = NULL
12
AS
13
BEGIN
14
	DECLARE @TABLE_BRANCH TABLE(
15
		BRANCH_ID VARCHAR(15)
16
	)
17
	DECLARE @BRANCH_LOGIN varchar(15) =''
18
  DECLARE @DEP_LOGIN varchar(15) =''
19
	SELECT @BRANCH_LOGIN = TLSUBBRID FROM TL_USER WHERE TLNANME = @p_USER_LOGIN
20
  SELECT @DEP_LOGIN = tu.SECUR_CODE FROM TL_USER tu WHERE tu.TLNANME = @p_USER_LOGIN
21
	insert into @TABLE_BRANCH SELECT BRANCH_ID  FROM [dbo].[CM_BRANCH_GETCHILDID_Funct](@BRANCH_LOGIN)
22

    
23
	IF(@p_FILTER ='cumulative')
24
	BEGIN
25
	--table 1
26
	SELECT YEAR( CONVERT(datetime,@p_DATE,103)) AS [YEAR],
27
	ROUND( SUM(A.AMT_APP) /1000000000,2)AS [PLAN]
28
			FROM PL_TRADEDETAIL A
29
			LEFT JOIN PL_MASTER M ON A.PLAN_ID =M.PLAN_ID
30
			LEFT JOIN CM_GOODS G ON A.GOODS_ID=G.GD_ID
31
			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)
32
			WHERE 1=1
33
			AND (M.YEAR = YEAR( CONVERT(datetime,@p_DATE,103)))
34
			AND (M.BRANCH_ID= @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '' OR M.DEPT_ID = @p_BRANCH_ID)
35
      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)
36
          AND EXISTS(SELECT BRANCH_ID FROM @TABLE_BRANCH B WHERE B.BRANCH_ID = M.BRANCH_ID))
37
        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)
38
          AND M.BRANCH_ID = @BRANCH_LOGIN AND (M.DEPT_ID = @DEP_LOGIN OR @BRANCH_LOGIN <> 'DV0001')))
39
			AND (M.PLAN_TYPE_ID= @p_PLAN_TYPE_ID OR @p_PLAN_TYPE_ID IS NULL OR @p_PLAN_TYPE_ID = '')
40
			AND (GT.GD_TYPE_ID= @p_GD_TYPE_ID OR @p_GD_TYPE_ID IS NULL OR @p_GD_TYPE_ID = '')
41

    
42
			--table2
43

    
44
		SELECT YEAR( CONVERT(datetime,@p_DATE,103)) AS [YEAR],
45
			'' AS [MONTH],
46
			ROUND(	SUM(SD.NS_SU_DUNG)/1000000000 ,2)AS [MADE],
47
			ROUND( SUM(NSDT.NS_DANG_TRINH)/1000000000,2) AS [DOING],
48
			--SUM(NS_CHO.NS_TRANSFER) AS NS_TRANSFER , SUM(NS_NHAN.NS_RECIVER) AS NS_TRANSFER, 
49
			--SUM(NS_SD_TT.NS_SD_REAL) AS DA_THUC_HIEN,
50
			ROUND(( SUM(A.AMT_APP) + 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))/1000000000 ,2) AS [RESIDUAL]
51
			FROM PL_TRADEDETAIL
52
			A
53
			LEFT JOIN PL_MASTER M ON A.PLAN_ID =M.PLAN_ID
54
			LEFT JOIN CM_GOODS G ON A.GOODS_ID=G.GD_ID
55
			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)
56
			LEFT JOIN
57
			(
58
				SELECT A.TRADE_ID, SUM (A.TOTAL_AMT) AS NS_SU_DUNG
59
				FROM PL_REQUEST_DOC_DT A
60
				INNER JOIN PL_REQUEST_DOC B ON A.REQ_ID = B.REQ_ID
61
				WHERE B.EFFEC_DT <= CONVERT(datetime,@p_DATE,103) AND B.PROCESS_ID ='APPROVE'
62
				GROUP BY A.TRADE_ID
63
			) SD ON SD.TRADE_ID = A.TRADE_ID
64
			LEFT JOIN
65
			(
66
				SELECT A.TRADE_ID, SUM (A.TOTAL_AMT) AS NS_DANG_TRINH
67
				FROM PL_REQUEST_DOC_DT A
68
				INNER JOIN PL_REQUEST_DOC B ON A.REQ_ID = B.REQ_ID
69
				INNER JOIN PL_REQUEST_PROCESS D ON B.REQ_ID = D.REQ_ID AND D.[STATUS] = 'C'
70
				WHERE D.APPROVE_DT <= CONVERT(datetime,@p_DATE,103) AND D.PROCESS_ID NOT IN ('APPROVE','APPNEW')
71
				GROUP BY A.TRADE_ID
72
			) NSDT ON NSDT.TRADE_ID = A.TRADE_ID
73
			---- NS MANG ĐI CHO
74
			LEFT JOIN
75
			(
76
				SELECT A.FR_TRADE_ID, SUM (A.TOTAL_AMT) AS NS_TRANSFER
77
				FROM PL_REQUEST_TRANSFER A
78
				INNER JOIN PL_REQUEST_DOC B ON A.REQ_DOC_ID = B.REQ_ID
79
				WHERE B.EFFEC_DT <= CONVERT(datetime,@p_DATE,103) AND B.PROCESS_ID ='APPROVE'
80
				GROUP BY A.FR_TRADE_ID
81
			) NS_CHO ON NS_CHO.FR_TRADE_ID = A.TRADE_ID
82

    
83
			---- NS NHẬN ĐƯỢC
84
			LEFT JOIN
85
			(
86
				SELECT A.TO_TRADE_ID, SUM (A.TOTAL_AMT) AS NS_RECIVER
87
				--- BẢNG SỬ DỤNG NGÂN SÁCH
88
				FROM PL_REQUEST_TRANSFER A
89
				--- BẢNG CHỨA THÔNG TIN CỘT MỐC NGÀY HOÀN TẤT TỜ TRÌNH
90
				INNER JOIN PL_REQUEST_DOC B ON A.REQ_DOC_ID = B.REQ_ID
91
				WHERE B.EFFEC_DT <= CONVERT(datetime,@p_DATE,103) AND B.PROCESS_ID ='APPROVE'
92
				GROUP BY A.TO_TRADE_ID
93

    
94
			) NS_NHAN ON NS_NHAN.TO_TRADE_ID = A.TRADE_ID
95
			--- NS SỬ DỤNG THỰC TẾ
96
			LEFT JOIN
97
			(
98
				SELECT A.TRADE_ID, SUM (A.AMT_EXE) AS NS_SD_REAL
99
				FROM TR_REQ_PAY_BUDGET A
100
				INNER JOIN TR_REQ_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID
101
				WHERE B.APPROVE_DT_KT <= CONVERT(datetime,@p_DATE,103) AND B.AUTH_STATUS_KT ='A'
102
			AND
103
			(
104
			EXISTS(
105
					SELECT PLAN_TYPE_ID FROM CM_PLAN_TYPE PL WHERE PLAN_TYPE_ID IN
106
					( SELECT PLAN_TYPE_ID FROM PL_MASTER PLM
107
						LEFT JOIN PL_TRADEDETAIL TRD ON TRD.GOODS_ID = GD_ID
108
						WHERE PL.PLAN_TYPE_ID = @p_PLAN_TYPE_ID
109
						AND PLM.PLAN_ID = TRD.PLAN_ID
110
					) 
111
				)OR @p_PLAN_TYPE_ID IS NULL OR @p_PLAN_TYPE_ID = ''
112
			)
113
			AND (B.BRANCH_ID= @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = ''  OR B.DEP_ID = @p_BRANCH_ID)
114
			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)
115
          AND EXISTS(SELECT BRANCH_ID FROM @TABLE_BRANCH X WHERE X.BRANCH_ID = B.BRANCH_ID))
116
        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)
117
          AND B.BRANCH_ID = @BRANCH_LOGIN AND (B.DEP_ID = @DEP_LOGIN OR @BRANCH_LOGIN <> 'DV0001')))
118
			--AND 
119
			GROUP BY A.TRADE_ID
120

    
121
			) NS_SD_TT ON NS_SD_TT.TRADE_ID = A.TRADE_ID
122

    
123
			WHERE 1=1
124
			AND (M.YEAR = YEAR( CONVERT(datetime,@p_DATE,103)))
125
			AND (M.BRANCH_ID= @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '' OR M.DEPT_ID = @p_BRANCH_ID)
126
			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)
127
          AND EXISTS(SELECT BRANCH_ID FROM @TABLE_BRANCH B WHERE B.BRANCH_ID = M.BRANCH_ID))
128
        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)
129
          AND M.BRANCH_ID = @BRANCH_LOGIN AND (M.DEPT_ID = @DEP_LOGIN OR @BRANCH_LOGIN <> 'DV0001')))
130
			AND (M.PLAN_TYPE_ID= @p_PLAN_TYPE_ID OR @p_PLAN_TYPE_ID IS NULL OR @p_PLAN_TYPE_ID = '')
131
			AND (GT.GD_TYPE_ID= @p_GD_TYPE_ID OR @p_GD_TYPE_ID IS NULL OR @p_GD_TYPE_ID = '')
132
	END
133
	IF(@p_FILTER ='year')
134
	BEGIN
135
		--table 1
136
	SELECT CONVERT(INT,@p_YEAR) AS [YEAR],
137
	ROUND( SUM(A.AMT_APP) /1000000000,2)AS [PLAN]
138
			FROM PL_TRADEDETAIL A
139
			LEFT JOIN PL_MASTER M ON A.PLAN_ID =M.PLAN_ID
140
			LEFT JOIN CM_GOODS G ON A.GOODS_ID=G.GD_ID
141
			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)
142
			WHERE 1=1
143
			AND (M.YEAR =  CONVERT(INT,@p_YEAR))
144
			AND (M.BRANCH_ID= @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '' OR M.DEPT_ID = @p_BRANCH_ID)
145
			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)
146
          AND EXISTS(SELECT BRANCH_ID FROM @TABLE_BRANCH B WHERE B.BRANCH_ID = M.BRANCH_ID))
147
        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)
148
          AND M.BRANCH_ID = @BRANCH_LOGIN AND (M.DEPT_ID = @DEP_LOGIN OR @BRANCH_LOGIN <> 'DV0001')))
149
			AND (M.PLAN_TYPE_ID= @p_PLAN_TYPE_ID OR @p_PLAN_TYPE_ID IS NULL OR @p_PLAN_TYPE_ID = '')
150
			AND (GT.GD_TYPE_ID= @p_GD_TYPE_ID OR @p_GD_TYPE_ID IS NULL OR @p_GD_TYPE_ID = '')
151

    
152
			--table2
153

    
154
		SELECT CONVERT(INT,@p_YEAR) AS [YEAR],
155
			'' AS [MONTH],
156
			ROUND(	SUM(SD.NS_SU_DUNG)/1000000000 ,2)AS [MADE],
157
			ROUND( SUM(NSDT.NS_DANG_TRINH)/1000000000,2) AS [DOING],
158
			--SUM(NS_CHO.NS_TRANSFER) AS NS_TRANSFER , SUM(NS_NHAN.NS_RECIVER) AS NS_TRANSFER, 
159
			--SUM(NS_SD_TT.NS_SD_REAL) AS DA_THUC_HIEN,
160
			ROUND(( SUM(A.AMT_APP) + 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))/1000000000 ,2) AS [RESIDUAL]
161
			FROM PL_TRADEDETAIL
162
			A
163
			LEFT JOIN PL_MASTER M ON A.PLAN_ID =M.PLAN_ID
164
			LEFT JOIN CM_GOODS G ON A.GOODS_ID=G.GD_ID
165
			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)
166
			LEFT JOIN
167
			(
168
				SELECT A.TRADE_ID, SUM (A.TOTAL_AMT) AS NS_SU_DUNG
169
				FROM PL_REQUEST_DOC_DT A
170
				INNER JOIN PL_REQUEST_DOC B ON A.REQ_ID = B.REQ_ID
171
				WHERE YEAR(B.EFFEC_DT) <= CONVERT(INT,@p_YEAR) AND B.PROCESS_ID ='APPROVE'
172
				GROUP BY A.TRADE_ID
173
			) SD ON SD.TRADE_ID = A.TRADE_ID
174
			LEFT JOIN
175
			(
176
				SELECT A.TRADE_ID, SUM (A.TOTAL_AMT) AS NS_DANG_TRINH
177
				FROM PL_REQUEST_DOC_DT A
178
				INNER JOIN PL_REQUEST_DOC B ON A.REQ_ID = B.REQ_ID
179
				INNER JOIN PL_REQUEST_PROCESS D ON B.REQ_ID = D.REQ_ID AND D.[STATUS] = 'C'
180
				WHERE YEAR(D.APPROVE_DT) <=  CONVERT(INT,@p_YEAR) AND D.PROCESS_ID NOT IN ('APPROVE','APPNEW')
181
				GROUP BY A.TRADE_ID
182
			) NSDT ON NSDT.TRADE_ID = A.TRADE_ID
183
			---- NS MANG ĐI CHO
184
			LEFT JOIN
185
			(
186
				SELECT A.FR_TRADE_ID, SUM (A.TOTAL_AMT) AS NS_TRANSFER
187
				FROM PL_REQUEST_TRANSFER A
188
				INNER JOIN PL_REQUEST_DOC B ON A.REQ_DOC_ID = B.REQ_ID
189
				WHERE YEAR(B.EFFEC_DT) <= CONVERT(INT,@p_YEAR) AND B.PROCESS_ID ='APPROVE'
190
				GROUP BY A.FR_TRADE_ID
191
			) NS_CHO ON NS_CHO.FR_TRADE_ID = A.TRADE_ID
192

    
193
			---- NS NHẬN ĐƯỢC
194
			LEFT JOIN
195
			(
196
				SELECT A.TO_TRADE_ID, SUM (A.TOTAL_AMT) AS NS_RECIVER
197
				--- BẢNG SỬ DỤNG NGÂN SÁCH
198
				FROM PL_REQUEST_TRANSFER A
199
				--- BẢNG CHỨA THÔNG TIN CỘT MỐC NGÀY HOÀN TẤT TỜ TRÌNH
200
				INNER JOIN PL_REQUEST_DOC B ON A.REQ_DOC_ID = B.REQ_ID
201
				WHERE YEAR(B.EFFEC_DT) <= CONVERT(INT,@p_YEAR) AND B.PROCESS_ID ='APPROVE'
202
				GROUP BY A.TO_TRADE_ID
203
			) NS_NHAN ON NS_NHAN.TO_TRADE_ID = A.TRADE_ID
204
			--- NS SỬ DỤNG THỰC TẾ
205
			LEFT JOIN
206
			(
207
				SELECT A.TRADE_ID, SUM (A.AMT_EXE) AS NS_SD_REAL
208
				FROM TR_REQ_PAY_BUDGET A
209
				INNER JOIN TR_REQ_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID
210
				WHERE YEAR(B.APPROVE_DT_KT) <= CONVERT(INT,@p_YEAR) AND B.AUTH_STATUS_KT ='A'
211
			AND
212
			(
213
			EXISTS(
214
					SELECT PLAN_TYPE_ID FROM CM_PLAN_TYPE PL WHERE PLAN_TYPE_ID IN
215
					( SELECT PLAN_TYPE_ID FROM PL_MASTER PLM
216
						LEFT JOIN PL_TRADEDETAIL TRD ON TRD.GOODS_ID = GD_ID
217
						WHERE PL.PLAN_TYPE_ID = @p_PLAN_TYPE_ID
218
						AND PLM.PLAN_ID = TRD.PLAN_ID
219
					) 
220
				)OR @p_PLAN_TYPE_ID IS NULL OR @p_PLAN_TYPE_ID = ''
221
			)
222
			AND (B.BRANCH_ID= @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '' OR B.DEP_ID = @p_BRANCH_ID)
223
			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)
224
          AND EXISTS(SELECT BRANCH_ID FROM @TABLE_BRANCH X WHERE X.BRANCH_ID = B.BRANCH_ID))
225
        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)
226
          AND B.BRANCH_ID = @BRANCH_LOGIN AND (B.DEP_ID = @DEP_LOGIN OR @BRANCH_LOGIN <> 'DV0001')))
227
			--AND 
228
			GROUP BY A.TRADE_ID
229

    
230
			) NS_SD_TT ON NS_SD_TT.TRADE_ID = A.TRADE_ID
231

    
232
			WHERE 1=1
233
			AND (M.YEAR = CONVERT(INT,@p_YEAR))
234
			AND (M.BRANCH_ID= @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '' OR M.DEPT_ID = @p_BRANCH_ID)
235
			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)
236
          AND EXISTS(SELECT BRANCH_ID FROM @TABLE_BRANCH B WHERE B.BRANCH_ID = M.BRANCH_ID))
237
        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)
238
          AND M.BRANCH_ID = @BRANCH_LOGIN AND (M.DEPT_ID = @DEP_LOGIN OR @BRANCH_LOGIN <> 'DV0001')))
239
			AND (M.PLAN_TYPE_ID= @p_PLAN_TYPE_ID OR @p_PLAN_TYPE_ID IS NULL OR @p_PLAN_TYPE_ID = '')
240
			AND (GT.GD_TYPE_ID= @p_GD_TYPE_ID OR @p_GD_TYPE_ID IS NULL OR @p_GD_TYPE_ID = '')
241
	END
242
END