Project

General

Profile

paymentdt_contract_byid.txt

Luc Tran Van, 01/06/2023 11:12 AM

 
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