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
|