Project

General

Profile

TR_CONTRACT_Upd.txt

Luc Tran Van, 11/08/2022 11:24 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
	Declare @hdoc INT
126
	Exec sp_xml_preparedocument @hdoc Output,@P_LISTASSET
127
	DECLARE AssetDetail CURSOR FOR
128
	SELECT *
129
	FROM OPENXML(@hDoc,'/Root/AssetDetail',2)
130
	WITH 
131
	(
132
		CD_ID VARCHAR(15),
133
		GOODS_ID	varchar(15),
134
		UNIT_ID	varchar(15),
135
		QUANTITY	decimal(18),
136
		PRICE	decimal(18),
137
		NOTES	nvarchar(1000),
138
		GD_NAME_REAL NVARCHAR(500),
139
		RECURRING VARCHAR(5),
140
		UNIT_NAME_REAL NVARCHAR(100),
141
		-------------------BAODNQ 23/2/2022: Thêm cột vào bảng TR_CONTRACT_DT-------------
142
		RENT_PRICE DECIMAL(18,0),
143
		BUILDING_ID VARCHAR(15)
144
	)
145
	OPEN AssetDetail
146

    
147
	Exec sp_xml_preparedocument @hdoc Output,@P_LISTPAYMENT
148
	DECLARE PaymentDetail CURSOR FOR
149
	SELECT *
150
	FROM OPENXML(@hDoc,'/Root/PaymentDetail',2)
151
	WITH 
152
	(
153
		PAY_ID	VARCHAR(15),
154
		PAY_PHASE	NVARCHAR(1000),
155
		EXPECTED_DT	VARCHAR(20),
156
		[PERCENT]	decimal(18,2),
157
		[AMOUNT]	decimal(18),
158
		PAY_STATUS VARCHAR(1),
159
		PAY_AMOUNT DECIMAL(18),
160
		PAY_DT VARCHAR(20),
161
		NOTES	nvarchar(1000)
162
	)
163
	OPEN PaymentDetail
164

    
165
	Exec sp_xml_preparedocument @hdoc Output,@P_CON_TRACK
166
	DECLARE ConTrack CURSOR FOR
167
	SELECT *
168
	FROM OPENXML(@hDoc,'/Root/ConTrack',2)
169
	WITH 
170
	(
171
		CONS_TRACK_ID	VARCHAR(15),
172
		FIX_DESCRIPTION	varchar(200),
173
		EXPECTED_DT	VARCHAR(20),
174
		FINISH_DT	VARCHAR(20),
175
		[STATUS]	VARCHAR(1),
176
		NOTES	nvarchar(1000)
177
	)
178
	OPEN ConTrack
179

    
180
	PRINT 'PASS KHOI TAO'
181
BEGIN TRANSACTION
182
		IF(@p_CONTRACT_NAME ='' OR @p_CONTRACT_NAME IS  NULL)
183
		BEGIN
184
			ROLLBACK TRANSACTION
185
				SELECT '-1' Result, @p_CONTRACT_ID AS PO_ID, N'Tên hợp đồng không được để trống' AS ErrorDesc 
186
				RETURN '-1'
187
		END
188
		--insert master
189
		IF @p_DELIVERY_DT = ''  
190
			SET @p_DELIVERY_DT = NULL 
191
		IF @p_EXP_DT1 = ''
192
			SET @p_EXP_DT1 = NULL
193
		IF @p_EXP_DT2 = ''
194
			SET @p_EXP_DT2 = NULL
195
		IF @p_SIGN_DT = ''
196
			SET @p_SIGN_DT = NULL
197
		IF @p_CREATE_DT = ''
198
			SET @p_CREATE_DT = NULL
199
		IF @p_APPROVE_DT = ''
200
			SET @p_APPROVE_DT = NULL
201
		IF @P_START_DT = ''
202
			SET @P_START_DT = NULL
203
		IF @P_END_DT = ''
204
			SET @P_END_DT = NULL
205
		DECLARE @EXP_DT_OLD DATEtime, @TOTAL_AMT_OLD DECIMAL(18,0), @FROM_EXP_DATE_OLD DATEtime
206
		SET @FROM_EXP_DATE_OLD = (SELECT START_DT FROM TR_CONTRACT WHERE CONTRACT_ID =@p_CONTRACT_ID)
207
		SET @EXP_DT_OLD = (SELECT END_DT FROM TR_CONTRACT WHERE CONTRACT_ID =@p_CONTRACT_ID)
208
		SET @TOTAL_AMT_OLD = (SELECT TOTAL_AMT FROM TR_CONTRACT WHERE CONTRACT_ID =@p_CONTRACT_ID)
209
		
210
		IF(EXISTS (SELECT * FROM TR_CONTRACT WHERE CONTRACT_ID = @p_CONTRACT_ID AND AUTH_STATUS = 'A'))
211
		BEGIN
212
			SET @p_CHECKER_ID = NULL
213
			SET @p_APPROVE_DT = NULL
214
			SET @p_SEND_APPR_DT = NULL
215
		END
216
		
217
		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), 
218
		[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,
219
		[CONTRACT_NAME] = @p_CONTRACT_NAME, [CONTRACT_TYPE] = @p_CONTRACT_TYPE ,
220
		[BID_ID] = @p_BID_ID,[SUP_ID] = @p_SUP_ID,[TOTAL_AMT] = @p_TOTAL_AMT,
221
		[DELIVERY_DT] = (CASE WHEN @p_DELIVERY_DT IS NOT NULL AND @p_DELIVERY_DT <> '' then CONVERT(DATETIME, @p_DELIVERY_DT, 103) ELSE NULL END),
222
		[FORM1] = @p_FORM1,[VOUCHER_ID1] = @p_VOUCHER_ID1,[BANK1] = @p_BANK1,
223
		[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),
224
		[RATE1] = @p_RATE1,[FORM2] = @p_FORM2,[VOUCHER_ID2] = @p_VOUCHER_ID2,
225
		[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),
226
		[RATE2] = @p_RATE2,[REQ_DOC_ID] = @p_REQ_DOC_ID,[REQ_DOC_CONTENT] = @p_REQ_DOC_CONTENT,
227
		[APPROVE_VALUE] = @p_APPROVE_VALUE,
228
		[SIGN_DT] =  (CASE WHEN @p_SIGN_DT IS NOT NULL AND @p_SIGN_DT <> '' then CONVERT(DATETIME, @p_SIGN_DT, 103) ELSE NULL END),
229
		[CONSTRUCT_PROGRESS] = @p_CONSTRUCT_PROGRESS,[NOTES] = @p_NOTES,[RECORD_STATUS] = '1',
230
		[MAKER_ID] = @p_MAKER_ID,[CREATE_DT] = CONVERT(DATETIME, @p_CREATE_DT, 103),[AUTH_STATUS] = 'E',
231
		[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),
232
		[CONT_TYPE]=@p_CONT_TYPE, CUST_ID = @p_CUST_ID,
233
		[IS_CLOSED] = @p_IS_CLOSED,
234
		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,
235
		IS_SEND_APPR = @p_IS_SEND_APPR,
236
		SEND_APPR_DT = CONVERT(DATE, @p_SEND_APPR_DT, 103),
237
		[ADDRESS] = @p_ADDR
238
		
239
		WHERE  CONTRACT_ID= @p_CONTRACT_ID
240
		-- INSERT VAO LOG
241
		INSERT INTO dbo.PL_PROCESS
242
		(
243
						REQ_ID,
244
						PROCESS_ID,
245
						CHECKER_ID,
246
						APPROVE_DT,
247
						PROCESS_DESC,NOTES
248
		)
249
		VALUES
250
		(   @p_CONTRACT_ID,        -- REQ_ID - varchar(15)
251
						'UPDATE',        -- PROCESS_ID - varchar(10)
252
						@p_MAKER_ID,        -- CHECKER_ID - varchar(15)
253
						GETDATE(), -- APPROVE_DT - datetime
254
					   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) 
255
					    + 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')
256
					  +CHAR(10)+
257
					  + 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')
258
					  +CHAR(10)+
259
					  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'
260
					  ,N'Chỉnh sửa thông tin hợp đồng'
261
		)
262
		IF @@Error <> 0 GOTO ABORT
263
		PRINT 'UPDATE MASTER SUCCESS'
264

    
265
		--insert asset detail tương đương như NỘI DUNG trong bảng contract detail
266
		Declare
267
		@CONS_TRACK_ID VARCHAR(15),
268
		@FIX_DESCRIPTION VARCHAR(200),
269
		@FINISH_DT VARCHAR(20),
270
		@STATUS  VARCHAR(1),
271
		@CD_ID VARCHAR(15),
272
		@PAY_ID VARCHAR(15),
273
		@GOODS_ID	varchar(15),
274
		@UNIT_ID	varchar(15),
275
		@QUANTITY	decimal(18),
276
		@PRICE	decimal(18),
277
		@NOTES	nvarchar(1000),
278
		@PAY_PHASE	NVARCHAR(1000),
279
		@EXPECTED_DT	VARCHAR(20),
280
		@PERCENT	decimal(18),
281
		@AMOUNT	decimal(18),
282
		@PAY_STATUS VARCHAR(1),
283
		@PAY_AMOUNT DECIMAL(18),
284
		@PAY_DT VARCHAR(20),
285
		@GD_NAME_REAL NVARCHAR(500),
286
		@RECURRING VARCHAR(5),
287
		@UNIT_NAME_REAL NVARCHAR(100),
288
		-------------------BAODNQ 23/2/2022: Thêm cột vào bảng TR_CONTRACT_DT-------------
289
		@RENT_PRICE DECIMAL(18,0),
290
		@BUILDING_ID VARCHAR(15)
291
		
292
		DELETE FROM TR_CONTRACT_DT WHERE CONTRACT_ID = @P_CONTRACT_ID
293
		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
294
		WHILE @@FETCH_STATUS = 0	
295
		BEGIN
296
			--IF(LEN(@CD_ID) = 0)
297
			--BEGIN
298
			--	EXEC SYS_CodeMasters_Gen 'TR_CONTRACT_DT', @CD_ID out
299
			--	IF @CD_ID='' OR @CD_ID IS NULL GOTO ABORT
300
			--END
301

    
302
			EXEC SYS_CodeMasters_Gen 'TR_CONTRACT_DT', @CD_ID out
303
			IF @CD_ID='' OR @CD_ID IS NULL GOTO ABORT
304
			--EXEC TR_CONTRACT_DT_Ins @P_CONTRACT_ID,@GOODS_ID,@UNIT_ID,@QUANTITY,@PRICE,@NOTES,@p_RECORD_STATUS,
305
			--@p_MAKER_ID,@p_CREATE_DT,@p_AUTH_STATUS,@p_CHECKER_ID,@p_APPROVE_DT
306
			--ELSE
307
			INSERT INTO TR_CONTRACT_DT([CD_ID],[CONTRACT_ID],[GOODS_ID],[UNIT_ID],[QUANTITY],[PRICE],[NOTES],
308
			[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],[GD_NAME_REAL],RECURRING,UNIT_NAME_REAL, RENT_PRICE,BUILDING_ID)
309
			VALUES(@CD_ID ,@P_CONTRACT_ID,
310
			@GOODS_ID ,
311
			@UNIT_ID ,
312
			@QUANTITY ,
313
			@PRICE ,
314
			@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)
315
		
316
			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
317
		END
318

    
319
		DELETE FROM CON_TRACK WHERE CONTRACT_ID = @P_CONTRACT_ID
320
		FETCH NEXT FROM ConTrack INTO @CONS_TRACK_ID,@FIX_DESCRIPTION,@EXPECTED_DT,@FINISH_DT,@STATUS,@NOTES
321
		WHILE @@FETCH_STATUS = 0	
322
		BEGIN
323
			--IF(LEN(@CONS_TRACK_ID) = 0)
324
			--BEGIN
325
			--	EXEC SYS_CodeMasters_Gen 'CONS_TRACK_ID', @CONS_TRACK_ID out
326
			--	IF @CONS_TRACK_ID ='' OR @CONS_TRACK_ID IS NULL GOTO ABORT
327
			--END
328
			EXEC SYS_CodeMasters_Gen 'CONS_TRACK_ID', @CONS_TRACK_ID out
329
			IF @CONS_TRACK_ID ='' OR @CONS_TRACK_ID IS NULL GOTO ABORT
330
			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])
331
			VALUES(@CONS_TRACK_ID ,@p_CONTRACT_ID ,@FIX_DESCRIPTION ,CONVERT(DATETIME, @EXPECTED_DT, 103) ,
332
			@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 )
333
		
334
			FETCH NEXT FROM ConTrack INTO @CONS_TRACK_ID,@FIX_DESCRIPTION,@EXPECTED_DT,@FINISH_DT,@STATUS,@NOTES
335
		END
336
	--insert payment detail
337

    
338
	DELETE FROM TR_CONTRACT_PAYMENT WHERE CONTRACT_ID = @P_CONTRACT_ID
339
	FETCH NEXT FROM PaymentDetail INTO @PAY_ID,@PAY_PHASE,@EXPECTED_DT,@PERCENT,@AMOUNT,@PAY_STATUS,@PAY_AMOUNT,@PAY_DT,@NOTES
340

    
341
	WHILE @@FETCH_STATUS = 0
342
	BEGIN
343
		IF(LEN(ISNULL(@PAY_ID,'')) = 0 OR @PAY_ID IS NULL OR @PAY_ID = '')
344
		BEGIN
345
			EXEC SYS_CodeMasters_Gen 'TR_CONTRACT_PAYMENT', @PAY_ID out
346
			IF @PAY_ID='' OR @PAY_ID IS NULL GOTO ABORT
347
		END
348
		--IF(EXISTS(SELECT * FROM TR_CONTRACT_PAYMENT WHERE PAY_ID =@PAY_ID))
349
		--BEGIN
350
		--	UPDATE TR_CONTRACT_PAYMENT SET PAY_ID ='X' WHERE PAY_ID =@PAY_ID
351
		--END
352
		--EXEC SYS_CodeMasters_Gen 'TR_CONTRACT_PAYMENT', @PAY_ID out
353
		IF @PAY_ID='' OR @PAY_ID IS NULL GOTO ABORT
354
		--EXEC TR_CONTRACT_PAYMENT_Ins @p_CONTRACT_ID,@PAY_PHASE,@EXPECTED_DT,
355
		--@PERCENT,@AMOUNT,@NOTES,@p_RECORD_STATUS,@p_MAKER_ID,@p_CREATE_DT,@p_AUTH_STATUS,@p_CHECKER_ID,@p_APPROVE_DT
356
		--ELSE
357
		--INSERT INTO TR_CONTRACT_PAYMENT([PAY_AMOUNT],PAY_DT, [PAY_ID],[CONTRACT_ID],[PAY_PHASE],[EXPECTED_DT],[PERCENT],[AMOUNT],[PAY_STATUS],
358
		--[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT])
359
		--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) ,
360
		--@PERCENT ,@AMOUNT,@PAY_STATUS,@NOTES ,@p_RECORD_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103),
361
		--@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))
362

    
363
		-------------BAODNQ 15/9/2022: Fix lại theo BVB_v2_PROD-----------
364
		-------------Nếu @PAY_ID ko tồn tại trong TR_CONTRACT_PAYMENT, INSERT mới---------
365
		IF(NOT EXISTS(SELECT * FROM TR_CONTRACT_PAYMENT WHERE PAY_ID = @PAY_ID))
366
		BEGIN
367
			INSERT INTO TR_CONTRACT_PAYMENT
368
				([PAY_AMOUNT],PAY_DT, [PAY_ID],[CONTRACT_ID],[PAY_PHASE],[EXPECTED_DT],[PERCENT],[AMOUNT],[PAY_STATUS],
369
				[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT])
370
			VALUES(@PAY_AMOUNT,(CASE WHEN @PAY_DT IS NOT NULL AND @PAY_DT <> '' then CONVERT(DATETIME, @PAY_DT, 103) ELSE NULL END),@PAY_ID ,
371
					@p_CONTRACT_ID ,@PAY_PHASE ,CONVERT(DATETIME, @EXPECTED_DT, 103) , @PERCENT ,@AMOUNT,@PAY_STATUS,@NOTES ,@p_RECORD_STATUS ,
372
					@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103), @p_AUTH_STATUS ,@p_CHECKER_ID ,
373
					(CASE WHEN @p_APPROVE_DT IS NOT NULL AND @p_APPROVE_DT <> '' then CONVERT(DATETIME, @p_APPROVE_DT, 103) ELSE NULL END))
374
		END
375
		ELSE
376
		-------------Nếu @PAY_ID đã tồn tại trong TR_CONTRACT_PAYMENT, UPDATE---------
377
		BEGIN
378
			UPDATE TR_CONTRACT_PAYMENT SET
379
				PAY_AMOUNT = @PAY_AMOUNT,
380
				PAY_DT =(CASE WHEN @PAY_DT IS NOT NULL AND @PAY_DT <> '' then CONVERT(DATETIME, @PAY_DT, 103) ELSE NULL END),
381
				CONTRACT_ID = @p_CONTRACT_ID,
382
				PAY_PHASE = @PAY_PHASE,
383
				EXPECTED_DT = CONVERT(DATETIME, @EXPECTED_DT, 103),
384
				[PERCENT] = @PERCENT,
385
				[AMOUNT] = @AMOUNT,
386
				PAY_STATUS = @PAY_STATUS,
387
				NOTES = @NOTES,
388
				RECORD_STATUS = @p_RECORD_STATUS,
389
				MAKER_ID = @p_MAKER_ID,
390
				CREATE_DT = CONVERT(DATETIME, @p_CREATE_DT, 103),
391
				AUTH_STATUS = @p_AUTH_STATUS,
392
				CHECKER_ID = @p_CHECKER_ID,
393
				APPROVE_DT = (CASE WHEN @p_APPROVE_DT IS NOT NULL AND @p_APPROVE_DT <> '' then CONVERT(DATETIME, @p_APPROVE_DT, 103) ELSE NULL END)
394
			WHERE PAY_ID = @PAY_ID
395
		END
396

    
397
	FETCH NEXT FROM PaymentDetail INTO @PAY_ID,@PAY_PHASE,@EXPECTED_DT,@PERCENT,@AMOUNT,@PAY_STATUS,@PAY_AMOUNT,@PAY_DT,@NOTES
398
	END
399
		
400
	CLOSE ConTrack
401
	DEALLOCATE ConTrack
402
	CLOSE AssetDetail
403
	DEALLOCATE AssetDetail
404
	CLOSE PaymentDetail
405
	DEALLOCATE PaymentDetail
406
	IF(@p_RECORD_STATUS ='U')
407
	BEGIN
408
		UPDATE TR_CONTRACT SET AUTH_STATUS ='U' WHERE CONTRACT_ID =@p_CONTRACT_ID
409
	END
410
	--Insert into TABLE TR_REQUEST_DOC_FILE
411

    
412
		DECLARE @tableTrREQFile TABLE(
413
			TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
414
			REQ_ID varchar(20),
415
			NOTES  nvarchar(200)
416
		)
417

    
418

    
419
		Declare @fdoc INT
420
		Exec sp_xml_preparedocument @fdoc Output,@p_ListTrREQFile
421

    
422
		INSERT INTO @tableTrREQFile
423
		SELECT *
424
		FROM OPENXML(@fDoc,'/Root/ListTrREQ',2)
425
		WITH 
426
		(
427
			TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
428
			REQ_ID varchar(20),
429
			NOTES  nvarchar(200)
430
		)
431

    
432
		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
433
		DECLARE ListTrREQFile  CURSOR FOR
434
		SELECT * FROM @tableTrREQFile
435
		OPEN ListTrREQFile
436

    
437
		Declare 
438
		@TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
439
		@IS_VIEW	bit,
440
		@REQ_ID varchar(20),
441
		@_NOTES nvarchar(200)
442

    
443
		FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@REQ_ID,@_NOTES
444
		WHILE @@FETCH_STATUS = 0	
445
		BEGIN
446
			DECLARE @l_REQFile_ID VARCHAR(15)
447
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_DOC_FILE', @l_REQFile_ID out
448
			--select @l_REQFile_ID
449
			--select * from TR_REQUEST_DOC_FILE where [TR_REQUEST_DOC_FILE_ID]= 'TRC000000529764'
450
			IF @l_REQFile_ID='' OR @l_REQFile_ID IS NULL GOTO ABORT
451
			INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_CONTRACT')
452
			IF(select count(*) from TR_REQUEST_DOC_FILE where TR_REQUEST_DOC_FILE_ID = @TR_REQUEST_DOC_FILE_ID ) > 0
453
			begin
454
				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 
455
			end
456
			else
457
			begin
458
				INSERT INTO dbo.TR_REQUEST_DOC_FILE
459
				(
460
					 [TR_REQUEST_DOC_FILE_ID]
461
					,[REQ_ID]
462
					,[NOTES]
463
				)	
464
				VALUES
465
				(   
466
					@l_REQFile_ID
467
					,@p_CONTRACT_ID,
468
					@_NOTES
469
				)
470
			end
471
			
472
			FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@REQ_ID,@_NOTES
473
		END
474
		CLOSE ListTrREQFile
475
		DEALLOCATE ListTrREQFile
476
		IF @@Error <> 0 GOTO ABORT
477

    
478
		if(select count(*) from @TEMP) = 0
479
		begin
480
			INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_CONTRACT')
481
		end
482
COMMIT TRANSACTION
483
IF(@p_RECORD_STATUS ='U')
484
BEGIN
485
-- INSERT VAO LOG
486
	INSERT INTO dbo.PL_PROCESS
487
	(
488
						REQ_ID,
489
						PROCESS_ID,
490
						CHECKER_ID,
491
						APPROVE_DT,
492
						PROCESS_DESC,NOTES
493
					)
494
					VALUES
495
					(   @p_CONTRACT_ID,        -- REQ_ID - varchar(15)
496
						'SEND',        -- PROCESS_ID - varchar(10)
497
						@p_MAKER_ID,        -- CHECKER_ID - varchar(15)
498
						GETDATE(), -- APPROVE_DT - datetime
499
					   N'Nhân viên gửi phê duyệt phiếu thành công' ,N'Gửi phê duyệt')
500
	--IF(@p_CONT_TYPE ='DK')
501
	--BEGIN
502
	--	UPDATE TR_CONTRACT SET AUTH_STATUS ='A' WHERE CONTRACT_ID =@p_CONTRACT_ID
503
	--END
504
	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
505
	RETURN '2'
506
	--- 
507
	--IF(@p_CONT_TYPE ='DK' AND CONVERT(DATE, GETDATE(),103) <='2020-08-30')
508
	
509
	
510
END
511
ELSE
512
BEGIN
513
	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
514
	RETURN '0'
515
END
516
ABORT:
517
BEGIN
518
		
519
		CLOSE ConTrack
520
		DEALLOCATE ConTrack
521
		CLOSE AssetDetail
522
		DEALLOCATE AssetDetail
523
		CLOSE PaymentDetail
524
		DEALLOCATE PaymentDetail
525
		ROLLBACK TRANSACTION
526
		SELECT '-1' AS RESULT, ''  CONTRACT_ID,'' ErrorDesc
527
		RETURN '-1'
528
End
529

    
530

    
531
--SELECT * FROM TR_CONTRACT_DT
532

    
533
--SELECT * FROM TR_CONTRACT_PAYMENT
534

    
535
--SELECT * FROM TR_CONTRACT