Project

General

Profile

upd_emp_sync_1.txt

Luc Tran Van, 04/20/2023 02:55 PM

 
1

    
2
ALTER TRIGGER dbo.TRIG_CM_EMPLOYEE_SYNC_Ins
3
	ON dbo.CM_EMPLOYEE_SYNC
4
	AFTER INSERT
5
AS 
6
BEGIN
7
  --STORE ĐỒNG BỘ NHÂN VIÊN VÀ ĐIỀU CHUYỂN TÀI SẢN NHÂN SỰ
8
  --29/09/22
9
	SET NOCOUNT ON;
10
          IF (EXISTS(SELECT TOP 1 MaNS FROM INSERTED)) 
11
          BEGIN  
12
          
13
              DECLARE @MaDV_Cu_SYNC VARCHAR(500) = (SELECT TOP 1 MaDVCu FROM INSERTED)
14
              DECLARE @MaDV_Moi_SYNC VARCHAR(500) = (SELECT TOP 1 MaDVMoi FROM INSERTED) 
15

    
16
              --UPDATE MÃ MỚI DO KT UPDATE
17
              IF(@MaDV_Cu_SYNC = '0100')
18
              BEGIN
19
                  SET @MaDV_Cu_SYNC = '0600'
20
              END
21

    
22
              IF(@MaDV_Cu_SYNC = '0101')
23
              BEGIN
24
                  SET @MaDV_Cu_SYNC = '0601'
25
              END
26

    
27
              IF(@MaDV_Moi_SYNC = '0100')
28
              BEGIN
29
                  SET @MaDV_Moi_SYNC = '0600'
30
              END
31

    
32
              IF(@MaDV_Moi_SYNC = '0101')
33
              BEGIN
34
                  SET @MaDV_Moi_SYNC = '0601'
35
              END
36
                
37
              --MAP DATA HR VỚI KT
38
              IF(EXISTS(SELECT 1 FROM CM_BRANCH_DEP_MAP WHERE HR_ID = @MaDV_Cu_SYNC))
39
              BEGIN
40
                  SET @MaDV_Cu_SYNC = (SELECT TOP 1 KT_ID FROM CM_BRANCH_DEP_MAP WHERE HR_ID = @MaDV_Cu_SYNC)
41
              END
42
              IF(EXISTS(SELECT 1 FROM CM_BRANCH_DEP_MAP WHERE HR_ID = @MaDV_Moi_SYNC))
43
              BEGIN
44
                  SET @MaDV_Moi_SYNC = (SELECT TOP 1 KT_ID FROM CM_BRANCH_DEP_MAP WHERE HR_ID = @MaDV_Moi_SYNC)
45
              END
46
              DECLARE @MACD_CU_SYNC VARCHAR(500) = (SELECT TOP 1 MaCDCu FROM INSERTED)
47
              DECLARE @MACD_MOI_SYNC VARCHAR(500) = (SELECT TOP 1 MaCDMoi FROM INSERTED)
48
    
49
            --START: PARAM INSERT NHÂN VIÊN MỚI
50
              DECLARE @l_EMP_ID VARCHAR(500)
51
              DECLARE @p_EMP_CODE	varchar(500)  = (SELECT TOP 1 MaNS FROM INSERTED)
52
              DECLARE @p_EMP_NAME	nvarchar(500)  = (SELECT TOP 1 HoTen FROM INSERTED)
53
      
54
              DECLARE @p_BRANCH_ID	varchar(15) = NULL 
55
              DECLARE @p_DEP_ID	varchar(15) = NULL             
56
              
57
              DECLARE @p_POS_CODE VARCHAR(50) = NULL
58
              DECLARE @p_POS_NAME NVARCHAR(MAX) = NULL             
59
      
60
              DECLARE @p_NOTES	nvarchar(1000)  = N'ĐỒNG BỘ'
61
              DECLARE @p_RECORD_STATUS	varchar(1)  = '1'
62
              DECLARE @p_AUTH_STATUS	varchar(1)  = 'A'
63
              DECLARE @p_MAKER_ID	varchar(15)  = 'ADMIN'
64
              DECLARE @p_CREATE_DT	VARCHAR(50) = GETDATE()
65
              DECLARE @p_CHECKER_ID	varchar(15)  = 'ADMIN'
66
              DECLARE @p_APPROVE_DT	VARCHAR(50) = GETDATE()
67
            --END: PARAM INSERT NHÂN VIÊN MỚI
68
    
69
            --START: PARAM INSERT CM_EMPLOYEE_TRANSFER_LOG
70
              DECLARE @I_EMP_ID VARCHAR(20) = (SELECT TOP 1 ce.EMP_ID FROM CM_EMPLOYEE ce WHERE ce.EMP_CODE = (SELECT MaNS FROM INSERTED))
71
              DECLARE @I_STATUS VARCHAR(5) 
72
    
73
              DECLARE @C_Ma_DV_Cu VARCHAR(500) = NULL  --MÃ ĐV CŨ ĐỂ CHECK IF
74
              DECLARE @C_Ma_DV_Moi VARCHAR(500) = NULL --MÃ DV MỚI ĐỂ CHECK IF
75
              DECLARE @C_Ma_PB_Cu VARCHAR(500) = NULL  --MÃ PB CŨ ĐỂ CHECK IF
76
              DECLARE @C_Ma_PB_Moi VARCHAR(500) = NULL --MÃ PB MỚI ĐỂ CHECK IF
77
            --END: PARAM INSERT CM_EMPLOYEE_TRANSFER_LOG
78

    
79
              DECLARE @TLNAME VARCHAR(200) = NULL
80

    
81
              DECLARE @BLOCK_ID_OLD VARCHAR(15) = NULL --Mã khối cũ check điều chuyển nhân sự
82
              DECLARE @CENTER_ID_OLD VARCHAR(15) = NULL  --Mã trung tâm cũ check điều chuyển nhân sự
83
              DECLARE @DEP_ID_OLD VARCHAR(15) = NULL  --Mã phòng ban cũ check điều chuyển nhân sự
84

    
85
              DECLARE @BLOCK_ID_NEW VARCHAR(15) = NULL  --Mã khối mới check điều chuyển nhân sự
86
              DECLARE @CENTER_ID_NEW VARCHAR(15) = NULL  --Mã trung tâm mới check điều chuyển nhân sự
87
              DECLARE @DEP_ID_NEW VARCHAR(15) = NULL  --Mã phòng ban mới check điều chuyển nhân sự
88
    
89
            --START: PARAM INSERT 
90
    
91
            --CHECK XEM ĐƠN VỊ/PHÒNG BAN CỦA NHÂN VIÊN MỚI CỬA KH LƯU TRONG CỘT MaDVCu HAY CỘT MaDVMoi
92
            IF (EXISTS(SELECT TOP 1 MaDVCu FROM INSERTED WHERE MaDVCu IS NOT NULL AND MaDVCu <> ''))
93
            BEGIN 
94
                --CHECK XEM MÃ LÀ ĐƠN VỊ HAY PHÒNG BAN
95
                IF(EXISTS(SELECT TOP 1 cd.DEP_ID FROM CM_DEPARTMENT cd WHERE cd.DEP_CODE = @MaDV_Cu_SYNC))
96
                BEGIN
97
                    SET @p_BRANCH_ID = 'DV0001'
98
                    SET @C_Ma_DV_Cu = 'DV0001'
99
                    SET @p_DEP_ID = (SELECT TOP 1 cd.DEP_ID FROM CM_DEPARTMENT cd WHERE cd.DEP_CODE = @MaDV_Cu_SYNC)
100
                    SET @C_Ma_PB_Cu = (SELECT TOP 1 cd.DEP_ID FROM CM_DEPARTMENT cd WHERE cd.DEP_CODE = @MaDV_Cu_SYNC)
101
                END
102
                ELSE
103
                BEGIN
104
                    SET @p_BRANCH_ID = (SELECT TOP 1 cb.BRANCH_ID FROM CM_BRANCH cb WHERE cb.BRANCH_CODE = @MaDV_Cu_SYNC)
105
                    SET @C_Ma_DV_Cu = (SELECT TOP 1 cb.BRANCH_ID FROM CM_BRANCH cb WHERE cb.BRANCH_CODE = @MaDV_Cu_SYNC)
106
                END         
107
            END
108
            --ELSE
109
    
110
            IF(EXISTS(SELECT TOP 1 MaDVMoi FROM INSERTED WHERE MaDVMoi IS NOT NULL AND MaDVMoi <> ''))
111
            BEGIN
112
                --CHECK XEM MÃ LÀ ĐƠN VỊ HAY PHÒNG BAN
113
                IF(EXISTS(SELECT TOP 1 cd.DEP_ID FROM CM_DEPARTMENT cd WHERE cd.DEP_CODE = (SELECT MaDVMoi FROM INSERTED)))
114
                BEGIN
115
                    SET @p_BRANCH_ID = 'DV0001'
116
                    SET @C_Ma_DV_Moi = 'DV0001'
117
                    SET @p_DEP_ID = (SELECT TOP 1 cd.DEP_ID FROM CM_DEPARTMENT cd WHERE cd.DEP_CODE = @MaDV_Moi_SYNC)
118
                    SET @C_Ma_PB_Moi = (SELECT TOP 1 cd.DEP_ID FROM CM_DEPARTMENT cd WHERE cd.DEP_CODE = @MaDV_Moi_SYNC)
119
                END
120
                ELSE
121
                BEGIN
122
                    SET @p_BRANCH_ID = (SELECT TOP 1 cb.BRANCH_ID FROM CM_BRANCH cb WHERE cb.BRANCH_CODE = @MaDV_Moi_SYNC)
123
                    SET @C_Ma_DV_Moi = (SELECT TOP 1 cb.BRANCH_ID FROM CM_BRANCH cb WHERE cb.BRANCH_CODE = @MaDV_Moi_SYNC)
124
                END
125
            END        
126
            
127
            --GET KHỐI, TRUNG TÂM, PHÒNG BAN
128
            EXEC CM_DEPARTMENT_GET_BLOCK_CENTER @C_Ma_PB_Cu ,@BLOCK_ID_OLD OUT ,@CENTER_ID_OLD OUT , @DEP_ID_OLD OUT   
129
                                   
130
            --GET KHỐI, TRUNG TÂM, PHÒNG BAN
131
            EXEC CM_DEPARTMENT_GET_BLOCK_CENTER @C_Ma_PB_Moi, @BLOCK_ID_NEW OUT ,@CENTER_ID_NEW OUT ,@DEP_ID_NEW OUT     
132
                               
133
            IF(@p_BRANCH_ID <> 'DV0001')
134
            BEGIN
135
                SET @p_DEP_ID = NULL
136
            END
137

    
138
            PRINT @C_Ma_DV_Cu
139
            PRINT @C_Ma_DV_Moi
140
        		IF((@C_Ma_DV_Cu IS NULL OR @C_Ma_DV_Cu = '') AND (@C_Ma_DV_Moi IS NULL OR @C_Ma_DV_Moi = ''))
141
        		BEGIN
142
          			--N'Mã DV cũ và Mã DV mới không có giá trị'
143
                PRINT 1
144
        		END
145
            ELSE
146
            BEGIN
147
            
148
              IF((SELECT COUNT(*) FROM CM_EMPLOYEE_LOG CEL WHERE CEL.EMP_CODE = @p_EMP_CODE) > 1)
149
              BEGIN
150
                    SET @TLNAME = (SELECT TOP 1 CEL.USER_DOMAIN FROM CM_EMPLOYEE_LOG CEL WHERE CEL.EMP_CODE = @p_EMP_CODE 
151
                              AND CEL.BRANCH_CODE = @MaDV_Cu_SYNC
152
                              AND (CEL.DEP_CODE = @C_Ma_PB_Cu OR @C_Ma_PB_Cu IS NULL))
153
              END
154
              ELSE
155
              BEGIN
156
                  SET @TLNAME = (SELECT TOP 1 CEL.USER_DOMAIN FROM CM_EMPLOYEE_LOG CEL WHERE CEL.EMP_CODE = @p_EMP_CODE)
157
              END
158

    
159
            --CHECK DATA CHỨC DANH LƯU CỘT CDMOI HAY CDCU
160
            IF(EXISTS(SELECT 1 FROM INSERTED WHERE MaCDMoi IS NOT NULL AND MaCDMoi <> ''))
161
            BEGIN
162
                  --NẾU CHỨC DANH CHƯA CÓ TRONG HỆ THỐNG THÌ THÊM MỚI CHỨC DANH
163
                  IF(NOT EXISTS(SELECT 1 FROM CM_MAPPING_CHUCDANH_ROLE WHERE MA_CHUC_DANH = @MACD_MOI_SYNC))
164
                  BEGIN
165
                       INSERT INTO CM_MAPPING_CHUCDANH_ROLE (MA_CHUC_DANH, TEN_CHUC_DANH, NHOM_CHUC_DANH, ROLE_ID)
166
                       VALUES (@MACD_MOI_SYNC, (SELECT TOP 1 CDMoi FROM INSERTED), NULL, NULL);
167
                  END
168
    
169
                  SET @p_POS_CODE = @MACD_MOI_SYNC
170
                  SET @p_POS_NAME = (SELECT TOP 1 CDMoi FROM INSERTED)
171
            END
172
            ELSE IF(EXISTS(SELECT 1 FROM INSERTED WHERE MaCDCu IS NOT NULL AND MaCDCu <> ''))
173
            BEGIN
174
                  --NẾU CHỨC DANH CHƯA CÓ TRONG HỆ THỐNG THÌ THÊM MỚI CHỨC DANH
175
                  IF(NOT EXISTS(SELECT 1 FROM CM_MAPPING_CHUCDANH_ROLE WHERE MA_CHUC_DANH = @MACD_CU_SYNC))
176
                  BEGIN
177
                       INSERT INTO CM_MAPPING_CHUCDANH_ROLE (MA_CHUC_DANH, TEN_CHUC_DANH, NHOM_CHUC_DANH, ROLE_ID)
178
                       VALUES (@MACD_CU_SYNC, (SELECT TOP 1 CDCu FROM INSERTED), NULL, NULL);
179
                  END
180
    
181
                  SET @p_POS_CODE = @MACD_CU_SYNC
182
                  SET @p_POS_NAME = (SELECT TOP 1 CDCu FROM INSERTED)
183
            END
184
    
185
    
186
             --CHECK NHÂN VIÊN XEM CÓ XEM TRONG HỆ THỐNG KHÔNG
187
             IF(EXISTS(SELECT TOP 1 ce.EMP_ID FROM CM_EMPLOYEE ce WHERE ce.EMP_CODE = (SELECT MaNS FROM INSERTED)))
188
             BEGIN
189
                
190
                IF(EXISTS(
191
                        SELECT atmd.ASSET_ID FROM ASS_TRANSFER_MULTI_DT atmd
192
                        WHERE (atmd.EMP_ID = @I_EMP_ID AND atmd.EMP_ID_OLD = @I_EMP_ID 
193
                                               AND (atmd.BRANCH_ID = @C_Ma_DV_Moi AND atmd.BRANCH_ID_OLD = @C_Ma_DV_Cu
194
                                                    AND ISNULL(atmd.KHOI_ID_OLD,'') = ISNULL(@BLOCK_ID_OLD,'') AND ISNULL(atmd.KHOI_ID,'') = ISNULL(@BLOCK_ID_NEW,'')
195
                                                    AND ISNULL(atmd.CENTER_ID_OLD,'') = ISNULL(@CENTER_ID_OLD,'') AND ISNULL(atmd.CENTER_ID,'') = ISNULL(@CENTER_ID_NEW,'')
196
                                                    AND ISNULL(atmd.DEPT_ID_OLD,'') = ISNULL(@DEP_ID_OLD,'') AND ISNULL(atmd.DEPT_ID,'') = ISNULL(@DEP_ID_NEW,''))  
197
      																				 AND atmd.AUTH_STATUS_KT <> 'A') --ĐIỀU CHUYỂN TS TỪ ĐV NÀY SANG ĐV KHÁC CHO CÙNG NV
198
                              OR (atmd.EMP_ID_OLD = @I_EMP_ID AND atmd.EMP_ID <> @I_EMP_ID  
199
                                  AND atmd.BRANCH_ID_OLD = @C_Ma_DV_Cu 
200
                                  AND ISNULL(atmd.KHOI_ID_OLD,'') = ISNULL(@BLOCK_ID_OLD,'')
201
                                  AND ISNULL(atmd.CENTER_ID_OLD,'') = ISNULL(@CENTER_ID_OLD,'')
202
                                  AND ISNULL(atmd.DEPT_ID_OLD,'') = ISNULL(@DEP_ID_OLD,'')
203
                                  AND atmd.AUTH_STATUS_KT <> 'A') --ĐIỀU CHUYỂN TS TỪ ĐV NÀY SANG ĐV KHÁC NHƯNG KHÁC NV
204
                        UNION ALL
205
                        SELECT am.ASSET_ID FROM ASS_MASTER am WHERE am.BRANCH_ID = @C_Ma_DV_Cu AND ISNULL(am.DEPT_ID,'') = ISNULL(@C_Ma_PB_Cu,'') AND am.EMP_ID = @I_EMP_ID ))                             
206
                  SET @I_STATUS = '0'
207
                ELSE
208
                  SET @I_STATUS = '1'
209
      
210
                INSERT INTO CM_EMPLOYEE_TRANSFER_LOG (EMP_ID, TRANSFER_DT, BRANCH_ID_OLD, DEP_ID_OLD, BRANCH_ID_NEW, DEP_ID_NEW, STATUS)
211
                VALUES (@I_EMP_ID, CONVERT(DATETIME,(SELECT TOP 1 TGTao FROM INSERTED),103), @C_Ma_DV_Cu,@C_Ma_PB_Cu, @C_Ma_DV_Moi, @C_Ma_PB_Moi, @I_STATUS);  
212
      
213
                --CHECK TRƯỜNG HỢP 1 NHÂN VIÊN CÓ QUYỀN 2 CHI NHÁNH TRỞ TRÊN (KHÁC TLNAME)
214

    
215
                --PHUCVH 22/12/22 CHECK NẾU MADV,PB MỚI THAY ĐỔI THÌ UPDATE LẠI MADV,PB CHO NHANVIEN
216
                IF(EXISTS(SELECT 1 FROM CM_EMPLOYEE A WHERE A.EMP_CODE = @p_EMP_CODE 
217
                              AND ISNULL(@p_BRANCH_ID,'') <> ''
218
                              AND ((ISNULL(@p_BRANCH_ID,'') = 'DV0001' AND ISNULL(@p_DEP_ID,'') <> '')
219
                                    OR (ISNULL(@p_BRANCH_ID,'') <> 'DV0001' AND ISNULL(@p_DEP_ID,'') = ''))
220
                              AND (ISNULL(A.BRANCH_ID,'') <> ISNULL(@p_BRANCH_ID,'')
221
                                  OR ISNULL(A.DEP_ID,'') <> ISNULL(@p_DEP_ID,''))))
222
                BEGIN
223
                      UPDATE CM_EMPLOYEE SET BRANCH_ID = @p_BRANCH_ID, DEP_ID = @p_DEP_ID 
224
                      WHERE EMP_CODE = @p_EMP_CODE
225
    
226
                      --CHECK UPDATE TL_USER VÀ CM_EMPLOYEE_LOG
227
--                      IF(EXISTS(SELECT 1 FROM CM_EMPLOYEE_LOG WHERE EMP_CODE = @p_EMP_CODE))
228
--                      BEGIN
229
--                          UPDATE CM_EMPLOYEE_LOG SET BRANCH_CODE = (SELECT TOP 1 BRANCH_CODE FROM CM_BRANCH WHERE BRANCH_ID = @p_BRANCH_ID),
230
--                                                     DEP_CODE = (SELECT TOP 1 DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID = @p_DEP_ID)
231
--                          WHERE EMP_CODE = @p_EMP_CODE AND USER_DOMAIN = @TLNAME
232
--    
233
--                          UPDATE TL_USER SET TLSUBBRID = @p_BRANCH_ID, SECUR_CODE = @p_DEP_ID, DEP_ID = @p_DEP_ID
234
--                          WHERE TLNANME = @TLNAME
235
--                      END
236
    
237
                END  
238
                
239
                --PHUCVH 22/12/22 CHECK NẾU MA CHUC DANH THAY ĐỔI THÌ UPDATE
240
                IF(EXISTS(SELECT 1 FROM CM_EMPLOYEE A WHERE A.EMP_CODE = @p_EMP_CODE
241
                                AND ISNULL(A.POS_CODE,'') <> ISNULL(@p_POS_CODE,'')))
242
                BEGIN
243
                     UPDATE CM_EMPLOYEE SET POS_CODE = @p_POS_CODE, POS_NAME = @p_POS_NAME
244
                     WHERE EMP_CODE = @p_EMP_CODE 
245
    
246
                     UPDATE CM_EMPLOYEE_LOG SET POS_CODE = @p_POS_CODE, POS_NAME = @p_POS_NAME
247
                     WHERE EMP_CODE = @p_EMP_CODE AND USER_DOMAIN = @TLNAME
248
                END                     
249
    
250
                --IF @@Error <> 0 GOTO ABORT
251
          		  --SET @Message = N'Đồng bộ điều chuyển nhân sự thành công'
252
             END
253
             ELSE
254
             BEGIN
255
                --KHÔNG CÓ TRONG HỆ THỐNG
256
                --THÊM THÔNG TIN NHÂN VIÊN
257
                		EXEC SYS_CodeMasters_Gen 'CM_EMPLOYEE', @l_EMP_ID out		       
258
                		INSERT INTO CM_EMPLOYEE([EMP_ID],[EMP_CODE],[EMP_NAME],[BRANCH_ID],[DEP_ID],[NOTES],[RECORD_STATUS],[AUTH_STATUS],[MAKER_ID],[CREATE_DT],[CHECKER_ID],[APPROVE_DT],[POS_CODE],[POS_NAME])
259
                		VALUES(@l_EMP_ID ,@p_EMP_CODE ,@p_EMP_NAME ,@p_BRANCH_ID ,@p_DEP_ID ,@p_NOTES ,@p_RECORD_STATUS ,@p_AUTH_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_CHECKER_ID ,CONVERT(DATETIME, @p_APPROVE_DT, 103), @p_POS_CODE, @p_POS_NAME )
260
                    --IF @@Error <> 0 GOTO ABORT
261
            				--SET @Message = N'Đồng bộ nhân viên mới thành công'
262
             END
263
            END
264
    
265
            
266
          END
267
END
268

    
269
GO
270
ALTER PROCEDURE [dbo].[CM_EMPLOYEE_SYNC_INS]
271
@p_JSON_DATA NVARCHAR(MAX) = NULL
272
AS
273
----Phucvh 20/02/23 Store đồng bộ nhân viên từ DB HR
274
IF (@p_JSON_DATA IS NULL OR @p_JSON_DATA = '')
275
BEGIN  
276
SELECT '-1' as Result, '' ID, N'Data NULL Đồng bộ thất bại' ErrorDesc
277
RETURN '-1'
278
END
279

    
280
--LUU DATA DONG BO
281
UPDATE THREAD_TIME_SEND_LOG SET MESSAGE = MESSAGE + @p_JSON_DATA
282
WHERE TOOL_VALUE = 'SYNC_EMP' AND ID = (SELECT TOP 1 TTSL.ID FROM THREAD_TIME_SEND_LOG TTSL WHERE TTSL.TOOL_VALUE = 'SYNC_EMP' ORDER BY TTSL.ID DESC)
283

    
284
DECLARE @Tbl_Data_From_Json TABLE(
285
Id	UNIQUEIDENTIFIER,
286
Loai	INT,
287
MaNS nvarchar(500),
288
HoTen nvarchar(500),
289
MaDVCu nvarchar(500),
290
DVCu nvarchar(500),
291
MaDVMoi nvarchar(500),
292
DVMoi nvarchar(500),
293
MaCDCu nvarchar(500),
294
CDCu nvarchar(500),
295
MaCDMoi nvarchar(500),
296
CDMoi nvarchar(500),
297
LoaiHDLD nvarchar(500),
298
Email nvarchar(500),
299
Ngay VARCHAR(500),
300
So nvarchar(500),
301
NgayHLuc VARCHAR(500),
302
NgayHetHLuc VARCHAR(500),
303
TGTao VARCHAR(500)
304
)
305

    
306
INSERT INTO @Tbl_Data_From_Json
307
SELECT *
308
FROM OPENJSON(@p_JSON_DATA)
309
WITH 
310
(
311
Id	UNIQUEIDENTIFIER '$.Id',
312
Loai	INT '$.Loai',
313
MaNS nvarchar(500) '$.MaNS',
314
HoTen nvarchar(500) '$.HoTen',
315
MaDVCu nvarchar(500) '$.MaDVCu',
316
DVCu nvarchar(500) '$.DVCu',
317
MaDVMoi nvarchar(500) '$.MaDVMoi',
318
DVMoi nvarchar(500) '$.DVMoi',
319
MaCDCu nvarchar(500) '$.MaCDCu',
320
CDCu nvarchar(500) '$.CDCu',
321
MaCDMoi nvarchar(500) '$.MaCDMoi',
322
CDMoi nvarchar(500) '$.CDMoi',
323
LoaiHDLD nvarchar(500) '$.LoaiHDLD',
324
Email nvarchar(500) '$.Email',
325
Ngay VARCHAR(500) '$.Ngay',
326
So nvarchar(500) '$.So',
327
NgayHLuc VARCHAR(500) '$.NgayHLuc',
328
NgayHetHLuc VARCHAR(500) '$.NgayHetHLuc',
329
TGTao VARCHAR(500) '$.TGTao'
330
)
331

    
332
DECLARE 
333
@Id	UNIQUEIDENTIFIER, @Loai	INT, @MaNS nvarchar(500), @HoTen nvarchar(500), 
334
@MaDVCu nvarchar(500), @DVCu nvarchar(500), @MaDVMoi nvarchar(500), @DVMoi nvarchar(500), 
335
@MaCDCu nvarchar(500), @CDCu nvarchar(500), @MaCDMoi nvarchar(500), @CDMoi nvarchar(500), 
336
@LoaiHDLD nvarchar(500), @Email nvarchar(500), @Ngay VARCHAR(500), @So nvarchar(500), 
337
@NgayHLuc VARCHAR(500), @NgayHetHLuc VARCHAR(500), @TGTao VARCHAR(500)
338
                   
339

    
340
BEGIN TRANSACTION
341
    DECLARE cur CURSOR FAST_FORWARD READ_ONLY LOCAL FOR
342
    SELECT * FROM @Tbl_Data_From_Json
343
   
344
   OPEN cur
345
   
346
   FETCH NEXT FROM cur INTO @Id,@Loai,@MaNS,@HoTen,@MaDVCu,@DVCu,@MaDVMoi,@DVMoi,@MaCDCu,@CDCu,@MaCDMoi,@CDMoi,@LoaiHDLD,@Email,@Ngay,@So,@NgayHLuc,@NgayHetHLuc,@TGTao
347
   
348
   WHILE @@FETCH_STATUS = 0 BEGIN
349
      
350
      IF(NOT EXISTS(SELECT 1 FROM CM_EMPLOYEE_SYNC ces WHERE ces.Id = @Id))
351
      BEGIN
352
           	INSERT INTO CM_EMPLOYEE_SYNC (Id, Loai, MaNS, HoTen, MaDVCu, DVCu, MaDVMoi, DVMoi, MaCDCu, CDCu, MaCDMoi, CDMoi, LoaiHDLD, Email, Ngay, So, NgayHLuc, NgayHetHLuc, TGTao)
353
            VALUES(@Id,@Loai,@MaNS,@HoTen,@MaDVCu,@DVCu,@MaDVMoi,@DVMoi,@MaCDCu,@CDCu,@MaCDMoi,@CDMoi,@LoaiHDLD,@Email,CONVERT(DATETIME,@Ngay),@So,CONVERT(DATETIME,@NgayHLuc),CONVERT(DATETIME,@NgayHetHLuc),CONVERT(DATETIME,@TGTao))
354
      END      
355
     
356
     	FETCH NEXT FROM cur INTO @Id,@Loai,@MaNS,@HoTen,@MaDVCu,@DVCu,@MaDVMoi,@DVMoi,@MaCDCu,@CDCu,@MaCDMoi,@CDMoi,@LoaiHDLD,@Email,@Ngay,@So,@NgayHLuc,@NgayHetHLuc,@TGTao
357
   
358
   END
359
   
360
   CLOSE cur
361
   DEALLOCATE cur
362

    
363

    
364
		IF @@Error <> 0 GOTO ABORT
365
COMMIT TRANSACTION
366
SELECT '0' as Result, ''  ID, N'Đồng bộ chi phí sửa chữa tài sản thành công' ErrorDesc
367
RETURN '0'
368
ABORT:
369
BEGIN
370
    CLOSE cur
371
    DEALLOCATE cur
372
		ROLLBACK TRANSACTION
373
		SELECT '-1' as Result, '' ID, N'Đồng bộ chi phí sửa chữa tài sản thất bại' ErrorDesc
374
		RETURN '-1'
375
End
376
GO
377
IF @@ERROR <> 0 SET NOEXEC ON
378
GO
379
PRINT N'Altering [dbo].[THREAD_GET_CONTENT_SEND_MAIL]'
380
GO
381
ALTER PROC [dbo].[THREAD_GET_CONTENT_SEND_MAIL]
382
@p_TIME_RUN_TOOL VARCHAR(50) = NULL,
383
@p_TIME_SEND_ID INT = NULL, 
384
@p_TIME_VALUE VARCHAR(100) = NULL,
385
@p_LOCATION VARCHAR(20) = NULL
386
AS
387
BEGIN 
388

    
389
  IF(@p_TIME_VALUE IS NULL OR @p_TIME_VALUE = '' OR @p_TIME_SEND_ID IS NULL OR @p_TIME_SEND_ID = '')
390
  RETURN '-1'
391

    
392
  DECLARE   @DISTANCE_TIME INT = NULL,
393
            @DISTANCE_TYPE VARCHAR(20) = NULL,
394
            @TOOL_NAME NVARCHAR(1000) = NULL,
395
            @TOOL_VALUE VARCHAR(100) = NULL,
396
            @EXEC_DT DATETIME = NULL,            
397
            @MESSAGE NVARCHAR(1000) = NULL,
398
            @EXEC_TYPE VARCHAR(20) = NULL
399

    
400
  IF(@p_LOCATION = 'EXEC')
401
  BEGIN
402
      SET @EXEC_TYPE = 'EXECUTE'
403
  END
404
  ELSE
405
  BEGIN
406
      SET @EXEC_TYPE = 'AUTO'
407
  END
408

    
409
  SELECT  @DISTANCE_TIME = TIME_SEND        
410
        ,@DISTANCE_TYPE = TIME_SEND_TYPE
411
        ,@TOOL_NAME = TIME_CONTENT
412
        ,@TOOL_VALUE = TIME_VALUE,
413
        @EXEC_DT = SENT_DATE                
414
  FROM THREAD_TIME_SEND 
415
  WHERE TIME_VALUE = @p_TIME_VALUE
416

    
417
	DECLARE	@TEMP TABLE
418
			(
419
				[ID]				VARCHAR(20),
420
				[EMAIL]				VARCHAR(50),
421
				[NF_MESSAGE_TYPE]	VARCHAR(500),
422
				[ROLE_TIFI_TYPE]	VARCHAR(500),
423
        IS_SENDMAIL BIT,
424
        IS_RUN_TOOL BIT,
425
        TOOL_NAME NVARCHAR(100),
426
        QUERY_SELECT NVARCHAR(MAX)
427
        
428
			)
429
	DECLARE	@TIME_SEND			INT = NULL,
430
			@TIME_SEND_TYPE		VARCHAR(20) = NULL,
431
			@TIME_VALUE			VARCHAR(25) = NULL,
432
			@NF_MESSAGE_TYPE	VARCHAR(50) = NULL,
433
			@ROLE_TIFI_TYPE		VARCHAR(50) = NULL,
434
      @SEND_DATE DATETIME = NULL,
435
      @QUERY_SELECT NVARCHAR(MAX) = NULL,
436

    
437
      @EXEC_DATE VARCHAR(50) = NULL
438

    
439
	SELECT @TIME_SEND = A.TIME_SEND,@TIME_SEND_TYPE = A.TIME_SEND_TYPE,
440
  @TIME_VALUE = A.TIME_VALUE,@NF_MESSAGE_TYPE = A.NF_MESSAGE_TYPE, 
441
  @ROLE_TIFI_TYPE = A.ROLE_TIFI_TYPE,@SEND_DATE = A.SENT_DATE
442
	FROM THREAD_TIME_SEND A
443
	WHERE (A.[STATUS] = 1 OR @p_LOCATION = 'EXEC') AND A.TIME_VALUE = @p_TIME_VALUE AND A.TIME_SEND_ID = @p_TIME_SEND_ID
444
	 
445
  
446
  --FIX THREAD NẾU START VÀ STOP TOOL NHIỀU LẦN THÌ BỊ DUP EXEC
447
  IF(@p_LOCATION <> 'EXEC' OR @p_LOCATION IS NULL OR @p_LOCATION = '')
448
  BEGIN
449
      IF(DATEDIFF(DAYOFYEAR,CONVERT(DATETIME,@p_TIME_RUN_TOOL,103),@SEND_DATE) <> 0)
450
      BEGIN  
451
      	  SET @MESSAGE = N'Ngày không hợp lệ'
452
          GOTO ABORT
453
      END
454
      
455
  END
456

    
457
  BEGIN --TRANSACTION T1
458

    
459
      IF(@p_TIME_VALUE = 'SYNC_EMP')
460
      BEGIN --TOOL ĐỒNG BỘ NGƯỜI DÙNG
461
          --SET @QUERY_SELECT = N'SELECT Id,Loai,MaNS,HoTen,MaDVCu,DVCu,MaDVMoi,DVMoi,MaCDCu,CDCu,MaCDMoi,CDMoi,LoaiHDLD,Email,Ngay,So,NgayHLuc,NgayHetHLuc,TGTao FROM CM_EMPLOYEE_SYNC WHERE DATEDIFF(DAYOFYEAR,CONVERT(DATETIME,''' + (SELECT ca.ParaValue FROM SYS_PARAMETERS ca WHERE ca.ParaKey = 'LAST_SYNC_DATE') + ''',103),TGTao) >= 0  ORDER BY TGTao'
462
          SET @QUERY_SELECT = N'SELECT Id,Loai,MaNS,HoTen,MaDVCu,DVCu,MaDVMoi,DVMoi,MaCDCu,CDCu,MaCDMoi,CDMoi,LoaiHDLD,Email,Ngay,So,NgayHLuc,NgayHetHLuc,TGTao FROM CM_EMPLOYEE_SYNC ORDER BY TGTao'
463
    
464
          INSERT INTO @TEMP (IS_RUN_TOOL, TOOL_NAME, QUERY_SELECT)
465
          VALUES (1,'CM_EMPLOYEE_SYNC',@QUERY_SELECT);
466
    
467
          IF(@p_LOCATION IS NULL)
468
          BEGIN
469
                IF @@Error <> 0 GOTO ABORT
470

    
471
                UPDATE SYS_PARAMETERS SET ParaValue = FORMAT(CONVERT(DATE,GETDATE(),103),'dd/MM/yyyy') WHERE ParaKey = 'LAST_SYNC_DATE' 
472
          END
473
    
474
      END  
475
      ELSE IF(@p_TIME_VALUE = 'CHECK_WARRANTY_DT')
476
      BEGIN --TOOL GỬI MAIL THÔNG BÁO TÀI SẢN SẮP HẾT HẠN BẢO HÀNH
477
          INSERT INTO @TEMP (IS_SENDMAIL, TOOL_NAME,NF_MESSAGE_TYPE,ROLE_TIFI_TYPE)
478
          VALUES (1,N'GỬI MAIL',@NF_MESSAGE_TYPE,@ROLE_TIFI_TYPE);
479
      END
480
      ELSE IF(@p_TIME_VALUE = 'CHECK_TRANS_NOT_APPROVE')
481
      BEGIN --GỬI MAIL NHỮNG GIAO DỊCH CHƯA ĐƯỢC PHÊ DUYỆT
482
          INSERT INTO @TEMP (IS_SENDMAIL, TOOL_NAME,NF_MESSAGE_TYPE,ROLE_TIFI_TYPE)
483
          
484
          SELECT 1,N'CHECK GIAO DỊCH CHƯA DUYỆT',@NF_MESSAGE_TYPE + '|' + PP.ID, @ROLE_TIFI_TYPE + '|' + PP.ID
485
          FROM (
486
              SELECT A.USER_MASTER_ID + '|ASS_USE|' + CASE WHEN A.AUTH_STATUS = 'A' AND A.AUTH_STATUS_KT = 'U' THEN 'KSV'	ELSE 'GDV' END AS ID
487
              FROM ASS_USE_MULTI_MASTER A
488
              LEFT JOIN ASS_USE_CONFIRM_MASTER B ON A.USER_MASTER_ID = B.USER_MASTER_ID
489
              WHERE (A.AUTH_STATUS = 'A' AND A.AUTH_STATUS_KT = 'E' AND B.USER_CONFIRM_MASTER_ID IS NOT NULL) 
490
                    OR (A.AUTH_STATUS = 'A' AND A.AUTH_STATUS_KT = 'U')
491
              UNION
492
              SELECT A.TRANS_MULTI_MASTER_ID + '|ASS_TRANSFER|' + CASE WHEN A.AUTH_STATUS = 'A' AND A.AUTH_STATUS_KT = 'U' THEN 'KSV'	ELSE 'GDV' END AS ID
493
              FROM ASS_TRANSFER_MULTI_MASTER A                  
494
              WHERE (A.AUTH_STATUS = 'A' AND A.AUTH_STATUS_KT = 'E')
495
                    OR (A.AUTH_STATUS = 'A' AND A.AUTH_STATUS_KT = 'U')
496
              UNION
497
              SELECT A.COL_MULTI_MASTER_ID + '|ASS_COLLECT|' + CASE WHEN A.AUTH_STATUS = 'A' AND A.AUTH_STATUS_KT = 'U' THEN 'KSV'	ELSE 'GDV' END AS ID
498
              FROM ASS_COLLECT_MULTI_MASTER A
499
              LEFT JOIN ASS_COLLECT_CONFIRM_MASTER B ON A.COL_MULTI_MASTER_ID = B.COL_MULTI_MASTER_ID
500
              WHERE (A.AUTH_STATUS = 'A' AND A.AUTH_STATUS_KT = 'E' AND B.COL_MULTI_MASTER_CONFIRM_ID IS NOT NULL)
501
                    OR (A.AUTH_STATUS = 'A' AND A.AUTH_STATUS_KT = 'U')
502
              UNION
503
              SELECT A.LIQ_ID + '|ASS_LIQ|' + CASE WHEN A.AUTH_STATUS = 'A' AND A.AUTH_STATUS_KT = 'U' THEN 'KSV'	ELSE 'GDV' END AS ID
504
              FROM ASS_LIQUIDATION A
505
              WHERE (A.AUTH_STATUS = 'A' AND A.AUTH_STATUS_KT = 'E')
506
                    OR (A.AUTH_STATUS = 'A' AND A.AUTH_STATUS_KT = 'U')
507
              UNION
508
              SELECT A.ADDNEW_ID + '|ASS_ADDNEW|' + CASE WHEN A.AUTH_STATUS = 'A' AND A.AUTH_STATUS_KT = 'U' THEN 'KSV'	ELSE 'GDV' END AS ID
509
              FROM ASS_ADDNEW A
510
              WHERE (A.AUTH_STATUS = 'A' AND A.AUTH_STATUS_KT = 'E')
511
                    OR (A.AUTH_STATUS = 'A' AND A.AUTH_STATUS_KT = 'U'))PP              
512
    
513
      END
514
      ELSE IF(@p_TIME_VALUE = 'KH')
515
      BEGIN --TOOL CHẠY KHẤU HAO             
516
          SET @EXEC_DATE = CONVERT(VARCHAR(50),@SEND_DATE)
517
          IF((SELECT (((DATEPART(DW, @SEND_DATE) - 1 ) + @@DATEFIRST ) % 7)) NOT IN ('0','6'))
518
          BEGIN -- NẾU KHÁC NGÀY T7 VÀ CN THÌ CHẠY
519
              EXEC ASS_AMORT_StartDO @p_EXECUTE_DATE =  @EXEC_DATE
520
                                    ,@p_MAKER_ID = 'bichnn'
521
                                    ,@p_CHECKER_ID = 'bichnn'
522
                                    ,@p_ASSET_TYPE = NULL
523
                                    ,@p_BRANCH_ID_LST = NULL   
524
                                    ,@p_EXEC_TYPE = @EXEC_TYPE
525
         END                                     
526
      END
527

    
528
      IF @@Error <> 0 GOTO ABORT
529
    
530
      IF(@p_LOCATION IS NULL OR @p_LOCATION = '')
531
      BEGIN -- NẾU CHẠY TOOL THÌ UPDATE NGÀY, EXEC TRỰC TIẾP THÌ KHÔNG UPDATE NGÀY
532
          IF(@TIME_SEND_TYPE = 'NGAY')
533
    			BEGIN
534
                UPDATE THREAD_TIME_SEND 
535
                SET SENT_DATE = DATEADD(DAY,@TIME_SEND,@SEND_DATE)
536
                WHERE TIME_SEND_ID = @p_TIME_SEND_ID AND TIME_VALUE = @p_TIME_VALUE
537
          END
538
    			ELSE IF(@TIME_SEND_TYPE = 'THANG')
539
    			BEGIN
540
                UPDATE THREAD_TIME_SEND 
541
                SET SENT_DATE = DATEADD(MONTH,@TIME_SEND,@SEND_DATE)
542
                WHERE TIME_SEND_ID = @p_TIME_SEND_ID AND TIME_VALUE = @p_TIME_VALUE
543
    			END
544
      END
545

    
546
      
547
  
548
--  COMMIT TRANSACTION T1
549
  END
550
  SELECT * FROM @TEMP  
551
  
552
  IF(@p_TIME_VALUE <> 'KH')
553
  BEGIN
554
      INSERT INTO THREAD_TIME_SEND_LOG (DISTANCE_TIME, DISTANCE_TYPE, TOOL_NAME, TOOL_VALUE, EXEC_DT, EXEC_TYPE, MESSAGE, CREATE_DT)
555
      VALUES (@DISTANCE_TIME,@DISTANCE_TYPE, @TOOL_NAME, @TOOL_VALUE, @EXEC_DT,@EXEC_TYPE, N'Thực thi thành công', GETDATE()); 
556
  END
557

    
558
  RETURN '0'
559
  ABORT:
560
  BEGIN
561
  		--ROLLBACK TRANSACTION T1
562
      --GHI LOG
563
        IF(@p_TIME_VALUE <> 'KH')
564
        BEGIN
565
            INSERT INTO THREAD_TIME_SEND_LOG (DISTANCE_TIME, DISTANCE_TYPE, TOOL_NAME, TOOL_VALUE, EXEC_DT, EXEC_TYPE, MESSAGE, CREATE_DT)
566
            VALUES (@DISTANCE_TIME,@DISTANCE_TYPE, @TOOL_NAME, @TOOL_VALUE, @EXEC_DT,@EXEC_TYPE, ISNULL(@MESSAGE,ERROR_MESSAGE()), GETDATE()); 
567
        END
568
      RETURN '-1'
569
  End
570

    
571
	
572
END