Project

General

Profile

[GSOFT - BVBANK] - Script mở stored ASS_AMORT_START.txt

Luc Tran Van, 02/25/2025 05:50 PM

 
1
ALTER PROCEDURE [dbo].[ASS_AMORT_Start]
2
	@p_AMORT_ID	varchar(15)  = NULL
3
AS
4
	--declare @l_CURR_AMORT_AMT decimal(18,0)
5
	declare @l_CURR_AMORT_STATUS nvarchar(100)
6
	declare @l_EXP_GL varchar(50)
7
	DECLARE @l_AMORT_GL varchar(50)
8
	declare @l_GROUP_ID varchar(15)
9
	declare @l_ASSET_ID varchar(15)
10
	declare @l_AMORT_AMT decimal(18,0)
11
	declare @l_BRANCH_ID varchar(15)
12
	declare @l_AMORTIZED_MONTH DECIMAL(18,2)
13
	declare @l_ET_ID varchar(15)
14
	declare @l_AMORTDT_ID varchar(15)
15
	declare @l_AMORT_END_DATE datetime
16

    
17
	declare @sToday varchar(10) = convert(varchar(10), getdate(), 103)
18
	declare @sExecDT datetime
19
	declare @l_TRN_REF_NO varchar(20) = NULL
20
	declare @l_DO_BRANCH_ID varchar(15)= NULL
21
	DECLARE @l_TYPE_ID	varchar(15)  = NULL
22

    
23
	DECLARE @l_DR_BRN_ID varchar(15), @l_CR_BRN_ID varchar(15)		
24
	DECLARE @l_HO_BRN_ID varchar(15)	
25
	DECLARE @l_DEP_ID varchar(15)
26

    
27
	DECLARE @l_MAKER_ID varchar(15), @l_CHECKER_ID varchar(15), @l_BRANCH_ID_DO varchar(20), @l_ASSET_TYPE_DO varchar(15),
28
	@l_BRANCH_TYPE_DO varchar(15)
29
	DECLARE @l_ASSET_TYPE VARCHAR(15), @l_DESC_CORE nvarchar(200),@l_AMORT_TERM varchar(20) --thieuvq them loai tai san de dien giai hach toan
30
	--Put valodation here	
31

    
32
	--Phong added for cost allocate starts :: 1/11/2018	
33
	declare @l_AMORTCOSTDT_ID varchar(15)
34
	declare @l_Cost decimal(18,0)
35
	declare @l_COSTDT_ID varchar(15)
36
	declare @l_COST_EXP_GL varchar(50)
37
	declare @l_COST_BRANCH_ID varchar(15),@l_AMORT_START_DATE datetime
38
	--Phong added for cost allocate ends :: 1/11/2018	
39

    
40
	--get data
41
	select @sExecDT = EXECUTE_DT, @l_MAKER_ID = MAKER_ID, @l_CHECKER_ID = CHECKER_ID, @l_AMORT_TERM = AMORT_TERM,
42
	--
43
	@l_BRANCH_ID_DO = BRANCH_ID, @l_ASSET_TYPE_DO = ASSET_TYPE--thieuvq them 01/08/2014
44
	--
45
	FROM ASS_AMORT 
46
	where AMORT_ID = @p_AMORT_ID
47

    
48
	SET @l_AMORT_TERM = REPLACE(@l_AMORT_TERM,'/',' ')
49

    
50
	--Lay branch_id cua user duyet
51
	select @l_DO_BRANCH_ID = a.TLSUBBRID from TL_USER a where a.TLNANME = (SELECT MAKER_ID FROM ASS_AMORT WHERE AMORT_ID = @p_AMORT_ID)	
52

    
53
	--BRN_ID HOI SO
54
	SELECT @l_HO_BRN_ID = BRANCH_ID FROM CM_BRANCH A WHERE A.BRANCH_TYPE = 'HS'	
55

    
56
	--lay branch type cua don vi thuc hien
57
	SELECT @l_BRANCH_TYPE_DO = BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @l_BRANCH_ID_DO
58

    
59
	--oepn cursor
60
	declare pCur cursor for
61
		 SELECT A.AMORTDT_ID, A.ASSET_ID, A.BRANCH_ID, A.DEP_ID, A.AMORT_AMT, 
62
				AM.GROUP_ID, AM.AMORTIZED_MONTH, AM.AMORT_END_DATE, AM.[TYPE_ID], AM.AMORT_START_DATE
63
		 FROM ASS_AMORT_DT  A
64
		 LEFT JOIN ASS_MASTER AM ON AM.ASSET_ID = A.ASSET_ID
65
		 WHERE AMORT_ID = @p_AMORT_ID AND A.EXECUTED = '0'
66

    
67
	open pCur
68
	DECLARE @SOKY INT = 1
69
	DECLARE @BeginDate DATE = CONVERT(DATE,(CONVERT(VARCHAR(10),YEAR(@sExecDT))+'-'+CONVERT(VARCHAR(4),MONTH(@sExecDT)) +'-1'))
70
	--SELECT @BeginDate
71
BEGIN TRANSACTION
72

    
73
	--chay khau hao
74
	FETCH NEXT FROM pCur INTO  @l_AMORTDT_ID, @l_ASSET_ID, @l_BRANCH_ID, @l_DEP_ID, @l_AMORT_AMT, 
75
				@l_GROUP_ID, @l_AMORTIZED_MONTH, @l_AMORT_END_DATE, @l_ASSET_TYPE, @l_AMORT_START_DATE
76

    
77
	WHILE @@FETCH_STATUS = 0	
78
	BEGIN
79
		--lay thong tin tai khoan
80
		SELECT @l_EXP_GL = G.EXP_ACCTNO, @l_AMORT_GL = G.AMORT_ACCTNO,@l_Type_ID = G.[TYPE_ID]
81
		FROM ASS_GROUP G
82
		WHERE G.GROUP_ID = @l_GROUP_ID
83
		IF @@ERROR<>0 GOTO ABORT
84

    
85
		SET @SOKY = 1
86
		IF (@l_AMORTIZED_MONTH = 0) --Khau hao thang dau tien
87
		BEGIN			
88
			SET @l_CURR_AMORT_STATUS = 'DKH'
89
			--------THIEUVQ KHAU HAO LUI 15012019-----------------
90
			--------BEGIN
91
			IF @l_AMORT_START_DATE < @BeginDate
92
			BEGIN
93
				--TINH SO KY KHAO HAO
94
				--SELECT DATEDIFF(MONTH,'2018-11-10','2019-1-1')
95
				SET @SOKY = DATEDIFF(MONTH, @l_AMORT_START_DATE, @BeginDate) + 1
96
				IF dbo.FN_GetLastDayOfMonth(@sExecDT) >= dbo.FN_GetLastDayOfMonth(@l_AMORT_END_DATE) --Ky khau hao cuoi cung
97
				BEGIN
98
					--SET @l_CURR_AMORT_AMT = @l_AMORT_AMT - @l_AMORTIZED_AMT
99
					SET @l_CURR_AMORT_STATUS = 'KHX'		
100
				END				
101
			END
102
			--------END
103
		END
104
		ELSE IF dbo.FN_GetLastDayOfMonth(@sExecDT) = dbo.FN_GetLastDayOfMonth(@l_AMORT_END_DATE) --Ky khau hao cuoi cung
105
		BEGIN
106
			--SET @l_CURR_AMORT_AMT = @l_AMORT_AMT - @l_AMORTIZED_AMT
107
			SET @l_CURR_AMORT_STATUS = 'KHX'		
108
		END
109
		ELSE --tai san dang khau hao binh thuong
110
		BEGIN			
111
			SET @l_CURR_AMORT_STATUS = 'DKH'
112
		END
113

    
114
		--Insert vao bang dbo.ASS_ENTRIES_POST
115
		EXEC SYS_CodeMasters_Gen 'ASS_ENTRIES_POST', @l_ET_ID out
116
		IF @l_ET_ID='' OR @l_ET_ID IS NULL GOTO ABORT	
117

    
118
		--ref_no de ben core tra ve thieuvq - 071118
119
		--EXEC ASS_TRN_REF_NO_Gen @l_Type_ID, @sToday, @l_TRN_REF_NO out	
120

    
121
		--IF @l_BRANCH_ID = @l_HO_BRN_ID 
122
		--BEGIN
123
		--	SET @l_DR_BRN_ID = @l_DEP_ID
124
		--END
125
		--ELSE
126

    
127
		--BEGIN
128
			SET @l_DR_BRN_ID = @l_BRANCH_ID
129
		--END
130

    
131
		--thieuvq dien giai hach toan khau hao
132
		IF @l_ASSET_TYPE = 'TSCD'
133
		BEGIN
134
			SET @l_DESC_CORE = 'KHAU HAO TSCD KY ' + @l_AMORT_TERM
135
			SET @l_CR_BRN_ID = @l_BRANCH_ID--@l_HO_BRN_ID
136
		END
137
		ELSE
138
		BEGIN
139
			SET @l_DESC_CORE = 'PHAN BO CHI PHI CCLD KY ' + @l_AMORT_TERM
140
			SET @l_CR_BRN_ID = @l_BRANCH_ID
141
		END
142

    
143
		INSERT INTO ASS_ENTRIES_POST
144
		(
145
			ET_ID,REF_NO, ASSET_ID, TRN_TYPE, REF_ID,DO_BRN, CR_ACCT, CR_BRN, DR_ACCT, DR_BRN, AMT,EXP_TO_CORE, TRN_DATE, TRN_DESC, MAKER_ID, CHECKER_ID, TRN_ID
146
		)
147
		VALUES
148
		(
149
			@l_ET_ID,@l_TRN_REF_NO, @l_ASSET_ID, 'AMORT', @l_AMORTDT_ID,@l_DO_BRANCH_ID, dbo.fn_replace_acctno(@l_AMORT_GL,@l_CR_BRN_ID), @l_CR_BRN_ID, @l_EXP_GL, @l_DR_BRN_ID, @l_AMORT_AMT,'Y',
150
			@sExecDT, @l_DESC_CORE, @l_MAKER_ID, @l_CHECKER_ID,@p_AMORT_ID
151
		)
152
		IF @@Error <> 0 GOTO ABORT	
153

    
154
		--- Phong added for cost allocate starts :: 1/11/2018
155
		IF EXISTS(SELECT 1 FROM ASS_AMORT_COST_DT A WHERE A.AMORTDT_ID = @l_AMORTDT_ID)
156
		BEGIN
157
			--update lai chi phi phan bo cho don vi chinh
158
			IF EXISTS(SELECT 1 FROM ASS_AMORT_COST_DT
159
						WHERE AMORTDT_ID = @l_AMORTDT_ID
160
						AND BRANCH_ID = @l_BRANCH_ID/*THIEUVQ THEM DK IS NULL NAY 140519*/AND COSTDT_ID IS NULL
161
						AND EXECUTED = '0')
162
			BEGIN
163
				SELECT @l_Cost = ISNULL(SUM(COST_AMT),0)
164
				FROM ASS_AMORT_COST_DT
165
				WHERE AMORTDT_ID = @l_AMORTDT_ID
166
				AND BRANCH_ID = @l_BRANCH_ID/*THIEUVQ THEM DK IS NULL NAY 140519*/AND COSTDT_ID IS NULL
167
				AND EXECUTED = '0'
168
			END
169
			ELSE
170
			BEGIN
171
				SET @l_Cost = 0
172
			END
173

    
174
			UPDATE ASS_ENTRIES_POST
175
			SET AMT = @l_Cost
176
			WHERE ET_ID = @l_ET_ID
177
			IF @@Error <> 0 GOTO ABORT	
178

    
179
			--hach toan Phan bo chi phi
180
			declare pCurCost cursor for
181
				SELECT a.AMORTCOSTDT_ID, a.COSTDT_ID, A.COST_AMT, A.BRANCH_ID, B.EXP_ACCTNO
182
				FROM ASS_AMORT_COST_DT  A
183
				INNER JOIN ASS_COST_ALLOC_DT B ON A.COSTDT_ID = B.COSTDT_ID
184
				WHERE AMORTDT_ID = @l_AMORTDT_ID
185
				/*THIEUVQ SUA DIEU KIEN 140519*/AND A.COSTDT_ID IS NOT NULL--AND A.BRANCH_ID <> @l_BRANCH_ID
186
				AND EXECUTED = '0'
187

    
188
			open pCurCost
189

    
190
			FETCH NEXT FROM pCurCost INTO @l_AMORTCOSTDT_ID, @l_COSTDT_ID, @l_Cost, @l_COST_BRANCH_ID, @l_COST_EXP_GL
191

    
192
			WHILE @@FETCH_STATUS = 0	
193
			BEGIN
194
				EXEC SYS_CodeMasters_Gen 'ASS_ENTRIES_POST', @l_ET_ID out
195
				IF @l_ET_ID='' OR @l_ET_ID IS NULL GOTO ABORT	
196

    
197
				INSERT INTO ASS_ENTRIES_POST
198
				(
199
					ET_ID,REF_NO, ASSET_ID, TRN_TYPE, REF_ID,DO_BRN, CR_ACCT, CR_BRN, DR_ACCT, DR_BRN, AMT,EXP_TO_CORE, TRN_DATE, TRN_DESC, MAKER_ID, CHECKER_ID, TRN_ID
200
				)
201
				VALUES
202
				(
203
					@l_ET_ID,@l_TRN_REF_NO, @l_ASSET_ID, 'AMORT', @l_AMORTDT_ID,@l_DO_BRANCH_ID, dbo.fn_replace_acctno(@l_AMORT_GL,@l_CR_BRN_ID), @l_CR_BRN_ID, @l_COST_EXP_GL, /*@l_DR_BRN_ID*/ @l_COST_BRANCH_ID,@l_Cost/* @l_AMORT_AMT*/,'Y',
204
					@sExecDT, @l_DESC_CORE, @l_MAKER_ID, @l_CHECKER_ID,@p_AMORT_ID
205
				)
206
				IF @@Error <> 0 GOTO ABORT	
207

    
208
				UPDATE ASS_COST_ALLOC_DT
209
				SET COSTED_MONTH = ISNULL(COSTED_MONTH,0) + @SOKY,
210
					COSTED_AMT = ISNULL(COSTED_AMT,0) + @l_Cost
211
				WHERE COSTDT_ID = @l_COSTDT_ID
212

    
213
				UPDATE ASS_AMORT_COST_DT
214
				SET EXECUTED = '1'
215
				WHERE AMORTCOSTDT_ID = @l_AMORTCOSTDT_ID
216

    
217
				FETCH NEXT FROM pCurCost INTO  @l_AMORTCOSTDT_ID, @l_COSTDT_ID, @l_Cost, @l_COST_BRANCH_ID, @l_COST_EXP_GL
218
			END
219

    
220
			CLOSE pCurCost
221
			DEALLOCATE pCurCost		
222
		END
223

    
224

    
225
		--- Phong added for cost allocate ends :: 1/11/2018
226

    
227
		--UPDATE BANG ASS_MASTER
228
		UPDATE ASS_MASTER 
229
		SET AMORTIZED_AMT = isnull(AMORTIZED_AMT, 0) + @l_AMORT_AMT,
230
			AMORTIZED_MONTH = isnull(AMORTIZED_MONTH, 0) + @SOKY,
231
			AMORT_STATUS = @l_CURR_AMORT_STATUS
232
		WHERE ASSET_ID = @l_ASSET_ID
233
		IF @@Error <> 0 GOTO ABORT	
234

    
235
		--update da hach toan
236
		UPDATE ASS_AMORT_DT
237
		SET EXECUTED = '1'
238
		WHERE AMORTDT_ID = @l_AMORTDT_ID
239
		IF @@Error <> 0 GOTO ABORT					
240

    
241
		FETCH NEXT FROM pCur INTO  @l_AMORTDT_ID, @l_ASSET_ID, @l_BRANCH_ID, @l_DEP_ID, @l_AMORT_AMT, 
242
				@l_GROUP_ID, @l_AMORTIZED_MONTH, @l_AMORT_END_DATE, @l_ASSET_TYPE, @l_AMORT_START_DATE
243
	END
244

    
245
	--UPDATE STATUS CHO BANG ASS_AMORT
246
	UPDATE ASS_AMORT
247
	SET PROCESS_STATUS = 'S'
248
	WHERE AMORT_ID = @p_AMORT_ID
249
	IF @@Error <> 0 GOTO ABORT		
250

    
251
	/*****THIEUVQ bo doan nay vi BAN VIET khong co dung
252
	/****CAP NHAT CCLD TINH TRANG: DPB(Đã phân bổ chi phí khi xuất sử dụng) VE DANG KHAU HAO***/
253
	--IF @l_ASSET_TYPE_DO = 'CCLD'
254
	--BEGIN
255
	--	 UPDATE ASS_MASTER SET AMORT_STATUS = 'DKH'
256
	--	 WHERE AMORT_STATUS IN ('DPB')
257

    
258
	--		--AND convert(date, AMORT_START_DATE) <= convert(date, @sExecDT)
259
	--		AND convert(date, AMORT_START_DATE) <= convert(date, dbo.FN_GetLastDayOfMonth(@sExecDT))			
260
	--		AND AMORTIZED_AMT < AMORT_AMT
261

    
262
	--		AND RECORD_STATUS = '1'
263
	--		AND AUTH_STATUS = 'A'		
264

    
265
	--		AND TYPE_ID = 'CCLD'	
266
	--		AND (BRANCH_ID = @l_BRANCH_ID_DO 				
267
	--			OR (@l_BRANCH_TYPE_DO = 'CN' --NEU LA CN THI PHAN BO LUON CHO PGD THUOC CHI NHANH DO
268
	--				--AND BRANCH_ID IN (SELECT * FROM [dbo].[CM_BRANCH_GETCHILDID](@l_BRANCH_ID_DO)))) --THIEUVQ
269
	--				AND BRANCH_ID IN (SELECT BR.BRANCH_ID FROM ASS_AMORT_BRN BR WHERE BR.AMORT_ID  = @p_AMORT_ID))) --THIEUVQ  28092016
270
	--END
271

    
272
	******/
273

    
274
	/*******************THIEUVQ - HUY CAC GIAO DICH CHUA DUYET - 251218 - BEGIN:*****************************/
275

    
276
	UPDATE ASS_ADDNEW SET AUTH_STATUS = 'D', AUTH_STATUS_KT = 'D', CHECKER_ID_KT = 'system' 
277
	WHERE AUTH_STATUS = 'U' OR (AUTH_STATUS_KT = 'U' AND MAKER_ID_KT IS NOT NULL)
278

    
279
	UPDATE ASS_USE_MULTI_DT SET AUTH_STATUS_KT = 'D', CHECKER_ID_KT = 'system' WHERE USER_MASTER_ID IN (SELECT A.USER_MASTER_ID FROM ASS_USE_MULTI_MASTER A WHERE A.AUTH_STATUS = 'U' OR (AUTH_STATUS_KT = 'U' AND MAKER_ID_KT IS NOT NULL))
280
	UPDATE ASS_USE_MULTI_MASTER SET AUTH_STATUS = 'D', AUTH_STATUS_KT = 'D', CHECKER_ID_KT = 'system' WHERE AUTH_STATUS = 'U' OR (AUTH_STATUS_KT = 'U' AND MAKER_ID_KT IS NOT NULL)
281

    
282
	UPDATE ASS_LIQUIDATION_DT SET AUTH_STATUS = 'D', MAKER_ID = 'system' WHERE LIQ_ID IN (SELECT A.LIQ_ID FROM ASS_LIQUIDATION A WHERE A.AUTH_STATUS = 'U' OR (AUTH_STATUS_KT = 'U' AND MAKER_ID_KT IS NOT NULL))	
283
	UPDATE ASS_LIQUIDATION SET AUTH_STATUS = 'D', AUTH_STATUS_KT = 'D', CHECKER_ID_KT = 'system' WHERE AUTH_STATUS = 'U' OR (AUTH_STATUS_KT = 'U' AND MAKER_ID_KT IS NOT NULL)
284

    
285
	UPDATE ASS_COLLECT_MULTI_DT SET AUTH_STATUS_KT = 'D', CHECKER_ID_KT = 'system' WHERE COL_MULTI_MASTER_ID IN (SELECT A.COL_MULTI_MASTER_ID FROM ASS_COLLECT_MULTI_MASTER A WHERE A.AUTH_STATUS = 'U' OR (AUTH_STATUS_KT = 'U' AND MAKER_ID_KT IS NOT NULL))
286
	UPDATE ASS_COLLECT_MULTI_MASTER SET AUTH_STATUS = 'D', AUTH_STATUS_KT = 'D', CHECKER_ID_KT = 'system' WHERE AUTH_STATUS = 'U' OR (AUTH_STATUS_KT = 'U' AND MAKER_ID_KT IS NOT NULL)
287

    
288
	UPDATE ASS_TRANSFER_MULTI_DT SET AUTH_STATUS_KT = 'D', CHECKER_ID_KT = 'system' WHERE TRANS_MULTI_MASTER_ID IN (SELECT A.TRANS_MULTI_MASTER_ID FROM ASS_TRANSFER_MULTI_MASTER A WHERE A.AUTH_STATUS = 'U' OR (AUTH_STATUS_KT = 'U' AND MAKER_ID_KT IS NOT NULL))
289
	UPDATE ASS_TRANSFER_MULTI_MASTER SET AUTH_STATUS = 'D', AUTH_STATUS_KT = 'D', CHECKER_ID_KT = 'system' WHERE AUTH_STATUS = 'U' OR (AUTH_STATUS_KT = 'U' AND MAKER_ID_KT IS NOT NULL)
290

    
291
	UPDATE ASS_UPDATE SET AUTH_STATUS = 'D', CHECKER_ID = 'system' WHERE AUTH_STATUS = 'U'
292

    
293
	/*********************END:***************************/
294

    
295
	CLOSE pCur
296
	DEALLOCATE pCur
297

    
298
COMMIT TRANSACTION
299
SELECT '0' as Result, '' ErrorDesc
300
RETURN '0'
301
ABORT:
302
BEGIN
303

    
304
		CLOSE pCur
305
		DEALLOCATE pCur
306

    
307
		CLOSE pCurCost
308
		DEALLOCATE pCurCost	
309

    
310
		ROLLBACK TRANSACTION
311
		SELECT '-1' as Result,  ERROR_MESSAGE() ErrorDesc
312
		RETURN '-1'
313
End