1
|
|
2
|
ALTER PROCEDURE [dbo].[TR_PO_MASTER_Upd]
|
3
|
@p_PO_ID varchar(15) = NULL,
|
4
|
@P_PO_TYPE INT = NULL,
|
5
|
@p_PO_CODE varchar(15) = NULL,
|
6
|
@p_PO_NAME nvarchar(200) = NULL,
|
7
|
@p_CONTRACT_ID varchar(15) = NULL,
|
8
|
@p_SUP_ID varchar(15) = NULL,
|
9
|
@p_SUP_NAME nvarchar(200) = NULL,
|
10
|
@p_SUP_ADDR nvarchar(200) = NULL,
|
11
|
@p_INPUT_DT VARCHAR(20) = NULL,
|
12
|
@p_PAYMENT_DT VARCHAR(20) = NULL,
|
13
|
@p_TOTAL_AMT decimal(18) = NULL,
|
14
|
@p_REQ_DOC_ID varchar(15) = NULL,
|
15
|
@p_DELIVERY_DT VARCHAR(20) = NULL,
|
16
|
@p_PAYAPP_DT VARCHAR(20) = NULL,
|
17
|
@p_NOTES nvarchar(1000) = NULL,
|
18
|
@p_RECORD_STATUS varchar(1) = NULL,
|
19
|
@p_MAKER_ID varchar(15) = NULL,
|
20
|
@p_CREATE_DT VARCHAR(20) = NULL,
|
21
|
@p_AUTH_STATUS varchar(50) = NULL,
|
22
|
@p_CHECKER_ID varchar(15) = NULL,
|
23
|
@p_APPROVE_DT VARCHAR(20) = NULL,
|
24
|
@p_TR_REQ_ID VARCHAR(20) = NULL,
|
25
|
@p_TR_REQ_CODE VARCHAR(20)= NULL,
|
26
|
@P_LISTASSET XML = NULL,
|
27
|
@P_LISTPAYMENT XML = NULL,
|
28
|
@P_LISTROLE XML = NULL,
|
29
|
@p_BRANCH_ID varchar(15) = null,
|
30
|
@p_IS_CLOSED VARCHAR(1) = NULL,
|
31
|
-----------------------BAODNQ 2/3/2022 : Thêm tham số----------------------
|
32
|
@p_IS_SEND_APPR VARCHAR(1) = NULL,
|
33
|
@p_SEND_APPR_DT VARCHAR(20) = NULL
|
34
|
|
35
|
AS
|
36
|
|
37
|
IF(EXISTS(SELECT * FROM TR_PO_MASTER WHERE PO_ID = @p_PO_ID AND AUTH_STATUS = 'U'))
|
38
|
BEGIN
|
39
|
SELECT '-1' Result, @p_PO_ID AS PO_ID,
|
40
|
N'Không thể chỉnh sửa. PO ' +@p_PO_CODE+ N' đã được gửi yêu cầu phê duyệt' AS ErrorDesc
|
41
|
RETURN '-1'
|
42
|
END
|
43
|
|
44
|
DECLARE @REF_CODE VARCHAR(15) = NULL, @PDN_TT VARCHAR(15) = NULL
|
45
|
SET @REF_CODE =
|
46
|
( SELECT TOP 1 B.REQ_PAY_CODE
|
47
|
FROM TR_REQ_ADVANCE_DT A
|
48
|
INNER JOIN TR_REQ_ADVANCE_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID
|
49
|
WHERE A.REF_ID =@p_PO_ID AND (B.AUTH_STATUS_KT <>'A' OR B.AUTH_STATUS_KT IS NULL)
|
50
|
)
|
51
|
--- TIM KIEM XEM PO NAY CO DUOC PHEP THANH TOAN HAY KHONG
|
52
|
SET @PDN_TT =
|
53
|
( SELECT TOP 1 B.REQ_PAY_CODE
|
54
|
FROM TR_REQ_ADVANCE_DT A
|
55
|
INNER JOIN TR_REQ_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID
|
56
|
WHERE A.REF_ID =@p_CONTRACT_ID AND (B.AUTH_STATUS_KT <>'A' OR B.AUTH_STATUS_KT IS NULL)
|
57
|
)
|
58
|
IF(@p_IS_CLOSED ='Y' AND @REF_CODE IS NOT NULL)
|
59
|
BEGIN
|
60
|
--ROLLBACK TRANSACTION
|
61
|
SELECT '-1' Result, @p_PO_ID AS PO_ID, N'PO đang được thực hiện tạm ứng với số phiếu: '+@REF_CODE AS ErrorDesc
|
62
|
RETURN '-1'
|
63
|
END
|
64
|
IF(@p_IS_CLOSED ='Y' AND @PDN_TT IS NOT NULL)
|
65
|
BEGIN
|
66
|
--ROLLBACK TRANSACTION
|
67
|
SELECT '-1' Result, @p_PO_ID AS PO_ID, N'PO đang được thực hiện thanh toán với số phiếu: '+@PDN_TT AS ErrorDesc
|
68
|
RETURN '-1'
|
69
|
END
|
70
|
IF EXISTS(SELECT * FROM TR_PO_MASTER WHERE [PO_CODE] = @p_PO_CODE AND [PO_ID] <> @p_PO_ID)
|
71
|
BEGIN
|
72
|
SELECT ErrorCode Result, '' PO_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = 'PO-00002'
|
73
|
RETURN '0'
|
74
|
END
|
75
|
--- 21052020 KIEM TRA XEM NEU PYCMS DA TON TAI HAY CHUA
|
76
|
IF((SELECT COUNT(*) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID =@p_REQ_DOC_ID)=1)
|
77
|
BEGIN
|
78
|
IF(EXISTS(SELECT * FROM TR_PO_MASTER WHERE REQ_DOC_ID =@p_REQ_DOC_ID AND AUTH_STATUS IN ('E','U','A') AND PO_ID <>@p_PO_ID))
|
79
|
BEGIN
|
80
|
--ROLLBACK TRANSACTION
|
81
|
SELECT '-1' Result, @p_PO_ID AS PO_ID, N'Phiếu yêu cầu mua sắm số :'+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_DOC_ID)+
|
82
|
N' đã được link tới PO có số: '+(SELECT TOP 1 PO_CODE FROM TR_PO_MASTER WHERE REQ_DOC_ID =@p_REQ_DOC_ID AND PO_ID <> @p_PO_ID) AS ErrorDesc
|
83
|
RETURN '-1'
|
84
|
END
|
85
|
END
|
86
|
------
|
87
|
Declare @hdoc INT
|
88
|
Exec sp_xml_preparedocument @hdoc Output,@P_LISTASSET
|
89
|
DECLARE AssetDetail CURSOR FOR
|
90
|
SELECT *
|
91
|
FROM OPENXML(@hDoc,'/Root/AssetDetail',2)
|
92
|
WITH
|
93
|
(
|
94
|
PD_ID VARCHAR(15),
|
95
|
PLAN_ID varchar(15) ,
|
96
|
TRADE_ID varchar(15) ,
|
97
|
REQ_DT_ID VARCHAR(15),
|
98
|
GOODS_ID varchar(15) ,
|
99
|
[DESCRIPTION] nvarchar(500),
|
100
|
UNIT_ID varchar(15) ,
|
101
|
QUANTITY decimal(18) ,
|
102
|
PRICE decimal(18,2) ,
|
103
|
TOTAL_AMT decimal(18,2),
|
104
|
IS_DELIVERY varchar(1) ,
|
105
|
DELIVERY_DT VARCHAR(20),
|
106
|
PAYMENT_STATUS varchar(4),
|
107
|
AMOUNT_PAID decimal(18) ,
|
108
|
PAID_DT VARCHAR(20) ,
|
109
|
INVOICENO varchar(1000),
|
110
|
NOTES nvarchar(1000),
|
111
|
RECEIVE_BRANCH varchar(15),
|
112
|
RECEIVE_ADDR nvarchar(1000),
|
113
|
RECEIVE_PERSON nvarchar(500),
|
114
|
RECEIVE_TEL varchar(100),
|
115
|
EXP_DELIVERY_DT varchar(20),
|
116
|
GOODS_NAME NVARCHAR(500),
|
117
|
INVOICE_DT VARCHAR(20),
|
118
|
--THIEUVQ 100415 THEM LOAI HANG HOA THUC TE
|
119
|
GOODSTYPE_REAL VARCHAR(15),
|
120
|
GOODSTYPE_REAL_NAME VARCHAR(15),
|
121
|
--THIEUVQ 13092016 THEM VAT, CONTRACT_DT
|
122
|
VAT DECIMAL(18,2),
|
123
|
PRICE_VAT DECIMAL(18,0),
|
124
|
CONTRACT_DT VARCHAR(15),
|
125
|
CURRENCY VARCHAR(15),
|
126
|
RATE INT,
|
127
|
TOTAL_AMT_FN DECIMAL(18,2)
|
128
|
)
|
129
|
OPEN AssetDetail
|
130
|
|
131
|
Exec sp_xml_preparedocument @hdoc Output,@P_LISTPAYMENT
|
132
|
DECLARE PaymentDetail CURSOR FOR
|
133
|
SELECT *
|
134
|
FROM OPENXML(@hDoc,'/Root/PaymentDetail',2)
|
135
|
WITH
|
136
|
(
|
137
|
PAY_ID VARCHAR(15),
|
138
|
PAY_PHASE varchar(15),
|
139
|
EXPECTED_DT VARCHAR(20),
|
140
|
[PERCENT] decimal(18,2),
|
141
|
[AMOUNT] decimal(18,2),
|
142
|
NOTES nvarchar(1000),
|
143
|
CURRENCY VARCHAR(15),
|
144
|
RATE INT,
|
145
|
TOTAL_AMT DECIMAL(18,2)
|
146
|
)
|
147
|
OPEN PaymentDetail
|
148
|
PRINT 'PASS KHOI TAO'
|
149
|
|
150
|
--Nhom user gui mail (DAO EDIT)
|
151
|
Exec sp_xml_preparedocument @hdoc Output,@P_LISTROLE
|
152
|
DECLARE LISTROLE CURSOR FOR
|
153
|
SELECT *
|
154
|
FROM OPENXML(@hDoc,'/Root/LISTROLE',2)
|
155
|
WITH
|
156
|
(
|
157
|
NOTIFI_ID VARCHAR(15),
|
158
|
TL_NAME varchar(15),
|
159
|
EDITOR_DT VARCHAR(20),
|
160
|
EDITOR_ID VARCHAR(15),
|
161
|
NOTES nvarchar(1000)
|
162
|
)
|
163
|
OPEN LISTROLE
|
164
|
|
165
|
BEGIN TRANSACTION
|
166
|
IF @p_DELIVERY_DT = ''
|
167
|
SET @p_DELIVERY_DT = NULL
|
168
|
IF @p_PAYAPP_DT = ''
|
169
|
SET @p_PAYAPP_DT = NULL
|
170
|
--insert master
|
171
|
UPDATE TR_PO_MASTER SET [PO_TYPE] = @P_PO_TYPE, [PO_CODE] = @p_PO_CODE,[PO_NAME] = @p_PO_NAME,
|
172
|
[CONTRACT_ID] = @p_CONTRACT_ID,[SUP_ID] = @p_SUP_ID,[SUP_NAME] = @p_SUP_NAME,[SUP_ADDR] = @p_SUP_ADDR,
|
173
|
[INPUT_DT] = CONVERT(DATETIME, @p_INPUT_DT, 103),[PAYMENT_DT] = CONVERT(DATETIME, @p_PAYMENT_DT, 103),
|
174
|
[TOTAL_AMT] = @p_TOTAL_AMT,[REQ_DOC_ID] = @p_TR_REQ_ID,[DELIVERY_DT] = CONVERT(DATETIME, @p_DELIVERY_DT, 103),
|
175
|
[PAYAPP_DT] = CONVERT(DATETIME, @p_PAYAPP_DT, 103),[NOTES] = @p_NOTES,[RECORD_STATUS] = '1',
|
176
|
[MAKER_ID] = @p_MAKER_ID,[CREATE_DT] = CONVERT(DATETIME, @p_CREATE_DT, 103),[AUTH_STATUS] = 'E',
|
177
|
[CHECKER_ID] = @p_CHECKER_ID,[APPROVE_DT] = CONVERT(DATETIME, @p_APPROVE_DT, 103), BRANCH_ID = @p_BRANCH_ID,
|
178
|
-----------------------BAODNQ 2/3/2022 : Thêm cột IS_SEND_APPR, SEND_APPR_DT----------------------
|
179
|
[IS_SEND_APPR] = @p_IS_SEND_APPR,
|
180
|
[SEND_APPR_DT] = CONVERT(DATETIME, @p_SEND_APPR_DT, 103),
|
181
|
IS_CLOSED = @p_IS_CLOSED
|
182
|
WHERE PO_ID= @p_PO_ID
|
183
|
IF @@Error <> 0 GOTO ABORT
|
184
|
PRINT 'INSERT MASTER SUCCESS'
|
185
|
UPDATE dbo.TR_PO_MASTER_TEMP SET TR_REQ_ID=@p_TR_REQ_ID,TR_REQ_CODE=@p_TR_REQ_CODE WHERE PO_ID=@p_PO_ID
|
186
|
|
187
|
--insert asset detail tương đương như NỘI DUNG trong bảng contract detail
|
188
|
Declare
|
189
|
@PAY_ID VARCHAR(15),
|
190
|
@PD_ID VARCHAR(15),
|
191
|
@PLAN_ID varchar(15),
|
192
|
@TRADE_ID varchar(15),
|
193
|
@REQ_DT_ID VARCHAR(15),
|
194
|
@GOODS_ID varchar(15),
|
195
|
@DESCRIPTION nvarchar(500),
|
196
|
@UNIT_ID varchar(15),
|
197
|
@QUANTITY decimal(18),
|
198
|
@PRICE decimal(18,2),
|
199
|
@TOTAL_AMT decimal(18,2),
|
200
|
@IS_DELIVERY varchar(1),
|
201
|
@DELIVERY_DT VARCHAR(20),
|
202
|
@PAYMENT_STATUS varchar(4),
|
203
|
@AMOUNT_PAID decimal(18),
|
204
|
@PAID_DT VARCHAR(20),
|
205
|
@INVOICENO varchar(20),
|
206
|
@NOTES nvarchar(1000),
|
207
|
@PO_ID varchar(15) = NULL,
|
208
|
@PAY_PHASE VARCHAR(20) = NULL,
|
209
|
@EXPECTED_DT VARCHAR(20) = NULL,
|
210
|
@PERCENT decimal(18,2) = NULL,
|
211
|
@AMOUNT decimal(18,2) = NULL,
|
212
|
@RECEIVE_BRANCH varchar(15)=NULL,
|
213
|
@RECEIVE_ADDR nvarchar(1000)=NULL,
|
214
|
@RECEIVE_PERSON nvarchar(500)=NULL,
|
215
|
@RECEIVE_TEL varchar(100)=NULL,
|
216
|
@EXP_DELIVERY_DT varchar(20) = NULL,
|
217
|
@GOODS_NAME NVARCHAR(500) = NULL,
|
218
|
@INVOICE_DT VARCHAR(20),
|
219
|
@GOODSTYPE_REAL VARCHAR(15) = NULL,
|
220
|
@GOODSTYPE_REAL_NAME VARCHAR(15) = NULL,
|
221
|
@VAT DECIMAL(18,2),
|
222
|
@PRICE_VAT DECIMAL(18,0),
|
223
|
@CONTRACT_DT VARCHAR(15),
|
224
|
--DAO MOI THEM
|
225
|
@NOTIFI_ID VARCHAR(15),
|
226
|
@TL_NAME VARCHAR(15),
|
227
|
@EDITOR_DT VARCHAR(20),
|
228
|
@EDITOR_ID VARCHAR(15),
|
229
|
@NOTES_ROLE nvarchar(1000),
|
230
|
|
231
|
@CURRENCY VARCHAR(15),
|
232
|
@RATE INT,
|
233
|
@TOTAL_AMT_FN DECIMAL(18,2)
|
234
|
|
235
|
DECLARE @l_GOODSTYPE_ID VARCHAR(15)
|
236
|
|
237
|
DELETE FROM TR_PO_DETAIL WHERE PO_ID = @P_PO_ID
|
238
|
|
239
|
FETCH NEXT FROM AssetDetail INTO @PD_ID,@PLAN_ID,@TRADE_ID,@REQ_DT_ID,@GOODS_ID,@DESCRIPTION,@UNIT_ID,@QUANTITY,
|
240
|
@PRICE,@TOTAL_AMT,@IS_DELIVERY,@DELIVERY_DT,@PAYMENT_STATUS,@AMOUNT_PAID,@PAID_DT,
|
241
|
@INVOICENO,@NOTES, @RECEIVE_BRANCH, @RECEIVE_ADDR, @RECEIVE_PERSON, @RECEIVE_TEL,@EXP_DELIVERY_DT,@GOODS_NAME, @INVOICE_DT,
|
242
|
@GOODSTYPE_REAL,@GOODSTYPE_REAL_NAME,@VAT,@PRICE_VAT,@CONTRACT_DT,@CURRENCY,@RATE,@TOTAL_AMT_FN
|
243
|
WHILE @@FETCH_STATUS = 0
|
244
|
BEGIN
|
245
|
--if( NOT EXISTS (SELECT * FROM PL_MASTER A WHERE A.PLAN_ID = @PLAN_ID))
|
246
|
--BEGIN
|
247
|
-- SELECT ErrorCode Result, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = 'TR-00002'
|
248
|
-- GOTO ABORT
|
249
|
--END
|
250
|
|
251
|
IF(LEN(@PD_ID) = 0)
|
252
|
|
253
|
BEGIN
|
254
|
EXEC SYS_CodeMasters_Gen 'TR_PO_DETAIL', @PD_ID out
|
255
|
IF @PD_ID ='' OR @PD_ID IS NULL GOTO ABORT
|
256
|
END
|
257
|
|
258
|
IF(@DELIVERY_DT = '')
|
259
|
SET @DELIVERY_DT = NULL
|
260
|
IF(@PAID_DT = '')
|
261
|
SET @PAID_DT = NULL
|
262
|
IF(@INVOICE_DT = '')
|
263
|
SET @INVOICE_DT = NULL
|
264
|
IF @EXP_DELIVERY_DT = '' SET @EXP_DELIVERY_DT = NULL
|
265
|
|
266
|
/***THIEUVQ THEM KIEM TRA VA LUU THONG TIN LOAI HANG HOA THUC TE***/
|
267
|
--BEGIN
|
268
|
--CHUA CO LOAI HANG HOA THI THEM MOI
|
269
|
IF @GOODSTYPE_REAL IS NULL OR @GOODSTYPE_REAL = ''
|
270
|
BEGIN
|
271
|
--NEU TON TAI THI LAY RA ID
|
272
|
SET @GOODSTYPE_REAL = (SELECT TOP 1 GD_RETYPE_ID FROM CM_GOODSTYPE_REAL WHERE [TYPE_NAME] = @GOODSTYPE_REAL_NAME)
|
273
|
--NEU CHUA CO THI THEM MOI
|
274
|
IF @GOODSTYPE_REAL IS NULL OR @GOODSTYPE_REAL = ''
|
275
|
BEGIN
|
276
|
EXEC SYS_CodeMasters_Gen 'CM_GOODSTYPE_REAL', @l_GOODSTYPE_ID OUT
|
277
|
IF @l_GOODSTYPE_ID='' OR @l_GOODSTYPE_ID IS NULL GOTO ABORT
|
278
|
|
279
|
INSERT INTO CM_GOODSTYPE_REAL VALUES (@l_GOODSTYPE_ID, @l_GOODSTYPE_ID, @GOODSTYPE_REAL_NAME, '', '1',
|
280
|
@p_MAKER_ID,CONVERT(DATETIME, @p_CREATE_DT, 103),'A',@p_MAKER_ID,CONVERT(DATETIME, @p_CREATE_DT, 103))
|
281
|
IF @@ERROR <> 0 GOTO ABORT
|
282
|
|
283
|
SET @GOODSTYPE_REAL = @l_GOODSTYPE_ID
|
284
|
END
|
285
|
END
|
286
|
--END
|
287
|
|
288
|
INSERT INTO TR_PO_DETAIL([PD_ID],[PO_ID],[PLAN_ID],[TRADE_ID],[REQ_DT_ID],[GOODS_ID],[DESCRIPTION],[UNIT_ID],[QUANTITY],[PRICE],[TOTAL_AMT],[IS_DELIVERY],[DELIVERY_DT],
|
289
|
[PAYMENT_STATUS],[AMOUNT_PAID],[PAID_DT],[INVOICENO],[NOTES], RECEIVE_BRANCH, RECEIVE_ADDR, RECEIVE_PERSON, RECEIVE_TEL,[RECORD_STATUS],[MAKER_ID],[CREATE_DT],
|
290
|
[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],EXP_DELIVERY_DT,GOODS_NAME,INVOICE_DT,GOODSTYPE_REAL,VAT,PRICE_VAT,CONTRACT_DT,CURRENCY,RATE,TOTAL_AMT_FN)
|
291
|
VALUES(@PD_ID ,@p_PO_ID ,@PLAN_ID ,@TRADE_ID,@REQ_DT_ID ,@GOODS_ID,@DESCRIPTION ,@UNIT_ID ,@QUANTITY ,@PRICE ,@TOTAL_AMT ,
|
292
|
@IS_DELIVERY ,CONVERT(DATETIME, @DELIVERY_DT, 103) ,@PAYMENT_STATUS ,@AMOUNT_PAID ,
|
293
|
CONVERT(DATETIME, @PAID_DT, 103) ,@INVOICENO ,@NOTES , @RECEIVE_BRANCH, @RECEIVE_ADDR, @RECEIVE_PERSON, @RECEIVE_TEL,
|
294
|
@p_RECORD_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_AUTH_STATUS ,@p_CHECKER_ID ,CONVERT(DATETIME, @p_APPROVE_DT, 103),CONVERT(DATETIME, @EXP_DELIVERY_DT, 103),
|
295
|
@GOODS_NAME, CONVERT(DATETIME, @INVOICE_DT, 103),@GOODSTYPE_REAL,@VAT,@PRICE_VAT,@CONTRACT_DT,ISNULL(@CURRENCY,'VND'),ISNULL(@RATE,1) ,@TOTAL_AMT*ISNULL(@RATE,1) )
|
296
|
IF @@ERROR <> 0 GOTO ABORT
|
297
|
|
298
|
-- next Group_Id
|
299
|
FETCH NEXT FROM AssetDetail INTO @PD_ID,@PLAN_ID,@TRADE_ID,@REQ_DT_ID,@GOODS_ID,@DESCRIPTION,@UNIT_ID,@QUANTITY,
|
300
|
@PRICE,@TOTAL_AMT,@IS_DELIVERY,@DELIVERY_DT,@PAYMENT_STATUS,@AMOUNT_PAID,@PAID_DT,
|
301
|
@INVOICENO,@NOTES, @RECEIVE_BRANCH, @RECEIVE_ADDR, @RECEIVE_PERSON, @RECEIVE_TEL, @EXP_DELIVERY_DT,@GOODS_NAME,@INVOICE_DT,
|
302
|
@GOODSTYPE_REAL,@GOODSTYPE_REAL_NAME,@VAT,@PRICE_VAT,@CONTRACT_DT,@CURRENCY,@RATE,@TOTAL_AMT_FN
|
303
|
END
|
304
|
|
305
|
--insert payment detail
|
306
|
|
307
|
DELETE FROM TR_PO_PAYMENT WHERE PO_ID = @p_PO_ID
|
308
|
|
309
|
FETCH NEXT FROM PaymentDetail INTO @PAY_ID,@PAY_PHASE,@EXPECTED_DT,@PERCENT,@AMOUNT,@NOTES,@CURRENCY,@RATE,@TOTAL_AMT_FN
|
310
|
WHILE @@FETCH_STATUS = 0
|
311
|
BEGIN
|
312
|
--EXEC SYS_CodeMasters_Gen 'TR_PO_PAYMENT', @PAY_ID out
|
313
|
--IF @PAY_ID ='' OR @PAY_ID IS NULL GOTO ABORT
|
314
|
--PRINT @PAY_ID
|
315
|
IF(LEN(@PAY_ID) = 0 OR @PAY_ID IS NULL OR @PAY_ID = '')
|
316
|
BEGIN
|
317
|
EXEC SYS_CodeMasters_Gen 'TR_PO_PAYMENT', @PAY_ID out
|
318
|
IF @PAY_ID ='' OR @PAY_ID IS NULL GOTO ABORT
|
319
|
END
|
320
|
IF @EXPECTED_DT = ''
|
321
|
SET @EXPECTED_DT = NULL
|
322
|
--INSERT INTO TR_PO_PAYMENT([PAY_ID],[PO_ID],[PAY_PHASE],[EXP_DT],[PERCENT],[AMOUNT],[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],CURRENCY,RATE,TOTAL_AMT)
|
323
|
--VALUES(@PAY_ID ,@p_PO_ID ,@PAY_PHASE ,CONVERT(DATETIME, @EXPECTED_DT, 103) ,@PERCENT ,@AMOUNT,@NOTES ,@p_RECORD_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_AUTH_STATUS ,@p_CHECKER_ID ,CONVERT(DATETIME, @p_APPROVE_DT, 103),ISNULL(@CURRENCY,'VND'),ISNULL(@RATE,1) ,@AMOUNT*ISNULL(@RATE,1))
|
324
|
|
325
|
-------------BAODNQ 15/9/2022: Fix lại theo BVB_v2_PROD-----------
|
326
|
-------------Nếu @PAY_ID ko tồn tại trong TR_PO_PAYMENT, INSERT mới---------
|
327
|
IF(NOT EXISTS(SELECT * FROM TR_PO_PAYMENT WHERE PAY_ID = @PAY_ID))
|
328
|
BEGIN
|
329
|
INSERT INTO TR_PO_PAYMENT([PAY_ID],[PO_ID],[PAY_PHASE],[EXP_DT],[PERCENT],[AMOUNT],[NOTES],
|
330
|
[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],
|
331
|
CURRENCY,RATE,TOTAL_AMT)
|
332
|
VALUES(@PAY_ID ,@p_PO_ID ,@PAY_PHASE ,CONVERT(DATETIME, @EXPECTED_DT, 103) ,@PERCENT ,
|
333
|
@AMOUNT,@NOTES ,@p_RECORD_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,
|
334
|
@p_AUTH_STATUS ,@p_CHECKER_ID ,CONVERT(DATETIME, @p_APPROVE_DT, 103),
|
335
|
ISNULL(@CURRENCY,'VND'),ISNULL(@RATE,1) ,@AMOUNT*ISNULL(@RATE,1))
|
336
|
END
|
337
|
ELSE
|
338
|
-------------Nếu @PAY_ID đã tồn tại trong TR_PO_PAYMENT, UPDATE---------
|
339
|
BEGIN
|
340
|
UPDATE TR_PO_PAYMENT SET
|
341
|
PO_ID =@p_PO_ID,
|
342
|
PAY_PHASE =@PAY_PHASE,
|
343
|
EXP_DT =CONVERT(DATETIME, @EXPECTED_DT, 103),
|
344
|
[PERCENT] =@PERCENT,
|
345
|
AMOUNT =@TOTAL_AMT_FN / ISNULL(@RATE,1),
|
346
|
RECORD_STATUS =1,
|
347
|
AUTH_STATUS ='A',
|
348
|
CURRENCY =ISNULL(@CURRENCY,'VND'),
|
349
|
RATE =ISNULL(@RATE,1) ,
|
350
|
TOTAL_AMT =@AMOUNT*ISNULL(@RATE,1),
|
351
|
NOTES =@NOTES,
|
352
|
MAKER_ID =@p_MAKER_ID,
|
353
|
CREATE_DT =CONVERT(DATETIME, @p_CREATE_DT, 103)
|
354
|
WHERE PAY_ID =@PAY_ID --- XU LY TRONG TRUONG HOP TRUNG KEY THI CAP NHAT KY THANH TOAN 202297
|
355
|
END
|
356
|
|
357
|
|
358
|
UPDATE TR_PO_PAYMENT SET TOTAL_AMT = AMOUNT* ISNULL(RATE, 1) WHERE PAY_ID =@PAY_ID
|
359
|
FETCH NEXT FROM PaymentDetail INTO @PAY_ID,@PAY_PHASE,@EXPECTED_DT,@PERCENT,@AMOUNT,@NOTES,@CURRENCY,@RATE,@TOTAL_AMT_FN
|
360
|
END
|
361
|
|
362
|
CLOSE AssetDetail
|
363
|
DEALLOCATE AssetDetail
|
364
|
CLOSE PaymentDetail
|
365
|
DEALLOCATE PaymentDetail
|
366
|
|
367
|
---INSERT NHOM QUYEN USER THONG BAO (DAO-EDIT)
|
368
|
DELETE FROM TL_ROLE_NOTIFICATION WHERE PO_ID=@p_PO_ID
|
369
|
|
370
|
FETCH NEXT FROM LISTROLE INTO
|
371
|
@NOTIFI_ID,
|
372
|
@TL_NAME,
|
373
|
@EDITOR_DT,
|
374
|
@EDITOR_ID,
|
375
|
@NOTES_ROLE
|
376
|
WHILE @@FETCH_STATUS = 0
|
377
|
BEGIN
|
378
|
IF(LEN(@NOTIFI_ID)=0)
|
379
|
EXEC SYS_CodeMasters_Gen 'TL_ROLE_NOTIFICATION', @NOTIFI_ID out
|
380
|
IF @NOTIFI_ID='' OR @NOTIFI_ID IS NULL GOTO ABORT
|
381
|
|
382
|
INSERT INTO [dbo].[TL_ROLE_NOTIFICATION]
|
383
|
([NOTIFI_ID]
|
384
|
,[NOTIFI_CODE]
|
385
|
,[NOTIFI_NAME]
|
386
|
,[TYPE]
|
387
|
,[PO_ID]
|
388
|
,[TL_NAME]
|
389
|
,[BRANCH_ID]
|
390
|
,[RECORD_STATUS]
|
391
|
,[AUTH_STATUS]
|
392
|
,[EDITOR_ID]
|
393
|
,[EDIT_DT]
|
394
|
,[NOTES])
|
395
|
VALUES
|
396
|
(@NOTIFI_ID
|
397
|
,''
|
398
|
,''
|
399
|
,'PO'
|
400
|
,@p_PO_ID
|
401
|
,@TL_NAME
|
402
|
,@p_BRANCH_ID
|
403
|
,'1'
|
404
|
,'U'
|
405
|
,@EDITOR_ID
|
406
|
,CONVERT(DATETIME, @EDITOR_DT, 103)
|
407
|
,@NOTES_ROLE)
|
408
|
|
409
|
IF @@ERROR <> 0 GOTO ABORT
|
410
|
|
411
|
FETCH NEXT FROM LISTROLE INTO
|
412
|
@NOTIFI_ID,
|
413
|
@TL_NAME,
|
414
|
@EDITOR_DT,
|
415
|
@EDITOR_ID,
|
416
|
@NOTES_ROLE
|
417
|
END
|
418
|
|
419
|
CLOSE LISTROLE
|
420
|
DEALLOCATE LISTROLE
|
421
|
--- BAT DAU CAP NHAT AUTH_STATUS ='U' NEU BAM GUI PHE DUYET
|
422
|
IF(@p_RECORD_STATUS ='U')
|
423
|
BEGIN
|
424
|
UPDATE TR_PO_MASTER SET AUTH_STATUS ='U' WHERE PO_ID =@p_PO_ID
|
425
|
END
|
426
|
|
427
|
------------------------BAODNQ 1/3/2022: Insert lưu lịch sử xử lý----------------
|
428
|
INSERT INTO dbo.PL_PROCESS
|
429
|
(
|
430
|
REQ_ID,
|
431
|
PROCESS_ID,
|
432
|
CHECKER_ID,
|
433
|
APPROVE_DT,
|
434
|
PROCESS_DESC,
|
435
|
NOTES
|
436
|
)
|
437
|
VALUES
|
438
|
( @p_PO_ID, -- REQ_ID - varchar(15)
|
439
|
'UPDATE', -- PROCESS_ID - varchar(10)
|
440
|
@p_MAKER_ID, -- CHECKER_ID - varchar(15)
|
441
|
GETDATE(), -- APPROVE_DT - datetime
|
442
|
N'Cập nhật phiếu gọi hàng thành công' ,
|
443
|
N'Cập nhật phiếu gọi hàng' -- PROCESS_DESC - nvarchar(1000)
|
444
|
)
|
445
|
|
446
|
COMMIT TRANSACTION
|
447
|
IF(@p_RECORD_STATUS ='U')
|
448
|
BEGIN
|
449
|
|
450
|
IF(NOT EXISTS(SELECT * FROM TR_PO_DETAIL WHERE PO_ID =@p_PO_ID))
|
451
|
BEGIN
|
452
|
SELECT '-1' as Result, @p_PO_ID PO_ID, N'PO số: '+ @p_PO_CODE +N' Vui lòng nhập thông tin hàng hóa gọi hàng' ErrorDesc
|
453
|
RETURN '-1'
|
454
|
END
|
455
|
IF(NOT EXISTS(SELECT * FROM TR_PO_PAYMENT WHERE PO_ID =@p_PO_ID))
|
456
|
BEGIN
|
457
|
SELECT '-1' as Result, @p_PO_ID PO_ID, N'PO số: '+ @p_PO_CODE +N' Vui lòng nhập thông tin lịch thanh toán' ErrorDesc
|
458
|
RETURN '-1'
|
459
|
END
|
460
|
-- INSERT VAO LOG
|
461
|
INSERT INTO dbo.PL_PROCESS
|
462
|
(
|
463
|
REQ_ID,
|
464
|
PROCESS_ID,
|
465
|
CHECKER_ID,
|
466
|
APPROVE_DT,
|
467
|
PROCESS_DESC,NOTES
|
468
|
)
|
469
|
VALUES
|
470
|
( @p_PO_ID, -- REQ_ID - varchar(15)
|
471
|
'SEND', -- PROCESS_ID - varchar(10)
|
472
|
@p_MAKER_ID, -- CHECKER_ID - varchar(15)
|
473
|
GETDATE(), -- APPROVE_DT - datetime
|
474
|
N'Nhân viên gửi phê duyệt phiếu thành công' ,N'Gửi phê duyệt')
|
475
|
SELECT '2' as Result, @p_PO_ID PO_ID, N'PO số: '+ @p_PO_CODE +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
|
476
|
RETURN '2'
|
477
|
|
478
|
END
|
479
|
ELSE
|
480
|
BEGIN
|
481
|
SELECT '0' as Result, @p_PO_ID PO_ID, N'PO số: '+ @p_PO_CODE +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
|
482
|
RETURN '0'
|
483
|
END
|
484
|
ABORT:
|
485
|
BEGIN
|
486
|
CLOSE AssetDetail
|
487
|
DEALLOCATE AssetDetail
|
488
|
CLOSE PaymentDetail
|
489
|
DEALLOCATE PaymentDetail
|
490
|
CLOSE LISTROLE
|
491
|
DEALLOCATE LISTROLE
|
492
|
ROLLBACK TRANSACTION
|
493
|
SELECT '-1' AS RESULT
|
494
|
RETURN '-1'
|
495
|
End
|
496
|
|
497
|
|
498
|
--SELECT * FROM TR_CONTRACT_DT
|
499
|
|
500
|
--SELECT * FROM TR_CONTRACT_PAYMENT
|
501
|
|
502
|
--SELECT * FROM TR_CONTRACT
|