Project

General

Profile

TR_CONTRACT_Ins.txt

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

 
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
AS
51
	DECLARE @sErrorCode VARCHAR(20) = ''
52
	DECLARE @TEMP TABLE
53
			(
54
				[KEY] varchar(15),
55
				[REF_ID] varchar(15),
56
				[TYPE] varchar(50)
57
			)
58
	--IF (@p_CONTRACT_CODE IS NOT NULL AND @p_CONTRACT_CODE <> '')
59
	--BEGIN
60
	--	IF EXISTS(SELECT * FROM TR_CONTRACT A WHERE A.CONTRACT_CODE = @p_CONTRACT_CODE)
61
	--	BEGIN
62
	--		SET @sErrorCode = 'TR-00001'
63
	--	END
64
	--END
65
	----------------BAODNQ 8/11/2022 : BỎ RÀNG BUỘC TRÙNG SỐ HỢP ĐỒNG------------
66
	--IF(@p_CONTRACT_CODE IS NOT NULL AND @p_CONTRACT_CODE <> '')
67
	--BEGIN
68
	--	IF(EXISTS (SELECT * FROM TR_CONTRACT WHERE CONTRACT_CODE = @p_CONTRACT_CODE))
69
	--	BEGIN
70
	--		DECLARE @p_EXISTS_CONTRACT_ID VARCHAR(15) = (
71
	--			SELECT TOP 1 CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_CODE = @p_CONTRACT_CODE
72
	--		)
73
	--		SELECT '-1' AS Result, '' CONTRACT_ID,
74
	--			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: ' 
75
	--			+ @p_EXISTS_CONTRACT_ID + N'. Vui lòng nhập số hợp đồng khác' ErrorDesc
76
	--		RETURN '-1'
77
	--	END
78
	--END
79

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

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

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

    
121
	Exec sp_xml_preparedocument @hdoc Output,@p_LISTPAYMENT
122
	DECLARE PaymentDetail CURSOR FOR
123
	SELECT *
124
	FROM OPENXML(@hDoc,'/Root/PaymentDetail',2)
125
	WITH 
126
	(
127
		PAY_PHASE	NVARCHAR(1000),
128
		EXPECTED_DT	VARCHAR(20),
129
		[PERCENT]	decimal(18,2),
130
		[AMOUNT]	decimal(18),
131
		PAY_STATUS varchar(1),
132
		NOTES	nvarchar(1000),
133
		PAY_AMOUNT DECIMAL(18),
134
		PAY_DT VARCHAR(20)
135
	)
136
	OPEN PaymentDetail
137
	PRINT 'PASS KHOI TAO'
138
BEGIN TRANSACTION
139
		IF(@p_CONTRACT_NAME ='' OR @p_CONTRACT_NAME IS  NULL)
140
		BEGIN
141
				ROLLBACK TRANSACTION
142
				SELECT '-1' Result, '' AS CONTRACT_ID, N'Tên hợp đồng không được để trống' AS ErrorDesc 
143
				RETURN '-1'
144
		END
145
		--insert master
146
		DECLARE @l_CONTRACT_ID VARCHAR(15)
147
		EXEC SYS_CodeMasters_Gen 'TR_CONTRACT', @l_CONTRACT_ID out
148
		IF @l_CONTRACT_ID='' OR @l_CONTRACT_ID IS NULL GOTO ABORT
149
		PRINT'PASS CAP ID'
150
		-----------------------BAODNQ 25/2/2022 : Thêm cột vào bảng TR_CONTRACT-------------
151
		INSERT INTO TR_CONTRACT([CONTRACT_ID],[CONTRACT_CODE],[CONTRACT_NAME],[CONTRACT_TYPE],[BID_ID],[SUP_ID],
152
		[TOTAL_AMT],[DELIVERY_DT],[FORM1],[VOUCHER_ID1],[BANK1],[AMOUNT1],
153
		[EXP_DT1],[RATE1],[FORM2],[VOUCHER_ID2],[BANK2],[AMOUNT2],[EXP_DT2],
154
		[RATE2],[REQ_DOC_ID],[REQ_DOC_CONTENT],[APPROVE_VALUE],[SIGN_DT],[CONSTRUCT_PROGRESS],
155
		[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],[START_DT],[END_DT],CONT_TYPE, CUST_ID, 
156
		BRANCH_ID,EXP_CONTRACT,DEPOSIT_AMT,TYPE_PERIOD,DEPOSIT_NOTE, IS_SEND_APPR, SEND_APPR_DT, [ADDRESS])
157
		VALUES(@l_CONTRACT_ID ,@p_CONTRACT_CODE ,@p_CONTRACT_NAME, @p_CONTRACT_TYPE ,@p_BID_ID ,@p_SUP_ID,
158
		CONVERT(DECIMAL,@p_TOTAL_AMT) ,
159
		(CASE WHEN @p_DELIVERY_DT  IS NOT NULL AND @p_DELIVERY_DT <> '' then CONVERT(DATETIME, @p_DELIVERY_DT, 103) ELSE NULL END) ,
160
		@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) 
161
		,CONVERT(DECIMAL,@p_RATE1) ,@p_FORM2 ,@p_VOUCHER_ID2 ,@p_BANK2 ,CONVERT(DECIMAL,@p_AMOUNT2),
162
		(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,
163
		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 ,
164
		@p_NOTES ,'1' ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,'E',
165
		@p_CHECKER_ID ,
166
		(CASE WHEN @p_APPROVE_DT IS NOT NULL AND @p_APPROVE_DT <> '' then CONVERT(DATETIME, @p_APPROVE_DT, 103) ELSE NULL END),
167
		(CASE WHEN @p_START_DT  IS NOT NULL AND @p_START_DT <> '' then CONVERT(DATETIME,@p_START_DT,103) ELSE NULL END),
168
		(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),
169
		@p_ADDR)
170
		IF @@Error <> 0 GOTO ABORT
171
		PRINT 'INSERT MASTER SUCCESS'
172
		--insert asset detail tương đương như NỘI DUNG trong bảng contract detail
173
		Declare 
174
		@GOODS_ID	varchar(15),
175
		@UNIT_ID	varchar(15),
176
		@QUANTITY	decimal(18),
177
		@pRICE	decimal(18),
178
		@NOTES	nvarchar(1000),
179
		@pAY_PHASE	NVARCHAR(1000),
180
		@EXPECTED_DT	VARCHAR(20),
181
		@pERCENT	decimal(18,2),
182
		@AMOUNT	decimal(18),
183
		@pAYMENT_STATUS VARCHAR(1),
184
		@pAY_DT VARCHAR(20),
185
		@pAY_AMOUNT DECIMAL(18),
186
		@GD_NAME_REAL NVARCHAR(50),
187
		@RECURRING VARCHAR(5),
188
		@UNIT_NAME_REAL NVARCHAR(100),
189
		-------------------BAODNQ 23/2/2022: Thêm cột vào bảng TR_CONTRACT_DT-------------
190
		@RENT_PRICE DECIMAL(18,0),
191
		@BUILDING_ID VARCHAR(15)
192

    
193
		--Insert contract detail
194
		DECLARE @l_CD_ID VARCHAR(15)
195
		FETCH NEXT FROM AssetDetail INTO @GOODS_ID,@UNIT_ID,@QUANTITY,@pRICE,@NOTES,@GD_NAME_REAL,@RECURRING,@UNIT_NAME_REAL, @RENT_PRICE, @BUILDING_ID
196
		WHILE @@FETCH_STATUS = 0	
197
		BEGIN
198
			EXEC SYS_CodeMasters_Gen 'TR_CONTRACT_DT', @l_CD_ID out
199
			IF @l_CD_ID='' OR @l_CD_ID IS NULL GOTO ABORT
200
			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)
201
			VALUES(@l_CD_ID ,@l_CONTRACT_ID,@GOODS_ID,@UNIT_ID,@QUANTITY,@pRICE,@NOTES,@p_RECORD_STATUS,
202
				@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)
203
			IF @@Error <> 0 GOTO ABORT			
204
		-- next Group_Id
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
		END
207
		
208
		--insert payment detail
209
		DECLARE @l_PAY_ID VARCHAR(15)
210
		FETCH NEXT FROM PaymentDetail INTO @pAY_PHASE,@EXPECTED_DT,@pERCENT,@AMOUNT,@pAYMENT_STATUS,@NOTES,@pAY_AMOUNT,@pAY_DT
211

    
212
		WHILE @@FETCH_STATUS = 0
213
		BEGIN
214
			EXEC SYS_CodeMasters_Gen 'TR_CONTRACT_PAYMENT', @l_PAY_ID out
215
			IF @l_PAY_ID='' OR @l_PAY_ID IS NULL GOTO ABORT
216
			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])
217
			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))
218
			IF @@Error <> 0 GOTO ABORT
219
			FETCH NEXT FROM PaymentDetail INTO @pAY_PHASE,@EXPECTED_DT,@pERCENT,@AMOUNT,@pAYMENT_STATUS,@NOTES,@pAY_AMOUNT,@pAY_DT
220
		END
221
		CLOSE AssetDetail
222
		DEALLOCATE AssetDetail
223
		CLOSE PaymentDetail
224
		DEALLOCATE PaymentDetail
225

    
226
		--Insert into TABLE TR_REQUEST_DOC_FILE
227

    
228
		DECLARE @tableTrREQFile TABLE(
229
			TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
230
			IS_VIEW	bit,
231
			REQ_ID varchar(20),
232
			NOTES  nvarchar(200)
233
		)
234

    
235

    
236
		Declare @fdoc INT
237
		Exec sp_xml_preparedocument @fdoc Output,@p_ListTrREQFile
238

    
239
		INSERT INTO @tableTrREQFile
240
		SELECT *
241
		FROM OPENXML(@fDoc,'/Root/ListTrREQ',2)
242
		WITH 
243
		(
244
			TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
245
			IS_VIEW	bit,
246
			REQ_ID varchar(20),
247
			NOTES  nvarchar(200)
248
		)
249

    
250
		DECLARE ListTrREQFile  CURSOR FOR
251
		SELECT * FROM @tableTrREQFile
252
		OPEN ListTrREQFile
253

    
254
		Declare 
255
		@TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
256
		@IS_VIEW	bit,
257
		@REQ_ID varchar(20),
258
		@_NOTES nvarchar(200)
259

    
260
		FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES
261
		WHILE @@FETCH_STATUS = 0	
262
		BEGIN
263
			DECLARE @l_REQFile_ID VARCHAR(15)
264
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_DOC_FILE', @l_REQFile_ID out
265
			--select @l_REQFile_ID
266
			--select * from TR_REQUEST_DOC_FILE where [TR_REQUEST_DOC_FILE_ID]= 'TRDF00000000523'
267
			IF @l_REQFile_ID='' OR @l_REQFile_ID IS NULL GOTO ABORT
268

    
269
			INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_CONTRACT')
270

    
271
			INSERT INTO dbo.TR_REQUEST_DOC_FILE
272
			(
273
			     [TR_REQUEST_DOC_FILE_ID]
274
				,[REQ_ID]
275
				,[NOTES]
276
			)	
277
			VALUES
278
			(   
279
				 @l_REQFile_ID
280
				,@l_CONTRACT_ID
281
				,@_NOTES
282
			)
283
			IF @@ERROR <> 0 GOTO ABORT
284
			FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES
285
		END
286
		CLOSE ListTrREQFile
287
		DEALLOCATE ListTrREQFile
288
		IF @@Error <> 0 GOTO ABORT
289
		
290
		if(select count(*) from @TEMP) = 0
291
		begin
292
			INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_CONTRACT')
293
		end
294

    
295
		------------------BAODNQ 24/2/2022 INSERT lưu lịch sử xử lý------------------
296
		INSERT INTO dbo.PL_PROCESS
297
				(
298
					REQ_ID,
299
					PROCESS_ID,
300
					CHECKER_ID,
301
					APPROVE_DT,
302
					PROCESS_DESC,
303
					NOTES
304
				)
305
				VALUES
306
				(	@l_CONTRACT_ID,       
307
					'INSERT',
308
					@p_MAKER_ID,        
309
					GETDATE(), 
310
					N'Thêm mới thông tin hợp đồng thành công' ,      
311
					N'Thêm mới thông tin hợp đồng'       
312
				)
313

    
314

    
315
COMMIT TRANSACTION
316
SELECT '0' as Result, @l_CONTRACT_ID  CONTRACT_ID, @p_CONTRACT_CODE CONTRACT_CODE,
317
	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
318
RETURN '0'
319
ABORT:
320
BEGIN
321
		CLOSE AssetDetail
322
		DEALLOCATE AssetDetail
323
		CLOSE PaymentDetail
324
		DEALLOCATE PaymentDetail
325
		ROLLBACK TRANSACTION
326
		SELECT '-1' as Result, '' CONTRACT_ID, '' ErrorDesc
327
		RETURN '-1'
328
End