Project

General

Profile

rpt_PL_MASTER_Search_New.txt

Truong Nguyen Vu, 11/12/2020 04:04 PM

 
1

    
2

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

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

    
24
	
25
	SET @IS_ALL=0
26
	DECLARE @DVDM_ID TABLE( DVDM_ID VARCHAR(20))
27
	
28
	SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@P_BRANCHLOGIN)
29
	SET @DEPLOGIN =(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_USER_LOGIN)
30
	
31

    
32
	
33
	IF(EXISTS(SELECT ID FROM PL_ROLE_DATA_CONFIG WHERE ROLE_TYPE='PL_MASTER' AND BRANCH_ID=@P_BRANCHLOGIN AND DEP_ID=@DEPLOGIN) OR EXISTS(SELECT ID FROM PL_ROLE_DATA_CONFIG WHERE ROLE_TYPE='HANHCHINH' AND BRANCH_ID=@P_BRANCHLOGIN AND DEP_ID=@DEPLOGIN))
34
		SET @IS_ALL=1
35
	SET @ROLE_USER = (SELECT RoleName FROM dbo.TL_USER WHERE TLNANME=@p_USER_LOGIN)
36

    
37

    
38
	IF(@IS_ALL=1 OR @ROLE_USER='TGD')
39
	BEGIN
40
	 INSERT INTO @DVDM_ID
41
	 SELECT  DVDM_ID FROM dbo.CM_DVDM WHERE IS_DVDM=1
42
	END
43
	ELSE
44
	BEGIN
45
	 INSERT INTO @DVDM_ID
46
	 SELECT  PC.DVDM_ID FROM 
47
									dbo.PL_COSTCENTER PC 
48
									LEFT JOIN dbo.PL_COSTCENTER_DT PT ON PT.COST_ID=PC.COST_ID
49
									WHERE PT.DEP_ID=@DEPLOGIN AND PT.BRANCH_ID=@P_BRANCHLOGIN AND EXISTS(SELECT DVDM_ID FROM dbo.CM_DVDM WHERE IS_DVDM=1)
50
		
51
	END
52

    
53
		IF (@P_TOP = 0 OR @P_TOP IS NULL)
54
		BEGIN
55
		SELECT Row_number() over(order by L.PLAN_ID) AS STT,L.*, D.BRANCH_CODE,LDT.QUANTITY_APP,LDT.QUANTITY_USE, LDT.QUANTITY_REMAIN,
56
		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,
57
		
58
		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,
59
		CASE WHEN @BRANCH_TYPE='HS' THEN D.BRANCH_NAME + '-' + E.DEP_NAME
60
		ELSE D.BRANCH_NAME END AS DVCP_NAME,LDT.GD_NAME,LDT.GD_CODE
61
		FROM PL_MASTER L 
62
		INNER JOIN (
63
			SELECT DT.PLAN_ID,CG.GD_NAME,CG.GD_CODE,
64
			(ISNULL(DT.QUANTITY,0)) AS QUANTITY_APP,(ISNULL(DT.QUANTITY_EXE,0)) AS  QUANTITY_USE,
65
			(ISNULL(DT.QUANTITY,0)-ISNULL(DT.QUANTITY_EXE,0)) AS QUANTITY_REMAIN,(ISNULL(DT.QUANTITY_ETM,0)) AS  QUANTITY_ETM,
66
			(ISNULL(DT.QUANTITY,0)-ISNULL(DT.QUANTITY_ETM,0)) AS QUANTITY_REMAIN_ETM,
67

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

    
98
				IF (@P_TOP <> 0 AND @P_TOP IS NOT NULL )
99
				BEGIN
100
				
101
			SELECT  Row_number() over(order by L.PLAN_ID) AS STT, L.*, D.BRANCH_CODE,LDT.QUANTITY_APP,LDT.QUANTITY_USE, LDT.QUANTITY_REMAIN,
102
		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,
103
		
104
		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,
105
		CASE WHEN @BRANCH_TYPE='HS' THEN D.BRANCH_NAME + '-' + E.DEP_NAME
106
		ELSE D.BRANCH_NAME END AS DVCP_NAME,LDT.GD_NAME,LDT.GD_CODE
107
		FROM PL_MASTER L 
108
		INNER JOIN (
109
			SELECT DT.PLAN_ID,CG.GD_NAME,CG.GD_CODE,
110
			(ISNULL(DT.QUANTITY,0)) AS QUANTITY_APP,(ISNULL(DT.QUANTITY_EXE,0)) AS  QUANTITY_USE,
111
			(ISNULL(DT.QUANTITY,0)-ISNULL(DT.QUANTITY_EXE,0)) AS QUANTITY_REMAIN,(ISNULL(DT.QUANTITY_ETM,0)) AS  QUANTITY_ETM,
112
			(ISNULL(DT.QUANTITY,0)-ISNULL(DT.QUANTITY_ETM,0)) AS QUANTITY_REMAIN_ETM,
113

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

    
144

    
145

    
146

    
147

    
148

    
149

    
150

    
151

    
152

    
153
GO
154