Project

General

Profile

store_upd_310323.txt

Luc Tran Van, 03/31/2023 08:36 AM

 
1
ALTER PROCEDURE dbo.ASS_USE_CONFIRM_MASTER_Ins
2
@p_BRANCH_ID	varchar(15)  = NULL,
3
@p_DEP_ID	varchar(15)  = NULL,
4
@p_USE_EXPORT_DT	VARCHAR(20) = NULL,
5
@p_USER_MASTER_ID varchar(15) = null,
6
@p_USER_EXPORT	nvarchar(200)  = NULL,
7
@p_NOTES	nvarchar(1000)  = NULL,
8
@p_RECORD_STATUS	varchar(1)  = NULL,
9
@p_AUTH_STATUS	varchar(1)  = NULL,
10
@p_MAKER_ID	varchar(100)  = NULL,
11
@p_CREATE_DT	VARCHAR(20) = NULL,
12
@p_CHECKER_ID	varchar(100)  = NULL,
13
@p_APPROVE_DT	VARCHAR(20) = NULL,
14
@p_AUTH_STATUS_KT	varchar(15)  = NULL,
15
@p_CREATE_DT_KT	varchar(100) = NULL,
16
@p_APPROVE_DT_KT	VARCHAR(20) = NULL,
17
@p_MAKER_ID_KT	varchar(100)  = NULL,
18
@p_CHECKER_ID_KT	varchar(100)  = NULL,
19
@p_REPORT_STATUS	varchar(15)  = NULL,
20
@p_BRANCH_CREATE varchar(15)  = NULL,
21
@p_XmlData XML = NUL
22
AS
23
--START MOVE TỪ APPROVE HS QUA
24
DECLARE @l_BRANCH_ID VARCHAR(15)
25
	DECLARE @l_DEPT_ID VARCHAR(15)
26
	DECLARE @l_EMP_ID VARCHAR(15)
27
	DECLARE @l_DIVISION_ID	VARCHAR(15)
28
	DECLARE @l_VALUE_ID	VARCHAR(15)
29
	
30
	--DECLARE @l_LOCATION nvarchar(500)
31
	DECLARE @l_LOCHIST_ID	VARCHAR(15)
32

    
33
	DECLARE @l_ASSET_ID VARCHAR(15)
34
	DECLARE @l_WAHDT_ID VARCHAR(15)
35
	DECLARE @l_WAH_ID VARCHAR(15)
36
	DECLARE @l_MAKER_ID			varchar(15)
37
		
38
	DECLARE @l_AMORT_MONTH decimal(18,2)
39
	DECLARE @l_AMORT_START_DATE datetime, @l_AMORT_END_DATE datetime
40
	DECLARE @l_FIRST_AMORT_AMT	numeric(18,0)
41
	DECLARE @l_MONTHLY_AMT 	numeric(18,0)
42
	DECLARE @l_ASS_AMORT_AMT numeric(18,0)
43
	DECLARE @sToday varchar(10) = convert(varchar(10), getdate(), 103)
44
	DECLARE @l_ENTRY_BOOKED varchar(1)
45
	DECLARE @l_HO_BRN_ID varchar(15)	
46
	DECLARE @l_AMORT_AMT decimal(18)  = NULL	
47
	DECLARE @l_BUY_PRICE decimal(18)  = NULL	
48
	DECLARE @l_ET_ID varchar(15)
49
	DEClare @p_ADDNEW_ID varchar(15)
50
	
51
	DECLARE @l_SUPPEND_GL varchar(50)
52
	DECLARE @l_ASSET_GL  varchar(50)
53
	declare @l_ASSET_VALUE decimal(18,0)	
54
	DECLARE @l_GROUP_ID varchar(15)	
55
	DECLARE @l_CORE_NOTE NVARCHAR(500)
56
	DECLARE @l_TYPE_ID	varchar(15)  = NULL
57
	declare @l_TRN_REF_NO varchar(20)
58
	declare @l_DO_BRANCH_ID varchar(15)
59
	DECLARE @l_AMORT_STATUS VARCHAR(15) = 'CKH'
60
	DECLARE @l_AMORT_MONTH_ASS_USE DECIMAL(18,2) = NULL
61
	declare @l_AUTH_STATUS varchar(15) = ''
62
  declare @l_ASSHIST_ID varchar(15)
63
	--Lay thong tin kho mac dinh
64
	SELECT @l_WAH_ID = P.ParaValue FROM SYS_PARAMETERS P WHERE P.ParaKey='ASSET_WAREHOUSE'
65

    
66
	--BRN_ID HOI SO
67
	SELECT @l_HO_BRN_ID = BRANCH_ID FROM CM_BRANCH A WHERE A.BRANCH_TYPE = 'HS'
68

    
69
	--Lay branch_id cua user duyet
70
	select @l_DO_BRANCH_ID = a.TLSUBBRID from TL_USER a where a.TLNANME = @p_CHECKER_ID	
71
	
72
	--Lay suppend GL
73
	SELECT @l_SUPPEND_GL = A.ParaValue FROM SYS_PARAMETERS A WHERE A.ParaKey='ASSET_SUPPEND_GL'
74
	
75
	--ASSET_GL
76
	SELECT @l_ASSET_GL = ASSET_ACCTNO FROM ASS_GROUP A WHERE A.GROUP_ID = @l_GROUP_ID
77

    
78
	IF (SELECT AUTH_STATUS_KT FROM ASS_USE_MULTI_MASTER WHERE [USER_MASTER_ID] = @p_USER_MASTER_ID) = 'A'
79
	BEGIN
80
		SELECT '-1' as Result, (SELECT ErrorDesc from SYS_ERROR WHERE ErrorCode = 'ASS-99998') ErrorDesc
81
		RETURN '-1'
82
	END
83

    
84
  IF(EXISTS(SELECT 1 FROM ASS_USE_CONFIRM_MASTER WHERE USER_MASTER_ID = @p_USER_MASTER_ID))
85
  BEGIN
86
		SELECT '-1' as Result, N'Phiếu xuất sử dụng đã được xác nhận' ErrorDesc
87
		RETURN '-1'
88
	END
89
--END MOVE TỪ APPROVE HS QUA
90

    
91
DECLARE  @TBL_GROUP_CODE_ASS_USE TABLE (GROUP_ID VARCHAR(100))
92

    
93
BEGIN TRANSACTION
94
DECLARE @l_USER_CONFIRM_MASTER_ID VARCHAR(15)
95
		EXEC SYS_CodeMasters_Gen 'ASS_CONFIRM_USE_MASTER', @l_USER_CONFIRM_MASTER_ID out
96
		IF @l_USER_CONFIRM_MASTER_ID='' OR @l_USER_CONFIRM_MASTER_ID IS NULL GOTO ABORT
97
		INSERT INTO ASS_USE_CONFIRM_MASTER
98
		(
99
			[USER_CONFIRM_MASTER_ID],
100
			[USER_MASTER_ID],
101
			[USE_EXPORT_DT],
102
			[BRANCH_ID],
103
			[DEP_ID],
104
			[MAKER_ID],
105
			[CONFIRM_DT],
106
			[CONFIRM_STATUS]
107
		)
108
		VALUES
109
		(
110
			@l_USER_CONFIRM_MASTER_ID,
111
			@p_USER_MASTER_ID,
112
			CONVERT(DATETIME, @p_USE_EXPORT_DT, 103),
113
			@p_BRANCH_ID,
114
			@p_DEP_ID,
115
			@p_MAKER_ID,
116
			GETDATE(),
117
			'Y'
118
		)
119
		IF @@Error <> 0 GOTO ABORT
120

    
121

    
122
		-- GIANT INSERT TO TABLE PL_PROCESS
123
		INSERT INTO dbo.PL_PROCESS
124
					(
125
					    REQ_ID,
126
					    PROCESS_ID,
127
					    CHECKER_ID,
128
					    APPROVE_DT,
129
					    PROCESS_DESC,
130
					    NOTES
131
					)
132
					VALUES
133
					(   @p_USER_MASTER_ID,       
134
						'CONFIRM',
135
					    @p_MAKER_ID,        
136
					    GETDATE(), 
137
					    N'Xác nhận xuất sử dụng tài sản ' ,      
138
					    N'Xác nhận xuất sử dụng tài sản thành công'       
139
					 )
140

    
141
    --START MOVE TỪ APPROVE HS QUA
142

    
143
      --LUCTV: 26-20-2018 KIEM TRA NEU TINH TRANG DANG LA 'R' THI KHONG CHO PHEP DUYET
144
  		IF(EXISTS(SELECT * FROM ASS_USE_MULTI_MASTER WHERE AUTH_STATUS ='R' AND USER_MASTER_ID =@p_USER_MASTER_ID))
145
  		BEGIN
146
  					ROLLBACK TRANSACTION
147
  					SELECT '-1' as Result, N'Thông tin xuất sử dụng tài sản đang bị trả về. Vui lòng cập nhật lại thông tin trước khi duyệt' ErrorDesc
148
  					RETURN '-1'
149
  		END
150

    
151
      DECLARE @USE_MULTI_ID varchar(15)
152
      		DECLARE @ASSET_ID varchar(15)
153
      		DECLARE DataCusor SCROLL CURSOR 
154
      		FOR  
155
      		SELECT A.USE_MULTI_ID,A.ASSET_ID
156
      		FROM [dbo].[ASS_USE_MULTI_DT] A
157
      		WHERE A.USER_MASTER_ID=@p_USER_MASTER_ID		
158
      		OPEN DataCusor  
159
            
160
      FETCH NEXT FROM DataCusor INTO  @USE_MULTI_ID,@ASSET_ID
161
      WHILE @@FETCH_STATUS = 0
162
      BEGIN		
163
      			
164
      	--Lay thong tin giao dich
165
      	SELECT	@l_ASSET_ID = ASSET_ID, @l_BRANCH_ID = BRANCH_ID, @l_DEPT_ID = DEPT_ID, 
166
      			@l_EMP_ID = EMP_ID, @l_DIVISION_ID = DIVISION_ID, @l_CORE_NOTE = CORE_NOTE, @l_AUTH_STATUS = AUTH_STATUS,
167
      			@l_AMORT_START_DATE = AMORT_START_DATE, @l_MAKER_ID = MAKER_ID, @l_AMORT_MONTH_ASS_USE = AMORT_MONTH,
168
      			@l_AMORT_END_DATE = AMORT_END_DATE
169
      	FROM [dbo].[ASS_USE_MULTI_DT]
170
      	WHERE [USE_MULTI_ID] = @USE_MULTI_ID
171
      
172
      	--Lay thong tin so thang khau hao
173
      	SELECT @l_AMORT_MONTH = A.AMORT_MONTH, @l_ASS_AMORT_AMT = AMORT_AMT, @l_ENTRY_BOOKED = ENTRY_BOOKED,
174
      			@l_AMORT_AMT = A.AMORT_AMT, @l_BUY_PRICE = BUY_PRICE, @l_GROUP_ID = GROUP_ID,@l_TYPE_ID = A.[TYPE_ID]
175
      	FROM ASS_MASTER A 
176
      	WHERE A.ASSET_ID = @l_ASSET_ID
177
      		
178
      	--TINH SO THANG THEO THUC TE KHI XUAT SU DUNG
179
      	SET @l_AMORT_MONTH = @l_AMORT_MONTH_ASS_USE
180
      
181
      	--IF @l_AMORT_MONTH_ASS_USE IS NULL--TRUONG HOP CCLD DO PHCQT XUAT
182
      	--BEGIN
183
      	--	SET @l_AMORT_END_DATE = NULL;		
184
      	--	SET @l_MONTHLY_AMT = 0;
185
      	--	SET @l_FIRST_AMORT_AMT = 0;
186
      	--	SET @l_AMORT_STATUS = 'VNM'
187
      	--END
188
      	--ELSE
189
      	--IF @l_AMORT_MONTH = 0
190
      	--BEGIN
191
      	--	SET @l_AMORT_END_DATE = NULL;		
192
      	--	SET @l_MONTHLY_AMT = 0;
193
      	--	SET @l_FIRST_AMORT_AMT = 0;
194
      	--	SET @l_AMORT_STATUS = 'KKH'
195
      	--END
196
      	--ELSE
197
      	--BEGIN
198
      	--	--Tinh ngay ket thuc khau hao
199
      	--	IF @l_TYPE_ID = 'TSCD'
200
      	--	BEGIN
201
      	--		IF @l_AMORT_END_DATE IS NULL OR @l_AMORT_END_DATE = ''
202
      	--			SET @l_AMORT_END_DATE = DATEADD(MONTH, @l_AMORT_MONTH, @l_AMORT_START_DATE) - 1
203
      	--		--CAP NHAT TRANG THAI KHAU HAO
204
      	--		SET @l_AMORT_STATUS = 'CKH'
205
      	--	END
206
      	--	ELSE
207
      	--	BEGIN			
208
      	--		DECLARE @l_ENDDATE_TEMP DATETIME = (CONVERT(VARCHAR(10),(YEAR(@l_AMORT_START_DATE))) + '-' + CONVERT(VARCHAR(10),MONTH(@l_AMORT_START_DATE))+'-' + '1')
209
      	--		SET @l_AMORT_END_DATE = DATEADD(MONTH, @l_AMORT_MONTH, @l_ENDDATE_TEMP ) - 1		
210
      
211
      	--		--CAP NHAT TRANG THAI KHAU HAO
212
      	--		SET @l_AMORT_STATUS = 'VNM'
213
      	--	END
214
      	
215
      	--	--Tinh so tien khau hao thang dau tien va so tien khau hao hang thang
216
      	--	SET @l_MONTHLY_AMT = ROUND(@l_ASS_AMORT_AMT / @l_AMORT_MONTH, -3)
217
      	--	SET @l_FIRST_AMORT_AMT = ROUND(@l_MONTHLY_AMT/dbo.[FN_GetDaysInMonth](@l_AMORT_START_DATE) * (DATEDIFF(day,@l_AMORT_START_DATE, dbo.FN_GetLastDayOfMonth(@l_AMORT_START_DATE)) + 1), -3)
218
      	--	----CAP NHAT TRANG THAI KHAU HAO
219
      	--	--SET @l_AMORT_STATUS = 'CKH'
220
      	--END
221
      	
222
      		--COMMIT TRANSACTION
223
      
224
      		--BEGIN TRANSACTION
225
      
226
      
227
      		IF @@Error <> 0 GOTO ABORT
228
      
229
      		
230
      		
231
      		DECLARE @l_AMORT_RATE DECIMAL(18,2)
232
      		IF @l_AMORT_MONTH > 0 AND @l_AMORT_MONTH IS NOT NULL
233
      			SET @l_AMORT_RATE = ROUND((100 /@l_AMORT_MONTH) * 12, 2)
234
      		ELSE 
235
      		BEGIN
236
      			SET @l_AMORT_RATE = 0
237
      			IF(@l_TYPE_ID = 'CCLD')
238
      				SET @l_AMORT_MONTH = 1
239
      		END
240
      
241
      		--Update tai san da xuat su dung
242
      		UPDATE ASS_MASTER
243
      		SET	BRANCH_ID = @l_BRANCH_ID,
244
      			DEPT_ID = @l_DEPT_ID,
245
      			EMP_ID = @l_EMP_ID,
246
      			DIVISION_ID = @l_DIVISION_ID,
247
      		--	AMORT_START_DATE = @l_AMORT_START_DATE,
248
      		--	AMORT_END_DATE = @l_AMORT_END_DATE,
249
      		--	FIRST_AMORT_AMT = @l_FIRST_AMORT_AMT,
250
      		--	AMORT_MONTH = @l_AMORT_MONTH,
251
      		--	MONTHLY_AMORT_AMT = @l_MONTHLY_AMT,
252
      		--	AMORTIZED_AMT = ISNULL(AMORTIZED_AMT,0),
253
      		--	AMORTIZED_MONTH = 0,
254
      		--	AMORT_STATUS = @l_AMORT_STATUS,--'CKH', --Update trang thai cho khau hao
255
      			USE_DATE = CONVERT(DATETIME, @sToday, 103),
256
            USE_DATE_KT = NULL
257
      		--	ENTRY_BOOKED = @l_ENTRY_BOOKED,
258
      		--	AMORT_RATE = @l_AMORT_RATE
259
      		WHERE ASSET_ID = @l_ASSET_ID
260
      
261
      --		UPDATE ASS_MASTER
262
      --		SET	USE_DATE = CONVERT(DATETIME, @sToday, 103),
263
      --			ENTRY_BOOKED = @l_ENTRY_BOOKED,
264
      --			AMORT_RATE = @l_AMORT_RATE
265
      --		WHERE ASSET_ID = @l_ASSET_ID
266
      		IF @@Error <> 0 GOTO ABORT
267
      
268
      
269
      	--Phat sinh Asset_ID
270
      	EXEC SYS_CodeMasters_Gen 'ASS_MASTER_HIST', @l_ASSHIST_ID out
271
      	IF @l_ASSHIST_ID='' OR @l_ASSHIST_ID IS NULL GOTO ABORT		
272
      		
273
      	  INSERT INTO ASS_MASTER_HIST
274
      		SELECT @l_ASSHIST_ID, a.*
275
      		FROM ASS_MASTER a
276
      		where a.ASSET_ID = @l_ASSET_ID
277
      
278
      	IF @@Error <> 0 GOTO ABORT
279
      
280
      
281
      		/***THIEUVQ - 10/09/2014 CAP NHAT LAI DON VI KHI XUAT SU DUNG NEU TS LA XE***/
282
      		--UPDATE CAR_MASTER SET BRANCH_ID = @l_BRANCH_ID WHERE ASSET_ID = @l_ASSET_ID
283
      				
284
      		--Insert phan xuat kho
285
      		SELECT @l_WAHDT_ID = WAHDT_ID FROM ASS_WAREHOUSE_DT A WHERE A.ASSET_ID = @l_ASSET_ID AND A.STATUS='I'
286
      								
287
      		UPDATE ASS_WAREHOUSE_DT
288
      		SET OUT_DATE = GETDATE(),
289
      			STATUS = 'O'
290
      		WHERE WAHDT_ID = @l_WAHDT_ID
291
      		IF @@Error <> 0 GOTO ABORT
292
      		
293
      		----Insert bang ASS_LOCATION_HIST
294
      		EXEC SYS_CodeMasters_Gen 'ASS_LOCATION_HIST', @l_LOCHIST_ID out
295
      		IF @l_LOCHIST_ID='' OR @l_LOCHIST_ID IS NULL GOTO ABORT
296
      		
297
      		INSERT INTO ASS_LOCATION_HIST
298
      		(
299
      			LOCHIST_ID, ASSET_ID, USE_START_DT, USE_END_DT, BRANCH_ID, DEPT_ID, 
300
      			EMP_ID, LOCATION, ISLEAF, PARENT_ID
301
      		)
302
      		VALUES
303
      		(
304
      			@l_LOCHIST_ID, @l_ASSET_ID, GETDATE(), NULL, @l_BRANCH_ID, @l_DEPT_ID,
305
      			@l_EMP_ID, '', 'Y', NULL
306
      		)
307
      		IF @@Error <> 0 GOTO ABORT
308
      		
309
      		--INSERT VAO BANG ASS_TRANSACTIONS
310
      		INSERT INTO ASS_TRANSACTIONS(ASSET_ID, TRN_ID, TRN_TYPE, TRN_DATE, RECORD_STATUS, AUTH_STATUS, 	
311
      				[MAKER_ID], [CREATE_DT], [CHECKER_ID], [APPROVE_DT],ASSHIST_ID, LOCHIST_ID
312
      		)VALUES
313
      		(
314
      			@l_ASSET_ID, @USE_MULTI_ID, 'ADD_USE', CONVERT(DATETIME, @sToday, 103), '1', 'A', 
315
      			@l_MAKER_ID, CONVERT(DATETIME, @sToday, 103), @p_CHECKER_ID, 	CONVERT(DATETIME, @p_APPROVE_DT, 103) ,@l_ASSHIST_ID,@l_LOCHIST_ID
316
      		)
317
      		IF @@Error <> 0 GOTO ABORT	
318
      		FETCH NEXT FROM DataCusor INTO  @USE_MULTI_ID,@ASSET_ID
319
      		END
320
      		CLOSE DataCusor
321
      		DEALLOCATE DataCusor	
322
   
323
      		
324
          --START PHUCVH 07/10/22 UPDATE ALLOCATED PHIẾU YÊU CẦU DT
325
          
326
          DECLARE @TBL_CHECK_UPD TABLE (REQDT_ID VARCHAR(15), REQ_DOC_ID VARCHAR(15), ASS_GROUP_ID VARCHAR(15), ASS_ID VARCHAR(15), REQ_DT_TYPE VARCHAR(20), TYPE_XL VARCHAR(20))
327
          
328
          INSERT INTO @TBL_CHECK_UPD
329
          SELECT DISTINCT A.REQDT_ID, A.REQ_DOC_ID, A.ASS_GROUP_ID, A.ASS_ID, A.REQ_DT_TYPE, A.TYPE_XL
330
          FROM ASS_USE_MULTI_DT B
331
          LEFT JOIN TR_REQUEST_SHOP_DOC_DT A ON B.REQ_ID = A.REQ_DOC_ID 
332
          WHERE B.USER_MASTER_ID = @p_USER_MASTER_ID AND B.REQ_ID IS NOT NULL AND B.REQ_ID <> ''
333
                AND(A.REQ_DT_TYPE = 'BUYNEW' 
334
                  OR (A.REQ_DT_TYPE = 'XKSD' AND A.TYPE_XL = 'CPTK')) 
335
      
336
          DECLARE @C_REQDT_ID VARCHAR(15), @C_REQ_DOC_ID VARCHAR(15), @C_ASS_GROUP_ID VARCHAR(15), @C_ASS_ID VARCHAR(15), @C_REQ_DT_TYPE VARCHAR(15), @C_TYPE_XL VARCHAR(20)
337
          DECLARE @IS_MULTI_GROUP VARCHAR(1) = '0'
338
          DECLARE DATA_CURSOR_CHECK_UPD CURSOR FOR
339
          SELECT * FROM @TBL_CHECK_UPD
340
      
341
          OPEN DATA_CURSOR_CHECK_UPD
342
      
343
          FETCH NEXT FROM DATA_CURSOR_CHECK_UPD INTO
344
          @C_REQDT_ID,@C_REQ_DOC_ID,@C_ASS_GROUP_ID,@C_ASS_ID,@C_REQ_DT_TYPE,@C_TYPE_XL
345
      
346
          DECLARE @ALLOCATED INT, @ALLOCATED_CHECK INT, @ALLOCATED_OLD INT, @QTY_ETM INT
347
          WHILE @@FETCH_STATUS = 0
348
          BEGIN
349
            SET @IS_MULTI_GROUP = '0'
350

    
351
            DELETE @TBL_GROUP_CODE_ASS_USE
352
            INSERT INTO @TBL_GROUP_CODE_ASS_USE (GROUP_ID)
353
            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)
354

    
355
            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 = 'BUYNEW' 
356
                      OR (trsdd.REQ_DT_TYPE = 'XKSD' AND trsdd.TYPE_XL = 'CPTK')) )) > 1)
357
            BEGIN
358
                SET @IS_MULTI_GROUP = '1'
359
            END
360

    
361
              IF (@C_REQ_DT_TYPE = 'BUYNEW')
362
              BEGIN
363
              SET @ALLOCATED = (SELECT SUM(TMP.COUNT) FROM (
364
                                    (SELECT COUNT(*) AS COUNT
365
                                    FROM ASS_USE_MULTI_DT A
366
                                    LEFT JOIN ASS_MASTER C ON A.ASSET_ID = C.ASSET_ID
367
                                    WHERE A.USER_MASTER_ID = @p_USER_MASTER_ID
368
                                    GROUP BY A.REQ_ID, C.GROUP_ID, C.REQ_ID
369
                                    HAVING A.REQ_ID = @C_REQ_DOC_ID
370
                                      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'))
371
                                      AND ((@C_REQ_DT_TYPE = 'BUYNEW' AND C.REQ_ID = @C_REQ_DOC_ID))))TMP)
372
              END
373
              ELSE IF (@C_TYPE_XL = 'CPTK')
374
              BEGIN
375
              SET @ALLOCATED = (SELECT SUM(TMP.COUNT) FROM (
376
                                (SELECT COUNT(*) AS COUNT
377
                                FROM ASS_USE_MULTI_DT A
378
                                LEFT JOIN ASS_MASTER C ON A.ASSET_ID = C.ASSET_ID
379
                                WHERE A.USER_MASTER_ID = @p_USER_MASTER_ID
380
                                GROUP BY A.REQ_ID, C.GROUP_ID, C.REQ_ID
381
                                HAVING A.REQ_ID = @C_REQ_DOC_ID
382
                                  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'))
383
                                  AND ((@C_TYPE_XL = 'CPTK' AND (C.REQ_ID IS NULL OR C.REQ_ID = '')))))TMP)
384

    
385
              END
386

    
387
              
388
              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  
389
                            
390
              IF(@QTY_ETM < (ISNULL(@ALLOCATED_OLD,0) + ISNULL(@ALLOCATED,0)))
391
              BEGIN
392
              	ROLLBACK TRANSACTION
393
                CLOSE DATA_CURSOR_CHECK_UPD
394
                DEALLOCATE DATA_CURSOR_CHECK_UPD
395
              	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ị' ErrorDesc
396
              	RETURN '-1'
397
              END
398
                                
399
              UPDATE TR_REQUEST_SHOP_DOC_DT 
400
              SET ALLOCATED = ALLOCATED + ISNULL(@ALLOCATED,0)
401
              WHERE REQDT_ID = @C_REQDT_ID
402
      
403
              IF @@Error <> 0 GOTO ABORT2
404
              FETCH NEXT FROM DATA_CURSOR_CHECK_UPD INTO
405
              @C_REQDT_ID,@C_REQ_DOC_ID,@C_ASS_GROUP_ID,@C_ASS_ID,@C_REQ_DT_TYPE,@C_TYPE_XL
406
          END
407
          CLOSE DATA_CURSOR_CHECK_UPD
408
          DEALLOCATE DATA_CURSOR_CHECK_UPD
409
          --END PHUCVH 07/10/22 UPDATE ALLOCATED PHIẾU YÊU CẦU DT
410
  
411
    --END MOVE TỪ APPROVE HS QUA
412

    
413
    --PHUCVH 11/10/22 DONE PHIẾU YÊU CẦU
414
      DECLARE MYCURSOR CURSOR FOR
415
      SELECT aumd.REQ_ID 
416
      FROM ASS_USE_MULTI_DT aumd 
417
      WHERE aumd.USER_MASTER_ID= @p_USER_MASTER_ID AND aumd.REQ_ID IS NOT NULL AND aumd.REQ_ID <> ''
418
      GROUP BY aumd.REQ_ID
419
    
420
      OPEN MYCURSOR
421
      DECLARE @p_REQ_ID VARCHAR(20)
422
      
423
      FETCH NEXT FROM MYCURSOR INTO @p_REQ_ID
424
    
425
      WHILE @@FETCH_STATUS = 0 
426
      BEGIN
427
        IF(NOT EXISTS(SELECT TOP 1 A.REQDT_ID 
428
                  FROM TR_REQUEST_SHOP_DOC_DT A 
429
                  WHERE A.REQ_DOC_ID = @p_REQ_ID 
430
                        AND ( A.QTY_ETM <> A.ALLOCATED OR (A.ALLOCATED IS NULL OR A.ALLOCATED = '' OR A.ALLOCATED = 0))
431
                        AND ((A.REQ_DT_TYPE = 'XKSD' AND A.TYPE_XL = 'CPDC')
432
                              OR (A.REQ_DT_TYPE = 'XKSD' AND A.TYPE_XL = 'CPTK')
433
                              OR (A.REQ_DT_TYPE = 'BUYNEW'))
434
                    ))
435
        BEGIN
436
          UPDATE TR_REQUEST_SHOP_DOC SET IS_DONE = '1', STATUS = 'DONE' WHERE REQ_ID = @p_REQ_ID
437
    
438
          UPDATE PL_REQUEST_PROCESS SET STATUS = 'P' WHERE PROCESS_ID = 'APPROVE' AND REQ_ID = @p_REQ_ID
439
          INSERT INTO PL_REQUEST_PROCESS (REQ_ID, PROCESS_ID, STATUS, IS_LEAF)
440
          VALUES (@p_REQ_ID,'DONE','C','Y')
441
    
442
        END
443

    
444
        IF @@Error <> 0 GOTO ABORT3
445
        FETCH NEXT FROM MYCURSOR INTO @p_REQ_ID
446
      END
447
    
448
      CLOSE MYCURSOR
449
      DEALLOCATE MYCURSOR
450

    
451
COMMIT TRANSACTION
452
SELECT '0' as Result, @l_USER_CONFIRM_MASTER_ID  USER_CONFIM_MASTER_ID, N'Xác nhận xuất sử dụng tài sản thành công' ErrorDesc, @p_USER_MASTER_ID USER_MASTER_ID
453
RETURN '0'
454
ABORT:
455
BEGIN
456
		CLOSE XmlData
457
		DEALLOCATE XmlData
458
		ROLLBACK TRANSACTION
459
		SELECT '-1' as Result, '' USER_MASTER_ID, '' ErrorDesc
460
		RETURN '-1'
461
End
462

    
463
ABORT2:
464
BEGIN
465
		CLOSE DATA_CURSOR_CHECK_UPD
466
		DEALLOCATE DATA_CURSOR_CHECK_UPD
467
		ROLLBACK TRANSACTION
468
		SELECT '-1' as Result, '' USER_MASTER_ID, '' ErrorDesc
469
		RETURN '-1'
470
END
471
ABORT3:
472
BEGIN
473
		CLOSE MYCURSOR
474
		DEALLOCATE MYCURSOR
475
		ROLLBACK TRANSACTION
476
		SELECT '-1' as Result, '' USER_MASTER_ID, '' ErrorDesc
477
		RETURN '-1'
478
End
479
GO
480

    
481
ALTER PROCEDURE dbo.ASS_COLLECT_CONFIRM_MASTER_Ins
482
@p_BRANCH_ID	varchar(15)  = NULL,
483
@p_DEP_ID	varchar(15)  = NULL,
484
@p_COLLECT_DT	VARCHAR(20) = NULL,
485
@p_USER_COLLECT	nvarchar(200)  = NULL,
486
@p_MAKER_ID	varchar(100)  = NULL,
487
@p_CREATE_DT	VARCHAR(20) = NULL,
488
@p_COL_MULTI_MASTER_ID varchar(20) = null
489
AS
490

    
491
IF(EXISTS(SELECT 1 FROM ASS_COLLECT_CONFIRM_MASTER WHERE COL_MULTI_MASTER_ID = @p_COL_MULTI_MASTER_ID))
492
BEGIN
493
  SELECT '-1' as Result, N'Phiếu thu hồi đã được xác nhận' ErrorDesc
494
  RETURN '-1'
495
END
496
BEGIN TRANSACTION
497
DECLARE @l_COL_MULTI_MASTER_CONFIRM_ID VARCHAR(15)
498
		EXEC SYS_CodeMasters_Gen 'ASS_COLLECT_CONFIRM_MASTER', @l_COL_MULTI_MASTER_CONFIRM_ID out
499
		IF @l_COL_MULTI_MASTER_CONFIRM_ID='' OR @l_COL_MULTI_MASTER_CONFIRM_ID IS NULL GOTO ABORT
500
		
501
		INSERT INTO ASS_COLLECT_CONFIRM_MASTER
502
		(
503
			[COL_MULTI_MASTER_CONFIRM_ID],
504
			[COL_MULTI_MASTER_ID],
505
			[BRANCH_ID],
506
			[DEP_ID],
507
			[COLLECT_DT],
508
			[MAKER_ID],
509
			[CONFIRM_DT],
510
			[CONFIRM_STATUS]			
511
		)
512
		VALUES
513
		(
514
			@l_COL_MULTI_MASTER_CONFIRM_ID,
515
			@p_COL_MULTI_MASTER_ID ,
516
			@p_BRANCH_ID,
517
			@p_DEP_ID,
518
			CONVERT(DATETIME, @p_COLLECT_DT, 103),
519
			@p_MAKER_ID,
520
			GETDATE(),
521
			'Y'
522
		)
523
		IF @@Error <> 0 GOTO ABORT
524

    
525
		
526
		-- GIANT Insert to table PL_PROCESS
527
		INSERT INTO dbo.PL_PROCESS
528
					(
529
					    REQ_ID,
530
					    PROCESS_ID,
531
					    CHECKER_ID,
532
					    APPROVE_DT,
533
					    PROCESS_DESC,
534
					    NOTES
535
					)
536
					VALUES
537
					(   @p_COL_MULTI_MASTER_ID,       
538
						'CONFIRM',
539
					    @p_MAKER_ID,        
540
					    GETDATE(), 
541
					    N'Xác nhận phiếu thu hồi tài sản ' ,      
542
					    N'Xác nhận phiếu thu hồi tài sản thành công'       
543
					 )
544
COMMIT TRANSACTION
545
SELECT '0' as Result, @l_COL_MULTI_MASTER_CONFIRM_ID  CONFIRM_COL_MULTI_MASTER_ID,@p_COL_MULTI_MASTER_ID COL_MULTI_MASTER_ID, N'Xác nhận bàn giao tài sản thu hồi thành công' ErrorDesc
546
RETURN '0'
547
ABORT:
548
BEGIN
549
		CLOSE XmlData
550
		DEALLOCATE XmlData
551
		ROLLBACK TRANSACTION
552
		SELECT '-1' as Result, '' CONFIRM_COL_MULTI_MASTER_ID, '' ErrorDesc
553
		RETURN '-1'
554
END