Project

General

Profile

TR_CONTRACT_Upd.txt

Luc Tran Van, 11/21/2022 09:06 AM

 
1

    
2
ALTER   PROCEDURE [dbo].[TR_CONTRACT_Upd]
3
@p_CONTRACT_ID VARCHAR(15),
4
@p_CONTRACT_CODE	varchar(150)  = NULL,
5
@p_CONTRACT_NAME	nvarchar(200)  = NULL,
6
@p_CONTRACT_TYPE varchar(1) = NULL,
7
@p_BID_ID	varchar(15)  = NULL,
8
@p_SUP_ID	varchar(15)  = NULL,
9
@p_TOTAL_AMT	decimal(18)  = NULL,
10
@p_DELIVERY_DT	VARCHAR(20) = NULL,
11
@p_FORM1	varchar(4)  = NULL,
12
@p_VOUCHER_ID1	varchar(20)  = NULL,
13
@p_BANK1	varchar(4)  = NULL,
14
@p_AMOUNT1	decimal(18)  = NULL,
15
@p_EXP_DT1	VARCHAR(20) = NULL,
16
@p_RATE1	decimal(18,2)  = NULL,
17
@p_FORM2	varchar(4)  = NULL,
18
@p_VOUCHER_ID2	varchar(20)  = NULL,
19
@p_BANK2	varchar(4)  = NULL,
20
@p_AMOUNT2	decimal(18)  = NULL,
21
@p_EXP_DT2	VARCHAR(20) = NULL,
22
@p_RATE2	decimal(18,2)  = NULL,
23
@p_REQ_DOC_ID	nvarchar(50)  = NULL,
24
@p_REQ_DOC_CONTENT	nvarchar(1000)  = NULL,
25
@p_APPROVE_VALUE	decimal(18)  = NULL,
26
@p_SIGN_DT	VARCHAR(20) = NULL,
27
@p_CONSTRUCT_PROGRESS	decimal(18,2)  = NULL,
28
@p_NOTES	nvarchar(1000)  = NULL,
29
@p_RECORD_STATUS	varchar(1)  = NULL,
30
@p_MAKER_ID	varchar(12)  = NULL,
31
@p_CREATE_DT	VARCHAR(20) = NULL,
32
@p_AUTH_STATUS	varchar(50)  = NULL,
33
@p_CHECKER_ID	varchar(12)  = NULL,
34
@p_APPROVE_DT	VARCHAR(20) = NULL,
35
@P_START_DT VARCHAR(20) = NULL,
36
@P_END_DT VARCHAR(20) = NULL,
37
@P_LISTASSET XML = NULL,
38
@P_LISTPAYMENT XML = NULL,
39
@P_CON_TRACK XML = NULL,
40
@p_ListTrREQFile XML,
41
@p_IS_CLOSED VARCHAR(1) = NULL,
42
@p_CONT_TYPE VARCHAR(10) = NULL,
43
@p_CUST_ID VARCHAR(15) = NULL,
44
@p_BRANCH_ID VARCHAR(15) = NULL,
45
@p_EXP_CONTRACT INT = NULL, 
46
@p_DEPOSIT_AMT DECIMAL(18,0) = NULL,
47
@p_TYPE_PERIOD VARCHAR(15) = NULL,
48
@p_DEPOSIT_NOTE NVARCHAR(1000) = NULL,
49
-----------------------BAODNQ 25/2/2022 : Thêm cột vào bảng TR_CONTRACT-------------
50
@p_IS_SEND_APPR VARCHAR(1) = NULL,
51
@p_SEND_APPR_DT VARCHAR(20) = NULL,
52
@p_ADDR NVARCHAR(1000) = NULL
53
AS
54

    
55
IF(EXISTS(SELECT * FROM TR_CONTRACT WHERE CONTRACT_ID = @p_CONTRACT_ID AND AUTH_STATUS = 'U'))
56
BEGIN
57
	SELECT '-1' as Result, @P_CONTRACT_ID  CONTRACT_ID, 
58
		N'Không thể chỉnh sửa. Hợp đồng ' + @p_CONTRACT_CODE + 
59
			N' đã được gửi yêu cầu phê duyệt' ErrorDesc
60
	RETURN '-1'
61
END
62

    
63
	DECLARE @sErrorCode VARCHAR(20)
64
	DECLARE @TEMP TABLE
65
			(
66
				[KEY] varchar(15),
67
				[REF_ID] varchar(15),
68
				[TYPE] varchar(50)
69
			)
70
	--IF (@p_CONTRACT_CODE IS NOT NULL AND @p_CONTRACT_CODE <> '')
71
	--BEGIN
72
	--	IF EXISTS(SELECT * FROM TR_CONTRACT A WHERE A.CONTRACT_CODE = @p_CONTRACT_CODE AND A.CONTRACT_ID != @p_CONTRACT_ID )
73
	--	BEGIN
74
	--		SET @sErrorCode = 'TR-00001'
75
	--	END
76
	--END
77
	
78
	----------------BAODNQ 8/11/2022 : BỎ RÀNG BUỘC TRÙNG SỐ HỢP ĐỒNG------------
79
	--IF(@p_CONTRACT_CODE IS NOT NULL AND @p_CONTRACT_CODE <> '')
80
	--BEGIN
81
	--	IF(EXISTS (SELECT * FROM TR_CONTRACT WHERE CONTRACT_CODE = @p_CONTRACT_CODE AND CONTRACT_ID <> @p_CONTRACT_ID))
82
	--	BEGIN
83
	--		DECLARE @p_EXISTS_CONTRACT_ID VARCHAR(15) = (
84
	--			SELECT TOP 1 CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_CODE = @p_CONTRACT_CODE AND CONTRACT_ID <> @p_CONTRACT_ID
85
	--		)
86
	--		SELECT '-1' AS Result, '' CONTRACT_ID,
87
	--			N'Số hợp đồng: ' + @p_CONTRACT_CODE + N' đã tồn tại trên hệ thống ứng với ID hợp đồng: ' 
88
	--			+ @p_EXISTS_CONTRACT_ID + N'. Vui lòng nhập số hợp đồng khác' ErrorDesc
89
	--		RETURN '-1'
90
	--	END
91
	--END
92

    
93
	IF 	@sErrorCode <> ''
94
	BEGIN
95
		SELECT '-1' as Result, ''  CONTRACT_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @sErrorCode
96
		RETURN '-1'
97
	END
98
	
99
	DECLARE @REF_CODE VARCHAR(15) = NULL, @PDN_TT VARCHAR(15) = NULL
100
	SET @REF_CODE =
101
	(	SELECT TOP 1 B.REQ_PAY_CODE
102
		FROM TR_REQ_ADVANCE_DT A
103
		INNER JOIN TR_REQ_ADVANCE_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID
104
		WHERE A.REF_ID =@p_CONTRACT_ID AND (B.AUTH_STATUS_KT <>'A' OR B.AUTH_STATUS_KT IS NULL)
105
	)
106
	--- TIM KIEM XEM PO NAY CO DUOC PHEP THANH TOAN HAY KHONG
107
	SET @PDN_TT =
108
	(	SELECT TOP 1 B.REQ_PAY_CODE
109
		FROM TR_REQ_ADVANCE_DT A
110
		INNER JOIN TR_REQ_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID
111
		WHERE A.REF_ID =@p_CONTRACT_ID AND (B.AUTH_STATUS_KT <>'A' OR B.AUTH_STATUS_KT IS NULL)
112
	)
113
	IF(@p_IS_CLOSED ='Y' AND @REF_CODE IS NOT NULL)
114
	BEGIN
115
			--ROLLBACK TRANSACTION
116
			SELECT '-1' Result, @p_CONTRACT_ID AS PO_ID, N'Hợp đồng đang được thực hiện tạm ứng với số phiếu: '+@REF_CODE AS ErrorDesc 
117
			RETURN '-1'
118
	END
119
	IF(@p_IS_CLOSED ='Y' AND @PDN_TT IS NOT NULL)
120
	BEGIN
121
		--ROLLBACK TRANSACTION
122
			SELECT '-1' Result, @p_CONTRACT_ID AS PO_ID, N'Hợp đồng đang được thực hiện thanh toán với số phiếu: '+@PDN_TT AS ErrorDesc 
123
			RETURN '-1'
124
	END
125

    
126
	----------------BAODNQ 14/11/2022 : NẾU LOẠI HỢP ĐỒNG = DK, KO BẮT BUỘC NHẬP LƯỚI DANH SÁCH HÀNG HÓA------------------
127
	---------------NGƯỢC LẠI NẾU LÀ (MS, NT), BẮT BUỘC NHẬP LƯỚI DANH SÁCH HÀNG HÓA----------------
128
	DECLARE @p_TR_CONTRACT_DT_XML_COUNT INT
129
	SET @p_TR_CONTRACT_DT_XML_COUNT = (
130
		SELECT @p_LISTASSET.value('count(/Root/AssetDetail/GOODS_ID)', 'INT') AS 'COUNT'
131
	)
132
	PRINT @p_TR_CONTRACT_DT_XML_COUNT
133
	IF(@p_CONT_TYPE <> 'DK' AND @p_TR_CONTRACT_DT_XML_COUNT <= 0)
134
	BEGIN
135
		SELECT '-1' Result, '' AS CONTRACT_ID, N'Đối với hợp đồng không phải là hợp đồng định kỳ, lưới danh sách hàng hóa bắt buộc nhập' AS ErrorDesc 
136
		RETURN '-1'
137
	END
138
	-----------------ENDBAODNQ-------------------
139

    
140
	Declare @hdoc INT
141
	Exec sp_xml_preparedocument @hdoc Output,@P_LISTASSET
142
	DECLARE AssetDetail CURSOR FOR
143
	SELECT *
144
	FROM OPENXML(@hDoc,'/Root/AssetDetail',2)
145
	WITH 
146
	(
147
		CD_ID VARCHAR(15),
148
		GOODS_ID	varchar(15),
149
		UNIT_ID	varchar(15),
150
		QUANTITY	decimal(18),
151
		PRICE	decimal(18),
152
		NOTES	nvarchar(1000),
153
		GD_NAME_REAL NVARCHAR(500),
154
		RECURRING VARCHAR(5),
155
		UNIT_NAME_REAL NVARCHAR(100),
156
		-------------------BAODNQ 23/2/2022: Thêm cột vào bảng TR_CONTRACT_DT-------------
157
		RENT_PRICE DECIMAL(18,0),
158
		BUILDING_ID VARCHAR(15)
159
	)
160
	OPEN AssetDetail
161

    
162
	Exec sp_xml_preparedocument @hdoc Output,@P_LISTPAYMENT
163
	DECLARE PaymentDetail CURSOR FOR
164
	SELECT *
165
	FROM OPENXML(@hDoc,'/Root/PaymentDetail',2)
166
	WITH 
167
	(
168
		PAY_ID	VARCHAR(15),
169
		PAY_PHASE	NVARCHAR(1000),
170
		EXPECTED_DT	VARCHAR(20),
171
		[PERCENT]	decimal(18,2),
172
		[AMOUNT]	decimal(18),
173
		PAY_STATUS VARCHAR(1),
174
		PAY_AMOUNT DECIMAL(18),
175
		PAY_DT VARCHAR(20),
176
		NOTES	nvarchar(1000)
177
	)
178
	OPEN PaymentDetail
179

    
180
	Exec sp_xml_preparedocument @hdoc Output,@P_CON_TRACK
181
	DECLARE ConTrack CURSOR FOR
182
	SELECT *
183
	FROM OPENXML(@hDoc,'/Root/ConTrack',2)
184
	WITH 
185
	(
186
		CONS_TRACK_ID	VARCHAR(15),
187
		FIX_DESCRIPTION	varchar(200),
188
		EXPECTED_DT	VARCHAR(20),
189
		FINISH_DT	VARCHAR(20),
190
		[STATUS]	VARCHAR(1),
191
		NOTES	nvarchar(1000)
192
	)
193
	OPEN ConTrack
194

    
195
	PRINT 'PASS KHOI TAO'
196
BEGIN TRANSACTION
197
		IF(@p_CONTRACT_NAME ='' OR @p_CONTRACT_NAME IS  NULL)
198
		BEGIN
199
			ROLLBACK TRANSACTION
200
				SELECT '-1' Result, @p_CONTRACT_ID AS PO_ID, N'Tên hợp đồng không được để trống' AS ErrorDesc 
201
				RETURN '-1'
202
		END
203
		--insert master
204
		IF @p_DELIVERY_DT = ''  
205
			SET @p_DELIVERY_DT = NULL 
206
		IF @p_EXP_DT1 = ''
207
			SET @p_EXP_DT1 = NULL
208
		IF @p_EXP_DT2 = ''
209
			SET @p_EXP_DT2 = NULL
210
		IF @p_SIGN_DT = ''
211
			SET @p_SIGN_DT = NULL
212
		IF @p_CREATE_DT = ''
213
			SET @p_CREATE_DT = NULL
214
		IF @p_APPROVE_DT = ''
215
			SET @p_APPROVE_DT = NULL
216
		IF @P_START_DT = ''
217
			SET @P_START_DT = NULL
218
		IF @P_END_DT = ''
219
			SET @P_END_DT = NULL
220
		DECLARE @EXP_DT_OLD DATEtime, @TOTAL_AMT_OLD DECIMAL(18,0), @FROM_EXP_DATE_OLD DATEtime
221
		SET @FROM_EXP_DATE_OLD = (SELECT START_DT FROM TR_CONTRACT WHERE CONTRACT_ID =@p_CONTRACT_ID)
222
		SET @EXP_DT_OLD = (SELECT END_DT FROM TR_CONTRACT WHERE CONTRACT_ID =@p_CONTRACT_ID)
223
		SET @TOTAL_AMT_OLD = (SELECT TOTAL_AMT FROM TR_CONTRACT WHERE CONTRACT_ID =@p_CONTRACT_ID)
224
		
225
		IF(EXISTS (SELECT * FROM TR_CONTRACT WHERE CONTRACT_ID = @p_CONTRACT_ID AND AUTH_STATUS = 'A'))
226
		BEGIN
227
			SET @p_CHECKER_ID = NULL
228
			SET @p_APPROVE_DT = NULL
229
			SET @p_SEND_APPR_DT = NULL
230
		END
231
		
232
		UPDATE TR_CONTRACT SET [START_DT] = (CASE WHEN @P_START_DT IS NOT NULL AND @P_START_DT <> '' then CONVERT(DATETIME,@P_START_DT,103) ELSE NULL END), 
233
		[END_DT] = (CASE WHEN @P_END_DT IS NOT NULL AND @P_END_DT <> '' THEN CONVERT(DATETIME,@P_END_DT,103) ELSE NULL END), [CONTRACT_CODE] = @p_CONTRACT_CODE,
234
		[CONTRACT_NAME] = @p_CONTRACT_NAME, [CONTRACT_TYPE] = @p_CONTRACT_TYPE ,
235
		[BID_ID] = @p_BID_ID,[SUP_ID] = @p_SUP_ID,[TOTAL_AMT] = @p_TOTAL_AMT,
236
		[DELIVERY_DT] = (CASE WHEN @p_DELIVERY_DT IS NOT NULL AND @p_DELIVERY_DT <> '' then CONVERT(DATETIME, @p_DELIVERY_DT, 103) ELSE NULL END),
237
		[FORM1] = @p_FORM1,[VOUCHER_ID1] = @p_VOUCHER_ID1,[BANK1] = @p_BANK1,
238
		[AMOUNT1] = @p_AMOUNT1,[EXP_DT1] = (CASE WHEN @p_EXP_DT1 IS NOT NULL AND @p_EXP_DT1 <> '' then CONVERT(DATETIME, @p_EXP_DT1, 103) ELSE NULL END),
239
		[RATE1] = @p_RATE1,[FORM2] = @p_FORM2,[VOUCHER_ID2] = @p_VOUCHER_ID2,
240
		[BANK2] = @p_BANK2,[AMOUNT2] = @p_AMOUNT2,[EXP_DT2] = (CASE WHEN @p_EXP_DT2 IS NOT NULL AND @p_EXP_DT2 <> '' then CONVERT(DATETIME, @p_EXP_DT2, 103) ELSE NULL END),
241
		[RATE2] = @p_RATE2,[REQ_DOC_ID] = @p_REQ_DOC_ID,[REQ_DOC_CONTENT] = @p_REQ_DOC_CONTENT,
242
		[APPROVE_VALUE] = @p_APPROVE_VALUE,
243
		[SIGN_DT] =  (CASE WHEN @p_SIGN_DT IS NOT NULL AND @p_SIGN_DT <> '' then CONVERT(DATETIME, @p_SIGN_DT, 103) ELSE NULL END),
244
		[CONSTRUCT_PROGRESS] = @p_CONSTRUCT_PROGRESS,[NOTES] = @p_NOTES,[RECORD_STATUS] = '1',
245
		[MAKER_ID] = @p_MAKER_ID,[CREATE_DT] = CONVERT(DATETIME, @p_CREATE_DT, 103),[AUTH_STATUS] = 'E',
246
		[CHECKER_ID] = @p_CHECKER_ID,[APPROVE_DT] = (CASE WHEN @p_APPROVE_DT IS NOT NULL AND @p_APPROVE_DT <> '' then CONVERT(DATETIME, @p_APPROVE_DT, 103) ELSE NULL END),
247
		[CONT_TYPE]=@p_CONT_TYPE, CUST_ID = @p_CUST_ID,
248
		[IS_CLOSED] = @p_IS_CLOSED,
249
		BRANCH_ID=@p_BRANCH_ID,EXP_CONTRACT=@p_EXP_CONTRACT,DEPOSIT_AMT =@p_DEPOSIT_AMT,TYPE_PERIOD =@p_TYPE_PERIOD, DEPOSIT_NOTE = @p_DEPOSIT_NOTE,
250
		IS_SEND_APPR = @p_IS_SEND_APPR,
251
		SEND_APPR_DT = CONVERT(DATE, @p_SEND_APPR_DT, 103),
252
		[ADDRESS] = @p_ADDR
253
		
254
		WHERE  CONTRACT_ID= @p_CONTRACT_ID
255
		-- INSERT VAO LOG
256
		INSERT INTO dbo.PL_PROCESS
257
		(
258
						REQ_ID,
259
						PROCESS_ID,
260
						CHECKER_ID,
261
						APPROVE_DT,
262
						PROCESS_DESC,NOTES
263
		)
264
		VALUES
265
		(   @p_CONTRACT_ID,        -- REQ_ID - varchar(15)
266
						'UPDATE',        -- PROCESS_ID - varchar(10)
267
						@p_MAKER_ID,        -- CHECKER_ID - varchar(15)
268
						GETDATE(), -- APPROVE_DT - datetime
269
					   N'User: '+ @p_MAKER_ID +N' thực hiện chỉnh sửa hợp đồng. Thông tin chỉnh sửa bao gồm: '+ CHAR(10) 
270
					    + N'Thông tin ngày hiệu lực hợp đồng. Điều chỉnh từ ngày : ' +  ISNULL((SELECT FORMAT (@FROM_EXP_DATE_OLD, 'dd/MM/yyyy ')),N'vô thời hạn ') + N' thành ngày : '+ ISNULL(@P_START_DT,N'vô thời hạn')
271
					  +CHAR(10)+
272
					  + N'Thông tin ngày hết hiệu lực hợp đồng. Điều chỉnh từ ngày : ' +  ISNULL((SELECT FORMAT (@EXP_DT_OLD, 'dd/MM/yyyy ')),N'vô thời hạn ') + N' thành ngày : '+ ISNULL(@P_END_DT,N'vô thời hạn')
273
					  +CHAR(10)+
274
					  N'Tổng giá trị hợp đồng điều chỉnh từ: '+ ISNULL(FORMAT(@TOTAL_AMT_OLD,'#,###'),'0') + ' VND' + N' thành: '+ ISNULL(FORMAT(@p_TOTAL_AMT,'#,###'),'0') +' VND'
275
					  ,N'Chỉnh sửa thông tin hợp đồng'
276
		)
277
		IF @@Error <> 0 GOTO ABORT
278
		PRINT 'UPDATE MASTER SUCCESS'
279

    
280
		--insert asset detail tương đương như NỘI DUNG trong bảng contract detail
281
		Declare
282
		@CONS_TRACK_ID VARCHAR(15),
283
		@FIX_DESCRIPTION VARCHAR(200),
284
		@FINISH_DT VARCHAR(20),
285
		@STATUS  VARCHAR(1),
286
		@CD_ID VARCHAR(15),
287
		@PAY_ID VARCHAR(15),
288
		@GOODS_ID	varchar(15),
289
		@UNIT_ID	varchar(15),
290
		@QUANTITY	decimal(18),
291
		@PRICE	decimal(18),
292
		@NOTES	nvarchar(1000),
293
		@PAY_PHASE	NVARCHAR(1000),
294
		@EXPECTED_DT	VARCHAR(20),
295
		@PERCENT	decimal(18),
296
		@AMOUNT	decimal(18),
297
		@PAY_STATUS VARCHAR(1),
298
		@PAY_AMOUNT DECIMAL(18),
299
		@PAY_DT VARCHAR(20),
300
		@GD_NAME_REAL NVARCHAR(500),
301
		@RECURRING VARCHAR(5),
302
		@UNIT_NAME_REAL NVARCHAR(100),
303
		-------------------BAODNQ 23/2/2022: Thêm cột vào bảng TR_CONTRACT_DT-------------
304
		@RENT_PRICE DECIMAL(18,0),
305
		@BUILDING_ID VARCHAR(15)
306
		
307
		DELETE FROM TR_CONTRACT_DT WHERE CONTRACT_ID = @P_CONTRACT_ID
308
		FETCH NEXT FROM AssetDetail INTO @CD_ID,@GOODS_ID,@UNIT_ID,@QUANTITY,@PRICE,@NOTES,@GD_NAME_REAL,@RECURRING,@UNIT_NAME_REAL, @RENT_PRICE, @BUILDING_ID
309
		WHILE @@FETCH_STATUS = 0	
310
		BEGIN
311
			--IF(LEN(@CD_ID) = 0)
312
			--BEGIN
313
			--	EXEC SYS_CodeMasters_Gen 'TR_CONTRACT_DT', @CD_ID out
314
			--	IF @CD_ID='' OR @CD_ID IS NULL GOTO ABORT
315
			--END
316

    
317
			EXEC SYS_CodeMasters_Gen 'TR_CONTRACT_DT', @CD_ID out
318
			IF @CD_ID='' OR @CD_ID IS NULL GOTO ABORT
319
			--EXEC TR_CONTRACT_DT_Ins @P_CONTRACT_ID,@GOODS_ID,@UNIT_ID,@QUANTITY,@PRICE,@NOTES,@p_RECORD_STATUS,
320
			--@p_MAKER_ID,@p_CREATE_DT,@p_AUTH_STATUS,@p_CHECKER_ID,@p_APPROVE_DT
321
			--ELSE
322
			INSERT INTO TR_CONTRACT_DT([CD_ID],[CONTRACT_ID],[GOODS_ID],[UNIT_ID],[QUANTITY],[PRICE],[NOTES],
323
			[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],[GD_NAME_REAL],RECURRING,UNIT_NAME_REAL, RENT_PRICE,BUILDING_ID)
324
			VALUES(@CD_ID ,@P_CONTRACT_ID,
325
			@GOODS_ID ,
326
			@UNIT_ID ,
327
			@QUANTITY ,
328
			@PRICE ,
329
			@NOTES ,@p_RECORD_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_AUTH_STATUS ,@p_CHECKER_ID ,(CASE WHEN @p_APPROVE_DT IS NOT NULL AND @p_APPROVE_DT <> '' then CONVERT(DATETIME, @p_APPROVE_DT, 103) ELSE NULL END),@GD_NAME_REAL,@RECURRING,@UNIT_NAME_REAL, @RENT_PRICE, @BUILDING_ID)
330
		
331
			FETCH NEXT FROM AssetDetail INTO @CD_ID,@GOODS_ID,@UNIT_ID,@QUANTITY,@PRICE,@NOTES,@GD_NAME_REAL,@RECURRING,@UNIT_NAME_REAL, @RENT_PRICE, @BUILDING_ID
332
		END
333

    
334
		DELETE FROM CON_TRACK WHERE CONTRACT_ID = @P_CONTRACT_ID
335
		FETCH NEXT FROM ConTrack INTO @CONS_TRACK_ID,@FIX_DESCRIPTION,@EXPECTED_DT,@FINISH_DT,@STATUS,@NOTES
336
		WHILE @@FETCH_STATUS = 0	
337
		BEGIN
338
			--IF(LEN(@CONS_TRACK_ID) = 0)
339
			--BEGIN
340
			--	EXEC SYS_CodeMasters_Gen 'CONS_TRACK_ID', @CONS_TRACK_ID out
341
			--	IF @CONS_TRACK_ID ='' OR @CONS_TRACK_ID IS NULL GOTO ABORT
342
			--END
343
			EXEC SYS_CodeMasters_Gen 'CONS_TRACK_ID', @CONS_TRACK_ID out
344
			IF @CONS_TRACK_ID ='' OR @CONS_TRACK_ID IS NULL GOTO ABORT
345
			INSERT INTO CON_TRACK([CONS_TRACK_ID],[CONTRACT_ID],[FIX_DESCRIPTION],[EXPECTED_DT],[STATUS],[FINISH_DT],[NOTES],[CREATED_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],[RECORD_STATUS])
346
			VALUES(@CONS_TRACK_ID ,@p_CONTRACT_ID ,@FIX_DESCRIPTION ,CONVERT(DATETIME, @EXPECTED_DT, 103) ,
347
			@STATUS ,CONVERT(DATETIME, @FINISH_DT, 103) ,@NOTES ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_AUTH_STATUS ,@p_CHECKER_ID ,(CASE WHEN @p_APPROVE_DT IS NOT NULL AND @p_APPROVE_DT <> '' then CONVERT(DATETIME, @p_APPROVE_DT, 103) ELSE NULL END) ,@p_RECORD_STATUS )
348
		
349
			FETCH NEXT FROM ConTrack INTO @CONS_TRACK_ID,@FIX_DESCRIPTION,@EXPECTED_DT,@FINISH_DT,@STATUS,@NOTES
350
		END
351
	--insert payment detail
352

    
353
	DELETE FROM TR_CONTRACT_PAYMENT WHERE CONTRACT_ID = @P_CONTRACT_ID
354
	FETCH NEXT FROM PaymentDetail INTO @PAY_ID,@PAY_PHASE,@EXPECTED_DT,@PERCENT,@AMOUNT,@PAY_STATUS,@PAY_AMOUNT,@PAY_DT,@NOTES
355

    
356
	WHILE @@FETCH_STATUS = 0
357
	BEGIN
358
		IF(LEN(ISNULL(@PAY_ID,'')) = 0 OR @PAY_ID IS NULL OR @PAY_ID = '')
359
		BEGIN
360
			EXEC SYS_CodeMasters_Gen 'TR_CONTRACT_PAYMENT', @PAY_ID out
361
			IF @PAY_ID='' OR @PAY_ID IS NULL GOTO ABORT
362
		END
363
		--IF(EXISTS(SELECT * FROM TR_CONTRACT_PAYMENT WHERE PAY_ID =@PAY_ID))
364
		--BEGIN
365
		--	UPDATE TR_CONTRACT_PAYMENT SET PAY_ID ='X' WHERE PAY_ID =@PAY_ID
366
		--END
367
		--EXEC SYS_CodeMasters_Gen 'TR_CONTRACT_PAYMENT', @PAY_ID out
368
		IF @PAY_ID='' OR @PAY_ID IS NULL GOTO ABORT
369
		--EXEC TR_CONTRACT_PAYMENT_Ins @p_CONTRACT_ID,@PAY_PHASE,@EXPECTED_DT,
370
		--@PERCENT,@AMOUNT,@NOTES,@p_RECORD_STATUS,@p_MAKER_ID,@p_CREATE_DT,@p_AUTH_STATUS,@p_CHECKER_ID,@p_APPROVE_DT
371
		--ELSE
372
		--INSERT INTO TR_CONTRACT_PAYMENT([PAY_AMOUNT],PAY_DT, [PAY_ID],[CONTRACT_ID],[PAY_PHASE],[EXPECTED_DT],[PERCENT],[AMOUNT],[PAY_STATUS],
373
		--[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT])
374
		--VALUES(@PAY_AMOUNT,(CASE WHEN @PAY_DT IS NOT NULL AND @PAY_DT <> '' then CONVERT(DATETIME, @PAY_DT, 103) ELSE NULL END),@PAY_ID ,@p_CONTRACT_ID ,@PAY_PHASE ,CONVERT(DATETIME, @EXPECTED_DT, 103) ,
375
		--@PERCENT ,@AMOUNT,@PAY_STATUS,@NOTES ,@p_RECORD_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103),
376
		--@p_AUTH_STATUS ,@p_CHECKER_ID ,(CASE WHEN @p_APPROVE_DT IS NOT NULL AND @p_APPROVE_DT <> '' then CONVERT(DATETIME, @p_APPROVE_DT, 103) ELSE NULL END))
377

    
378
		-------------BAODNQ 15/9/2022: Fix lại theo BVB_v2_PROD-----------
379
		-------------Nếu @PAY_ID ko tồn tại trong TR_CONTRACT_PAYMENT, INSERT mới---------
380
		IF(NOT EXISTS(SELECT * FROM TR_CONTRACT_PAYMENT WHERE PAY_ID = @PAY_ID))
381
		BEGIN
382
			INSERT INTO TR_CONTRACT_PAYMENT
383
				([PAY_AMOUNT],PAY_DT, [PAY_ID],[CONTRACT_ID],[PAY_PHASE],[EXPECTED_DT],[PERCENT],[AMOUNT],[PAY_STATUS],
384
				[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT])
385
			VALUES(@PAY_AMOUNT,(CASE WHEN @PAY_DT IS NOT NULL AND @PAY_DT <> '' then CONVERT(DATETIME, @PAY_DT, 103) ELSE NULL END),@PAY_ID ,
386
					@p_CONTRACT_ID ,@PAY_PHASE ,CONVERT(DATETIME, @EXPECTED_DT, 103) , @PERCENT ,@AMOUNT,@PAY_STATUS,@NOTES ,@p_RECORD_STATUS ,
387
					@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103), @p_AUTH_STATUS ,@p_CHECKER_ID ,
388
					(CASE WHEN @p_APPROVE_DT IS NOT NULL AND @p_APPROVE_DT <> '' then CONVERT(DATETIME, @p_APPROVE_DT, 103) ELSE NULL END))
389
		END
390
		ELSE
391
		-------------Nếu @PAY_ID đã tồn tại trong TR_CONTRACT_PAYMENT, UPDATE---------
392
		BEGIN
393
			UPDATE TR_CONTRACT_PAYMENT SET
394
				PAY_AMOUNT = @PAY_AMOUNT,
395
				PAY_DT =(CASE WHEN @PAY_DT IS NOT NULL AND @PAY_DT <> '' then CONVERT(DATETIME, @PAY_DT, 103) ELSE NULL END),
396
				CONTRACT_ID = @p_CONTRACT_ID,
397
				PAY_PHASE = @PAY_PHASE,
398
				EXPECTED_DT = CONVERT(DATETIME, @EXPECTED_DT, 103),
399
				[PERCENT] = @PERCENT,
400
				[AMOUNT] = @AMOUNT,
401
				PAY_STATUS = @PAY_STATUS,
402
				NOTES = @NOTES,
403
				RECORD_STATUS = @p_RECORD_STATUS,
404
				MAKER_ID = @p_MAKER_ID,
405
				CREATE_DT = CONVERT(DATETIME, @p_CREATE_DT, 103),
406
				AUTH_STATUS = @p_AUTH_STATUS,
407
				CHECKER_ID = @p_CHECKER_ID,
408
				APPROVE_DT = (CASE WHEN @p_APPROVE_DT IS NOT NULL AND @p_APPROVE_DT <> '' then CONVERT(DATETIME, @p_APPROVE_DT, 103) ELSE NULL END)
409
			WHERE PAY_ID = @PAY_ID
410
		END
411

    
412
	FETCH NEXT FROM PaymentDetail INTO @PAY_ID,@PAY_PHASE,@EXPECTED_DT,@PERCENT,@AMOUNT,@PAY_STATUS,@PAY_AMOUNT,@PAY_DT,@NOTES
413
	END
414
		
415
	CLOSE ConTrack
416
	DEALLOCATE ConTrack
417
	CLOSE AssetDetail
418
	DEALLOCATE AssetDetail
419
	CLOSE PaymentDetail
420
	DEALLOCATE PaymentDetail
421
	IF(@p_RECORD_STATUS ='U')
422
	BEGIN
423
		UPDATE TR_CONTRACT SET AUTH_STATUS ='U' WHERE CONTRACT_ID =@p_CONTRACT_ID
424
	END
425
	--Insert into TABLE TR_REQUEST_DOC_FILE
426

    
427
		DECLARE @tableTrREQFile TABLE(
428
			TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
429
			REQ_ID varchar(20),
430
			NOTES  nvarchar(200)
431
		)
432

    
433

    
434
		Declare @fdoc INT
435
		Exec sp_xml_preparedocument @fdoc Output,@p_ListTrREQFile
436

    
437
		INSERT INTO @tableTrREQFile
438
		SELECT *
439
		FROM OPENXML(@fDoc,'/Root/ListTrREQ',2)
440
		WITH 
441
		(
442
			TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
443
			REQ_ID varchar(20),
444
			NOTES  nvarchar(200)
445
		)
446

    
447
		--delete TR_REQUEST_DOC_FILE where TR_REQUEST_DOC_FILE_ID not in (select TR_REQUEST_DOC_FILE_ID from @tableTrREQFile) and REQ_ID = @p_CONTRACT_ID
448
		------------BAODNQ 11/11/2022 : DELETE TR_REQUEST_DOC_FILE----------
449
		DELETE FROM TR_REQUEST_DOC_FILE WHERE REQ_ID = @p_CONTRACT_ID
450
		DECLARE ListTrREQFile  CURSOR FOR
451
		SELECT * FROM @tableTrREQFile
452
		OPEN ListTrREQFile
453

    
454
		Declare 
455
		@TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
456
		@IS_VIEW	bit,
457
		@REQ_ID varchar(20),
458
		@_NOTES nvarchar(200)
459

    
460
		FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@REQ_ID,@_NOTES
461
		WHILE @@FETCH_STATUS = 0	
462
		BEGIN
463
			DECLARE @l_REQFile_ID VARCHAR(15)
464
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_DOC_FILE', @l_REQFile_ID out
465
			--select @l_REQFile_ID
466
			--select * from TR_REQUEST_DOC_FILE where [TR_REQUEST_DOC_FILE_ID]= 'TRC000000529764'
467
			IF @l_REQFile_ID='' OR @l_REQFile_ID IS NULL GOTO ABORT
468
			INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_CONTRACT')
469
			IF(select count(*) from TR_REQUEST_DOC_FILE where TR_REQUEST_DOC_FILE_ID = @TR_REQUEST_DOC_FILE_ID ) > 0
470
			begin
471
				update TR_REQUEST_DOC_FILE set IS_VIEW=isnull(@IS_VIEW,0),REQ_ID = @p_CONTRACT_ID,NOTES=@_NOTES where TR_REQUEST_DOC_FILE_ID = @TR_REQUEST_DOC_FILE_ID 
472
			end
473
			else
474
			begin
475
				INSERT INTO dbo.TR_REQUEST_DOC_FILE
476
				(
477
					 [TR_REQUEST_DOC_FILE_ID]
478
					,[REQ_ID]
479
					,[NOTES]
480
				)	
481
				VALUES
482
				(   
483
					@l_REQFile_ID
484
					,@p_CONTRACT_ID,
485
					@_NOTES
486
				)
487
			end
488
			
489
			FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@REQ_ID,@_NOTES
490
		END
491
		CLOSE ListTrREQFile
492
		DEALLOCATE ListTrREQFile
493
		IF @@Error <> 0 GOTO ABORT
494

    
495
		if(select count(*) from @TEMP) = 0
496
		begin
497
			INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_CONTRACT')
498
		end
499
COMMIT TRANSACTION
500
IF(@p_RECORD_STATUS ='U')
501
BEGIN
502
-- INSERT VAO LOG
503
	INSERT INTO dbo.PL_PROCESS
504
	(
505
						REQ_ID,
506
						PROCESS_ID,
507
						CHECKER_ID,
508
						APPROVE_DT,
509
						PROCESS_DESC,NOTES
510
					)
511
					VALUES
512
					(   @p_CONTRACT_ID,        -- REQ_ID - varchar(15)
513
						'SEND',        -- PROCESS_ID - varchar(10)
514
						@p_MAKER_ID,        -- CHECKER_ID - varchar(15)
515
						GETDATE(), -- APPROVE_DT - datetime
516
					   N'Nhân viên gửi phê duyệt phiếu thành công' ,N'Gửi phê duyệt')
517
	--IF(@p_CONT_TYPE ='DK')
518
	--BEGIN
519
	--	UPDATE TR_CONTRACT SET AUTH_STATUS ='A' WHERE CONTRACT_ID =@p_CONTRACT_ID
520
	--END
521
	SELECT '2' as Result, @P_CONTRACT_ID  CONTRACT_ID, N'Hợp đồng có ID: '+ @P_CONTRACT_ID +N' đã được gửi phê duyệt thành công. Vui lòng đợi cấp có thẩm quyền phê duyệt' ErrorDesc
522
	RETURN '2'
523
	--- 
524
	--IF(@p_CONT_TYPE ='DK' AND CONVERT(DATE, GETDATE(),103) <='2020-08-30')
525
	
526
	
527
END
528
ELSE
529
BEGIN
530
	SELECT '0' as Result, @P_CONTRACT_ID  CONTRACT_ID, N'Hợp đồng có ID: '+ @P_CONTRACT_ID +N' đã được cập nhật dữ liệu thành công. Bạn có thể bấm gửi phê duyệt' ErrorDesc,[REF_ID], [TYPE]  from @TEMP
531
	RETURN '0'
532
END
533
ABORT:
534
BEGIN
535
		
536
		CLOSE ConTrack
537
		DEALLOCATE ConTrack
538
		CLOSE AssetDetail
539
		DEALLOCATE AssetDetail
540
		CLOSE PaymentDetail
541
		DEALLOCATE PaymentDetail
542
		ROLLBACK TRANSACTION
543
		SELECT '-1' AS RESULT, ''  CONTRACT_ID,'' ErrorDesc
544
		RETURN '-1'
545
End
546

    
547

    
548
--SELECT * FROM TR_CONTRACT_DT
549

    
550
--SELECT * FROM TR_CONTRACT_PAYMENT
551

    
552
--SELECT * FROM TR_CONTRACT