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
|