Project

General

Profile

TR_CONTRACT_Upd.txt

Luc Tran Van, 11/03/2022 11:31 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
	IF(@p_CONTRACT_CODE IS NOT NULL AND @p_CONTRACT_CODE <> '')
79
	BEGIN
80
		IF(EXISTS (SELECT * FROM TR_CONTRACT WHERE CONTRACT_CODE = @p_CONTRACT_CODE AND CONTRACT_ID <> @p_CONTRACT_ID))
81
		BEGIN
82
			SELECT '-1' AS Result, '' CONTRACT_ID,
83
				N'Số hợp đồng đã tồn tại' ErrorDesc
84
			RETURN '-1'
85
		END
86
	END
87

    
88
	IF 	@sErrorCode <> ''
89
	BEGIN
90
		SELECT '-1' as Result, ''  CONTRACT_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @sErrorCode
91
		RETURN '-1'
92
	END
93
	
94
	DECLARE @REF_CODE VARCHAR(15) = NULL, @PDN_TT VARCHAR(15) = NULL
95
	SET @REF_CODE =
96
	(	SELECT TOP 1 B.REQ_PAY_CODE
97
		FROM TR_REQ_ADVANCE_DT A
98
		INNER JOIN TR_REQ_ADVANCE_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID
99
		WHERE A.REF_ID =@p_CONTRACT_ID AND (B.AUTH_STATUS_KT <>'A' OR B.AUTH_STATUS_KT IS NULL)
100
	)
101
	--- TIM KIEM XEM PO NAY CO DUOC PHEP THANH TOAN HAY KHONG
102
	SET @PDN_TT =
103
	(	SELECT TOP 1 B.REQ_PAY_CODE
104
		FROM TR_REQ_ADVANCE_DT A
105
		INNER JOIN TR_REQ_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID
106
		WHERE A.REF_ID =@p_CONTRACT_ID AND (B.AUTH_STATUS_KT <>'A' OR B.AUTH_STATUS_KT IS NULL)
107
	)
108
	IF(@p_IS_CLOSED ='Y' AND @REF_CODE IS NOT NULL)
109
	BEGIN
110
			--ROLLBACK TRANSACTION
111
			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 
112
			RETURN '-1'
113
	END
114
	IF(@p_IS_CLOSED ='Y' AND @PDN_TT IS NOT NULL)
115
	BEGIN
116
		--ROLLBACK TRANSACTION
117
			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 
118
			RETURN '-1'
119
	END
120
	Declare @hdoc INT
121
	Exec sp_xml_preparedocument @hdoc Output,@P_LISTASSET
122
	DECLARE AssetDetail CURSOR FOR
123
	SELECT *
124
	FROM OPENXML(@hDoc,'/Root/AssetDetail',2)
125
	WITH 
126
	(
127
		CD_ID VARCHAR(15),
128
		GOODS_ID	varchar(15),
129
		UNIT_ID	varchar(15),
130
		QUANTITY	decimal(18),
131
		PRICE	decimal(18),
132
		NOTES	nvarchar(1000),
133
		GD_NAME_REAL NVARCHAR(500),
134
		RECURRING VARCHAR(5),
135
		UNIT_NAME_REAL NVARCHAR(100),
136
		-------------------BAODNQ 23/2/2022: Thêm cột vào bảng TR_CONTRACT_DT-------------
137
		RENT_PRICE DECIMAL(18,0),
138
		BUILDING_ID VARCHAR(15)
139
	)
140
	OPEN AssetDetail
141

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

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

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

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

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

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

    
333
	DELETE FROM TR_CONTRACT_PAYMENT WHERE CONTRACT_ID = @P_CONTRACT_ID
334
	FETCH NEXT FROM PaymentDetail INTO @PAY_ID,@PAY_PHASE,@EXPECTED_DT,@PERCENT,@AMOUNT,@PAY_STATUS,@PAY_AMOUNT,@PAY_DT,@NOTES
335

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

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

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

    
407
		DECLARE @tableTrREQFile TABLE(
408
			TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
409
			REQ_ID varchar(20),
410
			NOTES  nvarchar(200)
411
		)
412

    
413

    
414
		Declare @fdoc INT
415
		Exec sp_xml_preparedocument @fdoc Output,@p_ListTrREQFile
416

    
417
		INSERT INTO @tableTrREQFile
418
		SELECT *
419
		FROM OPENXML(@fDoc,'/Root/ListTrREQ',2)
420
		WITH 
421
		(
422
			TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
423
			REQ_ID varchar(20),
424
			NOTES  nvarchar(200)
425
		)
426

    
427
		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
428
		DECLARE ListTrREQFile  CURSOR FOR
429
		SELECT * FROM @tableTrREQFile
430
		OPEN ListTrREQFile
431

    
432
		Declare 
433
		@TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
434
		@IS_VIEW	bit,
435
		@REQ_ID varchar(20),
436
		@_NOTES nvarchar(200)
437

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

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

    
525

    
526
--SELECT * FROM TR_CONTRACT_DT
527

    
528
--SELECT * FROM TR_CONTRACT_PAYMENT
529

    
530
--SELECT * FROM TR_CONTRACT