1
|
ALTER PROCEDURE [dbo].[TR_CONTRACT_PAYMENT_ById]
|
2
|
@CONTRACT_ID varchar(15)
|
3
|
AS
|
4
|
IF((SELECT CONT_TYPE FROM TR_CONTRACT WHERE CONTRACT_ID =@CONTRACT_ID) ='DK')
|
5
|
BEGIN
|
6
|
|
7
|
SELECT '' AS PAY_ID,@CONTRACT_ID AS CONTRACT_ID,B.PAY_PHASE AS PAY_PHASE, C.APPROVE_DT_KT AS EXPECTED_DT,100.0 AS [PERCENT],
|
8
|
B.AMT_PAY AS AMOUNT,'' AS PAY_STATUS,B.REASON AS NOTES,'' AS MAKER_ID,B.PAY_DT_REAL AS CREATE_DT,'A' AS AUTH_STATUS,'' AS CHECKER_ID,C.APPROVE_DT_KT AS APPROVE_DT,
|
9
|
C.APPROVE_DT_KT AS PAY_DT, B.AMT_PAY AS PAY_AMOUNT,'' AS CONTRACT_CODE,
|
10
|
'' AS REQUEST_ID,'' AS CONTRACT_PARENT,
|
11
|
B.AMT_PAY AS AMT_ADVANCE, 0.0 AS AMT_PAY_DO,
|
12
|
CASE WHEN B.PROCESS ='2' THEN 'TTX' ELSE 'DTU' END AS CDVAL,'' AS CONTENT, 0.0 AS AMT_LINK, 0.0 AS REMAIN_AMT
|
13
|
FROM TR_REQ_PAY_PERIOD B
|
14
|
INNER JOIN TR_REQ_ADVANCE_PAYMENT C ON B.REQ_PAY_ID = C.REQ_PAY_ID -- 2021928 LUCTV EDIT
|
15
|
WHERE B.PAY_TYPE ='ADV_PAY' AND B.AUTH_STATUS_KT ='A' AND B.CONTRACT_ID =@CONTRACT_ID AND B.AUTH_STATUS_KT IS NOT NULL
|
16
|
AND (B.REQ_PAY_ID IN(SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE RECORD_STATUS <> '0'))
|
17
|
UNION
|
18
|
SELECT '' AS PAY_ID,@CONTRACT_ID AS CONTRACT_ID,B.PAY_PHASE AS PAY_PHASE, C.APPROVE_DT_KT AS EXPECTED_DT,100 AS [PERCENT],
|
19
|
B.AMT_PAY AS AMOUNT,'' AS PAY_STATUS,B.REASON AS NOTES,'' AS MAKER_ID,B.PAY_DT_REAL AS CREATE_DT,'A' AS AUTH_STATUS,'' AS CHECKER_ID,C.APPROVE_DT_KT AS APPROVE_DT,
|
20
|
C.APPROVE_DT_KT AS PAY_DT, B.AMT_PAY AS PAY_AMOUNT,'' AS CONTRACT_CODE,
|
21
|
'' AS REQUEST_ID,'' AS CONTRACT_PARENT,
|
22
|
0.0 AS AMT_ADVANCE, B.AMT_PAY AS AMT_PAY_DO,
|
23
|
'TTX' CDVAL,'' AS CONTENT, 0.0 AS AMT_LINK, 0.0 AS REMAIN_AMT
|
24
|
FROM TR_REQ_PAY_PERIOD B
|
25
|
INNER JOIN TR_REQ_PAYMENT C ON B.REQ_PAY_ID = C.REQ_PAY_ID
|
26
|
WHERE B.PAY_TYPE ='PAY'
|
27
|
--AND B.PROCESS ='1' -- chi hien cac phieu thanh toan khac hoan ung
|
28
|
AND B.AUTH_STATUS_KT ='A'
|
29
|
AND B.CONTRACT_ID =@CONTRACT_ID
|
30
|
ORDER BY C.APPROVE_DT_KT DESC
|
31
|
END
|
32
|
ELSE
|
33
|
BEGIN
|
34
|
SELECT A.PAY_ID
|
35
|
,A.CONTRACT_ID
|
36
|
,A.PAY_PHASE
|
37
|
,A.EXPECTED_DT
|
38
|
,A.[PERCENT]
|
39
|
,A.AMOUNT
|
40
|
,A.PAY_STATUS
|
41
|
,A.NOTES
|
42
|
,A.RECORD_STATUS
|
43
|
,A.MAKER_ID
|
44
|
,A.CREATE_DT
|
45
|
,A.AUTH_STATUS
|
46
|
,A.CHECKER_ID
|
47
|
,A.APPROVE_DT
|
48
|
,A.PAY_DT
|
49
|
,A.PAY_AMOUNT
|
50
|
,A.REQUEST_ID
|
51
|
,A.CONTRACT_PARENT
|
52
|
,A.BID_ID, ISNULL(B.AMT_ADVANCE,0) AS AMT_ADVANCE, ISNULL(B2.AMT_PAY_DO,0) AS AMT_PAY_DO ,
|
53
|
ISNULL(C.CDVAL,(CASE WHEN ISNULL(B.AMT_ADVANCE,0) >0 AND ISNULL(B2.AMT_PAY_DO,0) =0 THEN 'DTU' WHEN ISNULL(B2.AMT_PAY_DO,0) >0 AND ISNULL((A.AMOUNT - ISNULL(B2.AMT_PAY_DO,0) - ISNULL(B.AMT_ADVANCE,0)-ISNULL(B3.AMT_LINK,0)),0) >0 THEN 'DTT' WHEN ISNULL((A.AMOUNT - ISNULL(B2.AMT_PAY_DO,0) - ISNULL(B.AMT_ADVANCE,0)-ISNULL(B3.AMT_LINK,0)),0) =0 THEN 'TTX' ELSE 'CTT' END)) AS CDVAL,
|
54
|
C.CONTENT, ISNULL(B3.AMT_LINK,0) AS AMT_LINK, ISNULL((A.AMOUNT - ISNULL(B2.AMT_PAY_DO,0) - ISNULL(B.AMT_ADVANCE,0) - ISNULL(B3.AMT_LINK,0)),0) AS REMAIN_AMT
|
55
|
,TRC.CONTRACT_CODE
|
56
|
FROM TR_CONTRACT_PAYMENT A
|
57
|
LEFT JOIN TR_CONTRACT TRC ON A.CONTRACT_ID = TRC.CONTRACT_ID
|
58
|
--- TINH SO TIEN DA TAM UNG
|
59
|
LEFT JOIN
|
60
|
(
|
61
|
SELECT P.PAY_ID , SUM(P.AMT_PAY_REAL) AMT_ADVANCE,
|
62
|
MAX(P.AMT_PAY_DO) AMT_PAY_DO, MAX(P.AMT_PAY) AMT_PAY, MAX(P.PAYMENT_STATUS) PAYMENT_STATUS
|
63
|
FROM TR_REQ_PAY_SCHEDULE P
|
64
|
WHERE P.AUTH_STATUS_KT='A' AND TRN_TYPE='ADV_PAY'
|
65
|
GROUP BY P.PAY_ID
|
66
|
)
|
67
|
B ON A.PAY_ID = B.PAY_ID
|
68
|
LEFT JOIN
|
69
|
(
|
70
|
SELECT P.PAY_ID , ISNULL(MAX(P.AMT_ADVANCE),0) AMT_ADVANCE,
|
71
|
ISNULL(SUM(P.AMT_PAY_REAL),0) AMT_PAY_DO, ISNULL(MAX(P.AMT_PAY),0) AMT_PAY, MAX(P.PAYMENT_STATUS) PAYMENT_STATUS
|
72
|
FROM TR_REQ_PAY_SCHEDULE P
|
73
|
WHERE P.AUTH_STATUS_KT='A' AND TRN_TYPE='PAY'
|
74
|
GROUP BY P.PAY_ID
|
75
|
)
|
76
|
B2 ON A.PAY_ID = B2.PAY_ID
|
77
|
-- LEFT JOIN DE LAY SO TIEN LINK TOI PHIEU TAM UNG
|
78
|
LEFT JOIN
|
79
|
(
|
80
|
SELECT P.PAY_ID , ISNULL(MAX(P.AMT_REMAIN),0) AS AMT_LINK,
|
81
|
SUM((P.AMT_PAY_REAL)) AMT_PAY_DO, ISNULL(MAX(P.AMT_PAY),0) AMT_PAY, MAX(P.PAYMENT_STATUS) PAYMENT_STATUS
|
82
|
FROM TR_REQ_PAY_SCHEDULE P
|
83
|
WHERE P.AUTH_STATUS_KT='A' AND TRN_TYPE='PAY' AND P.REQ_ADV_ID IS NOT NULL AND P.REQ_ADV_ID <>''
|
84
|
GROUP BY P.PAY_ID
|
85
|
)
|
86
|
B3 ON A.PAY_ID = B3.PAY_ID
|
87
|
LEFT JOIN CM_ALLCODE C ON C.CDVAL = B.PAYMENT_STATUS AND C.CDNAME = 'PAYMENT_STATUS'
|
88
|
WHERE A.CONTRACT_ID= @CONTRACT_ID
|
89
|
END
|