Project

General

Profile

DB_BUDGET_PIE.txt

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

 
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