Project

General

Profile

1.0 TR CONTRACT UPD.txt

Luc Tran Van, 02/14/2023 03:14 PM

 
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
@p_SUP_CODE VARCHAR(20) = NULL
54
AS
55

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

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

    
94
	IF 	@sErrorCode <> ''
95
	BEGIN
96
		SELECT '-1' as Result, ''  CONTRACT_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @sErrorCode
97
		RETURN '-1'
98
	END
99
	
100
	DECLARE @REF_CODE VARCHAR(15) = NULL, @PDN_TT VARCHAR(15) = NULL
101
	SET @REF_CODE =
102
	(	SELECT TOP 1 B.REQ_PAY_CODE
103
		FROM TR_REQ_ADVANCE_DT A
104
		INNER JOIN TR_REQ_ADVANCE_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID
105
		WHERE A.REF_ID =@p_CONTRACT_ID AND (B.AUTH_STATUS_KT <>'A' OR B.AUTH_STATUS_KT IS NULL)
106
	)
107
	--- TIM KIEM XEM PO NAY CO DUOC PHEP THANH TOAN HAY KHONG
108
	SET @PDN_TT =
109
	(	SELECT TOP 1 B.REQ_PAY_CODE
110
		FROM TR_REQ_ADVANCE_DT A
111
		INNER JOIN TR_REQ_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID
112
		WHERE A.REF_ID =@p_CONTRACT_ID AND (B.AUTH_STATUS_KT <>'A' OR B.AUTH_STATUS_KT IS NULL)
113
	)
114
	IF(@p_IS_CLOSED ='Y' AND @REF_CODE 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 tạm ứng với số phiếu: '+@REF_CODE AS ErrorDesc 
118
			RETURN '-1'
119
	END
120
	IF(@p_IS_CLOSED ='Y' AND @PDN_TT IS NOT NULL)
121
	BEGIN
122
		--ROLLBACK TRANSACTION
123
			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 
124
			RETURN '-1'
125
	END
126

    
127
	----------------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------------------
128
	---------------NGƯỢC LẠI NẾU LÀ (MS, NT), BẮT BUỘC NHẬP LƯỚI DANH SÁCH HÀNG HÓA----------------
129
	DECLARE @p_TR_CONTRACT_DT_XML_COUNT INT
130
	SET @p_TR_CONTRACT_DT_XML_COUNT = (
131
		SELECT @p_LISTASSET.value('count(/Root/AssetDetail/GOODS_ID)', 'INT') AS 'COUNT'
132
	)
133
	PRINT @p_TR_CONTRACT_DT_XML_COUNT
134
	IF(@p_CONT_TYPE <> 'DK' AND @p_TR_CONTRACT_DT_XML_COUNT <= 0)
135
	BEGIN
136
		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 
137
		RETURN '-1'
138
	END
139
	-----------------ENDBAODNQ-------------------
140

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

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

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

    
196
	PRINT 'PASS KHOI TAO'
197
BEGIN TRANSACTION
198

    
199
		---------------BAODNQ 12/12/2022 : HOT_FIX TẠM THỜI-------------------
200
		--------------NẾU KO TRUYỀN SUP_ID THÌ TỪ SUP_CODE TÌM KIẾM RA SUP_ID---------
201
		IF((@p_SUP_ID IS NULL OR @p_SUP_ID = '') AND @p_SUP_CODE IS NOT NULL AND @p_SUP_CODE <> '')
202
		BEGIN
203
			SET @p_SUP_ID = (SELECT TOP 1 SUP_ID FROM CM_SUPPLIER WHERE SUP_CODE = @p_SUP_CODE)
204
		END
205
		--------------ENDBAODNQ 12/12/2022----------------------------
206

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

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

    
327
			EXEC SYS_CodeMasters_Gen 'TR_CONTRACT_DT', @CD_ID out
328
			IF @CD_ID='' OR @CD_ID IS NULL GOTO ABORT
329
			--EXEC TR_CONTRACT_DT_Ins @P_CONTRACT_ID,@GOODS_ID,@UNIT_ID,@QUANTITY,@PRICE,@NOTES,@p_RECORD_STATUS,
330
			--@p_MAKER_ID,@p_CREATE_DT,@p_AUTH_STATUS,@p_CHECKER_ID,@p_APPROVE_DT
331
			--ELSE
332
			INSERT INTO TR_CONTRACT_DT([CD_ID],[CONTRACT_ID],[GOODS_ID],[UNIT_ID],[QUANTITY],[PRICE],[NOTES],
333
			[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],[GD_NAME_REAL],RECURRING,UNIT_NAME_REAL, RENT_PRICE,BUILDING_ID)
334
			VALUES(@CD_ID ,@P_CONTRACT_ID,
335
			@GOODS_ID ,
336
			@UNIT_ID ,
337
			@QUANTITY ,
338
			@PRICE ,
339
			@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)
340
		
341
			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
342
		END
343

    
344
		DELETE FROM CON_TRACK WHERE CONTRACT_ID = @P_CONTRACT_ID
345
		FETCH NEXT FROM ConTrack INTO @CONS_TRACK_ID,@FIX_DESCRIPTION,@EXPECTED_DT,@FINISH_DT,@STATUS,@NOTES
346
		WHILE @@FETCH_STATUS = 0	
347
		BEGIN
348
			--IF(LEN(@CONS_TRACK_ID) = 0)
349
			--BEGIN
350
			--	EXEC SYS_CodeMasters_Gen 'CONS_TRACK_ID', @CONS_TRACK_ID out
351
			--	IF @CONS_TRACK_ID ='' OR @CONS_TRACK_ID IS NULL GOTO ABORT
352
			--END
353
			EXEC SYS_CodeMasters_Gen 'CONS_TRACK_ID', @CONS_TRACK_ID out
354
			IF @CONS_TRACK_ID ='' OR @CONS_TRACK_ID IS NULL GOTO ABORT
355
			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])
356
			VALUES(@CONS_TRACK_ID ,@p_CONTRACT_ID ,@FIX_DESCRIPTION ,CONVERT(DATETIME, @EXPECTED_DT, 103) ,
357
			@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 )
358
		
359
			FETCH NEXT FROM ConTrack INTO @CONS_TRACK_ID,@FIX_DESCRIPTION,@EXPECTED_DT,@FINISH_DT,@STATUS,@NOTES
360
		END
361
	--insert payment detail
362

    
363
	--UPDATE  TR_CONTRACT_PAYMENT SET PAY_ID = RIGHT WHERE CONTRACT_ID = @P_CONTRACT_ID
364
	FETCH NEXT FROM PaymentDetail INTO @PAY_ID,@PAY_PHASE,@EXPECTED_DT,@PERCENT,@AMOUNT,@PAY_STATUS,@PAY_AMOUNT,@PAY_DT,@NOTES
365

    
366
	WHILE @@FETCH_STATUS = 0
367
	BEGIN
368
		IF(LEN(ISNULL(@PAY_ID,'')) = 0 OR @PAY_ID IS NULL OR @PAY_ID = '')
369
		BEGIN
370
			EXEC SYS_CodeMasters_Gen 'TR_CONTRACT_PAYMENT', @PAY_ID out
371
			IF @PAY_ID='' OR @PAY_ID IS NULL GOTO ABORT
372
		END
373
		--IF(EXISTS(SELECT * FROM TR_CONTRACT_PAYMENT WHERE PAY_ID =@PAY_ID))
374
		--BEGIN
375
		--	UPDATE TR_CONTRACT_PAYMENT SET PAY_ID ='X' WHERE PAY_ID =@PAY_ID
376
		--END
377
		--EXEC SYS_CodeMasters_Gen 'TR_CONTRACT_PAYMENT', @PAY_ID out
378
		IF @PAY_ID='' OR @PAY_ID IS NULL GOTO ABORT
379
		--EXEC TR_CONTRACT_PAYMENT_Ins @p_CONTRACT_ID,@PAY_PHASE,@EXPECTED_DT,
380
		--@PERCENT,@AMOUNT,@NOTES,@p_RECORD_STATUS,@p_MAKER_ID,@p_CREATE_DT,@p_AUTH_STATUS,@p_CHECKER_ID,@p_APPROVE_DT
381
		--ELSE
382
		--INSERT INTO TR_CONTRACT_PAYMENT([PAY_AMOUNT],PAY_DT, [PAY_ID],[CONTRACT_ID],[PAY_PHASE],[EXPECTED_DT],[PERCENT],[AMOUNT],[PAY_STATUS],
383
		--[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT])
384
		--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) ,
385
		--@PERCENT ,@AMOUNT,@PAY_STATUS,@NOTES ,@p_RECORD_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103),
386
		--@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))
387

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

    
422
	FETCH NEXT FROM PaymentDetail INTO @PAY_ID,@PAY_PHASE,@EXPECTED_DT,@PERCENT,@AMOUNT,@PAY_STATUS,@PAY_AMOUNT,@PAY_DT,@NOTES
423
	END
424
		
425
	CLOSE ConTrack
426
	DEALLOCATE ConTrack
427
	CLOSE AssetDetail
428
	DEALLOCATE AssetDetail
429
	CLOSE PaymentDetail
430
	DEALLOCATE PaymentDetail
431
	IF(@p_RECORD_STATUS ='U')
432
	BEGIN
433
		UPDATE TR_CONTRACT SET AUTH_STATUS ='U' WHERE CONTRACT_ID =@p_CONTRACT_ID
434
	END
435
	--Insert into TABLE TR_REQUEST_DOC_FILE
436

    
437
		DECLARE @tableTrREQFile TABLE(
438
			TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
439
			REQ_ID varchar(20),
440
			NOTES  nvarchar(200)
441
		)
442

    
443

    
444
		Declare @fdoc INT
445
		Exec sp_xml_preparedocument @fdoc Output,@p_ListTrREQFile
446

    
447
		INSERT INTO @tableTrREQFile
448
		SELECT *
449
		FROM OPENXML(@fDoc,'/Root/ListTrREQ',2)
450
		WITH 
451
		(
452
			TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
453
			REQ_ID varchar(20),
454
			NOTES  nvarchar(200)
455
		)
456

    
457
		--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
458
		------------BAODNQ 11/11/2022 : DELETE TR_REQUEST_DOC_FILE----------
459
		DELETE FROM TR_REQUEST_DOC_FILE WHERE REQ_ID = @p_CONTRACT_ID
460
		DECLARE ListTrREQFile  CURSOR FOR
461
		SELECT * FROM @tableTrREQFile
462
		OPEN ListTrREQFile
463

    
464
		Declare 
465
		@TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
466
		@IS_VIEW	bit,
467
		@REQ_ID varchar(20),
468
		@_NOTES nvarchar(200)
469

    
470
		FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@REQ_ID,@_NOTES
471
		WHILE @@FETCH_STATUS = 0	
472
		BEGIN
473
			DECLARE @l_REQFile_ID VARCHAR(15)
474
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_DOC_FILE', @l_REQFile_ID out
475
			--select @l_REQFile_ID
476
			--select * from TR_REQUEST_DOC_FILE where [TR_REQUEST_DOC_FILE_ID]= 'TRC000000529764'
477
			IF @l_REQFile_ID='' OR @l_REQFile_ID IS NULL GOTO ABORT
478
			INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_CONTRACT')
479
			IF(select count(*) from TR_REQUEST_DOC_FILE where TR_REQUEST_DOC_FILE_ID = @TR_REQUEST_DOC_FILE_ID ) > 0
480
			begin
481
				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 
482
			end
483
			else
484
			begin
485
				INSERT INTO dbo.TR_REQUEST_DOC_FILE
486
				(
487
					 [TR_REQUEST_DOC_FILE_ID]
488
					,[REQ_ID]
489
					,[NOTES]
490
				)	
491
				VALUES
492
				(   
493
					@l_REQFile_ID
494
					,@p_CONTRACT_ID,
495
					@_NOTES
496
				)
497
			end
498
			
499
			FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@REQ_ID,@_NOTES
500
		END
501
		CLOSE ListTrREQFile
502
		DEALLOCATE ListTrREQFile
503
		IF @@Error <> 0 GOTO ABORT
504

    
505
		if(select count(*) from @TEMP) = 0
506
		begin
507
			INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_CONTRACT')
508
		end
509
COMMIT TRANSACTION
510
IF(@p_RECORD_STATUS ='U')
511
BEGIN
512
-- INSERT VAO LOG
513
	INSERT INTO dbo.PL_PROCESS
514
	(
515
						REQ_ID,
516
						PROCESS_ID,
517
						CHECKER_ID,
518
						APPROVE_DT,
519
						PROCESS_DESC,NOTES
520
					)
521
					VALUES
522
					(   @p_CONTRACT_ID,        -- REQ_ID - varchar(15)
523
						'SEND',        -- PROCESS_ID - varchar(10)
524
						@p_MAKER_ID,        -- CHECKER_ID - varchar(15)
525
						GETDATE(), -- APPROVE_DT - datetime
526
					   N'Nhân viên gửi phê duyệt phiếu thành công' ,N'Gửi phê duyệt')
527
	--IF(@p_CONT_TYPE ='DK')
528
	--BEGIN
529
	--	UPDATE TR_CONTRACT SET AUTH_STATUS ='A' WHERE CONTRACT_ID =@p_CONTRACT_ID
530
	--END
531
	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
532
	RETURN '2'
533
	--- 
534
	--IF(@p_CONT_TYPE ='DK' AND CONVERT(DATE, GETDATE(),103) <='2020-08-30')
535
	
536
	
537
END
538
ELSE
539
BEGIN
540
	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
541
	RETURN '0'
542
END
543
ABORT:
544
BEGIN
545
		
546
		CLOSE ConTrack
547
		DEALLOCATE ConTrack
548
		CLOSE AssetDetail
549
		DEALLOCATE AssetDetail
550
		CLOSE PaymentDetail
551
		DEALLOCATE PaymentDetail
552
		ROLLBACK TRANSACTION
553
		SELECT '-1' AS RESULT, ''  CONTRACT_ID,'' ErrorDesc
554
		RETURN '-1'
555
End
556

    
557

    
558
--SELECT * FROM TR_CONTRACT_DT
559

    
560
--SELECT * FROM TR_CONTRACT_PAYMENT
561

    
562
--SELECT * FROM TR_CONTRACT