Project

General

Profile

TR_REQ_GOOD_BYCONTRACT.txt

Luc Tran Van, 10/18/2022 01:45 PM

 
1

    
2
ALTER PROC [dbo].[TR_REQ_GOOD_BYCONTRACT]
3
	@p_REF_ID VARCHAR(150)
4
	AS
5
	BEGIN
6
	DECLARE @l_LST_REF_ID TABLE (
7
			[REF_ID] VARCHAR(15))
8
		--LAY THONG TIN SO SERI
9
		--INSERT INTO @l_LSTSERI SELECT ROW_NUMBER() OVER (ORDER BY VALUE), VALUE FROM WSISPLIT(@l_ASSET_SERIAL_NO,',')
10
	INSERT INTO @l_LST_REF_ID SELECT VALUE FROM WSISPLIT(@p_REF_ID,',')
11
	DECLARE @PYC_MS_ID VARCHAR(15)
12
	IF(EXISTS(SELECT * FROM TR_CONTRACT WHERE (CONTRACT_ID =@p_REF_ID OR CONTRACT_ID IN (SELECT * FROM @l_LST_REF_ID))))
13
	BEGIN
14
		SET @PYC_MS_ID = (SELECT REQ_DOC_ID FROM TR_CONTRACT WHERE CONTRACT_ID =@p_REF_ID)
15
		--- BAT DAU LAY DU LIEU
16
		SELECT PM.PLAN_ID,PM.PLAN_CODE,PLDT.TRADE_ID,DT.GOODS_ID,CG.GD_CODE,CG.GD_NAME,PM.BRANCH_ID,PM.DEPT_ID,
17
			ISNULL(PLDT.QUANTITY,0) AS QUANTITY,
18
			ISNULL(DT.QUANTITY_EXE,0) AS QUANTITY_EXE,
19
			ISNULL(DT.QUANTITY_ETM,0) AS QUANTITY_ETM,
20
			ISNULL(DT.QUANTITY,0)-	ISNULL(DT.QUANTITY_EXE,0) AS QUANTITY_REMAIN,
21
			ISNULL(DT.QUANTITY,0)-ISNULL(DT.QUANTITY_ETM,0) AS QUANTITY_REMAIN_ETM, 
22
			--ISNULL( PLDT.AMT_APP,0)+  ISNULL( DT.AMT_RECEIVE_TF,0) AS AMT_APP,
23
			ISNULL( PLDT.AMT_APP,0) AS AMT_APP,
24
			ISNULL( X.AMT_EXE,0) AS AMT_EXE,
25
			ISNULL( DT.AMT_ETM,0) AS AMT_ETM,
26
			--ISNULL(DT.AMT_APP,0) + ISNULL( DT.AMT_RECEIVE_TF,0)- ISNULL( DT.AMT_TF,0)- ISNULL(DT.AMT_EXE,0) AS AMT_REMAIN, 
27
			ISNULL(DT.AMT_APP,0) + ISNULL( DT.AMT_RECEIVE_TF,0)- ISNULL( DT.AMT_TF,0)-ISNULL(DT.AMT_ETM,0) AS AMT_REMAIN_ETM,
28
			ISNULL(PLDT.AMT_APP,0) - ISNULL(X.AMT_EXE,0) AS AMT_REMAIN,  @p_REF_ID AS REF_ID
29
			FROM
30
			(
31
				SELECT B.TRADE_ID,B.GOODS_ID,A.REQ_DOC_ID,CT.CONTRACT_ID, SUM(CT.QUANTITY) AS  QUANTITY,SUM( CT.QUANTITY * CT.PRICE) AS AMT_APP  FROM TR_REQUEST_DOC_DT A
32
				LEFT JOIN PL_REQUEST_DOC_DT B ON A.PL_REQDT_ID=B.REQDT_ID 
33
				LEFT JOIN TR_CONTRACT_DT CT ON A.HANGHOA_ID = CT.GOODS_ID
34
				GROUP BY B.TRADE_ID,B.GOODS_ID,A.REQ_DOC_ID,CT.CONTRACT_ID 
35
			) PLDT 	
36
			LEFT JOIN
37
			(
38
				SELECT A.TRADE_ID, SUM(A.AMT_EXE) AS AMT_EXE FROM TR_REQ_PAY_BUDGET A
39
				LEFT JOIN TR_REQ_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID
40
				--LEFT JOIN TR_REQ_PAY_SCHEDULE C ON B.REQ_PAY_ID = C.REQ_PAY_ID
41
				WHERE B.AUTH_STATUS_KT='A' 
42
				AND A.REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@p_REF_ID)
43
				GROUP BY TRADE_ID
44
			)
45
			X ON PLDT.TRADE_ID = X.TRADE_ID
46
			INNER JOIN PL_TRADEDETAIL DT ON DT.TRADE_ID=PLDT.TRADE_ID
47
			INNER JOIN PL_MASTER PM ON DT.PLAN_ID= PM.PLAN_ID
48
			INNER JOIN CM_GOODS CG ON PLDT.GOODS_ID = CG.GD_ID
49
			WHERE PLDT.REQ_DOC_ID =@PYC_MS_ID AND PLDT.CONTRACT_ID =@p_REF_ID
50
	END
51
	ELSE IF(EXISTS(SELECT * FROM TR_PO_MASTER WHERE PO_ID =@p_REF_ID))
52
	BEGIN
53
		--SET @PYC_MS_ID = (SELECT REQ_DOC_ID FROM TR_PO_MASTER WHERE PO_ID =@p_REF_ID)
54
		-- BAT DAU LAY DU LIEU
55
		SELECT PM.PLAN_ID,PM.PLAN_CODE,PLDT.TRADE_ID,DT.GOODS_ID,CG.GD_CODE,CG.GD_NAME,PM.BRANCH_ID,PM.DEPT_ID,
56
			ISNULL(PLDT.QUANTITY,0) AS QUANTITY,
57
			ISNULL(DT.QUANTITY_EXE,0) AS QUANTITY_EXE,
58
			ISNULL(DT.QUANTITY_ETM,0) AS QUANTITY_ETM,
59
			ISNULL(DT.QUANTITY,0)-	ISNULL(DT.QUANTITY_EXE,0) AS QUANTITY_REMAIN,
60
			ISNULL(DT.QUANTITY,0)-ISNULL(DT.QUANTITY_ETM,0) AS QUANTITY_REMAIN_ETM, 
61
			--ISNULL( PLDT.AMT_APP,0) +  ISNULL( DT.AMT_RECEIVE_TF,0) AS AMT_APP,
62
			ISNULL( PLDT.AMT_APP,0) AS AMT_APP,
63
			ISNULL( X.AMT_EXE,0) AS AMT_EXE,
64
			ISNULL( DT.AMT_ETM,0) AS AMT_ETM,
65
			--ISNULL(DT.AMT_APP,0) + ISNULL( DT.AMT_RECEIVE_TF,0)- ISNULL( DT.AMT_TF,0)- ISNULL(DT.AMT_EXE,0) AS AMT_REMAIN, 
66
			ISNULL(DT.AMT_APP,0) + ISNULL( DT.AMT_RECEIVE_TF,0)- ISNULL( DT.AMT_TF,0)-ISNULL(DT.AMT_ETM,0) AS AMT_REMAIN_ETM,
67
			--ISNULL(PLDT.AMT_APP,0) - ISNULL(X.AMT_EXE,0) AS AMT_REMAIN
68
			ISNULL(PLDT.AMT_APP,0) - ISNULL(X.AMT_EXE,0) AS AMT_REMAIN , @p_REF_ID AS REF_ID
69
			FROM
70
			(
71
				SELECT DISTINCT B.TRADE_ID,B.GOODS_ID,A.REQ_DOC_ID,CT.PO_ID, SUM(CT.QUANTITY) AS  QUANTITY, SUM( CT.QUANTITY * (CT.PRICE+CT.PRICE_VAT) * ISNULL(RATE,1)) AS AMT_APP  
72
				FROM TR_REQUEST_DOC_DT A
73
				LEFT JOIN PL_REQUEST_DOC_DT B ON A.PL_REQDT_ID=B.REQDT_ID 
74
				LEFT JOIN TR_PO_DETAIL CT ON A.HANGHOA_ID = CT.GOODS_ID
75
				GROUP BY B.TRADE_ID,B.GOODS_ID,A.REQ_DOC_ID,CT.PO_ID,A.SUP_ID
76
				
77
			) PLDT 	
78
			LEFT JOIN
79
			(
80
				SELECT A.TRADE_ID, SUM(A.AMT_EXE) AS AMT_EXE FROM TR_REQ_PAY_BUDGET A
81
				LEFT JOIN TR_REQ_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID
82
				WHERE B.AUTH_STATUS_KT='A'
83
				AND A.REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@p_REF_ID)
84
				GROUP BY TRADE_ID
85
			)
86
			X ON PLDT.TRADE_ID = X.TRADE_ID
87
			INNER  JOIN PL_TRADEDETAIL DT ON DT.TRADE_ID=PLDT.TRADE_ID
88
			INNER JOIN PL_MASTER PM ON DT.PLAN_ID= PM.PLAN_ID
89
			INNER JOIN CM_GOODS CG ON PLDT.GOODS_ID = CG.GD_ID
90
			--WHERE PLDT.REQ_DOC_ID =@PYC_MS_ID AND PLDT.PO_ID =@p_REF_ID
91
			WHERE PLDT.REQ_DOC_ID IN(SELECT REQ_DOC_ID FROM TR_PO_MASTER WHERE PO_ID IN (SELECT REF_ID FROM @l_LST_REF_ID))  AND PLDT.PO_ID IN (SELECT REF_ID FROM @l_LST_REF_ID)
92
	END
93
	ELSE IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REF_ID ))
94
	BEGIN
95
		--SET @PYC_MS_ID = (SELECT REQ_DOC_ID FROM TR_PO_MASTER WHERE PO_ID =@p_REF_ID)
96
		-- BAT DAU LAY DU LIEU
97
		SELECT PM.PLAN_ID,PM.PLAN_CODE,PL_DT.TRADE_ID,DT.GOODS_ID,CG.GD_CODE,CG.GD_NAME,PM.BRANCH_ID,PM.DEPT_ID,
98
			SUM(ISNULL(PL_DT.QUANTITY,0)) AS QUANTITY,
99
			SUM(ISNULL(DT.QUANTITY_EXE,0)) AS QUANTITY_EXE,
100
			SUM(ISNULL(DT.QUANTITY_ETM,0)) AS QUANTITY_ETM,
101
			SUM(ISNULL(DT.QUANTITY,0)-	ISNULL(DT.QUANTITY_EXE,0)) AS QUANTITY_REMAIN,
102
			SUM(ISNULL(DT.QUANTITY,0)-ISNULL(DT.QUANTITY_ETM,0)) AS QUANTITY_REMAIN_ETM, 
103
			SUM(ISNULL( PL_DT.TOTAL_AMT,0)) AS AMT_APP,
104
			SUM(ISNULL( X.AMT_EXE,0))/ISNULL(COUNT(*),1) AS AMT_EXE,
105
			SUM(ISNULL( DT.AMT_ETM,0)) AS AMT_ETM,
106
			--ISNULL(DT.AMT_APP,0) + ISNULL( DT.AMT_RECEIVE_TF,0)- ISNULL( DT.AMT_TF,0)- ISNULL(DT.AMT_EXE,0) AS AMT_REMAIN, 
107
			SUM(ISNULL(DT.AMT_APP,0) + ISNULL( DT.AMT_RECEIVE_TF,0)- ISNULL( DT.AMT_TF,0)-ISNULL(DT.AMT_ETM,0)) AS AMT_REMAIN_ETM,
108
			--ISNULL(PLDT.AMT_APP,0) - ISNULL(X.AMT_EXE,0) AS AMT_REMAIN
109
			SUM(ISNULL(PL_DT.TOTAL_AMT,0)) - SUM(ISNULL(X.AMT_EXE,0))/ISNULL(COUNT(*),1) AS AMT_REMAIN , @p_REF_ID AS REF_ID
110
			FROM
111
			PL_REQUEST_DOC_DT PL_DT
112
			LEFT JOIN
113
			(
114
				SELECT A.TRADE_ID, SUM(A.AMT_EXE) AS AMT_EXE FROM TR_REQ_PAY_BUDGET A
115
				LEFT JOIN TR_REQ_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID
116
				WHERE B.AUTH_STATUS_KT='A'
117
				AND A.REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAY_SERVICE WHERE EMP_ID =@p_REF_ID)
118
				GROUP BY TRADE_ID
119
			)
120
			X ON PL_DT.TRADE_ID = X.TRADE_ID
121
			INNER  JOIN PL_TRADEDETAIL DT ON DT.TRADE_ID=PL_DT.TRADE_ID
122
			INNER JOIN PL_MASTER PM ON DT.PLAN_ID= PM.PLAN_ID
123
			INNER JOIN CM_GOODS CG ON PL_DT.GOODS_ID = CG.GD_ID
124
			--
125
			WHERE PL_DT.REQ_ID =@p_REF_ID
126
			GROUP BY PM.PLAN_ID,PM.PLAN_CODE,PL_DT.TRADE_ID,DT.GOODS_ID,CG.GD_CODE,CG.GD_NAME,PM.BRANCH_ID,PM.DEPT_ID
127
	END
128
	
129
END
130