Project

General

Profile

ASS_GROUP.txt

Luc Tran Van, 12/30/2022 04:41 PM

 
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