Project

General

Profile

SCRIPT CAP NHAT 14 07 2020.txt

Luc Tran Van, 07/14/2020 08:58 AM

 
1
/*
2
Run this script on:
3

    
4
        (local)\SQLEXPRESS.gAMSPro_VietCapitalBank_v2    -  This database will be modified
5

    
6
to synchronize it with:
7

    
8
        118.69.72.241,5036.gAMSPro_VietcapitalBank_v2
9

    
10
You are recommended to back up your database before running this script
11

    
12
Script created by SQL Compare version 13.1.6.5463 from Red Gate Software Ltd at 7/13/2020 9:28:04 PM
13

    
14
*/
15
SET NUMERIC_ROUNDABORT OFF
16
GO
17
SET ANSI_PADDING, ANSI_WARNINGS, CONCAT_NULL_YIELDS_NULL, ARITHABORT, QUOTED_IDENTIFIER, ANSI_NULLS ON
18
GO
19
SET XACT_ABORT ON
20
GO
21
SET TRANSACTION ISOLATION LEVEL Serializable
22
GO
23
BEGIN TRANSACTION
24
GO
25
IF @@ERROR <> 0 SET NOEXEC ON
26
GO
27
PRINT N'Altering [dbo].[CM_ACCOUNT_PAY_Ins]'
28
GO
29
ALTER PROC [dbo].[CM_ACCOUNT_PAY_Ins]
30
@p_USER_ID VARCHAR(15) = NULL,
31
@p_ACC_TYPE VARCHAR(150) = NULL,
32
@p_ACC_NO VARCHAR(150) = NULL,
33
@p_ACC_NAME VARCHAR(150) = NULL,
34
@p_TK_GL VARCHAR(100) = NULL,
35
@p_TK_GL_NAME VARCHAR(1000) = NULL,
36
@p_MAKER_ID VARCHAR(15)= NULL
37
AS
38
BEGIN TRANSACTION
39
	IF(EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE ACC_TYPE =@p_ACC_TYPE AND REF_ID =@p_USER_ID) AND @p_ACC_TYPE <> 'ENTRIES' )
40
	BEGIN
41
		ROLLBACK TRANSACTION
42
		SELECT '-1' as Result, '' ACC_ID, N'Tài khoản tạm ứng của nhân viên ' +@p_USER_ID + N' đã tồn tại trong hệ thống' ErrorDesc
43
		RETURN '-1'
44
	END
45
	IF(EXISTS(SELECT * FROM CM_ACCOUNT_PAY WHERE ACC_TYPE =@p_ACC_TYPE AND REF_ID =@p_USER_ID) AND @p_ACC_TYPE = 'ENTRIES' )
46
	BEGIN
47
		ROLLBACK TRANSACTION
48
		SELECT '-1' as Result, '' ACC_ID, N'Tài khoản hạch toán ' + @p_ACC_NO + N' đã tồn tại trong hệ thống' ErrorDesc
49
		RETURN '-1'
50
	END
51
	IF(@p_TK_GL ='' OR @p_TK_GL IS NULL)
52
	BEGIN
53
	ROLLBACK TRANSACTION
54
		SELECT '-1' as Result, '' ACC_ID, N'Tài khoản GL không được phép để trống' ErrorDesc
55
		RETURN '-1'
56
	END
57
	IF(@p_TK_GL_NAME ='' OR @p_TK_GL_NAME IS NULL)
58
	BEGIN
59
	ROLLBACK TRANSACTION
60
		SELECT '-1' as Result, '' ACC_ID, N'Tên tài khoản GL không được phép để trống' ErrorDesc
61
		RETURN '-1'
62
	END
63
	IF(@p_ACC_NO ='' OR @p_ACC_NO IS NULL)
64
	BEGIN
65
	ROLLBACK TRANSACTION
66
		SELECT '-1' as Result, '' ACC_ID, N'Số tài khoản không được phép để trống' ErrorDesc
67
		RETURN '-1'
68
	END
69
	IF(@p_ACC_NAME ='' OR @p_ACC_NAME IS NULL)
70
	BEGIN
71
	ROLLBACK TRANSACTION
72
		SELECT '-1' as Result, '' ACC_ID, N'Tên tài khoản không được phép để trống' ErrorDesc
73
		RETURN '-1'
74
	END
75
	IF(@p_ACC_TYPE ='ADV_PAY')
76
	BEGIN
77
		INSERT INTO CM_ACCOUNT_PAY (REF_ID,ACC_TYPE,ACC_NUM,ACC_NAME,FUNTION,TK_GL,CREATE_DT,MAKER_ID,EDITOR_ID,EDITOR_DT,AUTH_STATUS,CHECKER_ID,APPROVE_DT,TK_GL_NAME) 
78
		VALUES (@p_USER_ID,@p_ACC_TYPE,@p_ACC_NO,@p_ACC_NAME,'I',@p_TK_GL,GETDATE(),@p_MAKER_ID,NULL,NULL,'U',NULL,NULL,@p_TK_GL_NAME)
79
	END
80
	ELSE
81
	BEGIN
82
		INSERT INTO CM_ACCOUNT(ACC_NO,ACC_NAME,TK_GL,TK_GL_NAME,MAKER_ID,CREATE_DT,AUTH_STATUS,EDITOR_ID,EDITOR_DT,CHECKER_ID,APPROVE_DT) VALUES (@p_ACC_NO,@p_ACC_NAME,@p_TK_GL,@p_TK_GL_NAME,@p_MAKER_ID,GETDATE(),'U',NULL,NULL,NULL,NULL)
83
	END
84
COMMIT TRANSACTION
85
SELECT '0' as Result, ''  ACC_ID, '' ErrorDesc
86
RETURN '0'
87
ABORT:
88
BEGIN
89
		ROLLBACK TRANSACTION
90
		SELECT '-1' as Result, '' ACC_ID, '' ErrorDesc
91
		RETURN '-1'
92
END
93
GO
94
IF @@ERROR <> 0 SET NOEXEC ON
95
GO
96
PRINT N'Creating [dbo].[PL_ROLE_DATA_CONFIG]'
97
GO
98
CREATE TABLE [dbo].[PL_ROLE_DATA_CONFIG]
99
(
100
[ID] [int] NOT NULL IDENTITY(1, 1),
101
[ROLE_TYPE] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
102
[BRANCH_ID] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
103
[DEP_ID] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
104
)
105
GO
106
IF @@ERROR <> 0 SET NOEXEC ON
107
GO
108
PRINT N'Creating primary key [PK_PL_ROLE_DATA_CONFIG] on [dbo].[PL_ROLE_DATA_CONFIG]'
109
GO
110
ALTER TABLE [dbo].[PL_ROLE_DATA_CONFIG] ADD CONSTRAINT [PK_PL_ROLE_DATA_CONFIG] PRIMARY KEY CLUSTERED  ([ID])
111
GO
112
IF @@ERROR <> 0 SET NOEXEC ON
113
GO
114
PRINT N'Altering [dbo].[PL_MASTER_Search_New]'
115
GO
116
/*
117
Select * from PL_MASTER  where PLAN_TYPE = '3'
118
EXEC [PL_MASTER_Search] '','','','','DV0001','DV0001','1','','Y','100', 'ALL'
119
EXEC  [PL_MASTER_Search]  NULL,'','','','DV0021','DV0002','1','','N','100', ''
120
select * from pl_master where BRANCH_ID = 'dv0001' AND RECORD_STATUS = 1
121
*/
122
ALTER PROCEDURE [dbo].[PL_MASTER_Search_New]
123
@P_PLAN_CODE nvarchar(15) = NULL,
124
@p_PLAN_NAME NVARCHAR(200) = NULL,
125
@P_YEAR NVARCHAR(4) = NULL,
126
@P_COST_ID nvarchar(15) = NULL,
127
@P_BRANCH_ID nvarchar(15) = NULL,
128
@P_BRANCHLOGIN NVARCHAR(15) = NULL,
129
@P_PLAN_TYPE_ID NVARCHAR(15) = NULL,
130
@p_DEP_ID NVARCHAR(15) = NULL,
131
@p_GOOD_NAME NVARCHAR(200) = NULL,
132
@p_USER_LOGIN VARCHAR(200) = NULL,
133
@P_TOP INT = 10,
134
@P_LEVEL varchar(10) = NULL
135
AS
136
BEGIN	
137
/*
138
	dbo.FN_GET_CHINHANH(D.BRANCH_ID,'KV') KHU_VUC,
139
	dbo.FN_GET_CHINHANH(D.BRANCH_ID,'CN') CHI_NHANH,
140
	D.BRANCH_NAME PGD,	
141

    
142
*/
143
	--IF (@P_STATUS is null) OR (LEN(@P_STATUS) < 1)
144
	--BEGIN SET @P_STATUS = '' END
145
	SET @P_TOP = NULL
146
	declare @tmp table(BRANCH_ID varchar(15))
147
	insert into @tmp  SELECT BRANCH_ID  FROM [dbo].[CM_BRANCH_GETCHILDID](@P_BRANCHLOGIN)
148

    
149
	DECLARE @BRANCH_TYPE VARCHAR(15),@DEPLOGIN VARCHAR(20),@ROLE_USER VARCHAR(15),@IS_ALL BIT
150

    
151
	
152
	SET @IS_ALL=0
153
	DECLARE @DVDM_ID TABLE( DVDM_ID VARCHAR(20))
154
	
155
	SET @BRANCH_TYPE = (SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@P_BRANCHLOGIN)
156
	SET @DEPLOGIN =(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_USER_LOGIN)
157
	
158
	IF(EXISTS(SELECT ID FROM PL_ROLE_DATA_CONFIG WHERE ROLE_TYPE='PL_MASTER' AND BRANCH_ID=@P_BRANCHLOGIN AND DEP_ID=@DEPLOGIN))
159
		SET @IS_ALL=1
160
	SET @ROLE_USER = (SELECT RoleName FROM dbo.TL_USER WHERE TLNANME=@p_USER_LOGIN)
161

    
162

    
163
	IF(@IS_ALL=1 OR @ROLE_USER='TGD')
164
	BEGIN
165
	 INSERT INTO @DVDM_ID
166
	 SELECT  DVDM_ID FROM dbo.CM_DVDM WHERE IS_DVDM=1
167
	END
168
	ELSE
169
	BEGIN
170
	 INSERT INTO @DVDM_ID
171
	 SELECT  PC.DVDM_ID FROM 
172
									dbo.PL_COSTCENTER PC 
173
									LEFT JOIN dbo.PL_COSTCENTER_DT PT ON PT.COST_ID=PC.COST_ID
174
									WHERE PT.DEP_ID=@DEPLOGIN AND PT.BRANCH_ID=@P_BRANCHLOGIN AND EXISTS(SELECT DVDM_ID FROM dbo.CM_DVDM WHERE IS_DVDM=1)
175
		
176
	END
177
		IF (@P_TOP = 0 OR @P_TOP IS NULL)
178
		BEGIN
179
		SELECT L.*, D.BRANCH_CODE,LDT.QUANTITY_APP,LDT.QUANTITY_USE, LDT.QUANTITY_REMAIN,
180
		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,
181
		
182
		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,
183
		CASE WHEN @BRANCH_TYPE='HS' THEN D.BRANCH_NAME + '-' + E.DEP_NAME
184
		ELSE D.BRANCH_NAME END AS DVCP_NAME
185
		FROM PL_MASTER L 
186
		INNER JOIN (
187
			SELECT DT.PLAN_ID,
188
			SUM(ISNULL(DT.QUANTITY,0)) AS QUANTITY_APP,SUM(ISNULL(DT.QUANTITY_EXE,0)) AS  QUANTITY_USE,
189
			SUM(ISNULL(DT.QUANTITY,0)-ISNULL(DT.QUANTITY_EXE,0)) AS QUANTITY_REMAIN,SUM(ISNULL(DT.QUANTITY_ETM,0)) AS  QUANTITY_ETM,
190
			SUM(ISNULL(DT.QUANTITY,0)-ISNULL(DT.QUANTITY_ETM,0)) AS QUANTITY_REMAIN_ETM,
191

    
192
			SUM(ISNULL(DT.AMT_APP,0)) AS AMT_APPROVE,SUM(ISNULL(DT.AMT_EXE,0)) AS  AMT_EXE,
193
			SUM(ISNULL(DT.AMT_TF,0)) AS AMT_TRANSFER,SUM(ISNULL(DT.AMT_RECEIVE_TF,0)) AS AMT_RECEIVE_TRANSFER,
194
			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,
195
			SUM(ISNULL(DT.AMT_ETM,0)) AS  AMT_ETM,
196
			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 
197
			FROM dbo.PL_TRADEDETAIL DT 
198
			LEFT JOIN dbo.CM_GOODS CG ON DT.GOODS_ID=CG.GD_ID
199
			WHERE ( CG.GD_NAME LIKE '%' + @p_GOOD_NAME +'%' OR @p_GOOD_NAME IS NULL OR @p_GOOD_NAME='')
200
			GROUP BY DT.PLAN_ID
201
		) LDT ON LDT.PLAN_ID = L.PLAN_ID
202
		LEFT JOIN CM_BRANCH D ON  D.BRANCH_ID = L.BRANCH_ID
203
		LEFT JOIN CM_DEPARTMENT E ON E.DEP_ID = L.DEPT_ID
204
		LEFT JOIN dbo.CM_DVDM CC ON CC.DVDM_ID=L.COST_ID
205
		LEFT JOIN dbo.CM_PLAN_TYPE PT ON PT.PLAN_TYPE_ID=L.PLAN_TYPE_ID
206
		WHERE 1=1
207
			AND (L.PLAN_CODE LIKE '%' + @P_PLAN_CODE + '%' OR @P_PLAN_CODE IS NULL OR @P_PLAN_CODE = '')
208
			AND (L.PLAN_NAME LIKE '%' + @p_PLAN_NAME + '%' OR @p_PLAN_NAME = '' OR @p_PLAN_NAME IS NULL)
209
			AND (L.[YEAR] LIKE '%' + @P_YEAR + '%' OR @P_YEAR IS NULL OR @P_YEAR = '')
210
			AND (L.PLAN_TYPE_ID = @P_PLAN_TYPE_ID OR @P_PLAN_TYPE_ID IS NULL OR @P_PLAN_TYPE_ID = '')
211
			AND (L.COST_ID = @P_COST_ID OR @P_COST_ID IS NULL OR @P_COST_ID = '')
212
			AND (L.DEPT_ID = @P_DEP_ID OR @P_DEP_ID IS NULL OR @P_DEP_ID = '')
213
			AND (L.BRANCH_ID = @P_BRANCH_ID OR @P_BRANCH_ID IS NULL OR @P_BRANCH_ID = '')
214
			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))
215
			
216
			AND L.RECORD_STATUS = '1'	
217
		END
218
		ELSE 
219
		BEGIN
220

    
221
				IF (@P_TOP <> 0 AND @P_TOP IS NOT NULL )
222
				BEGIN
223
				
224
			SELECT L.*, D.BRANCH_CODE,LDT.QUANTITY_APP,LDT.QUANTITY_USE, LDT.QUANTITY_REMAIN,
225
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,
226
		
227
		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,
228
		CASE WHEN @BRANCH_TYPE='HS' THEN D.BRANCH_NAME + '-' + E.DEP_NAME
229
		ELSE D.BRANCH_NAME END AS DVCP_NAME
230
		FROM PL_MASTER L 
231
		INNER JOIN (
232
			SELECT DT.PLAN_ID,
233
			SUM(ISNULL(DT.QUANTITY,0)) AS QUANTITY_APP,SUM(ISNULL(DT.QUANTITY_EXE,0)) AS  QUANTITY_USE,
234
			SUM(ISNULL(DT.QUANTITY,0)-ISNULL(DT.QUANTITY_EXE,0)) AS QUANTITY_REMAIN,SUM(ISNULL(DT.QUANTITY_ETM,0)) AS  QUANTITY_ETM,
235
			SUM(ISNULL(DT.QUANTITY,0)-ISNULL(DT.QUANTITY_ETM,0)) AS QUANTITY_REMAIN_ETM,
236

    
237
			SUM(ISNULL(DT.AMT_APP,0)) AS AMT_APPROVE,SUM(ISNULL(DT.AMT_EXE,0)) AS  AMT_EXE,
238
			SUM(ISNULL(DT.AMT_TF,0)) AS AMT_TRANSFER,SUM(ISNULL(DT.AMT_RECEIVE_TF,0)) AS AMT_RECEIVE_TRANSFER,
239
			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,
240
			SUM(ISNULL(DT.AMT_ETM,0)) AS  AMT_ETM,
241
			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 
242
			FROM dbo.PL_TRADEDETAIL DT 
243
			LEFT JOIN dbo.CM_GOODS CG ON DT.GOODS_ID=CG.GD_ID
244
			WHERE ( CG.GD_NAME LIKE '%' + @p_GOOD_NAME +'%' OR @p_GOOD_NAME IS NULL OR @p_GOOD_NAME='')
245
			GROUP BY DT.PLAN_ID
246
		) LDT ON LDT.PLAN_ID = L.PLAN_ID
247
		LEFT JOIN CM_BRANCH D ON  D.BRANCH_ID = L.BRANCH_ID
248
		LEFT JOIN CM_DEPARTMENT E ON E.DEP_ID = L.DEPT_ID
249
		LEFT JOIN dbo.CM_DVDM CC ON CC.DVDM_ID=L.COST_ID
250
		LEFT JOIN dbo.CM_PLAN_TYPE PT ON PT.PLAN_TYPE_ID=L.PLAN_TYPE_ID
251
		WHERE 1=1
252
			AND (L.PLAN_CODE LIKE '%' + @P_PLAN_CODE + '%' OR @P_PLAN_CODE IS NULL OR @P_PLAN_CODE = '')
253
			AND (L.PLAN_NAME LIKE '%' + @p_PLAN_NAME + '%' OR @p_PLAN_NAME = '' OR @p_PLAN_NAME IS NULL)
254
			AND (L.[YEAR] LIKE '%' + @P_YEAR + '%' OR @P_YEAR IS NULL OR @P_YEAR = '')
255
			AND (L.PLAN_TYPE_ID = @P_PLAN_TYPE_ID OR @P_PLAN_TYPE_ID IS NULL OR @P_PLAN_TYPE_ID = '')
256
			AND (L.COST_ID = @P_COST_ID OR @P_COST_ID IS NULL OR @P_COST_ID = '')
257
			AND (L.DEPT_ID = @P_DEP_ID OR @P_DEP_ID IS NULL OR @P_DEP_ID = '')
258
				AND (L.BRANCH_ID = @P_BRANCH_ID OR @P_BRANCH_ID IS NULL OR @P_BRANCH_ID = '')
259
			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))
260
			AND L.RECORD_STATUS = '1'	
261
				
262
			END
263
			
264
		END
265
	
266
	
267
	
268
END
269

    
270

    
271
--EXEC [PL_MASTER_Search] '','','','DV0001','','A','N',100
272
--EXEC [PL_MASTER_Search] '','','','DV0002','3','Y',100
273
--EXEC [PL_MASTER_Search] '','','','DV0001','','N',0
274
--EXEC [PL_MASTER_Search] '','','','DV0001','','Y',0
275
/*
276
Select * from PL_MASTER where PLAN_TYPE='3'
277
EXEC [PL_MASTER_Search] '','','','DV0001','3','Y',100
278
Select * from PL_MASTER where [STATUS] IN (*)
279

    
280
declare @temp table(_Status varchar(1))
281
insert into @temp values ('N')
282

    
283
select * from PL_MASTER where [STATUS] IN (select _Status from @temp )
284
*/
285

    
286

    
287

    
288

    
289

    
290

    
291

    
292

    
293

    
294

    
295
GO
296
IF @@ERROR <> 0 SET NOEXEC ON
297
GO
298
PRINT N'Altering [dbo].[TR_REQ_DOC_Ins_To_PO]'
299
GO
300

    
301
ALTER PROCEDURE [dbo].[TR_REQ_DOC_Ins_To_PO] @p_TR_REQ_ID VARCHAR(15)
302
AS
303
BEGIN TRANSACTION;
304
	DECLARE @l_SUP_ID VARCHAR(15)
305
	DECLARE @p_PO_CODE VARCHAR(15),
306
        @p_BRANCH_ID VARCHAR(20),
307
		@p_SUP_ID VARCHAR(20),
308
		@p_TOTAL_AMT DECIMAL(18,2),
309
		@p_MAKER_ID VARCHAR(20),
310
		@p_TR_REQ_CODE VARCHAR(20),
311
		@p_SUP_NAME NVARCHAR(200),
312
		@p_SUP_ADDR NVARCHAR(200),
313
		@p_BRANCH_RE VARCHAR(20),
314
        @p_PO_NAME NVARCHAR(100);
315
--- LAY DANH SACH NHA CUNG CAP CUA HANG HOA TRONG PYCMS - LUCTV 25052020
316
	DECLARE @TABLE_NCC TABLE (SUP_ID VARCHAR(15))
317
	INSERT INTO @TABLE_NCC SELECT SUP_ID FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID =@p_TR_REQ_ID GROUP BY SUP_ID
318
	WHILE((SELECT COUNT(*) FROM @TABLE_NCC)>0)
319
	BEGIN
320
	SET @l_SUP_ID =(SELECT TOP 1 SUP_ID FROM @TABLE_NCC)
321
	--insert master		
322
	DECLARE @l_PO_ID VARCHAR(15);
323
	EXEC SYS_CodeMasters_Gen 'TR_PO_MASTER', @l_PO_ID OUT;
324
	IF @l_PO_ID = '' OR @l_PO_ID IS NULL
325
	GOTO ABORT;
326
	SELECT @p_BRANCH_ID=BRANCH_DVMS,@p_BRANCH_RE=BRANCH_CREATE,@p_TR_REQ_CODE=REQ_CODE,@p_PO_NAME=REQ_REASON,@p_MAKER_ID=USER_DVMS FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_TR_REQ_ID
327

    
328
	--SELECT TOP 1 @p_SUP_ID = SUP_ID FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_TR_REQ_ID
329
	SET @p_SUP_ID =@l_SUP_ID
330
	SET @p_TOTAL_AMT= (SELECT SUM(TOTAL_AMT) FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_TR_REQ_ID AND SUP_ID =@p_SUP_ID)
331
	--TU PHAT SINH SO PO
332
	DECLARE @ldate INT = (SELECT YEAR(GETDATE()) );
333
	EXEC [dbo].[TR_PO_MASTER_NO_Gen] @p_BRANCH_ID, @ldate, @p_PO_CODE OUT;
334
	IF @p_PO_CODE = ''
335
	   OR @p_PO_CODE IS NULL
336
		GOTO ABORT;
337

    
338
	INSERT INTO TR_PO_MASTER
339
	(
340
		[PO_TYPE],
341
		[PO_ID],
342
		[PO_CODE],
343
		[PO_NAME],
344
		[CONTRACT_ID],
345
		[SUP_ID],
346
		[SUP_NAME],
347
		[SUP_ADDR],
348
		[INPUT_DT],
349
		[PAYMENT_DT],
350
		[TOTAL_AMT],
351
		[REQ_DOC_ID],
352
		[DELIVERY_DT],
353
		[PAYAPP_DT],
354
		[NOTES],
355
		[RECORD_STATUS],
356
		[MAKER_ID],
357
		[CREATE_DT],
358
		[AUTH_STATUS],
359
		[CHECKER_ID],
360
		[APPROVE_DT],
361
		BRANCH_ID
362
	)
363
	VALUES
364
	(1, @l_PO_ID, @p_PO_CODE, @p_PO_NAME, '', @p_SUP_ID, @p_SUP_NAME, @p_SUP_ADDR, GETDATE(),
365
	 NULL, @p_TOTAL_AMT, @p_TR_REQ_ID, NULL,
366
	 NULL, '', '1', @p_MAKER_ID, GETDATE(),
367
	 'E', NULL, NULL, @p_BRANCH_ID);
368
	IF @@Error <> 0
369
		GOTO ABORT;
370
	PRINT 'INSERT MASTER SUCCESS';
371
	INSERT INTO dbo.TR_PO_MASTER_TEMP
372
	(
373
		PO_ID,
374
		TR_REQ_ID,
375
		TR_REQ_CODE
376
	)
377
	VALUES
378
	(   @l_PO_ID,      -- PO_ID - varchar(15)
379
		@p_TR_REQ_ID,  -- TR_REQ_ID - varchar(20)
380
		@p_TR_REQ_CODE -- TR_REQ_CODE - varchar(20)
381
	 );
382
	 DECLARE @HANGHOA_ID VARCHAR(20),@QUANTITY DECIMAL(18,0),@PRICE DECIMAL(18,2),@TOTAL_AMT DECIMAL(18,2),@HH_TYPE VARCHAR(20),@HH_NAME NVARCHAR(100)
383
	 DECLARE lstData CURSOR FOR
384
	 SELECT HANGHOA_ID,QUANTITY,PRICE,TOTAL_AMT FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_TR_REQ_ID AND SUP_ID =@p_SUP_ID
385
		
386
	OPEN lstData
387
	FETCH NEXT FROM lstData INTO @HANGHOA_ID,@QUANTITY,@PRICE,@TOTAL_AMT
388
	WHILE @@FETCH_STATUS = 0
389
	BEGIN
390
	SELECT @HH_NAME= HH_NAME,@HH_TYPE=HH_TYPE_ID FROM dbo.CM_HANGHOA WHERE HH_ID=@HANGHOA_ID
391
	DECLARE @l_PD_ID VARCHAR(15)
392
			EXEC SYS_CodeMasters_Gen 'TR_PO_DETAIL', @l_PD_ID out
393
			IF @l_PD_ID='' OR @l_PD_ID IS NULL GOTO ABORT		
394

    
395
	 INSERT INTO dbo.TR_PO_DETAIL
396
	 (
397
		 PD_ID,
398
		 PO_ID,
399
		 PLAN_ID,
400
		 TRADE_ID,
401
		 GOODS_ID,
402
		 DESCRIPTION,
403
		 UNIT_ID,
404
		 QUANTITY,
405
		 PRICE,
406
		 TOTAL_AMT,
407
		 IS_DELIVERY,
408
		 DELIVERY_DT,
409
		 PAYMENT_STATUS,
410
		 AMOUNT_PAID,
411
		 PAID_DT,
412
		 INVOICENO,
413
		 NOTES,
414
		 RECEIVE_BRANCH,
415
		 RECEIVE_ADDR,
416
		 RECEIVE_PERSON,
417
		 RECEIVE_TEL,
418
		 RECORD_STATUS,
419
		 MAKER_ID,
420
		 CREATE_DT,
421
		 AUTH_STATUS,
422
		 CHECKER_ID,
423
		 APPROVE_DT,
424
		 EXP_DELIVERY_DT,
425
		 GOODS_NAME,
426
		 INVOICE_DT,
427
		 GOODSTYPE_REAL,
428
		 VAT,
429
		 PRICE_VAT,
430
		 CONTRACT_DT
431
	 )
432
	 VALUES
433
	 (   @l_PD_ID,        -- PD_ID - varchar(15)
434
		 @l_PO_ID,        -- PO_ID - varchar(15)
435
		 '',        -- PLAN_ID - varchar(15)
436
		 '',        -- TRADE_ID - varchar(15)
437
		 @HANGHOA_ID,        -- GOODS_ID - varchar(15)
438
		 N'',       -- DESCRIPTION - nvarchar(500)
439
		 '',        -- UNIT_ID - varchar(15)
440
		 @QUANTITY,      -- QUANTITY - decimal(18, 0)
441
		 ROUND(@PRICE/1.1,0),      -- PRICE - decimal(18, 0)
442
		 @TOTAL_AMT,      -- TOTAL_AMT - decimal(18, 0)
443
		 '',        -- IS_DELIVERY - varchar(1)
444
		 NULL, -- DELIVERY_DT - datetime
445
		 'CTT',        -- PAYMENT_STATUS - varchar(4)
446
		 NULL,      -- AMOUNT_PAID - decimal(18, 0)
447
		 NULL, -- PAID_DT - datetime
448
		 '',        -- INVOICENO - varchar(1000)
449
		 N'',       -- NOTES - nvarchar(1000)
450
		 @p_BRANCH_RE,        -- RECEIVE_BRANCH - varchar(15)
451
		 N'',       -- RECEIVE_ADDR - nvarchar(1000)
452
		 N'',       -- RECEIVE_PERSON - nvarchar(500)
453
		 '',        -- RECEIVE_TEL - varchar(100)
454
		 '',        -- RECORD_STATUS - varchar(1)
455
		 @p_MAKER_ID,        -- MAKER_ID - varchar(15)
456
		 GETDATE(), -- CREATE_DT - datetime
457
		 '',        -- AUTH_STATUS - varchar(50)
458
		 '',        -- CHECKER_ID - varchar(15)
459
		 NULL, -- APPROVE_DT - datetime
460
		 NULL, -- EXP_DELIVERY_DT - datetime
461
		 @HH_NAME,       -- GOODS_NAME - nvarchar(500)
462
		 NULL, -- INVOICE_DT - datetime
463
		 @HH_TYPE,        -- GOODSTYPE_REAL - varchar(15)
464
		 10,      -- VAT - decimal(18, 2)
465
		--@TOTAL_AMT -   (ROUND(@PRICE/1.1,0) *@QUANTITY),      -- PRICE_VAT - decimal(18, 0)
466
		 @PRICE -ROUND(@PRICE/1.1,0),
467
		 ''         -- CONTRACT_DT - varchar(15)
468
		 )
469
 
470
	   FETCH NEXT FROM lstData INTO @HANGHOA_ID,@QUANTITY,@PRICE,@TOTAL_AMT
471
	END
472
	 CLOSE lstData;
473
    DEALLOCATE lstData;
474

    
475
	SET @TOTAL_AMT=(SELECT SUM(TOTAL_AMT) AS TOTAL_AMT FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_TR_REQ_ID AND SUP_ID =@p_SUP_ID)
476

    
477
	DECLARE @l_PAY_ID VARCHAR(15)
478
	EXEC SYS_CodeMasters_Gen 'TR_PO_PAYMENT', @l_PAY_ID out
479
	IF @l_PAY_ID='' OR @l_PAY_ID IS NULL GOTO ABORT
480
	INSERT INTO dbo.TR_PO_PAYMENT
481
	(
482
	    PAY_ID,
483
	    PO_ID,
484
	    PAY_PHASE,
485
	    EXP_DT,
486
	    [PERCENT],
487
	    AMOUNT,
488
	    NOTES,
489
	    RECORD_STATUS,
490
	    MAKER_ID,
491
	    CREATE_DT,
492
	    AUTH_STATUS,
493
	    CHECKER_ID,
494
	    APPROVE_DT
495
	)
496
	VALUES
497
	(   @l_PAY_ID,        -- PAY_ID - varchar(15)
498
	    @l_PO_ID,        -- PO_ID - varchar(15)
499
	    '1',        -- PAY_PHASE - varchar(20)
500
	    GETDATE(), -- EXP_DT - datetime
501
	    50,      -- PERCENT - decimal(18, 0)
502
	    @TOTAL_AMT / 2 ,      -- AMOUNT - decimal(18, 0)
503
	    N'',       -- NOTES - nvarchar(1000)
504
	    '1',        -- RECORD_STATUS - varchar(1)
505
	    @p_MAKER_ID,        -- MAKER_ID - varchar(15)
506
	    GETDATE(), -- CREATE_DT - datetime
507
	    'U',        -- AUTH_STATUS - varchar(50)
508
	    '',        -- CHECKER_ID - varchar(15)
509
	    NULL  -- APPROVE_DT - datetime
510
	    )
511
		EXEC SYS_CodeMasters_Gen 'TR_PO_PAYMENT', @l_PAY_ID out
512
	IF @l_PAY_ID='' OR @l_PAY_ID IS NULL GOTO ABORT
513
	INSERT INTO dbo.TR_PO_PAYMENT
514
	(
515
	    PAY_ID,
516
	    PO_ID,
517
	    PAY_PHASE,
518
	    EXP_DT,
519
	    [PERCENT],
520
	    AMOUNT,
521
	    NOTES,
522
	    RECORD_STATUS,
523
	    MAKER_ID,
524
	    CREATE_DT,
525
	    AUTH_STATUS,
526
	    CHECKER_ID,
527
	    APPROVE_DT
528
	)
529
	VALUES
530
	(   @l_PAY_ID,        -- PAY_ID - varchar(15)
531
	    @l_PO_ID,        -- PO_ID - varchar(15)
532
	    '2',        -- PAY_PHASE - varchar(20)
533
	    GETDATE(), -- EXP_DT - datetime
534
	    50,      -- PERCENT - decimal(18, 0)
535
	    @TOTAL_AMT / 2 ,      -- AMOUNT - decimal(18, 0)
536
	    N'',       -- NOTES - nvarchar(1000)
537
	    '1',        -- RECORD_STATUS - varchar(1)
538
	    @p_MAKER_ID,        -- MAKER_ID - varchar(15)
539
	    GETDATE(), -- CREATE_DT - datetime
540
	    'E',        -- AUTH_STATUS - varchar(50)
541
	    '',        -- CHECKER_ID - varchar(15)
542
	    NULL  -- APPROVE_DT - datetime
543
	    )
544

    
545
	IF(@TOTAL_AMT <=5000000)
546
	BEGIN
547
		UPDATE dbo.TR_PO_MASTER SET AUTH_STATUS='A' WHERE PO_ID=@l_PO_ID
548
	END
549
	--XOA DI NHA CUNG CAP
550
	DELETE FROM @TABLE_NCC WHERE SUP_ID =(SELECT TOP 1 SUP_ID FROM @TABLE_NCC)
551
	--- KET THUC VONG LAP KIEM TRA DANH SACH NHA CUNG CAP PYCMS
552
	END
553
	COMMIT TRANSACTION;
554
	RETURN 1;
555
	ABORT:
556
	BEGIN
557
		ROLLBACK TRANSACTION;
558
		RETURN 1;
559
	END;
560
	ABORT1:
561
	BEGIN
562
		CLOSE lstData;
563
		DEALLOCATE lstData;
564
		ROLLBACK TRANSACTION;
565
		RETURN 1;
566
	END;
567

    
568

    
569

    
570

    
571

    
572

    
573

    
574
GO
575
IF @@ERROR <> 0 SET NOEXEC ON
576
GO
577
PRINT N'Altering [dbo].[PL_REQUEST_DOC_DT_ById]'
578
GO
579
ALTER PROCEDURE [dbo].[PL_REQUEST_DOC_DT_ById]
580
@P_REQ_ID varchar(15),
581
@P_TYPE VARCHAR(20),
582
@P_USER_LOGIN VARCHAR(20)
583
AS
584

    
585
DECLARE @DEP_ID VARCHAR(15),@BRANCH_ID  VARCHAR(15),@ROLE VARCHAR(15),@IS_ALL BIT
586

    
587
	
588
	SET @IS_ALL=0
589

    
590
DECLARE
591
@COST_ID TABLE (
592
	COST_ID VARCHAR(15)
593
)
594

    
595
DECLARE @DVDM_ID TABLE (
596
	DVDM_ID VARCHAR(15)
597
)
598

    
599

    
600
SET @DEP_ID=(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@P_USER_LOGIN)
601

    
602
SET @BRANCH_ID=(SELECT TLSUBBRID FROM dbo.TL_USER WHERE TLNANME=@P_USER_LOGIN)
603
 IF(EXISTS(SELECT ID FROM PL_ROLE_DATA_CONFIG WHERE ROLE_TYPE='PL_MASTER' AND BRANCH_ID=@BRANCH_ID AND DEP_ID=@DEP_ID))
604
		SET @IS_ALL=1
605
SET @ROLE=(SELECT RoleName FROM dbo.TL_USER WHERE TLNANME=@P_USER_LOGIN)
606

    
607
	INSERT INTO @COST_ID
608
	SELECT COST_ID FROM dbo.PL_COSTCENTER_DT WHERE DEP_ID=@DEP_ID AND BRANCH_ID=@BRANCH_ID
609

    
610
	INSERT INTO @DVDM_ID
611
	SELECT DVDM_ID FROM dbo.PL_COSTCENTER WHERE COST_ID IN (SELECT COST_ID FROM @COST_ID) GROUP BY DVDM_ID
612

    
613

    
614

    
615
IF(@P_TYPE='DVKD')
616
BEGIN
617

    
618
SELECT A.REQDT_ID,A.NAME,A.GOODS_ID,A.QUANTITY,A.TOTAL_AMT,A.PRICE,A.TRADE_ID,A.PLAN_ID,PL.NOTES,A.DESCRIPTION,A.HANGHOA_ID,HH.HH_CODE,HH.HH_NAME,A.CURRENCY,A.EXCHANGE_RATE,A.TAXES,
619
  B.GD_CODE, B.GD_ID, B.GD_NAME, C.UNIT_CODE, C.UNIT_ID, A.UNIT_NAME,
620
  
621
ISNULL(PL.AMT_APP,0) AS AMT_APP,
622
ISNULL(PL.AMT_EXE,0) AS AMT_EXE,
623
ISNULL(PL.AMT_ETM,0) AS AMT_ETM,
624
ISNULL(PL.AMT_TF,0) AS AMT_TF,
625
ISNULL(PL.AMT_RECEIVE_TF,0) AS AMT_RECEIVE_TF,
626
ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0) - ISNULL(PL.AMT_EXE,0) AS AMT_REMAIN,
627
ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)- ISNULL(PL.AMT_ETM,0) AS AMT_REMAIN_ETM,
628
ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)- ISNULL(PL.AMT_ETM,0)-ISNULL((SELECT SUM(Temp.TOTAL_AMT) AS TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT Temp WHERE Temp.REQ_ID=@P_REQ_ID AND Temp.TRADE_ID=A.TRADE_ID
629
AND EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@P_REQ_ID AND PROCESS_ID <>'APPROVE')
630
GROUP BY Temp.TRADE_ID),0)
631
 AS AMT_REMAIN_REQ,
632
A.REQDT_TYPE,A.KHOI_ID,CK.DVDM_CODE AS KHOI_CODE,CK.DVDM_NAME AS KHOI_NAME,
633
 A.DVDM_ID,DM.DVDM_CODE,DM.DVDM_NAME,A.TRADE_TYPE,A.SUP_ID,CS.SUP_NAME,CS.SUP_CODE,GT.GD_TYPE_NAME,GT.GD_TYPE_CODE,GT.GD_TYPE_ID,A.[NAME] AS REASON_CDT
634
FROM PL_REQUEST_DOC_DT A
635
LEFT JOIN dbo.PL_TRADEDETAIL PL ON A.TRADE_ID=PL.TRADE_ID
636
LEFT JOIN CM_GOODS B On A.GOODS_ID=B.GD_ID
637
LEFT JOIN dbo.CM_GOODSTYPE GT ON B.GD_CODE LIKE '%.' + GT.GD_TYPE_CODE +'.%'
638
LEFT JOIN CM_UNIT C On A.UNIT_ID=C.UNIT_ID
639

    
640
LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=A.DVDM_ID
641
LEFT JOIN dbo.CM_DVDM CK ON CK.DVDM_ID=A.KHOI_ID
642
LEFT JOIN dbo.CM_HANGHOA HH ON HH.HH_ID=A.HANGHOA_ID
643
LEFT JOIN dbo.CM_SUPPLIER CS ON CS.SUP_ID=A.SUP_ID
644
 WHERE A.REQ_ID=@P_REQ_ID 
645
 END
646
ELSE IF(@P_TYPE='PDTT')
647
BEGIN
648

    
649
SELECT A.REQDT_ID,A.NAME,A.GOODS_ID,A.QUANTITY,A.TOTAL_AMT,A.PRICE,A.TRADE_ID,A.PLAN_ID,PL.NOTES,A.DESCRIPTION,A.HANGHOA_ID,HH.HH_CODE,HH.HH_NAME,A.CURRENCY,A.EXCHANGE_RATE,A.TAXES,
650
  B.GD_CODE, B.GD_ID, B.GD_NAME, C.UNIT_CODE, C.UNIT_ID, A.UNIT_NAME,
651
  
652
ISNULL(PL.AMT_APP,0) AS AMT_APP,
653
ISNULL(PL.AMT_EXE,0) AS AMT_EXE,
654
ISNULL(PL.AMT_ETM,0) AS AMT_ETM,
655
ISNULL(PL.AMT_TF,0) AS AMT_TF,
656
ISNULL(PL.AMT_RECEIVE_TF,0) AS AMT_RECEIVE_TF,
657
ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0) - ISNULL(PL.AMT_EXE,0) AS AMT_REMAIN,
658
ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)- ISNULL(PL.AMT_ETM,0) AS AMT_REMAIN_ETM,
659
ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)- ISNULL(PL.AMT_ETM,0)-ISNULL((SELECT SUM(Temp.TOTAL_AMT) AS TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT Temp WHERE Temp.REQ_ID=@P_REQ_ID AND Temp.TRADE_ID=A.TRADE_ID
660
AND EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@P_REQ_ID AND PROCESS_ID <>'APPROVE')
661
GROUP BY Temp.TRADE_ID),0)
662
 AS AMT_REMAIN_REQ,
663
A.REQDT_TYPE,A.KHOI_ID,CK.DVDM_CODE AS KHOI_CODE,CK.DVDM_NAME AS KHOI_NAME,
664
 A.DVDM_ID,DM.DVDM_CODE,DM.DVDM_NAME,A.TRADE_TYPE,A.SUP_ID,CS.SUP_NAME,CS.SUP_CODE,GT.GD_TYPE_NAME,GT.GD_TYPE_CODE,GT.GD_TYPE_ID,A.[NAME] AS REASON_CDT
665
FROM PL_REQUEST_DOC_DT A
666
LEFT JOIN dbo.PL_TRADEDETAIL PL ON A.TRADE_ID=PL.TRADE_ID
667
LEFT JOIN CM_GOODS B On A.GOODS_ID=B.GD_ID
668
LEFT JOIN dbo.CM_GOODSTYPE GT ON B.GD_CODE LIKE '%.' + GT.GD_TYPE_CODE +'.%'
669
LEFT JOIN CM_UNIT C On A.UNIT_ID=C.UNIT_ID
670

    
671
LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=A.DVDM_ID
672
LEFT JOIN dbo.CM_DVDM CK ON CK.DVDM_ID=A.KHOI_ID
673
LEFT JOIN dbo.CM_HANGHOA HH ON HH.HH_ID=A.HANGHOA_ID
674
LEFT JOIN dbo.CM_SUPPLIER CS ON CS.SUP_ID=A.SUP_ID
675
LEFT JOIN dbo.PL_REQUEST_TRANSFER PLT ON PLT.REQ_DOC_ID=A.REQ_ID AND PLT.TO_GOOD_ID=A.GOODS_ID
676
 WHERE A.REQ_ID=@P_REQ_ID AND (@ROLE='TGD' OR @IS_ALL=1   OR @ROLE='HDQT' OR  EXISTS(SELECT * FROM @DVDM_ID WHERE [@DVDM_ID].DVDM_ID=A.DVDM_ID OR [@DVDM_ID].DVDM_ID=A.KHOI_ID ) OR  EXISTS(SELECT * FROM @DVDM_ID WHERE [@DVDM_ID].DVDM_ID=PLT.FR_DVDM_ID OR [@DVDM_ID].DVDM_ID=PLT.FR_KHOI_ID ))
677
 END
678
 ELSE IF(@P_TYPE='XLTT')
679
BEGIN
680

    
681
SELECT A.REQDT_ID,A.NAME,A.GOODS_ID,A.QUANTITY,A.TOTAL_AMT,A.PRICE,A.TRADE_ID,A.PLAN_ID,PL.NOTES,A.DESCRIPTION,A.HANGHOA_ID,HH.HH_CODE,HH.HH_NAME,A.CURRENCY,A.EXCHANGE_RATE,A.TAXES,
682
  B.GD_CODE, B.GD_ID, B.GD_NAME, C.UNIT_CODE, C.UNIT_ID, A.UNIT_NAME,
683
  
684
ISNULL(PL.AMT_APP,0) AS AMT_APP,
685
ISNULL(PL.AMT_EXE,0) AS AMT_EXE,
686
ISNULL(PL.AMT_ETM,0) AS AMT_ETM,
687
ISNULL(PL.AMT_TF,0) AS AMT_TF,
688
ISNULL(PL.AMT_RECEIVE_TF,0) AS AMT_RECEIVE_TF,
689
ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0) - ISNULL(PL.AMT_EXE,0) AS AMT_REMAIN,
690
ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)- ISNULL(PL.AMT_ETM,0) AS AMT_REMAIN_ETM,
691
ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)- ISNULL(PL.AMT_ETM,0)-ISNULL((SELECT SUM(Temp.TOTAL_AMT) AS TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT Temp WHERE Temp.REQ_ID=@P_REQ_ID AND Temp.TRADE_ID=A.TRADE_ID
692
AND EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@P_REQ_ID AND PROCESS_ID <>'APPROVE')
693
GROUP BY Temp.TRADE_ID),0)
694
 AS AMT_REMAIN_REQ,
695
A.REQDT_TYPE,A.KHOI_ID,CK.DVDM_CODE AS KHOI_CODE,CK.DVDM_NAME AS KHOI_NAME,
696
 A.DVDM_ID,DM.DVDM_CODE,DM.DVDM_NAME,A.TRADE_TYPE,A.SUP_ID,CS.SUP_NAME,CS.SUP_CODE,GT.GD_TYPE_NAME,GT.GD_TYPE_CODE,GT.GD_TYPE_ID,A.[NAME] AS REASON_CDT
697
FROM PL_REQUEST_DOC_DT A
698
LEFT JOIN dbo.PL_TRADEDETAIL PL ON A.TRADE_ID=PL.TRADE_ID
699
LEFT JOIN CM_GOODS B On A.GOODS_ID=B.GD_ID
700
LEFT JOIN dbo.CM_GOODSTYPE GT ON B.GD_CODE LIKE '%.' + GT.GD_TYPE_CODE +'.%'
701
LEFT JOIN CM_UNIT C On A.UNIT_ID=C.UNIT_ID
702

    
703
LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=A.DVDM_ID
704
LEFT JOIN dbo.CM_DVDM CK ON CK.DVDM_ID=A.KHOI_ID
705
LEFT JOIN dbo.CM_HANGHOA HH ON HH.HH_ID=A.HANGHOA_ID
706
LEFT JOIN dbo.CM_SUPPLIER CS ON CS.SUP_ID=A.SUP_ID
707
 WHERE A.REQ_ID=@P_REQ_ID AND (@ROLE='TGD' OR @IS_ALL=1 OR @ROLE='HDQT' OR @ROLE ='KSV' OR @ROLE ='GDV' OR  EXISTS(SELECT * FROM @DVDM_ID WHERE [@DVDM_ID].DVDM_ID=A.DVDM_ID OR [@DVDM_ID].DVDM_ID=A.KHOI_ID )
708
 OR EXISTS
709
 (SELECT * FROM dbo.CM_GOOD_DVDM CGD WHERE CGD.GD_ID=A.GOODS_ID AND CGD.DVCM_ID IN (SELECT DVDM_ID FROM @DVDM_ID))
710
 OR EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER PT WHERE PT.TO_TRADE_ID=A.TRADE_ID AND PT.TO_GOOD_ID=A.GOODS_ID AND 
711
 (PT.FR_BRN_ID=@BRANCH_ID AND ( PT.FR_DEP_ID=@DEP_ID OR PT.FR_DEP_ID IS NULL OR PT.FR_DEP_ID='') ))
712
 )
713

    
714
 END
715

    
716
ELSE IF( @P_TYPE='PYC')
717
BEGIN
718

    
719
SELECT A.REQDT_ID,A.NAME,A.GOODS_ID,A.QUANTITY,A.TOTAL_AMT,A.PRICE,A.TRADE_ID,A.PLAN_ID,PL.NOTES,A.DESCRIPTION,A.HANGHOA_ID,HH.HH_CODE,HH.HH_NAME,A.CURRENCY,A.EXCHANGE_RATE,A.TAXES,
720
  B.GD_CODE, B.GD_ID, B.GD_NAME, C.UNIT_CODE, C.UNIT_ID, A.UNIT_NAME,
721
ISNULL(PL.AMT_APP,0) AS AMT_APP,
722
ISNULL(PL.AMT_EXE,0) AS AMT_EXE,
723
ISNULL(PL.AMT_ETM,0) AS AMT_ETM,
724
ISNULL(PL.AMT_TF,0) AS AMT_TF,
725
ISNULL(PL.AMT_RECEIVE_TF,0) AS AMT_RECEIVE_TF,
726
ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0) - ISNULL(PL.AMT_EXE,0) AS AMT_REMAIN,
727
ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)- ISNULL(PL.AMT_ETM,0) AS AMT_REMAIN_ETM,
728
ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)- ISNULL(PL.AMT_ETM,0)-ISNULL((SELECT SUM(Temp.TOTAL_AMT) AS TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT Temp WHERE Temp.REQ_ID=@P_REQ_ID AND Temp.TRADE_ID=A.TRADE_ID
729
AND EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@P_REQ_ID AND PROCESS_ID <>'APPROVE')
730
GROUP BY Temp.TRADE_ID),0)
731
 AS AMT_REMAIN_REQ,
732
A.REQDT_TYPE,A.KHOI_ID,CK.DVDM_CODE AS KHOI_CODE,CK.DVDM_NAME AS KHOI_NAME,
733
 A.DVDM_ID,DM.DVDM_CODE,DM.DVDM_NAME,A.TRADE_TYPE,A.SUP_ID,CS.SUP_NAME,CS.SUP_CODE,GT.GD_TYPE_NAME,GT.GD_TYPE_CODE,GT.GD_TYPE_ID,A.[NAME] AS REASON_CDT
734
FROM PL_REQUEST_DOC_DT A
735
LEFT JOIN dbo.PL_TRADEDETAIL PL ON A.TRADE_ID=PL.TRADE_ID
736
LEFT JOIN CM_GOODS B On A.GOODS_ID=B.GD_ID
737
LEFT JOIN dbo.CM_GOODSTYPE GT ON B.GD_CODE LIKE '%.' + GT.GD_TYPE_CODE +'.%'
738
LEFT JOIN CM_UNIT C On A.UNIT_ID=C.UNIT_ID
739

    
740
LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=A.DVDM_ID
741
LEFT JOIN dbo.CM_DVDM CK ON CK.DVDM_ID=A.KHOI_ID
742
LEFT JOIN dbo.CM_HANGHOA HH ON HH.HH_ID=A.HANGHOA_ID
743
LEFT JOIN dbo.CM_SUPPLIER CS ON CS.SUP_ID=A.SUP_ID
744
 WHERE A.REQ_ID=@P_REQ_ID 
745

    
746
 UNION ALL
747
 
748
SELECT A.REQDT_ID,A.NAME,A.GOODS_ID,A.QUANTITY,A.TOTAL_AMT,A.PRICE,A.TRADE_ID,A.PLAN_ID,PL.NOTES,A.DESCRIPTION,A.HANGHOA_ID,HH.HH_CODE,HH.HH_NAME,A.CURRENCY,A.EXCHANGE_RATE,A.TAXES,
749
  B.GD_CODE, B.GD_ID, B.GD_NAME, C.UNIT_CODE, C.UNIT_ID, A.UNIT_NAME,
750
ISNULL(PL.AMT_APP,0) AS AMT_APP,
751
ISNULL(PL.AMT_EXE,0) AS AMT_EXE,
752
ISNULL(PL.AMT_ETM,0) AS AMT_ETM,
753
ISNULL(PL.AMT_TF,0) AS AMT_TF,
754
ISNULL(PL.AMT_RECEIVE_TF,0) AS AMT_RECEIVE_TF,
755
ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0) - ISNULL(PL.AMT_EXE,0) AS AMT_REMAIN,
756
ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)- ISNULL(PL.AMT_ETM,0) AS AMT_REMAIN_ETM,
757
ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)- ISNULL(PL.AMT_ETM,0)-ISNULL((SELECT SUM(Temp.TOTAL_AMT) AS TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT Temp WHERE Temp.REQ_ID=@P_REQ_ID AND Temp.TRADE_ID=A.TRADE_ID
758
AND EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@P_REQ_ID AND PROCESS_ID <>'APPROVE')
759
GROUP BY Temp.TRADE_ID),0)
760
 AS AMT_REMAIN_REQ,
761
A.REQDT_TYPE,A.KHOI_ID,CK.DVDM_CODE AS KHOI_CODE,CK.DVDM_NAME AS KHOI_NAME,
762
 A.DVDM_ID,DM.DVDM_CODE,DM.DVDM_NAME,A.TRADE_TYPE,A.SUP_ID,CS.SUP_NAME,CS.SUP_CODE,GT.GD_TYPE_NAME,GT.GD_TYPE_CODE,GT.GD_TYPE_ID,A.[NAME] AS REASON_CDT
763
FROM PL_REQUEST_DOC_DT A
764
LEFT JOIN dbo.PL_TRADEDETAIL PL ON A.TRADE_ID=PL.TRADE_ID
765
LEFT JOIN CM_GOODS B On A.GOODS_ID=B.GD_ID
766
LEFT JOIN dbo.CM_GOODSTYPE GT ON B.GD_CODE LIKE '%.' + GT.GD_TYPE_CODE +'.%'
767
LEFT JOIN CM_UNIT C On A.UNIT_ID=C.UNIT_ID
768

    
769
LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=A.DVDM_ID
770
LEFT JOIN dbo.CM_DVDM CK ON CK.DVDM_ID=A.KHOI_ID
771
LEFT JOIN dbo.CM_HANGHOA HH ON HH.HH_ID=A.HANGHOA_ID
772
LEFT JOIN dbo.CM_SUPPLIER CS ON CS.SUP_ID=A.SUP_ID
773
 WHERE A.REQ_ID=(SELECT REQ_PARENT_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@P_REQ_ID)  
774
 END
775

    
776
GO
777
IF @@ERROR <> 0 SET NOEXEC ON
778
GO
779
PRINT N'Altering [dbo].[PL_REQ_GOOD_Search]'
780
GO
781

    
782
/*
783
SELECT * FROM PL_TRADEDETAIL WHERE PLAN_ID = 'PLM000000000143'
784
select * from TR_CONTRACT_DT WHERE CONTRACT_ID = 'TRC000000000039'
785
	[TR_PO_GOODS_Search] 0,'','','','','',NULL,'','PLM000000000143','TRC000000000039','','',''
786
	exec [TR_PO_GOODS_Search] 1,'','','','','',NULL,'','PLM000000000003','','','',''
787
	exec [TR_PO_GOODS_Search] 0,'','','','','',NULL,'','PLM000000000003','','','',''
788
	SELECT * FROM TR_CONTRACT WHERE CONTRACT_TYPE = '1'
789
	SELECT * FROM PL_MASTER 
790
*/
791

    
792
ALTER PROCEDURE [dbo].[PL_REQ_GOOD_Search]
793
	@P_REQDT_TYPE  varchar(1)= NULL,
794
	@p_GD_ID VARCHAR(15) = NULL,
795
	@p_GD_CODE	varchar(15)  = NULL,
796
	@p_GD_NAME	nvarchar(200)  = NULL,
797
	@p_BRANCH_CODE	varchar(15)  = NULL,
798
	@p_BRANCH_ID VARCHAR(20) = NULL,
799
	@p_DEP_ID VARCHAR(20) = NULL,	
800
	@p_BRANCH_LOGIN varchar(15)  = NULL,
801
	@p_USER_LOGIN VARCHAR(20) = NULL,
802
	@P_PLAN_ID NVARCHAR(15) = NULL,
803
	@P_HH_ID VARCHAR(15),
804
	@p_GD_TYPE_ID VARCHAR(20) = NULL,
805
	@p_GD_TYPE_CODE VARCHAR(20)= NULL,
806
	@p_GD_TYPE_NAME NVARCHAR(500)= NULL,
807
	@P_TOP	INT = null
808
AS
809
BEGIN
810
DECLARE	
811
	 @l_QUANTITY numeric(18,0)=0, @l_QUANTITY_EXE decimal(18,0)=0, @l_QUANTITY_REMAIN decimal(18,0)=0,
812
	 @l_AMT numeric(18,0)=0, @l_AMT_EXE decimal(18,0)=0, @l_AMT_REMAIN decimal(18,0)=0,@GD_CODE VARCHAR(50),
813
	 @BRANCH_TYPE VARCHAR(20),@BRANCH_LOGIN VARCHAR(20),@DEP_LOGIN VARCHAR(20),@ROLE_USER VARCHAR(20),@IS_ALL BIT
814

    
815
	
816
	SET @IS_ALL=0
817
	 
818
	 DECLARE @DVDM_ID TABLE( DVDM_ID VARCHAR(20))
819

    
820
	 SET @BRANCH_TYPE= (SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@p_BRANCH_ID)
821
	 SELECT @BRANCH_LOGIN=TLSUBBRID,@DEP_LOGIN=SECUR_CODE ,@ROLE_USER=RoleName FROM dbo.TL_USER WHERE TLNANME=@p_USER_LOGIN
822
	 IF(EXISTS(SELECT ID FROM PL_ROLE_DATA_CONFIG WHERE ROLE_TYPE='PL_MASTER' AND BRANCH_ID=@BRANCH_LOGIN AND DEP_ID=@DEP_LOGIN))
823
		SET @IS_ALL=1
824
	 
825
	IF(@IS_ALL=1 OR @ROLE_USER='TGD')
826
	BEGIN
827
	 INSERT INTO @DVDM_ID
828
	 SELECT  DVDM_ID FROM dbo.CM_DVDM WHERE IS_DVDM=1
829
	END
830
	ELSE
831
	BEGIN
832
	 INSERT INTO @DVDM_ID
833
	 SELECT  PC.DVDM_ID FROM 
834
									dbo.PL_COSTCENTER PC 
835
									LEFT JOIN dbo.PL_COSTCENTER_DT PT ON PT.COST_ID=PC.COST_ID
836
									WHERE PT.DEP_ID=@DEP_LOGIN AND PT.BRANCH_ID=@BRANCH_LOGIN AND EXISTS(SELECT DVDM_ID FROM dbo.CM_DVDM WHERE IS_DVDM=1)
837
		
838
	END
839
	DECLARE @lstGD TABLE (
840
	GD_ID VARCHAR(20)
841
	)
842

    
843
	DECLARE @lstGD_CODE TABLE (
844
	GD_CODE VARCHAR(20)
845
	)
846
	INSERT INTO @lstGD
847
	SELECT GD_ID  FROM dbo.CM_HANGHOA_GOODS WHERE HH_ID=@P_HH_ID
848
	
849

    
850
	IF(@P_HH_ID IS NOT NULL AND @P_HH_ID <>'')
851
	BEGIN	
852
		IF(NOT EXISTS(SELECT PM.PLAN_ID FROM dbo.PL_MASTER PM 
853
		LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.PLAN_ID=PM.PLAN_ID
854
		WHERE (PT.GOODS_ID =@p_GD_ID OR EXISTS(SELECT GD_ID FROM @lstGD WHERE [@lstGD].GD_ID=PT.GOODS_ID)) 
855
		AND PM.YEAR = YEAR(GETDATE()) 
856
		AND     ( 
857
						(
858
							@BRANCH_TYPE='HS' AND PM.BRANCH_ID =@p_BRANCH_ID AND PM.DEPT_ID=@p_DEP_ID 
859
							AND ((@p_DEP_ID = @DEP_LOGIN) OR (@p_DEP_ID <> @DEP_LOGIN AND PM.COST_ID IN (SELECT DVDM_ID FROM @DVDM_ID)))
860
						) 
861
					OR 
862
					(@BRANCH_TYPE='CN' AND PM.BRANCH_ID =@p_BRANCH_ID  AND ((@p_BRANCH_ID=@BRANCH_LOGIN) OR (@p_BRANCH_ID <> @BRANCH_LOGIN AND PM.BRANCH_ID IN (SELECT BRANCH_ID  FROM [dbo].[CM_BRANCH_GETCHILDID](@BRANCH_LOGIN) ))   ))
863
					OR
864
					(@BRANCH_TYPE='PGD' AND PM.BRANCH_ID =@p_BRANCH_ID      )
865
				)
866
			)
867
			
868
		)
869
		BEGIN
870
			SET @P_REQDT_TYPE='O'
871
			INSERT INTO @lstGD_CODE			
872
			SELECT REPLACE(GD_CODE,'.I.','.O.') FROM dbo.CM_GOODS WHERE GD_ID IN (SELECT GD_ID FROM @lstGD)				
873
		END                                                         
874
	END
875

    
876

    
877

    
878

    
879
	IF(@P_TOP IS NULL OR @P_TOP = '' OR @P_TOP = 0)
880
	BEGIN	
881
		IF(@P_REQDT_TYPE='I')
882
		BEGIN
883
			SELECT PM.PLAN_ID,PM.PLAN_CODE,DT.TRADE_ID,DT.GOODS_ID,CG.GD_CODE,CG.GD_NAME,PM.BRANCH_ID,PM.DEPT_ID,
884
			ISNULL(DT.QUANTITY,0) AS QUANTITY,
885
			ISNULL(DT.QUANTITY_EXE,0) AS QUANTITY_EXE,
886
			ISNULL(DT.QUANTITY_ETM,0) AS QUANTITY_ETM,
887
			ISNULL(DT.QUANTITY,0)-	ISNULL(DT.QUANTITY_EXE,0) AS QUANTITY_REMAIN,
888
			ISNULL(DT.QUANTITY,0)-ISNULL(DT.QUANTITY_ETM,0) AS QUANTITY_REMAIN_ETM, 
889
			ISNULL( DT.AMT_APP,0) AS AMT_APP,
890
			ISNULL( DT.AMT_EXE,0) AS AMT_EXE,
891
			ISNULL( DT.AMT_ETM,0) AS AMT_ETM, 
892
			ISNULL( DT.AMT_TF,0) AS AMT_TF, 
893
			ISNULL( DT.AMT_RECEIVE_TF,0) AS AMT_RECEIVE_TF,	
894
			ISNULL(DT.AMT_APP,0) + ISNULL( DT.AMT_RECEIVE_TF,0)- ISNULL( DT.AMT_TF,0)- ISNULL(DT.AMT_EXE,0) AS AMT_REMAIN, 
895
			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,
896
			CB.BRANCH_CODE,CB.BRANCH_NAME,'I' AS REQDT_TYPE,
897
			DT.NOTES,PT.PLAN_TYPE_CODE,PT.PLAN_TYPE_NAME,CM.DVDM_ID AS COST_ID,CM.DVDM_CODE AS COST_CODE,CM.DVDM_NAME AS COST_NAME,CK.DVDM_CODE AS KHOI_CODE,CK.DVDM_ID AS KHOI_ID,CK.DVDM_NAME AS KHOI_NAME,
898
			DM.DVDM_ID,DM.DVDM_CODE,DM.DVDM_NAME,CD.DEP_CODE,CD.DEP_NAME,GT.GD_TYPE_NAME,GT.GD_TYPE_CODE,GT.GD_TYPE_ID
899
			FROM dbo.PL_MASTER PM
900
			LEFT JOIN dbo.PL_TRADEDETAIL DT ON DT.PLAN_ID=PM.PLAN_ID
901
			LEFT JOIN dbo.CM_PLAN_TYPE PT ON PT.PLAN_TYPE_ID=PM.PLAN_TYPE_ID
902
			
903
			LEFT JOIN dbo.CM_GOODS CG ON CG.GD_ID=DT.GOODS_ID
904
			LEFT JOIN dbo.CM_GOOD_DVDM CGDM ON CGDM.GD_ID=CG.GD_ID
905
			LEFT JOIN dbo.CM_GOODSTYPE GT ON CG.GD_CODE LIKE '%.' + GT.GD_TYPE_CODE +'.%'
906
			LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=PM.BRANCH_ID
907
			LEFT JOIN dbo.CM_DEPARTMENT CD ON CD.DEP_ID=PM.DEPT_ID
908
			
909
			LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=CGDM.DVDM_ID
910
			LEFT JOIN dbo.CM_DVDM CM ON CM.DVDM_ID=CGDM.DVCM_ID
911
			LEFT JOIN dbo.CM_DVDM CK ON CK.DVDM_ID=CGDM.KHOI_ID
912
			WHERE (1=1)
913
			AND (CG.GD_NAME LIKE '%' +  @p_GD_NAME + '%' OR @p_GD_NAME IS NULL OR @p_GD_NAME ='')
914
			AND (CG.GD_CODE LIKE '%' +  @p_GD_CODE + '%' OR @p_GD_CODE IS NULL OR @p_GD_CODE ='')
915
			AND (CB.BRANCH_CODE LIKE '%' + @p_BRANCH_CODE +'%' OR @p_BRANCH_CODE IS NULL OR @p_BRANCH_CODE ='')
916
			--AND (PM.BRANCH_ID IN (SELECT BRANCH_ID  FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_LOGIN)))
917
			--AND(PM.BRANCH_ID= @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID='')
918
			AND (PM.PLAN_ID LIKE '%' + @P_PLAN_ID+'%' OR @P_PLAN_ID IS NULL OR @P_PLAN_ID='' )
919
			AND (DT.GOODS_ID = @p_GD_ID    OR @p_GD_ID IS NULL OR @p_GD_ID ='')
920
			AND  (EXISTS(SELECT GD_ID FROM @lstGD WHERE [@lstGD].GD_ID=DT.GOODS_ID) OR @P_HH_ID ='' OR @P_HH_ID IS NULL)
921
			AND     ( 
922
						(
923
							@BRANCH_TYPE='HS' AND PM.BRANCH_ID =@p_BRANCH_ID AND PM.DEPT_ID=@p_DEP_ID 
924
							AND ((@p_DEP_ID = @DEP_LOGIN) OR (@p_DEP_ID <> @DEP_LOGIN AND PM.COST_ID IN (SELECT DVDM_ID FROM @DVDM_ID)))
925
						) 
926
					OR 
927
					(@BRANCH_TYPE='CN' AND PM.BRANCH_ID =@p_BRANCH_ID  AND ((@p_BRANCH_ID=@BRANCH_LOGIN) OR (@p_BRANCH_ID <> @BRANCH_LOGIN AND PM.BRANCH_ID IN (SELECT BRANCH_ID  FROM [dbo].[CM_BRANCH_GETCHILDID](@BRANCH_LOGIN) ))   ))
928
					OR
929
					(@BRANCH_TYPE='PGD' AND PM.BRANCH_ID =@p_BRANCH_ID      )
930
				)
931
			AND PM.YEAR = YEAR(GETDATE())
932

    
933
			AND (GT.GD_TYPE_ID LIKE '%' +  @p_GD_TYPE_ID + '%' OR @p_GD_TYPE_ID IS NULL OR @p_GD_TYPE_ID ='')
934
			AND (GT.GD_TYPE_CODE LIKE '%' +  @p_GD_TYPE_CODE + '%' OR @p_GD_TYPE_CODE IS NULL OR @p_GD_TYPE_CODE ='')
935
			AND (GT.GD_TYPE_NAME LIKE N'%' +  @p_GD_TYPE_NAME + N'%' OR @p_GD_TYPE_NAME IS NULL OR @p_GD_TYPE_NAME ='')
936
		END
937
		ELSE
938
        BEGIN
939
			SELECT '' AS PLAN_ID,'' AS PLAN_CODE,'' AS TRADE_ID, CG.GD_ID AS GOODS_ID, CG.GD_CODE ,CG.GD_NAME ,'' AS BRANCH_ID,'' AS DEPT_ID,
940
			@l_QUANTITY AS QUANTITY,
941
			@l_QUANTITY_EXE AS QUANTITY_EXE,
942
			@l_QUANTITY_EXE AS QUANTITY_ETM,
943
			@l_QUANTITY_REMAIN AS QUANTITY_REMAIN,
944
			@l_QUANTITY_REMAIN AS QUANTITY_REMAIN_ETM,
945
			@l_AMT AS AMT_APP,
946
			@l_AMT_EXE AS AMT_EXE,
947
			@l_AMT_EXE AS AMT_ETM,
948
			@l_AMT_EXE AS AMT_TF,
949
			@l_AMT_EXE AS AMT_RECEIVE_TF,
950
			@l_AMT_REMAIN AS AMT_REMAIN,
951
			@l_AMT_REMAIN AS AMT_REMAIN_ETM,
952
			'' AS BRANCH_CODE,
953
			N'Ngoài kế hoạch' AS BRANCH_NAME,
954
			'O' AS REQDT_TYPE,
955
			'' AS NOTES
956
			,'' AS PLAN_TYPE_CODE,'' AS PLAN_TYPE_NAME,CM.DVDM_ID AS COST_ID,CM.DVDM_CODE AS COST_CODE,CM.DVDM_NAME AS COST_NAME,CK.DVDM_CODE AS KHOI_CODE,CK.DVDM_ID AS KHOI_ID,CK.DVDM_NAME AS KHOI_NAME,
957
			DM.DVDM_ID,DM.DVDM_CODE,DM.DVDM_NAME,'' DEP_CODE,'' DEP_NAME,GT.GD_TYPE_NAME,GT.GD_TYPE_CODE,GT.GD_TYPE_ID
958
			FROM  dbo.CM_GOODS CG 
959
			LEFT JOIN dbo.CM_GOODSTYPE GT ON CG.GD_CODE LIKE '%.' + GT.GD_TYPE_CODE +'.%'
960
			LEFT JOIN dbo.CM_GOOD_DVDM CGDM ON CGDM.GD_ID=CG.GD_ID
961
			LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=CGDM.DVDM_ID
962
			LEFT JOIN dbo.CM_DVDM CM ON CM.DVDM_ID=CGDM.DVCM_ID
963
			LEFT JOIN dbo.CM_DVDM CK ON CK.DVDM_ID=CGDM.KHOI_ID
964

    
965

    
966
		
967
			WHERE (1=1)
968
			AND (CG.GD_NAME LIKE '%' +  @p_GD_NAME + '%' OR @p_GD_NAME IS NULL OR @p_GD_NAME ='')
969
			AND (CG.GD_CODE LIKE '%' +  @p_GD_CODE + '%' OR @p_GD_CODE IS NULL OR @p_GD_CODE ='')
970
			AND CG.GD_CODE LIKE '%.O.%'
971
			AND (EXISTS(SELECT GD_CODE FROM @lstGD_CODE WHERE [@lstGD_CODE].GD_CODE=CG.GD_CODE ) OR @P_HH_ID ='' OR @P_HH_ID IS NULL)
972
			AND (GT.GD_TYPE_ID LIKE '%' +  @p_GD_TYPE_ID + '%' OR @p_GD_TYPE_ID IS NULL OR @p_GD_TYPE_ID ='')
973
			AND (GT.GD_TYPE_CODE LIKE '%' +  @p_GD_TYPE_CODE + '%' OR @p_GD_TYPE_CODE IS NULL OR @p_GD_TYPE_CODE ='')
974
			AND (GT.GD_TYPE_NAME LIKE N'%' +  @p_GD_TYPE_NAME + N'%' OR @p_GD_TYPE_NAME IS NULL OR @p_GD_TYPE_NAME ='')
975
		END
976
	END
977
	ELSE
978
	BEGIN	
979
		IF(@P_REQDT_TYPE='I')
980
		BEGIN
981
			SELECT PM.PLAN_ID,PM.PLAN_CODE,DT.TRADE_ID,DT.GOODS_ID,CG.GD_CODE,CG.GD_NAME,PM.BRANCH_ID,PM.DEPT_ID,
982
			ISNULL(DT.QUANTITY,0) AS QUANTITY,
983
			ISNULL(DT.QUANTITY_EXE,0) AS QUANTITY_EXE,
984
			ISNULL(DT.QUANTITY_ETM,0) AS QUANTITY_ETM,
985
			ISNULL(DT.QUANTITY,0)-	ISNULL(DT.QUANTITY_EXE,0) AS QUANTITY_REMAIN,
986
			ISNULL(DT.QUANTITY,0)-ISNULL(DT.QUANTITY_ETM,0) AS QUANTITY_REMAIN_ETM, 
987
			ISNULL( DT.AMT_APP,0) AS AMT_APP,
988
			ISNULL( DT.AMT_EXE,0) AS AMT_EXE,
989
			ISNULL( DT.AMT_ETM,0) AS AMT_ETM, 
990
			ISNULL( DT.AMT_TF,0) AS AMT_TF, 
991
			ISNULL( DT.AMT_RECEIVE_TF,0) AS AMT_RECEIVE_TF,	
992
			ISNULL(DT.AMT_APP,0) + ISNULL( DT.AMT_RECEIVE_TF,0)- ISNULL( DT.AMT_TF,0)- ISNULL(DT.AMT_EXE,0) AS AMT_REMAIN, 
993
			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,
994
			CB.BRANCH_CODE,CB.BRANCH_NAME,'I' AS REQDT_TYPE,
995
			DT.NOTES,PT.PLAN_TYPE_CODE,PT.PLAN_TYPE_NAME,CM.DVDM_ID AS COST_ID,CM.DVDM_CODE AS COST_CODE,CM.DVDM_NAME AS COST_NAME,CK.DVDM_CODE AS KHOI_CODE,CK.DVDM_ID AS KHOI_ID,
996
			DM.DVDM_ID,DM.DVDM_CODE,DM.DVDM_NAME,CD.DEP_CODE,CD.DEP_NAME,GT.GD_TYPE_NAME,GT.GD_TYPE_CODE,GT.GD_TYPE_ID
997
			FROM dbo.PL_MASTER PM
998
			LEFT JOIN dbo.PL_TRADEDETAIL DT ON DT.PLAN_ID=PM.PLAN_ID
999
			LEFT JOIN dbo.CM_PLAN_TYPE PT ON PT.PLAN_TYPE_ID=PM.PLAN_TYPE_ID
1000
			
1001
			LEFT JOIN dbo.CM_GOODS CG ON CG.GD_ID=DT.GOODS_ID
1002
			LEFT JOIN dbo.CM_GOOD_DVDM CGDM ON CGDM.GD_ID=CG.GD_ID
1003
			LEFT JOIN dbo.CM_GOODSTYPE GT ON CG.GD_CODE LIKE '%.' + GT.GD_TYPE_CODE +'.%'
1004
			LEFT JOIN dbo.CM_BRANCH CB ON CB.BRANCH_ID=PM.BRANCH_ID
1005
			LEFT JOIN dbo.CM_DEPARTMENT CD ON CD.DEP_ID=PM.DEPT_ID
1006
			
1007
			LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=CGDM.DVDM_ID
1008
			LEFT JOIN dbo.CM_DVDM CM ON CM.DVDM_ID=CGDM.DVCM_ID
1009
			LEFT JOIN dbo.CM_DVDM CK ON CK.DVDM_ID=CGDM.KHOI_ID
1010
			WHERE (1=1)
1011
			AND (CG.GD_NAME LIKE '%' +  @p_GD_NAME + '%' OR @p_GD_NAME IS NULL OR @p_GD_NAME ='')
1012
			AND (CG.GD_CODE LIKE '%' +  @p_GD_CODE + '%' OR @p_GD_CODE IS NULL OR @p_GD_CODE ='')
1013
			AND (CB.BRANCH_CODE LIKE '%' + @p_BRANCH_CODE +'%' OR @p_BRANCH_CODE IS NULL OR @p_BRANCH_CODE ='')
1014
			--AND (PM.BRANCH_ID IN (SELECT BRANCH_ID  FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_LOGIN)))
1015
			--AND(PM.BRANCH_ID= @p_BRANCH_ID OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID='')
1016
			AND (PM.PLAN_ID LIKE '%' + @P_PLAN_ID+'%' OR @P_PLAN_ID IS NULL OR @P_PLAN_ID='' )
1017
				AND (DT.GOODS_ID = @p_GD_ID    OR @p_GD_ID IS NULL OR @p_GD_ID ='')
1018
			AND  (EXISTS(SELECT GD_ID FROM @lstGD WHERE [@lstGD].GD_ID=DT.GOODS_ID) OR @P_HH_ID ='' OR @P_HH_ID IS NULL)
1019
		AND     ( 
1020
						(
1021
							@BRANCH_TYPE='HS' AND PM.BRANCH_ID =@p_BRANCH_ID AND PM.DEPT_ID=@p_DEP_ID 
1022
							AND ((@p_DEP_ID = @DEP_LOGIN) OR (@p_DEP_ID <> @DEP_LOGIN AND PM.COST_ID IN (SELECT DVDM_ID FROM @DVDM_ID)))
1023
						) 
1024
					OR 
1025
					(@BRANCH_TYPE<>'HS' AND PM.BRANCH_ID =@p_BRANCH_ID  AND ((@p_BRANCH_ID=@BRANCH_LOGIN) OR (@p_BRANCH_ID <> @BRANCH_LOGIN AND PM.COST_ID IN (SELECT DVDM_ID FROM @DVDM_ID) ))   )
1026
				)
1027
		AND PM.YEAR = YEAR(GETDATE())
1028
		AND (GT.GD_TYPE_ID LIKE '%' +  @p_GD_TYPE_ID + '%' OR @p_GD_TYPE_ID IS NULL OR @p_GD_TYPE_ID ='')
1029
			AND (GT.GD_TYPE_CODE LIKE '%' +  @p_GD_TYPE_CODE + '%' OR @p_GD_TYPE_CODE IS NULL OR @p_GD_TYPE_CODE ='')
1030
			AND (GT.GD_TYPE_NAME LIKE N'%' +  @p_GD_TYPE_NAME + N'%' OR @p_GD_TYPE_NAME IS NULL OR @p_GD_TYPE_NAME ='')
1031
		END
1032
		ELSE
1033
        BEGIN
1034
			SELECT '' AS PLAN_ID,'' AS PLAN_CODE,'' AS TRADE_ID, CG.GD_ID AS GOODS_ID, CG.GD_CODE ,CG.GD_NAME ,'' AS BRANCH_ID,'' AS DEPT_ID,
1035
			@l_QUANTITY AS QUANTITY,
1036
			@l_QUANTITY_EXE AS QUANTITY_EXE,
1037
			@l_QUANTITY_EXE AS QUANTITY_ETM,
1038
			@l_QUANTITY_REMAIN AS QUANTITY_REMAIN,
1039
			@l_QUANTITY_REMAIN AS QUANTITY_REMAIN_ETM,
1040
			@l_AMT AS AMT_APP,
1041
			@l_AMT_EXE AS AMT_EXE,
1042
			@l_AMT_EXE AS AMT_ETM,
1043
			@l_AMT_EXE AS AMT_TF,
1044
			@l_AMT_EXE AS AMT_RECEIVE_TF,
1045
			@l_AMT_REMAIN AS AMT_REMAIN,
1046
			@l_AMT_REMAIN AS AMT_REMAIN_ETM,
1047
			'' AS BRANCH_CODE,
1048
			N'Ngoài kế hoạch' AS BRANCH_NAME,
1049
			'O' AS REQDT_TYPE,
1050
			'' AS NOTES
1051
			,'' AS PLAN_TYPE_CODE,'' AS PLAN_TYPE_NAME,CM.DVDM_ID AS COST_ID,CM.DVDM_CODE AS COST_CODE,CM.DVDM_NAME AS COST_NAME,CK.DVDM_CODE AS KHOI_CODE,CK.DVDM_ID AS KHOI_ID,
1052
			DM.DVDM_ID,DM.DVDM_CODE,DM.DVDM_NAME,'' DEP_CODE,'' DEP_NAME,GT.GD_TYPE_NAME,GT.GD_TYPE_CODE,GT.GD_TYPE_ID
1053
			FROM  dbo.CM_GOODS CG 
1054
			LEFT JOIN dbo.CM_GOODSTYPE GT ON CG.GD_CODE LIKE '%.' + GT.GD_TYPE_CODE +'.%'
1055
			LEFT JOIN dbo.CM_GOOD_DVDM CGDM ON CGDM.GD_ID=CG.GD_ID
1056
			LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=CGDM.DVDM_ID
1057
			LEFT JOIN dbo.CM_DVDM CM ON CM.DVDM_ID=CGDM.DVCM_ID
1058
			LEFT JOIN dbo.CM_DVDM CK ON CK.DVDM_ID=CGDM.KHOI_ID
1059
			WHERE (1=1)
1060
			AND (CG.GD_NAME LIKE '%' +  @p_GD_NAME + '%' OR @p_GD_NAME IS NULL OR @p_GD_NAME ='')
1061
			AND (CG.GD_CODE LIKE '%' +  @p_GD_CODE + '%' OR @p_GD_CODE IS NULL OR @p_GD_CODE ='')
1062
			AND CG.GD_CODE LIKE '%.O.%'
1063
			AND (EXISTS(SELECT GD_CODE FROM @lstGD_CODE WHERE [@lstGD_CODE].GD_CODE=CG.GD_CODE ) OR @P_HH_ID ='' OR @P_HH_ID IS NULL)
1064
			AND (GT.GD_TYPE_ID LIKE '%' +  @p_GD_TYPE_ID + '%' OR @p_GD_TYPE_ID IS NULL OR @p_GD_TYPE_ID ='')
1065
			AND (GT.GD_TYPE_CODE LIKE '%' +  @p_GD_TYPE_CODE + '%' OR @p_GD_TYPE_CODE IS NULL OR @p_GD_TYPE_CODE ='')
1066
			AND (GT.GD_TYPE_NAME LIKE N'%' +  @p_GD_TYPE_NAME + N'%' OR @p_GD_TYPE_NAME IS NULL OR @p_GD_TYPE_NAME ='')
1067
		END
1068
	END
1069
END
1070
--EXEC CM_GOODS_Search '','','','','',0,'','','','','','','','',100s
1071

    
1072

    
1073

    
1074

    
1075

    
1076
GO
1077
IF @@ERROR <> 0 SET NOEXEC ON
1078
GO
1079
PRINT N'Altering [dbo].[PL_REQUEST_TRANSFER_ByID]'
1080
GO
1081
ALTER PROCEDURE [dbo].[PL_REQUEST_TRANSFER_ByID]
1082
@P_REQ_ID varchar(15),
1083
@p_TYPE VARCHAR(15),
1084
@p_TLNAME VARCHAR(20)
1085
AS
1086

    
1087
DECLARE
1088
@COST_ID TABLE (
1089
	COST_ID VARCHAR(15)
1090
)
1091

    
1092
DECLARE @DVDM_ID TABLE (
1093
	DVDM_ID VARCHAR(15)
1094
)
1095

    
1096
DECLARE @DEP_ID VARCHAR(15),@BRANCH_ID  VARCHAR(15),@ROLE VARCHAR(15),@IS_ALL BIT
1097

    
1098
	
1099
	SET @IS_ALL=0
1100

    
1101
SET @DEP_ID=(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_TLNAME)
1102
SET @BRANCH_ID=(SELECT TLSUBBRID FROM dbo.TL_USER WHERE TLNANME=@p_TLNAME)
1103

    
1104
IF(EXISTS(SELECT ID FROM PL_ROLE_DATA_CONFIG WHERE ROLE_TYPE='PL_MASTER' AND BRANCH_ID=@BRANCH_ID AND DEP_ID=@DEP_ID))
1105
		SET @IS_ALL=1
1106

    
1107
SET @ROLE=(SELECT RoleName FROM dbo.TL_USER WHERE TLNANME=@p_TLNAME)
1108

    
1109
	INSERT INTO @COST_ID
1110
	SELECT COST_ID FROM dbo.PL_COSTCENTER_DT WHERE DEP_ID=@DEP_ID AND BRANCH_ID=@BRANCH_ID
1111

    
1112
	INSERT INTO @DVDM_ID
1113
	SELECT DVDM_ID FROM dbo.PL_COSTCENTER WHERE COST_ID IN (SELECT COST_ID FROM @COST_ID) GROUP BY DVDM_ID
1114

    
1115
IF(@p_TYPE='DVKD')
1116
BEGIN
1117
SELECT A.*,FB.BRANCH_CODE AS FR_BRANCH_CODE, FB.BRANCH_NAME AS FR_BRANCH_NAME,TB.BRANCH_CODE AS TO_BRANCH_CODE,
1118
TB.BRANCH_NAME AS TO_BRANCH_NAME,FG.GD_CODE AS FR_GD_CODE,FG.GD_NAME AS FR_GD_NAME,TG.GD_CODE AS TO_GD_CODE,TG.GD_NAME AS TO_GD_NAME,CASE  WHEN A.AUTH_STATUS='A' THEN N'Đã xác nhận' ELSE N'Chưa xác nhận' END AS STATUS_NAME
1119
,DM.DVDM_CODE,DM.DVDM_NAME,CK.DVDM_CODE AS KHOI_CODE,CK.DVDM_NAME AS KHOI_NAME,FD.DEP_NAME AS FR_DEP_NAME,FD.DEP_CODE AS FR_DEP_CODE,TD.DEP_NAME AS TO_DEP_NAME,TD.DEP_CODE AS TO_DEP_CODE,
1120
ISNULL(PL.AMT_APP,0) AS AMT_APP,ISNULL(PL.AMT_EXE,0) AS AMT_EXE, ISNULL(PL.AMT_ETM,0) AS AMT_ETM,ISNULL(PL.AMT_TF,0) AS AMT_TF, ISNULL(PL.AMT_RECEIVE_TF,0) AS AMT_RECEIVE_TF,
1121
 ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)-ISNULL(PL.AMT_EXE,0) AS AMT_REMAIN,
1122
 ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)-ISNULL(PL.AMT_ETM,0) AS AMT_REMAIN_ETM,
1123
 ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)-ISNULL(PL.AMT_ETM,0) - ISNULL((SELECT  SUM(Temp.TOTAL_AMT) AS TOTAL_AMT FROM dbo.PL_REQUEST_TRANSFER Temp WHERE
1124
 Temp.REQ_DOC_ID=@P_REQ_ID AND Temp.FR_TRADE_ID= A.FR_TRADE_ID AND EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@P_REQ_ID AND PROCESS_ID <> 'APPROVE' )
1125
 GROUP BY Temp.FR_TRADE_ID
1126
 ),0)AS AMT_REMAIN_ETM_TF,GTF.GD_TYPE_NAME AS FR_GD_TYPE_NAME,GTF.GD_TYPE_CODE AS FR_GD_TYPE_CODE,GTF.GD_TYPE_ID AS FR_GD_TYPE_ID,
1127
 GTT.GD_TYPE_NAME AS TO_GD_TYPE_NAME,GTT.GD_TYPE_CODE AS TO_GD_TYPE_CODE,GTT.GD_TYPE_ID AS TO_GD_TYPE_ID
1128
FROM dbo.PL_REQUEST_TRANSFER A
1129
LEFT JOIN dbo.CM_BRANCH FB ON FB.BRANCH_ID=A.FR_BRN_ID
1130
LEFT JOIN dbo.CM_BRANCH TB ON TB.BRANCH_ID=A.TO_BRN_ID
1131
LEFT JOIN dbo.CM_DEPARTMENT FD ON FD.DEP_ID=A.FR_DEP_ID
1132
LEFT JOIN dbo.CM_DEPARTMENT TD ON TD.DEP_ID=A.TO_DEP_ID
1133
LEFT JOIN dbo.CM_GOODS FG ON FG.GD_ID=A.FR_GOOD_ID
1134
LEFT JOIN dbo.CM_GOODS TG ON TG.GD_ID=A.TO_GOOD_ID
1135
LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=A.FR_DVDM_ID
1136
LEFT JOIN dbo.CM_DVDM CK ON CK.DVDM_ID=A.FR_KHOI_ID
1137
LEFT JOIN dbo.PL_TRADEDETAIL PL ON PL.TRADE_ID=A.FR_TRADE_ID
1138
LEFT JOIN dbo.CM_GOODSTYPE GTF ON FG.GD_CODE LIKE '%.' + GTF.GD_TYPE_CODE +'.%'
1139
LEFT JOIN dbo.CM_GOODSTYPE GTT ON TG.GD_CODE LIKE '%.' + GTT.GD_TYPE_CODE +'.%'
1140
 WHERE A.REQ_DOC_ID=@P_REQ_ID 
1141
END
1142
ELSE IF(@p_TYPE='PDTT')
1143
BEGIN
1144
SELECT A.*,FB.BRANCH_CODE AS FR_BRANCH_CODE, FB.BRANCH_NAME AS FR_BRANCH_NAME,TB.BRANCH_CODE AS TO_BRANCH_CODE,
1145
TB.BRANCH_NAME AS TO_BRANCH_NAME,FG.GD_CODE AS FR_GD_CODE,FG.GD_NAME AS FR_GD_NAME,TG.GD_CODE AS TO_GD_CODE,TG.GD_NAME AS TO_GD_NAME,CASE  WHEN A.AUTH_STATUS='A' THEN N'Đã xác nhận' ELSE N'Chưa xác nhận' END AS STATUS_NAME
1146
,DM.DVDM_CODE,DM.DVDM_NAME,CK.DVDM_CODE AS KHOI_CODE,CK.DVDM_NAME AS KHOI_NAME,FD.DEP_NAME AS FR_DEP_NAME,FD.DEP_CODE AS FR_DEP_CODE,TD.DEP_NAME AS TO_DEP_NAME,TD.DEP_CODE AS TO_DEP_CODE,
1147
ISNULL(PL.AMT_APP,0) AS AMT_APP,ISNULL(PL.AMT_EXE,0) AS AMT_EXE, ISNULL(PL.AMT_ETM,0) AS AMT_ETM,ISNULL(PL.AMT_TF,0) AS AMT_TF, ISNULL(PL.AMT_RECEIVE_TF,0) AS AMT_RECEIVE_TF,
1148
 ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)-ISNULL(PL.AMT_EXE,0) AS AMT_REMAIN,
1149
 ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)-ISNULL(PL.AMT_ETM,0) AS AMT_REMAIN_ETM,
1150
 ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)-ISNULL(PL.AMT_ETM,0) - ISNULL((SELECT  SUM(Temp.TOTAL_AMT) AS TOTAL_AMT FROM dbo.PL_REQUEST_TRANSFER Temp WHERE
1151
 Temp.REQ_DOC_ID=@P_REQ_ID AND Temp.FR_TRADE_ID= A.FR_TRADE_ID AND EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@P_REQ_ID AND PROCESS_ID <> 'APPROVE' )
1152
 GROUP BY Temp.FR_TRADE_ID
1153
 ),0)AS AMT_REMAIN_ETM_TF,GTF.GD_TYPE_NAME AS FR_GD_TYPE_NAME,GTF.GD_TYPE_CODE AS FR_GD_TYPE_CODE,GTF.GD_TYPE_ID AS FR_GD_TYPE_ID,
1154
 GTT.GD_TYPE_NAME AS TO_GD_TYPE_NAME,GTT.GD_TYPE_CODE AS TO_GD_TYPE_CODE,GTT.GD_TYPE_ID AS TO_GD_TYPE_ID
1155
FROM dbo.PL_REQUEST_TRANSFER A
1156
LEFT JOIN dbo.CM_BRANCH FB ON FB.BRANCH_ID=A.FR_BRN_ID
1157
LEFT JOIN dbo.CM_BRANCH TB ON TB.BRANCH_ID=A.TO_BRN_ID
1158
LEFT JOIN dbo.CM_DEPARTMENT FD ON FD.DEP_ID=A.FR_DEP_ID
1159
LEFT JOIN dbo.CM_DEPARTMENT TD ON TD.DEP_ID=A.TO_DEP_ID
1160
LEFT JOIN dbo.CM_GOODS FG ON FG.GD_ID=A.FR_GOOD_ID
1161
LEFT JOIN dbo.CM_GOODS TG ON TG.GD_ID=A.TO_GOOD_ID
1162
LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=A.FR_DVDM_ID
1163
LEFT JOIN dbo.CM_DVDM CK ON CK.DVDM_ID=A.FR_KHOI_ID
1164
LEFT JOIN dbo.PL_TRADEDETAIL PL ON PL.TRADE_ID=A.FR_TRADE_ID
1165
LEFT JOIN dbo.CM_GOODSTYPE GTF ON FG.GD_CODE LIKE '%.' + GTF.GD_TYPE_CODE +'.%'
1166
LEFT JOIN dbo.CM_GOODSTYPE GTT ON TG.GD_CODE LIKE '%.' + GTT.GD_TYPE_CODE +'.%'
1167
 WHERE A.REQ_DOC_ID=@P_REQ_ID AND (@ROLE='TGD' OR @IS_ALL=1 OR @ROLE='HDQT' OR EXISTS(SELECT * FROM @DVDM_ID WHERE DVDM_ID=A.FR_DVDM_ID OR DVDM_ID=A.FR_KHOI_ID OR
1168
 A.TO_DVDM_ID=DVDM_ID OR A.TO_KHOI_ID=DVDM_ID
1169
 ))
1170
END
1171
ELSE IF(@p_TYPE='XLTT' OR @p_TYPE='TFJOB')
1172
BEGIN
1173
SELECT A.*,FB.BRANCH_CODE AS FR_BRANCH_CODE, FB.BRANCH_NAME AS FR_BRANCH_NAME,TB.BRANCH_CODE AS TO_BRANCH_CODE,
1174
TB.BRANCH_NAME AS TO_BRANCH_NAME,FG.GD_CODE AS FR_GD_CODE,FG.GD_NAME AS FR_GD_NAME,TG.GD_CODE AS TO_GD_CODE,TG.GD_NAME AS TO_GD_NAME,CASE  WHEN A.AUTH_STATUS='A' THEN N'Đã xác nhận' ELSE N'Chưa xác nhận' END AS STATUS_NAME
1175
,DM.DVDM_CODE,DM.DVDM_NAME,CK.DVDM_CODE AS KHOI_CODE,CK.DVDM_NAME AS KHOI_NAME,FD.DEP_NAME AS FR_DEP_NAME,FD.DEP_CODE AS FR_DEP_CODE,TD.DEP_NAME AS TO_DEP_NAME,TD.DEP_CODE AS TO_DEP_CODE,
1176
ISNULL(PL.AMT_APP,0) AS AMT_APP,ISNULL(PL.AMT_EXE,0) AS AMT_EXE, ISNULL(PL.AMT_ETM,0) AS AMT_ETM,ISNULL(PL.AMT_TF,0) AS AMT_TF, ISNULL(PL.AMT_RECEIVE_TF,0) AS AMT_RECEIVE_TF,
1177
 ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)-ISNULL(PL.AMT_EXE,0) AS AMT_REMAIN,
1178
 ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)-ISNULL(PL.AMT_ETM,0) AS AMT_REMAIN_ETM,
1179
 ISNULL(PL.AMT_APP,0) + ISNULL(PL.AMT_RECEIVE_TF,0)-ISNULL(PL.AMT_TF,0)-ISNULL(PL.AMT_ETM,0) - ISNULL((SELECT  SUM(Temp.TOTAL_AMT) AS TOTAL_AMT FROM dbo.PL_REQUEST_TRANSFER Temp WHERE
1180
 Temp.REQ_DOC_ID=@P_REQ_ID AND Temp.FR_TRADE_ID= A.FR_TRADE_ID AND EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@P_REQ_ID AND PROCESS_ID <> 'APPROVE' )
1181
 GROUP BY Temp.FR_TRADE_ID
1182
 ),0)AS AMT_REMAIN_ETM_TF,GTF.GD_TYPE_NAME AS FR_GD_TYPE_NAME,GTF.GD_TYPE_CODE AS FR_GD_TYPE_CODE,GTF.GD_TYPE_ID AS FR_GD_TYPE_ID,
1183
 GTT.GD_TYPE_NAME AS TO_GD_TYPE_NAME,GTT.GD_TYPE_CODE AS TO_GD_TYPE_CODE,GTT.GD_TYPE_ID AS TO_GD_TYPE_ID
1184
FROM dbo.PL_REQUEST_TRANSFER A
1185
LEFT JOIN dbo.CM_BRANCH FB ON FB.BRANCH_ID=A.FR_BRN_ID
1186
LEFT JOIN dbo.CM_BRANCH TB ON TB.BRANCH_ID=A.TO_BRN_ID
1187
LEFT JOIN dbo.CM_DEPARTMENT FD ON FD.DEP_ID=A.FR_DEP_ID
1188
LEFT JOIN dbo.CM_DEPARTMENT TD ON TD.DEP_ID=A.TO_DEP_ID
1189
LEFT JOIN dbo.CM_GOODS FG ON FG.GD_ID=A.FR_GOOD_ID
1190
LEFT JOIN dbo.CM_GOODS TG ON TG.GD_ID=A.TO_GOOD_ID
1191
LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=A.FR_DVDM_ID
1192
LEFT JOIN dbo.CM_DVDM CK ON CK.DVDM_ID=A.FR_KHOI_ID
1193
LEFT JOIN dbo.PL_TRADEDETAIL PL ON PL.TRADE_ID=A.FR_TRADE_ID
1194
LEFT JOIN dbo.CM_GOODSTYPE GTF ON FG.GD_CODE LIKE '%.' + GTF.GD_TYPE_CODE +'.%'
1195
LEFT JOIN dbo.CM_GOODSTYPE GTT ON TG.GD_CODE LIKE '%.' + GTT.GD_TYPE_CODE +'.%'
1196
 WHERE A.REQ_DOC_ID=@P_REQ_ID AND  (A.FR_BRN_ID=@BRANCH_ID AND( A.FR_DEP_ID=@DEP_ID OR A.FR_DEP_ID IS NULL OR A.FR_DEP_ID='')OR  @ROLE='TGD' OR @IS_ALL=1 OR @ROLE='HDQT')
1197
END
1198

    
1199

    
1200

    
1201

    
1202
 --EXEC TR_PO_DETAIL_ById 'TRPM00000000001', 'DV0001'
1203

    
1204

    
1205

    
1206

    
1207

    
1208

    
1209
GO
1210
IF @@ERROR <> 0 SET NOEXEC ON
1211
GO
1212
PRINT N'Altering [dbo].[PL_REQUEST_COSTCENTER_ByID]'
1213
GO
1214
ALTER PROCEDURE [dbo].[PL_REQUEST_COSTCENTER_ByID]
1215
@P_REQ_ID varchar(15),
1216
@p_TYPE VARCHAR(15),
1217
@p_TLNAME VARCHAR(20)
1218
AS
1219

    
1220
DECLARE @DEP_ID VARCHAR(15),@BRANCH_ID  VARCHAR(15),@ROLE VARCHAR(15),@IS_ALL BIT
1221

    
1222
	
1223
	SET @IS_ALL=0
1224

    
1225
DECLARE
1226
@COST_ID TABLE (
1227
	COST_ID VARCHAR(15)
1228
)
1229

    
1230
DECLARE @DVDM_ID TABLE (
1231
	DVDM_ID VARCHAR(15)
1232
)
1233

    
1234
SET @DEP_ID=(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_TLNAME)
1235

    
1236
SET @BRANCH_ID=(SELECT TLSUBBRID FROM dbo.TL_USER WHERE TLNANME=@p_TLNAME)
1237
SET @ROLE=(SELECT RoleName FROM dbo.TL_USER WHERE TLNANME=@p_TLNAME)
1238
IF(EXISTS(SELECT ID FROM PL_ROLE_DATA_CONFIG WHERE ROLE_TYPE='PL_MASTER' AND BRANCH_ID=@BRANCH_ID AND DEP_ID=@DEP_ID))
1239
		SET @IS_ALL=1
1240

    
1241

    
1242
	INSERT INTO @COST_ID
1243
	SELECT COST_ID FROM dbo.PL_COSTCENTER_DT WHERE DEP_ID=@DEP_ID AND BRANCH_ID=@BRANCH_ID
1244

    
1245
	INSERT INTO @DVDM_ID
1246
	SELECT DVDM_ID FROM dbo.PL_COSTCENTER WHERE COST_ID IN (SELECT COST_ID FROM @COST_ID) GROUP BY DVDM_ID
1247

    
1248

    
1249
IF(@p_TYPE='DVKD')
1250
BEGIN
1251
	SELECT A.*,CC.DVDM_NAME AS COST_NAME,CC.DVDM_CODE AS COST_CODE,  CASE  WHEN A.AUTH_STATUS='A' THEN N'Đã xác nhận' ELSE N'Chưa xác nhận' END AS STATUS_NAME
1252
	FROM dbo.PL_REQUEST_COSTCENTER A
1253
	LEFT JOIN dbo.CM_DVDM CC ON A.COST_ID=CC.DVDM_ID
1254
	 WHERE A.REQ_ID=@P_REQ_ID
1255
END
1256
ELSE IF(@p_TYPE='PDTT')
1257
BEGIN
1258
	SELECT A.*,CC.DVDM_NAME AS COST_NAME,CC.DVDM_CODE AS COST_CODE,  CASE  WHEN A.AUTH_STATUS='A' THEN N'Đã xác nhận' ELSE N'Chưa xác nhận' END AS STATUS_NAME
1259
FROM dbo.PL_REQUEST_COSTCENTER A
1260
	LEFT JOIN dbo.CM_DVDM CC ON A.COST_ID=CC.DVDM_ID
1261
 WHERE A.REQ_ID=@P_REQ_ID  AND (
1262
 ( A.COST_ID IN (SELECT DVDM_ID FROM @DVDM_ID) OR @ROLE ='TGD' OR @IS_ALL=1 OR @ROLE='HDQT'))
1263

    
1264
END
1265
ELSE IF(@p_TYPE='XLTT' OR @p_TYPE='TFJOB')
1266
BEGIN
1267
	SELECT A.*,CC.DVDM_NAME AS COST_NAME,CC.DVDM_CODE AS COST_CODE,  CASE  WHEN A.AUTH_STATUS='A' THEN N'Đã xác nhận' ELSE N'Chưa xác nhận' END AS STATUS_NAME
1268
	FROM dbo.PL_REQUEST_COSTCENTER A
1269
	LEFT JOIN dbo.CM_DVDM CC ON A.COST_ID=CC.DVDM_ID
1270
	 WHERE A.REQ_ID=@P_REQ_ID  AND (
1271
	 ( A.COST_ID IN (SELECT DVDM_ID FROM @DVDM_ID))
1272
 OR @ROLE ='TGD' OR @IS_ALL=1  OR @ROLE='HDQT' )
1273
 
1274
END
1275

    
1276

    
1277

    
1278
 --EXEC TR_PO_DETAIL_ById 'TRPM00000000001', 'DV0001'
1279

    
1280

    
1281

    
1282

    
1283

    
1284

    
1285
GO
1286
IF @@ERROR <> 0 SET NOEXEC ON
1287
GO
1288
PRINT N'Altering [dbo].[PL_REQUEST_DOC_App]'
1289
GO
1290
ALTER PROCEDURE [dbo].[PL_REQUEST_DOC_App]
1291
    @p_REQ_ID VARCHAR(15) = NULL,
1292
    @p_AUTH_STATUS VARCHAR(1) = NULL,
1293
    @p_CHECKER_ID VARCHAR(15) = NULL,
1294
    @p_APPROVE_DT DATETIME = NULL,
1295
    @p_ROLE_LOGIN VARCHAR(50) = NULL,
1296
    @p_BRANCH_LOGIN VARCHAR(15),
1297
    @p_PROCESS_DES NVARCHAR(500)
1298
AS
1299

    
1300
BEGIN TRANSACTION;
1301
---LUCTV KIEM TRA NEU TO TRINH DANG BI TRA VE THI KHONG DUOC PHEP DUYET
1302
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE AUTH_STATUS ='R' AND REQ_ID =@p_REQ_ID))
1303
BEGIN
1304
	ROLLBACK TRANSACTION
1305
	SELECT '-1' as Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID)+N' đang bị từ chối. Vui lòng đợi nhân viên xử lý phiếu và gửi phê duyệt lại!' ErrorDesc
1306
	RETURN '-1'
1307
END
1308
--SET @p_APPROVE_DT = @p_APPROVE_DT 
1309

    
1310
--Validation is here
1311
DECLARE @ERRORSYS NVARCHAR(15) = '';
1312
IF (NOT EXISTS (SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID))
1313
    SET @ERRORSYS = 'REQ-00002';
1314
IF @ERRORSYS <> ''
1315
BEGIN
1316
    ROLLBACK TRANSACTION;
1317
    SELECT ErrorCode Result,
1318
           ErrorDesc ErrorDesc
1319
    FROM SYS_ERROR
1320
    WHERE ErrorCode = @ERRORSYS;
1321
    RETURN '0';
1322
END;
1323
DECLARE  @ERROR BIT ,@EROOR_DES NVARCHAR(500)
1324
SELECT @ERROR=ERROR,
1325
       @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'APPNEW','PL_REQUEST_DOC',@p_CHECKER_ID,'APPNEW')
1326
IF(@ERROR=1)
1327
BEGIN
1328
	 ROLLBACK TRANSACTION;
1329
    SELECT '-1'  Result,
1330
           @EROOR_DES ErrorDesc
1331
   
1332
    RETURN '0';
1333
END
1334
--UPDATE dbo.PL_REQUEST_TRANSFER SET AUTH_STATUS = @P_AUTH_STATUS, CHECKER_ID = @P_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103)
1335
--WHERE REQ_DOC_ID = @p_REQ_ID AND FR_BRN_ID IN (SELECT BRANCH_ID FROM  CM_BRANCH_GETCHILDID(@p_BRANCH_LOGIN))
1336
DECLARE @BRANCH_TYPE_LOGIN VARCHAR(15)
1337
SET @BRANCH_TYPE_LOGIN = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@p_BRANCH_LOGIN)
1338
DECLARE @Result VARCHAR(5),
1339
        @TOTAL_TRANSFER DECIMAL(18, 0),
1340
        @TOTAL_AMT DECIMAL(18, 0),
1341
        @ROLE_USER_NOTIFI VARCHAR(50),
1342
        @ROLE_ID VARCHAR(20),
1343
        @ROLE_TF VARCHAR(20),
1344
        @LIMIT_VALUE DECIMAL(18, 0),
1345
        @STEP_CURR VARCHAR(20),
1346
        @STEP_PARENT VARCHAR(20),
1347
        @COST_ID VARCHAR(20),
1348
        @FR_BRANCH_ID VARCHAR(20),
1349
        @FR_DEP_ID VARCHAR(20),
1350
        @DVDM_ID VARCHAR(20),
1351
        @IS_NEXT BIT = 0,
1352
        @TOTAL_AMT_GD DECIMAL(12, 0),
1353
        @STOP BIT,
1354
        @NOTES NVARCHAR(100);
1355
DECLARE @ROLE_CDT VARCHAR(20),
1356
        @DVDM_CDT VARCHAR(20),
1357
        @LIMIT_VALUE_CDT VARCHAR(20),
1358
        @NOTES_CDT VARCHAR(20);
1359
DECLARE @DATA_DVDM TABLE
1360
(
1361
    DVDM_ID VARCHAR(20),
1362
    TOTAL_AMT DECIMAL(12, 0),
1363
	IS_PTGD BIT
1364
);
1365
--UPDATE dbo.PL_REQUEST_COSTCENTER 
1366
--SET DVMD_ID=(SELECT DVDM_ID FROM dbo.PL_COSTCENTER WHERE PL_COSTCENTER.COST_ID=PL_REQUEST_COSTCENTER.COST_ID),
1367
--TOTAL_AMT_GD=(SELECT SUM(PM.TOTAL_AMT) AS AMT FROM
1368
--(SELECT PLAN_ID,GOODS_ID,TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT  WHERE REQDT_TYPE='I' AND REQ_ID=@p_REQ_ID) PR
1369
--LEFT JOIN dbo.PL_MASTER PM ON PR.PLAN_ID=PM.PLAN_ID
1370
--WHERE PM.COST_ID=PL_REQUEST_COSTCENTER.COST_ID)
1371
--WHERE REQ_ID=@p_REQ_ID
1372
	INSERT INTO @DATA_DVDM
1373
	SELECT KHOI_ID,
1374
		   SUM(TOTAL_AMT) AS TOTAL_AMT,DM.IS_PTGD
1375
	FROM dbo.PL_REQUEST_DOC_DT DT
1376
	LEFT JOIN CM_DVDM DM ON DM.DVDM_ID=DT.KHOI_ID AND DM.IS_KHOI=1
1377
	WHERE REQ_ID = @p_REQ_ID AND DT.KHOI_ID IS NOT NULL AND DT.KHOI_ID <>''
1378
	GROUP BY KHOI_ID,DM.IS_PTGD;
1379

    
1380

    
1381
	DELETE FROM dbo.PL_REQUEST_PROCESS
1382
	WHERE REQ_ID = @p_REQ_ID;
1383
	DECLARE @BRANCH_ID VARCHAR(20), @DEP_ID VARCHAR(20),@BRANCH_CREATE VARCHAR(20) ,@DEP_CREATE VARCHAR(20),@BRANCH_TYPE VARCHAR(10),
1384
	@BRANCH_CREATE_TYPE VARCHAR(10)
1385

    
1386

    
1387
	SELECT @BRANCH_ID =BRANCH_ID,@DEP_ID=DEP_ID,@BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
1388

    
1389
	SET @BRANCH_TYPE=(SELECT  TOP 1 BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID)
1390
	SET @BRANCH_CREATE_TYPE=(SELECT  TOP 1 BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
1391

    
1392
	
1393
	IF(@BRANCH_TYPE='PGD')
1394
		SET @BRANCH_ID=(SELECT TOP 1 FATHER_ID  FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID)
1395
		
1396
	
1397
	-- KIEM TRA XEM CO CAP PHE DUYET TRUNG GIAN HAY KHONG 20 05 2020
1398
	IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND SIGN_USER =@p_CHECKER_ID AND PROCESS_ID ='SIGN'))
1399
	BEGIN
1400
		
1401
		DELETE FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID
1402
		INSERT INTO dbo.PL_PROCESS
1403
		(
1404
			REQ_ID,
1405
			PROCESS_ID,
1406
			CHECKER_ID,
1407
			APPROVE_DT,
1408
			PROCESS_DESC,NOTES
1409
		)
1410
		VALUES
1411
		(   @p_REQ_ID,        -- REQ_ID - varchar(15)
1412
			'SIGN',        -- PROCESS_ID - varchar(10)
1413
			@p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
1414
			@p_APPROVE_DT , -- APPROVE_DT - datetime
1415
			N'Cấp phê duyệt trung gian xác nhận tờ trình chủ trương',
1416
			N'Cấp phê duyệt trung gian'
1417
		)
1418
	--- DUA CAP PHE DUYET TRUONG DON VI
1419
	    INSERT INTO dbo.PL_REQUEST_PROCESS
1420
		(
1421
		    REQ_ID,
1422
		    PROCESS_ID,
1423
		    STATUS,
1424
		    ROLE_USER,
1425
		    BRANCH_ID,
1426
			DEP_ID,
1427
		    CHECKER_ID,
1428
		    APPROVE_DT,
1429
		    PARENT_PROCESS_ID,
1430
		    IS_LEAF,
1431
		    COST_ID,
1432
		    DVDM_ID,
1433
		    NOTES,
1434
		    IS_HAS_CHILD
1435
		)
1436
		VALUES
1437
		(   @p_REQ_ID,        -- REQ_ID - varchar(15)
1438
		    'APPNEW',        -- PROCESS_ID - varchar(10)
1439
		    'C',        -- STATUS - varchar(5)
1440
		    'GDDV',        -- ROLE_USER - varchar(50)
1441
		    --@BRANCH_CREATE, 
1442
			@BRANCH_ID,
1443
			@DEP_ID,      -- BRANCH_ID - varchar(15)
1444
		    '',        -- CHECKER_ID - varchar(15)
1445
		    NULL,      -- APPROVE_DT - datetime
1446
		    '',        -- PARENT_PROCESS_ID - varchar(10)
1447
		    'N',        -- IS_LEAF - varchar(1)
1448
		    '',        -- COST_ID - varchar(15)
1449
		    '',        -- DVDM_ID - varchar(15)
1450
		    N'Chờ trưởng đơn vị phê duyệt',       -- NOTES - nvarchar(500)
1451
		    NULL       -- IS_HAS_CHILD - bit
1452
		 )
1453
	--- UPDATE PROCESS_ID VE APP_NEW
1454
	UPDATE PL_REQUEST_DOC SET PROCESS_ID ='APPNEW' WHERE REQ_ID =@p_REQ_ID
1455
	END
1456
	ELSE
1457
	BEGIN -- NGUOC LAI LA GIAM DOC DON VI PHE DUYET
1458
		IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND SIGN_USER IS NOT NULL AND SIGN_USER <> ''))
1459
		BEGIN
1460
			IF(NOT EXISTS (SELECT * FROM PL_PROCESS WHERE PROCESS_ID='SIGN' AND REQ_ID =@p_REQ_ID))
1461
			BEGIN
1462
				ROLLBACK TRANSACTION
1463
				SELECT '-1' Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' đang đợi cấp phê duyệt trung gian xác nhận. Vui lòng đợi nhân viên '+(SELECT SIGN_USER FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID)+' xác nhận phiếu!' ErrorDesc
1464
				RETURN '-1'
1465
			END
1466
		END
1467
		INSERT INTO dbo.PL_REQUEST_PROCESS
1468
		(
1469
			REQ_ID,
1470
			PROCESS_ID,
1471
			STATUS,
1472
			ROLE_USER,
1473
			BRANCH_ID,
1474
			DEP_ID,
1475
			CHECKER_ID,
1476
			APPROVE_DT,
1477
			PARENT_PROCESS_ID,
1478
			IS_LEAF,
1479
			NOTES
1480
		)
1481
		VALUES
1482
		(   @p_REQ_ID,               -- REQ_ID - varchar(15)
1483
			'APPNEW',                  -- PROCESS_ID - varchar(10)
1484
			'P',                     -- STATUS - varchar(5)
1485
			'GDDV',                      -- ROLE_USER - varchar(50)
1486
			@BRANCH_ID  ,
1487
			@DEP_ID,                      -- BRANCH_ID - varchar(15)
1488
			@p_CHECKER_ID,           -- CHECKER_ID - varchar(15)
1489
			GETDATE() , -- APPROVE_DT - datetime
1490
			NULL, 'N', N'Trưởng đơn vị phê duyệt');
1491
		SET @STEP_CURR = 'APPNEW';
1492
		SET @STEP_PARENT = 'APPNEW';
1493

    
1494
		DECLARE @ROLE_KT VARCHAR(20), @DVDM_KT VARCHAR(20),@NOTES_KT NVARCHAR(500)
1495

    
1496

    
1497
		SET @ROLE_KT=(SELECT ROLE_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='KT')
1498
				
1499
		SET @DVDM_KT=(SELECT DVDM_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='KT')
1500
		SET @NOTES_KT = (SELECT CONTENT FROM dbo.CM_ALLCODE WHERE CDVAL='KT' AND CDNAME='PROCESS_ID' AND CDTYPE='REQ') 
1501

    
1502
		IF(NOT EXISTS(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID  AND ROLE_USER=@ROLE_KT AND ( DVDM_ID=@DVDM_KT OR @DVDM_KT IN ((SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC
1503
				LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
1504
				WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))
1505
				BEGIN
1506
				INSERT INTO dbo.PL_REQUEST_PROCESS
1507
				(
1508
					REQ_ID,
1509
					PROCESS_ID,
1510
					STATUS,
1511
					ROLE_USER,
1512
					BRANCH_ID,
1513
					CHECKER_ID,
1514
					APPROVE_DT,
1515
					PARENT_PROCESS_ID,
1516
					IS_LEAF,
1517
					COST_ID,
1518
					DVDM_ID,
1519
					NOTES,
1520
					IS_HAS_CHILD
1521
				)
1522
				VALUES
1523
				(   @p_REQ_ID,    -- REQ_ID - varchar(15)
1524
					'KT',       -- PROCESS_ID - varchar(10)
1525
					'U',          -- STATUS - varchar(5)
1526
					@ROLE_KT,       -- ROLE_USER - varchar(50)
1527
					'',           -- BRANCH_ID - varchar(15)
1528
					'',           -- CHECKER_ID - varchar(15)
1529
					NULL,         -- APPROVE_DT - datetime
1530
					@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
1531
					'N',          -- IS_LEAF - varchar(1)
1532
					'',           -- COST_ID - varchar(15)
1533
					@DVDM_KT, N'Chờ phòng kế toán xác nhận', 1
1534
					-- DVDM_ID - varchar(15)
1535
					);
1536

    
1537
				SET @STEP_PARENT='KT'
1538
				END
1539

    
1540

    
1541

    
1542

    
1543
		IF (EXISTS
1544
		(
1545
			SELECT REQ_COST_ID
1546
			FROM dbo.PL_REQUEST_COSTCENTER
1547
			WHERE REQ_ID = @p_REQ_ID
1548
		)
1549
		   )
1550
		BEGIN
1551
			DECLARE lstCostCenter CURSOR FOR
1552
			SELECT COST_ID
1553
			FROM dbo.PL_REQUEST_COSTCENTER
1554
			WHERE REQ_ID = @p_REQ_ID AND COST_ID IS NOT NULL AND COST_ID <>'';
1555
			OPEN lstCostCenter;
1556
			FETCH NEXT FROM lstCostCenter
1557
			INTO @COST_ID;
1558
			WHILE @@FETCH_STATUS = 0
1559
			BEGIN
1560
				IF(NOT EXISTS(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID  AND ROLE_USER='GDDV' AND ( DVDM_ID=@COST_ID OR @COST_ID IN ((SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC
1561
				LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
1562
				WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))
1563
				BEGIN
1564
				INSERT INTO dbo.PL_REQUEST_PROCESS
1565
				(
1566
					REQ_ID,
1567
					PROCESS_ID,
1568
					STATUS,
1569
					ROLE_USER,
1570
					BRANCH_ID,
1571
					CHECKER_ID,
1572
					APPROVE_DT,
1573
					PARENT_PROCESS_ID,
1574
					IS_LEAF,
1575
					COST_ID,
1576
					DVDM_ID,
1577
					NOTES,
1578
					IS_HAS_CHILD
1579
				)
1580
				VALUES
1581
				(   @p_REQ_ID,    -- REQ_ID - varchar(15)
1582
					'DVCM',       -- PROCESS_ID - varchar(10)
1583
					'U',          -- STATUS - varchar(5)
1584
					'GDDV',       -- ROLE_USER - varchar(50)
1585
					'',           -- BRANCH_ID - varchar(15)
1586
					'',           -- CHECKER_ID - varchar(15)
1587
					NULL,         -- APPROVE_DT - datetime
1588
					@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
1589
					'N',          -- IS_LEAF - varchar(1)
1590
					'',           -- COST_ID - varchar(15)
1591
					@COST_ID, N'Chờ đơn vị chuyên môn xác nhận', 1
1592
					-- DVDM_ID - varchar(15)
1593
					);
1594
				END
1595
				ELSE
1596
				BEGIN
1597

    
1598
					UPDATE PL_REQUEST_COSTCENTER SET AUTH_STATUS ='A',NOTES=N'Đồng ý' WHERE 1= 1 AND
1599
					 REQ_ID=@p_REQ_ID  AND COST_ID=@COST_ID
1600

    
1601

    
1602
			
1603
				END
1604

    
1605
				FETCH NEXT FROM lstCostCenter
1606
				INTO @COST_ID;
1607
			END;
1608
			CLOSE lstCostCenter;
1609
			DEALLOCATE lstCostCenter;
1610
			IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVCM'))
1611
				SET @STEP_PARENT = 'DVCM';
1612
		END;
1613
		SET @TOTAL_AMT =
1614
		(
1615
			SELECT SUM(TOTAL_AMT) AS TOTAL_AMT
1616
			FROM dbo.PL_REQUEST_DOC_DT
1617
			WHERE REQ_ID = @p_REQ_ID
1618
		);
1619
		IF (EXISTS
1620
		(
1621
			SELECT REQ_TRANSFER_ID
1622
			FROM dbo.PL_REQUEST_TRANSFER
1623
			WHERE REQ_DOC_ID = @p_REQ_ID
1624
		)
1625
		   )
1626
		BEGIN
1627

    
1628

    
1629
			IF (EXISTS
1630
			(
1631
				SELECT FR_BRN_ID
1632
				FROM dbo.PL_REQUEST_TRANSFER
1633
				WHERE REQ_DOC_ID = @p_REQ_ID
1634
					  AND
1635
					  (
1636
						  FR_BRN_ID <> @BRANCH_CREATE
1637
						  OR FR_DEP_ID <> @DEP_CREATE
1638
					  )
1639
			)
1640
			   )
1641
			BEGIN
1642
				DECLARE lstTransfer CURSOR FOR
1643
				SELECT FR_BRN_ID,
1644
					   FR_DEP_ID
1645
				FROM dbo.PL_REQUEST_TRANSFER
1646
				WHERE REQ_DOC_ID = @p_REQ_ID
1647
					  AND
1648
					  (
1649
						  FR_BRN_ID <> @BRANCH_CREATE
1650
						  OR FR_DEP_ID <> @DEP_CREATE
1651
					  )
1652
				GROUP BY FR_BRN_ID,
1653
						 FR_DEP_ID;
1654
				OPEN lstTransfer;
1655
				FETCH NEXT FROM lstTransfer
1656
				INTO @FR_BRANCH_ID,
1657
					 @FR_DEP_ID;
1658
				WHILE @@FETCH_STATUS = 0
1659
				BEGIN
1660
					INSERT INTO dbo.PL_REQUEST_PROCESS
1661
					(
1662
						REQ_ID,
1663
						PROCESS_ID,
1664
						STATUS,
1665
						ROLE_USER,
1666
						BRANCH_ID,
1667
						CHECKER_ID,
1668
						APPROVE_DT,
1669
						PARENT_PROCESS_ID,
1670
						IS_LEAF,
1671
						COST_ID,
1672
						DVDM_ID,
1673
						NOTES,
1674
						IS_HAS_CHILD,
1675
						DEP_ID
1676
					)
1677
					VALUES
1678
					(   @p_REQ_ID,     -- REQ_ID - varchar(15)
1679
						'DVDC',        -- PROCESS_ID - varchar(10)
1680
						'U',           -- STATUS - varchar(5)
1681
						'GDDV',        -- ROLE_USER - varchar(50)
1682
						@FR_BRANCH_ID, -- BRANCH_ID - varchar(15)
1683
						'',            -- CHECKER_ID - varchar(15)
1684
						NULL,          -- APPROVE_DT - datetime
1685
						@STEP_PARENT,  -- PARENT_PROCESS_ID - varchar(10)
1686
						'N',           -- IS_LEAF - varchar(1)
1687
						'',            -- COST_ID - varchar(15)
1688
						'',            -- DVDM_ID - varchar(15)
1689
						N'Chờ đơn vị điều chuyển xác nhận', 1, @FR_DEP_ID);
1690
					FETCH NEXT FROM lstTransfer
1691
					INTO @FR_BRANCH_ID,
1692
						 @FR_DEP_ID;
1693
				END;
1694
				CLOSE lstTransfer;
1695
				DEALLOCATE lstTransfer;
1696
				SET @STEP_PARENT = 'DVDC';
1697
			END;
1698

    
1699
			-- Đầu mối nhận
1700
			DECLARE lstTransfer CURSOR FOR
1701
			SELECT TO_DVDM_ID
1702
			FROM dbo.PL_REQUEST_TRANSFER
1703
			WHERE REQ_DOC_ID = @p_REQ_ID AND TO_DVDM_ID IS NOT NULL AND TO_DVDM_ID <>''
1704
			GROUP BY TO_DVDM_ID;
1705
			OPEN lstTransfer;
1706
			FETCH NEXT FROM lstTransfer
1707
			INTO @DVDM_ID;
1708
			WHILE @@FETCH_STATUS = 0
1709
			BEGIN
1710
				IF(NOT EXISTS(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID  AND ROLE_USER='GDDV' AND ( DVDM_ID=@DVDM_ID OR @DVDM_ID IN ((SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC
1711
				LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
1712
				WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))
1713
		
1714
				BEGIN
1715
				INSERT INTO dbo.PL_REQUEST_PROCESS
1716
				(
1717
					REQ_ID,
1718
					PROCESS_ID,
1719
					STATUS,
1720
					ROLE_USER,
1721
					BRANCH_ID,
1722
					CHECKER_ID,
1723
					APPROVE_DT,
1724
					PARENT_PROCESS_ID,
1725
					IS_LEAF,
1726
					COST_ID,
1727
					DVDM_ID,
1728
					NOTES,
1729
					IS_HAS_CHILD
1730
				)
1731
				VALUES
1732
				(   @p_REQ_ID,    -- REQ_ID - varchar(15)
1733
					'DVDM_DC',    -- PROCESS_ID - varchar(10)
1734
					'U',          -- STATUS - varchar(5)
1735
					'GDDV',       -- ROLE_USER - varchar(50)
1736
					'',           -- BRANCH_ID - varchar(15)
1737
					'',           -- CHECKER_ID - varchar(15)
1738
					NULL,         -- APPROVE_DT - datetime
1739
					@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
1740
					'N',          -- IS_LEAF - varchar(1)
1741
					'',           -- COST_ID - varchar(15)
1742
					@DVDM_ID,     -- DVDM_ID - varchar(15)
1743
					N'Chờ đơn vị đầu mối xác nhận', 0);
1744
				END
1745
				FETCH NEXT FROM lstTransfer
1746
				INTO @DVDM_ID;
1747
			END;
1748
			CLOSE lstTransfer;
1749
			DEALLOCATE lstTransfer;
1750

    
1751

    
1752
			IF (EXISTS
1753
			(
1754
				SELECT FR_BRN_ID
1755
				FROM dbo.PL_REQUEST_TRANSFER
1756
				WHERE REQ_DOC_ID = @p_REQ_ID
1757
					  AND FR_BRN_ID = @BRANCH_CREATE
1758
					  AND FR_DEP_ID = @DEP_CREATE
1759
			)
1760
			   )
1761
			BEGIN
1762
				-- Đầu mối cho
1763
				DECLARE lstTransfer CURSOR FOR
1764
				SELECT FR_DVDM_ID
1765
				FROM dbo.PL_REQUEST_TRANSFER
1766
				WHERE REQ_DOC_ID = @p_REQ_ID
1767
					  AND FR_BRN_ID = @BRANCH_CREATE
1768
					  AND FR_DEP_ID = @DEP_CREATE
1769
					  AND FR_DVDM_ID IS NOT NULL AND FR_DVDM_ID <>''
1770
					  AND NOT EXISTS
1771
				(
1772
					SELECT *
1773
					FROM dbo.PL_REQUEST_PROCESS
1774
					WHERE REQ_ID = @p_REQ_ID
1775
						  AND PROCESS_ID = 'DVDM_DC'
1776
						  AND DVDM_ID = FR_DVDM_ID
1777
				)
1778
				GROUP BY FR_DVDM_ID;
1779
				OPEN lstTransfer;
1780
				FETCH NEXT FROM lstTransfer
1781
				INTO @DVDM_ID;
1782
				WHILE @@FETCH_STATUS = 0
1783
				BEGIN
1784
				IF(NOT EXISTS(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID  AND ROLE_USER='GDDV' AND ( DVDM_ID=@DVDM_ID OR @DVDM_ID IN ((SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC
1785
				LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
1786
				WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))
1787
				BEGIN
1788
					INSERT INTO dbo.PL_REQUEST_PROCESS
1789
					(
1790
						REQ_ID,
1791
						PROCESS_ID,
1792
						STATUS,
1793
						ROLE_USER,
1794
						BRANCH_ID,
1795
						CHECKER_ID,
1796
						APPROVE_DT,
1797
						PARENT_PROCESS_ID,
1798
						IS_LEAF,
1799
						COST_ID,
1800
						DVDM_ID,
1801
						NOTES,
1802
						IS_HAS_CHILD
1803
					)
1804
					VALUES
1805
					(   @p_REQ_ID,    -- REQ_ID - varchar(15)
1806
						'DVDM_DC',    -- PROCESS_ID - varchar(10)
1807
						'U',          -- STATUS - varchar(5)
1808
						'GDDV',       -- ROLE_USER - varchar(50)
1809
						'',           -- BRANCH_ID - varchar(15)
1810
						'',           -- CHECKER_ID - varchar(15)
1811
						NULL,         -- APPROVE_DT - datetime
1812
						@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
1813
						'N',          -- IS_LEAF - varchar(1)
1814
						'',           -- COST_ID - varchar(15)
1815
						@DVDM_ID,     -- DVDM_ID - varchar(15)
1816
						N'Chờ đơn vị đầu mối xác nhận', 0);
1817
				END
1818
					FETCH NEXT FROM lstTransfer
1819
					INTO @DVDM_ID;
1820
				END;
1821
				CLOSE lstTransfer;
1822
				DEALLOCATE lstTransfer;
1823

    
1824

    
1825

    
1826

    
1827
			   IF(EXISTS(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVDM_DC'))
1828
					SET @STEP_PARENT='DVDM_DC'
1829

    
1830

    
1831
			END;
1832

    
1833

    
1834

    
1835
			INSERT INTO dbo.PL_REQUEST_PROCESS
1836
			(
1837
				REQ_ID,
1838
				PROCESS_ID,
1839
				STATUS,
1840
				ROLE_USER,
1841
				BRANCH_ID,
1842
				CHECKER_ID,
1843
				APPROVE_DT,
1844
				PARENT_PROCESS_ID,
1845
				IS_LEAF,
1846
				COST_ID,
1847
				DVDM_ID,
1848
				NOTES,IS_HAS_CHILD
1849
			)
1850
			VALUES
1851
			(   @p_REQ_ID,    -- REQ_ID - varchar(15)
1852
				'TC',         -- PROCESS_ID - varchar(10)
1853
				'U',          -- STATUS - varchar(5)
1854
				'TC',         -- ROLE_USER - varchar(50)
1855
				'',           -- BRANCH_ID - varchar(15)
1856
				'',           -- CHECKER_ID - varchar(15)
1857
				NULL,         -- APPROVE_DT - datetime
1858
				@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
1859
				'N',          -- IS_LEAF - varchar(1)
1860
				'',           -- COST_ID - varchar(15)
1861
				'',           -- DVDM_ID - varchar(15)
1862
				N'Chờ đơn vị Tài chính xác nhận',1);
1863
			SET @STEP_PARENT = 'TC';
1864

    
1865

    
1866
			IF (NOT EXISTS
1867
			(
1868
				SELECT REQ_TRANSFER_ID
1869
				FROM dbo.PL_REQUEST_TRANSFER
1870
				WHERE REQ_DOC_ID = @p_REQ_ID
1871
					  AND
1872
					  (
1873
						  FR_BRN_ID <> @BRANCH_CREATE
1874
						  OR FR_DEP_ID <> @DEP_CREATE
1875
					  )
1876
			)
1877
			   )
1878
			BEGIN
1879
				---Duyệt DC
1880
				IF (
1881
				   (
1882
					   SELECT COUNT(T.FR_KHOI_ID) AS COUNT_ROW
1883
					   FROM
1884
					   (
1885
						   SELECT FR_KHOI_ID
1886
						   FROM dbo.PL_REQUEST_TRANSFER
1887
						   WHERE REQ_DOC_ID = @p_REQ_ID
1888
						   GROUP BY FR_KHOI_ID
1889
					   ) T
1890
				   ) > 1
1891
				   )
1892
				BEGIN
1893
					INSERT INTO dbo.PL_REQUEST_PROCESS
1894
					(
1895
						REQ_ID,
1896
						PROCESS_ID,
1897
						STATUS,
1898
						ROLE_USER,
1899
						BRANCH_ID,
1900
						CHECKER_ID,
1901
						APPROVE_DT,
1902
						PARENT_PROCESS_ID,
1903
						IS_LEAF,
1904
						COST_ID,
1905
						DVDM_ID,
1906
						NOTES,
1907
						IS_HAS_CHILD
1908
					)
1909
					VALUES
1910
					(   @p_REQ_ID,                      -- REQ_ID - varchar(15)
1911
						'TGD_DC',                       -- PROCESS_ID - varchar(10)
1912
						'U',                            -- STATUS - varchar(5)
1913
						'TGD',                          -- ROLE_USER - varchar(50)
1914
						'',                             -- BRANCH_ID - varchar(15)
1915
						'',                             -- CHECKER_ID - varchar(15)
1916
						NULL,                           -- APPROVE_DT - datetime
1917
						@STEP_PARENT,                   -- PARENT_PROCESS_ID - varchar(10)
1918
						'',                             -- IS_LEAF - varchar(1)
1919
						'',                             -- COST_ID - varchar(15)
1920
						'',                             -- DVDM_ID - varchar(15)
1921
						N'Chờ tổng giám đốc phê duyệt', -- NOTES - nvarchar(500)
1922
						NULL                            -- IS_HAS_CHILD - bit
1923
						);
1924
					SET @STEP_PARENT = 'TGD_DC';
1925
				END;
1926
				ELSE
1927
				BEGIN
1928
					DECLARE @LIMTT_MAX DECIMAL(18, 2),
1929
							@LIMIT_APP DECIMAL(18, 2),
1930
							@KHOI_ID_TF VARCHAR(20);
1931
					SET @KHOI_ID_TF =
1932
					(
1933
						SELECT TOP 1
1934
							   FR_KHOI_ID
1935
						FROM dbo.PL_REQUEST_TRANSFER
1936
						WHERE REQ_DOC_ID = @p_REQ_ID
1937
					);
1938

    
1939
					IF(@KHOI_ID_TF IS NOT NULL AND @KHOI_ID_TF<>'')
1940
					BEGIN
1941
					SET @LIMIT_APP =
1942
					(
1943
						SELECT ISNULL(MAX_AMT, 0) - ISNULL(TOTAL_APP_AMT, 0) AS LIMIT_APP
1944
						FROM dbo.LIMIT_ACCUMULATE
1945
						WHERE ROLE_ID = 'GDK'
1946
							  AND DVDM_ID = @KHOI_ID_TF
1947
					);
1948
					SET @TOTAL_TRANSFER =
1949
					(
1950
						SELECT SUM(TOTAL_AMT) AS TOTAL
1951
						FROM dbo.PL_REQUEST_TRANSFER
1952
						WHERE REQ_DOC_ID = @p_REQ_ID
1953
					);
1954
					SET @LIMTT_MAX =
1955
					(
1956
						SELECT LIMIT_VALUE
1957
						FROM dbo.TL_SYSROLE_LIMIT
1958
						WHERE ROLE_ID = 'GDK'
1959
							  AND LIMIT_TYPE = 'DCNS'
1960
					);
1961

    
1962
					INSERT INTO dbo.PL_REQUEST_PROCESS
1963
					(
1964
						REQ_ID,
1965
						PROCESS_ID,
1966
						STATUS,
1967
						ROLE_USER,
1968
						BRANCH_ID,
1969
						CHECKER_ID,
1970
						APPROVE_DT,
1971
						PARENT_PROCESS_ID,
1972
						IS_LEAF,
1973
						COST_ID,
1974
						DVDM_ID,
1975
						NOTES,
1976
						IS_HAS_CHILD
1977
					)
1978
					VALUES
1979
					(   @p_REQ_ID,                     -- REQ_ID - varchar(15)
1980
						'GDK_DC',                      -- PROCESS_ID - varchar(10)
1981
						'U',                           -- STATUS - varchar(5)
1982
						'GDK',                         -- ROLE_USER - varchar(50)
1983
						'',                            -- BRANCH_ID - varchar(15)
1984
						'',                            -- CHECKER_ID - varchar(15)
1985
						GETDATE(),                     -- APPROVE_DT - datetime
1986
						@STEP_PARENT,                  -- PARENT_PROCESS_ID - varchar(10)
1987
						'N',                           -- IS_LEAF - varchar(1)
1988
						'',                            -- COST_ID - varchar(15)
1989
						@KHOI_ID_TF,                   -- DVDM_ID - varchar(15)
1990
						N'Chờ giám đốc khối xác nhận', -- NOTES - nvarchar(500)
1991
						NULL                           -- IS_HAS_CHILD - bit
1992
						);
1993
					SET @STEP_PARENT = 'GDK_DC';
1994

    
1995

    
1996
					IF (@TOTAL_TRANSFER > @LIMTT_MAX OR @TOTAL_TRANSFER > @LIMIT_APP)
1997
					BEGIN
1998
					IF(EXISTS(SELECT TOP 1 DVDM_ID FROM dbo.CM_DVDM WHERE DVDM_ID=@KHOI_ID_TF AND IS_KHOI=1 AND IS_PTGD=1))
1999
					BEGIN
2000
						INSERT INTO dbo.PL_REQUEST_PROCESS
2001
						(
2002
							REQ_ID,
2003
							PROCESS_ID,
2004
							STATUS,
2005
							ROLE_USER,
2006
							BRANCH_ID,
2007
							CHECKER_ID,
2008
							APPROVE_DT,
2009
							PARENT_PROCESS_ID,
2010
							IS_LEAF,
2011
							COST_ID,
2012
							DVDM_ID,
2013
							NOTES,
2014
							IS_HAS_CHILD
2015
						)
2016
						VALUES
2017
						(   @p_REQ_ID,                     -- REQ_ID - varchar(15)
2018
							'PTGD_DC',                     -- PROCESS_ID - varchar(10)
2019
							'U',                           -- STATUS - varchar(5)
2020
							'PTGD',                        -- ROLE_USER - varchar(50)
2021
							'',                            -- BRANCH_ID - varchar(15)
2022
							'',                            -- CHECKER_ID - varchar(15)
2023
							GETDATE(),                     -- APPROVE_DT - datetime
2024
							@STEP_PARENT,                  -- PARENT_PROCESS_ID - varchar(10)
2025
							'N',                           -- IS_LEAF - varchar(1)
2026
							'',                            -- COST_ID - varchar(15)
2027
							@KHOI_ID_TF,                   -- DVDM_ID - varchar(15)
2028
							N'Chờ giám đốc khối xác nhận', -- NOTES - nvarchar(500)
2029
							NULL                           -- IS_HAS_CHILD - bit
2030
							);
2031
						SET @STEP_PARENT = 'PTGD_DC';
2032
						SET @LIMTT_MAX =
2033
						(
2034
							SELECT LIMIT_VALUE
2035
							FROM dbo.TL_SYSROLE_LIMIT
2036
							WHERE ROLE_ID = 'PTGD'
2037
								  AND LIMIT_TYPE = 'DCNS'
2038
						);
2039
						SET @LIMIT_APP =
2040
						(
2041
							SELECT ISNULL(MAX_AMT, 0) - ISNULL(TOTAL_APP_AMT, 0) AS LIMIT_APP
2042
							FROM dbo.LIMIT_ACCUMULATE
2043
							WHERE ROLE_ID = 'PTGD'
2044
								  AND DVDM_ID = @KHOI_ID_TF
2045
						);
2046

    
2047
					END
2048
						IF (@TOTAL_TRANSFER > @LIMTT_MAX OR @TOTAL_TRANSFER > @LIMIT_APP OR EXISTS(SELECT TOP 1 DVDM_ID FROM dbo.CM_DVDM WHERE DVDM_ID=@KHOI_ID_TF AND IS_KHOI=1 AND IS_PTGD=0))
2049
						BEGIN
2050
							INSERT INTO dbo.PL_REQUEST_PROCESS
2051
							(
2052
								REQ_ID,
2053
								PROCESS_ID,
2054
								STATUS,
2055
								ROLE_USER,
2056
								BRANCH_ID,
2057
								CHECKER_ID,
2058
								APPROVE_DT,
2059
								PARENT_PROCESS_ID,
2060
								IS_LEAF,
2061
								COST_ID,
2062
								DVDM_ID,
2063
								NOTES,
2064
								IS_HAS_CHILD
2065
							)
2066
							VALUES
2067
							(   @p_REQ_ID,                      -- REQ_ID - varchar(15)
2068
								'TGD_DC',                       -- PROCESS_ID - varchar(10)
2069
								'U',                            -- STATUS - varchar(5)
2070
								'TGD',                          -- ROLE_USER - varchar(50)
2071
								'',                             -- BRANCH_ID - varchar(15)
2072
								'',                             -- CHECKER_ID - varchar(15)
2073
								NULL,                           -- APPROVE_DT - datetime
2074
								@STEP_PARENT,                   -- PARENT_PROCESS_ID - varchar(10)
2075
								'',                             -- IS_LEAF - varchar(1)
2076
								'',                             -- COST_ID - varchar(15)
2077
								'',                             -- DVDM_ID - varchar(15)
2078
								N'Chờ tổng giám đốc phê duyệt', -- NOTES - nvarchar(500)
2079
								NULL                            -- IS_HAS_CHILD - bit
2080
								);
2081
							SET @STEP_PARENT = 'TGD_DC';
2082
						END;
2083

    
2084
					END;
2085

    
2086
					END
2087

    
2088

    
2089
				END;
2090
       
2091
     
2092
			END;
2093

    
2094

    
2095

    
2096

    
2097
		END;
2098
		ELSE
2099
		BEGIN
2100
	
2101
		IF(@BRANCH_CREATE_TYPE='PGD')
2102
		BEGIN
2103
			DECLARE @BRANCH_PARENT VARCHAR(15)
2104
			SET @BRANCH_PARENT=(SELECT TOP 1 FATHER_ID FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
2105
			IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND BRANCH_ID=@BRANCH_PARENT AND (DEP_ID IS NULL OR DEP_ID='')))
2106
			BEGIN
2107
				INSERT INTO dbo.PL_REQUEST_PROCESS
2108
				(
2109
				REQ_ID,
2110
				PROCESS_ID,
2111
				STATUS,
2112
				ROLE_USER,
2113
				BRANCH_ID,
2114
				DEP_ID,
2115
				CHECKER_ID,
2116
				APPROVE_DT,
2117
				PARENT_PROCESS_ID,
2118
				IS_LEAF,
2119
				NOTES
2120
				)
2121
				VALUES
2122
				(   
2123
				@p_REQ_ID,               -- REQ_ID - varchar(15)
2124
				'DVC',                  -- PROCESS_ID - varchar(10)
2125
				'U',                     -- STATUS - varchar(5)
2126
				'GDDV',                      -- ROLE_USER - varchar(50)
2127
				@BRANCH_PARENT,
2128
				NULL,                      -- BRANCH_ID - varchar(15)
2129
				NULL,           -- CHECKER_ID - varchar(15)
2130
				NULL , -- APPROVE_DT - datetime
2131
				@STEP_PARENT, 'N', N'Chờ giám đốc Chi Nhánh phê duyệt');
2132

    
2133
				SET @STEP_CURR = 'DVC';
2134
				SET @STEP_PARENT = 'DVC';
2135
			END
2136
	
2137
		END
2138
		ELSE 
2139
		IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDDV'
2140
		AND ((
2141
			BRANCH_ID=@BRANCH_CREATE 
2142
			AND ((DEP_ID =@DEP_CREATE) OR ((@DEP_CREATE IS NULL OR @DEP_CREATE='') 
2143
			AND (DEP_ID IS NULL OR DEP_ID='')))
2144
			)
2145
			OR EXISTS(SELECT PC.COST_ID FROM dbo.PL_COSTCENTER PC 
2146
			LEFT JOIN dbo.PL_COSTCENTER_DT PCDT ON PCDT.COST_ID = PC.COST_ID WHERE PL_REQUEST_PROCESS.DVDM_ID=PC.DVDM_ID AND DEP_ID=@DEP_CREATE AND BRANCH_ID=@BRANCH_CREATE)
2147
			)
2148
		))
2149
		BEGIN
2150
		INSERT INTO dbo.PL_REQUEST_PROCESS
2151
				(
2152
				REQ_ID,
2153
				PROCESS_ID,
2154
				STATUS,
2155
				ROLE_USER,
2156
				BRANCH_ID,
2157
				DEP_ID,
2158
				CHECKER_ID,
2159
				APPROVE_DT,
2160
				PARENT_PROCESS_ID,
2161
				IS_LEAF,
2162
				NOTES
2163
				)
2164
				VALUES
2165
				(   
2166
				@p_REQ_ID,               -- REQ_ID - varchar(15)
2167
				'DVC',                  -- PROCESS_ID - varchar(10)
2168
				'U',                     -- STATUS - varchar(5)
2169
				'GDDV',                      -- ROLE_USER - varchar(50)
2170
				@BRANCH_CREATE,
2171
				@DEP_CREATE,                      -- BRANCH_ID - varchar(15)
2172
				NULL,           -- CHECKER_ID - varchar(15)
2173
				NULL , -- APPROVE_DT - datetime
2174
				@STEP_PARENT, 'N', N'Chờ giám đốc Chi Nhánh phê duyệt');
2175

    
2176
		SET @STEP_CURR = 'DVC';
2177
		SET @STEP_PARENT = 'DVC';
2178
		END
2179

    
2180
		IF(EXISTS( SELECT * FROM   @DATA_DVDM))
2181
		BEGIN
2182
		SET @IS_NEXT =
2183
		(
2184
			SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'GDDV')
2185
		);
2186
		IF (@IS_NEXT = 1)
2187
		BEGIN
2188

    
2189
			DECLARE lstCostCenter CURSOR FOR
2190
			SELECT DVDM_ID,
2191
				   TOTAL_AMT
2192
			FROM @DATA_DVDM;
2193
			OPEN lstCostCenter;
2194
			FETCH NEXT FROM lstCostCenter
2195
			INTO @DVDM_ID,
2196
				 @TOTAL_AMT_GD;
2197
			WHILE @@FETCH_STATUS = 0
2198
			BEGIN
2199
				INSERT INTO dbo.PL_REQUEST_PROCESS
2200
				(
2201
					REQ_ID,
2202
					PROCESS_ID,
2203
					STATUS,
2204
					ROLE_USER,
2205
					BRANCH_ID,
2206
					CHECKER_ID,
2207
					APPROVE_DT,
2208
					PARENT_PROCESS_ID,
2209
					IS_LEAF,
2210
					COST_ID,
2211
					DVDM_ID,
2212
					NOTES,
2213
					IS_HAS_CHILD
2214
				)
2215
				VALUES
2216
				(   @p_REQ_ID,                                 -- REQ_ID - varchar(15)
2217
					'GDK_TT',                                  -- PROCESS_ID - varchar(10)
2218
					'U',                                       -- STATUS - varchar(5)
2219
					'GDK',                                     -- ROLE_USER - varchar(50)
2220
					'',                                        -- BRANCH_ID - varchar(15)
2221
					'',                                        -- CHECKER_ID - varchar(15)
2222
					NULL,                                      -- APPROVE_DT - datetime
2223
					@STEP_PARENT,                              -- PARENT_PROCESS_ID - varchar(10)
2224
					'N',                                       -- IS_LEAF - varchar(1)
2225
					'',                                        -- COST_ID - varchar(15)
2226
					@DVDM_ID, N'Chờ giám đốc khối xác nhận', 0 -- DVDM_ID - varchar(15)
2227
					);
2228
				FETCH NEXT FROM lstCostCenter
2229
				INTO @DVDM_ID,
2230
					 @TOTAL_AMT_GD;
2231
			END;
2232
			CLOSE lstCostCenter;
2233
			DEALLOCATE lstCostCenter;
2234

    
2235
			SET @IS_NEXT =
2236
			(
2237
				SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'GDK')
2238
			);
2239

    
2240
			SET @STEP_PARENT = 'GDK_TT';
2241
			IF (@IS_NEXT = 1)
2242
			BEGIN
2243

    
2244
				IF( EXISTS (SELECT DVDM_ID FROM @DATA_DVDM WHERE IS_PTGD=1) )
2245
				BEGIN
2246
				DECLARE lstCostCenter CURSOR FOR
2247
				SELECT DVDM_ID,
2248
					   TOTAL_AMT
2249
				FROM @DATA_DVDM WHERE IS_PTGD=1;
2250
				OPEN lstCostCenter;
2251
				FETCH NEXT FROM lstCostCenter
2252
				INTO @DVDM_ID,
2253
					 @TOTAL_AMT_GD;
2254
				WHILE @@FETCH_STATUS = 0
2255
				BEGIN
2256
					INSERT INTO dbo.PL_REQUEST_PROCESS
2257
					(
2258
						REQ_ID,
2259
						PROCESS_ID,
2260
						STATUS,
2261
						ROLE_USER,
2262
						BRANCH_ID,
2263
						CHECKER_ID,
2264
						APPROVE_DT,
2265
						PARENT_PROCESS_ID,
2266
						IS_LEAF,
2267
						COST_ID,
2268
						DVDM_ID,
2269
						NOTES,
2270
						IS_HAS_CHILD
2271
					)
2272
					VALUES
2273
					(   @p_REQ_ID,                                          -- REQ_ID - varchar(15)
2274
						'PTGDK_TT',                                         -- PROCESS_ID - varchar(10)
2275
						'U',                                                -- STATUS - varchar(5)
2276
						'PTGD',                                             -- ROLE_USER - varchar(50)
2277
						'',                                                 -- BRANCH_ID - varchar(15)
2278
						'',                                                 -- CHECKER_ID - varchar(15)
2279
						NULL,                                               -- APPROVE_DT - datetime
2280
						@STEP_PARENT,                                       -- PARENT_PROCESS_ID - varchar(10)
2281
						'N',                                                -- IS_LEAF - varchar(1)
2282
						'',                                                 -- COST_ID - varchar(15)
2283
						@DVDM_ID, N'Chờ phó tổng giám đốc khối xác nhận', 0 -- DVDM_ID - varchar(15)
2284
						);
2285
					FETCH NEXT FROM lstCostCenter
2286
					INTO @DVDM_ID,
2287
						 @TOTAL_AMT_GD;
2288
				END;
2289
				CLOSE lstCostCenter;
2290
				DEALLOCATE lstCostCenter;
2291

    
2292
				SET @IS_NEXT =
2293
				(
2294
					SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'PTGD')
2295
				);
2296

    
2297
				SET @STEP_PARENT = 'PTGDK_TT';
2298
				END
2299
				IF(EXISTS (SELECT DVDM_ID FROM @DATA_DVDM WHERE IS_PTGD=0))
2300
				BEGIN
2301
				SET @IS_NEXT=1
2302
				END
2303
				IF (@IS_NEXT = 1)
2304
				BEGIN
2305
					INSERT INTO dbo.PL_REQUEST_PROCESS
2306
					(
2307
						REQ_ID,
2308
						PROCESS_ID,
2309
						STATUS,
2310
						ROLE_USER,
2311
						BRANCH_ID,
2312
						CHECKER_ID,
2313
						APPROVE_DT,
2314
						PARENT_PROCESS_ID,
2315
						IS_LEAF,
2316
						COST_ID,
2317
						DVDM_ID,
2318
						NOTES,
2319
						IS_HAS_CHILD
2320
					)
2321
					VALUES
2322
					(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
2323
						'TGD',                               -- PROCESS_ID - varchar(10)
2324
						'U',                                 -- STATUS - varchar(5)
2325
						'TGD',                               -- ROLE_USER - varchar(50)
2326
						'',                                  -- BRANCH_ID - varchar(15)
2327
						'',                                  -- CHECKER_ID - varchar(15)
2328
						NULL,                                -- APPROVE_DT - datetime
2329
						@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
2330
						'N',                                 -- IS_LEAF - varchar(1)
2331
						'',                                  -- COST_ID - varchar(15)
2332
						'', N'Chờ tổng giám đốc xác nhận', 0 -- DVDM_ID - varchar(15)
2333
						);
2334
					SET @STEP_PARENT = 'TGD';
2335

    
2336
					IF((SELECT SUM(TOTAL_AMT) FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID) > (SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='TCTT-HDQT'))
2337
					BEGIN
2338
						INSERT INTO dbo.PL_REQUEST_PROCESS
2339
					(
2340
						REQ_ID,
2341
						PROCESS_ID,
2342
						STATUS,
2343
						ROLE_USER,
2344
						BRANCH_ID,
2345
						CHECKER_ID,
2346
						APPROVE_DT,
2347
						PARENT_PROCESS_ID,
2348
						IS_LEAF,
2349
						COST_ID,
2350
						DVDM_ID,
2351
						NOTES,
2352
						IS_HAS_CHILD
2353
					)
2354
					VALUES
2355
					(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
2356
						'HDQT',                               -- PROCESS_ID - varchar(10)
2357
						'U',                                 -- STATUS - varchar(5)
2358
						'HDQT',                               -- ROLE_USER - varchar(50)
2359
						'',                                  -- BRANCH_ID - varchar(15)
2360
						'',                                  -- CHECKER_ID - varchar(15)
2361
						NULL,                                -- APPROVE_DT - datetime
2362
						@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
2363
						'N',                                 -- IS_LEAF - varchar(1)
2364
						'',                                  -- COST_ID - varchar(15)
2365
						'', N'Chờ HDQT xác nhận', 0 -- DVDM_ID - varchar(15)
2366
						);
2367
					SET @STEP_PARENT = 'HDQT';
2368
					END
2369
				END;
2370

    
2371

    
2372

    
2373
	
2374
			--ELSE
2375
			--BEGIN
2376

    
2377
			--END
2378
		
2379
			END;
2380

    
2381
		END;
2382
		END
2383
		END
2384
		INSERT INTO dbo.PL_REQUEST_PROCESS
2385
		(
2386
			REQ_ID,
2387
			PROCESS_ID,
2388
			STATUS,
2389
			ROLE_USER,
2390
			BRANCH_ID,
2391
			CHECKER_ID,
2392
			APPROVE_DT,
2393
			PARENT_PROCESS_ID,
2394
			IS_LEAF,
2395
			NOTES
2396
		)
2397
		VALUES
2398
		(   @p_REQ_ID, -- REQ_ID - varchar(15)
2399
			'APPROVE', -- PROCESS_ID - varchar(10)
2400
			'U',       -- STATUS - varchar(5)
2401
			'',        -- ROLE_USER - varchar(50)
2402
			'',        -- BRANCH_ID - varchar(15)
2403
			'',        -- CHECKER_ID - varchar(15)
2404
			NULL,      -- APPROVE_DT - datetime
2405
			@STEP_PARENT, 'Y', N'Hoàn tất');
2406

    
2407

    
2408

    
2409
		IF @@Error <> 0
2410
			GOTO ABORT;
2411

    
2412

    
2413

    
2414
		DECLARE @PROCESS_ID_CURR VARCHAR(10);
2415
		SET @PROCESS_ID_CURR =
2416
		(
2417
			SELECT TOP 1
2418
				   PROCESS_ID
2419
			FROM dbo.PL_REQUEST_PROCESS
2420
			WHERE REQ_ID = @p_REQ_ID
2421
				  AND PARENT_PROCESS_ID = 'APPNEW'
2422
		);
2423

    
2424
		UPDATE dbo.PL_REQUEST_PROCESS
2425
		SET STATUS = 'C'
2426
		WHERE PARENT_PROCESS_ID = 'APPNEW'
2427
			  AND REQ_ID = @p_REQ_ID;
2428
		UPDATE dbo.PL_REQUEST_DOC
2429
		SET AUTH_STATUS = @p_AUTH_STATUS,
2430
			APPROVE_DT = @p_APPROVE_DT,
2431
			CHECKER_ID = @p_CHECKER_ID,
2432
			PROCESS_ID = @PROCESS_ID_CURR
2433
		WHERE REQ_ID = @p_REQ_ID;
2434

    
2435
		UPDATE dbo.PL_REQUEST_DOC_DT
2436
		SET CHECKER_ID=@p_CHECKER_ID,
2437
		APPROVE_DT=@p_APPROVE_DT
2438
		WHERE REQ_ID = @p_REQ_ID;
2439

    
2440
		INSERT INTO dbo.PL_PROCESS
2441
		(
2442
			REQ_ID,
2443
			PROCESS_ID,
2444
			CHECKER_ID,
2445
			APPROVE_DT,
2446
			PROCESS_DESC,
2447
			NOTES
2448
		)
2449
		VALUES
2450
		(   @p_REQ_ID,                                            -- REQ_ID - varchar(15)
2451
			'APPNEW',                                               -- PROCESS_ID - varchar(10)
2452
			@p_CHECKER_ID,                                        -- CHECKER_ID - varchar(15)
2453
			@p_APPROVE_DT,                                        -- APPROVE_DT - datetime
2454
			@p_PROCESS_DES, CASE WHEN @BRANCH_TYPE_LOGIN ='PGD' THEN N'Trưởng phòng giao dịch xác nhận phiếu' ELSE N'Trưởng đơn vị phê duyệt' END -- PROCESS_DESC - nvarchar(1000)
2455
			);
2456
		IF (EXISTS
2457
		(
2458
			SELECT REQ_ID
2459
			FROM dbo.PL_REQUEST_DOC
2460
			WHERE REQ_ID = @p_REQ_ID
2461
				  AND PROCESS_ID = 'APPROVE'
2462
		)
2463
		   )
2464
		BEGIN
2465
			EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = @p_REQ_ID;
2466
			EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = @p_REQ_ID;
2467
			SET @Result = '0';
2468
		END;
2469
		SET @Result = '1';
2470
END
2471
COMMIT TRANSACTION;
2472
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE AUTH_STATUS ='A' AND REQ_ID =@p_REQ_ID))
2473
BEGIN
2474
	SELECT @Result AS Result,
2475
       @ROLE_USER_NOTIFI AS ROLE_NOTIFI,
2476
       '' ErrorDesc;
2477
		RETURN '0';
2478
END
2479
ELSE
2480
BEGIN
2481
	SELECT '4' as Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' đã được đợi cấp phê duyệt trung gian xác nhận thành công. Vui lòng đợi trưởng đơn vị phê duyệt' ErrorDesc
2482
	RETURN '4'
2483
END
2484
ABORT:
2485
BEGIN
2486

    
2487
    ROLLBACK TRANSACTION;
2488
    SELECT '-1' AS Result,
2489
           '' ROLE_NOTIFI,
2490
           '' ErrorDesc;
2491
    RETURN '-1';
2492
END;
2493

    
2494

    
2495

    
2496

    
2497

    
2498

    
2499
GO
2500
IF @@ERROR <> 0 SET NOEXEC ON
2501
GO
2502
PRINT N'Altering [dbo].[PL_REQUEST_PROCESS_App]'
2503
GO
2504
ALTER PROCEDURE [dbo].[PL_REQUEST_PROCESS_App]
2505
    @p_REQ_ID VARCHAR(15) = NULL,
2506
	@p_AUTH_STATUS VARCHAR(1) = NULL,
2507
	@p_CHECKER_ID varchar(15)  = NULL,
2508
	@p_APPROVE_DT DATETIME = NULL,
2509
	@p_ROLE_LOGIN VARCHAR(50) = NULL,
2510
	@p_BRANCH_LOGIN VARCHAR(15),
2511
	@p_PROCESS_DESC NVARCHAR(MAX)
2512
	
2513
AS
2514

    
2515
--SET @p_APPROVE_DT= CAST(@p_APPROVE_DT AS DATE)
2516
	--Validation is here
2517
DECLARE @ERRORSYS NVARCHAR(15) = '' 
2518
  IF ( NOT EXISTS ( SELECT * FROM PL_REQUEST_DOC WHERE  REQ_ID = @p_REQ_ID))
2519
	SET @ERRORSYS = 'REQ-00002'
2520
IF @ERRORSYS <> '' 
2521
BEGIN
2522
   ROLLBACK TRANSACTION
2523
	SELECT ErrorCode Result, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
2524
	RETURN '0'
2525
END 
2526

    
2527
BEGIN TRANSACTION
2528
		IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_ID AND STATUS_JOB ='R') OR (EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND AUTH_STATUS ='R'))
2529
		OR(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='R')))
2530
		BEGIN
2531
			ROLLBACK TRANSACTION
2532
			SELECT '-1' as Result,N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID)+N' đang bị từ chối. Vui lòng đợi nhân viên xử lý phiếu và gửi phê duyệt lại!' ErrorDesc
2533
			RETURN '-1'
2534
		END
2535
	--UPDATE dbo.PL_REQUEST_TRANSFER SET AUTH_STATUS = @P_AUTH_STATUS, CHECKER_ID = @P_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103)
2536
	--WHERE REQ_DOC_ID = @p_REQ_ID AND FR_BRN_ID IN (SELECT BRANCH_ID FROM  CM_BRANCH_GETCHILDID(@p_BRANCH_LOGIN))
2537

    
2538
	 DECLARE
2539
	@Result VARCHAR(5),
2540
	@PROCESS_CURR VARCHAR(10),
2541
	@STEP_CURR INT,
2542
	@STEP_NEXT INT,
2543
	@PROCESS_NEXT VARCHAR(10),
2544
	@ROLE_USER_NOTIFI VARCHAR(50),
2545
	@DEP_ID VARCHAR(15),
2546
	@IS_LEAF VARCHAR(1),
2547
	@NOTES NVARCHAR(500),
2548
	@IS_NEXT BIT,@ROLE_USER VARCHAR(20),@ROLE_NEXT VARCHAR(20),@LIMTT_MAX  DECIMAL(18,2),@LIMIT_APP DECIMAL(18,2) ,@KHOI_ID_TF VARCHAR(20),@TOTAL_TRANSFER DECIMAL(18,2),@PROCESS_ID_NEXT VARCHAR(20),
2549
	@TOTAL_AMT DECIMAL(18,2),
2550
	@STEP_PARENT VARCHAR(20),
2551
	@NOTES_CDT VARCHAR(20),
2552
	@ROLE_CDT VARCHAR(20),
2553
	@DVDM_CDT VARCHAR(20),
2554
	@LIMIT_VALUE_CDT DECIMAL(18,2),
2555
	@DVDM_ID_TT VARCHAR(20),
2556
	@TOTAL_AMT_GD DECIMAL(18,2),
2557
	@BRANCH_CREATE VARCHAR(15),
2558
	@BRANCH_CREATE_TYPE VARCHAR(15),
2559
	@DEP_CREATE VARCHAR(15),
2560
	@BRANCH_PARENT VARCHAR(15)
2561

    
2562

    
2563
	SET @DEP_ID =(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_CHECKER_ID)
2564

    
2565
	SET @PROCESS_CURR= (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C')
2566
	SET @PROCESS_NEXT=(SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR)
2567

    
2568
	
2569
		
2570
		SET @NOTES =(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')   
2571
	DECLARE @DVDM_ID TABLE (
2572
		DVDM_ID VARCHAR(15)
2573
	)
2574
DECLARE  @ERROR BIT ,@EROOR_DES NVARCHAR(500)
2575

    
2576
IF(@PROCESS_CURR LIKE '%_DC')
2577
BEGIN
2578
	SELECT @ERROR=ERROR,
2579
       @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDDC','PL_REQUEST_DOC',@p_CHECKER_ID,@PROCESS_CURR)
2580
		IF(@ERROR=1)
2581
		BEGIN
2582
	 ROLLBACK TRANSACTION;
2583
    SELECT '-1'  Result,
2584
           N'LỖI 1' ErrorDesc
2585
   
2586
    RETURN '0';
2587
	END
2588
END
2589
SELECT @ERROR=ERROR,
2590
       @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDTT','PL_REQUEST_DOC',@p_CHECKER_ID,@PROCESS_CURR)
2591
		IF(@ERROR=1)
2592
		BEGIN
2593
	 ROLLBACK TRANSACTION;
2594
    SELECT '-1'  Result,
2595
           @EROOR_DES ErrorDesc
2596
   
2597
    RETURN '0';
2598
END
2599
	
2600
	
2601

    
2602
	INSERT INTO @DVDM_ID
2603
	SELECT DVDM_ID FROM dbo.PL_COSTCENTER WHERE COST_ID IN (SELECT COST_ID FROM dbo.PL_COSTCENTER_DT WHERE DEP_ID=@DEP_ID AND BRANCH_ID=@p_BRANCH_LOGIN) GROUP BY DVDM_ID
2604
	
2605

    
2606
	
2607
			
2608
	UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='P',NOTES=@NOTES+N' đã phê duyệt',CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=@p_APPROVE_DT WHERE PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND ROLE_USER=@p_ROLE_LOGIN AND ( DVDM_ID IN (SELECT DVDM_ID FROM @DVDM_ID) OR DVDM_ID ='' OR DVDM_ID IS NULL)
2609
	
2610
	
2611
	IF(@PROCESS_CURR <>'DVCM' AND @PROCESS_CURR <>'DVDM' AND @PROCESS_CURR <>'TC')
2612
	BEGIN
2613
		UPDATE dbo.PL_REQUEST_DOC_DT SET CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=@p_APPROVE_DT WHERE REQ_ID=@p_REQ_ID AND  ( KHOI_ID IN (SELECT DVDM_ID FROM @DVDM_ID) OR @p_ROLE_LOGIN='TGD' OR @p_ROLE_LOGIN='HDQT' OR @p_ROLE_LOGIN='GDDV' )
2614
	END
2615
	IF(@PROCESS_CURR LIKE '%_DC')
2616
	BEGIN
2617
		UPDATE dbo.PL_REQUEST_TRANSFER SET CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=@p_APPROVE_DT WHERE REQ_DOC_ID=@p_REQ_ID AND  ( FR_KHOI_ID IN (SELECT DVDM_ID FROM @DVDM_ID) OR @p_ROLE_LOGIN='TGD' OR @p_ROLE_LOGIN='HDQT')
2618
	END
2619
	
2620
	INSERT INTO dbo.PL_PROCESS
2621
			(
2622
				REQ_ID,
2623
				PROCESS_ID,
2624
				CHECKER_ID,
2625
				APPROVE_DT,
2626
				PROCESS_DESC,NOTES
2627
			)
2628
			VALUES
2629
			(   @p_REQ_ID,        -- REQ_ID - varchar(15)
2630
				@PROCESS_CURR,        -- PROCESS_ID - varchar(10)
2631
				@p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
2632
				GETDATE(), -- APPROVE_DT - datetime
2633
				@p_PROCESS_DESC ,@NOTES+N' đã phê duyệt'       -- PROCESS_DESC - nvarchar(1000)
2634
			)	
2635
	
2636
	
2637
		
2638

    
2639

    
2640
		SELECT @BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
2641

    
2642
	
2643
		SET @BRANCH_CREATE_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
2644

    
2645

    
2646
			
2647
	SET @Result='1'
2648
	IF(NOT EXISTS(SELECT PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@PROCESS_CURR AND [STATUS] <> 'P'))
2649
	BEGIN	
2650

    
2651
			IF(@PROCESS_CURR LIKE '%_DC' AND @PROCESS_NEXT NOT LIKE '%_DC' AND @PROCESS_NEXT NOT LIKE 'TC')
2652
			BEGIN
2653
				
2654

    
2655
				SET @ROLE_USER=(SELECT TOP 1 ROLE_USER FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@PROCESS_CURR)
2656
				IF(@ROLE_USER <> 'TGD')
2657
				BEGIN
2658
					
2659
					
2660
							SET @KHOI_ID_TF=(SELECT TOP 1 FR_KHOI_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
2661
							SET @LIMIT_APP=(SELECT ISNULL(MAX_AMT,0)- ISNULL(TOTAL_APP_AMT,0) AS LIMIT_APP FROM dbo.LIMIT_ACCUMULATE WHERE ROLE_ID=@ROLE_USER AND DVDM_ID=@KHOI_ID_TF)
2662
							SET @TOTAL_TRANSFER=(SELECT SUM(TOTAL_AMT) AS TOTAL FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
2663

    
2664
							IF(@TOTAL_TRANSFER>@LIMIT_APP)
2665
							BEGIN
2666
							DECLARE @LEVEL INT
2667
								SELECT @LEVEL=BRANCH_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='DCNS' AND ROLE_ID =@ROLE_USER
2668
								SET @LEVEL=@LEVEL+1
2669
								SELECT TOP 1 @ROLE_NEXT= ROLE_ID,@PROCESS_ID_NEXT=NOTES FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='DCNS' AND BRANCH_ID=@LEVEL 
2670
								IF(@ROLE_NEXT='PTGD' AND EXISTS(SELECT * FROM dbo.CM_DVDM WHERE IS_KHOI=1 AND DVDM_ID=@KHOI_ID_TF AND IS_PTGD=0))
2671
								BEGIN
2672
								SELECT TOP 1 @ROLE_NEXT= ROLE_ID,@PROCESS_ID_NEXT=NOTES FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='DCNS' AND BRANCH_ID=@LEVEL 
2673
							
2674
								END
2675
								SET @NOTES =(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_ID_NEXT LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')   
2676
								
2677
								INSERT INTO dbo.PL_REQUEST_PROCESS
2678
								(
2679
								    REQ_ID,
2680
								    PROCESS_ID,
2681
								    STATUS,
2682
								    ROLE_USER,
2683
								    BRANCH_ID,
2684
								    CHECKER_ID,
2685
								    APPROVE_DT,
2686
								    PARENT_PROCESS_ID,
2687
								    IS_LEAF,
2688
								    COST_ID,
2689
								    DVDM_ID,
2690
								    NOTES,
2691
								    IS_HAS_CHILD,
2692
								    DEP_ID
2693
								)
2694
								VALUES
2695
								(   @p_REQ_ID,        -- REQ_ID - varchar(15)
2696
								    @PROCESS_ID_NEXT,        -- PROCESS_ID - varchar(10)
2697
								    'U',        -- STATUS - varchar(5)
2698
								    @ROLE_NEXT,        -- ROLE_USER - varchar(50)
2699
								    '',        -- BRANCH_ID - varchar(15)
2700
								    '',        -- CHECKER_ID - varchar(15)
2701
								    NULL, -- APPROVE_DT - datetime
2702
								    @PROCESS_CURR,        -- PARENT_PROCESS_ID - varchar(10)
2703
								    'N',        -- IS_LEAF - varchar(1)
2704
								    '',        -- COST_ID - varchar(15)
2705
								    @KHOI_ID_TF,        -- DVDM_ID - varchar(15)
2706
								    N'Chờ '+@NOTES+' phê duyệt',       -- NOTES - nvarchar(500)
2707
								    0,      -- IS_HAS_CHILD - bit
2708
								    ''         -- DEP_ID - varchar(20)
2709
								)
2710
							UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@PROCESS_ID_NEXT WHERE PROCESS_ID=@PROCESS_NEXT
2711
							SET @PROCESS_NEXT=@PROCESS_ID_NEXT
2712
							END
2713
							ELSE
2714
							BEGIN
2715
							SET @STEP_PARENT=@PROCESS_CURR
2716
							UPDATE dbo.LIMIT_ACCUMULATE SET TOTAL_APP_AMT = ISNULL(TOTAL_APP_AMT,0) + @TOTAL_TRANSFER WHERE ROLE_ID=@ROLE_USER AND DVDM_ID=@KHOI_ID_TF
2717
						   -- INSERT PL_TRADE_DETAIL
2718
						   SELECT TOP 1* FROM PL_TRADEDETAIL
2719
				DECLARE @l_TRADE_ID VARCHAR(15)
2720
				EXEC SYS_CodeMasters_Gen 'PL_TRADEDETAIL', @l_TRADE_ID out
2721
				IF @l_TRADE_ID ='' OR @l_TRADE_ID IS NULL GOTO ABORT
2722
				
2723
				INSERT INTO PL_TRADEDETAIL
2724
				(
2725
					[TRADE_ID],
2726
					[PLAN_ID],
2727
					[GOODS_ID],
2728
					[GOODS_NAME],
2729
					[GOODS_TYPE],
2730
					[UNIT_ID],
2731
					M1,
2732
					M2,
2733
					M3,
2734
					M4,
2735
					M5,
2736
					M6,
2737
					M7,
2738
					M8,
2739
					M9,
2740
					M10,
2741
					M11,
2742
					M12,
2743
					[QUANTITY],
2744
					[QUANTITY_EXE],
2745
					[PRICE],
2746
					[START_DT_AMORT],
2747
					[MONTH_AMORT],
2748
					[END_DT_AMORT],
2749
					[RATE_AMORT],
2750
					[NOTES],
2751
					[RECORD_STATUS],
2752
					[MAKER_ID],
2753
					[CREATE_DT],
2754
					[AUTH_STATUS],
2755
					[CHECKER_ID],
2756
					[APPROVE_DT],AMT_RECEIVE_TF
2757
				)
2758
				VALUES
2759
				(
2760
					@l_TRADE_ID,
2761
					NULL,
2762
					NULL,
2763
					NULL,
2764
					NULL,
2765
					NULL,
2766
					NULL,
2767
					NULL,
2768
					NULL,
2769
					NULL,
2770
					NULL,
2771
					NULL,
2772
					NULL,
2773
					NULL,
2774
					NULL,
2775
					NULL,
2776
					NULL,
2777
					NULL,
2778
					NULL,
2779
					0,
2780
					0,
2781
					NULL,
2782
					NULL,
2783
					NULL,
2784
					0,
2785
					'',
2786
					'1', 'admin' ,GETDATE() ,'A' ,'admin' ,GETDATE(),0
2787
				)
2788
						   ---
2789
							BEGIN
2790
									IF(@BRANCH_CREATE_TYPE='PGD')
2791
									BEGIN
2792
	
2793
										SET @BRANCH_PARENT=(SELECT FATHER_ID FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
2794
										IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND BRANCH_ID=@BRANCH_PARENT AND (DEP_ID IS NULL OR DEP_ID='')))
2795
										BEGIN
2796
											INSERT INTO dbo.PL_REQUEST_PROCESS
2797
											(
2798
											REQ_ID,
2799
											PROCESS_ID,
2800
											STATUS,
2801
											ROLE_USER,
2802
											BRANCH_ID,
2803
											DEP_ID,
2804
											CHECKER_ID,
2805
											APPROVE_DT,
2806
											PARENT_PROCESS_ID,
2807
											IS_LEAF,
2808
											NOTES
2809
											)
2810
											VALUES
2811
											(   
2812
											@p_REQ_ID,               -- REQ_ID - varchar(15)
2813
											'DVC',                  -- PROCESS_ID - varchar(10)
2814
											'U',                     -- STATUS - varchar(5)
2815
											'GDDV',                      -- ROLE_USER - varchar(50)
2816
											@BRANCH_PARENT,
2817
											NULL,                      -- BRANCH_ID - varchar(15)
2818
											NULL,           -- CHECKER_ID - varchar(15)
2819
											NULL , -- APPROVE_DT - datetime
2820
											@STEP_PARENT, 'N', N'Trưởng đơn vị phê duyệt');
2821

    
2822
											SET @STEP_CURR = 'DVC';
2823
											SET @STEP_PARENT = 'DVC';
2824
										END
2825
	
2826
									END
2827
									ELSE 
2828
									IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDDV'
2829
									AND ((
2830
										BRANCH_ID=@BRANCH_CREATE 
2831
										AND ((DEP_ID =@DEP_CREATE) OR ((@DEP_CREATE IS NULL OR @DEP_CREATE='') 
2832
										AND (DEP_ID IS NULL OR DEP_ID='')))
2833
										)
2834
											OR EXISTS(SELECT PC.COST_ID FROM dbo.PL_COSTCENTER PC 
2835
											LEFT JOIN dbo.PL_COSTCENTER_DT PCDT ON PCDT.COST_ID = PC.COST_ID WHERE PL_REQUEST_PROCESS.DVDM_ID=PC.DVDM_ID AND DEP_ID=@DEP_CREATE AND BRANCH_ID=@BRANCH_CREATE)
2836
											)
2837
									))
2838
									BEGIN
2839
									INSERT INTO dbo.PL_REQUEST_PROCESS
2840
											(
2841
											REQ_ID,
2842
											PROCESS_ID,
2843
											STATUS,
2844
											ROLE_USER,
2845
											BRANCH_ID,
2846
											DEP_ID,
2847
											CHECKER_ID,
2848
											APPROVE_DT,
2849
											PARENT_PROCESS_ID,
2850
											IS_LEAF,
2851
											NOTES
2852
											)
2853
											VALUES
2854
											(   
2855
											@p_REQ_ID,               -- REQ_ID - varchar(15)
2856
											'DVC',                  -- PROCESS_ID - varchar(10)
2857
											'U',                     -- STATUS - varchar(5)
2858
											'GDDV',                      -- ROLE_USER - varchar(50)
2859
											@BRANCH_CREATE,
2860
											@DEP_CREATE,                      -- BRANCH_ID - varchar(15)
2861
											NULL,           -- CHECKER_ID - varchar(15)
2862
											NULL , -- APPROVE_DT - datetime
2863
											@STEP_PARENT, 'N', N'Trưởng đơn vị phê duyệt');
2864

    
2865
									SET @STEP_CURR = 'DVC';
2866
									SET @STEP_PARENT = 'DVC';
2867
									END
2868

    
2869

    
2870

    
2871

    
2872
								
2873
								SET @IS_NEXT= (SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID,'GDDV'))
2874

    
2875
								SET @TOTAL_AMT = (SELECT TOTAL_AMT FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID)
2876
								IF(@IS_NEXT=1 AND NOT EXISTS (SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='TGD'))
2877
								BEGIN
2878
								IF(EXISTS(SELECT * FROM PL_REQUEST_DOC_DT WHERE REQ_ID =@p_REQ_ID AND KHOI_ID IS NOT NULL AND KHOI_ID <>''))
2879
								BEGIN
2880
								DECLARE lstCostCenter CURSOR FOR
2881
								SELECT KHOI_ID  FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND KHOI_ID IS NOT NULL AND KHOI_ID <>''  AND NOT EXISTS(
2882
									SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND DVDM_ID=KHOI_ID AND ROLE_USER='GDK'
2883
								)
2884
								GROUP BY KHOI_ID
2885
										 OPEN lstCostCenter
2886
		 						FETCH NEXT FROM lstCostCenter INTO @DVDM_ID_TT
2887
								WHILE @@FETCH_STATUS = 0 
2888
								BEGIN 
2889
									INSERT INTO dbo.PL_REQUEST_PROCESS
2890
									(
2891
										REQ_ID,
2892
										PROCESS_ID,
2893
										STATUS,
2894
										ROLE_USER,
2895
										BRANCH_ID,
2896
										CHECKER_ID,
2897
										APPROVE_DT,
2898
										PARENT_PROCESS_ID,
2899
										IS_LEAF,
2900
										COST_ID,
2901
										DVDM_ID,
2902
										NOTES,IS_HAS_CHILD
2903
									)
2904
									VALUES
2905
									(   @p_REQ_ID,        -- REQ_ID - varchar(15)
2906
										'GDK_TT',        -- PROCESS_ID - varchar(10)
2907
										'U',        -- STATUS - varchar(5)
2908
										'GDK',        -- ROLE_USER - varchar(50)
2909
										'',        -- BRANCH_ID - varchar(15)
2910
										'',        -- CHECKER_ID - varchar(15)
2911
										NULL, -- APPROVE_DT - datetime
2912
										@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
2913
										'N',        -- IS_LEAF - varchar(1)
2914
										'',        -- COST_ID - varchar(15)
2915
										@DVDM_ID_TT ,
2916
										N'Chờ giám đốc khối xác nhận',
2917
										0        -- DVDM_ID - varchar(15)
2918
									  )
2919
									  SET @STEP_PARENT='GDK_TT'	
2920
								FETCH NEXT FROM lstCostCenter INTO @DVDM_ID_TT
2921
								END
2922
								CLOSE lstCostCenter
2923
								DEALLOCATE lstCostCenter
2924
		
2925
								SET @IS_NEXT= (SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID,'GDK'))
2926

    
2927
								
2928
								IF(@IS_NEXT=1)
2929
								BEGIN
2930
								IF(EXISTS(SELECT KHOI_ID  FROM dbo.PL_REQUEST_DOC_DT DT
2931
								LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=DT.KHOI_ID AND DM.IS_KHOI=1 WHERE REQ_ID=@p_REQ_ID AND KHOI_ID IS NOT NULL AND KHOI_ID <>'' AND DM.IS_PTGD=1 AND NOT EXISTS(
2932
									SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND DVDM_ID=KHOI_ID AND ROLE_USER='PTGD'
2933
								) ))
2934
									BEGIN
2935
									DECLARE lstCostCenter CURSOR FOR
2936
									SELECT KHOI_ID  FROM dbo.PL_REQUEST_DOC_DT DT
2937
									LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=DT.KHOI_ID AND DM.IS_KHOI=1 WHERE REQ_ID=@p_REQ_ID AND DM.IS_PTGD=1 AND NOT EXISTS(
2938
										SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND DVDM_ID=KHOI_ID AND ROLE_USER='PTGD'
2939
									)
2940
									GROUP BY KHOI_ID
2941
									OPEN lstCostCenter
2942
		 							FETCH NEXT FROM lstCostCenter INTO @DVDM_ID_TT
2943
									WHILE @@FETCH_STATUS = 0 
2944
									BEGIN 
2945
										INSERT INTO dbo.PL_REQUEST_PROCESS
2946
										(
2947
											REQ_ID,
2948
											PROCESS_ID,
2949
											STATUS,
2950
											ROLE_USER,
2951
											BRANCH_ID,
2952
											CHECKER_ID,
2953
											APPROVE_DT,
2954
											PARENT_PROCESS_ID,
2955
											IS_LEAF,
2956
											COST_ID,
2957
											DVDM_ID,
2958
											NOTES,IS_HAS_CHILD
2959
										)
2960
										VALUES
2961
										(   @p_REQ_ID,        -- REQ_ID - varchar(15)
2962
											'PTGDK_TT',        -- PROCESS_ID - varchar(10)
2963
											'U',        -- STATUS - varchar(5)
2964
											'PTGD',        -- ROLE_USER - varchar(50)
2965
											'',        -- BRANCH_ID - varchar(15)
2966
											'',        -- CHECKER_ID - varchar(15)
2967
											NULL, -- APPROVE_DT - datetime
2968
											@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
2969
											'N',        -- IS_LEAF - varchar(1)
2970
											'',        -- COST_ID - varchar(15)
2971
											@DVDM_ID_TT ,
2972
											N'Chờ phó tổng giám đốc khối xác nhận',
2973
											0        -- DVDM_ID - varchar(15)
2974
										  )	
2975
									  
2976
									SET @STEP_PARENT='PTGDK_TT'
2977
									FETCH NEXT FROM lstCostCenter INTO @DVDM_ID_TT
2978
									END
2979
									CLOSE lstCostCenter
2980
									DEALLOCATE lstCostCenter
2981
								
2982
									SET @IS_NEXT= (SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID,'PTGD'))
2983
									END
2984
								IF(EXISTS(SELECT KHOI_ID,TOTAL_AMT  FROM dbo.PL_REQUEST_DOC_DT DT
2985
								LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=DT.KHOI_ID AND DM.IS_KHOI=1 WHERE REQ_ID=@p_REQ_ID AND DM.IS_PTGD=0 ))
2986
								BEGIN
2987
								SET @IS_NEXT=1
2988
								END
2989
								
2990

    
2991
								IF(@IS_NEXT=1)
2992
								BEGIN
2993
									 INSERT INTO dbo.PL_REQUEST_PROCESS
2994
									(
2995
										REQ_ID,
2996
										PROCESS_ID,
2997
										STATUS,
2998
										ROLE_USER,
2999
										BRANCH_ID,
3000
										CHECKER_ID,
3001
										APPROVE_DT,
3002
										PARENT_PROCESS_ID,
3003
										IS_LEAF,
3004
										COST_ID,
3005
										DVDM_ID,
3006
										NOTES,IS_HAS_CHILD
3007
									)
3008
									VALUES
3009
									(   @p_REQ_ID,        -- REQ_ID - varchar(15)
3010
										'TGD',        -- PROCESS_ID - varchar(10)
3011
										'U',        -- STATUS - varchar(5)
3012
										'TGD',        -- ROLE_USER - varchar(50)
3013
										'',        -- BRANCH_ID - varchar(15)
3014
										'',        -- CHECKER_ID - varchar(15)
3015
										NULL, -- APPROVE_DT - datetime
3016
										@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
3017
										'N',        -- IS_LEAF - varchar(1)
3018
										'',        -- COST_ID - varchar(15)
3019
										'' ,
3020
										N'Chờ tổng giám đốc xác nhận',
3021
										0        -- DVDM_ID - varchar(15)
3022
									  )
3023
									  SET @STEP_PARENT='TGD'	
3024
									  IF((SELECT SUM(TOTAL_AMT) FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID) > (SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='TCTT-HDQT'))
3025
			BEGIN
3026
				
3027

    
3028
				INSERT INTO dbo.PL_REQUEST_PROCESS
3029
            (
3030
                REQ_ID,
3031
                PROCESS_ID,
3032
                STATUS,
3033
                ROLE_USER,
3034
                BRANCH_ID,
3035
                CHECKER_ID,
3036
                APPROVE_DT,
3037
                PARENT_PROCESS_ID,
3038
                IS_LEAF,
3039
                COST_ID,
3040
                DVDM_ID,
3041
                NOTES,
3042
                IS_HAS_CHILD
3043
            )
3044
            VALUES
3045
            (   @p_REQ_ID,                           -- REQ_ID - varchar(15)
3046
                'HDQT',                               -- PROCESS_ID - varchar(10)
3047
                'U',                                 -- STATUS - varchar(5)
3048
                'HDQT',                               -- ROLE_USER - varchar(50)
3049
                '',                                  -- BRANCH_ID - varchar(15)
3050
                '',                                  -- CHECKER_ID - varchar(15)
3051
                NULL,                                -- APPROVE_DT - datetime
3052
                @STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
3053
                'N',                                 -- IS_LEAF - varchar(1)
3054
                '',                                  -- COST_ID - varchar(15)
3055
                '', N'Chờ HDQT xác nhận', 0 -- DVDM_ID - varchar(15)
3056
                );
3057
            SET @STEP_PARENT = 'HDQT';
3058
			END
3059
								END
3060
				
3061
						--ELSE
3062
						--BEGIN
3063
					
3064
						--END
3065
				END
3066
								END
3067
								END
3068
								END
3069

    
3070
							UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@STEP_PARENT WHERE PROCESS_ID=@PROCESS_NEXT
3071
							SET @PROCESS_NEXT=(SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR)
3072
							END
3073
				END
3074
				ELSE
3075
				BEGIN
3076
							
3077
							
3078
							--- BO SUNG VAO BANG PL_TRADE_DETAIL
3079
							SET @STEP_PARENT='TGD'	
3080
							IF((SELECT SUM(TOTAL_AMT) FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID) > (SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='TCTT-HDQT'))
3081
							BEGIN
3082
				
3083

    
3084
							INSERT INTO dbo.PL_REQUEST_PROCESS
3085
            (
3086
                REQ_ID,
3087
                PROCESS_ID,
3088
                STATUS,
3089
                ROLE_USER,
3090
                BRANCH_ID,
3091
                CHECKER_ID,
3092
                APPROVE_DT,
3093
                PARENT_PROCESS_ID,
3094
                IS_LEAF,
3095
                COST_ID,
3096
                DVDM_ID,
3097
                NOTES,
3098
                IS_HAS_CHILD
3099
            )
3100
            VALUES
3101
            (   @p_REQ_ID,                           -- REQ_ID - varchar(15)
3102
                'HDQT',                               -- PROCESS_ID - varchar(10)
3103
                'U',                                 -- STATUS - varchar(5)
3104
                'HDQT',                               -- ROLE_USER - varchar(50)
3105
                '',                                  -- BRANCH_ID - varchar(15)
3106
                '',                                  -- CHECKER_ID - varchar(15)
3107
                NULL,                                -- APPROVE_DT - datetime
3108
                @STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
3109
                'N',                                 -- IS_LEAF - varchar(1)
3110
                '',                                  -- COST_ID - varchar(15)
3111
                '', N'Chờ HDQT xác nhận', 0 -- DVDM_ID - varchar(15)
3112
                );
3113
							SET @STEP_PARENT = 'HDQT';
3114
							
3115
								UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@STEP_PARENT WHERE PROCESS_ID=@PROCESS_NEXT
3116
								SET @PROCESS_NEXT=(SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR)
3117
							END
3118
								
3119
				
3120
						--ELSE
3121
						--BEGIN
3122
					
3123
						--END
3124
							
3125
								
3126
								
3127

    
3128
						
3129
				END
3130

    
3131
			END
3132
			UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID
3133
			UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
3134
				SET @IS_LEAF=(SELECT TOP 1 IS_LEAF FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR)
3135
			
3136
			
3137
			IF(@IS_LEAF='Y')
3138
			BEGIN
3139
					EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = @p_REQ_ID 
3140
					EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = @p_REQ_ID
3141

    
3142
				SET @Result='0'
3143
			END
3144
	END
3145

    
3146

    
3147
	IF @@Error <> 0 GOTO ABORT
3148
			
3149
COMMIT TRANSACTION
3150
SELECT @Result as Result , @ROLE_USER_NOTIFI AS  ROLE_NOTIFI, '' ErrorDesc
3151
RETURN '0'
3152
ABORT:
3153
BEGIN
3154
	
3155
		ROLLBACK TRANSACTION
3156
		SELECT '-1' as Result, '' ROLE_NOTIFI ,'' ErrorDesc
3157
		RETURN '-1'
3158
End
3159

    
3160

    
3161

    
3162

    
3163

    
3164

    
3165
GO
3166
IF @@ERROR <> 0 SET NOEXEC ON
3167
GO
3168
PRINT N'Altering [dbo].[PL_REQ_PROCESS_CHILD_App]'
3169
GO
3170
ALTER PROCEDURE [dbo].[PL_REQ_PROCESS_CHILD_App]
3171
@p_REQ_ID VARCHAR(20),
3172
@p_PROCESS_ID VARCHAR(20),
3173
@p_TLNAME VARCHAR(20),
3174
@p_MAKER_ID VARCHAR(20),
3175
@p_TYPE_JOB VARCHAR(20),
3176
@p_PROCESS_DES NVARCHAR(20),
3177
@p_REF_ID INT
3178
AS
3179
BEGIN TRANSACTION
3180
---LUCTV KIEM TRA NEU TO TRINH DANG BI TRA VE THI KHONG DUOC PHEP DUYET
3181
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_ID AND STATUS_JOB ='R') OR (EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND AUTH_STATUS ='R'))
3182
OR(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='R')))
3183
BEGIN
3184
	ROLLBACK TRANSACTION
3185
	SELECT -1 as Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID)+N' đang bị từ chối. Vui lòng đợi nhân viên xử lý phiếu và gửi phê duyệt lại!' ErrorDesc
3186
	RETURN -1
3187
END
3188
DECLARE  @ERROR BIT ,@EROOR_DES NVARCHAR(500)
3189

    
3190
SELECT @ERROR=ERROR,
3191
       @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDDC','PL_REQUEST_DOC',@p_MAKER_ID,'DVKD')
3192
IF(@ERROR=1)
3193
BEGIN
3194
	 ROLLBACK TRANSACTION;
3195
    SELECT -1  Result,
3196
           @EROOR_DES ErrorDesc
3197
   
3198
    RETURN 0;
3199
END
3200

    
3201

    
3202

    
3203
DECLARE @LEVEL INT,@DEP_ID VARCHAR(20),@BRANCH_ID VARCHAR(20),@BRANCH_CREATE VARCHAR(20),@DEP_CREATE VARCHAR(20)
3204
DECLARE @ROLE_ID VARCHAR(20),@NOTES NVARCHAR(500),
3205
				@PROCESS_CURR VARCHAR(10),
3206
				@STEP_CURR INT,
3207
				@STEP_NEXT INT,
3208
				@PROCESS_NEXT VARCHAR(10),
3209
				@TYPE_JOB_NAME NVARCHAR(100), @FULLNAME NVARCHAR(100)
3210

    
3211
SELECT @BRANCH_ID=  TLSUBBRID,@DEP_ID=SECUR_CODE ,@ROLE_ID=RoleName FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID
3212

    
3213

    
3214
SELECT @BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
3215

    
3216

    
3217
DECLARE
3218
@COST_ID_TABLE TABLE (
3219
	COST_ID VARCHAR(15)
3220
)
3221

    
3222
DECLARE @DVDM_ID_TABLE TABLE (
3223
	DVDM_ID VARCHAR(15)
3224
)
3225

    
3226
	INSERT INTO @COST_ID_TABLE
3227
	SELECT COST_ID FROM dbo.PL_COSTCENTER_DT WHERE DEP_ID=@DEP_ID AND BRANCH_ID=@BRANCH_ID
3228

    
3229
	INSERT INTO @DVDM_ID_TABLE
3230
	SELECT DVDM_ID FROM dbo.PL_COSTCENTER WHERE COST_ID IN (SELECT COST_ID FROM @COST_ID_TABLE) GROUP BY DVDM_ID
3231

    
3232
	
3233
			
3234
		UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='P'
3235
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND TLNAME=@p_TLNAME AND TYPE_JOB=@p_TYPE_JOB
3236

    
3237

    
3238
		SET @TYPE_JOB_NAME =(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE CDNAME = 'JOB_TYPE' AND CDTYPE='REQ' AND CDVAL=@p_TYPE_JOB)
3239
		SET @FULLNAME =(SELECT TLFullName FROM dbo.TL_USER WHERE TLNANME=@p_TLNAME )
3240
			
3241
		INSERT INTO dbo.PL_PROCESS
3242
				(
3243
					REQ_ID,
3244
					PROCESS_ID,
3245
					CHECKER_ID,
3246
					APPROVE_DT,
3247
					PROCESS_DESC,NOTES
3248
				)
3249
				VALUES
3250
				(   @p_REQ_ID,        -- REQ_ID - varchar(15)
3251
					@p_PROCESS_ID,        -- PROCESS_ID - varchar(10)
3252
					@p_MAKER_ID,        -- CHECKER_ID - varchar(15)
3253
					GETDATE() , -- APPROVE_DT - datetime
3254
					@p_PROCESS_DES ,
3255
					@TYPE_JOB_NAME+ N' đã phê duyệt'       -- PROCESS_DESC - nvarchar(1000)
3256
				)
3257

    
3258
		
3259

    
3260

    
3261
		SET @LEVEL=ISNULL((SELECT TOP 1 LEVEL_JOB 
3262
		FROM dbo.PL_REQUEST_PROCESS_CHILD 
3263
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND TLNAME=@p_TLNAME AND TYPE_JOB=@p_TYPE_JOB
3264
		ORDER BY LEVEL_JOB DESC),0)                  
3265

    
3266
		UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='C'
3267
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND LEVEL_JOB=(@LEVEL-1)
3268
		
3269
		IF(NOT EXISTS (SELECT * FROM  dbo.PL_REQUEST_PROCESS_CHILD 
3270
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND STATUS_JOB <> 'P'))
3271
		BEGIN
3272

    
3273

    
3274
				SET @PROCESS_CURR = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C')
3275
				SET @PROCESS_NEXT = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR)
3276
				IF(@PROCESS_CURR='TC')
3277
				BEGIN
3278
						SELECT @ERROR=ERROR,
3279
						   @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDDC','PL_REQUEST_DOC',@p_MAKER_ID,'TC')
3280
					IF(@ERROR=1)
3281
					BEGIN
3282
						 ROLLBACK TRANSACTION;
3283
						SELECT '-1'  Result,
3284
							   @EROOR_DES ErrorDesc
3285
   
3286
						RETURN '0';
3287
					END
3288

    
3289
						SET @NOTES=(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')   
3290
						UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',NOTES=@NOTES+ N' đã phê duyệt', CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE()  WHERE REQ_ID=@p_REQ_ID AND ROLE_USER=@ROLE_ID AND PROCESS_ID=@PROCESS_CURR
3291
						UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C' WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR
3292
						UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
3293
				END
3294
				ELSE
3295
				BEGIN
3296
				SET @NOTES=(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')   
3297

    
3298

    
3299
				UPDATE dbo.PL_REQUEST_COSTCENTER SET AUTH_STATUS='A',APPROVE_DT=GETDATE(),CHECKER_ID=@p_MAKER_ID WHERE REQ_ID=@p_REQ_ID AND COST_ID IN (SELECT DVDM_ID FROM @DVDM_ID_TABLE)
3300
				UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',NOTES=@NOTES+ N' đã phê duyệt', CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE() WHERE REQ_ID=@p_REQ_ID AND ROLE_USER=@ROLE_ID AND DVDM_ID IN (SELECT DVDM_ID FROM @DVDM_ID_TABLE)
3301
							
3302

    
3303

    
3304
				IF(NOT EXISTS( SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS='C'))
3305
				BEGIN
3306
						
3307
							UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PROCESS_ID=@PROCESS_NEXT AND REQ_ID=@p_REQ_ID
3308
							UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
3309
						
3310
				END
3311

    
3312
				UPDATE dbo.PL_REQUEST_TRANSFER SET AUTH_STATUS='A',CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE()  WHERE REQ_DOC_ID=@p_REQ_ID AND FR_BRN_ID=@BRANCH_ID AND (FR_DEP_ID=@DEP_ID OR FR_DEP_ID IS NULL OR FR_DEP_ID='')
3313
				UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',NOTES=@NOTES+ N' đã phê duyệt', CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE()  WHERE REQ_ID=@p_REQ_ID AND ROLE_USER=@ROLE_ID AND BRANCH_ID=@BRANCH_ID AND (DEP_ID=@DEP_ID OR DEP_ID IS NULL OR DEP_ID='')
3314

    
3315

    
3316
		IF(EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND (FR_BRN_ID <> @BRANCH_CREATE OR FR_DEP_ID<> @DEP_CREATE)))
3317
			BEGIN
3318
			IF(NOT EXISTS(SELECT REQ_COST_ID FROM dbo.PL_REQUEST_COSTCENTER WHERE REQ_ID=@p_REQ_ID AND AUTH_STATUS<>'A'))
3319
			BEGIN
3320
				    IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND AUTH_STATUS <>'A'))
3321
					BEGIN
3322
							DECLARE 	@LIMIT_VALUE DECIMAL(18,0),@TOTAL_TRANSFER DECIMAL(18,2),
3323
							@IS_NEXT BIT=0,@STEP_PARENT VARCHAR(20),@TOTAL_AMT_GD DECIMAL(12,0),@STOP BIT,@ROLE_TF VARCHAR(20),@DVDM_ID VARCHAR(20),@NOTE NVARCHAR(100)
3324
							DECLARE @ROLE_CDT VARCHAR(20),@DVDM_CDT VARCHAR(20),@LIMIT_VALUE_CDT VARCHAR(20),@NOTES_CDT VARCHAR(20),@TOTAL_AMT DECIMAL(18,2)	
3325
						
3326

    
3327
							SET @STEP_PARENT=(SELECT PARENT_PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE PROCESS_ID='TC' AND REQ_ID=@p_REQ_ID)
3328
						
3329
							SET @NOTE=   (SELECT CONTENT FROM dbo.CM_ALLCODE WHERE CDVAL='DVDM' AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')
3330
							
3331

    
3332
							DECLARE lstTransfer CURSOR FOR
3333
							SELECT FR_DVDM_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND   FR_DVDM_ID IS NOT NULL AND FR_DVDM_ID <>'' AND (FR_BRN_ID <> @BRANCH_CREATE OR FR_DEP_ID<> @DEP_CREATE)
3334
							AND NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDDV' AND DVDM_ID=FR_DVDM_ID	)
3335
							GROUP BY FR_DVDM_ID
3336
							OPEN lstTransfer
3337
							FETCH NEXT FROM lstTransfer INTO @DVDM_ID
3338
							WHILE @@FETCH_STATUS = 0 
3339
							BEGIN 
3340
							IF(NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID  AND ROLE_USER='GDDV' AND ( DVDM_ID=@DVDM_ID OR @DVDM_ID IN ((SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC
3341
							LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
3342
							WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))
3343
							BEGIN
3344
								INSERT INTO dbo.PL_REQUEST_PROCESS
3345
								(
3346
									REQ_ID,
3347
									PROCESS_ID,
3348
									STATUS,
3349
									ROLE_USER,
3350
									BRANCH_ID,
3351
									CHECKER_ID,
3352
									APPROVE_DT,
3353
									PARENT_PROCESS_ID,
3354
									IS_LEAF,
3355
									COST_ID,
3356
									DVDM_ID,
3357
									NOTES,IS_HAS_CHILD
3358
								)
3359
								VALUES
3360
								(   @p_REQ_ID,        -- REQ_ID - varchar(15)
3361
									'DVDM_DC',        -- PROCESS_ID - varchar(10)
3362
									'U',        -- STATUS - varchar(5)
3363
									'GDDV',        -- ROLE_USER - varchar(50)
3364
									'',        -- BRANCH_ID - varchar(15)
3365
									'',        -- CHECKER_ID - varchar(15)
3366
									NULL, -- APPROVE_DT - datetime
3367
									@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
3368
									'N',        -- IS_LEAF - varchar(1)
3369
									'',        -- COST_ID - varchar(15)
3370
									@DVDM_ID ,        -- DVDM_ID - varchar(15)
3371
									N'Chờ '+@NOTE+N' xác nhận'
3372
									,0)
3373
							END
3374

    
3375
							FETCH NEXT FROM lstTransfer INTO @DVDM_ID
3376
							END
3377
							CLOSE lstTransfer
3378
							DEALLOCATE lstTransfer
3379

    
3380

    
3381
							 IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVDM_DC'))
3382
								SET @STEP_PARENT='DVDM_DC'
3383
							
3384

    
3385
						UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@STEP_PARENT,STATUS='U' WHERE  PROCESS_ID='TC' AND REQ_ID=@p_REQ_ID
3386
						SET @STEP_PARENT='TC'
3387

    
3388
						---Duyệt DC
3389

    
3390
						IF( (SELECT COUNT(T.FR_KHOI_ID) AS COUNT_ROW FROM (SELECT FR_KHOI_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND FR_KHOI_ID IS NOT NULL AND FR_KHOI_ID <>''
3391
						GROUP BY FR_KHOI_ID)T
3392
						) > 1)
3393
						BEGIN
3394
							INSERT INTO dbo.PL_REQUEST_PROCESS
3395
							(
3396
							    REQ_ID,
3397
							    PROCESS_ID,
3398
							    STATUS,
3399
							    ROLE_USER,
3400
							    BRANCH_ID,
3401
							    CHECKER_ID,
3402
							    APPROVE_DT,
3403
							    PARENT_PROCESS_ID,
3404
							    IS_LEAF,
3405
							    COST_ID,
3406
							    DVDM_ID,
3407
							    NOTES,
3408
							    IS_HAS_CHILD
3409
							)
3410
							VALUES
3411
							(   @p_REQ_ID,        -- REQ_ID - varchar(15)
3412
							    'TGD_DC',        -- PROCESS_ID - varchar(10)
3413
							    'U',        -- STATUS - varchar(5)
3414
							    'TGD',        -- ROLE_USER - varchar(50)
3415
							    '',        -- BRANCH_ID - varchar(15)
3416
							    '',        -- CHECKER_ID - varchar(15)
3417
							    NULL, -- APPROVE_DT - datetime
3418
							    @STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
3419
							    '',        -- IS_LEAF - varchar(1)
3420
							    '',        -- COST_ID - varchar(15)
3421
							    '',        -- DVDM_ID - varchar(15)
3422
							    N'Chờ tổng giám đốc phê duyệt',       -- NOTES - nvarchar(500)
3423
							    NULL       -- IS_HAS_CHILD - bit
3424
							    )
3425
							SET	@STEP_PARENT='TGD_DC'
3426
						END
3427
						ELSE
3428
						BEGIN
3429
							DECLARE @LIMTT_MAX  DECIMAL(18,2),@LIMIT_APP DECIMAL(18,2) ,@KHOI_ID_TF VARCHAR(20)
3430
							SET @KHOI_ID_TF=(SELECT TOP 1 FR_KHOI_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
3431

    
3432

    
3433
							IF(@KHOI_ID_TF IS NOT NULL AND @KHOI_ID_TF <>'')
3434
							BEGIN
3435
							SET @LIMIT_APP=(SELECT ISNULL(MAX_AMT,0)- ISNULL(TOTAL_APP_AMT,0) AS LIMIT_APP FROM dbo.LIMIT_ACCUMULATE WHERE ROLE_ID='GDK' AND DVDM_ID=@KHOI_ID_TF)
3436
							SET @TOTAL_TRANSFER=(SELECT SUM(TOTAL_AMT) AS TOTAL FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
3437
							SET @LIMTT_MAX=(SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE ROLE_ID='GDK' AND LIMIT_TYPE='DCNS')
3438

    
3439
							INSERT INTO dbo.PL_REQUEST_PROCESS
3440
							(
3441
							    REQ_ID,
3442
							    PROCESS_ID,
3443
							    STATUS,
3444
							    ROLE_USER,
3445
							    BRANCH_ID,
3446
							    CHECKER_ID,
3447
							    APPROVE_DT,
3448
							    PARENT_PROCESS_ID,
3449
							    IS_LEAF,
3450
							    COST_ID,
3451
							    DVDM_ID,
3452
							    NOTES,
3453
							    IS_HAS_CHILD
3454
							)
3455
							VALUES
3456
							(   @p_REQ_ID,        -- REQ_ID - varchar(15)
3457
							    'GDK_DC',        -- PROCESS_ID - varchar(10)
3458
							    'U',        -- STATUS - varchar(5)
3459
							    'GDK',        -- ROLE_USER - varchar(50)
3460
							    '',        -- BRANCH_ID - varchar(15)
3461
							    '',        -- CHECKER_ID - varchar(15)
3462
							    GETDATE(), -- APPROVE_DT - datetime
3463
							    @STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
3464
							    'N',        -- IS_LEAF - varchar(1)
3465
							    '',        -- COST_ID - varchar(15)
3466
							    @KHOI_ID_TF,        -- DVDM_ID - varchar(15)
3467
							    N'Chờ giám đốc khối xác nhận',       -- NOTES - nvarchar(500)
3468
							    NULL       -- IS_HAS_CHILD - bit
3469
							 )
3470
							 SET @STEP_PARENT='GDK_DC';
3471
							 IF(@TOTAL_TRANSFER>@LIMTT_MAX OR @TOTAL_TRANSFER>@LIMIT_APP)
3472
							 BEGIN
3473
								IF(EXISTS(SELECT DVDM_ID FROM dbo.CM_DVDM WHERE DVDM_ID=@KHOI_ID_TF AND IS_KHOI=1 AND IS_PTGD=1))
3474
									BEGIN
3475
									INSERT INTO dbo.PL_REQUEST_PROCESS
3476
							(
3477
							    REQ_ID,
3478
							    PROCESS_ID,
3479
							    STATUS,
3480
							    ROLE_USER,
3481
							    BRANCH_ID,
3482
							    CHECKER_ID,
3483
							    APPROVE_DT,
3484
							    PARENT_PROCESS_ID,
3485
							    IS_LEAF,
3486
							    COST_ID,
3487
							    DVDM_ID,
3488
							    NOTES,
3489
							    IS_HAS_CHILD
3490
							)
3491
							VALUES
3492
							(   @p_REQ_ID,        -- REQ_ID - varchar(15)
3493
							    'PTGD_DC',        -- PROCESS_ID - varchar(10)
3494
							    'U',        -- STATUS - varchar(5)
3495
							    'PTGD',        -- ROLE_USER - varchar(50)
3496
							    '',        -- BRANCH_ID - varchar(15)
3497
							    '',        -- CHECKER_ID - varchar(15)
3498
							    GETDATE(), -- APPROVE_DT - datetime
3499
							    @STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
3500
							    'N',        -- IS_LEAF - varchar(1)
3501
							    '',        -- COST_ID - varchar(15)
3502
							    @KHOI_ID_TF,        -- DVDM_ID - varchar(15)
3503
							    N'Chờ giám đốc khối xác nhận',       -- NOTES - nvarchar(500)
3504
							    NULL       -- IS_HAS_CHILD - bit
3505
							 )
3506
									SET @STEP_PARENT='PTGD_DC'
3507
									SET @LIMTT_MAX=(SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE ROLE_ID='GDK' AND LIMIT_TYPE='DCNS')
3508
									SET @LIMIT_APP=(SELECT ISNULL(MAX_AMT,0)- ISNULL(TOTAL_APP_AMT,0) AS LIMIT_APP FROM dbo.LIMIT_ACCUMULATE WHERE ROLE_ID='GDK' AND DVDM_ID=@KHOI_ID_TF)
3509
									
3510
									END
3511
									IF(@TOTAL_TRANSFER>@LIMTT_MAX OR @TOTAL_TRANSFER>@LIMIT_APP OR EXISTS(SELECT DVDM_ID FROM dbo.CM_DVDM WHERE DVDM_ID=@KHOI_ID_TF AND IS_KHOI=1 AND IS_PTGD=0))
3512
									BEGIN
3513
									INSERT INTO dbo.PL_REQUEST_PROCESS
3514
									(
3515
										REQ_ID,
3516
										PROCESS_ID,
3517
										STATUS,
3518
										ROLE_USER,
3519
										BRANCH_ID,
3520
										CHECKER_ID,
3521
										APPROVE_DT,
3522
										PARENT_PROCESS_ID,
3523
										IS_LEAF,
3524
										COST_ID,
3525
										DVDM_ID,
3526
										NOTES,
3527
										IS_HAS_CHILD
3528
									)
3529
									VALUES
3530
									(   @p_REQ_ID,        -- REQ_ID - varchar(15)
3531
										'TGD_DC',        -- PROCESS_ID - varchar(10)
3532
										'U',        -- STATUS - varchar(5)
3533
										'TGD',        -- ROLE_USER - varchar(50)
3534
										'',        -- BRANCH_ID - varchar(15)
3535
										'',        -- CHECKER_ID - varchar(15)
3536
										NULL, -- APPROVE_DT - datetime
3537
										@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
3538
										'',        -- IS_LEAF - varchar(1)
3539
										'',        -- COST_ID - varchar(15)
3540
										'',        -- DVDM_ID - varchar(15)
3541
										N'Chờ tổng giám đốc phê duyệt',       -- NOTES - nvarchar(500)
3542
										NULL       -- IS_HAS_CHILD - bit
3543
									)
3544
									SET	@STEP_PARENT='TGD_DC'
3545
								 END
3546
							
3547
							 END
3548
							 END
3549
						END
3550
						--- Duyệt TT
3551
						
3552
						UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PROCESS_ID='DVDM_DC' AND REQ_ID=@p_REQ_ID
3553
						UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@STEP_PARENT,STATUS='U' WHERE  PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID
3554
						UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID='DVDM_DC' WHERE REQ_ID=@p_REQ_ID
3555

    
3556
				END	
3557
			END
3558
		END
3559

    
3560
			IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='APPROVE'))
3561
			BEGIN
3562
				
3563
					
3564
					EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = @p_REQ_ID 
3565
					EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = @p_REQ_ID
3566
			END
3567
	
3568
				END
3569

    
3570

    
3571
		END
3572
				
3573
		IF @@Error <> 0 GOTO ABORT
3574
COMMIT TRANSACTION
3575
SELECT 0 as Result, '' ErrorDesc
3576
RETURN 0
3577
ABORT:
3578
BEGIN
3579
		ROLLBACK TRANSACTION
3580
		SELECT -1 as Result, '' ErrorDesc
3581
		RETURN -1
3582
End
3583

    
3584

    
3585

    
3586

    
3587

    
3588

    
3589
GO
3590
IF @@ERROR <> 0 SET NOEXEC ON
3591
GO
3592
COMMIT TRANSACTION
3593
GO
3594
IF @@ERROR <> 0 SET NOEXEC ON
3595
GO
3596
-- This statement writes to the SQL Server Log so SQL Monitor can show this deployment.
3597
IF HAS_PERMS_BY_NAME(N'sys.xp_logevent', N'OBJECT', N'EXECUTE') = 1
3598
BEGIN
3599
    DECLARE @databaseName AS nvarchar(2048), @eventMessage AS nvarchar(2048)
3600
    SET @databaseName = REPLACE(REPLACE(DB_NAME(), N'\', N'\\'), N'"', N'\"')
3601
    SET @eventMessage = N'Redgate SQL Compare: { "deployment": { "description": "Redgate SQL Compare deployed to ' + @databaseName + N'", "database": "' + @databaseName + N'" }}'
3602
    EXECUTE sys.xp_logevent 55000, @eventMessage
3603
END
3604
GO
3605
DECLARE @Success AS BIT
3606
SET @Success = 1
3607
SET NOEXEC OFF
3608
IF (@Success = 1) PRINT 'The database update succeeded'
3609
ELSE BEGIN
3610
	IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION
3611
	PRINT 'The database update failed'
3612
END
3613
GO