Project

General

Profile

TR_CONTRACT_Ins.txt

Luc Tran Van, 12/12/2022 04:41 PM

 
1

    
2
ALTER   PROCEDURE [dbo].[TR_CONTRACT_Ins]
3
@p_CONTRACT_CODE	varchar(150)  = NULL,
4
@p_CONTRACT_NAME	nvarchar(200)  = NULL,
5
@p_CONTRACT_TYPE	varchar(1)  = NULL,
6
@p_BID_ID	varchar(15)  = NULL,
7
@p_SUP_ID	varchar(15)  = NULL,
8
@p_TOTAL_AMT	decimal(18)  = NULL,
9
@p_DELIVERY_DT	VARCHAR(20) = NULL,
10
@p_FORM1	varchar(4)  = NULL,
11
@p_VOUCHER_ID1	varchar(20)  = NULL,
12
@p_BANK1	varchar(4)  = NULL,
13
@p_AMOUNT1	decimal(18)  = NULL,
14
@p_EXP_DT1	VARCHAR(20) = NULL,
15
@p_RATE1	decimal(18,2)  = NULL,
16
@p_FORM2	varchar(4)  = NULL,
17
@p_VOUCHER_ID2	varchar(20)  = NULL,
18
@p_BANK2	varchar(4)  = NULL,
19
@p_AMOUNT2	decimal(18)  = NULL,
20
@p_EXP_DT2	VARCHAR(20) = NULL,
21
@p_RATE2	decimal(18,2)  = NULL,
22
@p_REQ_DOC_ID	nvarchar(50)  = NULL,
23
@p_REQ_DOC_CONTENT	nvarchar(1000)  = NULL,
24
@p_APPROVE_VALUE	decimal(18)  = NULL,
25
@p_SIGN_DT	VARCHAR(20) = NULL,
26
@p_CONSTRUCT_PROGRESS	decimal(18,2)  = NULL,
27
@p_NOTES	nvarchar(1000)  = NULL,
28
@p_RECORD_STATUS	varchar(1)  = NULL,
29
@p_MAKER_ID	varchar(12)  = NULL,
30
@p_CREATE_DT	VARCHAR(20) = NULL,
31
@p_AUTH_STATUS	varchar(50)  = NULL,
32
@p_CHECKER_ID	varchar(12)  = NULL,
33
@p_APPROVE_DT	VARCHAR(20) = NULL,
34
@p_START_DT	VARCHAR(20) = NULL,
35
@p_END_DT VARCHAR(20) = NULL,
36
@p_CONT_TYPE VARCHAR(10)=NULL,
37
@p_CUST_ID VARCHAR(15) = NULL,
38
@p_BRANCH_ID VARCHAR(15)= NULL,
39
@p_EXP_CONTRACT INT = NULL,
40
@p_DEPOSIT_AMT DECIMAL(18,0) = NULL,
41
@p_TYPE_PERIOD VARCHAR(15) = NULL,
42
@p_DEPOSIT_NOTE NVARCHAR(1000) = NULL,
43
@p_LISTASSET XML = NULL,
44
@p_ListTrREQFile XML,
45
@p_LISTPAYMENT XML = NULL,
46
-----------------------BAODNQ 25/2/2022 : Thêm tham số-------------
47
@p_IS_SEND_APPR VARCHAR(1) = NULL,
48
@p_SEND_APPR_DT VARCHAR(20) = NULL,
49
@p_ADDR NVARCHAR(1000) = NULL,
50
@p_SUP_CODE VARCHAR(20) = NULL
51
AS
52
	DECLARE @sErrorCode VARCHAR(20) = ''
53
	DECLARE @TEMP TABLE
54
			(
55
				[KEY] varchar(15),
56
				[REF_ID] varchar(15),
57
				[TYPE] varchar(50)
58
			)
59
	--IF (@p_CONTRACT_CODE IS NOT NULL AND @p_CONTRACT_CODE <> '')
60
	--BEGIN
61
	--	IF EXISTS(SELECT * FROM TR_CONTRACT A WHERE A.CONTRACT_CODE = @p_CONTRACT_CODE)
62
	--	BEGIN
63
	--		SET @sErrorCode = 'TR-00001'
64
	--	END
65
	--END
66
	----------------BAODNQ 8/11/2022 : BỎ RÀNG BUỘC TRÙNG SỐ HỢP ĐỒNG------------
67
	--IF(@p_CONTRACT_CODE IS NOT NULL AND @p_CONTRACT_CODE <> '')
68
	--BEGIN
69
	--	IF(EXISTS (SELECT * FROM TR_CONTRACT WHERE CONTRACT_CODE = @p_CONTRACT_CODE))
70
	--	BEGIN
71
	--		DECLARE @p_EXISTS_CONTRACT_ID VARCHAR(15) = (
72
	--			SELECT TOP 1 CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_CODE = @p_CONTRACT_CODE
73
	--		)
74
	--		SELECT '-1' AS Result, '' CONTRACT_ID,
75
	--			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: ' 
76
	--			+ @p_EXISTS_CONTRACT_ID + N'. Vui lòng nhập số hợp đồng khác' ErrorDesc
77
	--		RETURN '-1'
78
	--	END
79
	--END
80

    
81
	IF 	@sErrorCode <> ''
82
	BEGIN
83
		SELECT '-1' as Result, ''  CONTRACT_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @sErrorCode
84
		RETURN '-1'
85
	END
86

    
87
	----------------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------------------
88
	---------------NGƯỢC LẠI NẾU LÀ (MS, NT), BẮT BUỘC NHẬP LƯỚI DANH SÁCH HÀNG HÓA----------------
89
	DECLARE @p_TR_CONTRACT_DT_XML_COUNT INT
90
	SET @p_TR_CONTRACT_DT_XML_COUNT = (
91
		SELECT @p_LISTASSET.value('count(/Root/AssetDetail/GOODS_ID)', 'INT') AS 'COUNT'
92
	)
93
	PRINT @p_TR_CONTRACT_DT_XML_COUNT
94
	IF(@p_CONT_TYPE <> 'DK' AND @p_TR_CONTRACT_DT_XML_COUNT <= 0)
95
	BEGIN
96
		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 
97
		RETURN '-1'
98
	END
99
	-----------------ENDBAODNQ-------------------
100

    
101
	Declare @hdoc INT
102
	Exec sp_xml_preparedocument @hdoc Output,@p_LISTASSET
103
	DECLARE AssetDetail CURSOR FOR
104
	SELECT *
105
	FROM OPENXML(@hDoc,'/Root/AssetDetail',2)
106
	WITH 
107
	(
108
		GOODS_ID	varchar(15),
109
		UNIT_ID	varchar(15),
110
		QUANTITY	decimal(18),
111
		PRICE	decimal(18),
112
		NOTES	nvarchar(1000),
113
		GD_NAME_REAL NVARCHAR(500),
114
		RECURRING  VARCHAR(5),
115
		UNIT_NAME_REAL NVARCHAR(100),
116
		-------------------BAODNQ 23/2/2022: Thêm cột vào bảng TR_CONTRACT_DT-------------
117
		RENT_PRICE DECIMAL(18,0),
118
		BUILDING_ID VARCHAR(15)
119
	)
120
	OPEN AssetDetail
121

    
122
	Exec sp_xml_preparedocument @hdoc Output,@p_LISTPAYMENT
123
	DECLARE PaymentDetail CURSOR FOR
124
	SELECT *
125
	FROM OPENXML(@hDoc,'/Root/PaymentDetail',2)
126
	WITH 
127
	(
128
		PAY_PHASE	NVARCHAR(1000),
129
		EXPECTED_DT	VARCHAR(20),
130
		[PERCENT]	decimal(18,2),
131
		[AMOUNT]	decimal(18),
132
		PAY_STATUS varchar(1),
133
		NOTES	nvarchar(1000),
134
		PAY_AMOUNT DECIMAL(18),
135
		PAY_DT VARCHAR(20)
136
	)
137
	OPEN PaymentDetail
138
	PRINT 'PASS KHOI TAO'
139
BEGIN TRANSACTION
140
		IF(@p_CONTRACT_NAME ='' OR @p_CONTRACT_NAME IS  NULL)
141
		BEGIN
142
				ROLLBACK TRANSACTION
143
				SELECT '-1' Result, '' AS CONTRACT_ID, N'Tên hợp đồng không được để trống' AS ErrorDesc 
144
				RETURN '-1'
145
		END
146

    
147
		---------------BAODNQ 12/12/2022 : HOT_FIX TẠM THỜI-------------------
148
		--------------NẾU KO TRUYỀN SUP_ID THÌ TỪ SUP_CODE TÌM KIẾM RA SUP_ID---------
149
		IF((@p_SUP_ID IS NULL OR @p_SUP_ID = '') AND @p_SUP_CODE IS NOT NULL AND @p_SUP_CODE <> '')
150
		BEGIN
151
			SET @p_SUP_ID = (SELECT TOP 1 SUP_ID FROM CM_SUPPLIER WHERE SUP_CODE = @p_SUP_CODE)
152
		END
153
		--------------ENDBAODNQ 12/12/2022----------------------------
154

    
155
		--insert master
156
		DECLARE @l_CONTRACT_ID VARCHAR(15)
157
		EXEC SYS_CodeMasters_Gen 'TR_CONTRACT', @l_CONTRACT_ID out
158
		IF @l_CONTRACT_ID='' OR @l_CONTRACT_ID IS NULL GOTO ABORT
159
		PRINT'PASS CAP ID'
160
		-----------------------BAODNQ 25/2/2022 : Thêm cột vào bảng TR_CONTRACT-------------
161
		INSERT INTO TR_CONTRACT([CONTRACT_ID],[CONTRACT_CODE],[CONTRACT_NAME],[CONTRACT_TYPE],[BID_ID],[SUP_ID],
162
		[TOTAL_AMT],[DELIVERY_DT],[FORM1],[VOUCHER_ID1],[BANK1],[AMOUNT1],
163
		[EXP_DT1],[RATE1],[FORM2],[VOUCHER_ID2],[BANK2],[AMOUNT2],[EXP_DT2],
164
		[RATE2],[REQ_DOC_ID],[REQ_DOC_CONTENT],[APPROVE_VALUE],[SIGN_DT],[CONSTRUCT_PROGRESS],
165
		[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],[START_DT],[END_DT],CONT_TYPE, CUST_ID, 
166
		BRANCH_ID,EXP_CONTRACT,DEPOSIT_AMT,TYPE_PERIOD,DEPOSIT_NOTE, IS_SEND_APPR, SEND_APPR_DT, [ADDRESS])
167
		VALUES(@l_CONTRACT_ID ,@p_CONTRACT_CODE ,@p_CONTRACT_NAME, @p_CONTRACT_TYPE ,@p_BID_ID ,@p_SUP_ID,
168
		CONVERT(DECIMAL,@p_TOTAL_AMT) ,
169
		(CASE WHEN @p_DELIVERY_DT  IS NOT NULL AND @p_DELIVERY_DT <> '' then CONVERT(DATETIME, @p_DELIVERY_DT, 103) ELSE NULL END) ,
170
		@p_FORM1 ,@p_VOUCHER_ID1 ,@p_BANK1 ,CONVERT(DECIMAL,@p_AMOUNT1) ,(CASE WHEN @p_EXP_DT1 IS NOT NULL AND @p_EXP_DT1 <> '' then CONVERT(DATETIME, @p_EXP_DT1, 103) ELSE NULL END) 
171
		,CONVERT(DECIMAL,@p_RATE1) ,@p_FORM2 ,@p_VOUCHER_ID2 ,@p_BANK2 ,CONVERT(DECIMAL,@p_AMOUNT2),
172
		(CASE WHEN @p_EXP_DT2 IS NOT NULL AND @p_EXP_DT2 <> '' then CONVERT(DATETIME, @p_EXP_DT2, 103) ELSE NULL END) ,CONVERT(DECIMAL,@p_RATE2) ,@p_REQ_DOC_ID ,@p_REQ_DOC_CONTENT,
173
		CONVERT(DECIMAL,@p_APPROVE_VALUE),(CASE WHEN @p_SIGN_DT IS NOT NULL AND @p_SIGN_DT <> '' then CONVERT(DATETIME, @p_SIGN_DT, 103) ELSE NULL END),@p_CONSTRUCT_PROGRESS ,
174
		@p_NOTES ,'1' ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,'E',
175
		@p_CHECKER_ID ,
176
		(CASE WHEN @p_APPROVE_DT IS NOT NULL AND @p_APPROVE_DT <> '' then CONVERT(DATETIME, @p_APPROVE_DT, 103) ELSE NULL END),
177
		(CASE WHEN @p_START_DT  IS NOT NULL AND @p_START_DT <> '' then CONVERT(DATETIME,@p_START_DT,103) ELSE NULL END),
178
		(CASE WHEN @p_END_DT  IS NOT NULL AND @p_END_DT <> '' then CONVERT(DATETIME,@p_END_DT,103) ELSE NULL END),@p_CONT_TYPE,@p_CUST_ID,@p_BRANCH_ID,@p_EXP_CONTRACT,@p_DEPOSIT_AMT,@p_TYPE_PERIOD,@p_DEPOSIT_NOTE, @p_IS_SEND_APPR, CONVERT(DATETIME, @p_SEND_APPR_DT, 103),
179
		@p_ADDR)
180
		IF @@Error <> 0 GOTO ABORT
181
		PRINT 'INSERT MASTER SUCCESS'
182
		--insert asset detail tương đương như NỘI DUNG trong bảng contract detail
183
		Declare 
184
		@GOODS_ID	varchar(15),
185
		@UNIT_ID	varchar(15),
186
		@QUANTITY	decimal(18),
187
		@pRICE	decimal(18),
188
		@NOTES	nvarchar(1000),
189
		@pAY_PHASE	NVARCHAR(1000),
190
		@EXPECTED_DT	VARCHAR(20),
191
		@pERCENT	decimal(18,2),
192
		@AMOUNT	decimal(18),
193
		@pAYMENT_STATUS VARCHAR(1),
194
		@pAY_DT VARCHAR(20),
195
		@pAY_AMOUNT DECIMAL(18),
196
		@GD_NAME_REAL NVARCHAR(50),
197
		@RECURRING VARCHAR(5),
198
		@UNIT_NAME_REAL NVARCHAR(100),
199
		-------------------BAODNQ 23/2/2022: Thêm cột vào bảng TR_CONTRACT_DT-------------
200
		@RENT_PRICE DECIMAL(18,0),
201
		@BUILDING_ID VARCHAR(15)
202

    
203
		--Insert contract detail
204
		DECLARE @l_CD_ID VARCHAR(15)
205
		FETCH NEXT FROM AssetDetail INTO @GOODS_ID,@UNIT_ID,@QUANTITY,@pRICE,@NOTES,@GD_NAME_REAL,@RECURRING,@UNIT_NAME_REAL, @RENT_PRICE, @BUILDING_ID
206
		WHILE @@FETCH_STATUS = 0	
207
		BEGIN
208
			EXEC SYS_CodeMasters_Gen 'TR_CONTRACT_DT', @l_CD_ID out
209
			IF @l_CD_ID='' OR @l_CD_ID IS NULL GOTO ABORT
210
			INSERT INTO TR_CONTRACT_DT([CD_ID],[CONTRACT_ID],[GOODS_ID],[UNIT_ID],[QUANTITY],[PRICE],[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT], [GD_NAME_REAL], QUANTITY_USE,RECURRING,UNIT_NAME_REAL,RENT_PRICE,BUILDING_ID)
211
			VALUES(@l_CD_ID ,@l_CONTRACT_ID,@GOODS_ID,@UNIT_ID,@QUANTITY,@pRICE,@NOTES,@p_RECORD_STATUS,
212
				@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,0,@RECURRING,@UNIT_NAME_REAL, @RENT_PRICE, @BUILDING_ID)
213
			IF @@Error <> 0 GOTO ABORT			
214
		-- next Group_Id
215
			FETCH NEXT FROM AssetDetail INTO @GOODS_ID,@UNIT_ID,@QUANTITY,@pRICE,@NOTES,@GD_NAME_REAL,@RECURRING,@UNIT_NAME_REAL, @RENT_PRICE, @BUILDING_ID
216
		END
217
		
218
		--insert payment detail
219
		DECLARE @l_PAY_ID VARCHAR(15)
220
		FETCH NEXT FROM PaymentDetail INTO @pAY_PHASE,@EXPECTED_DT,@pERCENT,@AMOUNT,@pAYMENT_STATUS,@NOTES,@pAY_AMOUNT,@pAY_DT
221

    
222
		WHILE @@FETCH_STATUS = 0
223
		BEGIN
224
			EXEC SYS_CodeMasters_Gen 'TR_CONTRACT_PAYMENT', @l_PAY_ID out
225
			IF @l_PAY_ID='' OR @l_PAY_ID IS NULL GOTO ABORT
226
			INSERT INTO TR_CONTRACT_PAYMENT([PAY_AMOUNT],[PAY_DT], [PAY_ID],[CONTRACT_ID],[PAY_PHASE],[EXPECTED_DT],[PERCENT],[AMOUNT],[PAY_STATUS],[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT])
227
			VALUES(@pAY_AMOUNT,(CASE WHEN @pAY_DT IS NOT NULL AND @pAY_DT <> '' then CONVERT(DATETIME, @pAY_DT, 103) ELSE NULL END), @l_PAY_ID ,@l_CONTRACT_ID ,@pAY_PHASE ,CONVERT(DATETIME, @EXPECTED_DT, 103) ,@pERCENT,@AMOUNT,@pAYMENT_STATUS ,@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))
228
			IF @@Error <> 0 GOTO ABORT
229
			FETCH NEXT FROM PaymentDetail INTO @pAY_PHASE,@EXPECTED_DT,@pERCENT,@AMOUNT,@pAYMENT_STATUS,@NOTES,@pAY_AMOUNT,@pAY_DT
230
		END
231
		CLOSE AssetDetail
232
		DEALLOCATE AssetDetail
233
		CLOSE PaymentDetail
234
		DEALLOCATE PaymentDetail
235

    
236
		--Insert into TABLE TR_REQUEST_DOC_FILE
237

    
238
		DECLARE @tableTrREQFile TABLE(
239
			TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
240
			IS_VIEW	bit,
241
			REQ_ID varchar(20),
242
			NOTES  nvarchar(200)
243
		)
244

    
245

    
246
		Declare @fdoc INT
247
		Exec sp_xml_preparedocument @fdoc Output,@p_ListTrREQFile
248

    
249
		INSERT INTO @tableTrREQFile
250
		SELECT *
251
		FROM OPENXML(@fDoc,'/Root/ListTrREQ',2)
252
		WITH 
253
		(
254
			TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
255
			IS_VIEW	bit,
256
			REQ_ID varchar(20),
257
			NOTES  nvarchar(200)
258
		)
259

    
260
		DECLARE ListTrREQFile  CURSOR FOR
261
		SELECT * FROM @tableTrREQFile
262
		OPEN ListTrREQFile
263

    
264
		Declare 
265
		@TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
266
		@IS_VIEW	bit,
267
		@REQ_ID varchar(20),
268
		@_NOTES nvarchar(200)
269

    
270
		FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES
271
		WHILE @@FETCH_STATUS = 0	
272
		BEGIN
273
			DECLARE @l_REQFile_ID VARCHAR(15)
274
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_DOC_FILE', @l_REQFile_ID out
275
			--select @l_REQFile_ID
276
			--select * from TR_REQUEST_DOC_FILE where [TR_REQUEST_DOC_FILE_ID]= 'TRDF00000000523'
277
			IF @l_REQFile_ID='' OR @l_REQFile_ID IS NULL GOTO ABORT
278

    
279
			INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_CONTRACT')
280

    
281
			INSERT INTO dbo.TR_REQUEST_DOC_FILE
282
			(
283
			     [TR_REQUEST_DOC_FILE_ID]
284
				,[REQ_ID]
285
				,[NOTES]
286
			)	
287
			VALUES
288
			(   
289
				 @l_REQFile_ID
290
				,@l_CONTRACT_ID
291
				,@_NOTES
292
			)
293
			IF @@ERROR <> 0 GOTO ABORT
294
			FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES
295
		END
296
		CLOSE ListTrREQFile
297
		DEALLOCATE ListTrREQFile
298
		IF @@Error <> 0 GOTO ABORT
299
		
300
		if(select count(*) from @TEMP) = 0
301
		begin
302
			INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_CONTRACT')
303
		end
304

    
305
		------------------BAODNQ 24/2/2022 INSERT lưu lịch sử xử lý------------------
306
		INSERT INTO dbo.PL_PROCESS
307
				(
308
					REQ_ID,
309
					PROCESS_ID,
310
					CHECKER_ID,
311
					APPROVE_DT,
312
					PROCESS_DESC,
313
					NOTES
314
				)
315
				VALUES
316
				(	@l_CONTRACT_ID,       
317
					'INSERT',
318
					@p_MAKER_ID,        
319
					GETDATE(), 
320
					N'Thêm mới thông tin hợp đồng thành công' ,      
321
					N'Thêm mới thông tin hợp đồng'       
322
				)
323

    
324

    
325
COMMIT TRANSACTION
326
SELECT '0' as Result, @l_CONTRACT_ID  CONTRACT_ID, @p_CONTRACT_CODE CONTRACT_CODE,
327
	N'Hợp đồng có ID: '+ @l_CONTRACT_ID +N' đã được tạo bản nháp thành công. Bạn có thể bấm gửi phê duyệt' ErrorDesc,[REF_ID], [TYPE]  from @TEMP
328
RETURN '0'
329
ABORT:
330
BEGIN
331
		CLOSE AssetDetail
332
		DEALLOCATE AssetDetail
333
		CLOSE PaymentDetail
334
		DEALLOCATE PaymentDetail
335
		ROLLBACK TRANSACTION
336
		SELECT '-1' as Result, '' CONTRACT_ID, '' ErrorDesc
337
		RETURN '-1'
338
End