Project

General

Profile

TR_REQ_GOOD_BYCONTRACT.txt

Luc Tran Van, 10/20/2020 10:33 AM

 
1
ALTER PROC [dbo].[TR_REQ_GOOD_BYCONTRACT]
2
	@p_REF_ID VARCHAR(150)
3
	AS
4
	BEGIN
5

    
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,CG.GD_CODE,CG.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  FROM TR_REQUEST_DOC_DT A
26
				LEFT JOIN PL_REQUEST_DOC_DT B ON A.PL_REQDT_ID=B.REQDT_ID 
27
				LEFT JOIN TR_CONTRACT_DT CT ON A.HANGHOA_ID = CT.GOODS_ID
28
				GROUP BY B.TRADE_ID,B.GOODS_ID,A.REQ_DOC_ID,CT.CONTRACT_ID 
29
			) PLDT 	
30
			LEFT JOIN
31
			(
32
				SELECT A.TRADE_ID, SUM(A.AMT_EXE) AS AMT_EXE FROM TR_REQ_PAY_BUDGET A
33
				LEFT JOIN TR_REQ_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID
34
				--LEFT JOIN TR_REQ_PAY_SCHEDULE C ON B.REQ_PAY_ID = C.REQ_PAY_ID
35
				WHERE B.AUTH_STATUS_KT='A' 
36
				AND A.REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@p_REF_ID)
37
				GROUP BY TRADE_ID
38
			)
39
			X ON PLDT.TRADE_ID = X.TRADE_ID
40
			INNER JOIN PL_TRADEDETAIL DT ON DT.TRADE_ID=PLDT.TRADE_ID
41
			INNER JOIN PL_MASTER PM ON DT.PLAN_ID= PM.PLAN_ID
42
			INNER JOIN CM_GOODS CG ON PLDT.GOODS_ID = CG.GD_ID
43
			WHERE PLDT.REQ_DOC_ID =@PYC_MS_ID AND PLDT.CONTRACT_ID =@p_REF_ID
44
	END
45
	ELSE
46
	BEGIN
47
		SET @PYC_MS_ID = (SELECT REQ_DOC_ID FROM TR_PO_MASTER WHERE PO_ID =@p_REF_ID)
48
		-- BAT DAU LAY DU LIEU
49
		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,
50
			ISNULL(PLDT.QUANTITY,0) AS QUANTITY,
51
			ISNULL(DT.QUANTITY_EXE,0) AS QUANTITY_EXE,
52
			ISNULL(DT.QUANTITY_ETM,0) AS QUANTITY_ETM,
53
			ISNULL(DT.QUANTITY,0)-	ISNULL(DT.QUANTITY_EXE,0) AS QUANTITY_REMAIN,
54
			ISNULL(DT.QUANTITY,0)-ISNULL(DT.QUANTITY_ETM,0) AS QUANTITY_REMAIN_ETM, 
55
			ISNULL( PLDT.AMT_APP,0) +  ISNULL( DT.AMT_RECEIVE_TF,0) AS AMT_APP,
56
			ISNULL( X.AMT_EXE,0) AS AMT_EXE,
57
			ISNULL( DT.AMT_ETM,0) AS AMT_ETM,
58
			--ISNULL(DT.AMT_APP,0) + ISNULL( DT.AMT_RECEIVE_TF,0)- ISNULL( DT.AMT_TF,0)- ISNULL(DT.AMT_EXE,0) AS AMT_REMAIN, 
59
			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,
60
			--ISNULL(PLDT.AMT_APP,0) - ISNULL(X.AMT_EXE,0) AS AMT_REMAIN
61
			ISNULL(PLDT.AMT_APP,0) - ISNULL(X.AMT_EXE,0) AS AMT_REMAIN , @p_REF_ID AS REF_ID
62
			FROM
63
			(
64
				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
65
				LEFT JOIN PL_REQUEST_DOC_DT B ON A.PL_REQDT_ID=B.REQDT_ID 
66
				LEFT JOIN TR_PO_DETAIL CT ON A.HANGHOA_ID = CT.GOODS_ID
67
				GROUP BY B.TRADE_ID,B.GOODS_ID,A.REQ_DOC_ID,CT.PO_ID 
68
				
69
			) PLDT 	
70
			LEFT JOIN
71
			(
72
				SELECT A.TRADE_ID, SUM(A.AMT_EXE) AS AMT_EXE FROM TR_REQ_PAY_BUDGET A
73
				LEFT JOIN TR_REQ_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID
74
				WHERE B.AUTH_STATUS_KT='A'
75
				AND A.REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@p_REF_ID)
76
				GROUP BY TRADE_ID
77
			)
78
			X ON PLDT.TRADE_ID = X.TRADE_ID
79
			INNER  JOIN PL_TRADEDETAIL DT ON DT.TRADE_ID=PLDT.TRADE_ID
80
			INNER JOIN PL_MASTER PM ON DT.PLAN_ID= PM.PLAN_ID
81
			INNER JOIN CM_GOODS CG ON PLDT.GOODS_ID = CG.GD_ID
82
			WHERE PLDT.REQ_DOC_ID =@PYC_MS_ID AND PLDT.PO_ID =@p_REF_ID
83
	END
84
	
85
END