Project

General

Profile

upd_getPOSchedule.txt

Luc Tran Van, 01/30/2023 10:03 AM

 
1

    
2
ALTER   PROC [dbo].[TR_REQ_PAY_GetPOSchedule]
3
	@p_REF_ID VARCHAR(150) = NULL,
4
	@p_TOP INT = 1000
5
AS
6
BEGIN -- PAGING
7
	-- NHIEU PO HOAC HOP DONG
8
		DECLARE @l_LSTSERI TABLE (
9
		[ID] [int] IDENTITY(1,1) NOT NULL,
10
		[VALUE] [NVARCHAR](MAX) NULL)
11
		DECLARE @l_FILENAME VARCHAR(MAX)
12
		INSERT INTO @l_LSTSERI SELECT VALUE FROM WSISPLIT(@p_REF_ID,',')
13

    
14
IF(@p_TOP IS NULL OR @p_TOP='' OR @p_TOP=0)
15
BEGIN
16
-- PAGING BEGIN
17
	SELECT AA.* 
18
-- SELECT END
19
	FROM
20
	(
21
		SELECT A.PO_ID AS REF_ID,P.PO_CODE AS REF_CODE, A.PAY_ID,A.AMOUNT, A.EXP_DT,A.[PERCENT], A.PAY_PHASE, ISNULL(B.PAY_PHASE,SH.PAY_PHASE) KY_TAM_UNG,ISNULL(B.TONG_TAM_UNG,0) REQ_AMT, ISNULL(SH.AMT_PAY_DO,0) AMT_PAY_DO,
22
			ISNULL((A.AMOUNT - (ISNULL(B.TONG_TAM_UNG,0)- ISNULL(B.TONG_TAM_UNG,0)+ISNULL(SH.AMT_PAY_DO,0)+ ISNULL(TU.AMT_LINK,0))),0) REMAIN_AMT, '' PROCESS, '' AS REQ_PAY_DESC, '' AS REQ_PAY_ENTRIES, 0.0 AS AMT_PAY_REAL,
23
			'' AS CURRENCY,  0.0 AS RATE, '' AS REQ_PAY_AD_CODE,B.REQ_PAY_ID AS REQ_ADV_ID,'' AS RECORD_STATUS, A.[PERCENT] AS TY_LE,ISNULL(TU.AMT_LINK,0) AS AMT_LINK
24
		FROM TR_PO_PAYMENT A
25
			-- LAY TONG SO TIEN DA TAM UNG CUA KY DO
26
			LEFT JOIN 
27
			(
28
				SELECT B1.REQ_PAY_ID, B2.REQ_PAY_CODE, B1.PAY_ID, B1.PAY_PHASE,SUM(B1.AMT_PAY_REAL) AS TONG_TAM_UNG
29
				FROM TR_REQ_PAY_SCHEDULE B1
30
				LEFT JOIN TR_REQ_ADVANCE_PAYMENT B2 ON B1.REQ_PAY_ID = B2.REQ_PAY_ID
31
				WHERE B1.AUTH_STATUS_KT='A' AND B1.TRN_TYPE='ADV_PAY' 
32
				GROUP BY B1.REQ_PAY_ID,B1.PAY_ID,B1.PAY_PHASE
33
			)B ON A.PAY_ID = B.PAY_ID
34
			---LAY SO TIEN DA THANH TOAN CUA KY DO NEU CO
35
			LEFT JOIN 
36
			(
37
				SELECT P.PAY_ID,P.PAY_PHASE, MAX(P.AMT_PAY) AS AMT_PAY, SUM(AMT_PAY_REAL) AS AMT_PAY_DO
38
				FROM TR_REQ_PAY_SCHEDULE P
39
				WHERE P.TRN_TYPE='PAY' AND P.AUTH_STATUS_KT ='A'
40
				GROUP BY P.PAY_ID,P.PAY_PHASE
41
			) SH ON A.PAY_ID = SH.PAY_ID 
42
			-- LAY SO TIEN LINK TOI PHIEU TAM UNG NOI BO
43
			---LAY SO TIEN DA THANH TOAN CUA KY DO NEU CO
44
			LEFT JOIN 
45
			(
46
				SELECT P.PAY_ID,P.PAY_PHASE, MAX(P.AMT_PAY) AS AMT_PAY, SUM(AMT_REMAIN) AS AMT_LINK
47
				FROM TR_REQ_PAY_SCHEDULE P
48
				WHERE P.TRN_TYPE='PAY' AND P.AUTH_STATUS_KT ='A' AND P.REQ_ADV_ID IS NOT NULL AND P.REQ_ADV_ID <>''
49
				GROUP BY P.PAY_ID,P.PAY_PHASE
50
			) TU ON A.PAY_ID = TU.PAY_ID 
51
			--- DIEU KIEN
52
			LEFT JOIN TR_PO_MASTER P ON A.PO_ID = P.PO_ID
53
		WHERE A.PO_ID IN (SELECT VALUE FROM @l_LSTSERI)
54
	UNION 
55
		SELECT A.CONTRACT_ID AS REF_ID,C.CONTRACT_CODE AS REF_CODE,A.PAY_ID, A.AMOUNT,A.EXPECTED_DT AS EXP_DT, A.[PERCENT],A.PAY_PHASE, ISNULL(B.PAY_PHASE,SH.PAY_PHASE) KY_TAM_UNG,ISNULL(B.TONG_TAM_UNG,0) REQ_AMT, ISNULL(SH.AMT_PAY_DO,0) AMT_PAY_DO,
56
			ISNULL((A.AMOUNT - (ISNULL(HU.TONG_HOAN_UNG,0)+ISNULL(SH.AMT_PAY_DO,0)+ISNULL(TU.AMT_LINK,0))),0) REMAIN_AMT, '' PROCESS,'' AS REQ_PAY_DESC, '' AS REQ_PAY_ENTRIES,0.0 AS AMT_PAY_REAL,
57
			'' AS CURRENCY,  0.0 AS RATE,'' AS REQ_PAY_AD_CODE,B.REQ_PAY_ID AS REQ_ADV_ID, '' AS RECORD_STATUS,A.[PERCENT] AS TY_LE,ISNULL(TU.AMT_LINK,0) AS AMT_LINK
58
		FROM TR_CONTRACT_PAYMENT A
59
			-- LAY TONG SO TIEN DA TAM UNG CUA KY DO
60
			LEFT JOIN 
61
			(
62
				SELECT B1.REQ_PAY_ID, B2.REQ_PAY_CODE, B1.PAY_ID, B1.PAY_PHASE,SUM(B1.AMT_PAY_REAL) AS TONG_TAM_UNG
63
				FROM TR_REQ_PAY_SCHEDULE B1
64
				LEFT JOIN TR_REQ_ADVANCE_PAYMENT B2 ON B1.REQ_PAY_ID = B2.REQ_PAY_ID
65
				WHERE B1.AUTH_STATUS_KT='A' AND B1.TRN_TYPE='ADV_PAY' 
66
				GROUP BY B1.REQ_PAY_ID,B1.PAY_ID,B1.PAY_PHASE
67
			)B ON A.PAY_ID = B.PAY_ID
68
			-- LAY SO TIEN DA HOAN UNG CUA KI DO
69
			LEFT JOIN 
70
			(
71
				SELECT PAY_ID,PAY_PHASE,SUM(AMT_PAY_REAL) AS TONG_HOAN_UNG
72
				FROM TR_REQ_PAY_SCHEDULE
73
				WHERE AUTH_STATUS_KT='A' AND TRN_TYPE='ADV_PAY' AND PROCESS='2'
74
				GROUP BY PAY_ID, PAY_PHASE
75
			)HU ON  A.PAY_ID = HU.PAY_ID
76
			---LAY SO TIEN DA THANH TOAN CUA KY DO NEU CO
77
			LEFT JOIN 
78
			(
79
				SELECT P.PAY_ID, P.PAY_PHASE, MAX(P.AMT_PAY) AS AMT_PAY, SUM(AMT_PAY_REAL) AS AMT_PAY_DO
80
				FROM TR_REQ_PAY_SCHEDULE P
81
				WHERE P.AUTH_STATUS_KT='A' AND TRN_TYPE ='PAY'
82
				GROUP BY P.PAY_ID,P.PAY_PHASE
83
			) SH ON A.PAY_ID = SH.PAY_ID 
84
			---LAY SO TIEN LINK TOI PHIEU TAM UNG NOI BO
85
			LEFT JOIN 
86
			(
87
				SELECT P.PAY_ID,P.PAY_PHASE, MAX(P.AMT_PAY) AS AMT_PAY, SUM(AMT_REMAIN) AS AMT_LINK
88
				FROM TR_REQ_PAY_SCHEDULE P
89
				WHERE P.TRN_TYPE='PAY' AND P.AUTH_STATUS_KT ='A' AND P.REQ_ADV_ID IS NOT NULL AND P.REQ_ADV_ID <>''
90
				GROUP BY P.PAY_ID,P.PAY_PHASE
91
			) TU ON A.PAY_ID = TU.PAY_ID 
92
			--- DIEU KIEN
93
			INNER JOIN TR_CONTRACT C ON A.CONTRACT_ID = C.CONTRACT_ID
94
		WHERE A.CONTRACT_ID IN (SELECT VALUE FROM @l_LSTSERI) --- Nghia la REF_ID truyen xuong
95
	) AA
96
	WHERE 1 = 1
97
-- PAGING END
98
	END;
99
    ELSE 
100
	BEGIN
101
-- PAGING BEGIN
102
SELECT AA.* 
103
-- SELECT END
104
	FROM
105
	(
106
		SELECT A.PO_ID AS REF_ID,P.PO_CODE AS REF_CODE, A.PAY_ID,A.AMOUNT, A.EXP_DT,A.[PERCENT], A.PAY_PHASE, ISNULL(B.PAY_PHASE,SH.PAY_PHASE) KY_TAM_UNG,ISNULL(B.TONG_TAM_UNG,0) REQ_AMT, ISNULL(SH.AMT_PAY_DO,0) AMT_PAY_DO,
107
			ISNULL((A.AMOUNT - (ISNULL(B.TONG_TAM_UNG,0)- ISNULL(B.TONG_TAM_UNG,0)+ISNULL(SH.AMT_PAY_DO,0)+ ISNULL(TU.AMT_LINK,0))),0) REMAIN_AMT, '' PROCESS, '' AS REQ_PAY_DESC, '' AS REQ_PAY_ENTRIES, 0.0 AS AMT_PAY_REAL,
108
			'' AS CURRENCY,  0.0 AS RATE, '' AS REQ_PAY_AD_CODE,B.REQ_PAY_ID AS REQ_ADV_ID,'' AS RECORD_STATUS, A.[PERCENT] AS TY_LE,ISNULL(TU.AMT_LINK,0) AS AMT_LINK
109
		FROM TR_PO_PAYMENT A
110
			-- LAY TONG SO TIEN DA TAM UNG CUA KY DO
111
			LEFT JOIN 
112
			(
113
				SELECT REQ_PAY_ID, PAY_ID, PAY_PHASE,SUM(AMT_PAY_REAL) AS TONG_TAM_UNG
114
				FROM TR_REQ_PAY_SCHEDULE
115
				WHERE AUTH_STATUS_KT='A' AND TRN_TYPE='ADV_PAY' 
116
				GROUP BY REQ_PAY_ID,PAY_ID,PAY_PHASE
117
			)B ON A.PAY_ID = B.PAY_ID
118
			---LAY SO TIEN DA THANH TOAN CUA KY DO NEU CO
119
			LEFT JOIN 
120
			(
121
				SELECT P.PAY_ID,P.PAY_PHASE, MAX(P.AMT_PAY) AS AMT_PAY, SUM(AMT_PAY_REAL) AS AMT_PAY_DO
122
				FROM TR_REQ_PAY_SCHEDULE P
123
				WHERE P.TRN_TYPE='PAY' AND P.AUTH_STATUS_KT ='A'
124
				GROUP BY P.PAY_ID,P.PAY_PHASE
125
			) SH ON A.PAY_ID = SH.PAY_ID 
126
			-- LAY SO TIEN LINK TOI PHIEU TAM UNG NOI BO
127
			---LAY SO TIEN DA THANH TOAN CUA KY DO NEU CO
128
			LEFT JOIN 
129
			(
130
				SELECT P.PAY_ID,P.PAY_PHASE, MAX(P.AMT_PAY) AS AMT_PAY, SUM(AMT_REMAIN) AS AMT_LINK
131
				FROM TR_REQ_PAY_SCHEDULE P
132
				WHERE P.TRN_TYPE='PAY' AND P.AUTH_STATUS_KT ='A' AND P.REQ_ADV_ID IS NOT NULL AND P.REQ_ADV_ID <>''
133
				GROUP BY P.PAY_ID,P.PAY_PHASE
134
			) TU ON A.PAY_ID = TU.PAY_ID 
135
			--- DIEU KIEN
136
			LEFT JOIN TR_PO_MASTER P ON A.PO_ID = P.PO_ID
137
		WHERE A.PO_ID IN (SELECT VALUE FROM @l_LSTSERI)
138
	UNION 
139
		SELECT A.CONTRACT_ID AS REF_ID,C.CONTRACT_CODE AS REF_CODE,A.PAY_ID, A.AMOUNT,A.EXPECTED_DT AS EXP_DT, A.[PERCENT],A.PAY_PHASE, ISNULL(B.PAY_PHASE,SH.PAY_PHASE) KY_TAM_UNG,ISNULL(B.TONG_TAM_UNG,0) REQ_AMT, ISNULL(SH.AMT_PAY_DO,0) AMT_PAY_DO,
140
			ISNULL((A.AMOUNT - (ISNULL(HU.TONG_HOAN_UNG,0)+ISNULL(SH.AMT_PAY_DO,0)+ISNULL(TU.AMT_LINK,0))),0) REMAIN_AMT, '' PROCESS,'' AS REQ_PAY_DESC, '' AS REQ_PAY_ENTRIES,0.0 AS AMT_PAY_REAL,
141
			'' AS CURRENCY,  0.0 AS RATE,'' AS REQ_PAY_AD_CODE,B.REQ_PAY_ID AS REQ_ADV_ID, '' AS RECORD_STATUS,A.[PERCENT] AS TY_LE,ISNULL(TU.AMT_LINK,0) AS AMT_LINK
142
		FROM TR_CONTRACT_PAYMENT A
143
			-- LAY TONG SO TIEN DA TAM UNG CUA KY DO
144
			LEFT JOIN 
145
			(
146
				SELECT REQ_PAY_ID, PAY_ID,PAY_PHASE,SUM(AMT_PAY_REAL) AS TONG_TAM_UNG
147
				FROM TR_REQ_PAY_SCHEDULE
148
				WHERE AUTH_STATUS_KT='A' AND TRN_TYPE='ADV_PAY'
149
				GROUP BY REQ_PAY_ID, PAY_ID, PAY_PHASE
150
			)B ON  A.PAY_ID = B.PAY_ID
151
			-- LAY SO TIEN DA HOAN UNG CUA KI DO
152
			LEFT JOIN 
153
			(
154
				SELECT PAY_ID,PAY_PHASE,SUM(AMT_PAY_REAL) AS TONG_HOAN_UNG
155
				FROM TR_REQ_PAY_SCHEDULE
156
				WHERE AUTH_STATUS_KT='A' AND TRN_TYPE='ADV_PAY' AND PROCESS='2'
157
				GROUP BY PAY_ID, PAY_PHASE
158
			)HU ON  A.PAY_ID = HU.PAY_ID
159
			---LAY SO TIEN DA THANH TOAN CUA KY DO NEU CO
160
			LEFT JOIN 
161
			(
162
				SELECT P.PAY_ID, P.PAY_PHASE, MAX(P.AMT_PAY) AS AMT_PAY, SUM(AMT_PAY_REAL) AS AMT_PAY_DO
163
				FROM TR_REQ_PAY_SCHEDULE P
164
				WHERE P.AUTH_STATUS_KT='A' AND TRN_TYPE ='PAY'
165
				GROUP BY P.PAY_ID,P.PAY_PHASE
166
			) SH ON A.PAY_ID = SH.PAY_ID 
167
			---LAY SO TIEN LINK TOI PHIEU TAM UNG NOI BO
168
			LEFT JOIN 
169
			(
170
				SELECT P.PAY_ID,P.PAY_PHASE, MAX(P.AMT_PAY) AS AMT_PAY, SUM(AMT_REMAIN) AS AMT_LINK
171
				FROM TR_REQ_PAY_SCHEDULE P
172
				WHERE P.TRN_TYPE='PAY' AND P.AUTH_STATUS_KT ='A' AND P.REQ_ADV_ID IS NOT NULL AND P.REQ_ADV_ID <>''
173
				GROUP BY P.PAY_ID,P.PAY_PHASE
174
			) TU ON A.PAY_ID = TU.PAY_ID 
175
			--- DIEU KIEN
176
			INNER JOIN TR_CONTRACT C ON A.CONTRACT_ID = C.CONTRACT_ID
177
		WHERE A.CONTRACT_ID IN (SELECT VALUE FROM @l_LSTSERI) --- Nghia la REF_ID truyen xuong
178
	) AA
179
	WHERE 1 = 1
180
-- PAGING END
181
    END;
182
END -- PAGING