Project

General

Profile

ASS_TRANSFER_MULTI_MASTER_App.txt

Luc Tran Van, 02/25/2023 03:27 PM

 
1

    
2
ALTER PROCEDURE dbo.ASS_TRANSFER_MULTI_MASTER_App
3
@p_TRANS_MULTI_MASTER_ID varchar(15),
4
@p_AUTH_STATUS varchar(1)  = NULL,
5
@p_CHECKER_ID	varchar(15)  = NULL,
6
@p_APPROVE_DT	VARCHAR(20) = NULL		
7
AS
8

    
9

    
10
BEGIN TRANSACTION
11
declare @l_OLD_LOCHIST_ID varchar(15)
12
declare @l_LOCHIST_ID varchar(15)
13
declare @l_ASSHIST_ID varchar(15)
14
declare @l_ASSET_ID varchar(15)
15
declare @l_BRANCH_ID varchar(15)
16
declare @l_DEPT_ID	varchar(15)
17
declare @l_EMP_ID	varchar(15)
18
declare @l_DESC	nvarchar(1000)
19
declare @l_LOCATION nvarchar(500)
20
DECLARE @l_MAKER_ID			varchar(15)
21
DECLARE @sToday varchar(10) = convert(varchar(10), @p_APPROVE_DT, 103)	
22

    
23
DECLARE @l_CUR_BRANCH_ID VARCHAR(15), @l_ASSET_TYPE VARCHAR(15), @l_AMORT_ACCTNO VARCHAR(50), 
24
		@l_ASSET_GROUP VARCHAR(15), @l_ET_ID VARCHAR(15), @l_TRN_REF_NO VARCHAR(15),
25
		@l_DO_BRANCH_ID VARCHAR(15), @l_CUR_AMORT_AMT DECIMAL(18), @l_AMORT_STATUS VARCHAR(15)	
26

    
27
DECLARE @NOTE NVARCHAR(500), @CRET DATETIME
28
SELECT @NOTE = NOTES, @CRET = CREATE_DT
29
FROM [ASS_TRANSFER_MULTI_MASTER] 
30
WHERE [TRANS_MULTI_MASTER_ID] = @p_TRANS_MULTI_MASTER_ID
31
--LUCTV: 26-12-2018 KIEM TRA NEU TINH TRANG DANG LA 'R' THI KHONG CHO PHEP DUYET
32
IF(EXISTS(SELECT * FROM ASS_TRANSFER_MULTI_MASTER WHERE AUTH_STATUS ='R' AND TRANS_MULTI_MASTER_ID =@p_TRANS_MULTI_MASTER_ID))
33
BEGIN
34
			ROLLBACK TRANSACTION
35
			SELECT '-1' as Result, '' COL_MULTI_MASTER_ID, N'Thông tin điều chuyển 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
36
			RETURN '-1'
37
END
38
IF (SELECT CHARINDEX('ATGETD',@NOTE)) > 0
39
BEGIN
40
	SET @sToday = convert(varchar(10), @p_APPROVE_DT, 103)
41
	SET @P_APPROVE_DT = @sToday
42
END
43
		--APPROVE MASTER
44
        UPDATE [dbo].[ASS_TRANSFER_MULTI_MASTER]
45
		SET AUTH_STATUS = 'A',AUTH_STATUS_KT='U',
46
			CHECKER_ID = @p_CHECKER_ID,
47
			APPROVE_DT = CONVERT(datetime, @p_APPROVE_DT, 103),MAKER_ID_KT = NULL,APPROVE_DT_KT = NULL, CHECKER_ID_KT = NULL
48
		WHERE [TRANS_MULTI_MASTER_ID] = @p_TRANS_MULTI_MASTER_ID
49
		
50
		DECLARE @TRANSFER_MULTI_ID varchar(15), @IS_PRIVATE int = 0, @count int =0
51
		DECLARE @ASSET_ID varchar(15), @BRANCH_ID_OLD VARCHAR(15), @DEP_ID_OLD VARCHAR(15), @EMP_ID_OLD VARCHAR(15)
52
		DECLARE DataCusor SCROLL CURSOR 
53
		FOR  
54
		SELECT A.TRANSFER_MULTI_ID,A.ASSET_ID
55
		FROM [dbo].[ASS_TRANSFER_MULTI_DT] A
56
	WHERE [TRANS_MULTI_MASTER_ID] = @p_TRANS_MULTI_MASTER_ID
57

    
58
		OPEN DataCusor  
59

    
60
FETCH NEXT FROM DataCusor INTO  @TRANSFER_MULTI_ID,@ASSET_ID
61
WHILE @@FETCH_STATUS = 0
62
BEGIN	
63
--Lay thong tin
64
					SELECT	@l_ASSET_ID = ASSET_ID,
65
							@l_BRANCH_ID = BRANCH_ID,
66
							@l_DEPT_ID	= DEPT_ID,
67
							@l_EMP_ID	= EMP_ID,
68
							@l_DESC	=	[DESCRIPTION],
69
							@l_LOCATION = LOCATION,
70
							@l_MAKER_ID = MAKER_ID,
71
							@BRANCH_ID_OLD = BRANCH_ID_OLD,
72
							@DEP_ID_OLD = DEPT_ID_OLD, @EMP_ID_OLD = EMP_ID_OLD
73
					FROM ASS_TRANSFER_MULTI_DT
74
					WHERE TRANSFER_MULTI_ID = @TRANSFER_MULTI_ID
75

    
76
				--Validation is here
77
				DECLARE @ERRORSYS NVARCHAR(15) = '' 
78
				IF ( NOT EXISTS ( SELECT * FROM ASS_TRANSFER_MULTI_DT WHERE TRANSFER_MULTI_ID = @TRANSFER_MULTI_ID))
79
					SET @ERRORSYS = 'ASST-00001'
80
				IF @ERRORSYS <> '' 
81
				BEGIN
82
					SELECT ErrorCode Result, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
83
					CLOSE DataCusor
84
					DEALLOCATE DataCusor
85
					ROLLBACK TRANSACTION
86
					RETURN '-1'
87
				END 
88

    
89
				/*****************NEU CHI CAP NHAT NHAN VIEN THI KHONG CHUYEN QUA KE TOAN BEGIN *****************************************/
90
				SET @count =  @count + 1
91
				------THIEUVQ 240419
92
				IF @l_BRANCH_ID IS NOT NULL AND  @l_DEPT_ID IS NOT NULL AND @l_EMP_ID IS NOT NULL
93
				AND @l_BRANCH_ID <> '' AND  @l_DEPT_ID <> '' AND @l_EMP_ID <> ''
94
				AND @BRANCH_ID_OLD IS NOT NULL AND  @DEP_ID_OLD IS NOT NULL 
95
				AND @BRANCH_ID_OLD <> '' AND  @DEP_ID_OLD <> ''
96
				AND @l_BRANCH_ID = @BRANCH_ID_OLD AND @l_DEPT_ID = @DEP_ID_OLD
97
				BEGIN
98
					SET @IS_PRIVATE = @IS_PRIVATE + 1
99
					
100
					EXEC SYS_CodeMasters_Gen 'ASS_MASTER_HIST', @l_ASSHIST_ID out
101
					IF @l_ASSHIST_ID='' OR @l_ASSHIST_ID IS NULL GOTO ABORT		
102
		
103
					INSERT INTO ASS_MASTER_HIST
104
						SELECT @l_ASSHIST_ID, a.*
105
						FROM ASS_MASTER a
106
						where a.ASSET_ID = @l_ASSET_ID
107
					IF @@Error <> 0 GOTO ABORT
108

    
109
					UPDATE ASS_MASTER
110
					SET --BRANCH_ID = @l_BRANCH_ID,
111
						--DEPT_ID = @l_DEPT_ID,
112
						EMP_ID	=	@l_EMP_ID,
113
						APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103)
114
					WHERE ASSET_ID = @l_ASSET_ID
115
					IF @@Error <> 0 GOTO ABORT
116

    
117
					SELECT @l_OLD_LOCHIST_ID = LOCHIST_ID FROM ASS_LOCATION_HIST WHERE  ASSET_ID = @l_ASSET_ID AND ISLEAF='Y'
118
	
119
					--Uptdae isleaf='N' and END_DATE = ngay hien tai cho record hien tai
120
					UPDATE ASS_LOCATION_HIST
121
					SET USE_END_DT = CONVERT(DATETIME,@P_APPROVE_DT,103),
122
						ISLEAF='N'
123
					WHERE  ASSET_ID = @l_ASSET_ID AND ISLEAF='Y'
124
	
125
					EXEC SYS_CodeMasters_Gen 'ASS_LOCATION_HIST', @l_LOCHIST_ID out
126
					IF @l_LOCHIST_ID='' OR @l_LOCHIST_ID IS NULL GOTO ABORT
127
	
128
					--insert location moi
129
					INSERT INTO ASS_LOCATION_HIST
130
					(
131
						LOCHIST_ID, ASSET_ID, USE_START_DT, USE_END_DT, BRANCH_ID, DEPT_ID, 
132
						EMP_ID, LOCATION, ISLEAF, PARENT_ID
133
					)
134
					VALUES
135
					(
136
						@l_LOCHIST_ID, @l_ASSET_ID, CONVERT(DATETIME,@p_APPROVE_DT,103), NULL, @l_BRANCH_ID, @l_DEPT_ID,
137
						@l_EMP_ID, '', 'Y', @l_OLD_LOCHIST_ID
138
					)
139
					IF @@Error <> 0 GOTO ABORT	
140

    
141
					--INSERT VAO BANG ASS_TRANSACTIONS
142
					INSERT INTO ASS_TRANSACTIONS(ASSET_ID, TRN_ID, TRN_TYPE, TRN_DATE, RECORD_STATUS, AUTH_STATUS, 	
143
							[MAKER_ID], [CREATE_DT], [CHECKER_ID], [APPROVE_DT]
144
					)VALUES
145
					(
146
						@l_ASSET_ID, @TRANSFER_MULTI_ID, 'TRANSFER', CONVERT(DATETIME, @sToday, 103), '1', 'A', 
147
						@l_MAKER_ID, CONVERT(DATETIME, @sToday, 103), @p_CHECKER_ID, 	CONVERT(DATETIME, @p_APPROVE_DT, 103) 
148
					)
149
					IF @@Error <> 0 GOTO ABORT
150
				END
151
				ELSE
152
				BEGIN
153
					IF @IS_PRIVATE <> @count AND @IS_PRIVATE > 0 --DA CO 1 TAI SAN KHONG THUOC DIEU CHUYEN NOI BO
154
					BEGIN
155
						SELECT '-1' Result,'' COL_MULTI_MASTER_ID, N'Tài sản điều chuyển nội bộ phải tách biệt tài sản điều chuyển khác, vì giao dịch nội bộ sẽ không qua kế toán. Vui lòng kiểm tra lại danh sách.' ErrorDesc 
156
						CLOSE DataCusor
157
						DEALLOCATE DataCusor
158
						ROLLBACK TRANSACTION
159
						RETURN '-1'
160
					END
161
				END
162

    
163
				/*****************NEU CHI CAP NHAT NHAN VIEN THI KHONG CHUYEN QUA KE TOAN END *****************************************/
164
				
165
	FETCH NEXT FROM DataCusor INTO  @TRANSFER_MULTI_ID,@ASSET_ID
166
END
167

    
168
	--CAP NHAT BO QUA KE TOAN
169
	IF @IS_PRIVATE = @count
170
	BEGIN
171
		UPDATE [dbo].[ASS_TRANSFER_MULTI_MASTER]
172
		SET AUTH_STATUS_KT = 'A',
173
			CHECKER_ID_KT = 'admin',
174
			APPROVE_DT_KT = CONVERT(datetime, @p_APPROVE_DT, 103),
175
			CREATE_DT_KT = CONVERT(datetime, @p_APPROVE_DT, 103),
176
			MAKER_ID_KT = 'admin'
177
		WHERE [TRANS_MULTI_MASTER_ID] = @p_TRANS_MULTI_MASTER_ID
178
		
179
		UPDATE ASS_TRANSFER_MULTI_DT 
180
		SET 
181
			AUTH_STATUS = 'A', 
182
			CHECKER_ID_KT = 'admin', 
183
			APPROVE_DT_KT = CONVERT(DATETIME,@p_APPROVE_DT,103),
184
			CREATE_DT_KT = CONVERT(DATETIME,@p_APPROVE_DT,103),
185
			MAKER_ID_KT = 'admin'
186
		WHERE [TRANS_MULTI_MASTER_ID] = @p_TRANS_MULTI_MASTER_ID
187
		IF @@Error <> 0 GOTO ABORT
188
	END
189
	CLOSE DataCusor
190
	DEALLOCATE DataCusor
191
COMMIT TRANSACTION
192
SELECT '0' as Result, @p_TRANS_MULTI_MASTER_ID  COL_MULTI_MASTER_ID, '' ErrorDesc
193
RETURN '0'
194
ABORT:
195
BEGIN
196
	ROLLBACK TRANSACTION
197
		CLOSE DataCusor
198
		DEALLOCATE DataCusor		
199
		SELECT '-1' as Result, '' COL_MULTI_MASTER_ID, ERROR_MESSAGE() ErrorDesc
200
		RETURN '-1'
201
End
202