1
|
|
2
|
ALTER PROCEDURE [dbo].[PL_REQUEST_DOC_DT_Search]
|
3
|
@P_REQ_ID varchar(15),
|
4
|
@P_GD_CODE VARCHAR(15),
|
5
|
@p_GD_NAME NVARCHAR(500),
|
6
|
@p_DES_GOOD NVARCHAR(500)
|
7
|
AS
|
8
|
|
9
|
DECLARE @listTRADE TABLE
|
10
|
(
|
11
|
GOODS_ID VARCHAR(20),
|
12
|
TRADE_ID VARCHAR(20),
|
13
|
PLAN_ID VARCHAR(20),
|
14
|
AMT_APP DECIMAL(18,2),
|
15
|
AMT_EXE DECIMAL (18,2),
|
16
|
AMT_ETM DECIMAL (18,2),
|
17
|
AMT_TF DECIMAL (18,2),
|
18
|
AMT_RECEIVE_TF DECIMAL (18,2),
|
19
|
NOTES NVARCHAR(1000)
|
20
|
)
|
21
|
|
22
|
IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@P_REQ_ID AND PROCESS_ID='APPROVE'))
|
23
|
BEGIN
|
24
|
IF(EXISTS(SELECT * FROM dbo.PL_TRADEDETAIL_HIST WHERE REQ_ID=@P_REQ_ID))
|
25
|
BEGIN
|
26
|
INSERT INTO @listTRADE
|
27
|
( GOODS_ID,TRADE_ID,PLAN_ID,AMT_APP,AMT_EXE,AMT_ETM,AMT_TF,AMT_RECEIVE_TF, NOTES)
|
28
|
SELECT GOODS_ID,TRADE_ID,PLAN_ID,AMT_APP,AMT_EXE,AMT_ETM,AMT_TF,AMT_RECEIVE_TF, NOTES FROM dbo.PL_TRADEDETAIL_HIST WHERE REQ_ID=@P_REQ_ID
|
29
|
END
|
30
|
ELSE
|
31
|
BEGIN
|
32
|
INSERT INTO @listTRADE
|
33
|
( GOODS_ID,TRADE_ID,PLAN_ID,AMT_APP,AMT_EXE,AMT_ETM,AMT_TF,AMT_RECEIVE_TF, NOTES)
|
34
|
SELECT PT.GOODS_ID,PT.TRADE_ID,PT.PLAN_ID,PT.AMT_APP,PT.AMT_EXE,PT.AMT_ETM-PLDT.TOTAL_AMT,PT.AMT_TF-PLFT.TOTAL_AMT,PT.AMT_RECEIVE_TF-PLTT.TOTAL_AMT, PT.NOTES FROM dbo.PL_TRADEDETAIL PT
|
35
|
LEFT JOIN
|
36
|
(
|
37
|
SELECT TRADE_ID, SUM(TOTAL_AMT) TOTAL_AMT FROM
|
38
|
dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@P_REQ_ID
|
39
|
GROUP BY TRADE_ID
|
40
|
) PLDT ON PLDT.TRADE_ID = PT.TRADE_ID
|
41
|
LEFT JOIN
|
42
|
(
|
43
|
SELECT FR_TRADE_ID, SUM(TOTAL_AMT) TOTAL_AMT FROM
|
44
|
dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@P_REQ_ID
|
45
|
GROUP BY FR_TRADE_ID
|
46
|
) PLFT ON PLFT.FR_TRADE_ID = PT.TRADE_ID
|
47
|
|
48
|
LEFT JOIN
|
49
|
(
|
50
|
SELECT TO_TRADE_ID, SUM(TOTAL_AMT) TOTAL_AMT FROM
|
51
|
dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@P_REQ_ID
|
52
|
GROUP BY TO_TRADE_ID
|
53
|
) PLTT ON PLTT.TO_TRADE_ID = PT.TRADE_ID
|
54
|
WHERE (PT.TRADE_ID IN (SELECT TRADE_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID) OR PT.TRADE_ID IN (SELECT FR_TRADE_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID))
|
55
|
END
|
56
|
END
|
57
|
ELSE
|
58
|
BEGIN
|
59
|
INSERT INTO @listTRADE
|
60
|
( GOODS_ID,TRADE_ID,PLAN_ID,AMT_APP,AMT_EXE,AMT_ETM,AMT_TF,AMT_RECEIVE_TF, NOTES)
|
61
|
SELECT GOODS_ID,TRADE_ID,PLAN_ID,AMT_APP,AMT_EXE,AMT_ETM,AMT_TF,AMT_RECEIVE_TF, NOTES FROM dbo.PL_TRADEDETAIL WHERE (TRADE_ID IN (SELECT TRADE_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID) OR TRADE_ID IN (SELECT FR_TRADE_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID))
|
62
|
END
|
63
|
|
64
|
SELECT A.REQDT_ID,A.NAME,A.GOODS_ID,A.QUANTITY,A.TOTAL_AMT,A.PRICE,A.TRADE_ID,A.PLAN_ID,
|
65
|
PL.AMT_APP,PL.AMT_EXE,PL.NOTES,A.DESCRIPTION,A.HANGHOA_ID,HH.HH_CODE,HH.HH_NAME,A.CURRENCY,A.EXCHANGE_RATE,A.TAXES,
|
66
|
B.GD_CODE, B.GD_ID, B.GD_NAME, C.UNIT_CODE, C.UNIT_ID, A.UNIT_NAME
|
67
|
,ISNULL(PL.AMT_APP,0) - ISNULL(PL.AMT_EXE,0) AS AMT_REMAIN,
|
68
|
ISNULL(PL.AMT_APP,0) - ISNULL(PL.AMT_EXE,0) - ISNULL((SELECT SUM(Temp.TOTAL_AMT) FROM dbo.PL_REQUEST_DOC_DT Temp WHERE Temp.REQ_ID=@P_REQ_ID AND Temp.GOODS_ID=A.GOODS_ID AND Temp.TRADE_ID=A.TRADE_ID GROUP BY Temp.PLAN_ID,Temp.TRADE_ID,Temp.GOODS_ID,Temp.REQ_ID),0) AS AMT_ETM,A.REQDT_TYPE,
|
69
|
A.DVDM_ID,DM.DVDM_CODE,DM.DVDM_NAME,A.TRADE_TYPE,A.SUP_ID,CS.SUP_NAME,CS.SUP_CODE, CASE WHEN A.TRADE_TYPE ='VCCB' THEN N'Theo quy định BVB' ELSE N'Chỉ định thầu' END AS TRADE_TYPE_NAME
|
70
|
FROM PL_REQUEST_DOC_DT A
|
71
|
LEFT JOIN @listTRADE PL ON A.TRADE_ID=PL.TRADE_ID
|
72
|
LEFT JOIN CM_GOODS B On A.GOODS_ID=B.GD_ID
|
73
|
LEFT JOIN CM_UNIT C On A.UNIT_ID=C.UNIT_ID
|
74
|
LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=A.DVDM_ID
|
75
|
LEFT JOIN dbo.CM_HANGHOA HH ON HH.HH_ID=A.HANGHOA_ID
|
76
|
LEFT JOIN dbo.CM_SUPPLIER CS ON CS.SUP_ID=A.SUP_ID
|
77
|
WHERE A.REQ_ID=@P_REQ_ID
|
78
|
AND (B.GD_CODE LIKE '%'+ @P_GD_CODE +'%' OR @P_GD_CODE IS NULL OR @P_GD_CODE ='')
|
79
|
AND (B.GD_NAME LIKE '%'+ @P_GD_NAME +'%' OR @P_GD_NAME IS NULL OR @P_GD_NAME ='')
|
80
|
AND (A.NAME LIKE '%'+ @P_DES_GOOD +'%' OR @P_DES_GOOD IS NULL OR @P_DES_GOOD ='')
|
81
|
UNION ALL
|
82
|
SELECT A.REQDT_ID,A.NAME,A.GOODS_ID,A.QUANTITY,A.TOTAL_AMT,A.PRICE,A.TRADE_ID,A.PLAN_ID,
|
83
|
PL.AMT_APP,PL.AMT_EXE,PL.NOTES,A.DESCRIPTION,A.HANGHOA_ID,HH.HH_CODE,HH.HH_NAME,A.CURRENCY,A.EXCHANGE_RATE,A.TAXES,
|
84
|
ISNULL(B.GD_CODE,DT_LOG.GOOD_CODE) AS GD_CODE, ISNULL(B.GD_ID,DT_LOG.GOOD_ID) AS GD_ID, ISNULL(B.GD_NAME,DT_LOG.GOOD_NAME) AS GD_NAME, C.UNIT_CODE, C.UNIT_ID, A.UNIT_NAME
|
85
|
,ISNULL(PL.AMT_APP,0) - ISNULL(PL.AMT_EXE,0) AS AMT_REMAIN,
|
86
|
ISNULL(PL.AMT_APP,0) - ISNULL(PL.AMT_EXE,0) - ISNULL((SELECT SUM(Temp.TOTAL_AMT) FROM dbo.PL_REQUEST_DOC_DT Temp WHERE Temp.REQ_ID=@P_REQ_ID AND Temp.GOODS_ID=A.GOODS_ID AND Temp.TRADE_ID=A.TRADE_ID GROUP BY Temp.PLAN_ID,Temp.TRADE_ID,Temp.GOODS_ID,Temp.REQ_ID),0) AS AMT_ETM,A.REQDT_TYPE,
|
87
|
A.DVDM_ID,DM.DVDM_CODE,DM.DVDM_NAME,A.TRADE_TYPE,A.SUP_ID,CS.SUP_NAME,CS.SUP_CODE, CASE WHEN A.TRADE_TYPE ='VCCB' THEN N'Theo quy định BVB' ELSE N'Chỉ định thầu' END AS TRADE_TYPE_NAME
|
88
|
FROM PL_REQUEST_DOC_DT A
|
89
|
LEFT JOIN @listTRADE PL ON A.TRADE_ID=PL.TRADE_ID
|
90
|
LEFT JOIN CM_GOODS B On A.GOODS_ID=B.GD_ID
|
91
|
LEFT JOIN dbo.PL_IMPORT_DT DT_LOG ON DT_LOG.TRADE_ID=A.TRADE_ID
|
92
|
LEFT JOIN CM_UNIT C On A.UNIT_ID=C.UNIT_ID
|
93
|
LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=A.DVDM_ID
|
94
|
LEFT JOIN dbo.CM_HANGHOA HH ON HH.HH_ID=A.HANGHOA_ID
|
95
|
LEFT JOIN dbo.CM_SUPPLIER CS ON CS.SUP_ID=A.SUP_ID
|
96
|
WHERE A.REQ_ID IN (SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_PARENT_ID =@P_REQ_ID)
|
97
|
AND (B.GD_CODE LIKE '%'+ @P_GD_CODE +'%' OR @P_GD_CODE IS NULL OR @P_GD_CODE ='')
|
98
|
AND (B.GD_NAME LIKE '%'+ @P_GD_NAME +'%' OR @P_GD_NAME IS NULL OR @P_GD_NAME ='')
|
99
|
AND (A.NAME LIKE '%'+ @P_DES_GOOD +'%' OR @P_DES_GOOD IS NULL OR @P_DES_GOOD ='')
|
100
|
|
101
|
|
102
|
|
103
|
|
104
|
|
105
|
|
106
|
|
107
|
|