1
|
ALTER PROCEDURE dbo.PL_IMPORT_App
|
2
|
@P_IMPORT_ID VARCHAR(15),
|
3
|
@P_AUTH_STATUS VARCHAR(1),
|
4
|
@P_CHECKER_ID VARCHAR(12),
|
5
|
@P_APPROVE_DT VARCHAR(20) = NULL
|
6
|
AS
|
7
|
|
8
|
BEGIN TRY
|
9
|
BEGIN TRANSACTION;
|
10
|
|
11
|
DECLARE @IS_UPDATE BIT
|
12
|
|
13
|
|
14
|
SET @IS_UPDATE = (SELECT IS_UPDATE FROM dbo.PL_IMPORT WHERE IMPORT_ID=@P_IMPORT_ID )
|
15
|
|
16
|
|
17
|
--VALIDATE dữ liệu
|
18
|
|
19
|
DECLARE @IMPORT_YEAR VARCHAR(4)
|
20
|
|
21
|
SET @IMPORT_YEAR=(SELECT CAST(IMP_YEAR AS VARCHAR(4)) FROM dbo.PL_IMPORT WHERE IMPORT_ID=@P_IMPORT_ID)
|
22
|
|
23
|
IF(EXISTS(SELECT *FROM dbo.PL_IMPORT_DT WHERE IMPORT_ID=@P_IMPORT_ID AND IMP_YEAR <> @IMPORT_YEAR))
|
24
|
BEGIN
|
25
|
|
26
|
ROLLBACK TRANSACTION
|
27
|
SELECT '-1' as Result, '' IMPORT_ID, N'Duyệt nhật thất bại,tồn tại hạn mục sai năm kế hoạch' ErrorDesc
|
28
|
RETURN '-1'
|
29
|
|
30
|
END
|
31
|
|
32
|
IF(@IS_UPDATE=0)
|
33
|
BEGIN
|
34
|
IF(EXISTS(
|
35
|
SELECT DT.TRADE_ID FROM dbo.PL_MASTER PM
|
36
|
LEFT JOIN dbo.PL_TRADEDETAIL DT ON PM.PLAN_ID=DT.PLAN_ID
|
37
|
WHERE PM.YEAR=@IMPORT_YEAR AND (EXISTS(
|
38
|
SELECT Tmp.GOOD_ID FROM PL_IMPORT_DT Tmp WHERE (Tmp.IMP_YEAR=PM.YEAR AND Tmp.PLAN_TYPE_ID=PM.PLAN_TYPE_ID
|
39
|
AND Tmp.COST_ID=PM.COST_ID AND Tmp.BRANCH_ID=PM.BRANCH_ID
|
40
|
AND Tmp.DEP_ID=PM.DEPT_ID AND Tmp.GOOD_ID=DT.GOODS_ID) AND( (Tmp.QTY < ISNULL(DT.QUANTITY_EXE,0) AND ISNULL(DT.QUANTITY_EXE,0) >0) OR (Tmp.TOTAL_AMT< ISNULL(DT.AMT_EXE,0) AND ISNULL(DT.AMT_EXE,0) >0) )
|
41
|
) OR (NOT EXISTS(SELECT Tmp.GOOD_ID FROM PL_IMPORT_DT Tmp WHERE (Tmp.IMP_YEAR=PM.YEAR AND Tmp.PLAN_TYPE_ID=PM.PLAN_TYPE_ID
|
42
|
AND Tmp.COST_ID=PM.COST_ID AND Tmp.BRANCH_ID=PM.BRANCH_ID
|
43
|
AND Tmp.DEP_ID=PM.DEPT_ID AND Tmp.GOOD_ID=DT.GOODS_ID) ) AND( ISNULL(DT.QUANTITY_EXE,0) > 0 OR ISNULL(DT.AMT_EXE,0) >0)
|
44
|
))))
|
45
|
BEGIN
|
46
|
|
47
|
ROLLBACK TRANSACTION
|
48
|
SELECT '-1' as Result, '' IMPORT_ID, N'Hạn mục chỉnh sửa đã sử dụng vượt hạn mức chỉnh sửa' ErrorDesc
|
49
|
RETURN '-1'
|
50
|
END
|
51
|
END
|
52
|
|
53
|
|
54
|
-- Delete dữ liệu ko có trong import hiện tại.
|
55
|
IF(@IS_UPDATE=0)
|
56
|
BEGIN
|
57
|
UPDATE dbo.PL_TRADEDETAIL SET RECORD_STATUS=0 WHERE NOT EXISTS(SELECT DT.IMP_DT_ID FROM dbo.PL_IMPORT_DT DT WHERE DT.TRADE_ID=PL_TRADEDETAIL.TRADE_ID) AND PL_TRADEDETAIL.PLAN_ID IN (SELECT PLAN_ID FROM dbo.PL_MASTER WHERE YEAR=@IMPORT_YEAR)
|
58
|
|
59
|
UPDATE dbo.PL_MASTER SET RECORD_STATUS=0 WHERE YEAR=@IMPORT_YEAR AND NOT EXISTS(SELECT DT.IMP_DT_ID FROM dbo.PL_IMPORT_DT DT WHERE DT.PLAN_ID=PL_MASTER.PLAN_ID)
|
60
|
END
|
61
|
|
62
|
|
63
|
DECLARE @PLAN_CODE VARCHAR(20),
|
64
|
@PLAN_NAME NVARCHAR(200),
|
65
|
@YEAR INT,
|
66
|
@PLAN_TYPE_ID VARCHAR(15),
|
67
|
@COST_ID VARCHAR(15),
|
68
|
@BRANCH_ID VARCHAR(15),
|
69
|
@BRANCH_CODE VARCHAR(15),
|
70
|
@DEP_ID VARCHAR(15),
|
71
|
@DEP_CODE VARCHAR(15),
|
72
|
@GOOD_ID VARCHAR(15),
|
73
|
@QTY INT,
|
74
|
@TOTAL_AMT DECIMAL(18, 2),
|
75
|
@AMT_ETM DECIMAL(18, 2),
|
76
|
@AMT_EXE DECIMAL(18, 2),
|
77
|
@AMT_TF DECIMAL(18, 2),
|
78
|
@AMT_RECIVE_TF DECIMAL(18, 2),
|
79
|
@NOTES NVARCHAR(1000),
|
80
|
@IMP_AMT NUMERIC(18, 2),
|
81
|
@IMP_QTY NUMERIC(18, 0),
|
82
|
@MARKER_ID VARCHAR(15),
|
83
|
@EDIT_DT DATETIME,
|
84
|
@PLAN_ID VARCHAR(15),
|
85
|
@TRADE_ID VARCHAR(15),
|
86
|
@REF_CODE VARCHAR(20),
|
87
|
@REF_NAME NVARCHAR(200),
|
88
|
@IMP_DT_ID VARCHAR(20)
|
89
|
|
90
|
|
91
|
SELECT @MARKER_ID=MAKER_ID,@EDIT_DT=EDIT_DT FROM dbo.PL_IMPORT WHERE IMPORT_ID=@P_IMPORT_ID
|
92
|
|
93
|
|
94
|
DECLARE Plan_Master CURSOR LOCAL FOR
|
95
|
SELECT IM.PLAN_CODE,IM.IMP_NAME,IM.IMP_YEAR,SUM(ISNULL(IMDT.QTY,0)) AS QTY,SUM(ISNULL(IMDT.TOTAL_AMT,0)) AS AMT, IMDT.PLAN_TYPE_ID, IMDT.COST_ID,IMDT.BRANCH_ID,IMDT.DEP_ID,
|
96
|
IMDT.PLAN_ID,IMDT.BRANCH_CODE,IMDT.DEP_CODE
|
97
|
FROM dbo.PL_IMPORT IM
|
98
|
LEFT JOIN dbo.PL_IMPORT_DT IMDT ON IM.IMPORT_ID=IMDT.IMPORT_ID
|
99
|
WHERE IM.IMPORT_ID = @P_IMPORT_ID AND IMDT.IS_UPDATE=1
|
100
|
GROUP BY IM.PLAN_CODE,IM.IMP_NAME,IM.IMP_YEAR,IMDT.PLAN_TYPE_ID,IMDT.COST_ID,IMDT.BRANCH_ID,IMDT.DEP_ID,IMDT.PLAN_ID,IMDT.BRANCH_CODE,IMDT.DEP_CODE
|
101
|
OPEN Plan_Master;
|
102
|
|
103
|
FETCH NEXT FROM Plan_Master INTO @PLAN_CODE,@PLAN_NAME,@YEAR,@IMP_QTY,@IMP_AMT, @PLAN_TYPE_ID,@COST_ID,@BRANCH_ID,@DEP_ID,@PLAN_ID,@BRANCH_CODE,@DEP_CODE
|
104
|
|
105
|
WHILE @@FETCH_STATUS = 0
|
106
|
BEGIN
|
107
|
|
108
|
SET @PLAN_NAME=N'KẾ HOẠCH NGÂN SÁCH '+ CAST( @YEAR AS VARCHAR(10))
|
109
|
SET @PLAN_CODE= @DEP_CODE+(SELECT RIGHT(CAST( @YEAR AS VARCHAR(10)),2))
|
110
|
IF(NOT EXISTS(SELECT * FROM CM_BRANCH WHERE BRANCH_CODE IN ('069','799','899') AND BRANCH_ID =@BRANCH_ID)) -- LUCTV 23.11.2022 BO SUNG KIEM TRA NEU Ở DVKD THI KHONG PHAN BO CHI PHI VE PHONG BAN
|
111
|
BEGIN
|
112
|
SET @DEP_ID=''
|
113
|
END
|
114
|
--- END LUCTV 23.11.2022
|
115
|
IF(@PLAN_ID IS NULL OR @PLAN_ID='' )
|
116
|
BEGIN
|
117
|
EXEC SYS_CodeMasters_Gen 'PL_MASTER', @PLAN_ID out
|
118
|
IF @PLAN_ID='' OR @PLAN_ID IS NULL GOTO ABORT
|
119
|
|
120
|
INSERT INTO dbo.PL_MASTER
|
121
|
(
|
122
|
PLAN_ID, PLAN_CODE,PLAN_NAME,BRANCH_ID,DEPT_ID,EFFECT_DT,PLAN_TYPE,TOTAL_AMT,APPROVE_VALUE,
|
123
|
VERSON,YEAR,STATUS,NOTES,RECORD_STATUS, MAKER_ID,CREATE_DT,AUTH_STATUS,CHECKER_ID,APPROVE_DT,PLAN_TYPE_ID,COST_ID)
|
124
|
VALUES
|
125
|
( @PLAN_ID,@PLAN_CODE,@PLAN_NAME,@BRANCH_ID,@DEP_ID,GETDATE(),'',@IMP_AMT, @IMP_AMT,
|
126
|
1,@YEAR,'1', N'','1', @MARKER_ID,@EDIT_DT,@P_AUTH_STATUS, @P_CHECKER_ID, CONVERT(DATETIME,@P_APPROVE_DT,103), @PLAN_TYPE_ID,@COST_ID
|
127
|
)
|
128
|
END
|
129
|
ELSE
|
130
|
BEGIN
|
131
|
UPDATE dbo.PL_MASTER SET MAKER_ID=@MARKER_ID,CREATE_DT=@EDIT_DT,AUTH_STATUS=@P_AUTH_STATUS,CHECKER_ID=@P_CHECKER_ID,APPROVE_DT=CONVERT(DATETIME,@P_APPROVE_DT,103)
|
132
|
,TOTAL_AMT=@IMP_AMT,APPROVE_VALUE=@IMP_AMT,VERSON=VERSON+1,PLAN_CODE=@PLAN_CODE,PLAN_NAME=@PLAN_NAME WHERE PLAN_ID=@PLAN_ID
|
133
|
END
|
134
|
|
135
|
DECLARE Plan_Detail CURSOR FOR
|
136
|
SELECT IMP_DT_ID,GOOD_ID,QTY,TOTAL_AMT,NOTES,TRADE_ID,REF_CODE,REF_NAME,AMT_ETM,AMT_EXE,AMT_TF,AMT_RECEIVE_TF FROM dbo.PL_IMPORT_DT
|
137
|
WHERE IMPORT_ID = @P_IMPORT_ID AND IS_UPDATE=1 AND PLAN_TYPE_ID=@PLAN_TYPE_ID AND ISNULL(COST_ID,'')=ISNULL(@COST_ID,'') AND BRANCH_ID=@BRANCH_ID AND (BRANCH_CODE NOT IN ('069','799','899') OR DEP_ID=@DEP_ID)
|
138
|
OPEN Plan_Detail
|
139
|
FETCH NEXT FROM Plan_Detail INTO @IMP_DT_ID,@GOOD_ID,@QTY,@TOTAL_AMT,@NOTES,@TRADE_ID,@REF_CODE,@REF_NAME,@AMT_ETM,@AMT_EXE,@AMT_TF,@AMT_RECIVE_TF
|
140
|
WHILE @@FETCH_STATUS = 0
|
141
|
BEGIN
|
142
|
IF(@TRADE_ID IS NULL OR @TRADE_ID='')
|
143
|
BEGIN
|
144
|
EXEC SYS_CodeMasters_Gen 'PL_TRADEDETAIL', @TRADE_ID out
|
145
|
IF @TRADE_ID='' OR @TRADE_ID IS NULL GOTO ABORT
|
146
|
|
147
|
DELETE FROM dbo.PL_TRADE_REF WHERE TRADE_ID=@TRADE_ID
|
148
|
|
149
|
INSERT INTO dbo.PL_TRADEDETAIL
|
150
|
(
|
151
|
TRADE_ID,
|
152
|
PLAN_ID,
|
153
|
GOODS_ID,
|
154
|
QUANTITY,
|
155
|
AMT_APP,
|
156
|
NOTES,
|
157
|
RECORD_STATUS,
|
158
|
MAKER_ID,
|
159
|
CREATE_DT,
|
160
|
AUTH_STATUS,
|
161
|
CHECKER_ID,
|
162
|
APPROVE_DT,
|
163
|
AMT_ETM,
|
164
|
AMT_EXE,
|
165
|
AMT_TF,
|
166
|
AMT_RECEIVE_TF
|
167
|
)
|
168
|
VALUES
|
169
|
( @TRADE_ID, -- TRADE_ID - varchar(15)
|
170
|
@PLAN_ID, -- PLAN_ID - varchar(15)
|
171
|
@GOOD_ID, -- GOODS_ID - varchar(15)
|
172
|
@QTY, -- QUANTITY - decimal(18, 0)
|
173
|
@TOTAL_AMT, -- PRICE - decimal(18, 0)
|
174
|
@NOTES, -- NOTES - nvarchar(1000)
|
175
|
'1', -- RECORD_STATUS - varchar(1)
|
176
|
@MARKER_ID, -- MAKER_ID - varchar(12)
|
177
|
CAST( @EDIT_DT AS DATE), -- CREATE_DT - datetime
|
178
|
@P_AUTH_STATUS, -- AUTH_STATUS - varchar(50)
|
179
|
@P_CHECKER_ID, -- CHECKER_ID - varchar(12)
|
180
|
CONVERT(DATETIME,@P_APPROVE_DT,103), -- APPROVE_DT - datetime
|
181
|
@AMT_ETM,
|
182
|
@AMT_EXE,
|
183
|
@AMT_TF,
|
184
|
@AMT_RECIVE_TF
|
185
|
)
|
186
|
|
187
|
INSERT INTO dbo.PL_TRADE_REF
|
188
|
(
|
189
|
TRADE_ID,
|
190
|
REF_CODE,
|
191
|
REF_NAME
|
192
|
)
|
193
|
VALUES
|
194
|
( @TRADE_ID, -- TRADE_ID - varchar(15)
|
195
|
@REF_CODE, -- REF_CODE - varchar(50)
|
196
|
@REF_NAME -- REF_NAME - nvarchar(500)
|
197
|
)
|
198
|
|
199
|
END
|
200
|
|
201
|
ELSE
|
202
|
BEGIN
|
203
|
UPDATE dbo.PL_TRADEDETAIL SET
|
204
|
QUANTITY=@QTY,
|
205
|
AMT_APP=@TOTAL_AMT,
|
206
|
NOTES=@NOTES,
|
207
|
MAKER_ID=@MARKER_ID,
|
208
|
CREATE_DT=CAST(@EDIT_DT AS DATE),
|
209
|
AUTH_STATUS=@P_AUTH_STATUS,
|
210
|
CHECKER_ID= @P_CHECKER_ID,
|
211
|
APPROVE_DT= CONVERT(DATETIME,@P_APPROVE_DT,103)
|
212
|
-- AMT_ETM=@AMT_ETM,
|
213
|
-- AMT_EXE=@AMT_EXE,
|
214
|
-- AMT_TF=@AMT_TF,
|
215
|
-- AMT_RECEIVE_TF=@AMT_RECIVE_TF
|
216
|
WHERE TRADE_ID=@TRADE_ID
|
217
|
END
|
218
|
|
219
|
|
220
|
|
221
|
UPDATE dbo.PL_IMPORT_DT SET PLAN_ID=@PLAN_ID,TRADE_ID=@TRADE_ID WHERE IMP_DT_ID=@IMP_DT_ID
|
222
|
|
223
|
FETCH NEXT FROM Plan_Detail INTO @IMP_DT_ID,@GOOD_ID,@QTY,@TOTAL_AMT,@NOTES,@TRADE_ID,@REF_CODE,@REF_NAME,@AMT_ETM,@AMT_EXE,@AMT_TF,@AMT_RECIVE_TF
|
224
|
END
|
225
|
CLOSE Plan_Detail
|
226
|
DEALLOCATE Plan_Detail
|
227
|
FETCH NEXT FROM Plan_Master INTO @PLAN_CODE,@PLAN_NAME,@YEAR,@IMP_QTY,@IMP_AMT, @PLAN_TYPE_ID,@COST_ID,@BRANCH_ID,@DEP_ID,@PLAN_ID,@BRANCH_CODE,@DEP_CODE
|
228
|
END
|
229
|
CLOSE Plan_Master;
|
230
|
DEALLOCATE Plan_Master;
|
231
|
|
232
|
UPDATE dbo.PL_IMPORT
|
233
|
SET AUTH_STATUS = @P_AUTH_STATUS,
|
234
|
CHECKER_ID = @P_CHECKER_ID,
|
235
|
APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103)
|
236
|
WHERE IMPORT_ID = @P_IMPORT_ID;
|
237
|
|
238
|
UPDATE dbo.PL_IMPORT_LOG SET AUTH_STATUS = @P_AUTH_STATUS,
|
239
|
CHECKER_ID = @P_CHECKER_ID,
|
240
|
APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103)
|
241
|
WHERE IMP_ID = @P_IMPORT_ID AND IMP_LOG_CODE= (SELECT TOP (1) IMP_LOG_CODE FROM dbo.PL_IMPORT_LOG WHERE IMP_ID=@P_IMPORT_ID ORDER BY IMP_LOG_ID DESC)
|
242
|
|
243
|
|
244
|
UPDATE dbo.PL_TRADEDETAIL SET PRICE = AMT_APP/ QUANTITY WHERE QUANTITY <> 0 OR QUANTITY IS NULL
|
245
|
UPDATE dbo.PL_TRADEDETAIL SET PRICE = AMT_APP WHERE QUANTITY = 0
|
246
|
|
247
|
--UPDATE dbo.LIMIT_ACCUMULATE SET MAX_AMT=ISNULL((
|
248
|
--SELECT TEMP.AMT_APP FROM (SELECT CD.DVDM_ID,SUM(ISNULL(PT.AMT_APP,0)) AS AMT_APP FROM dbo.CM_DVDM CD
|
249
|
--LEFT JOIN dbo.CM_GOOD_DVDM CGD ON CGD.KHOI_ID=CD.DVDM_ID
|
250
|
--LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.GOODS_ID=CGD.GD_ID
|
251
|
--WHERE CD.IS_KHOI=1 AND PT.PLAN_ID IN (SELECT PLAN_ID FROM dbo.PL_MASTER WHERE YEAR=@IMPORT_YEAR)
|
252
|
--GROUP BY CD.DVDM_ID
|
253
|
--)TEMP WHERE TEMP.DVDM_ID=LIMIT_ACCUMULATE.DVDM_ID
|
254
|
--),0) * (SELECT LIMIT_PERCENT FROM dbo.TL_SYSROLE_LIMIT WHERE TL_SYSROLE_LIMIT.ROLE_ID=LIMIT_ACCUMULATE.ROLE_ID AND LIMIT_TYPE='DCNS')/100
|
255
|
|
256
|
|
257
|
DECLARE @KHOI_ID VARCHAR(20),@AMT_APP DECIMAL(18,2),@LIMIT_PERCENT DECIMAL(18,2),@LIMIT_ID VARCHAR(20)
|
258
|
--SET @LIMIT_PERCENT =(SELECT LIMIT_PERCENT FROM dbo.TL_SYSROLE_LIMIT WHERE TL_SYSROLE_LIMIT.ROLE_ID=LIMIT_ACCUMULATE.ROLE_ID AND LIMIT_TYPE='DCNS')/100
|
259
|
DECLARE lstDATA CURSOR LOCAL FOR
|
260
|
SELECT CDK.KHOI_ID,SUM(PT.AMT_APP) AMT_APP FROM dbo.PL_MASTER PM
|
261
|
LEFT JOIN dbo.PL_TRADEDETAIL PT ON PM.PLAN_ID = PT.PLAN_ID
|
262
|
LEFT JOIN dbo.CM_GOODS CG ON CG.GD_ID=PT.GOODS_ID
|
263
|
LEFT JOIN dbo.CM_DVDM_KHOI CDK ON CDK.DVDM_ID=PM.COST_ID
|
264
|
WHERE PM.YEAR=@IMPORT_YEAR AND PT.RECORD_STATUS=1
|
265
|
--AND CG.GD_TYPE_ID='NS'
|
266
|
GROUP BY CDK.KHOI_ID
|
267
|
OPEN lstDATA
|
268
|
FETCH NEXT FROM lstDATA INTO @KHOI_ID,@AMT_APP
|
269
|
WHILE @@FETCH_STATUS=0
|
270
|
BEGIN
|
271
|
SET @LIMIT_PERCENT =(SELECT LIMIT_PERCENT FROM dbo.TL_SYSROLE_LIMIT WHERE TL_SYSROLE_LIMIT.ROLE_ID='GDK' AND LIMIT_TYPE='DCNS')/100
|
272
|
IF(EXISTS(SELECT * FROM dbo.LIMIT_ACCUMULATE WHERE DVDM_ID=@KHOI_ID AND ROLE_ID='GDK'))
|
273
|
UPDATE dbo.LIMIT_ACCUMULATE SET MAX_AMT=@AMT_APP*@LIMIT_PERCENT WHERE ROLE_ID='GDK' AND DVDM_ID=@KHOI_ID
|
274
|
ELSE
|
275
|
BEGIN
|
276
|
EXEC dbo.SYS_CodeMasters_Gen @p_Kind = 'LIMIT_ACCUMULATE', -- varchar(100)
|
277
|
@p_KeyGen = @LIMIT_ID OUTPUT -- varchar(15)
|
278
|
INSERT INTO dbo.LIMIT_ACCUMULATE
|
279
|
(
|
280
|
LIMIT_ID,
|
281
|
ROLE_ID,
|
282
|
TOTAL_APP_AMT,
|
283
|
MAX_AMT,
|
284
|
DVDM_ID,
|
285
|
BRANCH_ID
|
286
|
)
|
287
|
VALUES
|
288
|
( @LIMIT_ID, -- LIMIT_ID - varchar(20)
|
289
|
'GDK', -- ROLE_ID - varchar(20)
|
290
|
NULL, -- TOTAL_APP_AMT - decimal(18, 2)
|
291
|
(@AMT_APP*@LIMIT_PERCENT), -- MAX_AMT - decimal(18, 2)
|
292
|
@KHOI_ID, -- DVDM_ID - varchar(20)
|
293
|
'' -- BRANCH_ID - varchar(20)
|
294
|
)
|
295
|
|
296
|
END
|
297
|
IF(EXISTS(SELECT * FROM dbo.LIMIT_ACCUMULATE WHERE DVDM_ID=@KHOI_ID AND ROLE_ID='PTGD'))
|
298
|
UPDATE dbo.LIMIT_ACCUMULATE SET MAX_AMT=@AMT_APP*@LIMIT_PERCENT WHERE ROLE_ID='PTGD' AND DVDM_ID=@KHOI_ID
|
299
|
ELSE
|
300
|
BEGIN
|
301
|
EXEC dbo.SYS_CodeMasters_Gen @p_Kind = 'LIMIT_ACCUMULATE', -- varchar(100)
|
302
|
@p_KeyGen = @LIMIT_ID OUTPUT -- varchar(15)
|
303
|
INSERT INTO dbo.LIMIT_ACCUMULATE
|
304
|
(
|
305
|
LIMIT_ID,
|
306
|
ROLE_ID,
|
307
|
TOTAL_APP_AMT,
|
308
|
MAX_AMT,
|
309
|
DVDM_ID,
|
310
|
BRANCH_ID
|
311
|
)
|
312
|
VALUES
|
313
|
( @LIMIT_ID, -- LIMIT_ID - varchar(20)
|
314
|
'PTGD', -- ROLE_ID - varchar(20)
|
315
|
NULL, -- TOTAL_APP_AMT - decimal(18, 2)
|
316
|
(@AMT_APP*@LIMIT_PERCENT), -- MAX_AMT - decimal(18, 2)
|
317
|
@KHOI_ID, -- DVDM_ID - varchar(20)
|
318
|
'' -- BRANCH_ID - varchar(20)
|
319
|
)
|
320
|
|
321
|
END
|
322
|
FETCH NEXT FROM lstDATA INTO @KHOI_ID,@AMT_APP
|
323
|
END
|
324
|
CLOSE lstDATA
|
325
|
DEALLOCATE lstDATA
|
326
|
DECLARE lstDATA CURSOR LOCAL FOR
|
327
|
SELECT PM.BRANCH_ID,SUM(PT.AMT_APP) AMT_APP FROM dbo.PL_MASTER PM
|
328
|
LEFT JOIN dbo.PL_TRADEDETAIL PT ON PM.PLAN_ID = PT.PLAN_ID
|
329
|
LEFT JOIN dbo.CM_GOODS CG ON CG.GD_ID=PT.GOODS_ID
|
330
|
WHERE PM.YEAR=@IMPORT_YEAR AND PT.RECORD_STATUS=1
|
331
|
--AND CG.GD_TYPE_ID='NS'
|
332
|
GROUP BY PM.BRANCH_ID
|
333
|
--OPEN lstDATA
|
334
|
--FETCH NEXT FROM lstDATA INTO @BRANCH_ID,@AMT_APP
|
335
|
--WHILE @@FETCH_STATUS=0
|
336
|
--BEGIN
|
337
|
--SET @LIMIT_PERCENT =(SELECT LIMIT_PERCENT FROM dbo.TL_SYSROLE_LIMIT WHERE TL_SYSROLE_LIMIT.ROLE_ID='GDDV' AND LIMIT_TYPE='DCNS')/100
|
338
|
--IF(EXISTS(SELECT * FROM dbo.LIMIT_ACCUMULATE WHERE BRANCH_ID=@BRANCH_ID AND ROLE_ID='GDDV'))
|
339
|
-- UPDATE dbo.LIMIT_ACCUMULATE SET MAX_AMT=@AMT_APP*@LIMIT_PERCENT WHERE ROLE_ID='GDDV' AND BRANCH_ID=@BRANCH_ID
|
340
|
--ELSE
|
341
|
-- BEGIN
|
342
|
-- EXEC dbo.SYS_CodeMasters_Gen @p_Kind = 'LIMIT_ACCUMULATE', -- varchar(100)
|
343
|
-- @p_KeyGen = @LIMIT_ID OUTPUT -- varchar(15)
|
344
|
-- INSERT INTO dbo.LIMIT_ACCUMULATE
|
345
|
-- (
|
346
|
-- LIMIT_ID,
|
347
|
-- ROLE_ID,
|
348
|
-- TOTAL_APP_AMT,
|
349
|
-- MAX_AMT,
|
350
|
-- DVDM_ID,
|
351
|
-- BRANCH_ID
|
352
|
-- )
|
353
|
-- VALUES
|
354
|
-- ( @LIMIT_ID, -- LIMIT_ID - varchar(20)
|
355
|
-- 'GDDV', -- ROLE_ID - varchar(20)
|
356
|
-- NULL, -- TOTAL_APP_AMT - decimal(18, 2)
|
357
|
-- (@AMT_APP*@LIMIT_PERCENT), -- MAX_AMT - decimal(18, 2)
|
358
|
-- '', -- DVDM_ID - varchar(20)
|
359
|
-- @BRANCH_ID -- BRANCH_ID - varchar(20)
|
360
|
-- )
|
361
|
|
362
|
-- END
|
363
|
--FETCH NEXT FROM lstDATA INTO @BRANCH_ID,@AMT_APP
|
364
|
--END
|
365
|
--CLOSE lstDATA
|
366
|
--DEALLOCATE lstDATA
|
367
|
|
368
|
|
369
|
|
370
|
COMMIT TRANSACTION;
|
371
|
SELECT '0' AS Result,
|
372
|
'' ErrorDesc;
|
373
|
RETURN '0';
|
374
|
END TRY
|
375
|
BEGIN CATCH
|
376
|
ROLLBACK TRANSACTION;
|
377
|
SELECT '-1' AS Result,
|
378
|
ERROR_MESSAGE() ErrorDesc;
|
379
|
RETURN '-1';
|
380
|
END CATCH
|
381
|
ABORT:
|
382
|
BEGIN
|
383
|
ROLLBACK TRANSACTION;
|
384
|
SELECT '-1' AS Result,
|
385
|
ERROR_MESSAGE() ErrorDesc;
|
386
|
RETURN '-1';
|
387
|
END;
|