1
|
|
2
|
/*
|
3
|
EXEC [ASS_AMORT_Do] '30/10/2018','admin','admin','ALL',NULL
|
4
|
|
5
|
|
6
|
*/
|
7
|
|
8
|
ALTER PROCEDURE dbo.ASS_AMORT_Do
|
9
|
@p_EXECUTE_DATE varchar(20) = NULL, --Mac dinh la ngay hien tai cua he thong, duoc truyen tu UI
|
10
|
@p_MAKER_ID varchar(15) = NULL,
|
11
|
@p_CHECKER_ID varchar(15) = NULL,
|
12
|
@p_ASSET_TYPE VARCHAR(15) = 'ALL',
|
13
|
@p_BRANCH_ID_LST XML = NULL
|
14
|
AS
|
15
|
BEGIN TRY
|
16
|
declare @l_AMORT_ID varchar(15), @l_AMORTDT_ID varchar(15)
|
17
|
declare @l_LAST_AMORT_ID varchar(15) = NULL
|
18
|
declare @l_AMORT_TERM nvarchar(50) = ''
|
19
|
|
20
|
declare @l_ASSET_ID varchar(15)
|
21
|
declare @l_AMORTIZED_AMT decimal(18,0)
|
22
|
declare @l_AMORTIZED_MONTH int
|
23
|
declare @l_AMORT_AMT decimal(18,0)
|
24
|
declare @l_AMORT_MONTH decimal(18,2)
|
25
|
declare @l_AMORT_END_DATE datetime, @l_AMORT_START_DATE datetime
|
26
|
declare @l_FIRST_AMORT_AMT decimal(18,0), @l_MONTHLY_AMORT_AMT decimal(18,0)
|
27
|
declare @l_BRANCH_ID varchar(15)
|
28
|
declare @l_DEP_ID varchar(15)
|
29
|
declare @l_BRANCH_ID_DO varchar(15) = NULL, @l_BRANCH_TYPE_DO VARCHAR(15)
|
30
|
declare @l_CURR_AMORT_AMT decimal(18,0)
|
31
|
declare @l_TOTAL_AMT decimal(18,0)
|
32
|
declare @l_CURR_AMORT_STATUS nvarchar(100)
|
33
|
declare @l_DESC nvarchar(1000)
|
34
|
DECLARE @ERRORSYS NVARCHAR(15) = ''
|
35
|
DECLARE @LST_BRANCH TABLE ( BRANCHID VARCHAR(15), BRANCHCODE VARCHAR(15))
|
36
|
|
37
|
DECLARE @ErrCode nvarchar(10) --Phong added
|
38
|
|
39
|
BEGIN TRANSACTION
|
40
|
|
41
|
--Thieuvq Them gia tri mac dinh
|
42
|
--
|
43
|
declare @l_AmortIdDefault varchar(100) = '',@l_AMORTTERMDefault varchar(100) = '',
|
44
|
@l_TOTALAMTDefault decimal (18,2) = 0,@l_PROCESSSTATUSDefault varchar(100) = '',
|
45
|
@l_ExecDateDefault datetime = null, @l_StatusNameDef varchar(100) = '', @l_NotesDef varchar(100) = ''
|
46
|
--
|
47
|
|
48
|
declare @sExecDT datetime = convert(datetime, @p_EXECUTE_DATE, 103)
|
49
|
|
50
|
select @l_LAST_AMORT_ID = AMORT_ID
|
51
|
FROM ASS_AMORT
|
52
|
WHERE IS_LEAF = 'Y'
|
53
|
|
54
|
SET @l_AMORT_TERM = convert(varchar(2), datepart(month, @sExecDT)) + '/' + convert(varchar(4), datepart(year, @sExecDT))
|
55
|
|
56
|
--Put valodation here
|
57
|
|
58
|
--THIEUVQ 11/07/2014
|
59
|
/***********LAY BRANCH_ID CUA USER THUC HIEN CHAY KHAU HAO**************/
|
60
|
SELECT @l_BRANCH_ID_DO = TLSUBBRID FROM TL_USER WHERE TLNANME = @p_MAKER_ID
|
61
|
IF @l_BRANCH_ID_DO = '' OR @l_BRANCH_ID_DO IS NULL
|
62
|
BEGIN
|
63
|
SET @ERRORSYS = 'ASS-AMR-0005'
|
64
|
GOTO THROW_ERR
|
65
|
END
|
66
|
|
67
|
--THIEUVQ 29092016 - BO DIEU KIEN KHONG CHO PGD CHAY PHAN BO
|
68
|
SELECT @l_BRANCH_TYPE_DO = BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @l_BRANCH_ID_DO
|
69
|
--IF @l_BRANCH_TYPE_DO = 'PGD' OR @l_BRANCH_TYPE_DO IS NULL
|
70
|
--BEGIN
|
71
|
-- SET @ERRORSYS = 'ASS-AMR-1006'
|
72
|
-- GOTO THROW_ERR
|
73
|
--END
|
74
|
--11/07/2014
|
75
|
|
76
|
----------------BO DUNG DANH SACH PGD DUOC CN PHAN BO GIUM THIEUVQ - 28092016------------------
|
77
|
IF @p_BRANCH_ID_LST IS NOT NULL AND @l_BRANCH_TYPE_DO = 'CN'
|
78
|
BEGIN
|
79
|
Declare @hdoc INT
|
80
|
Exec sp_xml_preparedocument @hdoc Output, @p_BRANCH_ID_LST
|
81
|
|
82
|
INSERT INTO @LST_BRANCH
|
83
|
SELECT *
|
84
|
FROM OPENXML(@hDoc,'/Root/BRANCHLIST',2)
|
85
|
WITH
|
86
|
(
|
87
|
BRANCH_ID varchar(15),
|
88
|
BRANCH_CODE varchar(15)
|
89
|
)
|
90
|
END
|
91
|
-----------------------------------------------------------------------------------------------
|
92
|
|
93
|
/******** kiem tra giao dich chua duyet **********************/
|
94
|
/* --Phong commented starts
|
95
|
IF @p_ASSET_TYPE = 'TSCD'
|
96
|
BEGIN
|
97
|
IF 1=0 AND EXISTS(SELECT 1 FROM ASS_PENDING_ITEM A WHERE A.AUTH_STATUS = 'U' AND TYPE_ID = 'TSCD')--THIEUVQ THEM DIEU KIEN KIEM TRA THEO DON VI
|
98
|
BEGIN
|
99
|
SET @ERRORSYS = 'ASS-AMR-0002'
|
100
|
GOTO THROW_ERR
|
101
|
END
|
102
|
END
|
103
|
ELSE
|
104
|
BEGIN
|
105
|
IF EXISTS(SELECT 1 FROM ASS_PENDING_ITEM A WHERE A.AUTH_STATUS = 'U' AND TYPE_ID = 'CCLD' AND TRAN_TYPE NOT IN ('ASS_ADDNEW','ASS_USE')
|
106
|
AND (BRANCH_CREATE = @l_BRANCH_ID_DO
|
107
|
OR (@l_BRANCH_TYPE_DO = 'CN'
|
108
|
--AND BRANCH_CREATE IN (SELECT * FROM [dbo].[CM_BRANCH_GETCHILDID](@l_BRANCH_ID_DO)))))--THIEUVQ THEM DIEU KIEN KIEM TRA THEO DON VI
|
109
|
AND BRANCH_CREATE IN (SELECT BRANCHID FROM @LST_BRANCH))))--THIEUVQ 29092016 - SUA DIEU KIEN PGD THUOC DANH SACH DA CHON
|
110
|
|
111
|
BEGIN
|
112
|
SET @ERRORSYS = 'ASS-AMR-0002'
|
113
|
GOTO THROW_ERR
|
114
|
END
|
115
|
END
|
116
|
*/
|
117
|
--Phong commented ends
|
118
|
|
119
|
--Phong added starts
|
120
|
IF 1=0 AND EXISTS(SELECT 1 FROM ASS_PENDING_ITEM A WHERE A.AUTH_STATUS = 'U')
|
121
|
BEGIN
|
122
|
SET @ERRORSYS = 'ASS-AMR-0002'
|
123
|
GOTO THROW_ERR
|
124
|
END
|
125
|
|
126
|
--THIEUVQ THEM DIEU KIEN KIEM TRA KY KHAU HAO DA DUOC TAO
|
127
|
IF EXISTS(SELECT 1 FROM ASS_AMORT A WHERE MONTH(A.EXECUTE_DT) = MONTH(@sExecDT) AND YEAR(A.EXECUTE_DT) = YEAR(@sExecDT)
|
128
|
AND ASSET_TYPE = @p_ASSET_TYPE)
|
129
|
BEGIN
|
130
|
SET @ERRORSYS = 'ASS-AMR-0001'
|
131
|
GOTO THROW_ERR
|
132
|
END
|
133
|
/*******KIEM TRA KY KHAU HAO DA TRONG THANG DA DUOC TAO HAY CHUA******/
|
134
|
/*
|
135
|
IF @p_ASSET_TYPE = 'TSCD'
|
136
|
BEGIN
|
137
|
IF EXISTS(SELECT 1 FROM ASS_AMORT A WHERE MONTH(A.EXECUTE_DT) = MONTH(@sExecDT) AND YEAR(A.EXECUTE_DT) = YEAR(@sExecDT)
|
138
|
AND ASSET_TYPE = 'TSCD')
|
139
|
BEGIN
|
140
|
SET @ERRORSYS = 'ASS-AMR-0001'
|
141
|
GOTO THROW_ERR
|
142
|
END
|
143
|
END
|
144
|
ELSE
|
145
|
BEGIN
|
146
|
IF EXISTS(SELECT 1 FROM ASS_AMORT A WHERE MONTH(A.EXECUTE_DT) = MONTH(@sExecDT) AND YEAR(A.EXECUTE_DT) = YEAR(@sExecDT)
|
147
|
AND ASSET_TYPE = 'CCLD' AND BRANCH_ID = @l_BRANCH_ID_DO)--THIEUVQ THEM DIEU KIEN KIEM TRA THEO LOAI TAI SAN
|
148
|
BEGIN
|
149
|
SET @ERRORSYS = 'ASS-AMR-0006'
|
150
|
GOTO THROW_ERR
|
151
|
END
|
152
|
|
153
|
----------------BO DUNG DANH SACH PGD DUOC CN PHAN BO GIUM THIEUVQ - 28092016------------------
|
154
|
IF @l_BRANCH_TYPE_DO = 'CN'
|
155
|
BEGIN
|
156
|
DECLARE @LSTERROR VARCHAR(500) = ''
|
157
|
SELECT @LSTERROR = @LSTERROR + B.BRANCHCODE + ';'
|
158
|
FROM ASS_AMORT A
|
159
|
LEFT JOIN @LST_BRANCH B ON B.BRANCHID = A.BRANCH_ID
|
160
|
WHERE A.AMORT_TERM = @l_AMORT_TERM AND A.BRANCH_ID IN (SELECT BRANCHID FROM @LST_BRANCH)
|
161
|
|
162
|
IF LEN(@LSTERROR) > 0
|
163
|
BEGIN
|
164
|
SELECT '-1' Result, N'PGD sau đã tự chạy phân bổ: ' + @LSTERROR ErrorDesc, @l_AmortIdDefault as AMORT_ID, @l_AMORTTERMDefault as AMORT_TERM,
|
165
|
@l_TOTALAMTDefault as TOTAL_AMT, @l_PROCESSSTATUSDefault as PROCESS_STATUS ,@l_StatusNameDef as STATUS_NAME,
|
166
|
@l_ExecDateDefault AS EXECUTE_DT,@l_NotesDef AS NOTES
|
167
|
|
168
|
IF @@TRANCOUNT>0 ROLLBACK TRANSACTION
|
169
|
RETURN '0'
|
170
|
END
|
171
|
END
|
172
|
ELSE
|
173
|
BEGIN
|
174
|
IF @l_BRANCH_TYPE_DO = 'PGD'
|
175
|
BEGIN
|
176
|
IF EXISTS(SELECT 1 FROM ASS_AMORT_BRN A WHERE A.AMORT_TERM = @l_AMORT_TERM AND A.BRANCH_ID = @l_BRANCH_ID_DO)
|
177
|
BEGIN
|
178
|
SET @ERRORSYS = 'ASS-AMR-0007'
|
179
|
GOTO THROW_ERR
|
180
|
END
|
181
|
END
|
182
|
END
|
183
|
END
|
184
|
*/
|
185
|
|
186
|
/***** Ngay thuc thi khau hao phai lon hon ngay chay cuoi cung da chay *****/
|
187
|
--IF EXISTS(SELECT 1 FROM ASS_AMORT A WHERE convert(date,A.EXECUTE_DT) > convert(date,@sExecDT))
|
188
|
--BEGIN
|
189
|
-- SET @ERRORSYS = 'ASS-AMR-0004'
|
190
|
-- GOTO THROW_ERR
|
191
|
--END
|
192
|
/************ Kiem tra cac tai khoan hach toan trong bang ASS_GROUP ******/
|
193
|
IF EXISTS(SELECT *
|
194
|
FROM ASS_GROUP A
|
195
|
WHERE 1=1
|
196
|
AND A.IS_LEAF='Y'
|
197
|
AND ISNULL(A.ASSET_ACCTNO,'') = ''
|
198
|
AND ISNULL(A.AMORT_ACCTNO,'') = ''
|
199
|
AND ISNULL(A.EXP_ACCTNO,'') = ''
|
200
|
AND ISNULL(A.INC_ACCTNO,'') = ''
|
201
|
AND ISNULL(A.LIQ_ACCTNO,'') = ''
|
202
|
AND A.TYPE_ID = @p_ASSET_TYPE)
|
203
|
BEGIN
|
204
|
SET @ERRORSYS = 'ASS-AMR-0003'
|
205
|
GOTO THROW_ERR
|
206
|
END
|
207
|
|
208
|
THROW_ERR:
|
209
|
IF @ERRORSYS <> ''
|
210
|
BEGIN
|
211
|
IF @ERRORSYS = 'ASS-AMR-0001'
|
212
|
BEGIN
|
213
|
SELECT @l_AmortIdDefault = A.AMORT_ID, @l_PROCESSSTATUSDefault = A.PROCESS_STATUS, @l_ExecDateDefault = A.EXECUTE_DT,
|
214
|
@l_AMORTTERMDefault = A.AMORT_TERM, @l_TOTALAMTDefault = A.TOTAL_AMT
|
215
|
FROM ASS_AMORT A WHERE MONTH(A.EXECUTE_DT) = MONTH(@sExecDT) AND YEAR(A.EXECUTE_DT) = YEAR(@sExecDT)
|
216
|
AND ASSET_TYPE = @p_ASSET_TYPE
|
217
|
SELECT ErrorCode Result, ErrorDesc ErrorDesc, @l_AmortIdDefault as AMORT_ID, @l_AMORTTERMDefault as AMORT_TERM,
|
218
|
@l_TOTALAMTDefault as TOTAL_AMT, @l_PROCESSSTATUSDefault as PROCESS_STATUS,@l_StatusNameDef as STATUS_NAME,
|
219
|
@l_ExecDateDefault AS EXECUTE_DT,@l_NotesDef AS NOTES
|
220
|
FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
|
221
|
END
|
222
|
ELSE
|
223
|
SELECT ErrorCode Result, ErrorDesc ErrorDesc, @l_AmortIdDefault as AMORT_ID, @l_AMORTTERMDefault as AMORT_TERM,
|
224
|
@l_TOTALAMTDefault as TOTAL_AMT, @l_PROCESSSTATUSDefault as PROCESS_STATUS,@l_StatusNameDef as STATUS_NAME,
|
225
|
@l_ExecDateDefault AS EXECUTE_DT,@l_NotesDef AS NOTES
|
226
|
FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
|
227
|
|
228
|
IF @@TRANCOUNT>0 ROLLBACK TRANSACTION
|
229
|
RETURN '0'
|
230
|
END
|
231
|
|
232
|
--oepn cursor
|
233
|
declare pCur cursor for
|
234
|
SELECT A.ASSET_ID, A.AMORTIZED_AMT, A.AMORTIZED_MONTH,
|
235
|
A.AMORT_AMT, A.AMORT_MONTH, A.AMORT_END_DATE, A.AMORT_START_DATE,
|
236
|
A.FIRST_AMORT_AMT, A.MONTHLY_AMORT_AMT, A.BRANCH_ID, A.DEPT_ID
|
237
|
FROM ASS_MASTER A
|
238
|
WHERE A.AMORT_STATUS IN ('CKH','DKH')
|
239
|
AND convert(date, A.AMORT_START_DATE) <= convert(date, @sExecDT)
|
240
|
AND A.AMORTIZED_AMT < A.AMORT_AMT
|
241
|
AND A.RECORD_STATUS = '1'
|
242
|
AND A.AUTH_STATUS = 'A'
|
243
|
AND (A.TYPE_ID = @p_ASSET_TYPE OR @p_ASSET_TYPE = 'ALL') --Phong
|
244
|
/* AND A.TYPE_ID = @p_ASSET_TYPE--THIEUVQ
|
245
|
AND (A.BRANCH_ID = @l_BRANCH_ID_DO
|
246
|
OR (@p_ASSET_TYPE = 'TSCD' or @p_ASSET_TYPE = 'CCLD')
|
247
|
OR (@l_BRANCH_TYPE_DO = 'CN' --NEU LA CN THI PHAN BO LUON CHO PGD THUOC CHI NHANH DO
|
248
|
--AND A.BRANCH_ID IN (SELECT * FROM [dbo].[CM_BRANCH_GETCHILDID](@l_BRANCH_ID_DO)))) --THIEUVQ
|
249
|
AND A.BRANCH_ID IN (SELECT BRANCHID FROM @LST_BRANCH))) --THIEUVQ CHINH SUA 28092016
|
250
|
*/
|
251
|
|
252
|
open pCur
|
253
|
|
254
|
--Update ky khau hao truoc khong con la nut la
|
255
|
IF @l_LAST_AMORT_ID IS NOT NULL
|
256
|
BEGIN
|
257
|
UPDATE ASS_AMORT
|
258
|
SET IS_LEAF = 'N'
|
259
|
WHERE AMORT_ID = @l_LAST_AMORT_ID
|
260
|
END
|
261
|
|
262
|
--set dien giai
|
263
|
IF @p_ASSET_TYPE = 'TSCD'
|
264
|
SET @l_DESC = N'Khấu hao kỳ ' + @l_AMORT_TERM
|
265
|
ELSE
|
266
|
SET @l_DESC = N'Phân bổ kỳ ' + @l_AMORT_TERM
|
267
|
|
268
|
--Insert ky khau hao moi
|
269
|
EXEC SYS_CodeMasters_Gen 'ASS_AMORT', @l_AMORT_ID out
|
270
|
|
271
|
INSERT INTO ASS_AMORT
|
272
|
(
|
273
|
AMORT_ID,
|
274
|
AMORT_TERM,
|
275
|
EXECUTE_DT,
|
276
|
TOTAL_AMT,
|
277
|
IS_LEAF,
|
278
|
PARENT_ID,
|
279
|
NOTES,
|
280
|
PROCESS_STATUS,
|
281
|
[RECORD_STATUS],
|
282
|
[MAKER_ID],
|
283
|
[CREATE_DT],
|
284
|
[AUTH_STATUS],
|
285
|
[CHECKER_ID],
|
286
|
[APPROVE_DT],
|
287
|
[BRANCH_ID],
|
288
|
[ASSET_TYPE]
|
289
|
)
|
290
|
VALUES
|
291
|
(
|
292
|
@l_AMORT_ID,
|
293
|
@l_AMORT_TERM,
|
294
|
CONVERT(datetime, @p_EXECUTE_DATE, 103),
|
295
|
0,
|
296
|
'Y',
|
297
|
@l_LAST_AMORT_ID,
|
298
|
@l_DESC,--N'Khấu hao kỳ ' + @l_AMORT_TERM,
|
299
|
'P', --Pending cho chay khau hao
|
300
|
'1',
|
301
|
@p_MAKER_ID,
|
302
|
GETDATE(),
|
303
|
'A',
|
304
|
@p_CHECKER_ID,
|
305
|
GETDATE(),
|
306
|
@l_BRANCH_ID_DO,
|
307
|
@p_ASSET_TYPE
|
308
|
)
|
309
|
|
310
|
----------------BO DUNG DANH SACH PGD DUOC CN PHAN BO GIUM THIEUVQ - 28092016------------------
|
311
|
IF @l_BRANCH_TYPE_DO = 'CN'
|
312
|
BEGIN
|
313
|
INSERT INTO ASS_AMORT_BRN SELECT @l_AMORT_ID, @l_AMORT_TERM, BRANCHID FROM @LST_BRANCH
|
314
|
END
|
315
|
-----------------------------------------------------------------------------------------------
|
316
|
SET @l_TOTAL_AMT = 0
|
317
|
|
318
|
DECLARE @SOKY INT = 1
|
319
|
DECLARE @BeginDate DATE = CONVERT(DATE,(CONVERT(VARCHAR(10),YEAR(GETDATE()))+'-'+CONVERT(VARCHAR(4),MONTH(GETDATE())) +'-1'))
|
320
|
--SELECT @BeginDate
|
321
|
--Tinh khau hao cho tung tai san
|
322
|
FETCH NEXT FROM pCur INTO @l_ASSET_ID, @l_AMORTIZED_AMT, @l_AMORTIZED_MONTH,
|
323
|
@l_AMORT_AMT, @l_AMORT_MONTH, @l_AMORT_END_DATE, @l_AMORT_START_DATE,
|
324
|
@l_FIRST_AMORT_AMT, @l_MONTHLY_AMORT_AMT, @l_BRANCH_ID, @l_DEP_ID
|
325
|
|
326
|
WHILE @@FETCH_STATUS = 0
|
327
|
BEGIN
|
328
|
--SET @l_DESC = N'Khấu hao kỳ ' + @l_AMORT_TERM
|
329
|
SET @SOKY = 1
|
330
|
IF (@l_AMORTIZED_MONTH = 0) --Khau hao thang dau tien
|
331
|
BEGIN
|
332
|
SET @l_CURR_AMORT_AMT = @l_FIRST_AMORT_AMT
|
333
|
--SET @l_CURR_AMORT_STATUS = 'DKH'
|
334
|
--------THIEUVQ KHAU HAO LUI 15012019-----------------
|
335
|
--------BEGIN
|
336
|
IF @l_AMORT_START_DATE < @BeginDate
|
337
|
BEGIN
|
338
|
--TINH SO KY KHAO HAO
|
339
|
--SELECT DATEDIFF(MONTH,'2018-11-10','2019-1-1')
|
340
|
|
341
|
SET @SOKY = DATEDIFF(MONTH, @l_AMORT_START_DATE, @BeginDate)
|
342
|
|
343
|
SET @l_CURR_AMORT_AMT = @l_FIRST_AMORT_AMT + @l_MONTHLY_AMORT_AMT*@SOKY
|
344
|
SET @SOKY = @SOKY + 1
|
345
|
|
346
|
|
347
|
|
348
|
|
349
|
|
350
|
|
351
|
IF @SOKY > = @l_AMORT_MONTH ---KHAU HAO LUI VOI SOKY LON HON HOAC BANG SO THANG THI KHAU HAO HET
|
352
|
BEGIN
|
353
|
SET @SOKY = @l_AMORT_MONTH
|
354
|
SET @l_CURR_AMORT_AMT = @l_AMORT_AMT
|
355
|
END
|
356
|
END
|
357
|
--------END
|
358
|
END
|
359
|
ELSE IF dbo.FN_GetLastDayOfMonth(@sExecDT) = dbo.FN_GetLastDayOfMonth(@l_AMORT_END_DATE) --Ky khau hao cuoi cung
|
360
|
BEGIN
|
361
|
SET @l_CURR_AMORT_AMT = @l_AMORT_AMT - @l_AMORTIZED_AMT
|
362
|
--SET @l_CURR_AMORT_STATUS = 'KHX'
|
363
|
print 'last amort' + @l_ASSET_ID
|
364
|
END
|
365
|
ELSE --tai san dang khau hao binh thuong
|
366
|
BEGIN
|
367
|
SET @l_CURR_AMORT_AMT = @l_MONTHLY_AMORT_AMT
|
368
|
--SET @l_CURR_AMORT_STATUS = 'DKH'
|
369
|
END
|
370
|
--THIEUVQ THEM DK KHONG KHAU HAO AM 13112017
|
371
|
IF (ISNULL(@l_AMORTIZED_AMT,0) + @l_CURR_AMORT_AMT) > @l_AMORT_AMT
|
372
|
SET @l_CURR_AMORT_AMT = @l_AMORT_AMT - ISNULL(@l_AMORTIZED_AMT,0)
|
373
|
|
374
|
--Insert to bang ASS_AMORT_DT
|
375
|
EXEC SYS_CodeMasters_Gen 'ASS_AMORT_DT', @l_AMORTDT_ID out
|
376
|
|
377
|
INSERT INTO ASS_AMORT_DT
|
378
|
(
|
379
|
AMORTDT_ID,
|
380
|
AMORT_ID,
|
381
|
AMORT_DT,
|
382
|
CRDR,
|
383
|
BRANCH_ID,
|
384
|
DEP_ID,
|
385
|
ASSET_ID,
|
386
|
AMORT_AMT,
|
387
|
GROUP_ID,
|
388
|
EXECUTED,
|
389
|
TRN_TYPE,
|
390
|
TRN_DESC
|
391
|
)
|
392
|
VALUES
|
393
|
(
|
394
|
@l_AMORTDT_ID,
|
395
|
@l_AMORT_ID,
|
396
|
@sExecDT,
|
397
|
'C',
|
398
|
@l_BRANCH_ID,
|
399
|
@l_DEP_ID,
|
400
|
@l_ASSET_ID,
|
401
|
@l_CURR_AMORT_AMT,
|
402
|
NULL, --Khong chay khau hao theo group
|
403
|
'0',
|
404
|
'AMORT',
|
405
|
@l_DESC
|
406
|
)
|
407
|
|
408
|
SET @l_TOTAL_AMT = @l_TOTAL_AMT + @l_CURR_AMORT_AMT
|
409
|
|
410
|
--Phong added for cost allocate starts -- 20-OCT-2018
|
411
|
IF EXISTS(SELECT 1 FROM ASS_COST_ALLOCATION WHERE ASSET_ID = @l_ASSET_ID)
|
412
|
BEGIN
|
413
|
EXEC ASS_AMORT_COST_Do
|
414
|
@l_AMORT_ID,
|
415
|
@p_EXECUTE_DATE,
|
416
|
@l_AMORTDT_ID,
|
417
|
@l_ASSET_ID,
|
418
|
@l_CURR_AMORT_AMT,
|
419
|
@SOKY,
|
420
|
@ErrCode OUT
|
421
|
|
422
|
IF (@ErrCode<> '0')
|
423
|
THROW 99001, 'Cost Allocation failed', 1;
|
424
|
|
425
|
END
|
426
|
--Phong added for cost allocate End -- 20-OCT-2018
|
427
|
|
428
|
FETCH NEXT FROM pCur INTO @l_ASSET_ID, @l_AMORTIZED_AMT, @l_AMORTIZED_MONTH,
|
429
|
@l_AMORT_AMT, @l_AMORT_MONTH, @l_AMORT_END_DATE, @l_AMORT_START_DATE,
|
430
|
@l_FIRST_AMORT_AMT, @l_MONTHLY_AMORT_AMT, @l_BRANCH_ID, @l_DEP_ID
|
431
|
END
|
432
|
|
433
|
UPDATE ASS_AMORT
|
434
|
SET TOTAL_AMT = @l_TOTAL_AMT
|
435
|
WHERE AMORT_ID = @l_AMORT_ID
|
436
|
|
437
|
END TRY
|
438
|
|
439
|
BEGIN CATCH
|
440
|
CLOSE pCur
|
441
|
DEALLOCATE pCur
|
442
|
|
443
|
IF @@TRANCOUNT>0 ROLLBACK TRANSACTION
|
444
|
--SELECT '-1' as Result, (convert(nvarchar(100),ERROR_NUMBER()) + N' - ' + ERROR_MESSAGE()) ErrorDesc,
|
445
|
-- '' AMORT_ID, '' AMORT_TERM, 0 TOTAL_AMT, GETDATE() EXECUTE_DT,'' AS PROCESS_STATUS,
|
446
|
-- N'' STATUS_NAME, N'' NOTES
|
447
|
|
448
|
SELECT top 1 '-1' as Result, (convert(nvarchar(100),ERROR_NUMBER()) + N' - ' + ERROR_MESSAGE()) ErrorDesc, AMORT_ID, AMORT_TERM, TOTAL_AMT, EXECUTE_DT,'' AS PROCESS_STATUS,
|
449
|
N'' STATUS_NAME, NOTES
|
450
|
FROM ASS_AMORT
|
451
|
|
452
|
RETURN '-1'
|
453
|
|
454
|
END CATCH;
|
455
|
|
456
|
CLOSE pCur
|
457
|
DEALLOCATE pCur
|
458
|
|
459
|
IF @@TRANCOUNT>0 COMMIT TRANSACTION
|
460
|
|
461
|
SELECT '0' as Result, '' ErrorDesc, AMORT_ID, AMORT_TERM, TOTAL_AMT, EXECUTE_DT,'' AS PROCESS_STATUS,
|
462
|
CASE WHEN PROCESS_STATUS='P' THEN N'Chờ thực thi' ELSE N'Đã thực thi' END STATUS_NAME, NOTES
|
463
|
FROM ASS_AMORT WHERE AMORT_ID = @l_AMORT_ID
|
464
|
RETURN '0'
|
465
|
|
466
|
|
467
|
|
468
|
|
469
|
GO
|