Project

General

Profile

PL_IMPORT_UP.txt

Truong Nguyen Vu, 11/24/2020 11:14 AM

 
1

    
2
ALTER PROCEDURE [dbo].[PL_IMPORT_Upd]
3
@p_IMPORT_ID VARCHAR(20),
4
@p_PLAN_CODE VARCHAR(20),
5
@p_IMP_YEAR	INT  = NULL,
6
@p_IMP_NAME NVARCHAR(200),
7
@p_FILE_NAME	NVARCHAR(200)  = NULL,
8
@p_TOTAL_QTY	NUMERIC(18,0)  = NULL,
9
@p_TOTAL_ATM	NUMERIC(18,0)  = NULL,
10
@p_NOTES	nvarchar(1000)  = NULL,
11
@p_RECORD_STATUS	varchar(1)  = NULL,
12
@p_MAKER_ID	varchar(20)  = NULL,
13
@p_CREATE_DT	DATETIME = NULL,
14
@p_AUTH_STATUS	varchar(50)  = NULL,
15
@p_CHECKER_ID	varchar(20)  = NULL,
16
@p_APPROVE_DT	DATETIME = NULL,
17
@p_XMLData XML=NULL
18
AS
19
BEGIN TRANSACTION
20
DECLARE @TableTmp TABLE(
21
		IMP_YEAR VARCHAR(4),
22
		PLAN_TYPE_ID VARCHAR(15),
23
		PLAN_TYPE_CODE VARCHAR(15),
24
		PLAN_TYPE_NAME NVARCHAR(200), 
25
		COST_ID VARCHAR(15),
26
		COST_CODE VARCHAR(100),
27
		COST_NAME NVARCHAR(200),
28
		BRANCH_ID VARCHAR(15),
29
		BRANCH_CODE VARCHAR(15),
30
		BRANCH_NAME NVARCHAR(200),
31
		DEP_ID	varchar(15),
32
		DEP_CODE VARCHAR(15),
33
		DEP_NAME NVARCHAR(200),
34
		REF_ID INT,
35
		REF_CODE VARCHAR(20),
36
		REF_NAME NVARCHAR(200),
37
		GOOD_ID varchar(15),
38
		GOOD_CODE VARCHAR(20),
39
		GOOD_NAME NVARCHAR(200),
40
		QTY INT,
41
		TOTAL_AMT NUMERIC(18,2),
42
		NOTES NVARCHAR(1000)
43
);
44
Declare @hdoc INT
45
	Exec sp_xml_preparedocument @hdoc Output, @p_XMLData	
46

    
47
INSERT INTO @TableTmp
48
 SELECT *
49
	FROM OPENXML(@hDoc,'/Root/PLIMPORT',2)
50
	WITH 
51
	(
52
	    IMP_YEAR VARCHAR(4),
53
		PLAN_TYPE_ID VARCHAR(15),
54
		PLAN_TYPE_CODE VARCHAR(15),
55
		PLAN_TYPE_NAME NVARCHAR(200), 
56
		COST_ID VARCHAR(15),
57
		COST_CODE VARCHAR(100),
58
		COST_NAME NVARCHAR(200),
59
		BRANCH_ID VARCHAR(15),
60
		BRANCH_CODE VARCHAR(15),
61
		BRANCH_NAME NVARCHAR(200),
62
		DEP_ID	varchar(15),
63
		DEP_CODE VARCHAR(15),
64
		DEP_NAME NVARCHAR(200),
65
		REF_ID INT,
66
		REF_CODE VARCHAR(20),
67
		REF_NAME NVARCHAR(200),
68
		GOOD_ID varchar(15),
69
		GOOD_CODE VARCHAR(20),
70
		GOOD_NAME NVARCHAR(200),
71
		QTY INT,
72
		TOTAL_AMT NUMERIC(18,2),
73
		NOTES NVARCHAR(1000)
74
	)
75

    
76
	--Update ID
77
UPDATE @TableTmp  SET BRANCH_ID=(SELECT  TOP 1 BRANCH_ID FROM dbo.CM_BRANCH WHERE dbo.CM_BRANCH.BRANCH_CODE=[@TableTmp].BRANCH_CODE),
78
DEP_ID=(SELECT  TOP 1 DEP_ID FROM dbo.CM_DEPARTMENT WHERE dbo.CM_DEPARTMENT.DEP_CODE=[@TableTmp].DEP_CODE),
79
COST_ID=(SELECT  TOP 1 DVDM_ID FROM dbo.CM_DVDM WHERE dbo.CM_DVDM.DVDM_CODE=[@TableTmp].COST_CODE AND IS_DVDM=1),
80
PLAN_TYPE_ID=(SELECT  TOP 1 PLAN_TYPE_ID FROM dbo.CM_PLAN_TYPE WHERE dbo.CM_PLAN_TYPE.PLAN_TYPE_CODE=[@TableTmp].PLAN_TYPE_CODE),
81
GOOD_ID=(SELECT  TOP 1 GD_ID FROM dbo.CM_GOODS WHERE dbo.CM_GOODS.GD_CODE=[@TableTmp].GOOD_CODE)
82

    
83
DECLARE @Error NVARCHAR(MAX)
84
--- Validate dữ liệu
85
IF(EXISTS(SELECT BRANCH_ID FROM @TableTmp WHERE BRANCH_ID IS NULL OR BRANCH_ID=''))
86
BEGIN
87

    
88
SET @Error=(select STUFF( (select ';' + BRANCH_CODE from @TableTmp  WHERE BRANCH_ID IS NULL OR BRANCH_ID='' FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))	
89
	
90

    
91
		ROLLBACK TRANSACTION
92
		SELECT '-1' as Result, '' IMPORT_ID, N'Mã đơn vị chưa tồn tại trên hệ thống: '+ @Error ErrorDesc
93
		RETURN '-1'
94

    
95

    
96

    
97
END
98

    
99

    
100

    
101
IF(EXISTS(SELECT DEP_ID FROM @TableTmp WHERE DEP_ID IS NULL OR DEP_ID=''))
102
BEGIN
103

    
104
		
105
		SET @Error=(select STUFF( (select ';' + DEP_CODE from @TableTmp  WHERE DEP_ID IS NULL OR DEP_ID='' FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
106

    
107
		ROLLBACK TRANSACTION
108
		SELECT '-1' as Result, '' IMPORT_ID, N'Mã phòng ban chưa tồn tại trên hệ thống: '+@Error ErrorDesc
109
		RETURN '-1'
110
END
111

    
112
IF(EXISTS(SELECT COST_ID FROM @TableTmp WHERE (COST_ID IS NULL OR COST_ID='') AND COST_CODE IS NOT NULL AND COST_CODE <>''))
113
BEGIN
114

    
115
			SET @Error=(select STUFF( (select ';' + COST_CODE from @TableTmp  WHERE COST_ID IS NULL OR COST_ID='' FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))	
116
		
117
		ROLLBACK TRANSACTION
118
		SELECT '-1' as Result, '' IMPORT_ID, N'Mã đơn vị đầu mối chưa tồn tại trên hệ thống: '+@Error ErrorDesc
119
		RETURN '-1'
120
END
121

    
122
IF(EXISTS(SELECT PLAN_TYPE_ID FROM @TableTmp WHERE PLAN_TYPE_ID IS NULL OR PLAN_TYPE_ID=''))
123
BEGIN
124

    
125

    
126
		SET @Error=(select STUFF( (select ';' + PLAN_TYPE_CODE from @TableTmp  WHERE PLAN_TYPE_ID IS NULL OR PLAN_TYPE_ID='' FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))	
127

    
128
		ROLLBACK TRANSACTION
129
		SELECT '-1' as Result, '' IMPORT_ID, N'Mã loại ngân sách chưa tồn tại trên hệ thống: '+@Error ErrorDesc
130
		RETURN '-1'
131
END
132

    
133
IF(EXISTS(SELECT GOOD_ID FROM @TableTmp WHERE GOOD_ID IS NULL OR GOOD_ID=''))
134
BEGIN
135

    
136
		SET @Error=(select STUFF( (select ';' + GOOD_CODE from @TableTmp  WHERE GOOD_ID IS NULL OR GOOD_ID='' FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))	
137

    
138
		ROLLBACK TRANSACTION
139
		SELECT '-1' as Result, '' IMPORT_ID, N'Mã hạn mục chưa tồn tại trên hệ thống: '+@Error ErrorDesc
140
		RETURN '-1'
141
END
142

    
143

    
144

    
145

    
146

    
147
	--IF(EXISTS(
148
	--SELECT DT.TRADE_ID FROM dbo.PL_MASTER PM 
149
	--LEFT JOIN dbo.PL_TRADEDETAIL DT ON PM.PLAN_ID=DT.PLAN_ID
150
	--WHERE EXISTS()
151
	--BEGIN
152

    
153
	--		ROLLBACK TRANSACTION
154
	--		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
155
	--		RETURN '-1'
156
	--END
157

    
158
	UPDATE dbo.PL_IMPORT_DT SET IS_UPDATE=0
159

    
160
	UPDATE dbo.PL_IMPORT SET PLAN_CODE=@p_PLAN_CODE,IMP_NAME=@p_IMP_NAME,FILE_NAME=@p_FILE_NAME,IMP_YEAR=@p_IMP_YEAR,IMP_QTY=@p_TOTAL_QTY,
161
	IMP_ATM=@p_TOTAL_ATM,NOTES=@p_NOTES,EDITER_ID=@p_MAKER_ID,EDIT_DT=CAST(@p_CREATE_DT AS DATE),CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=CAST(@p_APPROVE_DT AS DATE),AUTH_STATUS=@p_AUTH_STATUS,IS_UPDATE=1
162
	WHERE IMPORT_ID=@p_IMPORT_ID
163

    
164

    
165
	
166
	DECLARE ImportDT CURSOR FOR
167
	SELECT IMP_YEAR,
168
           PLAN_TYPE_ID,
169
           PLAN_TYPE_CODE,
170
           PLAN_TYPE_NAME,
171
           COST_ID,
172
           COST_CODE,
173
           COST_NAME,
174
           BRANCH_ID,
175
           BRANCH_CODE,
176
           BRANCH_NAME,
177
           DEP_ID,
178
           DEP_CODE,
179
           DEP_NAME,
180
		  REF_ID,
181
		  REF_CODE,
182
		  REF_NAME,
183
           GOOD_ID,
184
           GOOD_CODE,
185
           GOOD_NAME,
186
           QTY,
187
           TOTAL_AMT,
188
           NOTES FROM @TableTmp
189
	
190
	OPEN ImportDT
191

    
192

    
193
	DECLARE 
194
	    @PLAN_TYPE_ID VARCHAR(15),
195
		@PLAN_TYPE_CODE VARCHAR(15),
196
		@PLAN_TYPE_NAME NVARCHAR(200), 
197
		@COST_ID VARCHAR(15),
198
		@COST_CODE VARCHAR(15),
199
		@COST_NAME NVARCHAR(200),
200
		@BRANCH_ID VARCHAR(15),
201
		@BRANCH_CODE VARCHAR(15),
202
		@BRANCH_NAME NVARCHAR(200),
203
		@DEP_ID	varchar(15),
204
		@DEP_CODE VARCHAR(15),
205
		@DEP_NAME NVARCHAR(200),
206
		@REF_ID INT,
207
		@REF_CODE VARCHAR(20),
208
		@REF_NAME NVARCHAR(200),
209
		@GOOD_ID varchar(15),
210
		@GODD_CODE VARCHAR(15),
211
		@GOOD_NAME NVARCHAR(200),@QTY INT,@TOTAL_AMT NUMERIC(18,2),@NOTES NVARCHAR(1000),
212
		@IMP_YEAR VARCHAR(4)
213

    
214
		,@IMP_LOG_CODE VARCHAR(15)
215
		EXEC SYS_CodeMasters_Gen 'IMP_LOG_CODE', @IMP_LOG_CODE out
216
		IF @IMP_LOG_CODE='' OR @IMP_LOG_CODE IS NULL GOTO ABORT		
217

    
218
	FETCH NEXT FROM ImportDT INTO @IMP_YEAR, @PLAN_TYPE_ID, @PLAN_TYPE_CODE,@PLAN_TYPE_NAME,@COST_ID,@COST_CODE,@COST_NAME,@BRANCH_ID,@BRANCH_CODE,
219
	@BRANCH_NAME,@DEP_ID,@DEP_CODE,@DEP_NAME,@REF_ID,@REF_CODE,@REF_NAME,@GOOD_ID,@GODD_CODE,@GOOD_NAME,@QTY,@TOTAL_AMT,@NOTES
220
	
221
	WHILE @@FETCH_STATUS = 0	
222
	BEGIN		
223
	
224
		DECLARE @l_IMPORTDT_ID VARCHAR(20)
225

    
226
		SET @l_IMPORTDT_ID= (SELECT TOP 1 IMP_DT_ID FROM  PL_IMPORT_DT WHERE IMPORT_ID=@p_IMPORT_ID AND ISNULL(PLAN_TYPE_ID,'')=ISNULL(@PLAN_TYPE_ID,'') AND ISNULL(COST_ID,'')=ISNULL(@COST_ID,'') AND BRANCH_ID=@BRANCH_ID AND ISNULL(REF_CODE,'')= ISNULL(@REF_CODE,'')
227
		AND ISNULL(DEP_ID,'')=ISNULL(@DEP_ID,'') AND ISNULL(GOOD_ID,'')=ISNULL(@GOOD_ID,''))
228
		IF(@l_IMPORTDT_ID IS NULL OR @l_IMPORTDT_ID='')
229
		BEGIN
230
			EXEC SYS_CodeMasters_Gen 'IMPORT_DT', @l_IMPORTDT_ID out
231
			IF @l_IMPORTDT_ID='' OR @l_IMPORTDT_ID IS NULL GOTO ABORT	
232
				INSERT INTO dbo.PL_IMPORT_DT
233
			(
234
		    IMP_DT_ID,
235
		    IMPORT_ID,
236
		    PLAN_TYPE_ID,
237
			PLAN_TYPE_CODE,
238
			PLAN_TYPE_NAME,
239
		    COST_ID,
240
			COST_CODE,
241
			COST_NAME,
242
		    BRANCH_ID,
243
			BRANCH_CODE,
244
			BRANCH_NAME,
245
		    DEP_ID,
246
			DEP_CODE,
247
			DEP_NAME,
248
			REF_CODE,
249
			REF_NAME,
250
		    GOOD_ID,
251
			GOOD_CODE,
252
			GOOD_NAME,
253
		    QTY,
254
		    TOTAL_AMT,
255
		    NOTES,
256
			IMP_YEAR,
257
			IS_UPDATE
258
		)
259
		VALUES
260
		(   @l_IMPORTDT_ID,   -- IMP_DT_ID - varchar(20)
261
		    @p_IMPORT_ID,   -- IMPORT_ID - varchar(20)
262
		   @PLAN_TYPE_ID, @PLAN_TYPE_CODE,@PLAN_TYPE_NAME,@COST_ID,@COST_CODE,@COST_NAME,@BRANCH_ID,@BRANCH_CODE,
263
	        @BRANCH_NAME,@DEP_ID,@DEP_CODE,@DEP_NAME,@REF_CODE,@REF_NAME,@GOOD_ID,@GODD_CODE,@GOOD_NAME,@QTY,@TOTAL_AMT,@NOTES,@IMP_YEAR,1
264
		  )
265
		END
266
	
267
		ELSE
268
		BEGIN
269
			UPDATE dbo.PL_IMPORT_DT SET QTY=@QTY,TOTAL_AMT=@TOTAL_AMT,REF_NAME=@REF_NAME,IS_UPDATE=1
270
			WHERE IMP_DT_ID=@l_IMPORTDT_ID
271
		END
272
		  INSERT INTO dbo.PL_IMPORT_LOG
273
		  (
274
		     IMP_LOG_CODE,
275
		      IMP_ID,
276
		      FILE_NAME,
277
		      IMP_YEAR,
278
		      NOTES,
279
		    RECORD_STATUS,
280
		    AUTH_STATUS,
281
		    MAKER_ID,
282
		    CREATE_DT,
283
		    EDITER_ID,
284
		    EDIT_DT,
285
		    CHECKER_ID,
286
		    APPROVE_DT,
287
			PLAN_TYPE_ID,
288
			PLAN_TYPE_CODE,
289
			PLAN_TYPE_NAME,
290
		    COST_ID,
291
			COST_CODE,
292
			COST_NAME,
293
		    BRANCH_ID,
294
			BRANCH_CODE,
295
			BRANCH_NAME,
296
		    DEP_ID,
297
			DEP_CODE,
298
			DEP_NAME,
299
			REF_CODE,
300
			REF_NAME,
301
		    GOOD_ID,
302
			GOOD_CODE,
303
			GOOD_NAME,
304
		      QTY,
305
		      TOTAL_AMT
306
		  )
307
		  VALUES
308
		  (   
309
				@IMP_LOG_CODE,
310
		      @p_IMPORT_ID,        -- IMP_ID_OLD - varchar(20)
311
		      @p_FILE_NAME,       -- FILE_NAME - nvarchar(200)
312
		      @p_IMP_YEAR,         -- IMP_YEAR - int
313
		      @p_NOTES,       -- NOTES - nvarchar(1000)
314
		      @p_RECORD_STATUS,        -- RECORD_STATUS - varchar(1)
315
		      @p_AUTH_STATUS,        -- AUTH_STATUS - varchar(1)
316
		      @p_MAKER_ID,        -- MAKER_ID - varchar(15)
317
		      @p_CREATE_DT, -- CREATE_DT - datetime
318
			  @p_MAKER_ID,        -- EDITER_ID - varchar(15)
319
		      CAST(@p_CREATE_DT AS DATE), -- EDIT_DT - datetime
320
		      @p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
321
		      CAST(@p_APPROVE_DT AS DATE),  -- APPROVE_DT - datetime
322
		      @PLAN_TYPE_ID, @PLAN_TYPE_CODE,@PLAN_TYPE_NAME,@COST_ID,@COST_CODE,@COST_NAME,@BRANCH_ID,@BRANCH_CODE,
323
	        @BRANCH_NAME,@DEP_ID,@DEP_CODE,@DEP_NAME,@REF_CODE,@REF_NAME,@GOOD_ID,@GODD_CODE,@GOOD_NAME,
324
		      @QTY,    -- QTY - int
325
		      @TOTAL_AMT -- TOTAL_AMT - numeric(18, 2)
326
		      )
327
		  	
328
		
329
		IF @@Error <> 0 GOTO ABORT	
330
	
331
		FETCH NEXT FROM ImportDT INTO  @IMP_YEAR,@PLAN_TYPE_ID, @PLAN_TYPE_CODE,@PLAN_TYPE_NAME,@COST_ID,@COST_CODE,@COST_NAME,@BRANCH_ID,@BRANCH_CODE,
332
	@BRANCH_NAME,@DEP_ID,@DEP_CODE,@DEP_NAME,@REF_ID,@REF_CODE,@REF_NAME,@GOOD_ID,@GODD_CODE,@GOOD_NAME	,@QTY,@TOTAL_AMT,@NOTES
333
	
334
	END
335
	CLOSE ImportDT
336
	DEALLOCATE ImportDT
337

    
338
	SET @p_TOTAL_ATM=(SELECT SUM(ISNULL(TOTAL_AMT,0)) FROM dbo.PL_IMPORT_DT WHERE IMPORT_ID=@p_IMPORT_ID)
339
	SELECT @p_TOTAL_QTY=(SELECT SUM(ISNULL(QTY,0)) FROM dbo.PL_IMPORT_DT WHERE IMPORT_ID=@p_IMPORT_ID)
340

    
341
	UPDATE dbo.PL_IMPORT SET IMP_QTY=@p_TOTAL_QTY,IMP_ATM=@p_TOTAL_ATM WHERE IMPORT_ID=@p_IMPORT_ID
342
		IF @@Error <> 0 GOTO ABORT
343
COMMIT TRANSACTION
344
SELECT '0' as Result, @p_IMPORT_ID  IMPORT_ID, '' ErrorDesc
345
RETURN '0'
346
ABORT:
347
BEGIN
348
		ROLLBACK TRANSACTION
349
		SELECT '-1' as Result, '' IMPORT_ID, '' ErrorDesc
350
		RETURN '-1'
351
End