Project

General

Profile

FILE 4.txt

Truong Nguyen Vu, 09/07/2020 05:43 PM

 
1

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

    
7
	DECLARE @PYC_MS_ID VARCHAR(15)
8
	IF(EXISTS(SELECT * FROM TR_CONTRACT WHERE CONTRACT_ID =@p_REF_ID ))
9
	BEGIN
10
		SET @PYC_MS_ID = (SELECT REQ_DOC_ID FROM TR_CONTRACT WHERE CONTRACT_ID =@p_REF_ID)
11
		--- BAT DAU LAY DU LIEU
12
		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,
13
			ISNULL(PLDT.QUANTITY,0) AS QUANTITY,
14
			ISNULL(DT.QUANTITY_EXE,0) AS QUANTITY_EXE,
15
			ISNULL(DT.QUANTITY_ETM,0) AS QUANTITY_ETM,
16
			ISNULL(DT.QUANTITY,0)-	ISNULL(DT.QUANTITY_EXE,0) AS QUANTITY_REMAIN,
17
			ISNULL(DT.QUANTITY,0)-ISNULL(DT.QUANTITY_ETM,0) AS QUANTITY_REMAIN_ETM, 
18
			ISNULL( PLDT.AMT_APP,0)+  ISNULL( DT.AMT_RECEIVE_TF,0) AS AMT_APP,
19
			ISNULL( X.AMT_EXE,0) AS AMT_EXE,
20
			ISNULL( DT.AMT_ETM,0) AS AMT_ETM,
21
			--ISNULL(DT.AMT_APP,0) + ISNULL( DT.AMT_RECEIVE_TF,0)- ISNULL( DT.AMT_TF,0)- ISNULL(DT.AMT_EXE,0) AS AMT_REMAIN, 
22
			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,
23
			ISNULL(PLDT.AMT_APP,0) - ISNULL(X.AMT_EXE,0) AS AMT_REMAIN,  @p_REF_ID AS REF_ID
24
			FROM
25
			(
26
				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
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
				WHERE B.AUTH_STATUS_KT='A'
36
				GROUP BY TRADE_ID
37
			)
38
			X ON PLDT.TRADE_ID = X.TRADE_ID
39
			INNER JOIN PL_TRADEDETAIL DT ON DT.TRADE_ID=PLDT.TRADE_ID
40
			INNER JOIN PL_MASTER PM ON DT.PLAN_ID= PM.PLAN_ID
41
			INNER JOIN CM_GOODS CG ON PLDT.GOODS_ID = CG.GD_ID
42
			WHERE PLDT.REQ_DOC_ID =@PYC_MS_ID AND PLDT.CONTRACT_ID =@p_REF_ID
43
	END
44
	ELSE
45
	BEGIN
46
		SET @PYC_MS_ID = (SELECT REQ_DOC_ID FROM TR_PO_MASTER WHERE PO_ID =@p_REF_ID)
47
		-- BAT DAU LAY DU LIEU
48
		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,
49
			ISNULL(PLDT.QUANTITY,0) AS QUANTITY,
50
			ISNULL(DT.QUANTITY_EXE,0) AS QUANTITY_EXE,
51
			ISNULL(DT.QUANTITY_ETM,0) AS QUANTITY_ETM,
52
			ISNULL(DT.QUANTITY,0)-	ISNULL(DT.QUANTITY_EXE,0) AS QUANTITY_REMAIN,
53
			ISNULL(DT.QUANTITY,0)-ISNULL(DT.QUANTITY_ETM,0) AS QUANTITY_REMAIN_ETM, 
54
			ISNULL( PLDT.AMT_APP,0) +  ISNULL( DT.AMT_RECEIVE_TF,0) AS AMT_APP,
55
			ISNULL( X.AMT_EXE,0) AS AMT_EXE,
56
			ISNULL( DT.AMT_ETM,0) AS AMT_ETM,
57
			--ISNULL(DT.AMT_APP,0) + ISNULL( DT.AMT_RECEIVE_TF,0)- ISNULL( DT.AMT_TF,0)- ISNULL(DT.AMT_EXE,0) AS AMT_REMAIN, 
58
			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,
59
			--ISNULL(PLDT.AMT_APP,0) - ISNULL(X.AMT_EXE,0) AS AMT_REMAIN
60
			ISNULL(PLDT.AMT_APP,0) - ISNULL(X.AMT_EXE,0) AS AMT_REMAIN , @p_REF_ID AS REF_ID
61
			FROM
62
			(
63
				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
64
				LEFT JOIN PL_REQUEST_DOC_DT B ON A.PL_REQDT_ID=B.REQDT_ID 
65
				LEFT JOIN TR_PO_DETAIL CT ON A.HANGHOA_ID = CT.GOODS_ID
66
				GROUP BY B.TRADE_ID,B.GOODS_ID,A.REQ_DOC_ID,CT.PO_ID 
67
				
68
			) PLDT 	
69
			LEFT JOIN
70
			(
71
				SELECT A.TRADE_ID, SUM(A.AMT_EXE) AS AMT_EXE FROM TR_REQ_PAY_BUDGET A
72
				LEFT JOIN TR_REQ_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID
73
				WHERE B.AUTH_STATUS_KT='A'
74
				AND A.REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@p_REF_ID)
75
				GROUP BY TRADE_ID
76
			)
77
			X ON PLDT.TRADE_ID = X.TRADE_ID
78
			INNER  JOIN PL_TRADEDETAIL DT ON DT.TRADE_ID=PLDT.TRADE_ID
79
			INNER JOIN PL_MASTER PM ON DT.PLAN_ID= PM.PLAN_ID
80
			INNER JOIN CM_GOODS CG ON PLDT.GOODS_ID = CG.GD_ID
81
			WHERE PLDT.REQ_DOC_ID =@PYC_MS_ID AND PLDT.PO_ID =@p_REF_ID
82
	END
83
	
84
END
85

    
86

    
87