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