Project

General

Profile

f2.txt

Luc Tran Van, 11/16/2023 05:16 PM

 
1
CREATE OR ALTER PROCEDURE dbo.ASS_TRANSFER_MULTI_Master_SendAppr 
2
@p_TRANSFER_MULTI_ID	VARCHAR(15)  = NULL,
3
@p_TYPE_APP NVARCHAR(15) = NUll,
4
@p_USER_LOGIN   VARCHAR(15) = NULL,
5
@p_DESC NVARCHAR(max) = NULL
6
AS
7

    
8
DECLARE @ASSET_ID_LST VARCHAR(MAX), @CURRENT_TRANS_ERROR NVARCHAR(MAX)
9

    
10

    
11
BEGIN TRANSACTION
12
DECLARE @PRICE_OF_ASSET DECIMAL = (SELECT MAX(A.BUY_PRICE) FROM ASS_TRANSFER_MULTI_DT ATMD LEFT JOIN ASS_MASTER A ON A.ASSET_ID = ATMD.ASSET_ID WHERE ATMD.TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID)
13

    
14
DECLARE @BRANCH_ID VARCHAR(15) = (SELECT TU.TLSUBBRID FROM TL_USER TU WHERE TU.TLNANME = @p_USER_LOGIN)
15
DECLARE @DEP_ID VARCHAR(15) = (SELECT TU.SECUR_CODE FROM TL_USER TU WHERE TU.TLNANME = @p_USER_LOGIN)
16
DECLARE @NOTISENDAPP NVARCHAR(MAX) = N' đã được gửi phê duyệt thành công. Vui lòng đợi bộ phận phê duyệt xác nhận.'
17
DECLARE @NOTISENDAPPZ NVARCHAR(MAX) = N'Trưởng đơn vị ' + (SELECT CB.BRANCH_NAME FROM TL_USER TU LEFT JOIN CM_BRANCH CB ON TU.TLSUBBRID = CB.BRANCH_ID WHERE TU.TLNANME = @p_USER_LOGIN) 
18
                    + N' xác nhận điều chuyển'
19

    
20
DECLARE @SL_PYC INT
21
DECLARE @TYPE_PYC VARCHAR(15) = (SELECT TOP 1 B.TYPE_XL FROM ASS_TRANSFER_MULTI_MASTER A
22
                                    LEFT JOIN TR_REQUEST_SHOP_DOC_DT B ON A.REQ_ID = B.REQ_DOC_ID
23
                                    WHERE TRANS_MULTI_MASTER_ID=@p_TRANSFER_MULTI_ID)
24
DECLARE @PROCESS_C VARCHAR(20) = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_TRANSFER_MULTI_ID AND STATUS='C')
25
DECLARE @PARENT_ID VARCHAR(20)
26
DECLARE @DEP_QLTS VARCHAR(20), @DEP_DVNB VARCHAR(20), @DEP_HTKD VARCHAR(20)
27
SET @DEP_QLTS = (SELECT TOP 1 sp.ParaValue FROM SYS_PARAMETERS sp WHERE sp.ParaKey = 'DEP_QLTS')
28
SET @DEP_DVNB = (SELECT TOP 1 sp.ParaValue FROM SYS_PARAMETERS sp WHERE sp.ParaKey = 'DEP_TTQLTS')
29
SET @DEP_HTKD = (SELECT TOP 1 sp.ParaValue FROM SYS_PARAMETERS sp WHERE sp.ParaKey = 'DEP_KQLTS') 
30
IF (@p_TYPE_APP = 'S_TDV')
31
BEGIN
32
    -- KIỂM TRA TÀI SẢN ĐANG TREO TRONG GIAO DỊCH KHÁC
33
        SET @ASSET_ID_LST = (SELECT B.ASSET_ID + '|' FROM (SELECT A.ASSET_ID
34
            FROM ASS_TRANSFER_MULTI_DT A 
35
            where A.TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID) B
36
        FOR XML PATH (''))
37
        SELECT @CURRENT_TRANS_ERROR = dbo.ASSET_CHECK_CURRENT_TRANS(@ASSET_ID_LST)
38
        IF(@CURRENT_TRANS_ERROR IS NOT NULL AND @CURRENT_TRANS_ERROR <> '')
39
        BEGIN
40
      		ROLLBACK TRANSACTION
41
            SELECT '-1' as Result, '' WH_O_HCQT_MUL_ID, @CURRENT_TRANS_ERROR ErrorDesc
42
            RETURN '-1'
43
        END
44
    --CHECK MAPPING TT/PB/K
45
    DECLARE @HS TABLE(ID INT IDENTITY, DEP VARCHAR(50), KHOI VARCHAR(50), TT VARCHAR(50))
46

    
47
    INSERT INTO @HS SELECT A.DEPT_ID, A.KHOI_ID, A.CENTER_ID FROM ASS_TRANSFER_MULTI_DT A 
48
    LEFT JOIN CM_BRANCH CB ON A.BRANCH_ID = CB.BRANCH_ID WHERE A.TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID AND CB.BRANCH_TYPE ='HS'
49

    
50
    IF(EXISTS(SELECT * FROM @HS WHERE 1=1 AND (DEP IS NULL OR DEP = '' )
51
                                          AND (KHOI IS NULL OR KHOI = '' )
52
                                          AND (TT IS NULL OR TT = '' )))
53
  	BEGIN
54
  		ROLLBACK TRANSACTION
55
  		SELECT '-1' Result, N'Gửi duyệt thất bại! Thông tin điều chuyển phiếu số: '+@p_TRANSFER_MULTI_ID+
56
  		N'</br> Đơn vị nhận Hội sở cần chọn Phòng ban nhận hoặc Khối nhận hoặc Trung tâm nhận. Vui lòng xử lý phiếu' ErrorDesc
57
  		RETURN '-1'
58
  	END
59
    UPDATE ASS_TRANSFER_MULTI_MASTER SET AUTH_STATUS = 'U'
60
	WHERE TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID
61
	IF @@ERROR <> 0 GOTO ABORT
62
    --khiemchg tạo bảng tạm chứa các loại tài sản điều chuyển sai số lượng
63
--    DECLARE @check_QTY TABLE(QTY_DC DECIMAL, GROUP_CODE NVARCHAR(MAX),GROUP_NAME NVARCHAR(MAX), QTY_PYC DECIMAL)
64
--    INSERT INTO @check_QTY SELECT A.QTY AS QTY_DC,A.GROUP_CODE, A.GROUP_NAME, ISNULL(B.QTY_ETM, 0.00) AS QTY_PYC 
65
--                            FROM                                   
66
--                                (SELECT COUNT(A.ASSET_ID) AS QTY, AG.GROUP_CODE, AG.GROUP_NAME 
67
--                                    FROM ASS_TRANSFER_MULTI_DT A
68
--                                    LEFT JOIN ASS_MASTER AM ON A.ASSET_ID = AM.ASSET_ID
69
--                                    LEFT JOIN ASS_GROUP AG ON AM.GROUP_ID = AG.GROUP_ID
70
--                                    LEFT JOIN ASS_TRANSFER_MULTI_MASTER ATMM ON A.TRANS_MULTI_MASTER_ID = ATMM.TRANS_MULTI_MASTER_ID
71
--                                    WHERE ATMM.REQ_ID = (SELECT ATM.REQ_ID FROM ASS_TRANSFER_MULTI_MASTER ATM WHERE ATM.TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID)
72
--                                    AND (ATMM.AUTH_STATUS <> 'E' OR ATMM.AUTH_STATUS <> 'R')
73
--                                    GROUP BY AG.GROUP_CODE, AG.GROUP_NAME) A
74
--                            LEFT JOIN (SELECT TRSDD.QTY_ETM, AG2.GROUP_CODE, AG2.GROUP_NAME FROM TR_REQUEST_SHOP_DOC_DT TRSDD 
75
--                                        LEFT JOIN ASS_GROUP AG2 ON TRSDD.ASS_GROUP_ID = AG2.GROUP_ID
76
--                                        WHERE 
77
--                                        TRSDD.REQ_DOC_ID = (SELECT ATMM.REQ_ID FROM ASS_TRANSFER_MULTI_MASTER ATMM WHERE ATMM.TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID)
78
--                                        AND TRSDD.TYPE_XL = 'CPDC') B ON A.GROUP_CODE = B.GROUP_CODE 
79
--                            WHERE A.QTY > B.QTY_ETM
80
--    
81
--    DECLARE @QTY_ERROR NVARCHAR(MAX) = (SELECT STUFF((SELECT ', ' + GROUP_NAME FROM @check_QTY FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, ''))
82
--    IF((SELECT COUNT(*) FROM @check_QTY) > 0)
83
--  	BEGIN
84
--  		ROLLBACK TRANSACTION
85
--  		SELECT '-1' Result, N'Gửi duyệt thất bại! Thông tin điều chuyển phiếu số: '+@p_TRANSFER_MULTI_ID + '<br/>' +
86
--  		N' Số lượng tài sản thuộc loại: "'+ @QTY_ERROR + N'" không được lớn hơn số lượng tài sản được cấp điều chuyển theo Phiếu yêu cầu.'
87
--        + N' Vui lòng xử lý phiếu' ErrorDesc
88
--  		RETURN '-1'
89
--  	END
90
   --khiemchg.
91
    
92

    
93
	IF(EXISTS(SELECT 1 FROM dbo.ASS_TRANSFER_MULTI_MASTER WHERE TRANS_MULTI_MASTER_ID=@p_TRANSFER_MULTI_ID AND AUTH_STATUS='R'))
94
  	BEGIN
95
  		ROLLBACK TRANSACTION
96
  		SELECT '-1' Result, N'Gửi duyệt thất bại! Thông tin điều chuyển phiếu số: '+@p_TRANSFER_MULTI_ID+
97
  		N' đang bị từ chối. Vui lòng xử lý phiếu' ErrorDesc
98
  		RETURN '-1'
99
  	END
100
    IF(EXISTS(SELECT 1 FROM dbo.ASS_TRANSFER_MULTI_MASTER WHERE TRANS_MULTI_MASTER_ID=@p_TRANSFER_MULTI_ID AND AUTH_STATUS='R'))
101
  	BEGIN
102
  		ROLLBACK TRANSACTION
103
  		SELECT '-1' Result, N'Gửi duyệt thất bại! Thông tin điều chuyển phiếu số: '+@p_TRANSFER_MULTI_ID+
104
  		N' đang bị từ chối. Vui lòng xử lý phiếu' ErrorDesc
105
  		RETURN '-1'
106
  	END
107
    IF(@TYPE_PYC = 'CPDC')
108
    BEGIN
109
    	SET @SL_PYC = (SELECT SUM(ISNULL(B.QTY_ETM, 0)) FROM ASS_TRANSFER_MULTI_MASTER A
110
                        LEFT JOIN TR_REQUEST_SHOP_DOC_DT B ON A.REQ_ID = B.REQ_DOC_ID
111
                        WHERE TRANS_MULTI_MASTER_ID=@p_TRANSFER_MULTI_ID)
112
        IF((SELECT COUNT(ASSET_ID) FROM ASS_TRANSFER_MULTI_DT WHERE TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID) > @SL_PYC)
113
        BEGIN
114
        	ROLLBACK TRANSACTION
115
      		SELECT '-1' Result, N'Gửi duyệt thất bại! Thông tin điều chuyển phiếu số: '+@p_TRANSFER_MULTI_ID+
116
      		N' sai số lượng so với PYC được chọn. Vui lòng xử lý phiếu' ErrorDesc
117
      		RETURN '-1'
118
        END
119
    END
120

    
121
	UPDATE ASS_TRANSFER_MULTI_MASTER SET AUTH_STATUS = 'U'
122
	WHERE TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID
123
	IF @@ERROR <> 0 GOTO ABORT
124

    
125
	-- HUYHT 06/05/2022: THAY ĐỔI TRẠNG THÁI UPDATE CŨ THÀNH UPDATE_HC
126
	UPDATE dbo.PL_PROCESS SET PROCESS_ID = 'UPDATE_HC' WHERE REQ_ID = @p_TRANSFER_MULTI_ID AND PROCESS_ID = 'UPDATE'
127
    UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C', RECEPTION_DT=GETDATE() WHERE REQ_ID=@p_TRANSFER_MULTI_ID AND PROCESS_ID='QLTS_D'
128
	INSERT INTO dbo.PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
129
						VALUES(@p_TRANSFER_MULTI_ID, 'SEND', @p_USER_LOGIN, GETDATE(), 
130
					    N'Gửi Trưởng đơn vị phê duyệt', N'Nhân viên tạo phiếu và gửi phê duyệt thành công')
131
    UPDATE PL_REQUEST_PROCESS SET STATUS = 'P' WHERE REQ_ID = @p_TRANSFER_MULTI_ID AND PROCESS_ID = 'ADDNEW'
132
    UPDATE ASS_TRANSFER_MULTI_MASTER SET STATUS = 'QLTS_D'
133
	WHERE TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID
134
                --khiemchg update treo tài sản khi thực hiện điều chuyển
135
                UPDATE ASS_MASTER SET CURRENT_TRANS = @p_TRANSFER_MULTI_ID, CURRENT_TRANS_TYPE = 'ASS_TF_MUL' 
136
                WHERE ASSET_ID IN (SELECT ASSET_ID FROM ASS_TRANSFER_MULTI_DT WHERE TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID)
137
	IF @@ERROR <> 0 GOTO ABORT
138
    BEGIN
139
--        IF(@PRICE_OF_ASSET <= 30000000)
140
--            BEGIN
141
                --SET @PARENT_ID = 'QLTS_D'
142
--            END
143
        --IF(@PRICE_OF_ASSET > 30000000 AND @PRICE_OF_ASSET <= 50000000)
144
--        IF(@PRICE_OF_ASSET > 30000000)
145
--            BEGIN
146
--                INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID, DEP_ID)
147
--        		 VALUES(@p_TRANSFER_MULTI_ID,'TT_DVNB','U','GDDV_QLTS','DV0001','QLTS_D', @DEP_DVNB)
148
--                SET @PARENT_ID = 'TT_DVNB'
149
--            END
150
--        ELSE IF (@PRICE_OF_ASSET > 50000000 AND @PRICE_OF_ASSET <= 100000000)
151
--            BEGIN
152
--                INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID, DEP_ID)
153
--        		 VALUES(@p_TRANSFER_MULTI_ID,'TT_DVNB','C','GDDV_QLTS','DV0001','QLTS_D', @DEP_DVNB)
154
--
155
----                INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID, DEP_ID)
156
----        		 VALUES(@p_TRANSFER_MULTI_ID,'K_HTKD','U','GDDV','DV0001','TT_DVNB', @DEP_HTKD)
157
--        
158
--                SET @PARENT_ID = 'TT_DVNB'
159
--            END
160
--        ELSE IF (@PRICE_OF_ASSET > 100000000)
161
--            BEGIN
162
--                INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID, DEP_ID)
163
--        		 VALUES(@p_TRANSFER_MULTI_ID,'TT_DVNB','C','GDDV_QLTS','DV0001','QLTS_D', @DEP_DVNB)
164
--
165
----                INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID, DEP_ID)
166
----        		 VALUES(@p_TRANSFER_MULTI_ID,'K_HTKD','U','GDDV','DV0001','TT_DVNB', @DEP_HTKD)
167
----              
168
----                INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID)
169
----        		 VALUES(@p_TRANSFER_MULTI_ID,'TGD','U','TGD','DV0001','K_HTKD')
170
--
171
--                SET @PARENT_ID = 'TT_DVNB'
172
--            END
173

    
174
            SET @PARENT_ID = 'QLTS_D'
175

    
176
            --Khiemchg lấy danh sách đơn vị nhận và cho
177
            DECLARE @lstBranch TABLE
178
            (
179
            	ID INT IDENTITY,
180
            	Branch_Id VARCHAR(50),
181
            	Dep_Id VARCHAR(50),
182
            	Center_Id VARCHAR(50),
183
            	Khoi_Id VARCHAR(50)
184
            )
185
            DECLARE @temp TABLE
186
            (
187
            	BRN_SD VARCHAR(50),
188
            	K_SD VARCHAR(50),
189
            	TT_SD VARCHAR(50),
190
            	DEP_SD VARCHAR(50),
191
            	BRN_N VARCHAR(50),
192
            	K_N VARCHAR(50),
193
            	TT_N VARCHAR(50),
194
            	DEP_N VARCHAR(50)
195
            )
196
            INSERT INTO @temp 
197
            SELECT DISTINCT BRANCH_ID_OLD, KHOI_ID_OLD, CENTER_ID_OLD, DEPT_ID_OLD,
198
                            BRANCH_ID, KHOI_ID, CENTER_ID, DEPT_ID
199
                             
200
            FROM ASS_TRANSFER_MULTI_DT 
201
            WHERE TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID
202
            
203
--            DELETE @temp WHERE (BRN_SD = BRN_N AND DEP_SD = DEP_N AND K_SD = K_N AND TT_SD = TT_N)
204
--                            OR (BRN_SD = BRN_N AND DEP_SD = DEP_N AND K_SD = K_N AND TT_SD = TT_N)
205
            DELETE @temp WHERE (BRN_SD = BRN_N AND DEP_SD = DEP_N)
206
            
207
                    
208
                      
209
            INSERT INTO @lstBranch(Branch_Id, Dep_Id, Center_Id, Khoi_Id) SELECT DISTINCT BRN_SD, DEP_SD, TT_SD, K_SD FROM @temp 
210
            INSERT INTO @lstBranch(Branch_Id, Dep_Id, Center_Id, Khoi_Id) SELECT DISTINCT BRN_N, DEP_N, TT_N, K_N FROM @temp 
211

    
212
            DECLARE @int INT = 1
213
            DECLARE @countt INT = (SELECT COUNT(ID) FROM @lstBranch)
214
            --IF(@count > 1)
215
            BEGIN
216
            	WHILE @int <= @countt
217
                BEGIN 
218
                    DECLARE @BRANCH VARCHAR(20) = (SELECT Branch_Id FROM @lstBranch WHERE ID = @int)
219
                    DECLARE @DEPT VARCHAR(20) = (SELECT Dep_Id FROM @lstBranch WHERE ID = @int)
220
                    DECLARE @CENTER VARCHAR(20) = (SELECT Center_Id FROM @lstBranch WHERE ID = @int)
221
                    DECLARE @KHOI VARCHAR(20) = (SELECT Khoi_Id FROM @lstBranch WHERE ID = @int)
222
                    
223

    
224
                    IF(@BRANCH <> '' OR @BRANCH IS NOT NULL)
225
                    BEGIN
226
                        IF((@KHOI IS NOT NULL AND @KHOI <> '') AND (@CENTER IS NOT NULL AND @CENTER <> '') AND (@DEPT IS NOT NULL AND @DEPT <> ''))
227
                            BEGIN
228
                            	INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID, DEP_ID)
229
                    		    VALUES(@p_TRANSFER_MULTI_ID,'XNGN','U','GDDV',@BRANCH,@PARENT_ID, @DEPT)
230
                            END
231
                        ELSE IF((@KHOI IS NOT NULL AND @KHOI <> '') AND (@CENTER IS NOT NULL AND @CENTER <> '') AND (@DEPT IS NULL OR @DEPT = ''))
232
                            BEGIN
233
                            	INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID, DEP_ID)
234
                    		    VALUES(@p_TRANSFER_MULTI_ID,'XNGN','U','GDDV',@BRANCH,@PARENT_ID, @CENTER)
235
                            END
236
                        ELSE IF((@KHOI IS NOT NULL AND @KHOI <> '') AND (@CENTER IS NULL OR @CENTER = '') AND (@DEPT IS NULL OR @DEPT = ''))
237
                            BEGIN
238
                            	INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID, DEP_ID)
239
                    		    VALUES(@p_TRANSFER_MULTI_ID,'XNGN','U','GDDV',@BRANCH,@PARENT_ID, @KHOI)
240
                            END
241
                        ELSE 
242
                            BEGIN
243
                            	INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID, DEP_ID)
244
                    		    VALUES(@p_TRANSFER_MULTI_ID,'XNGN','U','GDDV',@BRANCH,@PARENT_ID, @DEPT)
245
                            END
246
                    END
247
                    SET @int = @int + 1
248
                END
249
            END
250
            IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS PRP WHERE PRP.REQ_ID = @p_TRANSFER_MULTI_ID AND PRP.PROCESS_ID = 'XNGN')) SET @PARENT_ID = 'XNGN'
251
            INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],PARENT_PROCESS_ID)
252
		        VALUES(@p_TRANSFER_MULTI_ID,'APPROVE','U',@PARENT_ID)  
253
        END
254
END
255
ELSE IF (@p_TYPE_APP = 'CONFIRM')
256
BEGIN
257
        IF (@PROCESS_C = 'XNGN')
258
        BEGIN
259
        IF((SELECT CB.BRANCH_TYPE FROM TL_USER TU LEFT JOIN CM_BRANCH CB ON TU.TLSUBBRID = CB.BRANCH_ID WHERE TU.TLNANME = @p_USER_LOGIN) = 'HS')
260
        BEGIN
261
        SET @NOTISENDAPP = N' Trưởng đơn vị ' + (SELECT CB.DEP_NAME FROM TL_USER TU LEFT JOIN CM_DEPARTMENT CB ON TU.SECUR_CODE = CB.DEP_ID WHERE TU.TLNANME = @p_USER_LOGIN)
262
                        + N' đã xác nhận điều chuyển thành công'
263
        SET @NOTISENDAPPZ = N' Trưởng đơn vị ' + (SELECT CB.DEP_NAME FROM TL_USER TU LEFT JOIN CM_DEPARTMENT CB ON TU.SECUR_CODE = CB.DEP_ID WHERE TU.TLNANME = @p_USER_LOGIN)
264
                        + N' đã xác nhận điều chuyển'
265
        END
266
        UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P', CHECKER_ID = @p_USER_LOGIN, APPROVE_DT=GETDATE() 
267
        WHERE REQ_ID = @p_TRANSFER_MULTI_ID AND PROCESS_ID='XNGN' 
268
              AND ((@BRANCH_ID = 'DV0001' AND BRANCH_ID = @BRANCH_ID AND (DEP_ID = @DEP_ID
269
                    OR DEP_ID IN (SELECT DEPT_ID FROM TL_USER_GET_ROLES(@p_USER_LOGIN) GROUP BY DEPT_ID))
270
                    ) OR (@BRANCH_ID <> 'DV0001' AND BRANCH_ID = @BRANCH_ID))
271
              AND STATUS = 'C'
272

    
273
            	INSERT INTO dbo.PL_PROCESS
274
            	(
275
            		REQ_ID,
276
            		PROCESS_ID,
277
            		CHECKER_ID,
278
            		APPROVE_DT,
279
            		PROCESS_DESC,
280
            		NOTES
281
            	)
282
            	VALUES
283
            	(   @p_TRANSFER_MULTI_ID,       
284
            		'CONFIRM',
285
            		@p_USER_LOGIN,        
286
            		GETDATE(), 
287
            		N'Trưởng đơn vị xác nhận thành công' ,      
288
            		@NOTISENDAPPZ      
289
            	)
290
            
291
            IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE PROCESS_ID = 'XNGN' AND STATUS = 'C' AND REQ_ID = @p_TRANSFER_MULTI_ID) AND (SELECT ATMM.AUTH_STATUS FROM ASS_TRANSFER_MULTI_MASTER ATMM WHERE ATMM.TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID) = 'U')
292
            BEGIN
293
                UPDATE ASS_TRANSFER_MULTI_MASTER SET STATUS = 'APPROVE' , AUTH_STATUS = 'A' WHERE [TRANS_MULTI_MASTER_ID] = @p_TRANSFER_MULTI_ID  
294
                            
295
                UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C', APPROVE_DT=GETDATE() 
296
                WHERE REQ_ID = @p_TRANSFER_MULTI_ID AND PROCESS_ID = 'APPROVE' AND STATUS = 'U'
297
                             
298
                INSERT INTO dbo.PL_PROCESS
299
            	(
300
            		REQ_ID,
301
            		PROCESS_ID,
302
            		APPROVE_DT,
303
                    PROCESS_DESC,
304
            		NOTES
305
            	)
306
            	VALUES
307
            	(   @p_TRANSFER_MULTI_ID,       
308
            		'CONFIRMED',       
309
            		GETDATE(),
310
                    N'Hoàn thành xác nhận tài sản',
311
                    N'Phiếu hoàn thành xác nhận tài sản sau khi Trưởng đơn vị bên cho và nhận xác nhận'
312
            	)
313
            END
314
    END
315
END
316
ELSE IF (@p_TYPE_APP = 'KT')
317
BEGIN
318
        IF((SELECT CORE_NOTE FROM ASS_TRANSFER_MULTI_MASTER WHERE TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID) IS NULL OR (SELECT CORE_NOTE FROM ASS_TRANSFER_MULTI_MASTER WHERE TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID) = '')
319
        BEGIN
320
        	ROLLBACK TRANSACTION
321
      		SELECT '-1' Result, N'Gửi duyệt thất bại! Thông tin điều chuyển phiếu số: '+@p_TRANSFER_MULTI_ID+
322
      		N' đang trống diễn giải hạch toán' ErrorDesc
323
      		RETURN '-1'
324
        END
325
        UPDATE ASS_TRANSFER_MULTI_MASTER SET AUTH_STATUS_KT = 'U' WHERE TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID
326

    
327
            	INSERT INTO dbo.PL_PROCESS
328
            	(
329
            		REQ_ID,
330
            		PROCESS_ID,
331
            		CHECKER_ID,
332
            		APPROVE_DT,
333
            		PROCESS_DESC,
334
            		NOTES
335
            	)
336
            	VALUES
337
            	(   @p_TRANSFER_MULTI_ID,       
338
            		'GDV',
339
            		@p_USER_LOGIN,        
340
            		GETDATE(), 
341
            		N'Giao dịch viên Kế toán gửi Kiểm soát viên phê duyệt' ,      
342
            		N'Giao dịch viên Kế toán gửi duyệt'      
343
            	)
344
END
345

    
346

    
347
--PHUCVH 06/03/23 BỔ SUNG MESSAGE
348
DECLARE @MESSAGE NVARCHAR(MAX)
349
IF (@p_TYPE_APP = 'S_TDV')
350
BEGIN
351
    DECLARE @REQ_DOC_ID VARCHAR(15) = (SELECT TOP 1 atmm.REQ_ID FROM ASS_TRANSFER_MULTI_MASTER atmm WHERE atmm.TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID)
352
    IF(@REQ_DOC_ID IS NOT NULL AND @REQ_DOC_ID <> '')
353
    BEGIN
354
        SET @MESSAGE = '<br /><br />' + (
355
            SELECT REPLACE(
356
            (SELECT STUFF((SELECT ' ' + DDDD.MESSAGE FROM ( SELECT CASE WHEN ROW_NUMBER() OVER (ORDER BY (SELECT 0)) = 1 THEN ''ELSE '/' END + N'Loại tài sản: ' + ISNULL(BB.GROUP_NAME,'') + N' | Số lượng yêu cầu: ' + CONVERT(VARCHAR(10),ISNULL(AA.QTY_ETM,0)) + N' | Số lượng đã điều chuyển: ' + CONVERT(VARCHAR(10),ISNULL(AA.ALLOCATED,0)) + 
357
              N' | Số lượng điều chuyển trong phiếu hiện tại: ' + CONVERT(VARCHAR(10),ISNULL((SELECT SUM(TMP.COUNT) FROM (
358
                                                                                          (SELECT COUNT(*) AS COUNT
359
                                                                                          FROM ASS_TRANSFER_MULTI_DT A
360
                                                                                          LEFT JOIN ASS_TRANSFER_MULTI_MASTER B ON A.TRANS_MULTI_MASTER_ID = B.TRANS_MULTI_MASTER_ID
361
                                                                                          LEFT JOIN ASS_MASTER C ON A.ASSET_ID = C.ASSET_ID
362
                                                                                          WHERE A.TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID
363
                                                                                          GROUP BY B.REQ_ID, C.GROUP_ID, C.REQ_ID
364
                                                                                          HAVING B.REQ_ID = @REQ_DOC_ID
365
                                                                                            AND ((C.GROUP_ID = BB.GROUP_ID
366
                                                                                                      AND (SELECT COUNT(*) FROM ASS_GROUP ag WHERE ag.GROUP_CODE = BB.GROUP_CODE 
367
                                                                                                                    AND ag.GROUP_ID IN (SELECT trsdd.ASS_GROUP_ID FROM TR_REQUEST_SHOP_DOC_DT trsdd WHERE trsdd.REQ_DOC_ID = AA.REQ_DOC_ID 
368
                                                                                                                          AND trsdd.REQ_DT_TYPE = 'XKSD' AND trsdd.TYPE_XL = 'CPDC'))>1 )
369
                                                                                                  OR C.GROUP_ID IN (SELECT ag.GROUP_ID FROM ASS_GROUP ag WHERE ag.GROUP_CODE = BB.GROUP_CODE))
370
                                                                                            AND (C.REQ_ID IS NULL OR C.REQ_ID = '')))TMP),0)) AS MESSAGE
371
              FROM TR_REQUEST_SHOP_DOC_DT AA
372
              LEFT JOIN ASS_GROUP BB ON AA.ASS_GROUP_ID = BB.GROUP_ID
373
              WHERE AA.REQ_DOC_ID = @REQ_DOC_ID AND AA.REQ_DT_TYPE = 'XKSD' AND AA.TYPE_XL = 'CPDC') DDDD FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '')),'/','<br />'))
374
    END
375

    
376

    
377
--CHECK ALLOCATED
378

    
379
DECLARE @TBL_CHECK_UPD TABLE (REQDT_ID VARCHAR(15), ASS_GROUP_ID VARCHAR(15), REQ_DOC_ID VARCHAR(15))
380
DECLARE @TBL_GROUP_CODE_ASS_USE TABLE (GROUP_ID VARCHAR(15))
381

    
382
INSERT INTO @TBL_CHECK_UPD
383
SELECT A.REQDT_ID, A.ASS_GROUP_ID,A.REQ_DOC_ID
384
FROM TR_REQUEST_SHOP_DOC_DT A
385
WHERE A.REQ_DOC_ID = @REQ_DOC_ID AND A.REQ_DT_TYPE = 'XKSD' AND A.TYPE_XL = 'CPDC'
386

    
387
DECLARE @C_REQDT_ID VARCHAR(15), @C_ASS_GROUP_ID VARCHAR(15), @C_REQ_DOC_ID VARCHAR(15)
388
DECLARE @IS_MULTI_GROUP VARCHAR(1) = '0'
389
DECLARE DATA_CURSOR_CHECK_UPD CURSOR FOR
390
SELECT * FROM @TBL_CHECK_UPD
391

    
392
OPEN DATA_CURSOR_CHECK_UPD
393

    
394
FETCH NEXT FROM DATA_CURSOR_CHECK_UPD INTO
395
@C_REQDT_ID,@C_ASS_GROUP_ID,@C_REQ_DOC_ID
396

    
397
DECLARE @ALLOCATED INT,@ALLOCATED_CURR INT, @ALLOCATED_OLD INT, @QTY_ETM INT
398

    
399
WHILE @@FETCH_STATUS = 0
400
BEGIN
401
    SET @IS_MULTI_GROUP = '0'
402
    DELETE @TBL_GROUP_CODE_ASS_USE
403
    INSERT INTO @TBL_GROUP_CODE_ASS_USE (GROUP_ID)
404
    SELECT A.GROUP_ID FROM ASS_GROUP A WHERE A.GROUP_CODE IN (SELECT B.GROUP_CODE FROM ASS_GROUP B WHERE B.GROUP_ID  = @C_ASS_GROUP_ID)
405

    
406
    IF((SELECT COUNT(*) FROM @TBL_GROUP_CODE_ASS_USE WHERE GROUP_ID IN (SELECT trsdd.ASS_GROUP_ID FROM TR_REQUEST_SHOP_DOC_DT trsdd WHERE trsdd.REQ_DOC_ID = @C_REQ_DOC_ID AND trsdd.REQ_DT_TYPE = 'XKSD' AND trsdd.TYPE_XL = 'CPDC')) > 1)
407
    BEGIN
408
        SET @IS_MULTI_GROUP = '1'
409
    END
410

    
411
    SET @ALLOCATED_CURR = (SELECT SUM(TMP.COUNT) FROM (
412
                  (SELECT COUNT(*) AS COUNT
413
                  FROM ASS_TRANSFER_MULTI_DT A
414
                  LEFT JOIN ASS_TRANSFER_MULTI_MASTER B ON A.TRANS_MULTI_MASTER_ID = B.TRANS_MULTI_MASTER_ID  
415
                  LEFT JOIN ASS_MASTER C ON A.ASSET_ID = C.ASSET_ID
416
                  WHERE A.TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID
417
                  GROUP BY B.REQ_ID, C.GROUP_ID, C.REQ_ID
418
                  HAVING B.REQ_ID = @C_REQ_DOC_ID
419
                    AND C.GROUP_ID IN (SELECT GROUP_ID FROM @TBL_GROUP_CODE_ASS_USE WHERE ((@IS_MULTI_GROUP = '1' AND C.GROUP_ID = @C_ASS_GROUP_ID) OR @IS_MULTI_GROUP = '0'))
420
                    AND (C.REQ_ID IS NULL OR C.REQ_ID = '')))TMP)
421
    
422
    SELECT TOP 1 @ALLOCATED_OLD = trsdd.ALLOCATED, @QTY_ETM = trsdd.QTY_ETM FROM TR_REQUEST_SHOP_DOC_DT trsdd WHERE trsdd.REQDT_ID = @C_REQDT_ID
423

    
424

    
425
    IF(@QTY_ETM < (ISNULL(@ALLOCATED_OLD,0) + ISNULL(@ALLOCATED_CURR,0)))
426
    BEGIN
427
    	ROLLBACK TRANSACTION
428
      CLOSE DATA_CURSOR_CHECK_UPD
429
      DEALLOCATE DATA_CURSOR_CHECK_UPD
430
    	SELECT '-1' as Result, '' USER_MASTER_ID, N'Số lượng cấp phát vượt yêu cầu của đơn vị' +ISNULL(@MESSAGE,',') ErrorDesc
431
    	RETURN '-1'
432
    END
433

    
434
    FETCH NEXT FROM DATA_CURSOR_CHECK_UPD INTO
435
    @C_REQDT_ID,@C_ASS_GROUP_ID,@C_REQ_DOC_ID
436
END
437
CLOSE DATA_CURSOR_CHECK_UPD
438
DEALLOCATE DATA_CURSOR_CHECK_UPD
439

    
440
END
441

    
442

    
443

    
444

    
445

    
446
COMMIT TRANSACTION   
447
SELECT '0' as Result, N'Hồ sơ số: '+@p_TRANSFER_MULTI_ID+@NOTISENDAPP + ISNULL(@MESSAGE,'') ErrorDesc, @p_TRANSFER_MULTI_ID TRANS_MULTI_MASTER_ID
448
RETURN '0'
449

    
450
ABORT:
451
BEGIN
452
	ROLLBACK TRANSACTION
453
	SELECT '-1' as Result, '' TRANS_MULTI_MASTER_ID, '' ErrorDesc
454
	RETURN '-1'
455
END