Project

General

Profile

TR_PO_MASTER_Upd.txt

Luc Tran Van, 12/01/2022 10:45 AM

 
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