1
|
|
2
|
ALTER PROCEDURE dbo.ASS_GROUP_Ins
|
3
|
@p_TYPE_ID varchar(15) = NULL,
|
4
|
@p_GROUP_CODE nvarchar(100) = NULL,
|
5
|
@p_GROUP_NAME nvarchar(200) = NULL,
|
6
|
@p_PARENT_ID varchar(15) = NULL,
|
7
|
@p_IS_LEAF varchar(1) = NULL,
|
8
|
--@p_GROUP_LEVEL int = NULL, --SP se tu dong tinh level
|
9
|
@p_ASS_CAT varchar(10) = NULL ,
|
10
|
@p_AMORT_ACCTNO varchar(50) = NULL,
|
11
|
@p_EXP_ACCTNO varchar(50) = NULL,
|
12
|
@p_INC_ACCTNO varchar(50) = NULL,
|
13
|
@p_LIQ_ACCTNO varchar(50) = NULL,
|
14
|
@p_ASSET_ACCTNO varchar(50) = NULL,
|
15
|
@p_ASSET_ACCTNO_NHNN VARCHAR(50) = NULL,
|
16
|
@p_AMORT_MONTH int = NULL,
|
17
|
@p_AMORT_RATE decimal(18,2) = NULL,
|
18
|
@p_NOTES nvarchar(1000) = NULL,
|
19
|
@p_RECORD_STATUS varchar(1) = NULL,
|
20
|
@p_AUTH_STATUS varchar(1) = NULL,
|
21
|
@p_MAKER_ID varchar(15) = NULL,
|
22
|
@p_MANAGER_ID varchar(15) = NULL,
|
23
|
@p_CREATE_DT VARCHAR(20) = NULL,
|
24
|
@p_CHECKER_ID varchar(15) = NULL,
|
25
|
@p_APPROVE_DT VARCHAR(20) = NULL,
|
26
|
@p_AMORT_MONTH_MIN int = NULL,
|
27
|
@p_AMORT_MONTH_MAX int = NULL
|
28
|
AS
|
29
|
DECLARE @l_PARENT_GROUP_LEVEL int = 0
|
30
|
DECLARE @l_GROUP_LEVEL int
|
31
|
DECLARE @l_GROUP_ID VARCHAR(15)
|
32
|
DECLARE @sErrorCode VARCHAR(20) = ''
|
33
|
DECLARE @l_AMORT_MONTH INT
|
34
|
-- LUCTV: BO SUNG CONG THUC TU TINH
|
35
|
SET @l_AMORT_MONTH = CASE WHEN @p_AMORT_RATE IS NULL OR @p_AMORT_RATE = 0 THEN 0 ELSE ROUND(12/@p_AMORT_RATE*100,0) END
|
36
|
--Lay group level cua cha
|
37
|
IF (@p_PARENT_ID IS NULL OR @p_PARENT_ID = '')
|
38
|
BEGIN
|
39
|
SET @l_GROUP_LEVEL = 1
|
40
|
END
|
41
|
ELSE
|
42
|
BEGIN
|
43
|
SELECT @l_PARENT_GROUP_LEVEL = ISNULL(GROUP_LEVEL,0) FROM ASS_GROUP A WHERE A.GROUP_ID = @p_PARENT_ID
|
44
|
|
45
|
SET @l_GROUP_LEVEL = @l_PARENT_GROUP_LEVEL + 1
|
46
|
END
|
47
|
|
48
|
--Kiem tra parent_ID hop le
|
49
|
IF (@p_PARENT_ID IS NOT NULL AND @p_PARENT_ID <> '')
|
50
|
BEGIN
|
51
|
IF NOT EXISTS(SELECT * FROM ASS_GROUP A WHERE A.GROUP_ID = @p_PARENT_ID)
|
52
|
BEGIN
|
53
|
SET @sErrorCode = 'ASS-00006'
|
54
|
END
|
55
|
END
|
56
|
|
57
|
IF EXISTS(SELECT 1 FROM ASS_GROUP A WHERE A.GROUP_CODE = @p_GROUP_CODE AND A.TYPE_ID=@p_TYPE_ID)
|
58
|
BEGIN
|
59
|
SET @sErrorCode = 'ASS-000021'
|
60
|
END
|
61
|
|
62
|
--PHONGNT 19/9/2022 LUON MAC DINH GIA TRỊ MIN MAX
|
63
|
SET @p_AMORT_MONTH_MIN=1
|
64
|
SET @p_AMORT_MONTH_MAX=5000
|
65
|
|
66
|
-- 19-04-2019 LUCTV: KIEM TRA MIN - MAX CUA NHOM TS KHONG DUOC =0
|
67
|
IF (@p_AMORT_MONTH_MIN =0 OR @p_AMORT_MONTH_MIN IS NULL)
|
68
|
BEGIN
|
69
|
SELECT '-1' as Result, '' AMORT_MONTH, N'Số tháng khấu hao MIN phải lớn hơn 0' ErrorDesc
|
70
|
RETURN '-1'
|
71
|
END
|
72
|
IF (@p_AMORT_MONTH_MAX =0 OR @p_AMORT_MONTH_MAX IS NULL)
|
73
|
BEGIN
|
74
|
SELECT '-1' as Result, '' AMORT_MONTH, N'Số tháng khấu hao MAX phải lớn hơn 0' ErrorDesc
|
75
|
RETURN '-1'
|
76
|
END
|
77
|
IF (@p_AMORT_MONTH_MAX < @p_AMORT_MONTH_MIN)
|
78
|
BEGIN
|
79
|
SELECT '-1' as Result, '' AMORT_MONTH, N'Số tháng khấu hao MAX phải lớn hơn hoặc bằng số tháng khấu hao MIN' ErrorDesc
|
80
|
RETURN '-1'
|
81
|
END
|
82
|
IF (@l_AMORT_MONTH IS NULL OR @l_AMORT_MONTH >@p_AMORT_MONTH_MAX OR @l_AMORT_MONTH <@p_AMORT_MONTH_MIN)
|
83
|
BEGIN
|
84
|
SELECT '-1' as Result, '' AMORT_MONTH, N'Số tháng khấu hao phải nằm trong khoảng '+ CONVERT(VARCHAR(5),@p_AMORT_MONTH_MIN)+N' - ' +CONVERT(VARCHAR(5),@p_AMORT_MONTH_MAX) ErrorDesc
|
85
|
RETURN '-1'
|
86
|
END
|
87
|
-- END LUCTV 19-04-2019
|
88
|
IF @sErrorCode <> ''
|
89
|
BEGIN
|
90
|
SELECT ErrorCode Result, '' AMORT_MONTH, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @sErrorCode
|
91
|
RETURN 0
|
92
|
END
|
93
|
|
94
|
BEGIN TRANSACTION
|
95
|
|
96
|
EXEC SYS_CodeMasters_Gen 'ASS_GROUP', @l_GROUP_ID out
|
97
|
IF @l_GROUP_ID='' OR @l_GROUP_ID IS NULL GOTO ABORT
|
98
|
|
99
|
--TINH SO KY KHAU HAO
|
100
|
--SET @p_AMORT_RATE = (CASE WHEN @p_AMORT_RATE IS NULL OR @p_AMORT_RATE = 0 then 0 ELSE (12/@p_AMORT_RATE)*100 END)
|
101
|
SET @l_AMORT_MONTH = CASE WHEN @p_AMORT_RATE IS NULL OR @p_AMORT_RATE = 0 THEN 0 ELSE ROUND(12/@p_AMORT_RATE*100,0) END
|
102
|
|
103
|
--Insert bang ASS_GROUP
|
104
|
INSERT INTO ASS_GROUP
|
105
|
(
|
106
|
[GROUP_ID],
|
107
|
[TYPE_ID],
|
108
|
[GROUP_CODE],
|
109
|
[GROUP_NAME],
|
110
|
[PARENT_ID],
|
111
|
[IS_LEAF],
|
112
|
[GROUP_LEVEL],
|
113
|
[ASS_CAT],
|
114
|
[AMORT_ACCTNO],
|
115
|
[EXP_ACCTNO],
|
116
|
[INC_ACCTNO],
|
117
|
[LIQ_ACCTNO],
|
118
|
[ASSET_ACCTNO],
|
119
|
[ASSET_ACCTNO_NHNN],
|
120
|
[AMORT_MONTH],
|
121
|
[AMORT_RATE],
|
122
|
[NOTES],
|
123
|
[RECORD_STATUS],
|
124
|
[AUTH_STATUS],
|
125
|
[MAKER_ID],
|
126
|
[CREATE_DT],
|
127
|
[CHECKER_ID],
|
128
|
[APPROVE_DT],
|
129
|
[AMORT_MONTH_MIN],
|
130
|
[AMORT_MONTH_MAX],
|
131
|
[MANAGER_ID]
|
132
|
)
|
133
|
VALUES
|
134
|
(
|
135
|
@l_GROUP_ID,
|
136
|
@p_TYPE_ID,
|
137
|
@p_GROUP_CODE,
|
138
|
@p_GROUP_NAME,
|
139
|
@p_PARENT_ID,
|
140
|
--@p_IS_LEAF,
|
141
|
'Y', --Luon luon la leaf
|
142
|
@l_GROUP_LEVEL,
|
143
|
@p_ASS_CAT,
|
144
|
@p_AMORT_ACCTNO,
|
145
|
@p_EXP_ACCTNO,
|
146
|
@p_INC_ACCTNO,
|
147
|
@p_LIQ_ACCTNO,
|
148
|
@p_ASSET_ACCTNO,
|
149
|
@p_ASSET_ACCTNO_NHNN,
|
150
|
@l_AMORT_MONTH,--sua
|
151
|
@p_AMORT_RATE,
|
152
|
@p_NOTES,
|
153
|
@p_RECORD_STATUS,
|
154
|
@p_AUTH_STATUS,
|
155
|
@p_MAKER_ID,
|
156
|
CONVERT(DATETIME, @p_CREATE_DT, 103),
|
157
|
@p_CHECKER_ID,
|
158
|
(CASE WHEN @p_APPROVE_DT IS NOT NULL AND @p_APPROVE_DT <> '' then CONVERT(DATETIME, @p_APPROVE_DT, 103) ELSE NULL END),
|
159
|
@p_AMORT_MONTH_MIN,
|
160
|
@p_AMORT_MONTH_MAX,
|
161
|
@p_MANAGER_ID
|
162
|
)
|
163
|
|
164
|
IF @@Error <> 0 GOTO ABORT
|
165
|
|
166
|
--UPDATE IS_LEAF = 'N' cho record cha
|
167
|
IF (@p_PARENT_ID IS NOT NULL AND @p_PARENT_ID<>'')
|
168
|
BEGIN
|
169
|
UPDATE ASS_GROUP
|
170
|
SET IS_LEAF = 'N'
|
171
|
WHERE GROUP_ID = @p_PARENT_ID
|
172
|
IF @@Error <> 0 GOTO ABORT
|
173
|
END
|
174
|
|
175
|
COMMIT TRANSACTION
|
176
|
SELECT '0' as Result, CAST(@l_AMORT_MONTH as varchar(100)) AMORT_MONTH, '' ErrorDesc
|
177
|
RETURN '0'
|
178
|
ABORT:
|
179
|
BEGIN
|
180
|
|
181
|
ROLLBACK TRANSACTION
|
182
|
SELECT '-1' as Result, '' AMORT_MONTH, '' ErrorDesc
|
183
|
RETURN '-1'
|
184
|
|
185
|
End
|