Project

General

Profile

PL_IMPORT_UP.txt

Truong Nguyen Vu, 11/26/2020 02:55 PM

 
1

    
2

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

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

    
77
	--Update ID
78
UPDATE @TableTmp  SET BRANCH_ID=(SELECT  TOP 1 BRANCH_ID FROM dbo.CM_BRANCH WHERE dbo.CM_BRANCH.BRANCH_CODE=[@TableTmp].BRANCH_CODE),
79
DEP_ID=(SELECT  TOP 1 DEP_ID FROM dbo.CM_DEPARTMENT WHERE dbo.CM_DEPARTMENT.DEP_CODE=[@TableTmp].DEP_CODE),
80
COST_ID=(SELECT  TOP 1 DVDM_ID FROM dbo.CM_DVDM WHERE dbo.CM_DVDM.DVDM_CODE=[@TableTmp].COST_CODE AND IS_DVDM=1),
81
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),
82
GOOD_ID=(SELECT  TOP 1 GD_ID FROM dbo.CM_GOODS WHERE dbo.CM_GOODS.GD_CODE=[@TableTmp].GOOD_CODE)
83

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

    
89
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, ''))	
90
	
91

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

    
96

    
97

    
98
END
99

    
100

    
101

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

    
105
		
106
		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, ''))
107

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

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

    
116
			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, ''))	
117
		
118
		ROLLBACK TRANSACTION
119
		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
120
		RETURN '-1'
121
END
122

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

    
126

    
127
		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, ''))	
128

    
129
		ROLLBACK TRANSACTION
130
		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
131
		RETURN '-1'
132
END
133

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

    
137
		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, ''))	
138

    
139
		ROLLBACK TRANSACTION
140
		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
141
		RETURN '-1'
142
END
143

    
144

    
145

    
146

    
147

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

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

    
159
	UPDATE dbo.PL_IMPORT_DT SET IS_UPDATE=0
160

    
161
	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,
162
	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
163
	WHERE IMPORT_ID=@p_IMPORT_ID
164

    
165

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

    
193

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

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

    
219
	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,
220
	@BRANCH_NAME,@DEP_ID,@DEP_CODE,@DEP_NAME,@REF_ID,@REF_CODE,@REF_NAME,@GOOD_ID,@GODD_CODE,@GOOD_NAME,@QTY,@TOTAL_AMT,@NOTES
221
	
222
	WHILE @@FETCH_STATUS = 0	
223
	BEGIN		
224
	
225
		DECLARE @l_IMPORTDT_ID VARCHAR(20)
226

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

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

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