Project

General

Profile

FIX LOI 1.txt

Luc Tran Van, 05/23/2023 09:13 AM

 
1

    
2
ALTER PROCEDURE dbo.ASS_AMORT_Start @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_AMORTIZED_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)
25
         ,@l_CR_BRN_ID VARCHAR(15)
26
  DECLARE @l_HO_BRN_ID VARCHAR(15)
27
  DECLARE @l_DEP_ID VARCHAR(15)
28

    
29
  DECLARE @l_MAKER_ID VARCHAR(15)
30
         ,@l_CHECKER_ID VARCHAR(15)
31
         ,@l_BRANCH_ID_DO VARCHAR(20)
32
         ,@l_ASSET_TYPE_DO VARCHAR(15)
33
         ,@l_BRANCH_TYPE_DO VARCHAR(15)
34
  DECLARE @l_ASSET_TYPE VARCHAR(15)
35
         ,@l_DESC_CORE NVARCHAR(200)
36
         ,@l_DESC_CORE_NOTE NVARCHAR(200)
37
         ,@l_AMORT_TERM VARCHAR(20) --thieuvq them loai tai san de dien giai hach toan
38
  DECLARE @l_AM_AMORT_AMT DECIMAL(18, 0)
39
         ,@l_AMORT_START_DATE DATETIME
40
         ,@l_AMORT_MONTH DECIMAL(18, 0)
41
  --Put valodation here	
42

    
43
DELETE FROM ASS_AMORT_DT_LATEST
44
  --get data
45
  SELECT
46
    @sExecDT = EXECUTE_DT
47
   ,@l_MAKER_ID = MAKER_ID
48
   ,@l_CHECKER_ID = CHECKER_ID
49
   ,@l_AMORT_TERM = AMORT_TERM
50
   ,
51
    --
52
    @l_BRANCH_ID_DO = BRANCH_ID
53
   ,@l_ASSET_TYPE_DO = ASSET_TYPE--thieuvq them 01/08/2014
54
  --
55
  FROM ASS_AMORT
56
  WHERE AMORT_ID = @p_AMORT_ID
57

    
58
  --SET @l_AMORT_TERM = REPLACE(@l_AMORT_TERM,'/',' ')
59

    
60
  --Lay branch_id cua user duyet
61
  SET
62
    @l_DO_BRANCH_ID = 'DV0001'
63

    
64
  --BRN_ID HOI SO
65
  SELECT
66
    @l_HO_BRN_ID = BRANCH_ID
67
  FROM CM_BRANCH A
68
  WHERE A.BRANCH_TYPE = 'HS'
69

    
70
  --lay branch type cua don vi thuc hien
71
  SELECT
72
    @l_BRANCH_TYPE_DO = BRANCH_TYPE
73
  FROM CM_BRANCH
74
  WHERE BRANCH_ID = @l_BRANCH_ID_DO
75

    
76
  --oepn cursor
77
  DECLARE pCur CURSOR FOR SELECT
78
    A.AMORTDT_ID
79
   ,A.ASSET_ID
80
   ,A.BRANCH_ID
81
   ,A.DEP_ID
82
   ,A.AMORT_AMT
83
   ,ISNULL(AM.REF_GROUP_ID, AM.GROUP_ID)
84
   ,AM.AMORTIZED_MONTH
85
   ,AM.AMORT_END_DATE
86
   ,AM.[TYPE_ID]
87
   ,AM.AMORT_AMT AM_AMORT_AMT
88
   ,AM.AMORT_START_DATE
89
   ,AM.AMORT_MONTH
90
  FROM ASS_AMORT_DT A
91
  LEFT JOIN ASS_MASTER AM
92
    ON AM.ASSET_ID = A.ASSET_ID
93
  WHERE AMORT_ID = @p_AMORT_ID
94
  AND A.EXECUTED = '0'
95

    
96
  OPEN pCur
97

    
98
  BEGIN TRANSACTION
99

    
100
  DECLARE @goupxe TABLE (
101
    GROUP_ID VARCHAR(25)
102
  )
103

    
104
  INSERT INTO @goupxe
105
    SELECT
106
      ag.GROUP_ID
107
    FROM ASS_GROUP ag
108
    WHERE ag.PARENT_ID = 'ASG000000000151'
109

    
110
  --chay khau hao
111
  FETCH NEXT FROM pCur INTO @l_AMORTDT_ID, @l_ASSET_ID, @l_BRANCH_ID, @l_DEP_ID, @l_AMORT_AMT,
112
  @l_GROUP_ID, @l_AMORTIZED_MONTH, @l_AMORT_END_DATE, @l_ASSET_TYPE, @l_AM_AMORT_AMT, @l_AMORT_START_DATE, @l_AMORT_MONTH
113

    
114
  WHILE @@fetch_status = 0
115
  BEGIN
116
  --lay thong tin tai khoan
117
  DECLARE @l_AMT_OVER DECIMAL(18, 0)
118
         ,@l_AMT_AMORT DECIMAL(18, 0)
119
  SET @l_AMT_OVER = 0
120

    
121
  SELECT
122
    @l_EXP_GL = G.EXP_ACCTNO
123
   ,@l_AMORT_GL = G.AMORT_ACCTNO
124
   ,@l_TYPE_ID = G.[TYPE_ID]
125
  FROM ASS_GROUP G
126
  WHERE G.GROUP_ID = @l_GROUP_ID
127
  IF @@error <> 0
128
    GOTO ABORT
129

    
130
  DECLARE @l_MONTHLY_AMT DECIMAL(18, 0)
131
  IF (@l_AM_AMORT_AMT > 1600000000
132
    AND EXISTS (SELECT
133
        GROUP_ID
134
      FROM @goupxe
135
      WHERE GROUP_ID = @l_GROUP_ID)
136
    )
137
  BEGIN
138
    PRINT 1
139
    SET @l_MONTHLY_AMT = ROUND(1600000000 / @l_AMORT_MONTH, 0)
140
    DECLARE @AMORT_ON_DAY DECIMAL(18, 0)
141
    SET @AMORT_ON_DAY = ROUND(@l_MONTHLY_AMT / dbo.[FN_GetDaysInMonth](@l_AMORT_START_DATE), 0)
142
    SET @l_AMT_AMORT = ROUND(@AMORT_ON_DAY * (DATEDIFF(DAY, @l_AMORT_START_DATE, dbo.FN_GetLastDayOfMonth(@l_AMORT_START_DATE)) + 1), 0)
143
    --END
144
    IF (DAY(@l_AMORT_START_DATE) = 1)
145
      SET @l_AMT_AMORT = @l_MONTHLY_AMT
146

    
147
  END
148

    
149
  IF (@l_AMORTIZED_MONTH = 0) --Khau hao thang dau tien
150
  BEGIN
151
    SET @l_CURR_AMORT_STATUS = 'DKH'
152
    IF (@l_AM_AMORT_AMT > 1600000000
153
      AND EXISTS (SELECT
154
          GROUP_ID
155
        FROM @goupxe
156
        WHERE GROUP_ID = @l_GROUP_ID)
157
      )
158
    BEGIN
159
      SET @l_AMT_OVER = @l_AMORT_AMT - @l_AMT_AMORT
160
    END
161
  END
162
  ELSE
163
  IF dbo.FN_GetLastDayOfMonth(@sExecDT) = dbo.FN_GetLastDayOfMonth(@l_AMORT_END_DATE) --Ky khau hao cuoi cung
164
  BEGIN
165
    --SET @l_CURR_AMORT_AMT = @l_AMORT_AMT - @l_AMORTIZED_AMT
166
   
167

    
168
    SET @l_CURR_AMORT_STATUS = 'KHX'
169
    IF (@l_AM_AMORT_AMT > 1600000000
170
      AND EXISTS (SELECT
171
          GROUP_ID
172
        FROM @goupxe
173
        WHERE GROUP_ID = @l_GROUP_ID)
174
      )
175
    BEGIN
176
      SET @l_AMT_OVER = @l_AMORT_AMT - (1600000000 - (@l_AMT_AMORT + (@l_MONTHLY_AMT * (@l_AMORT_MONTH - 2))))
177
    END
178
  END
179
  ELSE --tai san dang khau hao binh thuong
180
  BEGIN
181
    SET @l_CURR_AMORT_STATUS = 'DKH'
182
    IF (@l_AM_AMORT_AMT > 1600000000
183
      AND EXISTS (SELECT
184
          GROUP_ID
185
        FROM @goupxe
186
        WHERE GROUP_ID = @l_GROUP_ID)
187
      )
188
    BEGIN
189
      SET @l_AMT_OVER = @l_AMORT_AMT - @l_MONTHLY_AMT
190
    END
191
  END
192
 IF(@l_AM_AMORT_AMT - @l_AMORTIZED_AMT>0)
193
  SET  @l_CURR_AMORT_STATUS = 'DKH'
194
  --Insert vao bang dbo.ASS_ENTRIES_POST
195

    
196

    
197
  EXEC ASS_TRN_REF_NO_Gen @l_TYPE_ID
198
                         ,@sToday
199
                         ,@l_TRN_REF_NO OUT
200

    
201
  IF @l_BRANCH_ID = @l_HO_BRN_ID
202
  BEGIN
203
    SET @l_DR_BRN_ID = @l_DEP_ID
204
  END
205
  ELSE
206
  BEGIN
207
    SET @l_DR_BRN_ID = @l_BRANCH_ID
208
  END
209

    
210
  --thieuvq dien giai hach toan khau hao
211
  IF @l_ASSET_TYPE = 'TSCD'
212
  BEGIN
213
    SET @l_DESC_CORE = 'KHAU HAO TSCD KY ' + @l_AMORT_TERM
214
    SET @l_DESC_CORE_NOTE= 'PHAN BO CHI PHI KHAU HAO TSCD GIUA CAC DON VI KY ' + @l_AMORT_TERM
215
    SET @l_CR_BRN_ID = @l_HO_BRN_ID
216
  END
217
  ELSE
218
  BEGIN
219
    SET @l_DESC_CORE = 'PHAN BO CHI PHI CCLD KY ' + @l_AMORT_TERM
220
    SET @l_DESC_CORE_NOTE= 'PHAN BO CHI PHI CCLD GIUA CAC DON VI KY ' + @l_AMORT_TERM
221
    SET @l_CR_BRN_ID = @l_BRANCH_ID
222
  END
223

    
224
  DECLARE @l_BRANCH_CODE VARCHAR(25)
225
         ,@l_ASSET_CODE VARCHAR(25)
226
         ,@l_ETP_ID VARCHAR(25)
227
         ,@DEP_CODE VARCHAR(25)
228

    
229
  SET @l_BRANCH_CODE = (SELECT
230
      cb.BRANCH_CODE
231
    FROM CM_BRANCH cb
232
    WHERE cb.BRANCH_ID = @l_BRANCH_ID)
233
  SET @l_ASSET_CODE = (SELECT
234
      am.ASSET_CODE
235
    FROM ASS_MASTER am
236
    WHERE am.ASSET_ID = @l_ASSET_ID)
237
  SET @l_AMORTIZED_AMT = (SELECT
238
      am.AMORTIZED_AMT
239
    FROM ASS_MASTER am
240
    WHERE am.ASSET_ID = @l_ASSET_ID)
241

    
242
  SET @DEP_CODE = (SELECT
243
      cd.DEP_CODE
244
    FROM CM_DEPARTMENT cd
245
    WHERE cd.DEP_ID = @l_DEP_ID)
246

    
247

    
248
DECLARE @LST_COST_SHARE TABLE (
249
    ASSET_ID VARCHAR(20),
250
    BRANCH_ID VARCHAR(20),
251
    DEP_ID VARCHAR(20),
252
    COST_AMOUNT DECIMAL(18,0)
253
    
254
)
255

    
256
DELETE FROM @LST_COST_SHARE
257
INSERT INTO @LST_COST_SHARE (ASSET_ID, BRANCH_ID, DEP_ID, COST_AMOUNT)
258
SELECT aca.ASSET_ID,acad.BRANCH_ID,acad.DEPT_ID,acad.COST_AMOUNT  FROM ASS_COST_ALLOCATION aca
259
LEFT JOIN ASS_COST_ALLOC_DT acad ON aca.COS_ID = acad.COS_ID
260
WHERE aca.RECORD_STATUS=1 AND aca.AUTH_STATUS='A' AND aca.ASSET_ID=@l_ASSET_ID
261

    
262

    
263

    
264
  IF (@l_AMORT_AMT > 0)
265
  BEGIN
266
    EXEC SYS_CodeMasters_Gen 'ASS_ENTRIES_POST'
267
                            ,@l_ET_ID OUT
268
    IF @l_ET_ID = ''
269
      OR @l_ET_ID IS NULL
270
      GOTO ABORT
271

    
272

    
273
    INSERT INTO ASS_ENTRIES_POST (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)
274
      VALUES (@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 - @l_AMT_OVER, 'Y', @sExecDT, @l_DESC_CORE, @l_MAKER_ID, @l_CHECKER_ID)
275
    EXEC SYS_CodeMasters_Gen 'ASS_ENTRIES_POST_SYNC'
276
                            ,@l_ETP_ID OUT
277
    INSERT INTO ASS_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS)
278
      VALUES (@l_ETP_ID, @l_ET_ID, @l_AMORTDT_ID, @l_BRANCH_CODE, @l_AMORT_GL, 'VND', 'C', @l_AMORT_AMT - @l_AMT_OVER, 1, @l_AMORT_AMT - @l_AMT_OVER, @l_ASSET_CODE, @sExecDT, @l_MAKER_ID, @l_CHECKER_ID, @DEP_CODE, @l_DESC_CORE);
279

    
280
    EXEC SYS_CodeMasters_Gen 'ASS_ENTRIES_POST_SYNC'
281
                            ,@l_ETP_ID OUT
282

    
283
    INSERT INTO ASS_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS)
284
      VALUES (@l_ETP_ID, @l_ET_ID, @l_AMORTDT_ID, @l_BRANCH_CODE, @l_EXP_GL, 'VND', 'D', @l_AMORT_AMT - @l_AMT_OVER, 1, @l_AMORT_AMT - @l_AMT_OVER, @l_ASSET_CODE, @sExecDT, @l_MAKER_ID, @l_CHECKER_ID, @DEP_CODE, @l_DESC_CORE);
285

    
286
    IF(EXISTS(SELECT ASSET_ID FROM @LST_COST_SHARE))
287
    BEGIN
288

    
289
        DECLARE lstDATACOST CURSOR FOR 
290
        SELECT 
291
              BRANCH_ID
292
              ,DEP_ID
293
              ,COST_AMOUNT FROM @LST_COST_SHARE
294
        OPEN lstDATACOST
295

    
296
DECLARE @COST_BRANCH_ID VARCHAR(20) , @COST_DEP_ID VARCHAR(20), @COST_AMOUNT DECIMAL(18,0),@COST_DEP_CODE VARCHAR(20),@COST_BRANCH_CODE VARCHAR(20),@TRANFER_CP VARCHAR(25)
297

    
298
SET @TRANFER_CP=(SELECT epa.ACC_NO FROM ENTRIES_POST_ACCNO epa WHERE epa.ACC_TYPE='ASSET_CCLD_N')
299

    
300
FETCH NEXT FROM lstDATACOST INTO  @COST_BRANCH_ID, @COST_DEP_ID , @COST_AMOUNT
301
WHILE @@fetch_status = 0
302
BEGIN
303
    IF(@l_BRANCH_ID <> @COST_BRANCH_ID)
304
    BEGIN
305

    
306
          SET @COST_BRANCH_CODE =(SELECT
307
      cb.BRANCH_CODE
308
    FROM CM_BRANCH cb
309
    WHERE cb.BRANCH_ID = @COST_BRANCH_ID)
310

    
311

    
312
           SET @COST_DEP_CODE =(SELECT cd.DEP_CODE FROM CM_DEPARTMENT cd WHERE cd.DEP_ID=@COST_DEP_ID)
313

    
314
         EXEC SYS_CodeMasters_Gen 'ASS_ENTRIES_POST_SYNC'
315
                            ,@l_ETP_ID OUT
316

    
317
          INSERT INTO ASS_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS)
318
          VALUES (@l_ETP_ID, @l_ET_ID, @l_AMORTDT_ID, @l_BRANCH_CODE, @l_EXP_GL, 'VND', 'C', @COST_AMOUNT, 1, @COST_AMOUNT, @l_ASSET_CODE, @sExecDT, @l_MAKER_ID, @l_CHECKER_ID, @DEP_CODE, @l_DESC_CORE_NOTE);
319
          
320
            EXEC SYS_CodeMasters_Gen 'ASS_ENTRIES_POST_SYNC'
321
                            ,@l_ETP_ID OUT
322

    
323
          INSERT INTO ASS_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS)
324
          VALUES (@l_ETP_ID, @l_ET_ID, @l_AMORTDT_ID, @l_BRANCH_CODE, @TRANFER_CP, 'VND', 'D', @COST_AMOUNT, 1, @COST_AMOUNT, @l_ASSET_CODE, @sExecDT, @l_MAKER_ID, @l_CHECKER_ID, @DEP_CODE, @l_DESC_CORE_NOTE);
325

    
326
         EXEC SYS_CodeMasters_Gen 'ASS_ENTRIES_POST_SYNC'
327
                            ,@l_ETP_ID OUT
328

    
329
          INSERT INTO ASS_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS)
330
          VALUES (@l_ETP_ID, @l_ET_ID, @l_AMORTDT_ID, @COST_BRANCH_CODE, @TRANFER_CP, 'VND', 'C', @COST_AMOUNT, 1, @COST_AMOUNT, @l_ASSET_CODE, @sExecDT, @l_MAKER_ID, @l_CHECKER_ID, @COST_DEP_CODE, @l_DESC_CORE_NOTE);
331

    
332
          EXEC SYS_CodeMasters_Gen 'ASS_ENTRIES_POST_SYNC'
333
                            ,@l_ETP_ID OUT
334

    
335
          INSERT INTO ASS_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS)
336
          VALUES (@l_ETP_ID, @l_ET_ID, @l_AMORTDT_ID, @COST_BRANCH_CODE, @l_EXP_GL, 'VND', 'D', @COST_AMOUNT, 1, @COST_AMOUNT, @l_ASSET_CODE, @sExecDT, @l_MAKER_ID, @l_CHECKER_ID, @COST_DEP_CODE, @l_DESC_CORE_NOTE);
337

    
338

    
339
    END
340
    ELSE
341
    BEGIN
342
      
343

    
344

    
345
      SET @COST_DEP_CODE =(SELECT cd.DEP_CODE FROM CM_DEPARTMENT cd WHERE cd.DEP_ID=@COST_DEP_ID)
346
         EXEC SYS_CodeMasters_Gen 'ASS_ENTRIES_POST_SYNC'
347
                            ,@l_ETP_ID OUT
348

    
349
          INSERT INTO ASS_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS)
350
          VALUES (@l_ETP_ID, @l_ET_ID, @l_AMORTDT_ID, @l_BRANCH_CODE, @l_EXP_GL, 'VND', 'C', @COST_AMOUNT, 1, @COST_AMOUNT, @l_ASSET_CODE, @sExecDT, @l_MAKER_ID, @l_CHECKER_ID, @DEP_CODE, @l_DESC_CORE_NOTE);
351
             
352
             EXEC SYS_CodeMasters_Gen 'ASS_ENTRIES_POST_SYNC'
353
                            ,@l_ETP_ID OUT
354

    
355
          INSERT INTO ASS_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS)
356
          VALUES (@l_ETP_ID, @l_ET_ID, @l_AMORTDT_ID, @l_BRANCH_CODE, @l_EXP_GL, 'VND', 'D', @COST_AMOUNT, 1, @COST_AMOUNT, @l_ASSET_CODE, @sExecDT, @l_MAKER_ID, @l_CHECKER_ID, @COST_DEP_CODE, @l_DESC_CORE_NOTE);
357

    
358

    
359
    END
360

    
361

    
362
FETCH NEXT FROM lstDATACOST INTO  @COST_BRANCH_ID, @COST_DEP_ID , @COST_AMOUNT
363
END
364
CLOSE lstDATACOST
365
DEALLOCATE lstDATACOST
366

    
367
    END
368

    
369

    
370

    
371
  END
372

    
373
  IF (@l_AMT_OVER > 0)
374
  BEGIN
375
    EXEC SYS_CodeMasters_Gen 'ASS_ENTRIES_POST'
376
                            ,@l_ET_ID OUT
377
    IF @l_ET_ID = ''
378
      OR @l_ET_ID IS NULL
379
      GOTO ABORT
380
    INSERT INTO ASS_ENTRIES_POST (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)
381
      VALUES (@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_AMT_OVER, 'Y', @sExecDT, @l_DESC_CORE, @l_MAKER_ID, @l_CHECKER_ID)
382
    EXEC SYS_CodeMasters_Gen 'ASS_ENTRIES_POST_SYNC'
383
                            ,@l_ETP_ID OUT
384
    INSERT INTO ASS_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS)
385
      VALUES (@l_ETP_ID, @l_ET_ID, @l_AMORTDT_ID, @l_BRANCH_CODE, @l_AMORT_GL, 'VND', 'C', @l_AMT_OVER, 1, @l_AMT_OVER, @l_ASSET_CODE, @sExecDT, @l_MAKER_ID, @l_CHECKER_ID, @DEP_CODE, @l_DESC_CORE);
386

    
387
    EXEC SYS_CodeMasters_Gen 'ASS_ENTRIES_POST_SYNC'
388
                            ,@l_ETP_ID OUT
389

    
390
    INSERT INTO ASS_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS)
391
      VALUES (@l_ETP_ID, @l_ET_ID, @l_AMORTDT_ID, @l_BRANCH_CODE, '871001005', 'VND', 'D', @l_AMT_OVER, 1, @l_AMT_OVER, @l_ASSET_CODE, @sExecDT, @l_MAKER_ID, @l_CHECKER_ID, @DEP_CODE, @l_DESC_CORE);
392
  END
393

    
394
  IF @@error <> 0
395
    GOTO ABORT
396

    
397
  --UPDATE BANG ASS_MASTER
398
  UPDATE ASS_MASTER
399
  SET AMORTIZED_AMT = ISNULL(AMORTIZED_AMT, 0) + @l_AMORT_AMT
400
     ,AMORTIZED_MONTH = ISNULL(AMORTIZED_MONTH, 0) + 1
401
     ,AMORT_STATUS = @l_CURR_AMORT_STATUS
402
  WHERE ASSET_ID = @l_ASSET_ID
403
IF @@error <> 0
404
    GOTO ABORT
405
  --		
406
  --update da hach toan
407
  UPDATE ASS_AMORT_DT
408
  SET EXECUTED = '1'
409
  WHERE AMORTDT_ID = @l_AMORTDT_ID
410
  
411
  INSERT INTO ASS_AMORT_DT_LATEST (AMORTDT_ID, AMORT_ID, AMORT_DT, CRDR, BRANCH_ID, DEP_ID, ASSET_ID, AMORT_AMT, GROUP_ID, EXECUTED, TRN_TYPE, TRN_DESC, TYPE_ID)
412
 SELECT aad.AMORTDT_ID
413
       ,aad.AMORT_ID
414
       ,aad.AMORT_DT
415
       ,aad.CRDR
416
       ,aad.BRANCH_ID
417
       ,aad.DEP_ID
418
       ,aad.ASSET_ID
419
       ,aad.AMORT_AMT
420
       ,aad.GROUP_ID
421
       ,aad.EXECUTED
422
       ,aad.TRN_TYPE
423
       ,aad.TRN_DESC,@l_ASSET_TYPE FROM ASS_AMORT_DT aad WHERE aad.AMORTDT_ID=@l_AMORTDT_ID
424

    
425

    
426
  IF @@error <> 0
427
    GOTO ABORT
428

    
429
  FETCH NEXT FROM pCur INTO @l_AMORTDT_ID, @l_ASSET_ID, @l_BRANCH_ID, @l_DEP_ID, @l_AMORT_AMT,
430
  @l_GROUP_ID, @l_AMORTIZED_MONTH, @l_AMORT_END_DATE, @l_ASSET_TYPE, @l_AM_AMORT_AMT, @l_AMORT_START_DATE, @l_AMORT_MONTH
431
  END
432

    
433
  --	--UPDATE STATUS CHO BANG ASS_AMORT
434
  UPDATE ASS_AMORT
435
  SET PROCESS_STATUS = 'S'
436
  WHERE AMORT_ID = @p_AMORT_ID
437
  IF @@error <> 0
438
    GOTO ABORT
439
  --
440
  --	/****CAP NHAT CCLD TINH TRANG: DPB(Đã phân bổ chi phí khi xuất sử dụng) VE DANG KHAU HAO***/
441
  	IF @l_ASSET_TYPE_DO = 'CCLD'
442
  BEGIN
443
    UPDATE ASS_MASTER
444
    SET AMORT_STATUS = 'DKH'
445
    WHERE AMORT_STATUS IN ('DPB')
446
    --AND convert(date, AMORT_START_DATE) <= convert(date, @sExecDT)
447
    AND CONVERT(DATE, AMORT_START_DATE) <= CONVERT(DATE, dbo.FN_GetLastDayOfMonth(@sExecDT))
448
    AND AMORTIZED_AMT < AMORT_AMT
449
    AND RECORD_STATUS = '1'
450
    AND AUTH_STATUS = 'A'
451
    AND TYPE_ID = 'CCLD'
452
    AND (BRANCH_ID = @l_BRANCH_ID_DO
453
    OR (@l_BRANCH_TYPE_DO = 'CN' --NEU LA CN THI PHAN BO LUON CHO PGD THUOC CHI NHANH DO
454
    --AND BRANCH_ID IN (SELECT * FROM [dbo].[CM_BRANCH_GETCHILDID](@l_BRANCH_ID_DO)))) --THIEUVQ
455
    AND BRANCH_ID IN (SELECT
456
        BR.BRANCH_ID
457
      FROM ASS_AMORT_BRN BR
458
      WHERE BR.AMORT_ID = @p_AMORT_ID)
459
    )) --THIEUVQ  28092016
460
  END
461

    
462
  CLOSE pCur
463
  DEALLOCATE pCur
464

    
465
  COMMIT TRANSACTION
466
  SELECT
467
    '0' AS Result
468
   ,'' ErrorDesc
469
  RETURN '0'
470
ABORT:
471
  BEGIN
472

    
473
    CLOSE pCur
474
    DEALLOCATE pCur
475

    
476
    ROLLBACK TRANSACTION
477
    SELECT
478
      '-1' AS Result
479
     ,@@error ErrorDesc
480
    RETURN '-1'
481
  END