Project

General

Profile

ASS_AMORT_Start.txt

Luc Tran Van, 10/26/2022 11:18 AM

 
1

    
2
ALTER PROCEDURE dbo.ASS_AMORT_Start
3
	@p_AMORT_ID	varchar(15)  = NULL
4
AS
5
	--declare @l_CURR_AMORT_AMT decimal(18,0)
6
	declare @l_CURR_AMORT_STATUS nvarchar(100)
7
	declare @l_EXP_GL varchar(50)
8
	DECLARE @l_AMORT_GL varchar(50)
9
	declare @l_GROUP_ID varchar(15)
10
	declare @l_ASSET_ID varchar(15)
11
	declare @l_AMORT_AMT decimal(18,0)
12
	declare @l_BRANCH_ID varchar(15)
13
	declare @l_AMORTIZED_MONTH DECIMAL(18,2)
14
	declare @l_ET_ID varchar(15)
15
	declare @l_AMORTDT_ID varchar(15)
16
	declare @l_AMORT_END_DATE datetime
17
	
18
	declare @sToday varchar(10) = convert(varchar(10), getdate(), 103)
19
	declare @sExecDT datetime
20
	declare @l_TRN_REF_NO varchar(20) = NULL
21
	declare @l_DO_BRANCH_ID varchar(15)= NULL
22
	DECLARE @l_TYPE_ID	varchar(15)  = NULL
23
	
24
	DECLARE @l_DR_BRN_ID varchar(15), @l_CR_BRN_ID varchar(15)		
25
	DECLARE @l_HO_BRN_ID varchar(15)	
26
	DECLARE @l_DEP_ID varchar(15)
27
	
28
	DECLARE @l_MAKER_ID varchar(15), @l_CHECKER_ID varchar(15), @l_BRANCH_ID_DO varchar(20), @l_ASSET_TYPE_DO varchar(15),
29
	@l_BRANCH_TYPE_DO varchar(15)
30
	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
31
	--Put valodation here	
32

    
33
	--Phong added for cost allocate starts :: 1/11/2018	
34
	declare @l_AMORTCOSTDT_ID varchar(15)
35
	declare @l_Cost decimal(18,0)
36
	declare @l_COSTDT_ID varchar(15)
37
	declare @l_COST_EXP_GL varchar(50)
38
	declare @l_COST_BRANCH_ID varchar(15),@l_AMORT_START_DATE datetime
39
	--Phong added for cost allocate ends :: 1/11/2018	
40
	
41
	--get data
42
	select @sExecDT = EXECUTE_DT, @l_MAKER_ID = MAKER_ID, @l_CHECKER_ID = CHECKER_ID, @l_AMORT_TERM = AMORT_TERM,
43
	--
44
	@l_BRANCH_ID_DO = BRANCH_ID, @l_ASSET_TYPE_DO = ASSET_TYPE--thieuvq them 01/08/2014
45
	--
46
	FROM ASS_AMORT 
47
	where AMORT_ID = @p_AMORT_ID
48

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

    
51
	--Lay branch_id cua user duyet
52
	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)	
53
	
54
	--BRN_ID HOI SO
55
	SELECT @l_HO_BRN_ID = BRANCH_ID FROM CM_BRANCH A WHERE A.BRANCH_TYPE = 'HS'	
56

    
57
	--lay branch type cua don vi thuc hien
58
	SELECT @l_BRANCH_TYPE_DO = BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @l_BRANCH_ID_DO
59
	
60
	--oepn cursor
61
	declare pCur cursor for
62
		 SELECT A.AMORTDT_ID, A.ASSET_ID, A.BRANCH_ID, A.DEP_ID, A.AMORT_AMT, 
63
				AM.GROUP_ID, AM.AMORTIZED_MONTH, AM.AMORT_END_DATE, AM.[TYPE_ID], AM.AMORT_START_DATE
64
		 FROM ASS_AMORT_DT  A
65
		 LEFT JOIN ASS_MASTER AM ON AM.ASSET_ID = A.ASSET_ID
66
		 WHERE AMORT_ID = @p_AMORT_ID AND A.EXECUTED = '0'
67

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

    
74
	--chay khau hao
75
	FETCH NEXT FROM pCur INTO  @l_AMORTDT_ID, @l_ASSET_ID, @l_BRANCH_ID, @l_DEP_ID, @l_AMORT_AMT, 
76
				@l_GROUP_ID, @l_AMORTIZED_MONTH, @l_AMORT_END_DATE, @l_ASSET_TYPE, @l_AMORT_START_DATE
77
	
78
	WHILE @@FETCH_STATUS = 0	
79
	BEGIN
80
		--lay thong tin tai khoan
81
		SELECT @l_EXP_GL = G.EXP_ACCTNO, @l_AMORT_GL = G.AMORT_ACCTNO,@l_Type_ID = G.[TYPE_ID]
82
		FROM ASS_GROUP G
83
		WHERE G.GROUP_ID = @l_GROUP_ID
84
		IF @@ERROR<>0 GOTO ABORT
85

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

    
115
		--Insert vao bang dbo.ASS_ENTRIES_POST
116
		EXEC SYS_CodeMasters_Gen 'ASS_ENTRIES_POST', @l_ET_ID out
117
		IF @l_ET_ID='' OR @l_ET_ID IS NULL GOTO ABORT	
118
		
119
		--ref_no de ben core tra ve thieuvq - 071118
120
		--EXEC ASS_TRN_REF_NO_Gen @l_Type_ID, @sToday, @l_TRN_REF_NO out	
121
		
122
		--IF @l_BRANCH_ID = @l_HO_BRN_ID 
123
		--BEGIN
124
		--	SET @l_DR_BRN_ID = @l_DEP_ID
125
		--END
126
		--ELSE
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
	--		--AND convert(date, AMORT_START_DATE) <= convert(date, @sExecDT)
258
	--		AND convert(date, AMORT_START_DATE) <= convert(date, dbo.FN_GetLastDayOfMonth(@sExecDT))			
259
	--		AND AMORTIZED_AMT < AMORT_AMT
260
	--		AND RECORD_STATUS = '1'
261
	--		AND AUTH_STATUS = 'A'		
262
	--		AND TYPE_ID = 'CCLD'	
263
	--		AND (BRANCH_ID = @l_BRANCH_ID_DO 				
264
	--			OR (@l_BRANCH_TYPE_DO = 'CN' --NEU LA CN THI PHAN BO LUON CHO PGD THUOC CHI NHANH DO
265
	--				--AND BRANCH_ID IN (SELECT * FROM [dbo].[CM_BRANCH_GETCHILDID](@l_BRANCH_ID_DO)))) --THIEUVQ
266
	--				AND BRANCH_ID IN (SELECT BR.BRANCH_ID FROM ASS_AMORT_BRN BR WHERE BR.AMORT_ID  = @p_AMORT_ID))) --THIEUVQ  28092016
267
	--END
268

    
269
	******/
270

    
271
	/*******************THIEUVQ - HUY CAC GIAO DICH CHUA DUYET - 251218 - BEGIN:*****************************/
272
	UPDATE ASS_ADDNEW SET AUTH_STATUS = 'D', AUTH_STATUS_KT = 'D', CHECKER_ID_KT = 'system' 
273
	WHERE AUTH_STATUS = 'U' OR (AUTH_STATUS_KT = 'U' AND MAKER_ID_KT IS NOT NULL)
274
	
275
	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))
276
	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)
277

    
278
	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))	
279
	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)
280
	
281
	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))
282
	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)
283
	
284
	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))
285
	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)
286

    
287
	UPDATE ASS_UPDATE SET AUTH_STATUS = 'D', CHECKER_ID = 'system' WHERE AUTH_STATUS = 'U'
288
	/*********************END:***************************/
289

    
290
	CLOSE pCur
291
	DEALLOCATE pCur
292

    
293
COMMIT TRANSACTION
294
SELECT '0' as Result, '' ErrorDesc
295
RETURN '0'
296
ABORT:
297
BEGIN
298

    
299
		CLOSE pCur
300
		DEALLOCATE pCur
301

    
302
		CLOSE pCurCost
303
		DEALLOCATE pCurCost	
304
					
305
		ROLLBACK TRANSACTION
306
		SELECT '-1' as Result,  ERROR_MESSAGE() ErrorDesc
307
		RETURN '-1'
308
End
309

    
310

    
311

    
312

    
313

    
314