Project

General

Profile

TRIG.txt

Luc Tran Van, 04/20/2023 01:27 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