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
|