Project

General

Profile

TR_CONTRACT_Ins.txt

Luc Tran Van, 11/08/2022 11:24 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
	Declare @hdoc INT
86
	Exec sp_xml_preparedocument @hdoc Output,@p_LISTASSET
87
	DECLARE AssetDetail CURSOR FOR
88
	SELECT *
89
	FROM OPENXML(@hDoc,'/Root/AssetDetail',2)
90
	WITH 
91
	(
92
		GOODS_ID	varchar(15),
93
		UNIT_ID	varchar(15),
94
		QUANTITY	decimal(18),
95
		PRICE	decimal(18),
96
		NOTES	nvarchar(1000),
97
		GD_NAME_REAL NVARCHAR(500),
98
		RECURRING  VARCHAR(5),
99
		UNIT_NAME_REAL NVARCHAR(100),
100
		-------------------BAODNQ 23/2/2022: Thêm cột vào bảng TR_CONTRACT_DT-------------
101
		RENT_PRICE DECIMAL(18,0),
102
		BUILDING_ID VARCHAR(15)
103
	)
104
	OPEN AssetDetail
105

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

    
178
		--Insert contract detail
179
		DECLARE @l_CD_ID VARCHAR(15)
180
		FETCH NEXT FROM AssetDetail INTO @GOODS_ID,@UNIT_ID,@QUANTITY,@pRICE,@NOTES,@GD_NAME_REAL,@RECURRING,@UNIT_NAME_REAL, @RENT_PRICE, @BUILDING_ID
181
		WHILE @@FETCH_STATUS = 0	
182
		BEGIN
183
			EXEC SYS_CodeMasters_Gen 'TR_CONTRACT_DT', @l_CD_ID out
184
			IF @l_CD_ID='' OR @l_CD_ID IS NULL GOTO ABORT
185
			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)
186
			VALUES(@l_CD_ID ,@l_CONTRACT_ID,@GOODS_ID,@UNIT_ID,@QUANTITY,@pRICE,@NOTES,@p_RECORD_STATUS,
187
				@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)
188
			IF @@Error <> 0 GOTO ABORT			
189
		-- next Group_Id
190
			FETCH NEXT FROM AssetDetail INTO @GOODS_ID,@UNIT_ID,@QUANTITY,@pRICE,@NOTES,@GD_NAME_REAL,@RECURRING,@UNIT_NAME_REAL, @RENT_PRICE, @BUILDING_ID
191
		END
192
		
193
		--insert payment detail
194
		DECLARE @l_PAY_ID VARCHAR(15)
195
		FETCH NEXT FROM PaymentDetail INTO @pAY_PHASE,@EXPECTED_DT,@pERCENT,@AMOUNT,@pAYMENT_STATUS,@NOTES,@pAY_AMOUNT,@pAY_DT
196

    
197
		WHILE @@FETCH_STATUS = 0
198
		BEGIN
199
			EXEC SYS_CodeMasters_Gen 'TR_CONTRACT_PAYMENT', @l_PAY_ID out
200
			IF @l_PAY_ID='' OR @l_PAY_ID IS NULL GOTO ABORT
201
			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])
202
			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))
203
			IF @@Error <> 0 GOTO ABORT
204
			FETCH NEXT FROM PaymentDetail INTO @pAY_PHASE,@EXPECTED_DT,@pERCENT,@AMOUNT,@pAYMENT_STATUS,@NOTES,@pAY_AMOUNT,@pAY_DT
205
		END
206
		CLOSE AssetDetail
207
		DEALLOCATE AssetDetail
208
		CLOSE PaymentDetail
209
		DEALLOCATE PaymentDetail
210

    
211
		--Insert into TABLE TR_REQUEST_DOC_FILE
212

    
213
		DECLARE @tableTrREQFile TABLE(
214
			TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
215
			IS_VIEW	bit,
216
			REQ_ID varchar(20),
217
			NOTES  nvarchar(200)
218
		)
219

    
220

    
221
		Declare @fdoc INT
222
		Exec sp_xml_preparedocument @fdoc Output,@p_ListTrREQFile
223

    
224
		INSERT INTO @tableTrREQFile
225
		SELECT *
226
		FROM OPENXML(@fDoc,'/Root/ListTrREQ',2)
227
		WITH 
228
		(
229
			TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
230
			IS_VIEW	bit,
231
			REQ_ID varchar(20),
232
			NOTES  nvarchar(200)
233
		)
234

    
235
		DECLARE ListTrREQFile  CURSOR FOR
236
		SELECT * FROM @tableTrREQFile
237
		OPEN ListTrREQFile
238

    
239
		Declare 
240
		@TR_REQUEST_DOC_FILE_ID	varchar(20)  ,
241
		@IS_VIEW	bit,
242
		@REQ_ID varchar(20),
243
		@_NOTES nvarchar(200)
244

    
245
		FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES
246
		WHILE @@FETCH_STATUS = 0	
247
		BEGIN
248
			DECLARE @l_REQFile_ID VARCHAR(15)
249
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_DOC_FILE', @l_REQFile_ID out
250
			--select @l_REQFile_ID
251
			--select * from TR_REQUEST_DOC_FILE where [TR_REQUEST_DOC_FILE_ID]= 'TRDF00000000523'
252
			IF @l_REQFile_ID='' OR @l_REQFile_ID IS NULL GOTO ABORT
253

    
254
			INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_CONTRACT')
255

    
256
			INSERT INTO dbo.TR_REQUEST_DOC_FILE
257
			(
258
			     [TR_REQUEST_DOC_FILE_ID]
259
				,[REQ_ID]
260
				,[NOTES]
261
			)	
262
			VALUES
263
			(   
264
				 @l_REQFile_ID
265
				,@l_CONTRACT_ID
266
				,@_NOTES
267
			)
268
			IF @@ERROR <> 0 GOTO ABORT
269
			FETCH NEXT FROM ListTrREQFile INTO @TR_REQUEST_DOC_FILE_ID,@IS_VIEW,@REQ_ID,@_NOTES
270
		END
271
		CLOSE ListTrREQFile
272
		DEALLOCATE ListTrREQFile
273
		IF @@Error <> 0 GOTO ABORT
274
		
275
		if(select count(*) from @TEMP) = 0
276
		begin
277
			INSERT INTO @TEMP([REF_ID],[TYPE]) VALUES (@l_REQFile_ID, 'TR_CONTRACT')
278
		end
279

    
280
		------------------BAODNQ 24/2/2022 INSERT lưu lịch sử xử lý------------------
281
		INSERT INTO dbo.PL_PROCESS
282
				(
283
					REQ_ID,
284
					PROCESS_ID,
285
					CHECKER_ID,
286
					APPROVE_DT,
287
					PROCESS_DESC,
288
					NOTES
289
				)
290
				VALUES
291
				(	@l_CONTRACT_ID,       
292
					'INSERT',
293
					@p_MAKER_ID,        
294
					GETDATE(), 
295
					N'Thêm mới thông tin hợp đồng thành công' ,      
296
					N'Thêm mới thông tin hợp đồng'       
297
				)
298

    
299

    
300
COMMIT TRANSACTION
301
SELECT '0' as Result, @l_CONTRACT_ID  CONTRACT_ID, @p_CONTRACT_CODE CONTRACT_CODE,
302
	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
303
RETURN '0'
304
ABORT:
305
BEGIN
306
		CLOSE AssetDetail
307
		DEALLOCATE AssetDetail
308
		CLOSE PaymentDetail
309
		DEALLOCATE PaymentDetail
310
		ROLLBACK TRANSACTION
311
		SELECT '-1' as Result, '' CONTRACT_ID, '' ErrorDesc
312
		RETURN '-1'
313
End