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
|