Project

General

Profile

dong_bo_nv.txt

Luc Tran Van, 04/12/2023 09:58 AM

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

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

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

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

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

    
78
              DECLARE @TLNAME VARCHAR(200) = NULL
79
    
80
            --START: PARAM INSERT 
81
    
82
            --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
83
            IF (EXISTS(SELECT TOP 1 MaDVCu FROM INSERTED WHERE MaDVCu IS NOT NULL AND MaDVCu <> ''))
84
            BEGIN 
85
                --CHECK XEM MÃ LÀ ĐƠN VỊ HAY PHÒNG BAN
86
                IF(EXISTS(SELECT TOP 1 cd.DEP_ID FROM CM_DEPARTMENT cd WHERE cd.DEP_CODE = @MaDV_Cu_SYNC))
87
                BEGIN
88
                    SET @p_BRANCH_ID = 'DV0001'
89
                    SET @C_Ma_DV_Cu = 'DV0001'
90
                    SET @p_DEP_ID = (SELECT TOP 1 cd.DEP_ID FROM CM_DEPARTMENT cd WHERE cd.DEP_CODE = @MaDV_Cu_SYNC)
91
                    SET @C_Ma_PB_Cu = (SELECT TOP 1 cd.DEP_ID FROM CM_DEPARTMENT cd WHERE cd.DEP_CODE = @MaDV_Cu_SYNC)
92
                END
93
                ELSE
94
                BEGIN
95
                    SET @p_BRANCH_ID = (SELECT TOP 1 cb.BRANCH_ID FROM CM_BRANCH cb WHERE cb.BRANCH_CODE = @MaDV_Cu_SYNC)
96
                    SET @C_Ma_DV_Cu = (SELECT TOP 1 cb.BRANCH_ID FROM CM_BRANCH cb WHERE cb.BRANCH_CODE = @MaDV_Cu_SYNC)
97
                END         
98
            END
99
            --ELSE
100
    
101
            IF(EXISTS(SELECT TOP 1 MaDVMoi FROM INSERTED WHERE MaDVMoi IS NOT NULL AND MaDVMoi <> ''))
102
            BEGIN
103
                --CHECK XEM MÃ LÀ ĐƠN VỊ HAY PHÒNG BAN
104
                IF(EXISTS(SELECT TOP 1 cd.DEP_ID FROM CM_DEPARTMENT cd WHERE cd.DEP_CODE = (SELECT MaDVMoi FROM INSERTED)))
105
                BEGIN
106
                    SET @p_BRANCH_ID = 'DV0001'
107
                    SET @C_Ma_DV_Moi = 'DV0001'
108
                    SET @p_DEP_ID = (SELECT TOP 1 cd.DEP_ID FROM CM_DEPARTMENT cd WHERE cd.DEP_CODE = @MaDV_Moi_SYNC)
109
                    SET @C_Ma_PB_Moi = (SELECT TOP 1 cd.DEP_ID FROM CM_DEPARTMENT cd WHERE cd.DEP_CODE = @MaDV_Moi_SYNC)
110
                END
111
                ELSE
112
                BEGIN
113
                    SET @p_BRANCH_ID = (SELECT TOP 1 cb.BRANCH_ID FROM CM_BRANCH cb WHERE cb.BRANCH_CODE = @MaDV_Moi_SYNC)
114
                    SET @C_Ma_DV_Moi = (SELECT TOP 1 cb.BRANCH_ID FROM CM_BRANCH cb WHERE cb.BRANCH_CODE = @MaDV_Moi_SYNC)
115
                END
116
            END              
117
                               
118
            PRINT @C_Ma_DV_Cu
119
            PRINT @C_Ma_DV_Moi
120
        		IF((@C_Ma_DV_Cu IS NULL OR @C_Ma_DV_Cu = '') AND (@C_Ma_DV_Moi IS NULL OR @C_Ma_DV_Moi = ''))
121
        		BEGIN
122
          			--N'Mã DV cũ và Mã DV mới không có giá trị'
123
                PRINT 1
124
        		END
125
            ELSE
126
            BEGIN
127
            
128
              IF((SELECT COUNT(*) FROM CM_EMPLOYEE_LOG CEL WHERE CEL.EMP_CODE = @p_EMP_CODE) > 1)
129
              BEGIN
130
                    SET @TLNAME = (SELECT TOP 1 CEL.USER_DOMAIN FROM CM_EMPLOYEE_LOG CEL WHERE CEL.EMP_CODE = @p_EMP_CODE 
131
                              AND CEL.BRANCH_CODE = @MaDV_Cu_SYNC
132
                              AND (CEL.DEP_CODE = @C_Ma_PB_Cu OR @C_Ma_PB_Cu IS NULL))
133
              END
134
              ELSE
135
              BEGIN
136
                  SET @TLNAME = (SELECT TOP 1 CEL.USER_DOMAIN FROM CM_EMPLOYEE_LOG CEL WHERE CEL.EMP_CODE = @p_EMP_CODE)
137
              END
138

    
139
            --CHECK DATA CHỨC DANH LƯU CỘT CDMOI HAY CDCU
140
            IF(EXISTS(SELECT 1 FROM INSERTED WHERE MaCDMoi IS NOT NULL AND MaCDMoi <> ''))
141
            BEGIN
142
                  --NẾU CHỨC DANH CHƯA CÓ TRONG HỆ THỐNG THÌ THÊM MỚI CHỨC DANH
143
                  IF(NOT EXISTS(SELECT 1 FROM CM_MAPPING_CHUCDANH_ROLE WHERE MA_CHUC_DANH = @MACD_MOI_SYNC))
144
                  BEGIN
145
                       INSERT INTO CM_MAPPING_CHUCDANH_ROLE (MA_CHUC_DANH, TEN_CHUC_DANH, NHOM_CHUC_DANH, ROLE_ID)
146
                       VALUES (@MACD_MOI_SYNC, (SELECT TOP 1 CDMoi FROM INSERTED), NULL, NULL);
147
                  END
148
    
149
                  SET @p_POS_CODE = @MACD_MOI_SYNC
150
                  SET @p_POS_NAME = (SELECT TOP 1 CDMoi FROM INSERTED)
151
            END
152
            ELSE IF(EXISTS(SELECT 1 FROM INSERTED WHERE MaCDCu IS NOT NULL AND MaCDCu <> ''))
153
            BEGIN
154
                  --NẾU CHỨC DANH CHƯA CÓ TRONG HỆ THỐNG THÌ THÊM MỚI CHỨC DANH
155
                  IF(NOT EXISTS(SELECT 1 FROM CM_MAPPING_CHUCDANH_ROLE WHERE MA_CHUC_DANH = @MACD_CU_SYNC))
156
                  BEGIN
157
                       INSERT INTO CM_MAPPING_CHUCDANH_ROLE (MA_CHUC_DANH, TEN_CHUC_DANH, NHOM_CHUC_DANH, ROLE_ID)
158
                       VALUES (@MACD_CU_SYNC, (SELECT TOP 1 CDCu FROM INSERTED), NULL, NULL);
159
                  END
160
    
161
                  SET @p_POS_CODE = @MACD_CU_SYNC
162
                  SET @p_POS_NAME = (SELECT TOP 1 CDCu FROM INSERTED)
163
            END
164
    
165
    
166
             --CHECK NHÂN VIÊN XEM CÓ XEM TRONG HỆ THỐNG KHÔNG
167
             IF(EXISTS(SELECT TOP 1 ce.EMP_ID FROM CM_EMPLOYEE ce WHERE ce.EMP_CODE = (SELECT MaNS FROM INSERTED)))
168
             BEGIN
169
                
170
                IF(EXISTS(
171
                        SELECT atmd.ASSET_ID FROM ASS_TRANSFER_MULTI_DT atmd
172
                        WHERE (atmd.EMP_ID = @I_EMP_ID AND atmd.EMP_ID_OLD = @I_EMP_ID AND (atmd.BRANCH_ID = @C_Ma_DV_Moi AND atmd.BRANCH_ID_OLD = @C_Ma_DV_Cu) 
173
      																				 AND atmd.AUTH_STATUS_KT <> 'A') --ĐIỀU CHUYỂN TS TỪ ĐV NÀY SANG ĐV KHÁC CHO CHÙNG NV
174
                              OR (atmd.EMP_ID_OLD = @I_EMP_ID AND atmd.BRANCH_ID_OLD = @C_Ma_DV_Cu AND atmd.EMP_ID <> @I_EMP_ID AND atmd.AUTH_STATUS_KT <> 'A') --ĐIỀU CHUYỂN TS TỪ ĐV NÀY SANG ĐV KHÁC NHƯNG KHÁC NV
175
                        UNION ALL
176
                        SELECT am.ASSET_ID FROM ASS_MASTER am WHERE am.BRANCH_ID = @C_Ma_DV_Cu AND am.EMP_ID = @I_EMP_ID))
177
                  SET @I_STATUS = '0'
178
                ELSE
179
                  SET @I_STATUS = '1'
180
      
181
                INSERT INTO CM_EMPLOYEE_TRANSFER_LOG (EMP_ID, TRANSFER_DT, BRANCH_ID_OLD, BRANCH_ID_NEW, STATUS)
182
                VALUES (@I_EMP_ID, CONVERT(DATETIME,(SELECT TOP 1 TGTao FROM INSERTED),103), @C_Ma_DV_Cu, @C_Ma_DV_Moi, @I_STATUS);  
183
      
184
                --CHECK TRƯỜNG HỢP 1 NHÂN VIÊN CÓ QUYỀN 2 CHI NHÁNH TRỞ TRÊN (KHÁC TLNAME)
185

    
186
                --PHUCVH 22/12/22 CHECK NẾU MADV,PB MỚI THAY ĐỔI THÌ UPDATE LẠI MADV,PB CHO NHANVIEN
187
                IF(EXISTS(SELECT 1 FROM CM_EMPLOYEE A WHERE A.EMP_CODE = @p_EMP_CODE 
188
                              AND (ISNULL(A.BRANCH_ID,'') <> ISNULL(@p_BRANCH_ID,'')
189
                                  OR ISNULL(A.DEP_ID,'') <> ISNULL(@p_DEP_ID,''))))
190
                BEGIN
191
                      UPDATE CM_EMPLOYEE SET BRANCH_ID = @p_BRANCH_ID, DEP_ID = @p_DEP_ID 
192
                      WHERE EMP_CODE = @p_EMP_CODE
193
    
194
                      --CHECK UPDATE TL_USER VÀ CM_EMPLOYEE_LOG
195
                      IF(EXISTS(SELECT 1 FROM CM_EMPLOYEE_LOG WHERE EMP_CODE = @p_EMP_CODE))
196
                      BEGIN
197
                          UPDATE CM_EMPLOYEE_LOG SET BRANCH_CODE = (SELECT TOP 1 BRANCH_CODE FROM CM_BRANCH WHERE BRANCH_ID = @p_BRANCH_ID),
198
                                                     DEP_CODE = (SELECT TOP 1 DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID = @p_DEP_ID)
199
                          WHERE EMP_CODE = @p_EMP_CODE AND USER_DOMAIN = @TLNAME
200
    
201
                          UPDATE TL_USER SET TLSUBBRID = @p_BRANCH_ID, SECUR_CODE = @p_DEP_ID, DEP_ID = @p_DEP_ID
202
                          WHERE TLNANME = @TLNAME
203
                      END
204
    
205
                END  
206
                
207
                --PHUCVH 22/12/22 CHECK NẾU MA CHUC DANH THAY ĐỔI THÌ UPDATE
208
                IF(EXISTS(SELECT 1 FROM CM_EMPLOYEE A WHERE A.EMP_CODE = @p_EMP_CODE
209
                                AND ISNULL(A.POS_CODE,'') <> ISNULL(@p_POS_CODE,'')))
210
                BEGIN
211
                     UPDATE CM_EMPLOYEE SET POS_CODE = @p_POS_CODE, POS_NAME = @p_POS_NAME
212
                     WHERE EMP_CODE = @p_EMP_CODE 
213
    
214
                     UPDATE CM_EMPLOYEE_LOG SET POS_CODE = @p_POS_CODE, POS_NAME = @p_POS_NAME
215
                     WHERE EMP_CODE = @p_EMP_CODE AND USER_DOMAIN = @TLNAME
216
                END                     
217
    
218
                --IF @@Error <> 0 GOTO ABORT
219
          		  --SET @Message = N'Đồng bộ điều chuyển nhân sự thành công'
220
             END
221
             ELSE
222
             BEGIN
223
                --KHÔNG CÓ TRONG HỆ THỐNG
224
                --THÊM THÔNG TIN NHÂN VIÊN
225
                		EXEC SYS_CodeMasters_Gen 'CM_EMPLOYEE', @l_EMP_ID out		       
226
                		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])
227
                		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 )
228
                    --IF @@Error <> 0 GOTO ABORT
229
            				--SET @Message = N'Đồng bộ nhân viên mới thành công'
230
             END
231
            END
232
    
233
            
234
          END
235
END