Project

General

Profile

UP_PO.txt

Truong Nguyen Vu, 08/16/2020 03:20 PM

 
1
USE [gAMSPro_VietcapitalBank_v2]
2
GO
3
/****** Object:  StoredProcedure [dbo].[TR_PO_MASTER_Upd]    Script Date: 16-Aug-20 15:10:14 ******/
4
SET ANSI_NULLS ON
5
GO
6
SET QUOTED_IDENTIFIER ON
7
GO
8
/*
9
SELECT * FROM TR_PO_DETAIL where PO_ID = 'TRPM00000000052'
10
SELECT * FROM TR_PO_MASTER WHERE PO_ID = 'TRPM00000000052'
11
SELECT * FROM TR_PO_PAYMENT WHERE PO_ID = 'TRPM00000000052'
12
SELECT * FROM TR_PO_PAYMENT
13
[TR_PO_MASTER_Upd] 'TRPM00000000052',1,'','MUA HANG DOT 1','','','','','11/11/2013','11/11/2013',0,'','12/12/2013','12/12/2013','','','','','','','',
14
'<Root xmlns="">
15
  <AssetDetail>
16
	<PD_ID>TRPD00000000156</PD_ID>
17
	<TRADE_ID>PLT0000001</TRADE_ID>
18
	<GOODS_ID>CMG00001</GOODS_ID>
19
	<DESCRIPTION>Dien giai</DESCRIPTION>
20
    <UNIT_ID>CMU00001</UNIT_ID>
21
    <QUANTITY>2</QUANTITY>
22
    <PRICE>49500000</PRICE>
23
	<TOTAL_AMT>49500000</TOTAL_AMT>
24
	<IS_DELIVERY>N</IS_DELIVERY>
25
	<DELIVERY_DT>30/10/2011</DELIVERY_DT>
26
	<PAYMENT_STATUS>N</PAYMENT_STATUS>
27
	<AMOUNT_PAID>30000000</AMOUNT_PAID>
28
	<PAID_DT>29/11/2013</PAID_DT>
29
	<INVOICENO>00001</INVOICENO>
30
    <NOTES>GHI CHU MANG TINH CHAT MINH HOA</NOTES>
31
  </AssetDetail>
32
</Root>'
33
,NULL
34

    
35
*/
36
/*
37
declare @p24 xml
38
set @p24=convert(xml,N'<Root xmlns=""><AssetDetail><PD_ID>TRPD00000000325</PD_ID><PLAN_ID>PLM000000000144</PLAN_ID><TRADE_ID>PLT000000000030</TRADE_ID><GOODS_ID>GOO000000000185</GOODS_ID><UNIT_ID>CMU000000000150</UNIT_ID><QUANTITY>1</QUANTITY><PRICE>2700000</PRICE><TOTAL_AMT>2700000</TOTAL_AMT><IS_DELIVERY>0</IS_DELIVERY><DELIVERY_DT>01/01/2014</DELIVERY_DT><PAYMENT_STATUS>CTT</PAYMENT_STATUS><AMOUNT_PAID>0</AMOUNT_PAID><PAID_DT>01/01/2014</PAID_DT><INVOICENO/><NOTES/></AssetDetail><AssetDetail><PD_ID>TRPD00000000326</PD_ID><PLAN_ID>PLM000000000144</PLAN_ID><TRADE_ID>PLT000000000031</TRADE_ID><GOODS_ID>GOO000000000186</GOODS_ID><UNIT_ID>CMU000000000150</UNIT_ID><QUANTITY>1</QUANTITY><PRICE>1600000</PRICE><TOTAL_AMT>1600000</TOTAL_AMT><IS_DELIVERY>0</IS_DELIVERY><DELIVERY_DT>02/01/2014</DELIVERY_DT><PAYMENT_STATUS>CTT</PAYMENT_STATUS><AMOUNT_PAID>0</AMOUNT_PAID><PAID_DT>02/01/1900</PAID_DT><INVOICENO/><NOTES/></AssetDetail><AssetDetail><PD_ID>TRPD00000000327</PD_ID><PLAN_ID>PLM000000000144</PLAN_ID><TRADE_ID>PLT000000000033</TRADE_ID><GOODS_ID>GOO000000000188</GOODS_ID><UNIT_ID>CMU000000000150</UNIT_ID><QUANTITY>1</QUANTITY><PRICE>1500000</PRICE><TOTAL_AMT>1500000</TOTAL_AMT><IS_DELIVERY>0</IS_DELIVERY><DELIVERY_DT>04/01/2014</DELIVERY_DT><PAYMENT_STATUS>CTT</PAYMENT_STATUS><AMOUNT_PAID>0</AMOUNT_PAID><PAID_DT>03/01/1900</PAID_DT><INVOICENO/><NOTES/></AssetDetail><AssetDetail><PD_ID>TRPD00000000328</PD_ID><PLAN_ID>PLM000000000144</PLAN_ID><TRADE_ID>PLT000000000035</TRADE_ID><GOODS_ID>GOO000000000190</GOODS_ID><UNIT_ID>CMU000000000150</UNIT_ID><QUANTITY>1</QUANTITY><PRICE>2500000</PRICE><TOTAL_AMT>2500000</TOTAL_AMT><IS_DELIVERY>0</IS_DELIVERY><DELIVERY_DT>05/01/2014</DELIVERY_DT><PAYMENT_STATUS>CTT</PAYMENT_STATUS><AMOUNT_PAID>0</AMOUNT_PAID><PAID_DT>05/01/1900</PAID_DT><INVOICENO/><NOTES/></AssetDetail></Root>')
39
declare @p25 xml
40
set @p25=convert(xml,N'<Root xmlns=""><PaymentDetail><PAY_ID></PAY_ID><PAY_PHASE>1</PAY_PHASE><EXPECTED_DT>18/10/2013</EXPECTED_DT><PERCENT>100</PERCENT><AMOUNT>8300000</AMOUNT><NOTES/></PaymentDetail></Root>')
41
declare @p26 int
42
set @p26=0
43
exec sp_executesql N'EXEC @RETURN_VALUE = [dbo].[TR_PO_MASTER_Upd] @p_PO_ID = @p0, @P_PO_TYPE = @p1, @p_PO_CODE = @p2, @p_PO_NAME = @p3, @p_CONTRACT_ID = @p4, @p_SUP_ID = @p5, @p_SUP_NAME = @p6, @p_SUP_ADDR = @p7, @p_INPUT_DT = @p8, @p_PAYMENT_DT = @p9, @p_TOTAL_AMT = @p10, @p_REQ_DOC_ID = @p11, @p_DELIVERY_DT = @p12, @p_PAYAPP_DT = @p13, @p_NOTES = @p14, @p_RECORD_STATUS = @p15, @p_MAKER_ID = @p16, @p_CREATE_DT = @p17, @p_AUTH_STATUS = @p18, @p_CHECKER_ID = @p19, @p_APPROVE_DT = @p20, @P_LISTASSET = @p21, @P_LISTPAYMENT = @p22',N'@p0 varchar(8000),@p1 int,@p2 varchar(8000),@p3 nvarchar(4000),@p4 varchar(8000),@p5 varchar(8000),@p6 nvarchar(4000),@p7 nvarchar(4000),@p8 varchar(8000),@p9 varchar(8000),@p10 decimal(18,0),@p11 varchar(8000),@p12 varchar(8000),@p13 varchar(8000),@p14 nvarchar(4000),@p15 varchar(8000),@p16 varchar(8000),@p17 varchar(8000),@p18 varchar(8000),@p19 varchar(8000),@p20 varchar(8000),@p21 xml,@p22 xml,@RETURN_VALUE int output',@p0='TRPM00000000103',@p1=1,@p2='PO5555',@p3=N'Mua sam TB VP',@p4='TRC000000000035',@p5=NULL,@p6=N'',@p7=N'',@p8='15/10/2013',@p9='01/01/1900',@p10=8300000,@p11='FFFFF',@p12='01/10/2013',@p13='10/10/2013',@p14=NULL,@p15='1',@p16='taidt',@p17='15/10/2013',@p18='U',@p19=NULL,@p20='01/01/1900',@p21=@p24,@p22=@p25,@RETURN_VALUE=@p26 output
44
*/
45
ALTER PROCEDURE [dbo].[TR_PO_MASTER_Upd]
46
@p_PO_ID	varchar(15) = NULL,
47
@P_PO_TYPE INT = NULL,
48
@p_PO_CODE	varchar(15)  = NULL,
49
@p_PO_NAME	nvarchar(200)  = NULL,
50
@p_CONTRACT_ID	varchar(15)  = NULL,
51
@p_SUP_ID	varchar(15)  = NULL,
52
@p_SUP_NAME	nvarchar(200)  = NULL,
53
@p_SUP_ADDR	nvarchar(200)  = NULL,
54
@p_INPUT_DT	VARCHAR(20) = NULL,
55
@p_PAYMENT_DT	VARCHAR(20) = NULL,
56
@p_TOTAL_AMT	decimal(18)  = NULL,
57
@p_REQ_DOC_ID	varchar(15)  = NULL,
58
@p_DELIVERY_DT	VARCHAR(20) = NULL,
59
@p_PAYAPP_DT	VARCHAR(20) = NULL,
60
@p_NOTES	nvarchar(1000)  = NULL,
61
@p_RECORD_STATUS	varchar(1)  = NULL,
62
@p_MAKER_ID	varchar(15)  = NULL,
63
@p_CREATE_DT	VARCHAR(20) = NULL,
64
@p_AUTH_STATUS	varchar(50)  = NULL,
65
@p_CHECKER_ID	varchar(15)  = NULL,
66
@p_APPROVE_DT	VARCHAR(20) = NULL,
67
@p_TR_REQ_ID VARCHAR(20) = NULL,
68
@p_TR_REQ_CODE VARCHAR(20)= NULL,
69
@P_LISTASSET XML = NULL,
70
@P_LISTPAYMENT XML = NULL,
71
@P_LISTROLE XML = NULL,
72
@p_BRANCH_ID varchar(15) = null,
73
@p_IS_CLOSED VARCHAR(1) = NULL
74
AS
75
	DECLARE @REF_CODE VARCHAR(15) = NULL, @PDN_TT VARCHAR(15) = NULL
76
	SET @REF_CODE =
77
	(	SELECT TOP 1 B.REQ_PAY_CODE
78
		FROM TR_REQ_ADVANCE_DT A
79
		INNER JOIN TR_REQ_ADVANCE_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID
80
		WHERE A.REF_ID =@p_PO_ID AND (B.AUTH_STATUS_KT <>'A' OR B.AUTH_STATUS_KT IS NULL)
81
	)
82
	--- TIM KIEM XEM PO NAY CO DUOC PHEP THANH TOAN HAY KHONG
83
	SET @PDN_TT =
84
	(	SELECT TOP 1 B.REQ_PAY_CODE
85
		FROM TR_REQ_ADVANCE_DT A
86
		INNER JOIN TR_REQ_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID
87
		WHERE A.REF_ID =@p_CONTRACT_ID AND (B.AUTH_STATUS_KT <>'A' OR B.AUTH_STATUS_KT IS NULL)
88
	)
89
	IF(@p_IS_CLOSED ='Y' AND @REF_CODE IS NOT NULL)
90
	BEGIN
91
		ROLLBACK TRANSACTION
92
			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 
93
			RETURN '-1'
94
	END
95
	IF(@p_IS_CLOSED ='Y' AND @PDN_TT IS NOT NULL)
96
	BEGIN
97
		ROLLBACK TRANSACTION
98
			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 
99
			RETURN '-1'
100
	END
101
	IF EXISTS(SELECT * FROM TR_PO_MASTER WHERE [PO_CODE] = @p_PO_CODE AND [PO_ID] <> @p_PO_ID)
102
	BEGIN
103
		SELECT ErrorCode Result, '' PO_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = 'PO-00002'
104
		RETURN '0'
105
	END
106
	--- 21052020 KIEM TRA XEM NEU PYCMS DA TON TAI HAY CHUA
107
	IF((SELECT COUNT(*) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID =@p_REQ_DOC_ID)=1)
108
	BEGIN
109
			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))
110
			BEGIN
111
				ROLLBACK TRANSACTION
112
				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)+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) AS ErrorDesc 
113
				RETURN '-1'
114
			END
115
	END
116
	------
117
	Declare @hdoc INT
118
	Exec sp_xml_preparedocument @hdoc Output,@P_LISTASSET
119
	DECLARE AssetDetail CURSOR FOR
120
	SELECT *
121
	FROM OPENXML(@hDoc,'/Root/AssetDetail',2)
122
	WITH 
123
	(
124
		PD_ID VARCHAR(15),
125
		PLAN_ID	varchar(15)  ,
126
		TRADE_ID	varchar(15)  ,
127
		GOODS_ID	varchar(15)  ,
128
		[DESCRIPTION] nvarchar(500),
129
		UNIT_ID	varchar(15)  ,
130
		QUANTITY	decimal(18)  ,
131
		PRICE	decimal(18)  ,
132
		TOTAL_AMT	decimal(18),
133
		IS_DELIVERY	varchar(1) ,
134
		DELIVERY_DT	VARCHAR(20),
135
		PAYMENT_STATUS	varchar(4),
136
		AMOUNT_PAID	decimal(18)  ,
137
		PAID_DT	VARCHAR(20) ,
138
		INVOICENO	varchar(1000),
139
		NOTES	nvarchar(1000),
140
		RECEIVE_BRANCH	varchar(15),
141
		RECEIVE_ADDR	nvarchar(1000),
142
		RECEIVE_PERSON	nvarchar(500),
143
		RECEIVE_TEL	varchar(100),
144
		EXP_DELIVERY_DT varchar(20),
145
		GOODS_NAME NVARCHAR(500),
146
		INVOICE_DT	VARCHAR(20),
147
		--THIEUVQ 100415 THEM LOAI HANG HOA THUC TE
148
		GOODSTYPE_REAL	VARCHAR(15),
149
		GOODSTYPE_REAL_NAME	VARCHAR(15),
150
		--THIEUVQ 13092016 THEM VAT, CONTRACT_DT
151
		VAT DECIMAL(18,2),
152
		PRICE_VAT DECIMAL(18,0),
153
		CONTRACT_DT VARCHAR(15),
154
		CURRENCY VARCHAR(15),
155
		RATE INT,
156
		TOTAL_AMT_FN  DECIMAL(18,2)
157
		)
158
	OPEN AssetDetail
159

    
160
	Exec sp_xml_preparedocument @hdoc Output,@P_LISTPAYMENT
161
	DECLARE PaymentDetail CURSOR FOR
162
	SELECT *
163
	FROM OPENXML(@hDoc,'/Root/PaymentDetail',2)
164
	WITH 
165
	(
166
		PAY_ID	VARCHAR(15),
167
		PAY_PHASE	varchar(15),
168
		EXPECTED_DT	VARCHAR(20),
169
		[PERCENT]	decimal(18),
170
		[AMOUNT]	decimal(18),
171
		NOTES	nvarchar(1000),
172
		CURRENCY VARCHAR(15),
173
		RATE INT,
174
		TOTAL_AMT DECIMAL(18,2)
175
	)
176
	OPEN PaymentDetail
177
	PRINT 'PASS KHOI TAO'
178

    
179
	--Nhom user gui mail (DAO EDIT)
180
	Exec sp_xml_preparedocument @hdoc Output,@P_LISTROLE
181
	DECLARE LISTROLE CURSOR FOR
182
	SELECT *
183
	FROM OPENXML(@hDoc,'/Root/LISTROLE',2)
184
	WITH 
185
	(
186
		NOTIFI_ID	VARCHAR(15),
187
		TL_NAME	varchar(15),
188
		EDITOR_DT VARCHAR(20),
189
		EDITOR_ID VARCHAR(15),
190
		NOTES nvarchar(1000)
191
	)
192
	OPEN LISTROLE
193

    
194
BEGIN TRANSACTION
195
		IF @p_DELIVERY_DT = ''
196
			SET @p_DELIVERY_DT = NULL
197
		IF @p_PAYAPP_DT	= ''
198
			SET @p_PAYAPP_DT = NULL
199
		--insert master
200
		UPDATE TR_PO_MASTER SET [PO_TYPE] = @P_PO_TYPE, [PO_CODE] = @p_PO_CODE,[PO_NAME] = @p_PO_NAME,
201
		[CONTRACT_ID] = @p_CONTRACT_ID,[SUP_ID] = @p_SUP_ID,[SUP_NAME] = @p_SUP_NAME,[SUP_ADDR] = @p_SUP_ADDR,
202
		[INPUT_DT] = CONVERT(DATETIME, @p_INPUT_DT, 103),[PAYMENT_DT] = CONVERT(DATETIME, @p_PAYMENT_DT, 103),
203
		[TOTAL_AMT] = @p_TOTAL_AMT,[REQ_DOC_ID] = @p_TR_REQ_ID,[DELIVERY_DT] = CONVERT(DATETIME, @p_DELIVERY_DT, 103),
204
		[PAYAPP_DT] = CONVERT(DATETIME, @p_PAYAPP_DT, 103),[NOTES] = @p_NOTES,[RECORD_STATUS] = '1',
205
		[MAKER_ID] = @p_MAKER_ID,[CREATE_DT] = CONVERT(DATETIME, @p_CREATE_DT, 103),[AUTH_STATUS] = @p_AUTH_STATUS,
206
		[CHECKER_ID] = @p_CHECKER_ID,[APPROVE_DT] = CONVERT(DATETIME, @p_APPROVE_DT, 103), BRANCH_ID = @p_BRANCH_ID
207
		WHERE  PO_ID= @p_PO_ID
208
		IF @@Error <> 0 GOTO ABORT
209
		PRINT 'INSERT MASTER SUCCESS'
210
		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
211

    
212
		--insert asset detail tương đương như NỘI DUNG trong bảng contract detail
213
		Declare 
214
		@PAY_ID VARCHAR(15),
215
		@PD_ID VARCHAR(15),
216
		@PLAN_ID	varchar(15),
217
		@TRADE_ID	varchar(15),
218
		@GOODS_ID	varchar(15),
219
		@DESCRIPTION nvarchar(500),
220
		@UNIT_ID	varchar(15),
221
		@QUANTITY	decimal(18),
222
		@PRICE	decimal(18),
223
		@TOTAL_AMT	decimal(18),
224
		@IS_DELIVERY	varchar(1),
225
		@DELIVERY_DT	VARCHAR(20),
226
		@PAYMENT_STATUS	varchar(4),
227
		@AMOUNT_PAID	decimal(18),
228
		@PAID_DT	VARCHAR(20),
229
		@INVOICENO	varchar(20),
230
		@NOTES	nvarchar(1000),
231
		@PO_ID	varchar(15)  = NULL,
232
		@PAY_PHASE	VARCHAR(20) = NULL,
233
		@EXPECTED_DT	VARCHAR(20) = NULL,
234
		@PERCENT	decimal(18)  = NULL,
235
		@AMOUNT	decimal(18)  = NULL,
236
		@RECEIVE_BRANCH	varchar(15)=NULL,
237
		@RECEIVE_ADDR	nvarchar(1000)=NULL,
238
		@RECEIVE_PERSON	nvarchar(500)=NULL,
239
		@RECEIVE_TEL	varchar(100)=NULL,
240
		@EXP_DELIVERY_DT varchar(20) = NULL,
241
		@GOODS_NAME NVARCHAR(500) = NULL,
242
		@INVOICE_DT	VARCHAR(20),
243
		@GOODSTYPE_REAL	VARCHAR(15) = NULL,
244
		@GOODSTYPE_REAL_NAME	VARCHAR(15) = NULL,
245
		@VAT DECIMAL(18,2),
246
		@PRICE_VAT DECIMAL(18,0),
247
		@CONTRACT_DT VARCHAR(15),
248
		--DAO MOI THEM
249
		@NOTIFI_ID VARCHAR(15),
250
		@TL_NAME VARCHAR(15),
251
		@EDITOR_DT VARCHAR(20),
252
		@EDITOR_ID VARCHAR(15),
253
		@NOTES_ROLE nvarchar(1000),
254

    
255
		@CURRENCY VARCHAR(15),
256
		@RATE INT,
257
		@TOTAL_AMT_FN DECIMAL(18,2)
258

    
259
		DECLARE @l_GOODSTYPE_ID VARCHAR(15)
260

    
261
		DELETE FROM TR_PO_DETAIL WHERE PO_ID = @P_PO_ID 
262

    
263
		FETCH NEXT FROM AssetDetail INTO @PD_ID,@PLAN_ID,@TRADE_ID,@GOODS_ID,@DESCRIPTION,@UNIT_ID,@QUANTITY,
264
		@PRICE,@TOTAL_AMT,@IS_DELIVERY,@DELIVERY_DT,@PAYMENT_STATUS,@AMOUNT_PAID,@PAID_DT,
265
		@INVOICENO,@NOTES, @RECEIVE_BRANCH, @RECEIVE_ADDR, @RECEIVE_PERSON, @RECEIVE_TEL,@EXP_DELIVERY_DT,@GOODS_NAME, @INVOICE_DT,
266
		@GOODSTYPE_REAL,@GOODSTYPE_REAL_NAME,@VAT,@PRICE_VAT,@CONTRACT_DT,@CURRENCY,@RATE,@TOTAL_AMT_FN
267
		WHILE @@FETCH_STATUS = 0
268
		BEGIN
269
			--if( NOT EXISTS (SELECT * FROM PL_MASTER A WHERE A.PLAN_ID = @PLAN_ID))
270
			--BEGIN
271
			--	SELECT ErrorCode Result, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = 'TR-00002'
272
			--	GOTO ABORT
273
			--END
274

    
275
			IF(LEN(@PD_ID) = 0)
276

    
277
			BEGIN
278
				EXEC SYS_CodeMasters_Gen 'TR_PO_DETAIL', @PD_ID out
279
				IF @PD_ID ='' OR @PD_ID IS NULL GOTO ABORT
280
			END
281
			
282
			IF(@DELIVERY_DT = '')
283
				SET @DELIVERY_DT = NULL
284
			IF(@PAID_DT = '')
285
				SET @PAID_DT = NULL
286
			IF(@INVOICE_DT = '')
287
				SET @INVOICE_DT = NULL				
288
			IF @EXP_DELIVERY_DT = '' SET @EXP_DELIVERY_DT = NULL
289

    
290
			/***THIEUVQ THEM KIEM TRA VA LUU THONG TIN LOAI HANG HOA THUC TE***/
291
			--BEGIN
292
			--CHUA CO LOAI HANG HOA THI THEM MOI
293
			IF @GOODSTYPE_REAL IS NULL OR @GOODSTYPE_REAL = ''
294
			BEGIN
295
				--NEU TON TAI THI LAY RA ID
296
				SET @GOODSTYPE_REAL = (SELECT TOP 1 GD_RETYPE_ID FROM CM_GOODSTYPE_REAL WHERE [TYPE_NAME] = @GOODSTYPE_REAL_NAME)
297
				--NEU CHUA CO THI THEM MOI
298
				IF @GOODSTYPE_REAL IS NULL OR @GOODSTYPE_REAL = ''
299
				BEGIN
300
					EXEC SYS_CodeMasters_Gen 'CM_GOODSTYPE_REAL', @l_GOODSTYPE_ID OUT
301
					IF @l_GOODSTYPE_ID='' OR @l_GOODSTYPE_ID IS NULL GOTO ABORT
302

    
303
					INSERT INTO CM_GOODSTYPE_REAL VALUES (@l_GOODSTYPE_ID, @l_GOODSTYPE_ID, @GOODSTYPE_REAL_NAME, '', '1',
304
					@p_MAKER_ID,CONVERT(DATETIME, @p_CREATE_DT, 103),'A',@p_MAKER_ID,CONVERT(DATETIME, @p_CREATE_DT, 103))
305
					IF @@ERROR <> 0 GOTO ABORT
306

    
307
					SET @GOODSTYPE_REAL = @l_GOODSTYPE_ID
308
				END
309
			END			
310
			--END
311

    
312
			INSERT INTO TR_PO_DETAIL([PD_ID],[PO_ID],[PLAN_ID],[TRADE_ID],[GOODS_ID],[DESCRIPTION],[UNIT_ID],[QUANTITY],[PRICE],[TOTAL_AMT],[IS_DELIVERY],[DELIVERY_DT],
313
			[PAYMENT_STATUS],[AMOUNT_PAID],[PAID_DT],[INVOICENO],[NOTES], RECEIVE_BRANCH, RECEIVE_ADDR, RECEIVE_PERSON, RECEIVE_TEL,[RECORD_STATUS],[MAKER_ID],[CREATE_DT],
314
			[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)
315
			VALUES(@PD_ID ,@p_PO_ID ,@PLAN_ID ,@TRADE_ID ,@GOODS_ID,@DESCRIPTION ,@UNIT_ID ,@QUANTITY ,@PRICE ,@TOTAL_AMT ,
316
			@IS_DELIVERY ,CONVERT(DATETIME, @DELIVERY_DT, 103) ,@PAYMENT_STATUS ,@AMOUNT_PAID ,
317
			CONVERT(DATETIME, @PAID_DT, 103) ,@INVOICENO ,@NOTES , @RECEIVE_BRANCH, @RECEIVE_ADDR, @RECEIVE_PERSON, @RECEIVE_TEL,
318
			@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),
319
			@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) )
320
			IF @@ERROR <> 0 GOTO ABORT
321

    
322
		-- next Group_Id
323
			FETCH NEXT FROM AssetDetail INTO @PD_ID,@PLAN_ID,@TRADE_ID,@GOODS_ID,@DESCRIPTION,@UNIT_ID,@QUANTITY,
324
			@PRICE,@TOTAL_AMT,@IS_DELIVERY,@DELIVERY_DT,@PAYMENT_STATUS,@AMOUNT_PAID,@PAID_DT,
325
			@INVOICENO,@NOTES, @RECEIVE_BRANCH, @RECEIVE_ADDR, @RECEIVE_PERSON, @RECEIVE_TEL, @EXP_DELIVERY_DT,@GOODS_NAME,@INVOICE_DT,
326
			@GOODSTYPE_REAL,@GOODSTYPE_REAL_NAME,@VAT,@PRICE_VAT,@CONTRACT_DT,@CURRENCY,@RATE,@TOTAL_AMT_FN
327
		END
328
		
329
		--insert payment detail
330
		
331
		DELETE FROM TR_PO_PAYMENT WHERE PO_ID = @p_PO_ID
332

    
333
		FETCH NEXT FROM PaymentDetail INTO @PAY_ID,@PAY_PHASE,@EXPECTED_DT,@PERCENT,@AMOUNT,@NOTES,@CURRENCY,@RATE,@TOTAL_AMT_FN
334
		WHILE @@FETCH_STATUS = 0
335
		BEGIN
336
			EXEC SYS_CodeMasters_Gen 'TR_PO_PAYMENT', @PAY_ID out
337
			IF @PAY_ID ='' OR @PAY_ID IS NULL GOTO ABORT
338
			--PRINT @PAY_ID
339
			--IF(LEN(@PAY_ID) = 0)
340
			--BEGIN
341
			--		EXEC SYS_CodeMasters_Gen 'TR_PO_PAYMENT', @PAY_ID out
342
			--		IF @PAY_ID ='' OR @PAY_ID IS NULL GOTO ABORT
343
			--END
344
			IF @EXPECTED_DT = ''
345
				SET @EXPECTED_DT = NULL
346
			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)
347
			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) ,@TOTAL_AMT*ISNULL(@RATE,1))
348
			FETCH NEXT FROM PaymentDetail INTO @PAY_ID,@PAY_PHASE,@EXPECTED_DT,@PERCENT,@AMOUNT,@NOTES,@CURRENCY,@RATE,@TOTAL_AMT_FN 
349
		END
350

    
351
		CLOSE AssetDetail
352
		DEALLOCATE AssetDetail
353
		CLOSE PaymentDetail
354
		DEALLOCATE PaymentDetail
355

    
356
		---INSERT NHOM QUYEN USER THONG BAO (DAO-EDIT)
357
		DELETE FROM TL_ROLE_NOTIFICATION WHERE PO_ID=@p_PO_ID
358

    
359
	   FETCH NEXT FROM LISTROLE INTO
360
		@NOTIFI_ID,
361
		@TL_NAME,
362
		@EDITOR_DT,
363
		@EDITOR_ID,
364
		@NOTES_ROLE
365
		WHILE @@FETCH_STATUS = 0
366
		BEGIN
367
			IF(LEN(@NOTIFI_ID)=0)
368
			EXEC SYS_CodeMasters_Gen 'TL_ROLE_NOTIFICATION', @NOTIFI_ID out
369
			IF @NOTIFI_ID='' OR @NOTIFI_ID IS NULL GOTO ABORT
370

    
371
			INSERT INTO [dbo].[TL_ROLE_NOTIFICATION]
372
           ([NOTIFI_ID]
373
           ,[NOTIFI_CODE]
374
           ,[NOTIFI_NAME]
375
           ,[TYPE]
376
           ,[PO_ID]
377
           ,[TL_NAME]
378
           ,[BRANCH_ID]
379
           ,[RECORD_STATUS]
380
           ,[AUTH_STATUS]
381
           ,[EDITOR_ID]
382
           ,[EDIT_DT]
383
           ,[NOTES])
384
			 VALUES
385
           (@NOTIFI_ID
386
           ,''
387
           ,''
388
           ,'PO'
389
           ,@p_PO_ID
390
           ,@TL_NAME
391
           ,@p_BRANCH_ID
392
           ,'1'
393
           ,'U'
394
           ,@EDITOR_ID
395
           ,CONVERT(DATETIME, @EDITOR_DT, 103)
396
           ,@NOTES_ROLE)
397
			
398
			IF @@ERROR <> 0 GOTO ABORT
399
			
400
			FETCH NEXT FROM LISTROLE INTO
401
			@NOTIFI_ID,
402
			@TL_NAME,
403
			@EDITOR_DT,
404
			@EDITOR_ID,
405
			@NOTES_ROLE
406
		END
407
		
408
		CLOSE LISTROLE
409
		DEALLOCATE LISTROLE
410
		--- BAT DAU CAP NHAT AUTH_STATUS ='U' NEU BAM GUI PHE DUYET
411
		IF(@p_RECORD_STATUS ='U')
412
		BEGIN
413
			UPDATE TR_PO_MASTER SET AUTH_STATUS ='U' WHERE PO_ID =@p_PO_ID
414
		END
415
COMMIT TRANSACTION
416
IF(@p_RECORD_STATUS ='U')
417
BEGIN
418
	-- INSERT VAO LOG
419
	INSERT INTO dbo.PL_PROCESS
420
	(
421
						REQ_ID,
422
						PROCESS_ID,
423
						CHECKER_ID,
424
						APPROVE_DT,
425
						PROCESS_DESC,NOTES
426
					)
427
					VALUES
428
					(   @p_PO_ID,        -- REQ_ID - varchar(15)
429
						'SEND',        -- PROCESS_ID - varchar(10)
430
						@p_MAKER_ID,        -- CHECKER_ID - varchar(15)
431
						GETDATE(), -- APPROVE_DT - datetime
432
					   N'Nhân viên gửi phê duyệt phiếu thành công' ,N'Gửi phê duyệt')
433
	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
434
	RETURN '2'
435
	
436
END
437
ELSE
438
BEGIN
439
	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
440
	RETURN '0'
441
END
442
ABORT:
443
BEGIN
444
		CLOSE AssetDetail
445
		DEALLOCATE AssetDetail
446
		CLOSE PaymentDetail
447
		DEALLOCATE PaymentDetail
448
		CLOSE LISTROLE
449
		DEALLOCATE LISTROLE
450
		ROLLBACK TRANSACTION
451
		SELECT '-1' AS RESULT
452
		RETURN '-1'
453
End
454

    
455

    
456
--SELECT * FROM TR_CONTRACT_DT
457

    
458
--SELECT * FROM TR_CONTRACT_PAYMENT
459

    
460
--SELECT * FROM TR_CONTRACT
461

    
462