Project

General

Profile

FILE_3_COMPARE_DB.txt

Luc Tran Van, 04/18/2023 10:19 AM

 
1

    
2
CREATE PROCEDURE [dbo].[ASS_IMPORT_UPDATE_DT_ById]
3
	@p_IMP_MASTER_ID	VARCHAR(15)
4
AS	
5
SELECT A.*,B.BRANCH_NAME,C.DEP_NAME,D.EMP_NAME,E.ASSET_CODE,
6
F.BRANCH_NAME AS BRANCH_NAME_OLD, G.DEP_NAME AS DEP_NAME_OLD, H.EMP_NAME AS EMP_NAME_OLD
7
FROM ASS_IMPORT_UPDATE_DT A
8
LEFT JOIN CM_BRANCH B ON A.BRANCH_ID = B.BRANCH_ID
9
LEFT JOIN CM_DEPARTMENT C ON A.DEP_ID = C.DEP_ID
10
LEFT JOIN CM_EMPLOYEE D ON A.EMP_ID = D.EMP_ID
11
LEFT JOIN ASS_MASTER E ON A.ASSET_ID = E.ASSET_ID
12

    
13
LEFT JOIN CM_BRANCH F ON A.BRANCH_ID_OLD = F.BRANCH_ID
14
LEFT JOIN CM_DEPARTMENT G ON A.DEP_ID_OLD = G.DEP_ID
15
LEFT JOIN CM_EMPLOYEE H ON A.EMP_ID_OLD = H.EMP_ID
16

    
17
WHERE A.IMP_MASTER_ID = @p_IMP_MASTER_ID
18
GO
19
IF @@ERROR <> 0 SET NOEXEC ON
20
GO
21
PRINT N'Creating [dbo].[ASS_IMPORT_UPDATE_App]'
22
GO
23
CREATE PROCEDURE [dbo].[ASS_IMPORT_UPDATE_App]
24
	@p_IMP_MASTER_ID	VARCHAR(15),
25
  @p_CHECKER_ID VARCHAR(100),
26
  @p_APPROVE_DT VARCHAR(50)
27
AS	
28
	DECLARE @MESSAGE_VALIDATION NVARCHAR(MAX)
29

    
30
	IF(EXISTS(SELECT 1 FROM ASS_IMPORT_UPDATE_MASTER WHERE IMP_MASTER_ID = @p_IMP_MASTER_ID AND AUTH_STATUS = 'A'))
31
	BEGIN
32
		SELECT '-1' Result, N'Phiếu đã được phê duyệt' ErrorDesc 
33
		RETURN '-1'
34
	END	
35

    
36
  IF(EXISTS(SELECT 1 FROM ASS_IMPORT_UPDATE_MASTER WHERE IMP_MASTER_ID = @p_IMP_MASTER_ID AND AUTH_STATUS = 'R'))
37
	BEGIN
38
		SELECT '-1' Result, N'Phiếu đang được trả về' ErrorDesc 
39
		RETURN '-1'
40
	END	
41

    
42

    
43
BEGIN TRANSACTION
44
		UPDATE ASS_IMPORT_UPDATE_MASTER SET AUTH_STATUS = 'A' , CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@p_APPROVE_DT,103)
45
    WHERE IMP_MASTER_ID = @p_IMP_MASTER_ID
46

    
47
    --kiểm tra branch,dep của tài sản hiện tại có giống branch,dep import không
48
    SET @MESSAGE_VALIDATION = (SELECT REPLACE((SELECT 
49
                                    CASE WHEN ROW_NUMBER() OVER (ORDER BY (SELECT 0)) = 1 THEN ''
50
                                    ELSE '|' END 
51
                                    + N'Tài sản ' + C.ASSET_CODE + N' đã bị thay đổi Đơn vị/Phòng ban so với File Import'
52
                              FROM ( SELECT B.ASSET_CODE
53
                                    FROM ASS_IMPORT_UPDATE_DT A
54
                                    LEFT JOIN ASS_MASTER B ON A.ASSET_ID = B.ASSET_ID
55
                                    WHERE (ISNULL(A.BRANCH_ID,'') <> ISNULL(B.BRANCH_ID,'') 
56
                                          OR ISNULL(A.DEP_ID,'') <> ISNULL(B.DEPT_ID,''))
57
                                          AND A.IMP_MASTER_ID = @p_IMP_MASTER_ID) C
58
                              FOR XML PATH (''))
59
                            , '|', '<br />'))    
60

    
61
    IF(@MESSAGE_VALIDATION IS NOT NULL AND @MESSAGE_VALIDATION <> '')
62
    BEGIN
63
        ROLLBACK TRANSACTION
64
    		SELECT '-1' Result, @MESSAGE_VALIDATION ErrorDesc 
65
    		RETURN '-1'
66
    END
67

    
68
    --check branch,dep của tài sản hiện tại có giống với branch,dep của người dùng không
69
    SET @MESSAGE_VALIDATION = (SELECT REPLACE((SELECT 
70
                                    CASE WHEN ROW_NUMBER() OVER (ORDER BY (SELECT 0)) = 1 THEN ''
71
                                    ELSE '|' END 
72
                                    + N'Người dùng ' + C.EMP_NAME + '(' + C.EMP_CODE + ')' + N' không cùng đơn vị/phòng ban với tài sản ' + C.ASSET_CODE
73
                              FROM ( SELECT B.ASSET_CODE,D.EMP_CODE,D.EMP_NAME
74
                                    FROM ASS_IMPORT_UPDATE_DT A
75
                                    LEFT JOIN ASS_MASTER B ON A.ASSET_ID = B.ASSET_ID
76
                                    LEFT JOIN CM_EMPLOYEE D ON A.EMP_ID = D.EMP_ID
77
                                    WHERE (ISNULL(D.BRANCH_ID,'') <> ISNULL(B.BRANCH_ID,'') 
78
                                          OR ISNULL(D.DEP_ID,'') <> ISNULL(B.DEPT_ID,''))
79
                                          AND A.IMP_MASTER_ID = @p_IMP_MASTER_ID) C
80
                              FOR XML PATH (''))
81
                            , '|', '<br />'))     
82

    
83
    IF(@MESSAGE_VALIDATION IS NOT NULL AND @MESSAGE_VALIDATION <> '')
84
    BEGIN
85
        ROLLBACK TRANSACTION
86
    		SELECT '-1' Result, @MESSAGE_VALIDATION ErrorDesc 
87
    		RETURN '-1'
88
    END
89

    
90
    UPDATE B SET B.EMP_ID = A.EMP_ID, B.ASSET_SERIAL_NO = A.ASSET_SERIAL_NO, B.ASSET_DESC = A.ASSET_DESC, B.NOTES = A.NOTES
91
    FROM ASS_IMPORT_UPDATE_DT A
92
    LEFT JOIN ASS_MASTER B ON A.ASSET_ID = B.ASSET_ID
93
    WHERE A.IMP_MASTER_ID = @p_IMP_MASTER_ID
94

    
95
    INSERT INTO PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
96
    VALUES (@p_IMP_MASTER_ID, 'APPROVE', @p_CHECKER_ID, GETDATE(), N'Duyệt phiếu cập nhật tài sản', N'Duyệt phiếu cập nhật tài sản thành công');
97

    
98
		IF @@Error <> 0 GOTO ABORT
99
		
100
COMMIT TRANSACTION
101
SELECT '0' as Result, '' ErrorDesc
102
RETURN '0'
103

    
104
ABORT:
105
BEGIN
106
		ROLLBACK TRANSACTION
107
		SELECT '-1' as Result, '' ErrorDesc
108
		RETURN '-1'
109
End
110
GO
111
IF @@ERROR <> 0 SET NOEXEC ON
112
GO
113
PRINT N'Creating [dbo].[ASS_IMPORT_UPDATE_ById]'
114
GO
115
CREATE PROCEDURE [dbo].[ASS_IMPORT_UPDATE_ById]
116
	@p_IMP_MASTER_ID	VARCHAR(15)
117
AS	
118
SELECT A.* , B.TLFullName AS MAKER_NAME, C.AUTH_STATUS_NAME
119
FROM ASS_IMPORT_UPDATE_MASTER A
120
LEFT JOIN TL_USER B ON A.MAKER_ID = B.TLNANME
121
LEFT JOIN CM_AUTH_STATUS C ON A.AUTH_STATUS = C.AUTH_STATUS
122
WHERE A.IMP_MASTER_ID = @p_IMP_MASTER_ID
123
GO
124
IF @@ERROR <> 0 SET NOEXEC ON
125
GO
126
PRINT N'Creating [dbo].[ASS_IMPORT_UPDATE_Del]'
127
GO
128
CREATE PROCEDURE [dbo].[ASS_IMPORT_UPDATE_Del]
129
	@p_IMP_MASTER_ID	VARCHAR(15)
130
AS	
131
	
132
	IF(EXISTS(SELECT 1 FROM ASS_IMPORT_UPDATE_MASTER WHERE IMP_MASTER_ID = @p_IMP_MASTER_ID AND AUTH_STATUS = 'U'))
133
	BEGIN
134
		SELECT '-1' Result, N'Phiếu đang chờ phê duyệt. Xoá thất bại' ErrorDesc 
135
		RETURN '-1'
136
	END	
137

    
138
  IF(EXISTS(SELECT 1 FROM ASS_IMPORT_UPDATE_MASTER WHERE IMP_MASTER_ID = @p_IMP_MASTER_ID AND AUTH_STATUS = 'A'))
139
	BEGIN
140
		SELECT '-1' Result, N'Phiếu đã được phê duyệt. Xoá thất bại' ErrorDesc 
141
		RETURN '-1'
142
	END	
143

    
144

    
145
BEGIN TRANSACTION
146
		DELETE ASS_IMPORT_UPDATE_MASTER WHERE IMP_MASTER_ID = @p_IMP_MASTER_ID
147
    DELETE ASS_IMPORT_UPDATE_DT WHERE IMP_MASTER_ID = @p_IMP_MASTER_ID
148

    
149
		IF @@Error <> 0 GOTO ABORT
150
		
151
COMMIT TRANSACTION
152
SELECT '0' as Result, '' ErrorDesc
153
RETURN '0'
154

    
155
ABORT:
156
BEGIN
157
		ROLLBACK TRANSACTION
158
		SELECT '-1' as Result, '' ErrorDesc
159
		RETURN '-1'
160
End
161
GO
162
IF @@ERROR <> 0 SET NOEXEC ON
163
GO
164
PRINT N'Creating [dbo].[ASS_IMPORT_UPDATE_Ins]'
165
GO
166
CREATE PROCEDURE [dbo].[ASS_IMPORT_UPDATE_Ins]
167
@p_NOTES NVARCHAR(4000) = NULL,
168
@p_RECORD_STATUS	varchar(1)  = NULL,
169
@p_MAKER_ID VARCHAR(100)  = NULL,
170
@p_CREATE_DT	VARCHAR(50) = NULL,
171
@p_AUTH_STATUS	VARCHAR(50)  = NULL,
172
@p_CHECKER_ID VARCHAR(100)  = NULL,
173
@p_APPROVE_DT	VARCHAR(50) = NULL,
174
@p_JSON_DATA NVARCHAR(MAX) = NULL
175
AS
176

    
177
  DECLARE 
178
          @ASSET_ID VARCHAR(15),
179
          @BRANCH_ID VARCHAR(15),
180
          @DEP_ID VARCHAR(15),
181
          @EMP_ID VARCHAR(15),
182
          @NOTES NVARCHAR(4000),
183
          @ASSET_DESC NVARCHAR(4000),
184
          @ASSET_SERIAL_NO NVARCHAR(4000),
185
          @ASSET_ID_OLD VARCHAR(15),
186
          @BRANCH_ID_OLD VARCHAR(15),
187
          @DEP_ID_OLD VARCHAR(15),
188
          @EMP_ID_OLD VARCHAR(15),
189
          @NOTES_OLD NVARCHAR(4000),
190
          @ASSET_DESC_OLD NVARCHAR(4000),
191
          @ASSET_SERIAL_NO_OLD NVARCHAR(4000)
192
  
193
  DECLARE cur CURSOR FAST_FORWARD READ_ONLY LOCAL FOR
194
  SELECT *
195
  FROM OPENJSON(@P_JSON_DATA)
196
  WITH 
197
  (
198
  ASSET_ID	VARCHAR(15) '$.ASSET_ID',
199
  BRANCH_ID	VARCHAR(15) '$.BRANCH_ID', 
200
  DEP_ID VARCHAR(15) '$.DEP_ID',
201
  EMP_ID VARCHAR(15) '$.EMP_ID',
202
  NOTES NVARCHAR(4000) '$.NOTES', 
203
  ASSET_DESC NVARCHAR(4000) '$.ASSET_DESC', 
204
  ASSET_SERIAL_NO NVARCHAR(4000) '$.ASSET_SERIAL_NO',  
205
  BRANCH_ID_OLD	VARCHAR(15) '$.BRANCH_ID_OLD', 
206
  DEP_ID_OLD VARCHAR(15) '$.DEP_ID_OLD',
207
  EMP_ID_OLD VARCHAR(15) '$.EMP_ID_OLD',
208
  NOTES_OLD NVARCHAR(4000) '$.NOTES_OLD', 
209
  ASSET_DESC_OLD NVARCHAR(4000) '$.ASSET_DESC_OLD', 
210
  ASSET_SERIAL_NO_OLD NVARCHAR(4000) '$.ASSET_SERIAL_NO_OLD'
211
  )	
212
  
213
  OPEN cur
214
  
215

    
216
BEGIN TRANSACTION
217

    
218
    DECLARE @p_IMP_MASTER_ID VARCHAR(15)
219
		EXEC SYS_CodeMasters_Gen 'ASS_IMPORT_UPDATE_MASTER', @p_IMP_MASTER_ID out
220
		IF @p_IMP_MASTER_ID ='' OR @p_IMP_MASTER_ID IS NULL GOTO ABORT
221

    
222
    INSERT INTO ASS_IMPORT_UPDATE_MASTER (IMP_MASTER_ID, NOTES, RECORD_STATUS, AUTH_STATUS, MAKER_ID, CREATE_DT, CHECKER_ID, APPROVE_DT)
223
    VALUES (@p_IMP_MASTER_ID, @p_NOTES, '1', 'E', @p_MAKER_ID, GETDATE(), NULL, NULL);
224
    
225
    
226
    FETCH NEXT FROM cur INTO @ASSET_ID,@BRANCH_ID,@DEP_ID,@EMP_ID,@NOTES,@ASSET_DESC,@ASSET_SERIAL_NO,@BRANCH_ID_OLD,@DEP_ID_OLD,@EMP_ID_OLD,@NOTES_OLD,@ASSET_DESC_OLD,@ASSET_SERIAL_NO_OLD
227
    
228
    WHILE @@FETCH_STATUS = 0 BEGIN
229
    
230
      DECLARE @l_IMP_DT_ID VARCHAR(15)
231
  		EXEC SYS_CodeMasters_Gen 'ASS_IMPORT_UPDATE_DT', @l_IMP_DT_ID out
232
  		IF @l_IMP_DT_ID='' OR @l_IMP_DT_ID IS NULL GOTO ABORT
233
  
234
      INSERT INTO ASS_IMPORT_UPDATE_DT (IMP_DT_ID, IMP_MASTER_ID, ASSET_ID, BRANCH_ID, DEP_ID, EMP_ID, NOTES, ASSET_DESC, ASSET_SERIAL_NO, BRANCH_ID_OLD, DEP_ID_OLD, EMP_ID_OLD, NOTES_OLD, ASSET_DESC_OLD, ASSET_SERIAL_NO_OLD)
235
      VALUES (@l_IMP_DT_ID, @p_IMP_MASTER_ID, @ASSET_ID, @BRANCH_ID, @DEP_ID, @EMP_ID, @NOTES, @ASSET_DESC, @ASSET_SERIAL_NO,  @BRANCH_ID_OLD, @DEP_ID_OLD, @EMP_ID_OLD, @NOTES_OLD, @ASSET_DESC_OLD, @ASSET_SERIAL_NO_OLD);
236
    
237
    FETCH NEXT FROM cur INTO @ASSET_ID,@BRANCH_ID,@DEP_ID,@EMP_ID,@NOTES,@ASSET_DESC,@ASSET_SERIAL_NO,@BRANCH_ID_OLD,@DEP_ID_OLD,@EMP_ID_OLD,@NOTES_OLD,@ASSET_DESC_OLD,@ASSET_SERIAL_NO_OLD
238
    
239
    END
240
    
241
    CLOSE cur
242
    DEALLOCATE cur		
243
		
244

    
245

    
246
    INSERT INTO PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
247
    VALUES (@p_IMP_MASTER_ID, 'CREATE', @p_MAKER_ID, GETDATE(), N'Nhân viên thêm mới', N'Thêm mới import tài sản thành công');
248

    
249

    
250
		IF @@ERROR <> 0 GOTO ABORT
251

    
252
COMMIT TRANSACTION
253
SELECT '0' as Result,@p_IMP_MASTER_ID ID, N'Thêm mới thành công' ErrorDesc
254
RETURN '0'
255
ABORT:
256
BEGIN
257
		ROLLBACK TRANSACTION
258
		SELECT '-1' AS RESULT
259
		RETURN '-1'
260
End
261
GO
262
IF @@ERROR <> 0 SET NOEXEC ON
263
GO
264
PRINT N'Creating [dbo].[ASS_IMPORT_UPDATE_Search]'
265
GO
266
CREATE PROCEDURE [dbo].[ASS_IMPORT_UPDATE_Search]
267
		@p_IMP_MASTER_ID	VARCHAR(15)  = NULL,
268
		@p_NOTES	NVARCHAR(4000)  = NULL,
269
		@p_MAKER_NAME	NVARCHAR(1000)  = NULL,
270
		@p_TOP INT		= NULL
271
AS 
272
BEGIN -- PAGING
273

    
274
	IF @p_TOP IS NULL OR @p_TOP  = ''
275
	BEGIN
276
	-- PAGING BEGIN
277
		SELECT A.*,B.TLFullName AS MAKER_NAME, C.AUTH_STATUS_NAME
278
		-- SELECT END
279
		FROM ASS_IMPORT_UPDATE_MASTER A
280
    LEFT JOIN TL_USER B ON A.MAKER_ID = B.TLNANME
281
    LEFT JOIN CM_AUTH_STATUS C ON A.AUTH_STATUS = C.AUTH_STATUS
282
    WHERE 1=1
283
    AND (@p_IMP_MASTER_ID = A.IMP_MASTER_ID OR @p_IMP_MASTER_ID IS NULL OR @p_IMP_MASTER_ID = '')
284
    AND (B.TLFullName  COLLATE Latin1_general_CI_AI LIKE N'%' + @p_MAKER_NAME + N'%' COLLATE Latin1_general_CI_AI OR @p_MAKER_NAME IS NULL OR @p_MAKER_NAME = '')
285
    AND (A.NOTES  COLLATE Latin1_general_CI_AI LIKE N'%' + @p_NOTES + N'%' COLLATE Latin1_general_CI_AI OR @p_NOTES IS NULL OR @p_NOTES = '')
286
		ORDER BY A.CREATE_DT DESC
287
	-- PAGING END
288
	END
289
	ELSE
290
	BEGIN
291
	-- PAGING BEGIN
292
		SELECT TOP (@p_TOP)	A.*, B.TLFullName AS MAKER_NAME, C.AUTH_STATUS_NAME
293
		-- SELECT END
294
		FROM ASS_IMPORT_UPDATE_MASTER A
295
    LEFT JOIN TL_USER B ON A.MAKER_ID = B.TLNANME
296
    LEFT JOIN CM_AUTH_STATUS C ON A.AUTH_STATUS = C.AUTH_STATUS
297
    WHERE 1=1
298
    AND (@p_IMP_MASTER_ID = A.IMP_MASTER_ID OR @p_IMP_MASTER_ID IS NULL OR @p_IMP_MASTER_ID = '')
299
    AND (B.TLFullName  COLLATE Latin1_general_CI_AI LIKE N'%' + @p_MAKER_NAME + N'%' COLLATE Latin1_general_CI_AI OR @p_MAKER_NAME IS NULL OR @p_MAKER_NAME = '')
300
    AND (A.NOTES  COLLATE Latin1_general_CI_AI LIKE N'%' + @p_NOTES + N'%' COLLATE Latin1_general_CI_AI OR @p_NOTES IS NULL OR @p_NOTES = '')
301
		ORDER BY A.CREATE_DT DESC
302
	-- PAGING END
303
	END
304
END -- PAGING
305
GO
306
IF @@ERROR <> 0 SET NOEXEC ON
307
GO
308
PRINT N'Creating [dbo].[ASS_IMPORT_UPDATE_SendAppr]'
309
GO
310
CREATE PROCEDURE [dbo].[ASS_IMPORT_UPDATE_SendAppr]
311
	@p_IMP_MASTER_ID	VARCHAR(15)
312
AS	
313
	
314
	IF(EXISTS(SELECT 1 FROM ASS_IMPORT_UPDATE_MASTER WHERE IMP_MASTER_ID = @p_IMP_MASTER_ID AND AUTH_STATUS = 'U'))
315
	BEGIN
316
		SELECT '-1' Result, N'Phiếu đã được gửi phê duyệt' ErrorDesc 
317
		RETURN '-1'
318
	END	
319

    
320
  IF(EXISTS(SELECT 1 FROM ASS_IMPORT_UPDATE_MASTER WHERE IMP_MASTER_ID = @p_IMP_MASTER_ID AND AUTH_STATUS = 'A'))
321
	BEGIN
322
		SELECT '-1' Result, N'Phiếu đã được phê duyệt' ErrorDesc 
323
		RETURN '-1'
324
	END	
325

    
326

    
327
BEGIN TRANSACTION
328
		UPDATE ASS_IMPORT_UPDATE_MASTER SET AUTH_STATUS = 'U' WHERE IMP_MASTER_ID = @p_IMP_MASTER_ID
329

    
330
		IF @@Error <> 0 GOTO ABORT
331
		
332
COMMIT TRANSACTION
333
SELECT '0' as Result, N'Gửi phê duyệt thành công' ErrorDesc
334
RETURN '0'
335

    
336
ABORT:
337
BEGIN
338
		ROLLBACK TRANSACTION
339
		SELECT '-1' as Result, '' ErrorDesc
340
		RETURN '-1'
341
End
342
GO
343
IF @@ERROR <> 0 SET NOEXEC ON
344
GO
345
PRINT N'Creating [dbo].[ASS_IMPORT_UPDATE_Upd]'
346
GO
347
CREATE PROCEDURE [dbo].[ASS_IMPORT_UPDATE_Upd]
348
@p_IMP_MASTER_ID VARCHAR(15) = NULL,
349
@p_NOTES NVARCHAR(4000) = NULL,
350
@p_RECORD_STATUS	varchar(1)  = NULL,
351
@p_MAKER_ID VARCHAR(100)  = NULL,
352
@p_CREATE_DT	VARCHAR(50) = NULL,
353
@p_AUTH_STATUS	VARCHAR(50)  = NULL,
354
@p_CHECKER_ID VARCHAR(100)  = NULL,
355
@p_APPROVE_DT	VARCHAR(50) = NULL,
356
@p_JSON_DATA NVARCHAR(MAX) = NULL
357
AS
358

    
359
  DECLARE 
360
          @ASSET_ID VARCHAR(15),
361
          @BRANCH_ID VARCHAR(15),
362
          @DEP_ID VARCHAR(15),
363
          @EMP_ID VARCHAR(15),
364
          @NOTES NVARCHAR(4000),
365
          @ASSET_DESC NVARCHAR(4000),
366
          @ASSET_SERIAL_NO NVARCHAR(4000),
367
          @ASSET_ID_OLD VARCHAR(15),
368
          @BRANCH_ID_OLD VARCHAR(15),
369
          @DEP_ID_OLD VARCHAR(15),
370
          @EMP_ID_OLD VARCHAR(15),
371
          @NOTES_OLD NVARCHAR(4000),
372
          @ASSET_DESC_OLD NVARCHAR(4000),
373
          @ASSET_SERIAL_NO_OLD NVARCHAR(4000)
374
  
375
  DECLARE cur CURSOR FAST_FORWARD READ_ONLY LOCAL FOR
376
  SELECT *
377
  FROM OPENJSON(@P_JSON_DATA)
378
  WITH 
379
  (
380
  ASSET_ID	VARCHAR(15) '$.ASSET_ID',
381
  BRANCH_ID	VARCHAR(15) '$.BRANCH_ID', 
382
  DEP_ID VARCHAR(15) '$.DEP_ID',
383
  EMP_ID VARCHAR(15) '$.EMP_ID',
384
  NOTES NVARCHAR(4000) '$.NOTES', 
385
  ASSET_DESC NVARCHAR(4000) '$.ASSET_DESC', 
386
  ASSET_SERIAL_NO NVARCHAR(4000) '$.ASSET_SERIAL_NO',  
387
  BRANCH_ID_OLD	VARCHAR(15) '$.BRANCH_ID_OLD', 
388
  DEP_ID_OLD VARCHAR(15) '$.DEP_ID_OLD',
389
  EMP_ID_OLD VARCHAR(15) '$.EMP_ID_OLD',
390
  NOTES_OLD NVARCHAR(4000) '$.NOTES_OLD', 
391
  ASSET_DESC_OLD NVARCHAR(4000) '$.ASSET_DESC_OLD', 
392
  ASSET_SERIAL_NO_OLD NVARCHAR(4000) '$.ASSET_SERIAL_NO_OLD'
393
  )	
394
  
395
  OPEN cur
396
  
397

    
398
BEGIN TRANSACTION
399

    
400
    UPDATE ASS_IMPORT_UPDATE_MASTER
401
    SET NOTES = @p_NOTES
402
    WHERE IMP_MASTER_ID = @p_IMP_MASTER_ID
403
    
404
    
405
    FETCH NEXT FROM cur INTO @ASSET_ID,@BRANCH_ID,@DEP_ID,@EMP_ID,@NOTES,@ASSET_DESC,@ASSET_SERIAL_NO,@BRANCH_ID_OLD,@DEP_ID_OLD,@EMP_ID_OLD,@NOTES_OLD,@ASSET_DESC_OLD,@ASSET_SERIAL_NO_OLD
406
    
407
    WHILE @@FETCH_STATUS = 0 BEGIN
408
    
409
      DECLARE @l_IMP_DT_ID VARCHAR(15)
410
  		EXEC SYS_CodeMasters_Gen 'ASS_IMPORT_UPDATE_DT', @l_IMP_DT_ID out
411
  		IF @l_IMP_DT_ID='' OR @l_IMP_DT_ID IS NULL GOTO ABORT
412
  
413
      INSERT INTO ASS_IMPORT_UPDATE_DT (IMP_DT_ID, IMP_MASTER_ID, ASSET_ID, BRANCH_ID, DEP_ID, EMP_ID, NOTES, ASSET_DESC, ASSET_SERIAL_NO, BRANCH_ID_OLD, DEP_ID_OLD, EMP_ID_OLD, NOTES_OLD, ASSET_DESC_OLD, ASSET_SERIAL_NO_OLD)
414
      VALUES (@l_IMP_DT_ID, @p_IMP_MASTER_ID, @ASSET_ID, @BRANCH_ID, @DEP_ID, @EMP_ID, @NOTES, @ASSET_DESC, @ASSET_SERIAL_NO,  @BRANCH_ID_OLD, @DEP_ID_OLD, @EMP_ID_OLD, @NOTES_OLD, @ASSET_DESC_OLD, @ASSET_SERIAL_NO_OLD);
415
    
416
    FETCH NEXT FROM cur INTO @ASSET_ID,@BRANCH_ID,@DEP_ID,@EMP_ID,@NOTES,@ASSET_DESC,@ASSET_SERIAL_NO,@BRANCH_ID_OLD,@DEP_ID_OLD,@EMP_ID_OLD,@NOTES_OLD,@ASSET_DESC_OLD,@ASSET_SERIAL_NO_OLD
417
    
418
    END
419
    
420
    CLOSE cur
421
    DEALLOCATE cur			
422
		
423

    
424

    
425
    INSERT INTO PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
426
    VALUES (@p_IMP_MASTER_ID, 'UPDATE', @p_MAKER_ID, GETDATE(), N'Nhân viên cập nhật', N'Cập nhật import tài sản thành công');
427

    
428

    
429
		IF @@ERROR <> 0 GOTO ABORT
430

    
431
COMMIT TRANSACTION
432
SELECT '0' as Result,@p_IMP_MASTER_ID ID, N'Cập nhật thành công' ErrorDesc
433
RETURN '0'
434
ABORT:
435
BEGIN
436
		ROLLBACK TRANSACTION
437
		SELECT '-1' AS RESULT
438
		RETURN '-1'
439
End
440
GO
441
IF @@ERROR <> 0 SET NOEXEC ON
442
GO
443
PRINT N'Creating [dbo].[CM_DEPARTMENT_GET_BLOCK_CENTER]'
444
GO
445
CREATE PROCEDURE [dbo].[CM_DEPARTMENT_GET_BLOCK_CENTER]
446
	@p_DEP_ID_INPUT VARCHAR(15),
447
	@p_BLOCK_ID VARCHAR(15)  OUT,
448
  @p_CENTER_ID VARCHAR(15)  OUT,
449
  @p_DEP_ID VARCHAR(15)  OUT
450
AS
451

    
452
SELECT 
453
@p_BLOCK_ID = (CASE WHEN DP.TYPE = 'K' THEN DP.DEP_ID ELSE K.DEP_ID END),
454
@p_CENTER_ID = (CASE WHEN DP.TYPE = 'TT' THEN DP.DEP_ID ELSE TT.DEP_ID END),
455
@p_DEP_ID = (CASE WHEN DP.TYPE = 'PB' THEN DP.DEP_ID ELSE NULL END)
456

    
457
FROM CM_DEPARTMENT DP
458
LEFT JOIN CM_DEPARTMENT TT ON DP.FATHER_ID = TT.DEP_ID --TRUNG TÂM
459
LEFT JOIN CM_DEPARTMENT K ON DP.KHOI_ID = K.DEP_ID --KHỐI
460
WHERE DP.DEP_ID = @p_DEP_ID_INPUT
461
GO
462
IF @@ERROR <> 0 SET NOEXEC ON
463
GO
464
PRINT N'Creating [dbo].[ASS_IMPORT_UPDATE_Import]'
465
GO
466
CREATE PROCEDURE [dbo].[ASS_IMPORT_UPDATE_Import] 	
467
	@P_JSON_DATA NVARCHAR(MAX)
468
AS
469
BEGIN
470

    
471
	DECLARE @TMPASSETCODE TABLE(
472
		ASSET_CODE		VARCHAR(100),
473
		BRANCH_CODE		VARCHAR(100),
474
		DEP_CODE		VARCHAR(100),
475
    EMP_CODE		VARCHAR(100),
476
    NOTES NVARCHAR(4000),
477
    ASSET_DESC NVARCHAR(4000),
478
    ASSET_SERIAL_NO NVARCHAR(4000)
479
    
480
	)
481

    
482
	INSERT INTO @TMPASSETCODE
483
  SELECT *
484
  FROM OPENJSON(@P_JSON_DATA)
485
  WITH 
486
  (
487
  ASSET_CODE	VARCHAR(100) '$.ASSET_CODE',
488
  BRANCH_CODE	VARCHAR(1000) '$.BRANCH_CODE', 
489
  DEP_CODE VARCHAR(100) '$.DEP_CODE',
490
  EMP_CODE VARCHAR(100) '$.EMP_CODE',
491
  NOTES NVARCHAR(4000) '$.NOTES', 
492
  ASSET_DESC NVARCHAR(4000) '$.ASSET_DESC', 
493
  ASSET_SERIAL_NO NVARCHAR(4000) '$.ASSET_SERIAL_NO'
494
  )	
495

    
496
	DECLARE @ERROR_MESSAGE NVARCHAR(MAX)
497

    
498
  SELECT @ERROR_MESSAGE = STUFF( (
499
  SELECT ',' + A.ROW FROM (
500
  SELECT CONVERT(VARCHAR(10),ROW_NUMBER() OVER (ORDER BY (SELECT 1))) AS ROW, T.ASSET_CODE
501
  FROM @TMPASSETCODE T ) A
502
  WHERE A.ASSET_CODE IS NULL
503
  FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '')
504

    
505
	IF(LEN(@ERROR_MESSAGE) > 0)
506
	BEGIN
507
		SET @ERROR_MESSAGE = N'Dòng: ' + @ERROR_MESSAGE + N' mã tài sản không được để trống'
508
		EXEC SP_SETERRORMESSAGE @ERROR_MESSAGE
509
		RETURN '-1'
510
	END
511

    
512
  SELECT @ERROR_MESSAGE = STUFF( (
513
  SELECT ',' + A.ROW FROM (
514
  SELECT CONVERT(VARCHAR(10),ROW_NUMBER() OVER (ORDER BY (SELECT 1))) AS ROW, T.BRANCH_CODE
515
  FROM @TMPASSETCODE T 
516
  LEFT JOIN ASS_MASTER B ON T.ASSET_CODE = B.ASSET_CODE
517
  WHERE B.BRANCH_ID IS NOT NULL AND B.BRANCH_ID <> '' ) A
518
  WHERE A.BRANCH_CODE IS NULL 
519
  FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '')
520

    
521
	IF(LEN(@ERROR_MESSAGE) > 0)
522
	BEGIN
523
		SET @ERROR_MESSAGE = N'Dòng: ' + @ERROR_MESSAGE + N' mã đơn vị không được để trống'
524
		EXEC SP_SETERRORMESSAGE @ERROR_MESSAGE
525
		RETURN '-1'
526
	END
527

    
528
  SELECT @ERROR_MESSAGE = STUFF( (
529
  SELECT T.EMP_CODE
530
  FROM @TMPASSETCODE T 
531
  LEFT JOIN CM_EMPLOYEE E ON T.EMP_CODE = E.EMP_CODE
532
  WHERE E.EMP_ID IS NULL AND T.EMP_CODE IS NOT NULL AND T.EMP_CODE <> ''
533
  FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '')
534

    
535
	IF(LEN(@ERROR_MESSAGE) > 0)
536
	BEGIN
537
		SET @ERROR_MESSAGE = N'Người dùng không tồn tại trên hệ thống: ' + @ERROR_MESSAGE
538
		EXEC SP_SETERRORMESSAGE @ERROR_MESSAGE
539
		RETURN '-1'
540
	END
541

    
542
  SELECT @ERROR_MESSAGE = STUFF( (
543
  SELECT N'Người dùng '  + A.EMP_CODE + N' và tài sản ' + A.ASSET_CODE + N' không cùng Đơn vị/Phòng ban với nhau </br>'
544
  FROM @TMPASSETCODE A
545
  LEFT JOIN ASS_MASTER B ON A.ASSET_CODE = B.ASSET_CODE
546
  LEFT JOIN CM_EMPLOYEE E ON A.EMP_CODE = E.EMP_CODE
547
  WHERE A.EMP_CODE IS NOT NULL AND A.EMP_CODE <> '' AND (ISNULL(E.BRANCH_ID,'') <> ISNULL(B.BRANCH_ID,'') OR ISNULL(E.DEP_ID,'') <> ISNULL(B.DEPT_ID,''))
548
  FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '')
549

    
550
	IF(LEN(@ERROR_MESSAGE) > 0)
551
	BEGIN
552
		SET @ERROR_MESSAGE = @ERROR_MESSAGE
553
		EXEC SP_SETERRORMESSAGE @ERROR_MESSAGE
554
		RETURN '-1'
555
	END
556

    
557

    
558

    
559
	SELECT @ERROR_MESSAGE = STUFF( (
560
	SELECT ',' + T.ASSET_CODE 
561
  FROM @TMPASSETCODE T 
562
	LEFT JOIN ASS_MASTER B ON T.ASSET_CODE = B.ASSET_CODE 
563
  WHERE B.ASSET_ID IS NULL
564
  FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '')
565

    
566
	IF(LEN(@ERROR_MESSAGE) > 0)
567
	BEGIN
568
		SET @ERROR_MESSAGE = N'Mã tài sản không tồn tại trong hệ thống: ' + @ERROR_MESSAGE
569
		EXEC SP_SETERRORMESSAGE @ERROR_MESSAGE
570
		RETURN '-1'
571
	END
572

    
573

    
574
	SELECT @ERROR_MESSAGE = STUFF( (
575
	SELECT ',' + T.ASSET_CODE FROM @TMPASSETCODE T 
576
  GROUP BY T.ASSET_CODE
577
  HAVING COUNT(*) > 1
578
  FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '')
579

    
580
	IF(LEN(@ERROR_MESSAGE) > 0)
581
	BEGIN
582
		SET @ERROR_MESSAGE = N'Mã tài sản bị trùng: ' + @ERROR_MESSAGE
583
		EXEC SP_SETERRORMESSAGE @ERROR_MESSAGE
584
		RETURN '-1'
585
	END
586

    
587

    
588
	SELECT @ERROR_MESSAGE = STUFF( (
589
	SELECT ',' + T.BRANCH_CODE FROM @TMPASSETCODE T 
590
	WHERE T.BRANCH_CODE IS NOT NULL AND T.BRANCH_CODE <> '' 
591
  AND NOT EXISTS(SELECT 1 FROM CM_BRANCH B WHERE B.BRANCH_CODE = T.BRANCH_CODE AND B.RECORD_STATUS = '1') 
592
  FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '')
593

    
594
	IF(LEN(@ERROR_MESSAGE) > 0)
595
	BEGIN
596
		SET @ERROR_MESSAGE = N'Mã đơn vị không tồn tại trong hệ thống: ' + @ERROR_MESSAGE
597
    EXEC SP_SETERRORMESSAGE @ERROR_MESSAGE
598
		RETURN '-1'
599
	END
600

    
601

    
602
	SELECT @ERROR_MESSAGE = STUFF( (
603
	  SELECT ',' + A.ASSET_CODE
604
    FROM @TMPASSETCODE A
605
    LEFT JOIN ASS_MASTER B ON A.ASSET_CODE = B.ASSET_CODE
606
    LEFT JOIN CM_BRANCH C ON B.BRANCH_ID = C.BRANCH_ID
607
    LEFT JOIN CM_DEPARTMENT D ON B.DEPT_ID = D.DEP_ID
608
    WHERE (ISNULL(C.BRANCH_CODE,'') <> ISNULL(A.BRANCH_CODE,'')
609
          OR ISNULL(D.DEP_CODE,'') <> ISNULL(A.DEP_CODE,'')) AND A.BRANCH_CODE IS NOT NULL AND A.BRANCH_CODE <> ''
610
    FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '')
611

    
612
	IF(LEN(@ERROR_MESSAGE) > 0)
613
	BEGIN
614
		SET @ERROR_MESSAGE = N'Những tài sản có Đơn vị/Phòng ban không khớp với tài sản trên hệ thống: ' + @ERROR_MESSAGE
615
    EXEC SP_SETERRORMESSAGE @ERROR_MESSAGE
616
		RETURN '-1'
617
	END	
618

    
619
  
620
  SELECT B.ASSET_ID,B.ASSET_CODE,B.ASSET_NAME,
621
          G.BRANCH_ID,G.BRANCH_CODE,G.BRANCH_NAME,
622
          H.DEP_ID,H.DEP_CODE,H.DEP_NAME,
623
          E.EMP_ID,E.EMP_CODE,E.EMP_NAME,
624
          A.NOTES,A.ASSET_DESC,A.ASSET_SERIAL_NO,
625
          
626
          B.ASSET_ID AS ASSET_ID_OLD,B.ASSET_CODE AS ASSET_CODE_OLD,B.ASSET_NAME AS ASSET_NAME_OLD,
627
          C.BRANCH_ID AS BRANCH_ID_OLD,C.BRANCH_CODE AS BRANCH_CODE_OLD,C.BRANCH_NAME AS BRANCH_NAME_OLD,
628
          D.DEP_ID AS DEP_ID_OLD,D.DEP_CODE AS DEP_CODE_OLD,D.DEP_NAME AS DEP_NAME_OLD,
629
          F.EMP_ID AS EMP_ID_OLD,F.EMP_CODE AS EMP_CODE_OLD,F.EMP_NAME AS EMP_NAME_OLD,
630
          B.NOTES AS NOTES_OLD,B.ASSET_DESC AS ASSET_DESC_OLD,B.ASSET_SERIAL_NO AS ASSET_SERIAL_NO_OLD
631
        
632
        
633
  FROM @TMPASSETCODE A
634
  LEFT JOIN ASS_MASTER B ON A.ASSET_CODE = B.ASSET_CODE
635

    
636
  LEFT JOIN CM_BRANCH C ON B.BRANCH_ID = C.BRANCH_ID
637
  LEFT JOIN CM_DEPARTMENT D ON B.DEPT_ID = D.DEP_ID
638
  LEFT JOIN CM_EMPLOYEE F ON B.EMP_ID = F.EMP_ID
639

    
640

    
641
  LEFT JOIN CM_BRANCH G ON A.BRANCH_CODE = G.BRANCH_CODE
642
  LEFT JOIN CM_DEPARTMENT H ON A.DEP_CODE = H.DEP_CODE
643
  LEFT JOIN CM_EMPLOYEE E ON A.EMP_CODE = E.EMP_CODE
644
  
645
	
646
END
647
GO
648
IF @@ERROR <> 0 SET NOEXEC ON
649
GO
650
PRINT N'Creating [dbo].[ASS_COST_ALLOCATION_Import]'
651
GO
652
CREATE PROCEDURE [dbo].[ASS_COST_ALLOCATION_Import]
653
@p_XmlData XML = NULL
654

    
655
AS
656
DECLARE 
657
@BRANCH_CODE VARCHAR(25),
658
@DEP_CODE VARCHAR(25),
659
@COST_AMOUNT DECIMAL(18,2),
660
@COST_MONTH INT,
661
@COST_RATE DECIMAL(18,2)
662
	
663

    
664
DECLARE @TableCost  TABLE (
665
BRANCH_ID   VARCHAR(25),
666
DEPT_ID     VARCHAR(25),
667
COST_AMOUNT VARCHAR(25),
668
COST_RATE   VARCHAR(25),
669
COST_MONTH  VARCHAR(25)
670
)
671

    
672
  Declare @hdoc INT
673
	Exec sp_xml_preparedocument @hdoc Output,@p_XmlData
674

    
675
 SELECT T.BRANCH_CODE
676
       ,T.DEP_CODE
677
       ,T.COST_AMOUNT
678
       ,T.COST_MONTH
679
       ,T.COST_RATE,
680
       cb.BRANCH_ID,
681
       cb.BRANCH_NAME,
682
       cd.DEP_ID,
683
       cd.DEP_NAME FROM 
684
  (
685
	SELECT BRANCH_CODE,DEP_CODE,COST_AMOUNT,COST_MONTH,COST_RATE
686
	FROM OPENXML(@hdoc,'/Root/XmlData',2)
687
	WITH 
688
	(
689
		BRANCH_CODE varchar(15),
690
		DEP_CODE	VARCHAR(15),
691
		COST_AMOUNT DECIMAL(18,2),
692
    COST_MONTH INT,
693
		COST_RATE DECIMAL(18,2)		
694
	)
695

    
696
) T
697
LEFT JOIN CM_BRANCH cb ON cb.BRANCH_CODE=T.BRANCH_CODE
698
LEFT JOIN CM_DEPARTMENT cd ON cd.DEP_CODE=T.DEP_CODE