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
|
|