Project

General

Profile

upd_pyc.txt

Luc Tran Van, 04/14/2023 08:39 AM

 
1
ALTER PROCEDURE dbo.TR_REQUEST_SHOP_DOC_Upd
2
@p_REQ_ID	varchar(15) = null ,
3
@p_REQ_CODE	nvarchar(100)  = NULL,
4
@p_REQ_NAME	nvarchar(200)  = NULL,
5
@p_REQ_DT	VARCHAR(20) = NULL,
6
@p_NOTES	nvarchar(1000)  = NULL,
7
@p_RECORD_STATUS	varchar(1)  = NULL,
8
@p_MAKER_ID VARCHAR(100)  = NULL,
9
@p_CREATE_DT	VARCHAR(20) = NULL,
10
@p_AUTH_STATUS	varchar(50)  = NULL,
11
@p_CHECKER_ID VARCHAR(100)  = NULL,
12
@p_APPROVE_DT	VARCHAR(20) = NULL,
13
@p_LISTASSET XML = NULL,
14
@p_ListCostCenter XML,
15
@p_REQ_TYPE	varchar(10) = NULL,
16
@p_REQ_CONTENT NVARCHAR(1000)=NULL,
17
@p_BRANCH_ID VARCHAR(15)=NULL,
18
@p_DEP_ID VARCHAR(15)=NULL,
19
@p_CURRENT_URI VARCHAR(500)=NULL,
20
@p_PL_CODE VARCHAR(50) = NULL --PHUCVH 14/11/22 BỔ SUNG SỐ TỜ TRÌNH
21
AS
22
	
23
	DECLARE @sErrorCode VARCHAR(20)
24
		
25
	IF 	@sErrorCode <> ''
26
	BEGIN
27
		SELECT ErrorCode Result, ''  REQ_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @sErrorCode
28
		RETURN '0'
29
	END
30

    
31
	Declare @hdoc INT
32
	Exec sp_xml_preparedocument @hdoc Output,@p_LISTASSET
33
	DECLARE AssetDetail CURSOR FOR
34
	SELECT *
35
	FROM OPENXML(@hdoc,'/Root/AssetDetail',2)
36
	WITH 
37
	(
38
		REQDT_ID VARCHAR(15),
39
		PLAN_ID	varchar(15)  ,
40
		TRADE_ID	varchar(15)  ,
41
		ASS_GROUP_ID	varchar(15)  ,
42
		[DESCRIPTION] nvarchar(500),
43
		UNIT_ID	varchar(15)  ,
44
		QUANTITY	decimal(18)  ,
45
		PRICE	decimal(18)  ,
46
		TOTAL_AMT	decimal(18),	
47
		NOTES	nvarchar(1000),
48
		RECEIVE_BRANCH	varchar(15),
49
		RECEIVE_ADDR	nvarchar(1000),
50
		RECEIVE_PERSON	nvarchar(500),
51
		RECEIVE_TEL	varchar(100),
52
		RECEIVE_SUBBRANCH	varchar(20),
53
		RECEIVE_DEP	varchar(20),
54
		RECEIVE_EMAIL	nvarchar(200),
55
		REQ_DT_TYPE VARCHAR(20),
56
		QTY_ETM DECIMAL(18,0),
57
		EMP_CODE VARCHAR(15),
58
		EMP_ID VARCHAR(15),
59
        TYPE_XL VARCHAR(50),
60
		DO_EMAIL VARCHAR(200),
61
		ASS_ID VARCHAR(20),
62
        REASON NVARCHAR(1200)
63
	)
64
	OPEN AssetDetail
65

    
66
	SET @p_DEP_ID=(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
67
  IF(@p_BRANCH_ID <> 'DV0001') SET @p_DEP_ID = NULL
68
	PRINT 'PASS KHOI TAO'
69
    
70
            DECLARE @STATUS VARCHAR(15) = (SELECT STATUS FROM TR_REQUEST_SHOP_DOC WHERE REQ_ID= @p_REQ_ID)
71
BEGIN TRANSACTION
72
IF(@p_REQ_NAME IS NULL OR @p_REQ_NAME='' )
73
			BEGIN
74
			    ROLLBACK TRANSACTION
75
				SELECT '-1' as Result, ''  REQ_ID, N'Tên PYC bắt buộc nhập' ErrorDesc
76
				RETURN '-1'
77
			END
78
--            IF(@p_REQ_CONTENT IS NULL OR @p_REQ_CONTENT='' )
79
--			BEGIN
80
--			    ROLLBACK TRANSACTION
81
--				SELECT '-1' as Result, ''  REQ_ID, N'Nội dung PYC bắt buộc nhập' ErrorDesc
82
--				RETURN '-1'
83
--			END
84
		--insert master
85
		BEGIN
86
            IF(@STATUS = 'NEW') SET @p_AUTH_STATUS = 'E'
87
            IF(@STATUS = 'QLTS_NL' OR @STATUS = 'QLTS_N')
88
            BEGIN
89
            	UPDATE TR_REQUEST_SHOP_DOC 
90
                SET [REQ_CONTENT]=@p_REQ_CONTENT
91
                ,[REQ_NAME] = @p_REQ_NAME
92
                ,[NOTES] = @p_NOTES,[AUTH_STATUS] = 'U'
93
    		    ,PL_CODE = @p_PL_CODE
94
        	    WHERE  REQ_ID= @p_REQ_ID
95
            END
96
            ELSE
97
            BEGIN
98
            	UPDATE TR_REQUEST_SHOP_DOC SET [REQ_TYPE] = @p_REQ_TYPE,[REQ_CONTENT]=@p_REQ_CONTENT,[REQ_NAME] = @p_REQ_NAME,
99
    			[NOTES] = @p_NOTES,[RECORD_STATUS] = @p_RECORD_STATUS,DEP_ID = @p_DEP_ID,[AUTH_STATUS] = @p_AUTH_STATUS,[CHECKER_ID] = @p_CHECKER_ID,[APPROVE_DT] = CONVERT(DATETIME, @p_APPROVE_DT, 103),[BRANCH_ID]=@p_BRANCH_ID
100
    		    ,PL_CODE = @p_PL_CODE
101
        	    WHERE  REQ_ID= @p_REQ_ID
102
            END
103
			
104

    
105
            IF (@STATUS = 'REJECT')
106
            BEGIN
107
            	UPDATE TR_REQUEST_SHOP_DOC 
108
                SET STATUS = 'NEW', AUTH_STATUS = 'E'
109
                WHERE  REQ_ID= @p_REQ_ID
110

    
111
                
112
        		UPDATE PL_REQUEST_PROCESS SET [STATUS]='P' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='REJECT'
113
                INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],BRANCH_ID,PARENT_PROCESS_ID,DEP_ID, CHECKER_ID)
114
		        VALUES(@p_REQ_ID,'ADDNEW','C',@p_BRANCH_ID,'',@p_DEP_ID, @p_MAKER_ID)
115
                INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID,DEP_ID, PROCESS_TYPE)
116
		        VALUES(@p_REQ_ID,'APPNEW','U','GDDV',@p_BRANCH_ID,'ADDNEW',@p_DEP_ID, 'Approve')
117
--                IF(@p_BRANCH_ID='DV0001')
118
--        		 BEGIN
119
--        			UPDATE PL_REQUEST_PROCESS SET [STATUS]='P' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='ADDNEW'
120
--        			UPDATE PL_REQUEST_PROCESS SET [STATUS]='P' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='APPNEW'
121
--                     --GỬI QLTS
122
--            		 INSERT INTO PL_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID, DEP_ID)
123
--            		 VALUES(@p_REQ_ID,'QLTS_N','C','QLTS','DV0001','APPNEW', 'DEP000000000048')
124
--        			UPDATE TR_REQUEST_SHOP_DOC SET [STATUS]='QLTS_N', AUTH_STATUS = 'U' WHERE REQ_ID=@p_REQ_ID
125
--        		END
126

    
127
                INSERT INTO dbo.PL_PROCESS
128
					(
129
						REQ_ID,
130
						PROCESS_ID,
131
						CHECKER_ID,
132
						APPROVE_DT,
133
						PROCESS_DESC,NOTES
134
					)
135
					VALUES
136
					(   @p_REQ_ID,       
137
						'UPDATE',        
138
						@p_MAKER_ID,       
139
						GETDATE(), 
140
						N'Cập nhật phiếu bị từ chối',
141
						N'Nhân viên tạo phiếu cập nhật sau từ chối'    
142
					)
143
            END
144
		END
145
        
146
		IF @@Error <> 0 GOTO ABORT
147
		PRINT 'UPD MASTER SUCCESS'
148
		--insert asset detail tương đương như NỘI DUNG trong bảng contract detail
149
		Declare 
150
		@REQDT_ID VARCHAR(15),
151
		@PLAN_ID	varchar(15),
152
		@TRADE_ID	varchar(15),
153
		@ASS_GROUP_ID	varchar(15),
154
		@DESCRIPTION nvarchar(500),
155
		@UNIT_ID	varchar(15),
156
		@QUANTITY	decimal(18),
157
		@PRICE	decimal(18),
158
		@TOTAL_AMT	decimal(18),		
159
		@NOTES	nvarchar(1000),
160
		@REQ_ID	varchar(15)  = NULL,	
161
		@RECEIVE_BRANCH	varchar(15)=NULL,
162
		@RECEIVE_ADDR	nvarchar(1000)=NULL,
163
		@RECEIVE_PERSON	nvarchar(500)=NULL,
164
		@RECEIVE_TEL	varchar(100)=NULL,
165
		@RECEIVE_SUBBRANCH	varchar(20),
166
		@RECEIVE_DEP	varchar(20),
167
		@RECEIVE_EMAIL	nvarchar(200),
168
		@REQ_DT_TYPE VARCHAR(20),
169
		@QTY_ETM DECIMAL(18,0),
170
		@EMP_CODE VARCHAR(15),
171
		@EMP_ID VARCHAR(15),
172
        @TYPE_XL VARCHAR(50),
173
		@DO_EMAIL VARCHAR(200),
174
		@ASS_ID VARCHAR(20),
175
        @REASON NVARCHAR(1200)
176

    
177
        IF(@STATUS = 'QLTS_NL')
178
        BEGIN
179
        	DELETE FROM TR_REQUEST_SHOP_DOC_DT WHERE REQ_DOC_ID = @p_REQ_ID AND (REQ_DT_TYPE = 'BUYNEW' OR REQ_DT_TYPE = 'XKSD')
180
        END
181
        ELSE IF(@STATUS = 'NEW' OR @STATUS = 'REJECT')
182
        BEGIN
183
        	DELETE FROM TR_REQUEST_SHOP_DOC_DT WHERE REQ_DOC_ID = @p_REQ_ID AND (REQ_DT_TYPE = 'ORGINAL' OR REQ_DT_TYPE = 'ASSET_BROKEN')
184
        END
185
        ELSE DELETE FROM TR_REQUEST_SHOP_DOC_DT WHERE REQ_DOC_ID = @p_REQ_ID AND REQ_DT_TYPE <> 'ASSET_BROKEN'
186

    
187
		FETCH NEXT FROM AssetDetail INTO @REQDT_ID,@PLAN_ID,@TRADE_ID,@ASS_GROUP_ID,@DESCRIPTION,@UNIT_ID,@QUANTITY,
188
		@PRICE,@TOTAL_AMT,@NOTES, @RECEIVE_BRANCH, @RECEIVE_ADDR, @RECEIVE_PERSON, @RECEIVE_TEL,@RECEIVE_SUBBRANCH
189
          ,@RECEIVE_DEP,@RECEIVE_EMAIL,@REQ_DT_TYPE, @QTY_ETM
190
          ,@EMP_CODE,@EMP_ID,@TYPE_XL,@DO_EMAIL,@ASS_ID,@REASON
191
		WHILE @@FETCH_STATUS = 0	
192
		BEGIN
193
			
194
			DECLARE @l_REQDT_ID VARCHAR(15)
195
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_SHOP_DOC_DT', @l_REQDT_ID out
196
			IF @l_REQDT_ID='' OR @l_REQDT_ID IS NULL GOTO ABORT
197
            
198
--            IF(@EMP_ID IS NULL OR @EMP_ID='' )
199
--			BEGIN
200
--			    ROLLBACK TRANSACTION
201
--				SELECT '-1' as Result, @p_REQ_ID  REQ_ID, N'Người sử dụng bắt buộc nhập' ErrorDesc
202
--				RETURN '-1'
203
--			END
204
--			IF(@RECEIVE_EMAIL IS NULL OR @RECEIVE_EMAIL='' AND @REQ_DT_TYPE <> 'ASSET_BROKEN')
205
--			BEGIN
206
--			    ROLLBACK TRANSACTION
207
--				SELECT '-1' as Result, @p_REQ_ID  REQ_ID, N'Email người nhận bắt buộc nhập' ErrorDesc
208
--				RETURN '-1'
209
--			END
210

    
211
            IF(@QTY_ETM IS NULL AND @REQ_DT_TYPE <> 'ASSET_BROKEN')
212
			BEGIN
213
			    ROLLBACK TRANSACTION
214
				SELECT '-1' as Result, @p_REQ_ID  REQ_ID, N'Số lượng bắt buộc nhập' ErrorDesc
215
				RETURN '-1'
216
			END
217
			
218
            IF((SELECT COUNT(*) FROM TR_REQUEST_SHOP_DOC_DT WHERE TRADE_ID = @p_REQ_ID AND ASS_GROUP_ID = @ASS_GROUP_ID) > 0)
219
			BEGIN
220
			    ROLLBACK TRANSACTION
221
				SELECT '-1' as Result, @p_REQ_ID  REQ_ID, N'Nhóm tài sản chọn không thể trùng nhau' ErrorDesc
222
				RETURN '-1'
223
			END
224
            IF(@REQ_DT_TYPE = 'ASSET_BROKEN' AND NOT EXISTS(SELECT * FROM TR_REQUEST_SHOP_DOC_DT TRSDD WHERE TRSDD.ASS_ID = @ASS_ID AND TRSDD.REQ_DOC_ID = @p_REQ_ID))
225
            BEGIN
226
            	INSERT INTO TR_REQUEST_SHOP_DOC_DT(REQDT_ID,REQ_DOC_ID,PLAN_ID,TRADE_ID,ASS_GROUP_ID,[DESCRIPTION],UNIT_ID,
227
    		    QUANTITY,PRICE,TOTAL_AMT,NOTES, RECEIVE_BRANCH, RECEIVE_ADDR, RECEIVE_PERSON, RECEIVE_TEL,RECORD_STATUS,
228
    			MAKER_ID,CREATE_DT,AUTH_STATUS,CHECKER_ID,APPROVE_DT,RECEIVE_SUBBRANCH,RECEIVE_DEP,RECEIVE_EMAIL
229
                ,REQ_DT_TYPE,QTY_ETM,EMP_CODE,EMP_ID,TYPE_XL,REASON,ASS_ID)
230
    			VALUES(@l_REQDT_ID,@p_REQ_ID,@PLAN_ID,@TRADE_ID,@ASS_GROUP_ID,@DESCRIPTION,@UNIT_ID,
231
    			@QUANTITY,@PRICE,@TOTAL_AMT,@NOTES, @RECEIVE_BRANCH, @RECEIVE_ADDR, @RECEIVE_PERSON, @RECEIVE_TEL,@p_RECORD_STATUS,
232
    			@p_MAKER_ID,CONVERT(DATETIME, @p_CREATE_DT, 103),@p_AUTH_STATUS,@p_CHECKER_ID,CONVERT(DATETIME, @p_APPROVE_DT, 103)
233
               ,@RECEIVE_SUBBRANCH,@RECEIVE_DEP,@RECEIVE_EMAIL,@REQ_DT_TYPE,@QTY_ETM
234
               ,@EMP_CODE,@EMP_ID,@TYPE_XL,@REASON,@ASS_ID)
235
            END
236
            ELSE IF(@REQ_DT_TYPE <> 'ASSET_BROKEN')
237
            BEGIN
238
            	INSERT INTO TR_REQUEST_SHOP_DOC_DT(REQDT_ID,REQ_DOC_ID,PLAN_ID,TRADE_ID,ASS_GROUP_ID,[DESCRIPTION],UNIT_ID,
239
    		    QUANTITY,PRICE,TOTAL_AMT,NOTES, RECEIVE_BRANCH, RECEIVE_ADDR, RECEIVE_PERSON, RECEIVE_TEL,RECORD_STATUS,
240
    			MAKER_ID,CREATE_DT,AUTH_STATUS,CHECKER_ID,APPROVE_DT,RECEIVE_SUBBRANCH,RECEIVE_DEP,RECEIVE_EMAIL
241
                ,REQ_DT_TYPE,QTY_ETM,EMP_CODE,EMP_ID,TYPE_XL,REASON,ASS_ID)
242
    			VALUES(@l_REQDT_ID,@p_REQ_ID,@PLAN_ID,@TRADE_ID,@ASS_GROUP_ID,@DESCRIPTION,@UNIT_ID,
243
    			@QUANTITY,@PRICE,@TOTAL_AMT,@NOTES, @RECEIVE_BRANCH, @RECEIVE_ADDR, @RECEIVE_PERSON, @RECEIVE_TEL,@p_RECORD_STATUS,
244
    			@p_MAKER_ID,CONVERT(DATETIME, @p_CREATE_DT, 103),@p_AUTH_STATUS,@p_CHECKER_ID,CONVERT(DATETIME, @p_APPROVE_DT, 103)
245
               ,@RECEIVE_SUBBRANCH,@RECEIVE_DEP,@RECEIVE_EMAIL,@REQ_DT_TYPE,@QTY_ETM
246
               ,@EMP_CODE,@EMP_ID,@TYPE_XL,@REASON,@ASS_ID)
247
            END
248
			
249

    
250
    
251
			
252
   IF @@ERROR <> 0 GOTO ABORT
253

    
254
		-- next Group_Id
255
			
256
   FETCH NEXT FROM AssetDetail INTO @REQDT_ID,@PLAN_ID,@TRADE_ID,@ASS_GROUP_ID,@DESCRIPTION,@UNIT_ID,@QUANTITY,
257
		@PRICE,@TOTAL_AMT,@NOTES, @RECEIVE_BRANCH, @RECEIVE_ADDR, @RECEIVE_PERSON, @RECEIVE_TEL,@RECEIVE_SUBBRANCH
258
  ,@RECEIVE_DEP,@RECEIVE_EMAIL,@REQ_DT_TYPE, @QTY_ETM
259
  ,@EMP_CODE,@EMP_ID,@TYPE_XL,@DO_EMAIL,@ASS_ID,@REASON
260

    
261
   END
262
		CLOSE AssetDetail
263
		DEALLOCATE AssetDetail
264
            
265
    IF(EXISTS(SELECT * FROM TR_REQUEST_SHOP_DOC TRSD WHERE TRSD.REQ_ID = @p_REQ_ID AND TRSD.STATUS = 'NEW' OR TRSD.STATUS = 'REJECT' OR TRSD.STATUS = 'QLTS_N'))
266
    BEGIN
267
                
268
            IF(@STATUS <> 'QLTS_NL')
269
            BEGIN
270
                Declare @hdoc2 INT
271
    		
272
        		Declare 
273
        		@l_NOTES NVARCHAR(MAX),
274
        		@l_AUTH_STATUS VARCHAR(5),
275
        		@COST_ID	varchar(15),
276
        		@REQ_COST_ID	varchar(15)
277
    
278
                Exec sp_xml_preparedocument @hdoc2 Output,@p_ListCostCenter
279
    			DECLARE ListCostCenters  CURSOR FOR
280
    			SELECT *
281
    			FROM OPENXML(@hdoc2,'/Root/ListCostCenter',2)
282
    			WITH 
283
    			(
284
    				REQ_COST_ID VARCHAR(15),
285
    				COST_ID	varchar(15),	
286
    				AUTH_STATUS VARCHAR(5),
287
    				NOTES	nvarchar(MAX)
288
    				
289
    			)
290
    			OPEN ListCostCenters
291
                DELETE TR_REQUEST_SHOP_COSTCENTER WHERE REQ_ID = @p_REQ_ID
292
    			FETCH NEXT FROM ListCostCenters INTO @REQ_COST_ID,@COST_ID,@l_AUTH_STATUS, @l_NOTES
293
    			WHILE @@FETCH_STATUS = 0	
294
    			BEGIN
295
    				BEGIN
296
    				EXEC SYS_CodeMasters_Gen 'TR_REQUEST_SHOP_COSTCENTER', @REQ_COST_ID out
297
    				IF @REQ_COST_ID='' OR @REQ_COST_ID IS NULL GOTO ABORT
298
    				INSERT INTO dbo.TR_REQUEST_SHOP_COSTCENTER
299
    				(
300
    				    REQ_COST_ID,
301
    				    COST_ID,
302
    				    REQ_ID,
303
    				    NOTES,
304
    				    AUTH_STATUS,
305
    				    MAKER_ID,
306
    				    CREATE_DT,
307
    				    CHECKER_ID,
308
    				    APPROVE_DT
309
    				)
310
    				VALUES
311
    				(   @REQ_COST_ID,        -- REQ_COST_ID - varchar(15)
312
    				    @COST_ID,        -- COST_ID - varchar(15)
313
    					@p_REQ_ID,        -- REQ_ID - varchar(15)
314
    				    @l_NOTES,       -- NOTES - nvarchar(500)
315
    					'E',        -- AUTH_STATUS - varchar(1)
316
    				    NULL,        -- MAKER_ID - varchar(15)
317
    				    GETDATE(), -- CREATE_DT - datetime
318
    				    '',        -- CHECKER_ID - varchar(15)
319
    				    NULL  -- APPROVE_DT - datetime
320
    				    )
321
    				END						
322
    				IF @@ERROR <> 0 GOTO ABORT2
323
    			-- next Group_Id
324
    				FETCH NEXT FROM ListCostCenters INTO @REQ_COST_ID,@COST_ID,@l_AUTH_STATUS, @l_NOTES
325
    			END
326
    			CLOSE ListCostCenters
327
    			DEALLOCATE ListCostCenters
328
        END
329
    END
330

    
331
COMMIT TRANSACTION
332
SELECT '0' as Result, @p_REQ_ID  REQ_ID, '' ErrorDesc
333
RETURN '0'
334

    
335
ABORT:
336
BEGIN
337
		CLOSE AssetDetail
338
		DEALLOCATE AssetDetail	
339
		ROLLBACK TRANSACTION
340
		SELECT '-1' AS RESULT
341
		RETURN '-1'
342
End
343
ABORT2:
344
BEGIN
345
		CLOSE ListCostCenters
346
		DEALLOCATE ListCostCenters	
347
		ROLLBACK TRANSACTION
348
		SELECT '-1' AS RESULT
349
		RETURN '-1'
350
End