Project

General

Profile

DC_XN.txt

Luc Tran Van, 04/10/2023 11:21 AM

 
1
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) OR (@BRANCH_ID <> 'DV0001' AND BRANCH_ID = @BRANCH_ID))
269
              AND STATUS = 'C'
270

    
271
            	INSERT INTO dbo.PL_PROCESS
272
            	(
273
            		REQ_ID,
274
            		PROCESS_ID,
275
            		CHECKER_ID,
276
            		APPROVE_DT,
277
            		PROCESS_DESC,
278
            		NOTES
279
            	)
280
            	VALUES
281
            	(   @p_TRANSFER_MULTI_ID,       
282
            		'CONFIRM',
283
            		@p_USER_LOGIN,        
284
            		GETDATE(), 
285
            		N'Trưởng đơn vị xác nhận thành công' ,      
286
            		@NOTISENDAPPZ      
287
            	)
288
            
289
            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')
290
            BEGIN
291
                UPDATE ASS_TRANSFER_MULTI_MASTER SET STATUS = 'APPROVE' , AUTH_STATUS = 'A' WHERE [TRANS_MULTI_MASTER_ID] = @p_TRANSFER_MULTI_ID  
292
                            
293
                UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C', APPROVE_DT=GETDATE() 
294
                WHERE REQ_ID = @p_TRANSFER_MULTI_ID AND PROCESS_ID = 'APPROVE' AND STATUS = 'U'
295
                             
296
                INSERT INTO dbo.PL_PROCESS
297
            	(
298
            		REQ_ID,
299
            		PROCESS_ID,
300
            		APPROVE_DT,
301
                    PROCESS_DESC,
302
            		NOTES
303
            	)
304
            	VALUES
305
            	(   @p_TRANSFER_MULTI_ID,       
306
            		'CONFIRMED',       
307
            		GETDATE(),
308
                    N'Hoàn thành xác nhận tài sản',
309
                    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'
310
            	)
311
            END
312
    END
313
END
314
ELSE IF (@p_TYPE_APP = 'KT')
315
BEGIN
316
        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) = '')
317
        BEGIN
318
        	ROLLBACK TRANSACTION
319
      		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+
320
      		N' đang trống diễn giải hạch toán' ErrorDesc
321
      		RETURN '-1'
322
        END
323
        UPDATE ASS_TRANSFER_MULTI_MASTER SET AUTH_STATUS_KT = 'U' WHERE TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID
324

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

    
344

    
345
--PHUCVH 06/03/23 BỔ SUNG MESSAGE
346
DECLARE @MESSAGE NVARCHAR(MAX)
347
IF (@p_TYPE_APP = 'S_TDV')
348
BEGIN
349
    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)
350
    IF(@REQ_DOC_ID IS NOT NULL AND @REQ_DOC_ID <> '')
351
    BEGIN
352
        SET @MESSAGE = '<br /><br />' + (
353
            SELECT REPLACE(
354
            (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)) + 
355
              N' | Số lượng điều chuyển trong phiếu hiện tại: ' + CONVERT(VARCHAR(10),ISNULL((SELECT SUM(TMP.COUNT) FROM (
356
                                                                                          (SELECT COUNT(*) AS COUNT
357
                                                                                          FROM ASS_TRANSFER_MULTI_DT A
358
                                                                                          LEFT JOIN ASS_TRANSFER_MULTI_MASTER B ON A.TRANS_MULTI_MASTER_ID = B.TRANS_MULTI_MASTER_ID
359
                                                                                          LEFT JOIN ASS_MASTER C ON A.ASSET_ID = C.ASSET_ID
360
                                                                                          WHERE A.TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID
361
                                                                                          GROUP BY B.REQ_ID, C.GROUP_ID, C.REQ_ID
362
                                                                                          HAVING B.REQ_ID = @REQ_DOC_ID
363
                                                                                            AND ((C.GROUP_ID = BB.GROUP_ID
364
                                                                                                      AND (SELECT COUNT(*) FROM ASS_GROUP ag WHERE ag.GROUP_CODE = BB.GROUP_CODE 
365
                                                                                                                    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 
366
                                                                                                                          AND trsdd.REQ_DT_TYPE = 'XKSD' AND trsdd.TYPE_XL = 'CPDC'))>1 )
367
                                                                                                  OR C.GROUP_ID IN (SELECT ag.GROUP_ID FROM ASS_GROUP ag WHERE ag.GROUP_CODE = BB.GROUP_CODE))
368
                                                                                            AND (C.REQ_ID IS NULL OR C.REQ_ID = '')))TMP),0)) AS MESSAGE
369
              FROM TR_REQUEST_SHOP_DOC_DT AA
370
              LEFT JOIN ASS_GROUP BB ON AA.ASS_GROUP_ID = BB.GROUP_ID
371
              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 />'))
372
    END
373

    
374

    
375
--CHECK ALLOCATED
376

    
377
DECLARE @TBL_CHECK_UPD TABLE (REQDT_ID VARCHAR(15), ASS_GROUP_ID VARCHAR(15), REQ_DOC_ID VARCHAR(15))
378
DECLARE @TBL_GROUP_CODE_ASS_USE TABLE (GROUP_ID VARCHAR(15))
379

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

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

    
390
OPEN DATA_CURSOR_CHECK_UPD
391

    
392
FETCH NEXT FROM DATA_CURSOR_CHECK_UPD INTO
393
@C_REQDT_ID,@C_ASS_GROUP_ID,@C_REQ_DOC_ID
394

    
395
DECLARE @ALLOCATED INT,@ALLOCATED_CURR INT, @ALLOCATED_OLD INT, @QTY_ETM INT
396

    
397
WHILE @@FETCH_STATUS = 0
398
BEGIN
399
    SET @IS_MULTI_GROUP = '0'
400
    DELETE @TBL_GROUP_CODE_ASS_USE
401
    INSERT INTO @TBL_GROUP_CODE_ASS_USE (GROUP_ID)
402
    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)
403

    
404
    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)
405
    BEGIN
406
        SET @IS_MULTI_GROUP = '1'
407
    END
408

    
409
    SET @ALLOCATED_CURR = (SELECT SUM(TMP.COUNT) FROM (
410
                  (SELECT COUNT(*) AS COUNT
411
                  FROM ASS_TRANSFER_MULTI_DT A
412
                  LEFT JOIN ASS_TRANSFER_MULTI_MASTER B ON A.TRANS_MULTI_MASTER_ID = B.TRANS_MULTI_MASTER_ID  
413
                  LEFT JOIN ASS_MASTER C ON A.ASSET_ID = C.ASSET_ID
414
                  WHERE A.TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID
415
                  GROUP BY B.REQ_ID, C.GROUP_ID, C.REQ_ID
416
                  HAVING B.REQ_ID = @C_REQ_DOC_ID
417
                    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'))
418
                    AND (C.REQ_ID IS NULL OR C.REQ_ID = '')))TMP)
419
    
420
    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
421

    
422

    
423
    IF(@QTY_ETM < (ISNULL(@ALLOCATED_OLD,0) + ISNULL(@ALLOCATED_CURR,0)))
424
    BEGIN
425
    	ROLLBACK TRANSACTION
426
      CLOSE DATA_CURSOR_CHECK_UPD
427
      DEALLOCATE DATA_CURSOR_CHECK_UPD
428
    	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
429
    	RETURN '-1'
430
    END
431

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

    
438
END
439

    
440

    
441

    
442

    
443

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

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