Project

General

Profile

TR_PO_UPD.txt

Luc Tran Van, 11/23/2020 11:32 AM

 
1

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

    
29
*/
30
/*
31
declare @p24 xml
32
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>')
33
declare @p25 xml
34
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>')
35
declare @p26 int
36
set @p26=0
37
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
38
*/
39
ALTER PROCEDURE [dbo].[TR_PO_MASTER_Upd]
40
@p_PO_ID	varchar(15) = NULL,
41
@P_PO_TYPE INT = NULL,
42
@p_PO_CODE	varchar(15)  = NULL,
43
@p_PO_NAME	nvarchar(200)  = NULL,
44
@p_CONTRACT_ID	varchar(15)  = NULL,
45
@p_SUP_ID	varchar(15)  = NULL,
46
@p_SUP_NAME	nvarchar(200)  = NULL,
47
@p_SUP_ADDR	nvarchar(200)  = NULL,
48
@p_INPUT_DT	VARCHAR(20) = NULL,
49
@p_PAYMENT_DT	VARCHAR(20) = NULL,
50
@p_TOTAL_AMT	decimal(18)  = NULL,
51
@p_REQ_DOC_ID	varchar(15)  = NULL,
52
@p_DELIVERY_DT	VARCHAR(20) = NULL,
53
@p_PAYAPP_DT	VARCHAR(20) = NULL,
54
@p_NOTES	nvarchar(1000)  = NULL,
55
@p_RECORD_STATUS	varchar(1)  = NULL,
56
@p_MAKER_ID	varchar(15)  = NULL,
57
@p_CREATE_DT	VARCHAR(20) = NULL,
58
@p_AUTH_STATUS	varchar(50)  = NULL,
59
@p_CHECKER_ID	varchar(15)  = NULL,
60
@p_APPROVE_DT	VARCHAR(20) = NULL,
61
@p_TR_REQ_ID VARCHAR(20) = NULL,
62
@p_TR_REQ_CODE VARCHAR(20)= NULL,
63
@P_LISTASSET XML = NULL,
64
@P_LISTPAYMENT XML = NULL,
65
@P_LISTROLE XML = NULL,
66
@p_BRANCH_ID varchar(15) = null,
67
@p_IS_CLOSED VARCHAR(1) = NULL
68
AS
69
	DECLARE @REF_CODE VARCHAR(15) = NULL, @PDN_TT VARCHAR(15) = NULL
70
	SET @REF_CODE =
71
	(	SELECT TOP 1 B.REQ_PAY_CODE
72
		FROM TR_REQ_ADVANCE_DT A
73
		INNER JOIN TR_REQ_ADVANCE_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID
74
		WHERE A.REF_ID =@p_PO_ID AND (B.AUTH_STATUS_KT <>'A' OR B.AUTH_STATUS_KT IS NULL)
75
	)
76
	--- TIM KIEM XEM PO NAY CO DUOC PHEP THANH TOAN HAY KHONG
77
	SET @PDN_TT =
78
	(	SELECT TOP 1 B.REQ_PAY_CODE
79
		FROM TR_REQ_ADVANCE_DT A
80
		INNER JOIN TR_REQ_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID
81
		WHERE A.REF_ID =@p_CONTRACT_ID AND (B.AUTH_STATUS_KT <>'A' OR B.AUTH_STATUS_KT IS NULL)
82
	)
83
	IF(@p_IS_CLOSED ='Y' AND @REF_CODE IS NOT NULL)
84
	BEGIN
85
			--ROLLBACK TRANSACTION
86
			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 
87
			RETURN '-1'
88
	END
89
	IF(@p_IS_CLOSED ='Y' AND @PDN_TT 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 thanh toán với số phiếu: '+@PDN_TT AS ErrorDesc 
93
			RETURN '-1'
94
	END
95
	IF EXISTS(SELECT * FROM TR_PO_MASTER WHERE [PO_CODE] = @p_PO_CODE AND [PO_ID] <> @p_PO_ID)
96
	BEGIN
97
		SELECT ErrorCode Result, '' PO_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = 'PO-00002'
98
		RETURN '0'
99
	END
100
	--- 21052020 KIEM TRA XEM NEU PYCMS DA TON TAI HAY CHUA
101
	IF((SELECT COUNT(*) FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID =@p_REQ_DOC_ID)=1)
102
	BEGIN
103
			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))
104
			BEGIN
105
				ROLLBACK TRANSACTION
106
				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 
107
				RETURN '-1'
108
			END
109
	END
110
	------
111
	Declare @hdoc INT
112
	Exec sp_xml_preparedocument @hdoc Output,@P_LISTASSET
113
	DECLARE AssetDetail CURSOR FOR
114
	SELECT *
115
	FROM OPENXML(@hDoc,'/Root/AssetDetail',2)
116
	WITH 
117
	(
118
		PD_ID VARCHAR(15),
119
		PLAN_ID	varchar(15)  ,
120
		TRADE_ID	varchar(15)  ,
121
		REQ_DT_ID VARCHAR(15),
122
		GOODS_ID	varchar(15)  ,
123
		[DESCRIPTION] nvarchar(500),
124
		UNIT_ID	varchar(15)  ,
125
		QUANTITY	decimal(18)  ,
126
		PRICE	decimal(18,2)  ,
127
		TOTAL_AMT	decimal(18,2),
128
		IS_DELIVERY	varchar(1) ,
129
		DELIVERY_DT	VARCHAR(20),
130
		PAYMENT_STATUS	varchar(4),
131
		AMOUNT_PAID	decimal(18)  ,
132
		PAID_DT	VARCHAR(20) ,
133
		INVOICENO	varchar(1000),
134
		NOTES	nvarchar(1000),
135
		RECEIVE_BRANCH	varchar(15),
136
		RECEIVE_ADDR	nvarchar(1000),
137
		RECEIVE_PERSON	nvarchar(500),
138
		RECEIVE_TEL	varchar(100),
139
		EXP_DELIVERY_DT varchar(20),
140
		GOODS_NAME NVARCHAR(500),
141
		INVOICE_DT	VARCHAR(20),
142
		--THIEUVQ 100415 THEM LOAI HANG HOA THUC TE
143
		GOODSTYPE_REAL	VARCHAR(15),
144
		GOODSTYPE_REAL_NAME	VARCHAR(15),
145
		--THIEUVQ 13092016 THEM VAT, CONTRACT_DT
146
		VAT DECIMAL(18,2),
147
		PRICE_VAT DECIMAL(18,0),
148
		CONTRACT_DT VARCHAR(15),
149
		CURRENCY VARCHAR(15),
150
		RATE INT,
151
		TOTAL_AMT_FN  DECIMAL(18,2)
152
		)
153
	OPEN AssetDetail
154

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

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

    
189
BEGIN TRANSACTION
190
		IF @p_DELIVERY_DT = ''
191
			SET @p_DELIVERY_DT = NULL
192
		IF @p_PAYAPP_DT	= ''
193
			SET @p_PAYAPP_DT = NULL
194
		--insert master
195
		UPDATE TR_PO_MASTER SET [PO_TYPE] = @P_PO_TYPE, [PO_CODE] = @p_PO_CODE,[PO_NAME] = @p_PO_NAME,
196
		[CONTRACT_ID] = @p_CONTRACT_ID,[SUP_ID] = @p_SUP_ID,[SUP_NAME] = @p_SUP_NAME,[SUP_ADDR] = @p_SUP_ADDR,
197
		[INPUT_DT] = CONVERT(DATETIME, @p_INPUT_DT, 103),[PAYMENT_DT] = CONVERT(DATETIME, @p_PAYMENT_DT, 103),
198
		[TOTAL_AMT] = @p_TOTAL_AMT,[REQ_DOC_ID] = @p_TR_REQ_ID,[DELIVERY_DT] = CONVERT(DATETIME, @p_DELIVERY_DT, 103),
199
		[PAYAPP_DT] = CONVERT(DATETIME, @p_PAYAPP_DT, 103),[NOTES] = @p_NOTES,[RECORD_STATUS] = '1',
200
		[MAKER_ID] = @p_MAKER_ID,[CREATE_DT] = CONVERT(DATETIME, @p_CREATE_DT, 103),[AUTH_STATUS] = 'E',
201
		[CHECKER_ID] = @p_CHECKER_ID,[APPROVE_DT] = CONVERT(DATETIME, @p_APPROVE_DT, 103), BRANCH_ID = @p_BRANCH_ID
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)  = NULL,
231
		@AMOUNT	decimal(18)  = 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
			IF(LEN(@PD_ID) = 0)
272

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

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

    
299
					INSERT INTO CM_GOODSTYPE_REAL VALUES (@l_GOODSTYPE_ID, @l_GOODSTYPE_ID, @GOODSTYPE_REAL_NAME, '', '1',
300
					@p_MAKER_ID,CONVERT(DATETIME, @p_CREATE_DT, 103),'A',@p_MAKER_ID,CONVERT(DATETIME, @p_CREATE_DT, 103))
301
					IF @@ERROR <> 0 GOTO ABORT
302

    
303
					SET @GOODSTYPE_REAL = @l_GOODSTYPE_ID
304
				END
305
			END			
306
			--END
307

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

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

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

    
347
		CLOSE AssetDetail
348
		DEALLOCATE AssetDetail
349
		CLOSE PaymentDetail
350
		DEALLOCATE PaymentDetail
351

    
352
		---INSERT NHOM QUYEN USER THONG BAO (DAO-EDIT)
353
		DELETE FROM TL_ROLE_NOTIFICATION WHERE PO_ID=@p_PO_ID
354

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

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

    
451

    
452
--SELECT * FROM TR_CONTRACT_DT
453

    
454
--SELECT * FROM TR_CONTRACT_PAYMENT
455

    
456
--SELECT * FROM TR_CONTRACT
457

    
458