Project

General

Profile

DONG_BO_NV_1.txt

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

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

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