Project

General

Profile

TR_REQ_GOOD_BYCONTRACT.txt

Truong Nguyen Vu, 01/19/2021 02:23 PM

 
1

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

    
126

    
127