Project

General

Profile

UP_PL_MASTER_SEARCH_NEW.txt

Truong Nguyen Vu, 08/19/2020 09:29 AM

 
1

    
2
ALTER PROCEDURE [dbo].[PL_MASTER_Search_New]
3
@P_PLAN_CODE nvarchar(15) = NULL,
4
@p_PLAN_NAME NVARCHAR(200) = NULL,
5
@P_YEAR NVARCHAR(4) = NULL,
6
@P_COST_ID nvarchar(15) = NULL,
7
@P_BRANCH_ID nvarchar(15) = NULL,
8
@P_BRANCHLOGIN NVARCHAR(15) = NULL,
9
@P_PLAN_TYPE_ID NVARCHAR(15) = NULL,
10
@p_DEP_ID NVARCHAR(15) = NULL,
11
@p_GOOD_NAME NVARCHAR(200) = NULL,
12
@p_USER_LOGIN VARCHAR(200) = NULL,
13
@P_TOP INT = 10,
14
@P_LEVEL varchar(10) = NULL
15
AS
16
BEGIN	
17
	SET @P_TOP = NULL
18
	declare @tmp table(BRANCH_ID varchar(15))
19
	insert into @tmp  SELECT BRANCH_ID  FROM [dbo].[CM_BRANCH_GETCHILDID](@P_BRANCHLOGIN)
20

    
21
	DECLARE @BRANCH_TYPE VARCHAR(15),@DEPLOGIN VARCHAR(20),@ROLE_USER VARCHAR(15),@IS_ALL BIT
22

    
23
	
24
	SET @IS_ALL=0
25
	DECLARE @DVDM_ID TABLE( DVDM_ID VARCHAR(20))
26
	
27
	SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@P_BRANCHLOGIN)
28
	SET @DEPLOGIN =(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_USER_LOGIN)
29
	
30
	IF(EXISTS(SELECT ID FROM PL_ROLE_DATA_CONFIG WHERE ROLE_TYPE='PL_MASTER' AND BRANCH_ID=@P_BRANCHLOGIN AND DEP_ID=@DEPLOGIN))
31
		SET @IS_ALL=1
32
	SET @ROLE_USER = (SELECT RoleName FROM dbo.TL_USER WHERE TLNANME=@p_USER_LOGIN)
33

    
34

    
35
	IF(@IS_ALL=1 OR @ROLE_USER='TGD')
36
	BEGIN
37
	 INSERT INTO @DVDM_ID
38
	 SELECT  DVDM_ID FROM dbo.CM_DVDM WHERE IS_DVDM=1
39
	END
40
	ELSE
41
	BEGIN
42
	 INSERT INTO @DVDM_ID
43
	 SELECT  PC.DVDM_ID FROM 
44
									dbo.PL_COSTCENTER PC 
45
									LEFT JOIN dbo.PL_COSTCENTER_DT PT ON PT.COST_ID=PC.COST_ID
46
									WHERE PT.DEP_ID=@DEPLOGIN AND PT.BRANCH_ID=@P_BRANCHLOGIN AND EXISTS(SELECT DVDM_ID FROM dbo.CM_DVDM WHERE IS_DVDM=1)
47
		
48
	END
49
		IF (@P_TOP = 0 OR @P_TOP IS NULL)
50
		BEGIN
51
		SELECT L.*, D.BRANCH_CODE,LDT.QUANTITY_APP,LDT.QUANTITY_USE, LDT.QUANTITY_REMAIN,
52
		LDT.QUANTITY_ETM,LDT.QUANTITY_REMAIN_ETM,LDT.AMT_APPROVE,LDT.AMT_EXE,LDT.AMT_REMAIN,LDT.AMT_ETM,LDT.AMT_REMAIN_ETM	,LDT.AMT_TRANSFER,LDT.AMT_RECEIVE_TRANSFER,
53
		
54
		D.BRANCH_NAME PGD, E.DEP_CODE, E.DEP_NAME,CC.DVDM_CODE  AS COST_CODE,CC.DVDM_NAME AS COST_NAME,PT.PLAN_TYPE_CODE,PT.PLAN_TYPE_NAME,
55
		CASE WHEN @BRANCH_TYPE='HS' THEN D.BRANCH_NAME + '-' + E.DEP_NAME
56
		ELSE D.BRANCH_NAME END AS DVCP_NAME
57
		FROM PL_MASTER L 
58
		INNER JOIN (
59
			SELECT DT.PLAN_ID,
60
			SUM(ISNULL(DT.QUANTITY,0)) AS QUANTITY_APP,SUM(ISNULL(DT.QUANTITY_EXE,0)) AS  QUANTITY_USE,
61
			SUM(ISNULL(DT.QUANTITY,0)-ISNULL(DT.QUANTITY_EXE,0)) AS QUANTITY_REMAIN,SUM(ISNULL(DT.QUANTITY_ETM,0)) AS  QUANTITY_ETM,
62
			SUM(ISNULL(DT.QUANTITY,0)-ISNULL(DT.QUANTITY_ETM,0)) AS QUANTITY_REMAIN_ETM,
63

    
64
			SUM(ISNULL(DT.AMT_APP,0)) AS AMT_APPROVE,SUM(ISNULL(DT.AMT_EXE,0)) AS  AMT_EXE,
65
			SUM(ISNULL(DT.AMT_TF,0)) AS AMT_TRANSFER,SUM(ISNULL(DT.AMT_RECEIVE_TF,0)) AS AMT_RECEIVE_TRANSFER,
66
			SUM(ISNULL(DT.AMT_APP,0)+ISNULL(DT.AMT_RECEIVE_TF,0)-ISNULL(DT.AMT_TF,0)-ISNULL(DT.AMT_EXE,0)) AS AMT_REMAIN,
67
			SUM(ISNULL(DT.AMT_ETM,0)) AS  AMT_ETM,
68
			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 
69
			FROM dbo.PL_TRADEDETAIL DT 
70
			LEFT JOIN dbo.CM_GOODS CG ON DT.GOODS_ID=CG.GD_ID
71
			WHERE ( CG.GD_NAME LIKE '%' + @p_GOOD_NAME +'%' OR @p_GOOD_NAME IS NULL OR @p_GOOD_NAME='')
72
			GROUP BY DT.PLAN_ID
73
		) LDT ON LDT.PLAN_ID = L.PLAN_ID
74
		LEFT JOIN CM_BRANCH D ON  D.BRANCH_ID = L.BRANCH_ID
75
		LEFT JOIN CM_DEPARTMENT E ON E.DEP_ID = L.DEPT_ID
76
		LEFT JOIN dbo.CM_DVDM CC ON CC.DVDM_ID=L.COST_ID
77
		LEFT JOIN dbo.CM_PLAN_TYPE PT ON PT.PLAN_TYPE_ID=L.PLAN_TYPE_ID
78
		WHERE 1=1
79
			AND (L.PLAN_CODE LIKE '%' + @P_PLAN_CODE + '%' OR @P_PLAN_CODE IS NULL OR @P_PLAN_CODE = '')
80
			AND (L.PLAN_NAME LIKE '%' + @p_PLAN_NAME + '%' OR @p_PLAN_NAME = '' OR @p_PLAN_NAME IS NULL)
81
			AND (L.[YEAR] LIKE '%' + @P_YEAR + '%' OR @P_YEAR IS NULL OR @P_YEAR = '')
82
			AND (L.PLAN_TYPE_ID = @P_PLAN_TYPE_ID OR @P_PLAN_TYPE_ID IS NULL OR @P_PLAN_TYPE_ID = '')
83
			AND (L.COST_ID = @P_COST_ID OR @P_COST_ID IS NULL OR @P_COST_ID = '')
84
			AND (L.DEPT_ID = @P_DEP_ID OR @P_DEP_ID IS NULL OR @P_DEP_ID = '')
85
			AND (L.BRANCH_ID = @P_BRANCH_ID OR @P_BRANCH_ID IS NULL OR @P_BRANCH_ID = '')
86
			AND ((@BRANCH_TYPE='HS' AND((L.BRANCH_ID=@P_BRANCHLOGIN AND  L.DEPT_ID=@DEPLOGIN ) OR L.COST_ID IN (SELECT DVDM_ID FROM @DVDM_ID))) OR (@BRANCH_TYPE <>'HS' AND L.BRANCH_ID=@P_BRANCHLOGIN))
87
			
88
			AND L.RECORD_STATUS = '1'	
89
		END
90
		ELSE 
91
		BEGIN
92

    
93
				IF (@P_TOP <> 0 AND @P_TOP IS NOT NULL )
94
				BEGIN
95
				
96
			SELECT L.*, D.BRANCH_CODE,LDT.QUANTITY_APP,LDT.QUANTITY_USE, LDT.QUANTITY_REMAIN,
97
LDT.QUANTITY_ETM,LDT.QUANTITY_REMAIN_ETM,LDT.AMT_APPROVE,LDT.AMT_EXE,LDT.AMT_REMAIN,LDT.AMT_ETM,LDT.AMT_REMAIN_ETM	,LDT.AMT_TRANSFER,LDT.AMT_RECEIVE_TRANSFER,
98
		
99
		D.BRANCH_NAME PGD, E.DEP_CODE, E.DEP_NAME,CC.DVDM_CODE  AS COST_CODE,CC.DVDM_NAME AS COST_NAME,PT.PLAN_TYPE_CODE,PT.PLAN_TYPE_NAME,
100
		CASE WHEN @BRANCH_TYPE='HS' THEN D.BRANCH_NAME + '-' + E.DEP_NAME
101
		ELSE D.BRANCH_NAME END AS DVCP_NAME
102
		FROM PL_MASTER L 
103
		INNER JOIN (
104
			SELECT DT.PLAN_ID,
105
			SUM(ISNULL(DT.QUANTITY,0)) AS QUANTITY_APP,SUM(ISNULL(DT.QUANTITY_EXE,0)) AS  QUANTITY_USE,
106
			SUM(ISNULL(DT.QUANTITY,0)-ISNULL(DT.QUANTITY_EXE,0)) AS QUANTITY_REMAIN,SUM(ISNULL(DT.QUANTITY_ETM,0)) AS  QUANTITY_ETM,
107
			SUM(ISNULL(DT.QUANTITY,0)-ISNULL(DT.QUANTITY_ETM,0)) AS QUANTITY_REMAIN_ETM,
108

    
109
			SUM(ISNULL(DT.AMT_APP,0)) AS AMT_APPROVE,SUM(ISNULL(DT.AMT_EXE,0)) AS  AMT_EXE,
110
			SUM(ISNULL(DT.AMT_TF,0)) AS AMT_TRANSFER,SUM(ISNULL(DT.AMT_RECEIVE_TF,0)) AS AMT_RECEIVE_TRANSFER,
111
			SUM(ISNULL(DT.AMT_APP,0)+ISNULL(DT.AMT_RECEIVE_TF,0)-ISNULL(DT.AMT_TF,0)-ISNULL(DT.AMT_EXE,0)) AS AMT_REMAIN,
112
			SUM(ISNULL(DT.AMT_ETM,0)) AS  AMT_ETM,
113
			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 
114
			FROM dbo.PL_TRADEDETAIL DT 
115
			LEFT JOIN dbo.CM_GOODS CG ON DT.GOODS_ID=CG.GD_ID
116
			WHERE ( CG.GD_NAME LIKE '%' + @p_GOOD_NAME +'%' OR @p_GOOD_NAME IS NULL OR @p_GOOD_NAME='')
117
			GROUP BY DT.PLAN_ID
118
		) LDT ON LDT.PLAN_ID = L.PLAN_ID
119
		LEFT JOIN CM_BRANCH D ON  D.BRANCH_ID = L.BRANCH_ID
120
		LEFT JOIN CM_DEPARTMENT E ON E.DEP_ID = L.DEPT_ID
121
		LEFT JOIN dbo.CM_DVDM CC ON CC.DVDM_ID=L.COST_ID
122
		LEFT JOIN dbo.CM_PLAN_TYPE PT ON PT.PLAN_TYPE_ID=L.PLAN_TYPE_ID
123
		WHERE 1=1
124
			AND (L.PLAN_CODE LIKE '%' + @P_PLAN_CODE + '%' OR @P_PLAN_CODE IS NULL OR @P_PLAN_CODE = '')
125
			AND (L.PLAN_NAME LIKE '%' + @p_PLAN_NAME + '%' OR @p_PLAN_NAME = '' OR @p_PLAN_NAME IS NULL)
126
			AND (L.[YEAR] LIKE '%' + @P_YEAR + '%' OR @P_YEAR IS NULL OR @P_YEAR = '')
127
			AND (L.PLAN_TYPE_ID = @P_PLAN_TYPE_ID OR @P_PLAN_TYPE_ID IS NULL OR @P_PLAN_TYPE_ID = '')
128
			AND (L.COST_ID = @P_COST_ID OR @P_COST_ID IS NULL OR @P_COST_ID = '')
129
			AND (L.DEPT_ID = @P_DEP_ID OR @P_DEP_ID IS NULL OR @P_DEP_ID = '')
130
				AND (L.BRANCH_ID = @P_BRANCH_ID OR @P_BRANCH_ID IS NULL OR @P_BRANCH_ID = '')
131
			AND ((@BRANCH_TYPE='HS' AND((L.BRANCH_ID=@P_BRANCHLOGIN AND  L.DEPT_ID=@DEPLOGIN ) OR L.COST_ID IN (SELECT DVDM_ID FROM @DVDM_ID))) OR (@BRANCH_TYPE <>'HS' AND L.BRANCH_ID=@P_BRANCHLOGIN))
132
			AND L.RECORD_STATUS = '1'	
133
				
134
			END
135
			
136
		END
137
END
138

    
139

    
140

    
141

    
142

    
143

    
144

    
145

    
146

    
147