Project

General

Profile

PL_REQUEST_DOC_DT_Search.txt

Truong Nguyen Vu, 01/19/2021 01:57 PM

 
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