Project

General

Profile

SCRIPT_UPD_280223.txt

Luc Tran Van, 02/27/2023 11:32 PM

 
1
ALTER PROC [dbo].[rpt_TR_REQ_PAY_INVOICE_ByID_KT] 
2
@p_REQ_PAY_ID VARCHAR(15) = NULL
3
AS
4
BEGIN
5
	SELECT ROW_NUMBER() OVER (ORDER BY A.REQ_PAYDT_ID) AS STT,
6
	BR.BRANCH_CODE BRANCH_CODE,
7
	BR.BRANCH_NAME BRANCH_NAME,
8
	US.TLFullName TLFNAME,
9
	A.VAT VAT, 
10
	A.TRANS_NO TRANS_NO,
11
	CONVERT(VARCHAR(20),FORMAT(CONVERT(DATE,A.TRANS_DT,103), 'dd/MM/yyyy')) TRANS_DT,
12
	A.INVOICE_SIGN INVOICE_SIGN,
13
	A.INVOICE_NO_SIGN INVOICE_NO_SIGN,
14
	A.INVOICE_NO INVOICE_NO,
15
	CONVERT(VARCHAR(20),FORMAT(CONVERT(DATE,A.INVOICE_DT,103), 'dd/MM/yyyy')) INVOICE_DT,
16
	A.SELLER SELLER,
17
	A.TAX_NO TAX_NO,
18
	A.GOODS_NAME GOODS_NAME,
19
	A.PRICE PRICE,
20
	A.TAX TAX,
21
	CASE WHEN A.TYPE_VAT = '0' THEN '353200001'  ELSE '353200002' END AS ACC,
22
	A.TOTAL_AMT_KT AS TOTAL_AMT
23
	FROM TR_REQ_PAY_INVOICE A
24
	LEFT JOIN TR_REQ_PAYMENT B ON  A.REQ_PAY_ID = B.REQ_PAY_ID
25
	LEFT JOIN CM_BRANCH BR ON B.BRANCH_ID = BR.BRANCH_ID
26
	LEFT JOIN TL_USER US ON B.MAKER_ID = US.TLNANME
27
	WHERE 1=1
28
	AND (@p_REQ_PAY_ID = A.REQ_PAY_ID)	
29
	AND ((A.MAKER_ID_KT IS NOT NULL AND A.MAKER_ID_KT <>'' AND A.TYPE_FUNC='KT') OR ((A.MAKER_ID_KT IS NULL OR A.MAKER_ID_KT ='') AND A.TYPE_FUNC='HC')) AND A.TAX >0
30
	ORDER BY A.REQ_PAYDT_ID
31
END
32

    
33
GO
34

    
35
ALTER PROC [dbo].[rpt_TR_REQ_PAY_INVOICE_ByID] 
36
@p_REQ_PAY_ID VARCHAR(15) = NULL
37
AS
38
BEGIN
39
	SELECT ROW_NUMBER() OVER (ORDER BY A.REQ_PAYDT_ID) AS STT,
40
	BR.BRANCH_CODE BRANCH_CODE,
41
	BR.BRANCH_NAME BRANCH_NAME,
42
	US.TLFullName TLFNAME,
43
	A.VAT VAT, 
44
	A.TRANS_NO TRANS_NO,
45
	A.TRANS_DT TRANS_DT,
46
	A.INVOICE_SIGN INVOICE_SIGN,
47
	A.INVOICE_NO_SIGN INVOICE_NO_SIGN,
48
	A.INVOICE_NO INVOICE_NO,
49
	A.INVOICE_DT INVOICE_DT,
50
	A.SELLER SELLER,
51
	A.TAX_NO TAX_NO,
52
	A.GOODS_NAME GOODS_NAME,
53
	A.PRICE PRICE,
54
	A.TAX TAX,
55
	'' AS ACC,
56
	A.PRICE+ A.VAT AS TOTAL_AMT
57
	FROM TR_REQ_PAY_INVOICE A
58
	LEFT JOIN TR_REQ_PAYMENT B ON  A.REQ_PAY_ID = B.REQ_PAY_ID
59
	LEFT JOIN CM_BRANCH BR ON B.BRANCH_ID = BR.BRANCH_ID
60
	LEFT JOIN TL_USER US ON B.MAKER_ID = US.TLNANME
61
	WHERE 1=1
62
	AND (@p_REQ_PAY_ID = A.REQ_PAY_ID)	AND A.TYPE_FUNC='HC'
63
	ORDER BY A.REQ_PAYDT_ID
64
END
65

    
66
GO
67

    
68

    
69

    
70
ALTER PROCEDURE [dbo].[TR_REQ_PAYMENT_Upd]
71
@p_REQ_PAY_ID	varchar(15)= NULL,
72
@p_REQ_PAY_CODE	varchar(50)	= NULL,
73
@p_REQ_DT VARCHAR(20)= NULL,
74
@p_BRANCH_ID	varchar(15)	= NULL,
75
@p_DEP_ID	varchar(15)	= NULL,
76
@p_REQ_REASON	nvarchar(MAX)	= NULL,
77
@p_REQ_TYPE	varchar(15)	= NULL,
78
@P_REQ_ENTRIES nvarchar(MAX)	= NULL,
79
@p_REQ_DESCRIPTION	nvarchar(MAX)	= NULL,
80
@p_REF_ID	varchar(15)	= NULL,
81
@p_RECEIVER_PO	nvarchar(250)	= NULL,
82
@p_REQ_PAY_TYPE	varchar(15)	= NULL,
83
@p_REQ_TYPE_CURRENCY	nvarchar(50)	= NULL,
84
@p_REQ_AMT	decimal(18, 2)	= NULL,
85
@p_REQ_TEMP_AMT	decimal(18, 0)	= NULL,
86
@p_MAKER_ID	varchar(15)	= NULL,
87
@p_CREATE_DT	varchar(25)	= NULL,
88
@p_EDITOR_ID	varchar(15)	= NULL,
89
@p_AUTH_STATUS	varchar(1)	= NULL,
90
@p_CHECKER_ID	varchar(15)	= NULL,
91
@p_APPROVE_DT	varchar(25)	= NULL,
92
@p_CREATE_DT_KT	varchar(25)	= NULL,
93
@p_MAKER_ID_KT	varchar(15)	= NULL,
94
@p_AUTH_STATUS_KT	varchar(1)	= NULL,
95
@p_CHECKER_ID_KT	varchar(1)	= NULL,
96
@p_APPROVE_DT_KT  varchar(25)= null,
97
@p_CONFIRM_NOTE	nvarchar(500)	= NULL,
98
@p_BRANCH_CREATE	varchar(15)	= NULL,
99
@p_NOTES	varchar(15)	= NULL,
100
@p_RECORD_STATUS	varchar(1)	= NULL,
101
@p_TRANSFER_MAKER	nvarchar(50)	= NULL,
102
@p_TRANSFER_DT	varchar(25)	= NULL,
103
@p_TRASFER_USER_RECIVE	varchar(15)	= NULL,
104
@p_PROCESS	varchar(15)	= NULL,
105
@p_PAY_PHASE NVARCHAR(255) = NULL,
106
@p_RATE	DECIMAL(18,2) = 0,
107
@p_IS_PERIOD VARCHAR(5) = NULL,
108
@p_AMT_PAY decimal(18, 0) = NULL,
109
@p_XMP_TEMP XML = NULL,
110
@p_XMP_TEMP_2 XML = NULL,
111
@p_XMP_TEMP_METHOD XML = NULL,
112
@p_XMP_TEMP_BUDGET XML = NULL,
113
@p_XMP_TEMP_SERVICE XML = NULL,
114
@p_XMP_TEMP_ATTACH XML = NULL,
115
@p_XMP_TEMP_INVOICE XML = NULL,
116
@p_TYPE_FUNCTION VARCHAR(15) = NULL,
117
@p_XMP_TEMP_PO XML = NULL,
118
@p_XMP_TEMP_SCHEDULE XML = NULL,
119
@p_XMP_TEMP_PERIOD XML = NULL,
120
@p_XMP_ADVANCE_DT XML = NULL,
121
--doanptt 15/02/2022
122
@p_XMP_TEMP_PAY_JOB XML = NULL,
123
@p_XMP_TEMP_PAY_JOB_DT XML = NULL,
124
--doanptt 17/02/2022
125
@p_XMP_TEMP_PAY_DRIVE XML = NULL,
126
@p_XMP_TEMP_PAY_DRIVE_DT XML = NULL
127

    
128
AS
129
-- BEGIN VALIDATE UPDATE
130
	IF(@p_TYPE_FUNCTION <> 'SEND')
131
	BEGIN
132
		IF(NOT EXISTS(SELECT * FROM TR_REQ_PAYMENT where MAKER_ID = @p_MAKER_ID ))
133
		BEGIN
134
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép cập nhật phiếu đề nghị thanh toán này. Chỉ người tạo phiếu mới được cập nhật phiếu' ErrorDesc
135
			RETURN '-1'
136
		END
137
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS ='U'))
138
		BEGIN
139
			SELECT '-1' Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được gửi phê duyệt thành công trước đó. Bạn không được quyền chỉnh sửa' ErrorDesc
140
			RETURN '-1'
141
		END
142
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND  PROCESS IS NOT NULL AND PROCESS <>''))
143
		BEGIN
144
			SELECT '-1' Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được kí xác nhận từ các cấp. Bạn không được quyền chỉnh sửa' ErrorDesc
145
			RETURN '-1'
146
		END
147
		IF (@p_REQ_PAY_CODE IS NULL OR @p_REQ_PAY_CODE ='')
148
		BEGIN
149
			SELECT '-1' Result, '' REQ_PAY_ID, N'Mã số phiếu không được phép để trống' ErrorDesc
150
			RETURN '-1'
151
		END
152
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS <> 'E' AND AUTH_STATUS <> 'R' AND ISNULL(AUTH_STATUS, '') <> ''))
153
		BEGIN
154
			SELECT '-1' Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được kí xác nhận từ các cấp. Bạn không được quyền chỉnh sửa' ErrorDesc
155
			RETURN '-1'
156
		END
157
	END
158
	IF(@p_TYPE_FUNCTION = 'SEND')
159
	BEGIN
160
		IF(NOT EXISTS(SELECT * FROM TR_REQ_PAYMENT where MAKER_ID = @p_MAKER_ID ))
161
		BEGIN
162
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép cập nhật phiếu đề nghị tạm ứng này. Chỉ người tạo phiếu mới được cập nhật phiếu' ErrorDesc
163
			RETURN '-1'
164
		END
165
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS ='U'))
166
		BEGIN
167
			SELECT '-1' Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được gửi phê duyệt thành công trước đó. Bạn không được quyền chỉnh sửa' ErrorDesc
168
			RETURN '-1'
169
		END
170
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS = 'A'))
171
		BEGIN
172
			SELECT '-1' Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được phê duyệt. Bạn không được quyền chỉnh sửa' ErrorDesc
173
			RETURN '-1'
174
		END
175
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND AUTH_STATUS_KT = 'A'))
176
		BEGIN
177
			SELECT '-1' Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được kiểm soát viên phê duyệt. Bạn không được quyền chỉnh sửa' ErrorDesc
178
			RETURN '-1'
179
		END
180
		IF (ISNULL(@p_REQ_PAY_CODE, '')='' OR ISNULL(@p_REQ_TYPE, '')='' OR ISNULL(@p_MAKER_ID, '')='' OR ISNULL(@p_BRANCH_ID, '')='' OR ISNULL(@p_DEP_ID, '')='' OR ISNULL(@p_REQ_REASON, '')='')
181
		BEGIN
182
			SELECT '-1' Result, '' REQ_PAY_ID, N'Các trường dữ liệu không được phép để trống: mã số phiếu, loại thanh toán, người đề nghị thanh toán, đơn vị đề nghị thanh toán, phòng ban đề nghị, số tiền thanh toán, lý do thanh toán. Vui lòng kiểm tra lại thông tin' ErrorDesc
183
			RETURN '-1'
184
		END
185
		IF(@p_MAKER_ID <> (SELECT TOP 1 MAKER_ID FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID))
186
		BEGIN
187
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Gửi phê duyệt thất bại! Bạn không được quyền gửi phê duyệt phiếu đề nghị thanh toán của người khác'  ErrorDesc
188
			RETURN '-1'
189
		END
190
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID  =@p_REQ_PAY_ID AND AUTH_STATUS='U'))
191
		BEGIN
192
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được gửi phê duyệt trước đó! Vui lòng đợi các cấp phê duyệt' ErrorDesc
193
			RETURN '-1'
194
		END
195
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT where AUTH_STATUS <> 'E' AND ISNULL(AUTH_STATUS, '') <> '' AND REQ_PAY_ID = @p_REQ_PAY_ID ))
196
		BEGIN
197
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị thanh toán đã được gửi phê duyệt trước đó hoặc đang bị từ chối! Vui lòng kiểm tra lại thông tin' ErrorDesc
198
			RETURN '-1'
199
		END
200
	END
201
	
202
-- END VALIDATE UPDATE
203

    
204
		--IF EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_CODE = @p_REQ_PAY_CODE AND REQ_PAY_ID <> @p_REQ_PAY_ID)
205
		--BEGIN
206
		--	SELECT '-1' Result, '' REQ_PAY_ID, N'Mã số phiếu đã tồn tại trong hệ thống' ErrorDesc
207
		--	RETURN '-1'
208
		--END
209
	-- doanppt 
210
	IF(@p_REQ_TYPE = 'D')
211
	BEGIN
212
		DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID = @p_REQ_PAY_ID
213
		DELETE FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID = @p_REQ_PAY_ID
214
		DELETE FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID = @p_REQ_PAY_ID
215
		DELETE FROM TR_REQ_PAYMENT_DT WHERE PAY_ID = @p_REQ_PAY_ID
216
	END
217
	IF(@p_REQ_TYPE = 'P' AND @p_IS_PERIOD='Y')
218
	BEGIN
219
		DELETE FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID = @p_REQ_PAY_ID
220
		DELETE FROM TR_REQ_PAYMENT_DT WHERE PAY_ID = @p_REQ_PAY_ID
221
	END
222
	IF(@p_REQ_TYPE = 'P' AND (@p_IS_PERIOD='N' OR @p_IS_PERIOD IS NULL))
223
	BEGIN
224
		DELETE FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID = @p_REQ_PAY_ID
225
		DELETE FROM TR_REQ_PAYMENT_DT WHERE PAY_ID = @p_REQ_PAY_ID
226
	END
227
	DECLARE @ROLE_KI_NHAY VARCHAR(50)
228
	SET  @ROLE_KI_NHAY =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@p_TRASFER_USER_RECIVE)
229
	IF(@ROLE_KI_NHAY IS NOT NULL AND @ROLE_KI_NHAY <>'' AND @ROLE_KI_NHAY IN ('TPGD','GDDV','PGD','PTGD','TGD','HDQT','TP','PP','TBP','KTT','GDK','KSV','TC','NVTC','TPTC'))
230
	BEGIN
231
		PRINT @ROLE_KI_NHAY
232
	END
233
	ELSE
234
	BEGIN
235
		SET @ROLE_KI_NHAY =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
236
		IF(@ROLE_KI_NHAY IS NULL OR @ROLE_KI_NHAY ='')
237
		BEGIN
238
				SET @ROLE_KI_NHAY =(SELECT TOP 1 ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =(SELECT TOP 1 ROLENAME FROM TL_USER WHERE TLNANME=@p_TRASFER_USER_RECIVE))
239
		END
240
	END
241
	--SET @ROLE_KI_NHAY =(SELECT RoleName FROM TL_USER_V2 WHERE TLNANME =@p_TRASFER_USER_RECIVE)
242
	IF(@ROLE_KI_NHAY IS NOT NULL AND @ROLE_KI_NHAY <> '' AND @ROLE_KI_NHAY IN ('TP','GDDV','KTT','TPTC','TC','TPGD'))
243
	BEGIN
244
		SELECT '-1' Result, '' REQ_PAY_ID, N'Bạn không được phép chọn cấp trưởng đơn vị làm cấp phê duyệt trung gian. Vui lòng bỏ qua hoặc chọn cấp phó phòng, trưởng bộ phận' ErrorDesc
245
		RETURN '-1'
246
	END
247

    
248
	BEGIN TRANSACTION
249
	-- DECLARE
250
		DECLARE @VAT decimal(18, 0) =NULL, @TRANS_NO nvarchar(50)=NULL, @TRANS_DT VARCHAR(20)=NULL,@INVOICE_SIGN nvarchar(50) = NULL,@INVOICE_NO_SIGN nvarchar(50) = NULL,@INVOICE_NO nvarchar(50) = NULL,
251
		@INVOICE_DT VARCHAR(20) = NULL, @SELLER nvarchar(500) = NULL,@TAX_NO nvarchar(15) = NULL,@GOODS_NAME nvarchar(500) = NULL, @PRICE decimal(18, 0) = NULL,@TAX decimal(18, 0) = NULL,
252
		@NOTES NVARCHAR(MAX) = NULL,@VAT_RATE DECIMAL(18,0),@ACC_NO VARCHAR(50),@ACC_NAME NVARCHAR(250),@ISSUED_BY NVARCHAR(250), @ISSUED_DT VARCHAR(20),@CURRENCY VARCHAR(15)= NULL,@RATE DECIMAL(18,2), 
253
		@TYPE_VAT VARCHAR(15),@TYPE_FUNC VARCHAR(15), @PAY_ADV_ID VARCHAR(15),@TYPE_TRANSFER VARCHAR(15),@REQ_PAY_ADV_CODE VARCHAR(15),@REASON NVARCHAR(1000),
254
		@REF_TYPE VARCHAR(15), @TRN_DATE VARCHAR(15), @AMT_ADVANCED DECIMAL(18,0),@AMT_DO DECIMAL(18,0), @AMT_REMAIN DECIMAL(18,0),@AMT_PAY DECIMAL(18,0),@AMT_USE DECIMAL(18,2),@AMT_REVERT DECIMAL(18,2), 
255
		@AMT_ADD DECIMAL(18,2), @TOTAL_SCHEDULE_AMT DECIMAL(18,0) =0
256
		DECLARE @INDEX_AD INT =0, @INDEX_SV INT =0,@INDEX INT =0, @INDEX_IV INT =0, @INDEX_NS INT =0, @INDEX_INVOICE INT = 0, @INDEX_METHOD INT = 0
257
		DECLARE @hdoc INT, @hDoc2 INT, @hDocMeThod INT, @hdocBudget INT, @hdocService INT, @hdocAttach INT, @hdocInvoice INT, @hdocPO INT, @hdocSchedule INT, @hdocPeriod INT, @hdocRecurring INT, @hdocJob INT, 
258
		@hdocJobDT INT, @hdocDrive INT, @hdocDriveDT INT
259
	-- EXEC XMP
260
		EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TEMP;
261
		EXEC sp_xml_preparedocument @hDoc2 OUTPUT, @p_XMP_TEMP_2;
262
		EXEC sp_xml_preparedocument @hDocMeThod OUTPUT, @p_XMP_TEMP_METHOD;
263
		EXEC sp_xml_preparedocument @hdocBudget OUTPUT, @p_XMP_TEMP_BUDGET;
264
		EXEC sp_xml_preparedocument @hdocService OUTPUT, @p_XMP_TEMP_SERVICE;
265
		EXEC sp_xml_preparedocument @hdocAttach OUTPUT, @p_XMP_TEMP_ATTACH;
266
		EXEC sp_xml_preparedocument @hdocInvoice OUTPUT, @p_XMP_TEMP_INVOICE;
267
		EXEC sp_xml_preparedocument @hdocPO OUTPUT, @p_XMP_TEMP_PO;
268
		EXEC sp_xml_preparedocument @hdocSchedule OUTPUT, @p_XMP_TEMP_SCHEDULE;
269
		EXEC sp_xml_preparedocument @hdocPeriod OUTPUT, @p_XMP_TEMP_PERIOD;
270
		EXEC sp_xml_preparedocument @hdocRecurring OUTPUT, @p_XMP_ADVANCE_DT;
271
		--doanptt 15/02/2022
272
		EXEC sp_xml_preparedocument @hdocJob OUTPUT, @p_XMP_TEMP_PAY_JOB;
273
		EXEC sp_xml_preparedocument @hdocJobDT OUTPUT, @p_XMP_TEMP_PAY_JOB_DT;
274
		--doanptt 17/02/2022
275
		EXEC sp_xml_preparedocument @hdocDrive OUTPUT, @p_XMP_TEMP_PAY_DRIVE;
276
		EXEC sp_xml_preparedocument @hdocDriveDT OUTPUT, @p_XMP_TEMP_PAY_DRIVE_DT;
277
		
278

    
279
-- BEGIN THONG TIN LUOI MASTER
280
		UPDATE TR_REQ_PAYMENT 
281
		SET REF_ID = @p_REF_ID, DEP_ID= @p_DEP_ID,REQ_REASON = @p_REQ_REASON, REQ_PAY_TYPE = @p_REQ_PAY_TYPE,REQ_AMT = @p_REQ_AMT, NOTES= @p_NOTES, REQ_TYPE= @p_REQ_TYPE,REQ_DESCRIPTION = @p_REQ_DESCRIPTION,
282
		RECEIVER_PO = @p_RECEIVER_PO,TRANSFER_MAKER =@p_TRANSFER_MAKER, REQ_TEMP_AMT=@p_REQ_TEMP_AMT,REQ_ENTRIES = @P_REQ_ENTRIES,BRANCH_ID = @p_BRANCH_ID, 
283
		AUTH_STATUS='E', IS_PERIOD =@p_IS_PERIOD, TRASFER_USER_RECIVE =@p_TRASFER_USER_RECIVE, RATE = @p_RATE, AMT_PAY = @p_AMT_PAY, AUTH_STATUS_KT = NULL, REQ_TYPE_CURRENCY = @p_REQ_TYPE_CURRENCY
284
		WHERE REQ_PAY_ID =@p_REQ_PAY_ID
285
		-- BUA DOAN NAY DE XU LY LOI KHONG TIM DUOC NHA CUNG CAP
286
		UPDATE CM_SUPPLIER SET ACC_NUM ='' WHERE ACC_NUM IS NULL
287
		UPDATE CM_SUPPLIER SET ACC_NUM_OUT ='' WHERE ACC_NUM_OUT IS NULL
288
		--
289
		UPDATE TR_REQ_PAY_SERVICE 
290
		SET REQ_PAY_ID= 'XX'+ RIGHT(REQ_PAY_ID,13)
291
		WHERE REQ_PAY_ID NOT IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE REQ_TYPE IN ('I','D'))
292
		--
293
		UPDATE TR_REQ_PAY_SCHEDULE 
294
		SET REQ_PAY_ID= 'XX'+ RIGHT(REQ_PAY_ID,13)
295
		WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE REQ_TYPE ='P' AND IS_PERIOD IS NOT NULL AND IS_PERIOD <>'' AND IS_PERIOD='Y') AND TRN_TYPE ='PAY' AND REQ_PAY_ID =@p_REQ_PAY_ID
296
		IF @@Error <> 0 GOTO ABORT
297
-- END THONG TIN LUOI MASTER
298

    
299
-- BEGIN THONG TIN HOA DON DINH KEM
300
		DECLARE @PDN_TT_LIST_INVOICE NVARCHAR(1000)
301
		DELETE FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID = @p_REQ_PAY_ID
302
		DECLARE XmlData CURSOR FOR SELECT * FROM OPENXML(@hdocInvoice, '/Root/XmlData', 2)
303
		WITH(TRANS_NO nvarchar(50),TRANS_DT VARCHAR(20),INVOICE_SIGN nvarchar(50),INVOICE_NO_SIGN nvarchar(50), INVOICE_NO nvarchar(50),INVOICE_DT VARCHAR(20) ,SELLER nvarchar(500),TAX_NO nvarchar(15), 
304
		GOODS_NAME nvarchar(500), PRICE decimal(18,0),TAX decimal(18, 0),VAT decimal(18,0),NOTE NVARCHAR(MAX),VAT_RATE decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),TYPE_VAT VARCHAR(15),TYPE_FUNC VARCHAR(15))
305
		OPEN XmlData;
306
		FETCH NEXT FROM XmlData INTO @TRANS_NO , @TRANS_DT  ,@INVOICE_SIGN ,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,
307
		@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@TYPE_VAT,@TYPE_FUNC
308
		WHILE @@fetch_status=0 
309
		BEGIN
310
		-- SET
311
			SET @INDEX_IV = @INDEX_IV +1
312
		-- BEGIN VALIDATE
313
			IF(@p_TYPE_FUNCTION ='SEND') 
314
			BEGIN
315
				IF(LEN(@INVOICE_NO) < 1)
316
				BEGIN
317
					ROLLBACK TRANSACTION
318
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Hóa đơn đính kèm, dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' không được để trống' ErrorDesc
319
					RETURN '-1'
320
				END	
321

    
322
				IF(LEN(@INVOICE_NO) > 8)
323
				BEGIN
324
					ROLLBACK TRANSACTION
325
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Hóa đơn đính kèm, dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' phải bé hơn 9 ký tự' ErrorDesc
326
					RETURN '-1'
327
				END
328
				
329
				SET @PDN_TT_LIST_INVOICE = (	SELECT STUFF	(	(	SELECT '; ' + DTA.REQ_PAY_CODE 
330
																			FROM TR_REQ_PAYMENT DTA 
331
																			WHERE REQ_PAY_ID IN (	SELECT REQ_PAY_ID 
332
																									FROM TR_REQ_PAY_INVOICE 
333
																									WHERE INVOICE_NO =@INVOICE_NO 
334
																									AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN 
335
																									AND INVOICE_SIGN = @INVOICE_SIGN 
336
																									AND TAX_NO =@TAX_NO 
337
																									AND TAX =@TAX 
338
																									AND AUTH_STATUS <>'D' 
339
																									AND TYPE_FUNC ='HC' 
340
																									AND REQ_PAY_ID IN	(	SELECT REQ_PAY_ID 
341
																															FROM TR_REQ_PAYMENT 
342
																															WHERE AUTH_STATUS NOT IN ('E','D') 
343
																															AND MAKER_ID NOT IN	(	SELECT TLNANME 
344
																																					FROM TL_USER 
345
																																					WHERE RoleName ='DISABLE' 
346
																																					OR AUTH_STATUS ='U'
347
																																				)
348
																														)
349
																								)
350
																			FOR XML PATH(''), TYPE
351
																		).value('.[1]', 'nvarchar(max)'), 1, 2, ''
352
																	)
353
												)
354

    
355
				IF	(	EXISTS	(	SELECT * 
356
										FROM TR_REQ_PAY_INVOICE 
357
										WHERE INVOICE_NO = @INVOICE_NO 
358
										AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN 
359
										AND INVOICE_SIGN =@INVOICE_SIGN 
360
										AND TAX_NO = @TAX_NO 
361
										AND TAX =@TAX 
362
										AND TYPE_FUNC ='HC' 
363
										AND AUTH_STATUS <>'D' AND 
364
										REQ_PAY_ID IN	(	SELECT REQ_PAY_ID 
365
															FROM TR_REQ_PAYMENT 
366
															WHERE AUTH_STATUS NOT IN ('E','D') 
367
															AND MAKER_ID NOT IN	(	SELECT TLNANME 
368
																					FROM TL_USER 
369
																					WHERE RoleName ='DISABLE' 
370
																					OR AUTH_STATUS ='U'
371
																				)
372
														)
373
								)
374
					)
375
				BEGIN
376
					ROLLBACK TRANSACTION
377
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn '+ @INVOICE_NO +N' đã tồn tại trong hệ thống. Danh sách những phiếu đề nghị thanh toán đã sử dụng: '+ ISNULL(@PDN_TT_LIST_INVOICE,'') ErrorDesc
378
					RETURN '-1'
379
				END
380
				
381
				IF(@GOODS_NAME IS NULL OR @GOODS_NAME ='')
382
				BEGIN
383
					ROLLBACK TRANSACTION
384
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Tên mặt hàng trong lưới hóa đơn không được để trống' ErrorDesc
385
					RETURN '-1'
386
				END
387
				-- TÊN NGƯỜI BÀN
388
				IF(@SELLER IS NULL OR @SELLER ='')
389
				BEGIN
390
					ROLLBACK TRANSACTION
391
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Người bán trong lưới hóa đơn không được để trống' ErrorDesc
392
					RETURN '-1'
393
				END
394

    
395
				IF(@TAX_NO IS NULL OR @TAX_NO ='')
396
				BEGIN
397
					ROLLBACK TRANSACTION
398
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Mã số thuế trong lưới hóa đơn không được để trống' ErrorDesc
399
					RETURN '-1'
400
				END
401
				-- NGÀY HÓA ĐƠN
402
				IF(@INVOICE_DT IS NULL OR @INVOICE_DT ='')
403
				BEGIN
404
					ROLLBACK TRANSACTION
405
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Ngày hóa đơn trong lưới hóa đơn không được để trống' ErrorDesc
406
					RETURN '-1'
407
				END
408
				-- SỐ HÓA ĐƠN
409
				IF(@INVOICE_NO IS NULL OR @INVOICE_NO ='')
410
				BEGIN
411
					ROLLBACK TRANSACTION
412
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số hóa đơn trong lưới hóa đơn không được để trống' ErrorDesc
413
					RETURN '-1'
414
				END
415
				-- KÍ HIỆU HÓA ĐƠN
416
				IF(@INVOICE_NO_SIGN IS NULL OR @INVOICE_NO_SIGN ='')
417
				BEGIN
418
					ROLLBACK TRANSACTION
419
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Kí hiệu số hóa đơn trong lưới hóa đơn không được để trống' ErrorDesc
420
					RETURN '-1'
421
				END
422
				-- KÍ HIỆU HÓA ĐƠN
423
				IF(@PRICE IS NULL OR @PRICE =0)
424
				BEGIN
425
					ROLLBACK TRANSACTION
426
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX_IV)+N': Số tiền hóa đơn trong lưới hóa đơn không được để trống' ErrorDesc
427
					RETURN '-1'
428
				END
429
			END
430
		-- END VALIDATE
431

    
432
			DECLARE @p_REQ_INV_ID VARCHAR(15);
433
			EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_INVOICE', @p_REQ_INV_ID OUT;
434
			IF @p_REQ_INV_ID='' OR @p_REQ_INV_ID IS NULL GOTO ABORT;
435
			INSERT INTO TR_REQ_PAY_INVOICE(REQ_PAYDT_ID,REQ_PAY_ID,TRANS_NO,TRANS_DT,INVOICE_SIGN,INVOICE_NO,INVOICE_DT,SELLER,TAX_NO,GOODS_NAME,PRICE,TAX,VAT,NOTE, MAKER_ID,CREATE_DT,EDITOR_ID,AUTH_STATUS,
436
			CHECKER_ID,APPROVE_DT, CREATE_DT_KT,MAKER_ID_KT,AUTH_STATUS_KT,CHECKER_ID_KT,APPROVE_DT_KT,RECORD_STATUS,INVOICE_NO_SIGN,VAT_RATE,CURRENCY,RATE,PRICE_KT,VAT_KT,TOTAL_AMT_KT,TYPE_VAT,TYPE_FUNC) 
437
			VALUES (@p_REQ_INV_ID,@p_REQ_PAY_ID , @TRANS_NO , NULL  ,@INVOICE_SIGN ,@INVOICE_NO ,CONVERT(DATE,@INVOICE_DT,103) ,UPPER(([dbo].[RemoveVietNamese](@SELLER))),@TAX_NO ,UPPER(([dbo].[RemoveVietNamese](@GOODS_NAME))) ,
438
			@PRICE ,@TAX,@VAT,@NOTES, @p_MAKER_ID,GETDATE(),NULL,'U',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'1',@INVOICE_NO_SIGN,@VAT_RATE, 'VND' , 1,@PRICE,@VAT,@PRICE+@VAT,@TYPE_VAT,@TYPE_FUNC)
439
		IF @@error<>0 GOTO ABORT;
440
		FETCH NEXT FROM XmlData
441
		INTO @TRANS_NO , @TRANS_DT,@INVOICE_SIGN,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@TYPE_VAT,@TYPE_FUNC
442
		END;
443
		CLOSE XmlData;
444
		DEALLOCATE XmlData;
445
-- END THONG TIN HOA DON DINH KEM
446
-- BEGIN THONG TIN HANG MUC NGAN SACH VA CHI PHI
447
	-- DELETE
448
		DELETE FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID=@p_REQ_PAY_ID
449
		DELETE FROM TR_REQ_BUDGET_MONTH_LIMIT_DETAIL WHERE REQ_PAY_ID=@p_REQ_PAY_ID
450
		DELETE FROM TR_REQ_BUDGET_YEAR_LIMIT_DETAIL WHERE REQ_PAY_ID=@p_REQ_PAY_ID
451
	-- DECLARE
452
		DECLARE @TRADE_ID varchar(15),@GD_ID varchar(15), @GD_CODE varchar(15), @AMT_APP decimal(18,2),@AMT_EXE decimal(18,2), @AMT_REMAIN_GD decimal(18,2),@TYPE_COST VARCHAR(15), @FR_LEVEL INT ,
453
		@TO_LEVEL INT, @MONTH_RATE VARCHAR(4), @YEAR_RATE VARCHAR(4), @BUDGET_TYPE VARCHAR(20), @BRANCH_ID VARCHAR(20), @DEP_ID VARCHAR(20), @MONTH VARCHAR(20), @YEAR VARCHAR(20),
454
		@BRANCH_TYPE VARCHAR(20), @KHOI_ID VARCHAR(20), @TLNAME VARCHAR(20), @RoleName VARCHAR(20), @BRANCH_TAKE_COST_ID VARCHAR(20), @DEP_TAKE_COST_ID VARCHAR(20), @KHOI_TAKE_COST_ID VARCHAR(20), @BRANCH_KIND VARCHAR(20)
455
	-- DECLARE CURSOR
456
		DECLARE XmlDataGood CURSOR FOR SELECT * FROM OPENXML(@hdocBudget, 'Root/XmlDataGood',2) 
457
		WITH(TRADE_ID varchar(15),GD_ID varchar(15),GD_CODE varchar(15),AMT_APP decimal(18,2),AMT_DO decimal(18,2), AMT_EXE decimal(18,2),AMT_REMAIN decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2), 
458
		REASON NVARCHAR(1000),TYPE_COST VARCHAR(15), FR_LEVEL INT ,TO_LEVEL INT, MONTH_RATE VARCHAR(4), YEAR_RATE VARCHAR(4), BUDGET_TYPE VARCHAR(20),  BRANCH_ID VARCHAR(20), DEP_ID VARCHAR(20), MONTH VARCHAR(20), YEAR VARCHAR(20),
459
		BRANCH_TYPE VARCHAR(20), KHOI_ID VARCHAR(20), TLNAME VARCHAR(20), RoleName VARCHAR(20), BRANCH_TAKE_COST_ID VARCHAR(20), DEP_TAKE_COST_ID VARCHAR(20), KHOI_TAKE_COST_ID VARCHAR(20), BRANCH_KIND VARCHAR(20))
460
	-- BEGIN CURSOR THONG TIN HANG MUC NGAN SACH VA CHI PHI
461
		OPEN XmlDataGood		
462
		FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID , @GD_CODE, @AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,
463
		@RATE,@REASON,@TYPE_COST, @FR_LEVEL,@TO_LEVEL, @MONTH_RATE, @YEAR_RATE, @BUDGET_TYPE, @BRANCH_ID , @DEP_ID, @MONTH, @YEAR, 
464
		@BRANCH_TYPE, @KHOI_ID, @TLNAME, @RoleName, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @KHOI_TAKE_COST_ID, @BRANCH_KIND
465
		WHILE @@fetch_status=0 BEGIN
466
		-- SET
467
			SET @INDEX_NS = @INDEX_NS +1
468

    
469
		-- BEGIN VALIDATE
470
			IF(@p_TYPE_FUNCTION ='SEND')
471
			BEGIN
472
				IF(ISNULL(@AMT_EXE,0) =0)
473
				BEGIN
474
					ROLLBACK TRANSACTION
475
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng thực tế phải lớn hơn không.' ErrorDesc
476
					RETURN '-1'
477
				END
478
				/*
479
				IF((@AMT_EXE  > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS'))
480
				BEGIN
481
						ROLLBACK TRANSACTION
482
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc
483
						RETURN '-1'
484
				END
485
				*/
486
				
487
				IF(NOT EXISTS(SELECT * FROM PL_IMPORT_DT WHERE TRADE_ID =@TRADE_ID AND IMP_YEAR =YEAR(GETDATE()))
488
				AND NOT EXISTS (SELECT * FROM PL_MASTER WHERE PLAN_ID =(SELECT TOP 1 PLAN_ID FROM PL_TRADEDETAIL WHERE TRADE_ID =@TRADE_ID) AND YEAR =YEAR(GETDATE())))
489
				BEGIN
490
					ROLLBACK TRANSACTION
491
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng phải chọn lại ngân sách của năm hiện tại. Không được phép sử dụng ngân sách năm cũ.' ErrorDesc
492
					RETURN '-1'
493
				END
494
				
495
--doanptt 180622 ghi log NSCP
496
-- BEGIN CHECK HAN MUC CHI PHI THEO NAM
497
				IF(@BUDGET_TYPE = 'nam')
498
				BEGIN
499
					IF(@YEAR_RATE = '' OR @YEAR_RATE IS NULL)
500
					BEGIN
501
						ROLLBACK TRANSACTION
502
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(NVARCHAR(5),@INDEX_NS)+ N': Năm định mức không được để trống' ErrorDesc
503
						RETURN '-1'
504
					END
505
					IF(@BRANCH_TAKE_COST_ID = '' OR @BRANCH_TAKE_COST_ID IS NULL)
506
					BEGIN
507
						ROLLBACK TRANSACTION
508
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(NVARCHAR(5),@INDEX_NS)+ N': Đơn vị chịu chi phí không được để trống' ErrorDesc
509
						RETURN '-1'
510
					END
511
					SET @MONTH_RATE = 'M' + CONVERT(VARCHAR(20), MONTH(GETDATE()));
512
					DECLARE @l_BUDGET_LIMIT_YEAR_DETAIL_ID VARCHAR(15);
513
					EXEC SYS_CodeMasters_Gen 'BUDGET_LIMIT_YEAR_DETAIL', @l_BUDGET_LIMIT_YEAR_DETAIL_ID OUT;
514

    
515
					IF(@MONTH_RATE = 'M1')
516
					BEGIN
517
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID, DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT, BRANCH_KIND)
518
						VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL, @BRANCH_KIND )
519
					END
520
					IF(@MONTH_RATE = 'M2')
521
					BEGIN
522
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT, BRANCH_KIND)
523
						VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE, 0, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL, @BRANCH_KIND )
524
					END
525
					IF(@MONTH_RATE = 'M3')
526
					BEGIN
527
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT, BRANCH_KIND)
528
						VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE, 0, 0, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL, @BRANCH_KIND )
529
					END
530
					IF(@MONTH_RATE = 'M4')
531
					BEGIN
532
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT, BRANCH_KIND)
533
						VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE,0,0,0, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL, @BRANCH_KIND )
534
					END
535
					IF(@MONTH_RATE = 'M5')
536
					BEGIN
537
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT, BRANCH_KIND)
538
						VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE, 0, 0, 0, 0, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL, @BRANCH_KIND )
539
					END
540
					IF(@MONTH_RATE = 'M6')
541
					BEGIN
542
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID, DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5,	 M6,   M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT, BRANCH_KIND)
543
						VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName,	@YEAR_RATE, 0, 0, 0, 0, 0, @AMT_EXE, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1',			'A',		NULL,			NULL, @BRANCH_KIND )
544
					END
545
					IF(@MONTH_RATE = 'M7')
546
					BEGIN
547
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT, BRANCH_KIND)
548
						VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE, 0, 0, 0, 0, 0, 0, @AMT_EXE, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL, @BRANCH_KIND )
549
					END
550
					IF(@MONTH_RATE = 'M8')
551
					BEGIN
552
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT, BRANCH_KIND)
553
						VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE, '', '', '', '', '', '', '', @AMT_EXE, '', '', '', '', @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL, @BRANCH_KIND )
554
					END
555
					IF(@MONTH_RATE = 'M9')
556
					BEGIN
557
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT, BRANCH_KIND)
558
						VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE, 0, 0, 0, 0, 0, 0, 0, 0, @AMT_EXE, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL, @BRANCH_KIND )
559
					END
560
					IF(@MONTH_RATE = 'M10')
561
					BEGIN
562
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT, BRANCH_KIND)
563
						VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE, 0, 0, 0, 0, 0, 0, 0, 0, 0, @AMT_EXE,0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL, @BRANCH_KIND )
564
					END
565
					IF(@MONTH_RATE = 'M11')
566
					BEGIN
567
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT, BRANCH_KIND)
568
						VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @AMT_EXE, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL, @BRANCH_KIND )
569
					END
570
					IF(@MONTH_RATE = 'M12')
571
					BEGIN
572
						INSERT INTO TR_REQ_BUDGET_YEAR_LIMIT_DETAIL(BUDGET_YEAR_LIMIT_DETAIL_ID,REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, KHOI_ID, TLNAME, ROLENAME, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT, BRANCH_KIND)
573
						VALUES(@l_BUDGET_LIMIT_YEAR_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @YEAR_RATE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @AMT_EXE, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL, @BRANCH_KIND )
574
					END
575
					-- CHECK HẠN MỨC
576
					/*
577
					DECLARE @l_HAVE_BUDGET_LIMIT_YEAR decimal(18,0), @l_BUDGET_LIMIT_CURRENT_YEAR decimal(18,0) =0, @l_BUDGET_USED_CURRENT_YEAR decimal(18,0) =0 , @l_BRANCH_TYPE_YEAR VARCHAR(20) = '';
578
					EXEC TR_BUDGET_CHECK_LIMIT_YEAR_Byid @GD_ID, @GD_CODE ,@BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @KHOI_TAKE_COST_ID, @TLNAME, @RoleName, @MONTH_RATE, @YEAR_RATE, @BRANCH_KIND, @l_BUDGET_LIMIT_CURRENT_YEAR out, @l_BUDGET_USED_CURRENT_YEAR out
579
					IF(@l_BUDGET_LIMIT_CURRENT_YEAR < @l_BUDGET_USED_CURRENT_YEAR)
580
					BEGIN
581
						ROLLBACK TRANSACTION
582
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(NVARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng ngân sách vượt quá định mức ngân sách. Hạn mức hiện tại là ' + FORMAT(@l_BUDGET_LIMIT_CURRENT_YEAR,'#,#', 'vi-VN') + N', số tiền đã sử dụng đến hiện tại là ' + FORMAT(@l_BUDGET_USED_CURRENT_YEAR,'#,#', 'vi-VN')  ErrorDesc
583
						RETURN '-1'
584
					END
585
					*/
586
				END-- END CHECK HAN MUC NGAN SACH CHI PHI THEO NAM
587
				ELSE IF(@BUDGET_TYPE = 'thang')
588
				BEGIN	-- BEGIN CHECK HAN MUC NGAN SACH CHI PHI THEO THANG
589
				-- BEGIN KIỂM TRA HẠN MỨC
590
					DECLARE @l_HAVE_BUDGET_LIMIT decimal(18,0), @l_BUDGET_LIMIT_CURRENT decimal(18,0) =0, @l_BUDGET_USED_CURRENT decimal(18,0) =0 , @l_BRANCH_TYPE VARCHAR(20) = '';
591
					-- lấy loại đơn vị
592
					SET @l_BRANCH_TYPE = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_ID)
593
					IF(@l_BRANCH_TYPE = 'HS')
594
					BEGIN
595
						SET @l_BRANCH_TYPE = 'ho'
596
					END
597
					ELSE IF(@l_BRANCH_TYPE = 'CN')
598
					BEGIN
599
						SET @l_BRANCH_TYPE = 'dvkd'
600
					END
601
					ELSE
602
					BEGIN
603
						SET @l_BRANCH_TYPE = 'pgd'
604
					END
605

    
606
					DECLARE @l_BUDGET_LIMIT_MONTH_DETAIL_ID VARCHAR(15);
607
					EXEC SYS_CodeMasters_Gen 'BUDGET_LIMIT_MONTH_DETAIL', @l_BUDGET_LIMIT_MONTH_DETAIL_ID OUT;
608

    
609
					IF(@MONTH_RATE = '' OR @MONTH_RATE IS NULL)
610
					BEGIN
611
						ROLLBACK TRANSACTION
612
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(NVARCHAR(5),@INDEX_NS)+ N': Tháng định mức không được để trống' ErrorDesc
613
						RETURN '-1'
614
					END
615
					IF(@YEAR_RATE = '' OR @YEAR_RATE IS NULL)
616
					BEGIN
617
						ROLLBACK TRANSACTION
618
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(NVARCHAR(5),@INDEX_NS)+ N': Năm định mức không được để trống' ErrorDesc
619
						RETURN '-1'
620
					END
621
					IF(@BRANCH_TAKE_COST_ID = '' OR @BRANCH_TAKE_COST_ID IS NULL)
622
					BEGIN
623
						ROLLBACK TRANSACTION
624
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(NVARCHAR(5),@INDEX_NS)+ N': Đơn vị chịu chi phí không được để trống' ErrorDesc
625
						RETURN '-1'
626
					END
627
				-- END KIỂM TRA HẠN MỨC
628
				-- BEGIN VALIDATE
629
					IF(@MONTH_RATE = 'M1')
630
					BEGIN
631
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT, BRANCH_KIND)
632
						VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @YEAR_RATE, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL, @BRANCH_KIND )
633
					END
634
					IF(@MONTH_RATE = 'M2')
635
					BEGIN
636
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT, BRANCH_KIND)
637
						VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @YEAR_RATE, 0, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL, @BRANCH_KIND )
638
					END
639
					IF(@MONTH_RATE = 'M3')
640
					BEGIN
641
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT, BRANCH_KIND)
642
						VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @YEAR_RATE, 0, 0, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL, @BRANCH_KIND )
643
					END
644
					IF(@MONTH_RATE = 'M4')
645
					BEGIN
646
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT, BRANCH_KIND)
647
						VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @YEAR_RATE,0,0,0, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL, @BRANCH_KIND )
648
					END
649
					IF(@MONTH_RATE = 'M5')
650
					BEGIN
651
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT, BRANCH_KIND)
652
						VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @YEAR_RATE, 0, 0, 0, 0, @AMT_EXE, 0, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL, @BRANCH_KIND )
653
					END
654
					IF(@MONTH_RATE = 'M6')
655
					BEGIN
656
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID,		 GD_ID , BRANCH_ID,  DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5,	 M6,   M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT, BRANCH_KIND)
657
						VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID,	@YEAR_RATE, 0, 0, 0, 0, 0, @AMT_EXE, 0, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1',			'A',		NULL,			NULL, @BRANCH_KIND )
658
					END
659
					IF(@MONTH_RATE = 'M7')
660
					BEGIN
661
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT, BRANCH_KIND)
662
						VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @YEAR_RATE, 0, 0, 0, 0, 0, 0, @AMT_EXE, 0, 0, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL, @BRANCH_KIND )
663
					END
664
					IF(@MONTH_RATE = 'M8')
665
					BEGIN
666
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT, BRANCH_KIND)
667
						VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @YEAR_RATE, '', '', '', '', '', '', '', @AMT_EXE, '', '', '', '', @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL, @BRANCH_KIND )
668
					END
669
					IF(@MONTH_RATE = 'M9')
670
					BEGIN
671
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT, BRANCH_KIND)
672
						VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @YEAR_RATE, 0, 0, 0, 0, 0, 0, 0, 0, @AMT_EXE, 0, 0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL, @BRANCH_KIND )
673
					END
674
					IF(@MONTH_RATE = 'M10')
675
					BEGIN
676
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT, BRANCH_KIND)
677
						VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @YEAR_RATE, 0, 0, 0, 0, 0, 0, 0, 0, 0, @AMT_EXE,0, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL, @BRANCH_KIND )
678
					END
679
					IF(@MONTH_RATE = 'M11')
680
					BEGIN
681
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT, BRANCH_KIND)
682
						VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @YEAR_RATE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @AMT_EXE, 0, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL, @BRANCH_KIND )
683
					END
684
					IF(@MONTH_RATE = 'M12')
685
					BEGIN
686
						INSERT INTO TR_REQ_BUDGET_MONTH_LIMIT_DETAIL(BUDGET_MONTH_LIMIT_DETAIL_ID, REQ_PAY_ID, GD_ID , BRANCH_ID,DEP_ID, BUDGET_YEAR, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, MAKER_ID, CREATE_DT, RECORD_STATUS, AUTH_STATUS, CHECKER_ID , APPROVE_DT, BRANCH_KIND)
687
						VALUES(@l_BUDGET_LIMIT_MONTH_DETAIL_ID, @p_REQ_PAY_ID, @GD_ID, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @YEAR_RATE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @AMT_EXE, @p_MAKER_ID, GETDATE(), '1', 'A', NULL, NULL, @BRANCH_KIND )
688
					END
689
				-- END VALIDATE
690
					
691
				-- CHECK HẠN MỨC
692
					print '@GD_ID: ' + @GD_ID;
693
					print '@GD_CODE: ' + @GD_CODE;
694
					print '@l_BRANCH_TYPE: ' + @l_BRANCH_TYPE;
695
					print '@YEAR_RATE: ' + @YEAR_RATE;
696
					print '@MONTH_RATE: ' + @MONTH_RATE;
697
					print '@BRANCH_KIND: ' + @BRANCH_KIND;
698
					print '@BRANCH_TAKE_COST_ID: ' + @BRANCH_TAKE_COST_ID;
699
					print '@DEP_TAKE_COST_ID: ' + @DEP_TAKE_COST_ID;
700
					EXEC TR_BUDGET_CHECK_LIMIT_MONTH_Byid @GD_ID, @GD_CODE ,@l_BRANCH_TYPE, @YEAR_RATE , @MONTH_RATE, @BRANCH_KIND, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID , @l_BUDGET_LIMIT_CURRENT out, @l_BUDGET_USED_CURRENT out
701
					IF(@l_BUDGET_LIMIT_CURRENT < @l_BUDGET_USED_CURRENT)
702
					BEGIN
703
						ROLLBACK TRANSACTION
704
						--SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(NVARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng ngân sách vượt quá định mức ngân sách. Hạn mức hiện tại là ' + FORMAT(@l_BUDGET_LIMIT_CURRENT,'#,#', 'vi-VN') + N', số tiền đã sử dụng đến hiện tại là ' + FORMAT(@l_BUDGET_USED_CURRENT,'#,#', 'vi-VN')  ErrorDesc
705
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(NVARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng ngân sách vượt quá định mức ngân sách.' ErrorDesc
706
						RETURN '-1'
707
					END
708
				END
709
--END CHECK HAN MUC NGAN SACH CHI PHI THEO THANG
710
			END
711
		-- END VALIDATE
712

    
713
			DECLARE @p_BUDGET_ID VARCHAR(15);
714
			EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_BUDGET', @p_BUDGET_ID OUT;
715
			IF @p_BUDGET_ID='' OR @p_BUDGET_ID IS NULL GOTO ABORT;
716
			INSERT INTO TR_REQ_PAY_BUDGET(BUDG_ID,GD_ID,REQ_PAY_ID,TRADE_ID,AMT_APP,AMT_DO,AMT_EXE,AMT_REMAIN,MAKER_ID,CREATE_DT,CURRENCY,RATE,REASON,TYPE_COST , FR_LEVEL  ,TO_LEVEL, MONTH_RATE, YEAR_RATE, BUDGET_TYPE, BRANCH_ID ,DEP_ID, TLNAME, ROLENAME, BRANCH_TAKE_COST_ID, DEP_TAKE_COST_ID, KHOI_TAKE_COST_ID,BRANCH_KIND) 
717
			VALUES (@p_BUDGET_ID,@GD_ID,@p_REQ_PAY_ID,@TRADE_ID,@AMT_APP,@AMT_DO,@AMT_EXE,@AMT_REMAIN_GD,@p_MAKER_ID, GETDATE(), @p_REQ_TYPE_CURRENCY , @p_RATE,@REASON,@TYPE_COST, @FR_LEVEL,@TO_LEVEL,  @MONTH_RATE, @YEAR_RATE, @BUDGET_TYPE, @BRANCH_ID, @DEP_ID, @TLNAME, @RoleName, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @KHOI_TAKE_COST_ID,@BRANCH_KIND)
718
		IF @@error<>0 GOTO ABORT;
719
		FETCH NEXT FROM XmlDataGood INTO @TRADE_ID,@GD_ID , @GD_CODE, @AMT_APP ,@AMT_DO,@AMT_EXE ,@AMT_REMAIN_GD,@CURRENCY,
720
		@RATE,@REASON,@TYPE_COST, @FR_LEVEL,@TO_LEVEL, @MONTH_RATE, @YEAR_RATE, @BUDGET_TYPE, @BRANCH_ID , @DEP_ID, @MONTH, @YEAR, @BRANCH_TYPE, @KHOI_ID, @TLNAME, @RoleName, @BRANCH_TAKE_COST_ID, @DEP_TAKE_COST_ID, @KHOI_TAKE_COST_ID, @BRANCH_KIND
721
		END;
722
		CLOSE XmlDataGood;
723
		DEALLOCATE XmlDataGood;
724
-- END THONG TIN HAMG MUC NGAN SACH VA CHI PHI
725

    
726

    
727
-- BEGIN THONG TIN PHUONG THUC THANH TOAN
728
	-- DELETE
729
		DELETE FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID = @p_REQ_PAY_ID
730
	--DECLARE
731
		DECLARE @RECEIVE_ID varchar(15),@RECEIVE_NAME nvarchar(100),@REQ_PAY_REASON nvarchar(MAX),@TOTAL_AMT_METHOD decimal(18,2), @REQ_PAY_TYPE varchar(1),@REQ_PAY_DESC nvarchar(MAX),
732
		@REQ_PAY_ENTRIES nvarchar(MAX),@CHECK_IN VARCHAR(15), @BANKCODE_NAPAS VARCHAR(20), @BANKCODE VARCHAR(20), @BANKNAME VARCHAR(250), @SUB_ISSUED_BY NVARCHAR(250), @RECEIVER_DEBIT VARCHAR(20)
733
	-- SET
734
		SET @INDEX = 0
735
	-- DECLARE CURSOR
736
		DECLARE XmlDataMethod CURSOR FOR SELECT * FROM OPENXML(@hdocMethod, 'Root/XmlDataMethod',2)
737
		WITH(RECEIVE_ID varchar(15),RECEIVE_NAME nvarchar(100),REQ_PAY_REASON nvarchar(MAX),TOTAL_AMT decimal(18,2), REQ_PAY_TYPE varchar(1),REQ_PAY_DESC nvarchar(MAX),REQ_PAY_ENTRIES nvarchar(MAX),
738
		ACC_NO VARCHAR(250), ACC_NAME NVARCHAR(250),ISSUED_BY NVARCHAR(250), ISSUED_DT VARCHAR(20),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),CHECK_IN VARCHAR(15),TYPE_TRANSFER VARCHAR(15), 
739
		BANKCODE_NAPAS VARCHAR(20), BANKCODE VARCHAR(20), BANKNAME NVARCHAR(250), SUB_ISSUED_BY NVARCHAR(250), RECEIVER_DEBIT NVARCHAR(20))
740
	-- BEGIN CURSOR THONG TIN PHUONG THUC THANH TOAN
741
		OPEN XmlDataMethod
742
		FETCH NEXT FROM XmlDataMethod INTO  @RECEIVE_ID,@RECEIVE_NAME,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@REQ_PAY_TYPE,
743
		@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@ACC_NO, @ACC_NAME,@ISSUED_BY, @ISSUED_DT,@CURRENCY,@RATE,@CHECK_IN,@TYPE_TRANSFER, @BANKCODE_NAPAS, @BANKCODE, @BANKNAME, @SUB_ISSUED_BY, @RECEIVER_DEBIT
744
		WHILE @@fetch_status=0 
745
		BEGIN
746
		-- SET
747
			SET @INDEX_METHOD = @INDEX_METHOD+1
748
		-- BEGIN VALIDATE
749
			IF(@p_TYPE_FUNCTION ='SEND')
750
			BEGIN
751

    
752
				IF(@ACC_NO IS NULL OR @ACC_NO = '')
753
				BEGIN
754
					ROLLBACK TRANSACTION
755
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin phương thức thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_METHOD)+N': số tài khoản '+ N' không được để trống' ErrorDesc
756
					RETURN '-1'
757
				END
758

    
759
				IF((@BANKCODE IS NULL OR @BANKCODE = '') AND @CHECK_IN = 'O')
760
				BEGIN
761
					ROLLBACK TRANSACTION
762
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin phương thức thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_METHOD)+N': Loại tài khoản là ngoài hệ thống! Vui lòng chọn lại Tên ngân hàng/nơi cấp CMND từ danh sách!' ErrorDesc
763
					RETURN '-1'
764
				END
765

    
766
				IF(@REQ_PAY_TYPE = '1' AND (@ISSUED_DT = '' OR @ISSUED_DT IS NULL))
767
				BEGIN
768
					ROLLBACK TRANSACTION
769
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin phương thức thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_METHOD)+N': Ngày cấp CMND '+ N' không được để trống nếu phương thức thanh toán là bằng tiền mặt' ErrorDesc
770
					RETURN '-1'
771
				END
772

    
773
				IF(@ISSUED_BY = '' OR @ISSUED_BY IS NULL)
774
				BEGIN
775
					ROLLBACK TRANSACTION
776
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin phương thức thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_METHOD)+N': Tên ngân hàng/nơi cấp CMND '+ N' không được để trống' ErrorDesc
777
					RETURN '-1'
778
				END
779

    
780
				IF(@ACC_NAME = '' OR @ACC_NAME IS NULL)
781
				BEGIN
782
					ROLLBACK TRANSACTION
783
					SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin phương thức thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_METHOD)+N': Tên tài khoản/người nhận '+ N' không được để trống' ErrorDesc
784
					RETURN '-1'
785
				END
786
			END
787
		-- END VALIDATE
788
			IF(@REQ_PAY_TYPE<>'1')
789
			BEGIN
790
				SET @ISSUED_DT = NULL
791
			END
792
			IF(@TYPE_TRANSFER IS NULL OR @TYPE_TRANSFER ='')
793
			BEGIN
794
				SET @TYPE_TRANSFER = 'A'
795
			END
796

    
797
			DECLARE @p_REQ_PAY_METHOD_ID VARCHAR(15);
798
			EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_METHOD', @p_REQ_PAY_METHOD_ID OUT;
799
			IF @p_REQ_PAY_METHOD_ID='' OR @p_REQ_PAY_METHOD_ID IS NULL GOTO ABORT;
800
			INSERT INTO TR_REQ_PAY_METHOD(METHOD_ID, REQ_PAY_ID, EMP_ID, REQ_PAY_REASON, TOTAL_AMT, REQ_PAY_TYPE, REQ_PAY_DESC, REQ_PAY_ENTRIES, TEMP, MAKER_ID, CREATE_DT, ACC_NO, ACC_NAME, ISSUED_BY, ISSUED_DT, CURRENCY, RATE, CHECK_IN, TYPE_TRANSFER, BANKCODE_NAPAS, BANKCODE, BANKNAME, SUB_ISSUED_BY, RECEIVER_DEBIT)
801
			VALUES (@p_REQ_PAY_METHOD_ID,@p_REQ_PAY_ID,@RECEIVE_ID,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@REQ_PAY_TYPE,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,'',@p_MAKER_ID,GETDATE(),@ACC_NO, @ACC_NAME,@ISSUED_BY,CONVERT(DATE,@ISSUED_DT,103), @p_REQ_TYPE_CURRENCY , @p_RATE,@CHECK_IN,@TYPE_TRANSFER, @BANKCODE_NAPAS, @BANKCODE, @BANKNAME, @SUB_ISSUED_BY, @RECEIVER_DEBIT)
802
		IF @@error<>0 GOTO ABORT;
803
		FETCH NEXT FROM XmlDataMethod INTO @RECEIVE_ID,@RECEIVE_NAME,@REQ_PAY_REASON,@TOTAL_AMT_METHOD,@REQ_PAY_TYPE,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,
804
		@ACC_NO, @ACC_NAME,@ISSUED_BY, @ISSUED_DT,@CURRENCY,@RATE,@CHECK_IN,@TYPE_TRANSFER, @BANKCODE_NAPAS, @BANKCODE, @BANKNAME, @SUB_ISSUED_BY, @RECEIVER_DEBIT
805
		END
806
		CLOSE XmlDataMethod;
807
		DEALLOCATE XmlDataMethod;
808
	-- END CURSOR THONG TIN PHUONG THUC THANH TOAN
809
-- END THONG TIN PHUONG THUC THANH TOAN
810

    
811
-- BEGIN THONG TIN HOP DONG DINH KEM & THONG TIN CHUNG TU KHAC DINH KEM
812
	-- DELETE
813
		DELETE FROM TR_REQ_PAY_ATTACH WHERE REQ_PAY_ID =@p_REQ_PAY_ID
814
	-- DECLARE
815
		DECLARE @ATTACH_ID varchar(15),@CON_ID varchar(100),@CONT_CODE VARCHAR(50), @CON_NOTES VARCHAR(1000), @CON_DESC NVARCHAR(1000),@CON_TYPE VARCHAR(15),@AMT_ATT DECIMAL(18,2),@REF_DT VARCHAR(20), @LICENSE_DT VARCHAR(15)
816
	-- DECLARE CURSOR
817
		DECLARE XmlAttach CURSOR FOR SELECT * FROM OPENXML(@hdocAttach, 'Root/XmlAttach',2) 
818
		WITH(ATTACH_ID varchar(15),CON_ID varchar(100),CONT_CODE VARCHAR(50), CON_NOTES NVARCHAR(1000), CON_DESC NVARCHAR(1000),CON_TYPE VARCHAR(15),AMT_ATT DECIMAL(18,2),REF_DT VARCHAR(20), LICENSE_DT VARCHAR(15))
819
	-- BEGIN CURSOR THONG TIN CHUNG TU KHAC DINH KEM
820
		OPEN XmlAttach
821
		FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT, @LICENSE_DT
822
			WHILE @@fetch_status=0 
823
			BEGIN
824
				
825
				IF (@REF_DT='')
826
				BEGIN
827
					SET @REF_DT = NULL
828
				END
829
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_ATTACH', @ATTACH_ID OUT;
830
				IF @ATTACH_ID='' OR @ATTACH_ID IS NULL GOTO ABORT;
831
				INSERT INTO TR_REQ_PAY_ATTACH(ATTACH_ID,REQ_PAY_ID,REF_ID,REF_CODE,NOTES,[DESCRIPTION],[TYPE],[AMT],REF_DT, LICENSE_DT) VALUES
832
				(@ATTACH_ID,@p_REQ_PAY_ID,@CON_ID,@CONT_CODE,@NOTES,@CON_DESC,@CON_TYPE,@AMT_ATT,CONVERT(DATE,@REF_DT,103) ,CONVERT(DATE, @LICENSE_DT,103))
833
			IF @@error<>0 GOTO ABORT;
834
			FETCH NEXT FROM XmlAttach INTO @ATTACH_ID,@CON_ID,@CONT_CODE,@NOTES,@CON_DESC,@CON_TYPE,@AMT_ATT,@REF_DT, @LICENSE_DT
835
			END
836
		CLOSE XmlAttach;
837
		DEALLOCATE XmlAttach;    
838
-- END THONG TIN HOP DONG DINH KEM & THONG TIN CHUNG TU KHAC DINH KEM
839

    
840
		------------------------
841
	-- NEU LA THANH TOAN HOAN TAM UNG
842
		IF(@p_REQ_TYPE = 'I')
843
		BEGIN
844
		-- DELETE
845
			DELETE FROM TR_REQ_PAYMENT_DT WHERE PAY_ID = @p_REQ_PAY_ID
846

    
847
			DECLARE XmlDataPay CURSOR FOR SELECT * FROM OPENXML(@hDoc2, '/Root/XmlDataPay', 2)
848
			WITH(PAY_ADV_ID nvarchar(50),AMT_ADVANCED decimal(18, 0),AMT_DO decimal(18,2),
849
			AMT_REMAIN decimal(18,2),AMT_PAY decimal(18,2),AMT_USE decimal(18,2),AMT_REVERT DECIMAL(18,0),AMT_ADD DECIMAL(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2), TRN_DATE VARCHAR(15))
850
		-- BEGIN CURSOR THONG TIN PHIEU DE NGHI TAM UNG
851
			OPEN XmlDataPay; 
852
			FETCH NEXT FROM XmlDataPay INTO @PAY_ADV_ID, @AMT_ADVANCED ,@AMT_DO,@AMT_REMAIN,@AMT_PAY ,@AMT_USE ,@AMT_REVERT,@AMT_ADD,@CURRENCY,@RATE, @TRN_DATE
853
			WHILE @@fetch_status=0 
854
			BEGIN
855
				SET @INDEX_AD = @INDEX_AD +1
856
				SET @REQ_PAY_ADV_CODE = (SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@PAY_ADV_ID)
857
		-- BEGIN VALIDATE
858
				IF(@p_TYPE_FUNCTION ='SEND') 
859
				BEGIN
860
					-- KIEM TRA XEM CO PHIEU NAO DANG DUOC THANH TOAN HOAN TAM UNG MA CHUA DUYET HAY CHUA
861
					--IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_DT WHERE (PAY_ADV_ID =@PAY_ADV_ID AND (AUTH_STATUS_KT <>'A' OR AUTH_STATUS_KT IS NULL)) AND PAY_ID <> @p_REQ_PAY_ID))
862
					IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_DT WHERE (PAY_ADV_ID =@PAY_ADV_ID AND (AUTH_STATUS ='A' AND ISNULL(AUTH_STATUS_KT,'') <> 'A')) AND PAY_ID <> @p_REQ_PAY_ID))
863
					BEGIN
864
						ROLLBACK TRANSACTION
865
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_AD)+ N': Phiếu tạm ứng số '+@REQ_PAY_ADV_CODE+ N' đang được thanh toán hoàn tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
866
						RETURN '-1'
867
					END
868
					
869
					-- KIEM TRA NEU SO TIEN DE NGHI HOAN TAM ƯNG LON HON SO TIEN CON LAI CAN PHAI TAM UNG
870
					IF(@AMT_REVERT>(@AMT_REMAIN -@AMT_USE) AND @AMT_REVERT >0)
871
					BEGIN
872
						ROLLBACK TRANSACTION
873
						SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_AD)+ N': Số tiền hoàn ứng không được vượt quá '+FORMAT((@AMT_REMAIN -@AMT_USE),'#,#', 'vi-VN') ErrorDesc
874
						RETURN '-1'
875
					END
876
					--KIEM TRA NEU SO PHIEU TAM UNG NAY DA THANH TOAN XONG THI KHONG CHO PHEP DUYET
877
					IF((SELECT A.REQ_AMT - A.PAY_AMT FROM TR_REQ_ADVANCE_PAYMENT A WHERE A.REQ_PAY_ID = @PAY_ADV_ID)<=0)
878
					BEGIN
879
						ROLLBACK TRANSACTION
880
						SELECT '-1' Result,'' REQ_PAY_ID,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_AD)+ N': Phiếu tạm ứng này đã được hoàn tạm ứng xong. Vui lòng xóa khỏi danh sách hoàn tạm ứng' ErrorDesc
881
						RETURN '-1'
882
					END
883
					
884
				END
885
		-- END VALIDATE
886
				DECLARE @p_REQ_PAYDT_ID VARCHAR(15);
887
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAYMENT_DT', @p_REQ_PAYDT_ID OUT;
888
				IF @p_REQ_PAYDT_ID='' OR @p_REQ_PAYDT_ID IS NULL GOTO ABORT;
889
				INSERT INTO TR_REQ_PAYMENT_DT
890
				VALUES (@p_REQ_PAYDT_ID,@PAY_ADV_ID,@p_REQ_PAY_ID , ISNULL(@AMT_ADVANCED,0) ,ISNULL(@AMT_DO,0),ISNULL(@AMT_REMAIN,0),
891
				ISNULL(ISNULL(@AMT_USE,0) + ISNULL(@AMT_REVERT,0) - ISNULL(@AMT_ADD,0),0) ,ISNULL(@AMT_USE,0) ,ISNULL(@AMT_REVERT,0), ISNULL(@AMT_ADD,0), CONVERT(DATE,@TRN_DATE,103)  ,@p_MAKER_ID ,GETDATE() ,NULL ,NULL,'U' ,NULL ,NULL ,NULL ,NULL,NULL, @p_REQ_TYPE_CURRENCY , @p_RATE)
892
			IF @@error<>0 GOTO ABORT;
893
			FETCH NEXT FROM XmlDataPay INTO @PAY_ADV_ID, @AMT_ADVANCED ,@AMT_DO,@AMT_REMAIN,@AMT_PAY ,@AMT_USE ,@AMT_REVERT,@AMT_ADD,@CURRENCY,@RATE, @TRN_DATE
894
			END
895
			CLOSE XmlDataPay;
896
			DEALLOCATE XmlDataPay;
897
		--END CURSOR THONG TIN PHIEU DE NGHI TAM UNG
898
		--------------------------------------------------------------------------------------------------------------------
899
		--INSERT FROM CatCursor
900
		--DELETE
901
			DELETE FROM TR_REQ_PAY_CAT WHERE REQ_PAY_ID = @p_REQ_PAY_ID
902
			--CatCursor
903
			DECLARE @REQ_ADV_ID varchar(15),@CAT_NAME nvarchar(100),@TOTAL_AMT_CAT decimal(18,2), @DEPT_ID VARCHAR(15)
904
			DECLARE XmlDataCat CURSOR FOR
905
			SELECT * FROM OPENXML(@hdoc, 'Root/XmlDataCat',2) 
906
			WITH(REQ_ADV_ID VARCHAR(15),CAT_NAME nvarchar(100),TOTAL_AMT decimal(18,2), DEPT_ID VARCHAR(15),CURRENCY VARCHAR(15), RATE DECIMAL(18,2))
907
			OPEN XmlDataCat
908
			FETCH NEXT FROM XmlDataCat INTO @REQ_ADV_ID,@CAT_NAME,@TOTAL_AMT_CAT,@DEPT_ID,@CURRENCY,@RATE
909
			WHILE @@fetch_status=0 
910
			BEGIN
911
				SET @INDEX = @INDEX +1
912
				DECLARE @p_REQ_PAY_CAT_ID VARCHAR(15);
913
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_CAT', @p_REQ_PAY_CAT_ID OUT;
914
				IF @p_REQ_PAY_CAT_ID='' OR @p_REQ_PAY_CAT_ID IS NULL GOTO ABORT;
915
				INSERT INTO TR_REQ_PAY_CAT
916
				VALUES (@p_REQ_PAY_CAT_ID,@p_REQ_PAY_ID,@REQ_ADV_ID,@CAT_NAME,@TOTAL_AMT_CAT,@DEPT_ID,@p_MAKER_ID,GETDATE(), @p_REQ_TYPE_CURRENCY , @p_RATE)
917
			IF @@error<>0 GOTO ABORT;
918
			FETCH NEXT FROM XmlDataCat INTO @REQ_ADV_ID,@CAT_NAME,@TOTAL_AMT_CAT,@DEPT_ID,@CURRENCY,@RATE
919
			END
920
			CLOSE XmlDataCat;
921
			DEALLOCATE XmlDataCat;
922
		END
923
	-- NEU LA THANH TOAN KHAC
924
		IF(@p_REQ_TYPE = 'D' OR @p_REQ_TYPE ='I')
925
		BEGIN
926
		-- DELETE
927
			DELETE FROM TR_REQ_PAY_SERVICE WHERE REQ_PAY_ID = @p_REQ_PAY_ID
928
		-- DECLARE
929
			DECLARE @SUM_TTCT_LINK DECIMAL(18,0), @SUM_TT_CT DECIMAL(18,0), @SUM_KUY_KE_TT DECIMAL(18,0),@SUM_PYCMS_LINK DECIMAL(18,0), 
930
			@PYCMS_CODE_LIST VARCHAR(MAX), @PYCMS_CODE_DRAFT_LIST VARCHAR(MAX), @PDNTT_CODE_LIST VARCHAR(MAX), @PDNTT_CODE_DRAFT_LIST VARCHAR(MAX)
931
			DECLARE @REQ_PAY_SERVICE_NAME nvarchar(100),@RECEIVE_ID_SERVICE varchar(15),@RECEIVE_NAME_SERVICE nvarchar(100),@REQ_PAY_REASON_SERVICE nvarchar(MAX), @TOTAL_AMT_SERVICE decimal(18,2),
932
			@REQ_PAY_TYPE_SERVICE varchar(1),@REQ_PAY_DESC_SERVICE nvarchar(MAX),@REQ_PAY_ENTRIES_SERVICE nvarchar(MAX),@DEPT_ID_SRV VARCHAR(15)
933
		-- SET
934
			SET @SUM_KUY_KE_TT=0
935
			SET @INDEX = 0
936
		-- DECLARE CURSOR
937
			DECLARE XmlDataService CURSOR FOR SELECT * FROM OPENXML(@hdocService, 'Root/XmlDataService',2)
938
			WITH(REQ_PAY_SERVICE_NAME nvarchar(100),RECEIVE_ID_SERVICE varchar(15),RECEIVE_NAME_SERVICE nvarchar(100),REQ_PAY_REASON_SERVICE nvarchar(MAX),
939
			TOTAL_AMT_SERVICE decimal(18,2),REQ_PAY_TYPE_SERVICE varchar(1),REQ_PAY_DESC_SERVICE nvarchar(MAX),REQ_PAY_ENTRIES_SERVICE nvarchar(MAX), 
940
			DEPT_ID VARCHAR(15),CURRENCY VARCHAR(15), RATE DECIMAL(18,2))
941
		-- BEGIN CURSOR THONG TIN CAC DICH VU THANH TOAN
942
			OPEN XmlDataService
943
			FETCH NEXT FROM XmlDataService INTO @REQ_PAY_SERVICE_NAME,@RECEIVE_ID_SERVICE,@RECEIVE_NAME_SERVICE,@REQ_PAY_REASON_SERVICE,@TOTAL_AMT_SERVICE,
944
			@REQ_PAY_TYPE_SERVICE,@REQ_PAY_DESC_SERVICE,@REQ_PAY_ENTRIES_SERVICE,@DEPT_ID_SRV,@CURRENCY,@RATE
945
			WHILE @@fetch_status=0 
946
			BEGIN
947
				SET @INDEX = @INDEX +1
948
				SET @SUM_TTCT_LINK =(SELECT SUM(TOTAL_AMT*ISNULL(RATE,1)) FROM TR_REQ_PAY_SERVICE WHERE
949
						REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT) AND REQ_PAY_ID <> @p_REQ_PAY_ID AND EMP_ID =@RECEIVE_ID_SERVICE)
950
				SET @SUM_PYCMS_LINK =ISNULL((SELECT SUM(TOTAL_AMT) FROM TR_REQUEST_DOC WHERE PL_REQ_ID =@RECEIVE_ID_SERVICE),0)
951
				SET @SUM_TT_CT =(SELECT ISNULL(TOTAL_AMT,0) FROM PL_REQUEST_DOC WHERE REQ_ID =@RECEIVE_ID_SERVICE)
952
				SET @PYCMS_CODE_LIST = (select STUFF( (select '; ' + DTA.REQ_CODE FROM TR_REQUEST_DOC DTA WHERE PL_REQ_ID =@RECEIVE_ID_SERVICE
953
				FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
954
				SET @PYCMS_CODE_DRAFT_LIST = (select STUFF( (select '; ' + DTA.REQ_CODE FROM TR_REQUEST_DOC DTA WHERE PL_REQ_ID =@RECEIVE_ID_SERVICE AND AUTH_STATUS = 'E'
955
				FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
956
				SET @PDNTT_CODE_LIST = (select STUFF( (select '; ' + DTA.REQ_PAY_CODE FROM TR_REQ_PAYMENT DTA WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAY_SERVICE WHERE EMP_ID =@RECEIVE_ID_SERVICE) AND REQ_PAY_ID <> @p_REQ_PAY_ID AND AUTH_STATUS NOT IN('E', 'R')
957
				FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
958
				SET @PDNTT_CODE_DRAFT_LIST = (select STUFF( (select '; ' + DTA.REQ_PAY_CODE FROM TR_REQ_PAYMENT DTA WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAY_SERVICE WHERE EMP_ID =@RECEIVE_ID_SERVICE) AND REQ_PAY_ID <> @p_REQ_PAY_ID AND AUTH_STATUS IN('E', 'R')
959
				FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
960
			--------------- BEGIN VALIDATE --------------
961
				IF(@p_TYPE_FUNCTION ='SEND')
962
				BEGIN
963
					IF(@DEPT_ID_SRV IS NULL OR @DEPT_ID_SRV ='')
964
					BEGIN
965
						ROLLBACK TRANSACTION
966
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin các dịch vụ thanh toán, dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Phòng ban chịu chi phí không được để trống' ErrorDesc
967
						RETURN '-1'
968
					END	
969
				
970
					IF(@TOTAL_AMT_SERVICE IS NULL)
971
					BEGIN
972
						ROLLBACK TRANSACTION
973
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin các dịch vụ thanh toán, dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Số tiền thanh toán không được để trống' ErrorDesc
974
						RETURN '-1'
975
					END
976
				
977
					IF(@TOTAL_AMT_SERVICE < 0)
978
					BEGIN
979
						ROLLBACK TRANSACTION
980
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin các dịch vụ thanh toán, dòng '+ CONVERT(VARCHAR(5),@INDEX)+ N': Số tiền thanh toán không thể nhỏ hơn 0' ErrorDesc
981
						RETURN '-1'
982
					END
983

    
984
					IF(((ISNULL(@SUM_TTCT_LINK,0) +ISNULL(@SUM_PYCMS_LINK,0) + ISNULL(@TOTAL_AMT_SERVICE,0)) > ISNULL(@SUM_TT_CT,0)) AND @RECEIVE_ID_SERVICE IS NOT NULL AND @RECEIVE_ID_SERVICE <> '')
985
					BEGIN
986
						ROLLBACK TRANSACTION
987
						SELECT '-1' as Result, @p_REQ_PAY_ID  REQ_PAY_ID,''  AS REQ_PAY_CODE,
988
						N'Dòng '+ CONVERT(VARCHAR(5),@INDEX)+N': Thông tin chi tiết về hạn mức sử dụng của tờ trình số: '+(SELECT TOP 1 ISNULL(REQ_CODE,'') FROM PL_REQUEST_DOC WHERE REQ_ID =@RECEIVE_ID_SERVICE)+N' như sau:'
989
						+ CHAR(10) + 
990
						N'</br>* Số tiền các phiếu yêu cầu mua sắm số:'+ISNULL(@PYCMS_CODE_LIST,'')+N' đã sử dụng: '+FORMAT(ISNULL(@SUM_PYCMS_LINK,0),'#,#', 'vi-VN') +' VND'+
991
						+ CHAR(10) + 
992
						N'</br>* Số tiền ở các phiếu thanh toán số: '+ISNULL(@PDNTT_CODE_LIST,'')+N' đã sử dụng: '+ FORMAT(ISNULL(@SUM_TTCT_LINK,0),'#,#', 'vi-VN') +' VND'
993
						+ CHAR(10) + 
994
						N'</br>* Bạn đang thanh toán cho phiếu này với số tiền: '+ FORMAT(ISNULL(@TOTAL_AMT_SERVICE,0),'#,#', 'vi-VN') +' VND'
995
						+ CHAR(10) + 
996
						N'</br>* Số tiền còn lại được phép thanh toán là: '+FORMAT(ISNULL(@SUM_TT_CT,0) -ISNULL(@SUM_TTCT_LINK,0) -ISNULL(@SUM_PYCMS_LINK,0),'#,#', 'vi-VN') +' VND'  
997
						+ CHAR(10) + 
998
						N'</br>* Chú ý những PYCMS sau đang lưu nháp & ăn ngân sách, vui lòng kiểm tra và xóa PYCMS: ' + ISNULL(@PYCMS_CODE_DRAFT_LIST,'')
999
						+ CHAR(10) + 
1000
						N'</br>* Chú ý những PDN thanh toán sau đang lưu nháp hoặc từ chối & ăn ngân sách, vui lòng kiểm tra và xóa PDN thanh toán: ' + ISNULL(@PDNTT_CODE_DRAFT_LIST,'') ErrorDesc
1001
						RETURN '-1'
1002
					END
1003
				END
1004
			--------------- END VALIDATE ----------------
1005
				--IF(@RECEIVE_ID_SERVICE IS NOT NULL AND @RECEIVE_ID_SERVICE <> '')
1006
				--BEGIN
1007
				--	SET @SUM_PYCMS_LINK = @SUM_PYCMS_LINK +@TOTAL_AMT_SERVICE
1008
				--END
1009
				--SET @SUM_KUY_KE_TT = @SUM_KUY_KE_TT + @TOTAL_AMT_SERVICE
1010
				
1011
				DECLARE @p_REQ_PAY_SERVICE_ID VARCHAR(15);
1012
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_SERVICE', @p_REQ_PAY_SERVICE_ID OUT;
1013
				IF @p_REQ_PAY_SERVICE_ID='' OR @p_REQ_PAY_SERVICE_ID IS NULL GOTO ABORT;
1014
				INSERT INTO TR_REQ_PAY_SERVICE(SERVICE_ID,REQ_PAY_ID,[SERVICE_NAME],EMP_ID,REQ_PAY_REASON,TOTAL_AMT,REQ_PAY_TYPE,REQ_PAY_DESC,REQ_PAY_ENTRIES,MAKER_ID,CREATE_DT,DEPT_ID,CURRENCY,RATE)
1015
				VALUES (@p_REQ_PAY_SERVICE_ID,@p_REQ_PAY_ID,@REQ_PAY_SERVICE_NAME,@RECEIVE_ID_SERVICE,@REQ_PAY_REASON_SERVICE,@TOTAL_AMT_SERVICE,
1016
				@REQ_PAY_TYPE_SERVICE,@REQ_PAY_DESC_SERVICE,@REQ_PAY_ENTRIES_SERVICE,@p_MAKER_ID,GETDATE(),@DEPT_ID_SRV, @p_REQ_TYPE_CURRENCY , @p_RATE)
1017
			IF @@error<>0 GOTO ABORT;
1018
			FETCH NEXT FROM XmlDataService INTO @REQ_PAY_SERVICE_NAME,@RECEIVE_ID_SERVICE,@RECEIVE_NAME_SERVICE,@REQ_PAY_REASON_SERVICE,@TOTAL_AMT_SERVICE,@REQ_PAY_TYPE_SERVICE,
1019
			@REQ_PAY_DESC_SERVICE,@REQ_PAY_ENTRIES_SERVICE,@DEPT_ID_SRV,@CURRENCY,@RATE
1020
			END
1021
			CLOSE XmlDataService;
1022
			DEALLOCATE XmlDataService;
1023
		-- BEGIN CURSOR THONG TIN CAC DICH VU THANH TOAN
1024
		END
1025
		IF((@p_REQ_TYPE = 'P' AND (@p_IS_PERIOD <>'Y' OR @p_IS_PERIOD IS NULL)) OR (@p_REQ_TYPE = 'P' AND @p_IS_PERIOD = 'Y') OR @p_REQ_TYPE ='I')
1026
		BEGIN
1027
			DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID= @p_REQ_PAY_ID
1028
			DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID= @p_REQ_PAY_ID
1029
		END
1030
	-- NEU LA THANH TOAN PO HOP DONG
1031
		IF((@p_REQ_TYPE = 'P' AND (@p_IS_PERIOD <>'Y' OR @p_IS_PERIOD IS NULL)) OR @p_REQ_TYPE ='I')
1032
		BEGIN
1033
		-- DELETE
1034
			--DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID= @p_REQ_PAY_ID
1035
			/*
1036
			IF(@p_REQ_TYPE = 'P' AND (@p_IS_PERIOD <>'Y' OR @p_IS_PERIOD IS NULL))
1037
			BEGIN
1038
				DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID= @p_REQ_PAY_ID
1039
			END
1040
			*/
1041
		-- DECLARE
1042
			DECLARE @INDEX_PO INT, @REF_ID VARCHAR(15),@IS_CLOSED VARCHAR(1)
1043
		--SET
1044
			SET @INDEX_PO = 0
1045
		-- DECLARE CURSOR
1046
			DECLARE XmlDataPO CURSOR FOR SELECT * FROM OPENXML(@hdocPO, '/Root/XmlDataPO', 2)
1047
			WITH(REF_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15))
1048
		-- BEGIN CURSOR THÔNG TIN PO/ HOP DONG
1049
			OPEN XmlDataPO;
1050
			FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
1051
			WHILE @@fetch_status=0 
1052
			BEGIN
1053
			-- SET
1054
				SET @INDEX_PO = @INDEX_PO +1
1055
			-- BEGIN VALIDATE
1056
				IF(@p_TYPE_FUNCTION ='SEND') 
1057
				BEGIN
1058
					DECLARE @PDN_TAMUNG_LIST VARCHAR(4000) --- LUCTV 19.10.2022
1059
					-- KIEM TRA PO DUOC DUYET HAY CHUA
1060
					--IF(EXISTS(SELECT * FROM TR_PO_MASTER WHERE PO_ID =@REF_ID AND AUTH_STATUS <>'A'))
1061
					--BEGIN
1062
					--ROLLBACK TRANSACTION
1063
					--	SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin PO/ hợp đồng, dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
1064
					--	(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' chưa được phê duyệt. Vui lòng phê duyệt PO trước khi tạo phiếu thanh toán' ErrorDesc
1065
					--	RETURN '-1'
1066
					--END
1067
					---- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
1068
					--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='C' 
1069
					--AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))
1070
					--BEGIN
1071
					--	ROLLBACK TRANSACTION
1072
					--	SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Thông tin PO/ hợp đồng, dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
1073
					--	(SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
1074
					--	RETURN '-1'
1075
					--END
1076
					---- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
1077
					--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='C'
1078
					--AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID))
1079
					--BEGIN
1080
					--	ROLLBACK TRANSACTION
1081
					--	SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin PO/ hợp đồng, dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
1082
					--	(SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được thanh toán. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
1083
					--	RETURN '-1'
1084
					--END
1085
					---- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
1086
					--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' 
1087
					--AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT NOT IN ('A','E','R') OR AUTH_STATUS_KT IS NULL)))
1088
					--BEGIN
1089
					--	ROLLBACK TRANSACTION
1090
					--	SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Thông tin PO/ hợp đồng, dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N':PO số '+
1091
					--	(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
1092
					--	RETURN '-1'
1093
					--END
1094
					---- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
1095
					--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' AND REF_ID IN (SELECT PO_ID FROM TR_PO_MASTER WHERE IS_CLOSED='Y')))
1096
					--BEGIN
1097
					--	ROLLBACK TRANSACTION
1098
					--	SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin PO/ hợp đồng, dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
1099
					--	(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đã được thanh toán xong. Vui lòng chọn PO khác để tạm ứng hoặc xóa bản nháp này' ErrorDesc
1100
					--	RETURN '-1'
1101
					--END
1102
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
1103
						--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='C' AND REQ_PAY_ID 
1104
						--IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL)))
1105
						--BEGIN
1106
						--	ROLLBACK TRANSACTION
1107
						--	SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
1108
						--	(SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
1109
						--	RETURN '-1'
1110
						--END
1111
						---- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
1112
						--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='C' AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID))
1113
						--BEGIN
1114
						--	ROLLBACK TRANSACTION
1115
						--	SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
1116
						--	(SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được thanh toán. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
1117
						--	RETURN '-1'
1118
						--END
1119
						--IF(EXISTS(SELECT * FROM TR_REQ_PAY_SCHEDULE WHERE REF_ID =@REF_ID AND PAY_ID =@PAY_ID AND 
1120
						--			REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT<>'A' OR AUTH_STATUS_KT IS NULL) AND REQ_PAY_ID <>@p_REQ_PAY_ID))
1121
						--BEGIN
1122
						--	ROLLBACK TRANSACTION
1123
						--	SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Hợp đồng số '+
1124
						--	(SELECT CONTRACT_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @REF_ID)+N' đang được thanh toán. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
1125
						--	RETURN '-1'
1126
						--END
1127
						-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
1128
						SET @PDN_TAMUNG_LIST = (select STUFF( (select '; ' + DTA.REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT DTA WHERE REQ_PAY_ID IN 
1129
						(SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P') AND ISNULL(AUTH_STATUS_KT,'') NOT IN ('A','E','R')
1130
						FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, ''))
1131
						--- VALIDATE PO DANG TRONG QUA TRINH TAM UNG
1132
						IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' AND REQ_PAY_ID 
1133
						IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT NOT IN ('A','E','R') OR AUTH_STATUS_KT IS NULL)))
1134
						BEGIN
1135
							ROLLBACK TRANSACTION
1136
							SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N':PO số '+
1137
							(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất.Danh sách phiếu tạm ứng đang sử dụng: '+ ISNULL(@PDN_TAMUNG_LIST,'') ErrorDesc
1138
							RETURN '-1'
1139
						END
1140
						-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
1141
						IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' AND REF_ID IN (SELECT PO_ID FROM TR_PO_MASTER WHERE IS_CLOSED='Y')))
1142
						BEGIN
1143
							ROLLBACK TRANSACTION
1144
							SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
1145
							(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đã được thanh toán xong. Vui lòng chọn PO khác để tạm ứng hoặc xóa bản nháp này' ErrorDesc
1146
							RETURN '-1'
1147
						END
1148
				END
1149
			-- END VALIDATE
1150
				DECLARE @REQ_PAYDTID VARCHAR(15);
1151
				EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID OUT;
1152
				IF @REQ_PAYDTID='' OR @REQ_PAYDTID IS NULL GOTO ABORT;
1153
				IF(LEFT(@REF_ID, 3) = 'TRC')
1154
				BEGIN
1155
					INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) 
1156
					VALUES (@REQ_PAYDTID,@p_REQ_PAY_ID,@REF_ID,'PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED, 'C')
1157
				END
1158
				ELSE
1159
				BEGIN
1160
					INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE) 
1161
					VALUES (@REQ_PAYDTID,@p_REQ_PAY_ID,@REF_ID,'PAY',@p_MAKER_ID,GETDATE(),@IS_CLOSED, 'P')
1162
				END
1163
				
1164
			IF @@error<>0 GOTO ABORT;
1165
			FETCH NEXT FROM XmlDataPO INTO @REF_ID,@IS_CLOSED,@REF_TYPE
1166
			END
1167
			CLOSE XmlDataPO;
1168
			DEALLOCATE XmlDataPO;
1169
		-- END CURSOR THÔNG TIN PO/ HOP DONG
1170

    
1171
		-- DELETE
1172
			DELETE FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID = @p_REQ_PAY_ID
1173
		-- DECLARE
1174
			DECLARE @PO_ID VARCHAR(15), @PAY_PHASE NVARCHAR(250), @AMT_ADVANCE DECIMAL(18,2),
1175
			@REQ_AD_DT VARCHAR(20),@PROCESS VARCHAR(15),@PAY_ID VARCHAR(15),@AMT_PAY_DO DECIMAL(18,2),@AMT_PAY_REAL DECIMAL(18,2)
1176
		-- DECLARE CURSOR THONG TIN CHI TIET LICH THANH TOAN PO/ HOP DONG
1177
			DECLARE XmlDataSchedule CURSOR FOR SELECT * FROM OPENXML(@hdocSchedule, 'Root/XmlDataSchedule',2)
1178
			WITH(PO_ID VARCHAR(15),PAY_PHASE VARCHAR(15),AMT_PAY DECIMAL(18,2),REQ_ADV_ID VARCHAR(15), AMT_ADVANCE DECIMAL(18,2),
1179
			AMT_REMAIN DECIMAL(18,2),REQ_AD_DT VARCHAR(20),PROCESS VARCHAR(15), PAY_ID VARCHAR(15),REF_ID VARCHAR(15),REQ_PAY_DESC NVARCHAR(250),
1180
			REQ_PAY_ENTRIES NVARCHAR(250),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),AMT_PAY_DO DECIMAL(18,2),AMT_PAY_REAL DECIMAL(18,2))
1181
		-- BEGIN CURSOR THONG TIN CHI TIET LICH THANH TOAN PO/ HOP DONG 
1182
			OPEN XmlDataSchedule
1183
			SET @INDEX_PO = 0
1184
			FETCH NEXT FROM XmlDataSchedule INTO @PO_ID,@PAY_PHASE,@AMT_PAY, @REQ_ADV_ID,@AMT_ADVANCE,@AMT_REMAIN,@REQ_AD_DT,
1185
			@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_DO,@AMT_PAY_REAL
1186
			WHILE @@fetch_status=0 
1187
			BEGIN
1188
				--IF(@AMT_REMAIN =0)
1189
				--BEGIN
1190
				--	SET @PROCESS ='3'
1191
				--END
1192
				--IF(@PROCESS <>'2')
1193
				--BEGIN
1194
				--	SET @TOTAL_SCHEDULE_AMT = @TOTAL_SCHEDULE_AMT +@AMT_REMAIN
1195
				--END
1196
				SET @INDEX_PO = @INDEX_PO +1
1197
				SET @TOTAL_SCHEDULE_AMT = @TOTAL_SCHEDULE_AMT +(@AMT_PAY - @AMT_ADVANCE -@AMT_PAY_DO)
1198
			-- BEGIN VALIDATE
1199
				IF(@p_TYPE_FUNCTION ='SEND' AND @p_REQ_TYPE ='P')
1200
				BEGIN
1201
					IF(ISNULL(@AMT_PAY_REAL,0) < ISNULL(@AMT_ADVANCE ,0))
1202
					BEGIN
1203
						ROLLBACK TRANSACTION
1204
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': Số tiền thanh toán thực tế tối thiểu phải bằng số tiền đã tạm ứng : ' +FORMAT(SUM(@AMT_ADVANCE),'#,#', 'vi-VN')  ErrorDesc
1205
						RETURN '-1'
1206
					END
1207
				END
1208
			-- END VALIDATE
1209
				DECLARE @p_REQ_PAY_SCHEDULE_ID VARCHAR(15);
1210
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_SCHEDULE', @p_REQ_PAY_SCHEDULE_ID OUT;
1211
				IF @p_REQ_PAY_SCHEDULE_ID='' OR @p_REQ_PAY_SCHEDULE_ID IS NULL GOTO ABORT;
1212

    
1213
				INSERT INTO TR_REQ_PAY_SCHEDULE (SCHEDULE_ID,REQ_PAY_ID,PAY_ID,AMT_PAY,PAY_PHASE,REQ_ADV_ID,AMT_ADVANCE,AMT_PAY_DO,AMT_REMAIN,REQ_PAY_DT,REQ_AD_DT,PROCESS,MAKER_ID,
1214
				CREATE_DT,AUTH_STATUS_KT,PAYMENT_STATUS,TRN_TYPE,REF_ID,REQ_PAY_DESC,REQ_PAY_ENTRIES,CURRENCY,RATE, AMT_PAY_REAL)
1215
				VALUES (@p_REQ_PAY_SCHEDULE_ID,@p_REQ_PAY_ID,@PAY_ID, @AMT_PAY, @PAY_PHASE, @REQ_ADV_ID, @AMT_ADVANCE, @AMT_PAY_DO, @AMT_REMAIN,
1216
				--IIF(@PROCESS<>'2',(@AMT_PAY-@AMT_ADVANCE),0),
1217
				GETDATE(),CONVERT(DATETIME,@REQ_AD_DT,103),@PROCESS,@p_MAKER_ID,GETDATE(),'U','','PAY',@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES, @p_REQ_TYPE_CURRENCY , @p_RATE,@AMT_PAY_REAL)
1218
			IF @@error<>0 GOTO ABORT;
1219
			FETCH NEXT FROM XmlDataSchedule INTO @PO_ID, @PAY_PHASE, @AMT_PAY, @REQ_ADV_ID, @AMT_ADVANCE,@AMT_REMAIN,@REQ_AD_DT,
1220
			@PROCESS,@PAY_ID,@REF_ID,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@CURRENCY,@RATE,@AMT_PAY_DO,@AMT_PAY_REAL
1221
			END
1222
			CLOSE XmlDataSchedule;
1223
			DEALLOCATE XmlDataSchedule;
1224
		-- END CURSOR THONG TIN CHI TIET LICH THANH TOAN PO/ HOP DONG 
1225
			---- VALIDATE SO TIEN
1226
			--IF(@p_REQ_AMT > ISNULL(@TOTAL_SCHEDULE_AMT,0))
1227
			--BEGIN
1228
			--	ROLLBACK TRANSACTION
1229
			--	SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền thanh toán phải nhỏ hơn hoặc bằng tổng số tiền còn lại cần thanh toán: '+  FORMAT(SUM(@TOTAL_SCHEDULE_AMT),'#,#', 'vi-VN') ErrorDesc
1230
			--	RETURN '-1'
1231
			--END
1232
	     ------
1233
		END
1234
	-- NEU LA THANH TOAN CAC HOP DONG DINH KY
1235
		IF((@p_REQ_TYPE = 'P' AND @p_IS_PERIOD = 'Y') OR @p_REQ_TYPE='I')
1236
		BEGIN
1237
		-- DELETE
1238
			--DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID= @p_REQ_PAY_ID
1239
			/*
1240
			IF(@p_REQ_TYPE = 'P' AND @p_IS_PERIOD = 'Y')
1241
			BEGIN
1242
				DELETE FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID= @p_REQ_PAY_ID
1243
			END
1244
			*/
1245
		-- DECLARE
1246
			DECLARE @CONTRACT_PERIOD_ID VARCHAR(15),@IS_PERIOD_CLOSED VARCHAR(1), @DELIVERY_DT VARCHAR(20)
1247
		--DECLARE CURSOR THONG TIN HOP DONG DINH KY
1248
			DECLARE XmlDataRecurring CURSOR FOR SELECT * FROM OPENXML(@hdocRecurring, '/Root/XmlDataRecurring', 2)
1249
			WITH(CONTRACT_ID varchar(15),IS_CLOSED VARCHAR(1),REF_TYPE VARCHAR(15), DELIVERY_DT VARCHAR(20))
1250
		-- BEGIN CURSOR THONG TIN HOP DONG DINH KY
1251
			OPEN XmlDataRecurring;
1252
			FETCH NEXT FROM XmlDataRecurring INTO @CONTRACT_PERIOD_ID,@IS_PERIOD_CLOSED,@REF_TYPE, @DELIVERY_DT
1253
			WHILE @@fetch_status = 0 
1254
			BEGIN
1255
			-- SET
1256
				SET @INDEX_PO = @INDEX_PO +1
1257
			-- BEGIN VALIDATE
1258
				IF(@p_TYPE_FUNCTION ='SEND') 
1259
				BEGIN
1260
					IF(EXISTS(SELECT * FROM TR_PO_MASTER WHERE PO_ID =@REF_ID AND AUTH_STATUS <>'A'))
1261
					BEGIN
1262
						ROLLBACK TRANSACTION
1263
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
1264
						(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' chưa được phê duyệt. Vui lòng phê duyệt PO trước khi tạo phiếu thanh toán' ErrorDesc
1265
						RETURN '-1'
1266
					END
1267

    
1268
					IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' AND REQ_PAY_ID 
1269
					IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT NOT IN ('A','E','R') OR AUTH_STATUS_KT IS NULL)))
1270
					BEGIN
1271
						ROLLBACK TRANSACTION
1272
						SELECT '-1' as Result, '' REQ_PAY_ID, ''  AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N':PO số '+
1273
						(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đang được tạm ứng. Vui lòng đợi giao dịch hoàn tất' ErrorDesc
1274
						RETURN '-1'
1275
					END
1276

    
1277
					-- KIEM TRA NEU CO PO NAO DO DANG THUC HIEN THANH TOAN HOAC TAM UNG THI PHAI THONG BAO CHO HOAN TAT GIAO DICH
1278
					IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@REF_ID AND REF_TYPE ='P' AND REF_ID IN (SELECT PO_ID FROM TR_PO_MASTER WHERE IS_CLOSED='Y')))
1279
					BEGIN
1280
						ROLLBACK TRANSACTION
1281
						SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PO)+ N': PO số '+
1282
						(SELECT PO_CODE FROM TR_PO_MASTER WHERE PO_ID = @REF_ID)+N' đã được thanh toán xong. Vui lòng chọn PO khác để tạm ứng hoặc xóa bản nháp này' ErrorDesc
1283
						RETURN '-1'
1284
					END
1285
				END
1286
			-- END VALIDATE
1287
				DECLARE @REQ_PAYDTID_PERIOD VARCHAR(15);
1288
				EXEC SYS_CodeMasters_Gen 'TR_REQ_ADVANCE_DT', @REQ_PAYDTID_PERIOD OUT;
1289
				IF @REQ_PAYDTID_PERIOD='' OR @REQ_PAYDTID_PERIOD IS NULL GOTO ABORT;
1290
				INSERT INTO TR_REQ_ADVANCE_DT (REQ_PAYDTID,REQ_PAY_ID,REF_ID,TYPE,MAKER_ID,CREATE_DT,IS_CLOSED,REF_TYPE, DELIVERY_DT) 
1291
				VALUES(@REQ_PAYDTID_PERIOD,@p_REQ_PAY_ID,@CONTRACT_PERIOD_ID,'PAY',@p_MAKER_ID,GETDATE(),@IS_PERIOD_CLOSED,'C', CONVERT(DATE,@DELIVERY_DT,103))
1292

    
1293
			IF @@error<>0 GOTO ABORT;
1294
			FETCH NEXT FROM XmlDataRecurring INTO @CONTRACT_PERIOD_ID,@IS_PERIOD_CLOSED,@REF_TYPE, @DELIVERY_DT
1295
			END
1296
			CLOSE XmlDataRecurring;
1297
			DEALLOCATE XmlDataRecurring;
1298
		-- END CURSOR THONG TIN HOP DONG DINH KY
1299

    
1300
		-- DECLARE
1301
			DECLARE @INDEX_PERIOD INT
1302
		--SET
1303
			SET @INDEX_PERIOD = 0
1304
		-- DELETE
1305
			DELETE FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID = @p_REQ_PAY_ID
1306
		-- DECLARE
1307
			DECLARE @CONTRACT_ID varchar(15),@PAY_DT_REAL VARCHAR(20),@PAY_TYPE VARCHAR(5), @OLD_INDEX DECIMAL(18,0),@NEW_INDEX DECIMAL(18,0),@AMT_PAY_PERIOD DECIMAL(18,2), @FROM_DATE VARCHAR(20),
1308
			@TO_DATE VARCHAR(20),@AD_PAY_ID VARCHAR(15),  @_PROCESS VARCHAR(15),@PARENT_ID VARCHAR(15),@REASON_TTDK NVARCHAR(2000)
1309
		-- DECLARE CURSOR
1310
			DECLARE XmlDataPeriod CURSOR FOR SELECT * FROM OPENXML(@hdocPeriod, '/Root/XmlDataPeriod', 2)
1311
			WITH(CONTRACT_ID varchar(15),PAY_DT_REAL VARCHAR(20),PAY_TYPE VARCHAR(5), OLD_INDEX DECIMAL(18,0),NEW_INDEX DECIMAL(18,0),AMT_PAY DECIMAL(18,2),CURRENCY VARCHAR(5), 
1312
			RATE DECIMAL(18,0),FROM_DATE VARCHAR(20), TO_DATE VARCHAR(20), AD_PAY_ID VARCHAR(15), PROCESS VARCHAR(5),PARENT_ID VARCHAR(15),PAY_PHASE NVARCHAR(250),REASON NVARCHAR(2000))
1313
		-- BEGIN CURSOR THONG TIN THANH TOAN HOP DONG DINH KY
1314
			OPEN XmlDataPeriod;
1315
			FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE, @OLD_INDEX , @NEW_INDEX , @AMT_PAY_PERIOD, @CURRENCY, @RATE, @FROM_DATE, @TO_DATE, @AD_PAY_ID, @_PROCESS, @PARENT_ID, 
1316
			@PAY_PHASE, @REASON_TTDK
1317
			WHILE @@fetch_status=0 
1318
			BEGIN
1319
			-- SET
1320
				SET @INDEX_PERIOD = @INDEX_PERIOD +1
1321
			-- BEGIN VALIDATE
1322
				IF(@p_TYPE_FUNCTION ='SEND') 
1323
				BEGIN
1324
					IF(@NEW_INDEX <=@OLD_INDEX AND (@NEW_INDEX >0 AND @OLD_INDEX >0) )
1325
					BEGIN
1326
						ROLLBACK TRANSACTION
1327
						SELECT '-1' as Result, @p_REQ_PAY_ID  REQ_PAY_ID,''  AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PERIOD)+ N' lưới thông tin thanh toán hợp đồng định kì: Chỉ số mới phải lớn hơn chỉ số cũ' ErrorDesc
1328
						RETURN '-1'
1329
					END
1330
					-- NEU LÀ DINH KI THI HD PHAI KHAC NULL
1331
					IF(@CONTRACT_ID IS NULL OR @CONTRACT_ID ='' )
1332
					BEGIN
1333
						ROLLBACK TRANSACTION
1334
						SELECT '-1' as Result, @p_REQ_PAY_ID  REQ_PAY_ID,''  AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PERIOD)+ N' lưới thông tin thanh toán hợp đồng định kì: Cột Số hợp đồng không được phép để trống' ErrorDesc
1335
						RETURN '-1'
1336
					END
1337
					-- KIEM TRA CHI TIET HOP DONG PHAI NAM TRONG DANH SACH CAC HOP DONG
1338
					IF(@CONTRACT_ID IS NOT NULL AND  @CONTRACT_ID <> '' )
1339
					BEGIN
1340
						IF(NOT EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND REF_ID =@CONTRACT_ID))
1341
						BEGIN
1342
							ROLLBACK TRANSACTION
1343
							SELECT '-1' as Result, @p_REQ_PAY_ID  REQ_PAY_ID,''  AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PERIOD)+ N' lưới thông tin thanh toán hợp đồng định kì - Số hợp đồng phải nằm trong danh sách các hợp đồng được chọn trên lưới Hợp đồng định kì' ErrorDesc
1344
							RETURN '-1'
1345
						END
1346
					END
1347
					
1348
					IF(ISNULL(@PARENT_ID, '') = '' AND @_PROCESS = '2')
1349
					BEGIN
1350
						ROLLBACK TRANSACTION
1351
						SELECT '-1' as Result, @p_REQ_PAY_ID  REQ_PAY_ID,''  AS REQ_PAY_CODE,N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_PERIOD)+ N' lưới thông tin thanh toán hợp đồng định kì: Không được để trống cột số phiếu tạm ứng.'
1352
						+ CHAR(10) + 
1353
						N'</br> Nếu hợp đồng định kỳ này có kỳ tạm ứng, vui lòng làm như sau để hoàn ứng: '
1354
						+ CHAR(10) + 
1355
						N'</br> Bước 1: Tại lưới thông tin hợp đồng định kỳ, xóa dòng hợp động kịnh kỳ cần hoàn ứng( hợp đồng có ID hợp đồng(hệ thống): ' + @CONTRACT_ID +
1356
						+ CHAR(10) + 
1357
						N'</br> Bước2: Tại lưới thông tin hợp đồng định kỳ, chọn lại hợp đồng cần hoàn ứng( hợp đồng có ID hợp đồng(hệ thống): ' + @CONTRACT_ID 
1358
						ErrorDesc
1359
						RETURN '-1'
1360
					END
1361
				END
1362
			-- END VALIDATE
1363
				DECLARE @PERIOD_ID VARCHAR(15);
1364
				EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_PERIOD', @PERIOD_ID OUT;
1365
				IF @PERIOD_ID='' OR @PERIOD_ID IS NULL GOTO ABORT;
1366
				INSERT INTO TR_REQ_PAY_PERIOD(PERIOD_ID,REQ_PAY_ID,PAY_TYPE, CONTRACT_ID,PAY_DT_REAL,OLD_INDEX,NEW_INDEX,AMT_PAY,AUTH_STATUS_KT,CURRENCY,RATE,FROM_DATE,
1367
				TO_DATE,AD_PAY_ID,PROCESS,PARENT_ID,PAY_PHASE,REASON)
1368
				VALUES (@PERIOD_ID,@p_REQ_PAY_ID,'PAY',@CONTRACT_ID,CONVERT(DATE,@PAY_DT_REAL,103), @OLD_INDEX ,@NEW_INDEX ,@AMT_PAY_PERIOD,'U', @p_REQ_TYPE_CURRENCY , @p_RATE,
1369
				CONVERT(DATE,@FROM_DATE,103),CONVERT(DATE,@TO_DATE,103),@AD_PAY_ID, @_PROCESS,@PARENT_ID,@PAY_PHASE,@REASON_TTDK)
1370
			IF @@error<>0 GOTO ABORT;
1371
			FETCH NEXT FROM XmlDataPeriod INTO @CONTRACT_ID ,@PAY_DT_REAL ,@PAY_TYPE, @OLD_INDEX , @NEW_INDEX , @AMT_PAY_PERIOD, @CURRENCY, @RATE, @FROM_DATE, @TO_DATE, @AD_PAY_ID, @_PROCESS, @PARENT_ID, 
1372
			@PAY_PHASE, @REASON_TTDK
1373
			END
1374
			CLOSE XmlDataPeriod;
1375
			DEALLOCATE XmlDataPeriod;
1376
		END	
1377
	-- END CURSOR THONG TIN THANH TOAN HOP DONG DINH KY
1378
	
1379
--doanptt 15/02/2022		
1380
-- INSERT JOB
1381
-- DS PHIEU YEU CAU CONG TAC
1382
				DELETE FROM TR_REQ_PAY_JOB WHERE REQ_PAY_ID = @p_REQ_PAY_ID
1383
				DECLARE @REQ_PAY_JOB_ID varchar(15) ,@REQ_PAY_ID varchar(15),@REQ_ID varchar(15), @REQ_CODE varchar(15), @MAKER_ID varchar(15),
1384
				@CREATE_DT varchar(15), @PAY_TYPE_J VARCHAR(5), @PAY_PHASE_J NVARCHAR(250), @PAY_AMT DECIMAL(18,0), @PAY_DESC NVARCHAR(1000)
1385
				, @AUTH_STATUS VARCHAR(1), @AUTH_STATUS_KT VARCHAR(1)
1386
				DECLARE XmlDataJob CURSOR LOCAL FOR
1387
				SELECT * FROM OPENXML(@hdocJob, 'Root/XmlDataJob',2) 
1388
				WITH(REQ_PAY_JOB_ID varchar(15) ,REQ_PAY_ID varchar(15),REQ_ID varchar(15), REQ_CODE varchar(15), MAKER_ID varchar(15),CREATE_DT varchar(15), PAY_TYPE VARCHAR(5), 
1389
				PAY_PHASE NVARCHAR(250), PAY_AMT DECIMAL(18,0), PAY_DESC NVARCHAR(1000), AUTH_STATUS VARCHAR(1), AUTH_STATUS_KT VARCHAR(1))
1390
				OPEN XmlDataJob
1391

    
1392
--- INSERT PHIEU YEU CAU CONG TAC
1393
				FETCH NEXT FROM XmlDataJob INTO @REQ_PAY_JOB_ID ,@REQ_PAY_ID ,@REQ_ID , @REQ_CODE, @MAKER_ID , @CREATE_DT , @PAY_TYPE_J , @PAY_PHASE_J , 
1394
				@PAY_AMT , @PAY_DESC, @AUTH_STATUS , @AUTH_STATUS_KT
1395
				WHILE @@fetch_status=0 
1396
				BEGIN
1397
				/*--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI
1398
					SET @INDEX_NS = @INDEX_NS +1
1399
					--KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
1400
					IF(@p_TYPE_FUNCTION ='SEND')
1401
					BEGIN
1402
						IF(ISNULL(@AMT_EXE,0) =0)
1403
						BEGIN
1404
							ROLLBACK TRANSACTION
1405
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng thực tế phải lớn hơn không.' ErrorDesc
1406
								RETURN '-1'
1407
						END
1408
						IF((@AMT_EXE  > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS'))
1409
						BEGIN
1410
								ROLLBACK TRANSACTION
1411
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc
1412
								RETURN '-1'
1413
						END		
1414
					END
1415
					IF(NOT EXISTS(SELECT * FROM PL_IMPORT_DT WHERE TRADE_ID =@TRADE_ID AND IMP_YEAR =YEAR(GETDATE()))
1416
						  AND NOT EXISTS (SELECT * FROM PL_MASTER WHERE PLAN_ID =(SELECT TOP 1 PLAN_ID FROM PL_TRADEDETAIL WHERE TRADE_ID =@TRADE_ID) AND YEAR =YEAR(GETDATE())))
1417
					BEGIN
1418
								ROLLBACK TRANSACTION
1419
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng phải chọn lại ngân sách của năm hiện tại. Không được phép sử dụng ngân sách năm cũ.' ErrorDesc
1420
								RETURN '-1'
1421
					END*/
1422

    
1423
					DECLARE @p_REQ_JOB_ID VARCHAR(15);
1424
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_JOB', @p_REQ_JOB_ID OUT;
1425
					IF @p_REQ_JOB_ID='' OR @p_REQ_JOB_ID IS NULL GOTO ABORT;
1426
					INSERT INTO TR_REQ_PAY_JOB(REQ_PAY_JOB_ID ,REQ_PAY_ID ,REQ_ID , REQ_CODE, MAKER_ID, CREATE_DT , PAY_TYPE , PAY_PHASE , PAY_AMT , PAY_DESC, AUTH_STATUS , AUTH_STATUS_KT)
1427
					VALUES (@p_REQ_JOB_ID ,@p_REQ_PAY_ID ,@REQ_ID , @REQ_CODE, @MAKER_ID , GETDATE() , @PAY_TYPE_J , @PAY_PHASE_J , @PAY_AMT , @PAY_DESC, @AUTH_STATUS , @AUTH_STATUS_KT)
1428
					IF @@error<>0 GOTO ABORT;
1429
					FETCH NEXT FROM XmlDataJob INTO @REQ_PAY_JOB_ID ,@REQ_PAY_ID ,@REQ_ID , @REQ_CODE, @MAKER_ID , @CREATE_DT , @PAY_TYPE_J , @PAY_PHASE_J, @PAY_AMT , @PAY_DESC, @AUTH_STATUS , @AUTH_STATUS_KT
1430
				END;
1431
				CLOSE XmlDataJob;
1432
				DEALLOCATE XmlDataJob;
1433
--- END INSERT PHIEU YEU CAU CONG TAC
1434

    
1435
-- INSERT JOB DT 
1436
-- DS CHI TIET PHIEU YEU CAU CONG TAC
1437
				DELETE FROM TR_REQ_PAY_JOB_DT WHERE REQ_PAY_ID = @p_REQ_PAY_ID
1438
				DECLARE @REQ_PAY_JOB_DT_ID varchar(15) , @REQ_PAY_ID_DT varchar(15), @REQ_ID_DT varchar(15), @REQ_CODE_DT varchar(15), @MAKER_ID_DT varchar(15),
1439
				@CREATE_DT_DT varchar(15), @FULLNAME_DT NVARCHAR(250), @TLNAME_DT VARCHAR(15), @JOB_PLACE_DT VARCHAR(15), @FRMDATE_DT VARCHAR(15), @TODATE_DT VARCHAR(15),
1440
				@NUMBER_DAY_DT decimal(18,0), @DAY_RATE_DT decimal(18,0), @JOB_COST_DT decimal(18,0), @TYPE_TRANS_DT varchar(250), @COST_MOVE_DT decimal(18,0), 
1441
				@COST_RESIDENCE_DT decimal(18,0), @COST_OTHER_DT decimal(18,0), @COST_AMT_DT decimal(18,0), @AUTH_STATUS_DT VARCHAR(1), @AUTH_STATUS_KT_DT VARCHAR(1)
1442
				DECLARE XmlDataJobDT CURSOR LOCAL FOR
1443
				SELECT * FROM OPENXML(@hdocJobDT, 'Root/XmlDataJobDT',2) 
1444
				WITH(REQ_PAY_JOB_DT_ID varchar(15), REQ_PAY_ID varchar(15), REQ_ID varchar(15), REQ_CODE varchar(15), MAKER_ID varchar(15), CREATE_DT varchar(15), 
1445
				FULLNAME nvarchar(250), TLNAME_DT VARCHAR(15), JOB_PLACE varchar(15), FRMDATE varchar(15), TODATE varchar(15),NUMBER_DAY decimal(18,0), DAY_RATE decimal(18,0), 
1446
				JOB_COST decimal(18,0), TYPE_TRANS varchar(15), COST_MOVE decimal(18,0), COST_RESIDENCE decimal(18,0), COST_OTHER decimal(18,0), COST_AMT decimal(18,0) , 
1447
				AUTH_STATUS varchar(1), AUTH_STATUS_KT varchar(1)) 
1448
				OPEN XmlDataJobDT
1449

    
1450
--- INSERT CHI TIÊT PHIEU YEU CAU CONG TAC
1451
				FETCH NEXT FROM XmlDataJobDT INTO @REQ_PAY_JOB_DT_ID , @REQ_PAY_ID_DT, @REQ_ID_DT, @REQ_CODE_DT, @MAKER_ID_DT,
1452
				@CREATE_DT_DT , @FULLNAME_DT , @TLNAME_DT, @JOB_PLACE_DT , @FRMDATE_DT , @TODATE_DT ,
1453
				@NUMBER_DAY_DT, @DAY_RATE_DT , @JOB_COST_DT , @TYPE_TRANS_DT , @COST_MOVE_DT, 
1454
				@COST_RESIDENCE_DT, @COST_OTHER_DT , @COST_AMT_DT , @AUTH_STATUS_DT, @AUTH_STATUS_KT_DT
1455
				WHILE @@fetch_status=0 
1456
				BEGIN
1457
				/*--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI
1458
					SET @INDEX_NS = @INDEX_NS +1
1459
					--KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
1460
					IF(@p_TYPE_FUNCTION ='SEND')
1461
					BEGIN
1462
						IF(ISNULL(@AMT_EXE,0) =0)
1463
						BEGIN
1464
							ROLLBACK TRANSACTION
1465
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng thực tế phải lớn hơn không.' ErrorDesc
1466
								RETURN '-1'
1467
						END
1468
						IF((@AMT_EXE  > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS'))
1469
						BEGIN
1470
								ROLLBACK TRANSACTION
1471
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc
1472
								RETURN '-1'
1473
						END		
1474
					END
1475
					IF(NOT EXISTS(SELECT * FROM PL_IMPORT_DT WHERE TRADE_ID =@TRADE_ID AND IMP_YEAR =YEAR(GETDATE()))
1476
						  AND NOT EXISTS (SELECT * FROM PL_MASTER WHERE PLAN_ID =(SELECT TOP 1 PLAN_ID FROM PL_TRADEDETAIL WHERE TRADE_ID =@TRADE_ID) AND YEAR =YEAR(GETDATE())))
1477
					BEGIN
1478
								ROLLBACK TRANSACTION
1479
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng phải chọn lại ngân sách của năm hiện tại. Không được phép sử dụng ngân sách năm cũ.' ErrorDesc
1480
								RETURN '-1'
1481
					END*/
1482

    
1483
					DECLARE @p_REQ_JOB_DT_ID VARCHAR(15);
1484
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_JOB_DT', @p_REQ_JOB_DT_ID OUT;
1485
					IF @p_REQ_JOB_DT_ID='' OR @p_REQ_JOB_DT_ID IS NULL GOTO ABORT;
1486
					INSERT INTO TR_REQ_PAY_JOB_DT(REQ_PAY_JOB_DT_ID , REQ_PAY_ID , REQ_ID , REQ_CODE, MAKER_ID , CREATE_DT , FULLNAME, TLNAME, JOB_PLACE , FRMDATE , TODATE ,NUMBER_DAY , DAY_RATE , 
1487
													JOB_COST , TYPE_TRANS , COST_MOVE , COST_RESIDENCE , COST_OTHER , COST_AMT , AUTH_STATUS, AUTH_STATUS_KT)
1488
					VALUES (@p_REQ_JOB_DT_ID , @p_REQ_PAY_ID, @REQ_ID_DT, @REQ_CODE_DT, @MAKER_ID_DT,
1489
							GETDATE() , @FULLNAME_DT ,@TLNAME_DT, @JOB_PLACE_DT , CONVERT(DATE,@FRMDATE_DT,103) , CONVERT(DATE,@TODATE_DT,103) ,
1490
							@NUMBER_DAY_DT, @DAY_RATE_DT , @JOB_COST_DT , @TYPE_TRANS_DT , @COST_MOVE_DT, 
1491
							@COST_RESIDENCE_DT, @COST_OTHER_DT , @COST_AMT_DT , @AUTH_STATUS_DT, @AUTH_STATUS_KT_DT)
1492
					IF @@error<>0 GOTO ABORT;
1493
					FETCH NEXT FROM XmlDataJobDT INTO @REQ_PAY_JOB_DT_ID , @REQ_PAY_ID_DT, @REQ_ID_DT, @REQ_CODE_DT, @MAKER_ID_DT,
1494
									@CREATE_DT_DT , @FULLNAME_DT , @TLNAME_DT, @JOB_PLACE_DT , @FRMDATE_DT , @TODATE_DT ,
1495
									@NUMBER_DAY_DT, @DAY_RATE_DT , @JOB_COST_DT , @TYPE_TRANS_DT , @COST_MOVE_DT, 
1496
									@COST_RESIDENCE_DT, @COST_OTHER_DT , @COST_AMT_DT , @AUTH_STATUS_DT, @AUTH_STATUS_KT_DT
1497
				END;
1498
				CLOSE XmlDataJobDT;
1499
				DEALLOCATE XmlDataJobDT;
1500
--- END INSERT CHI TIET PHIEU YEU CAU CONG TAC
1501

    
1502

    
1503
--doanptt 17/02/2022		
1504
-- INSERT DRIVE
1505
-- DS PHIEU YEU CAU CONG TAC
1506
				DELETE FROM TR_REQ_PAY_DRIVE WHERE REQ_PAY_ID = @p_REQ_PAY_ID
1507
				DECLARE @REQ_PAY_DRIVE_ID varchar(15), @CAR_ID varchar(15), @CAR_PLATE varchar(15), @RATE_GAS_100KM decimal(18,0), @CAR_TYPE NVARCHAR(150)
1508
				DECLARE XmlDataDrive CURSOR LOCAL FOR
1509
				SELECT * FROM OPENXML(@hdocDrive, 'Root/XmlDataDrive',2) 
1510
				WITH(REQ_PAY_DRIVE_ID varchar(15) ,REQ_PAY_ID varchar(15), CAR_ID varchar(15), CAR_PLATE varchar(15), MAKER_ID varchar(15),CREATE_DT varchar(15), PAY_TYPE VARCHAR(5), 
1511
				PAY_PHASE NVARCHAR(250), PAY_AMT DECIMAL(18,0), PAY_DESC NVARCHAR(1000), AUTH_STATUS VARCHAR(1), AUTH_STATUS_KT VARCHAR(1), 
1512
				RATE_GAS_100KM decimal(18,0), CAR_TYPE NVARCHAR(150))
1513
				OPEN XmlDataDrive
1514

    
1515
--- INSERT PHIEU YEU CAU CONG TAC
1516
				FETCH NEXT FROM XmlDataDrive INTO @REQ_PAY_DRIVE_ID ,@REQ_PAY_ID ,@CAR_ID , @CAR_PLATE, @MAKER_ID , @CREATE_DT , @PAY_TYPE , @PAY_PHASE, 
1517
				@PAY_AMT , @PAY_DESC, @AUTH_STATUS , @AUTH_STATUS_KT, @RATE_GAS_100KM, @CAR_TYPE
1518
				WHILE @@fetch_status=0 
1519
				BEGIN
1520
				/*--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI
1521
					SET @INDEX_NS = @INDEX_NS +1
1522
					--KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
1523
					IF(@p_TYPE_FUNCTION ='SEND')
1524
					BEGIN
1525
						IF(ISNULL(@AMT_EXE,0) =0)
1526
						BEGIN
1527
							ROLLBACK TRANSACTION
1528
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng thực tế phải lớn hơn không.' ErrorDesc
1529
								RETURN '-1'
1530
						END
1531
						IF((@AMT_EXE  > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS'))
1532
						BEGIN
1533
								ROLLBACK TRANSACTION
1534
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc
1535
								RETURN '-1'
1536
						END		
1537
					END
1538
					IF(NOT EXISTS(SELECT * FROM PL_IMPORT_DT WHERE TRADE_ID =@TRADE_ID AND IMP_YEAR =YEAR(GETDATE()))
1539
						  AND NOT EXISTS (SELECT * FROM PL_MASTER WHERE PLAN_ID =(SELECT TOP 1 PLAN_ID FROM PL_TRADEDETAIL WHERE TRADE_ID =@TRADE_ID) AND YEAR =YEAR(GETDATE())))
1540
					BEGIN
1541
								ROLLBACK TRANSACTION
1542
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng phải chọn lại ngân sách của năm hiện tại. Không được phép sử dụng ngân sách năm cũ.' ErrorDesc
1543
								RETURN '-1'
1544
					END*/
1545

    
1546
					DECLARE @p_REQ_DRIVE_ID VARCHAR(15);
1547
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_DRIVE', @p_REQ_DRIVE_ID OUT;
1548
					IF @p_REQ_DRIVE_ID='' OR @p_REQ_DRIVE_ID IS NULL GOTO ABORT;
1549
					INSERT INTO TR_REQ_PAY_DRIVE(REQ_PAY_DRIVE_ID ,REQ_PAY_ID ,CAR_ID , CAR_PLATE , MAKER_ID, CREATE_DT , PAY_TYPE , PAY_PHASE , PAY_AMT , PAY_DESC, AUTH_STATUS , AUTH_STATUS_KT, RATE_GAS_100KM, CAR_TYPE)
1550
					VALUES (@p_REQ_DRIVE_ID ,@p_REQ_PAY_ID ,@CAR_ID , @CAR_PLATE, @MAKER_ID , GETDATE() , @PAY_TYPE , @PAY_PHASE , @PAY_AMT , @PAY_DESC, @AUTH_STATUS , @AUTH_STATUS_KT, @RATE_GAS_100KM, @CAR_TYPE)
1551
					IF @@error<>0 GOTO ABORT;
1552
					FETCH NEXT FROM XmlDataDrive INTO @REQ_PAY_DRIVE_ID ,@REQ_PAY_ID ,@CAR_ID , @CAR_PLATE, @MAKER_ID , @CREATE_DT , @PAY_TYPE , @PAY_PHASE, 
1553
					@PAY_AMT , @PAY_DESC, @AUTH_STATUS , @AUTH_STATUS_KT, @RATE_GAS_100KM, @CAR_TYPE
1554
				END;
1555
				CLOSE XmlDataDrive;
1556
				DEALLOCATE XmlDataDrive;
1557
--- END INSERT PHIEU YEU CAU CONG TAC
1558

    
1559
-- INSERT DRIVE DT 
1560
-- DS CHI TIET PHIEU YEU CAU CONG TAC
1561
				DELETE FROM TR_REQ_PAY_DRIVE_DT WHERE REQ_PAY_ID = @p_REQ_PAY_ID
1562
				DECLARE @REQ_PAY_DRIVE_DT_ID varchar(15), @FULLNAME NVARCHAR(250), @BRANCH_REQ VARCHAR(15), 
1563
				@KM_START decimal(18,2), @KM_END varchar(250), @KM_USED decimal(18,2), 
1564
				@RATE_GAS decimal(18,2), @REAL_GAS decimal(18,2), @REDUNDANCY_GAS decimal(18,2), @INVENTORY_GAS decimal(18,2), @COST_INCURRED decimal(18,2),
1565
				@CREATE_SCHEDULE NVARCHAR(250), @TRUONGDONVI VARCHAR(15)
1566
				DECLARE XmlDataDriveDT CURSOR LOCAL FOR
1567
				SELECT * FROM OPENXML(@hdocDriveDT, 'Root/XmlDataDriveDT',2) 
1568
				WITH(REQ_PAY_DRIVE_ID varchar(15), REQ_PAY_ID varchar(15), CAR_ID varchar(15), MAKER_ID varchar(15), CREATE_DT varchar(15), 
1569
				BRANCH_REQ varchar(15), PAY_PHASE NVARCHAR(250), CAR_TYPE Nvarchar(250), CAR_PLATE varchar(15),RATE_GAS_100KM decimal(18,2), KM_START decimal(18,2), 
1570
				KM_END decimal(18,2), KM_USED varchar(15), RATE_GAS decimal(18,2), REAL_GAS decimal(18,2), REDUNDANCY_GAS decimal(18,2), INVENTORY_GAS decimal(18,2), 
1571
				NOTES NVARCHAR(MAX), COST_INCURRED decimal(18,2), CREATE_SCHEDULE NVARCHAR(250), TRUONGDONVI VARCHAR(15) , 
1572
				AUTH_STATUS varchar(1), AUTH_STATUS_KT varchar(1)) 
1573
				OPEN XmlDataDriveDT
1574

    
1575
				DECLARE @INDEX_DRIVEDT INT = 0
1576

    
1577
--- INSERT CHI TIÊT PHIEU YEU CAU CONG TAC
1578
				FETCH NEXT FROM XmlDataDriveDT INTO @REQ_PAY_DRIVE_ID , @REQ_PAY_ID, @CAR_ID, @MAKER_ID, @CREATE_DT, @BRANCH_REQ, @PAY_PHASE, @CAR_TYPE, @CAR_PLATE, 
1579
				@RATE_GAS_100KM, @KM_START, @KM_END, @KM_USED, @RATE_GAS, @REAL_GAS, @REDUNDANCY_GAS, @INVENTORY_GAS, @NOTES, @COST_INCURRED, @CREATE_SCHEDULE,
1580
				@TRUONGDONVI, @AUTH_STATUS, @AUTH_STATUS_KT
1581
				WHILE @@fetch_status=0 
1582
				BEGIN
1583
				/*--- KIEM TRA NEU NGAN SACH SU DUNG THUC THE LON HON NGAN SACH CON LAI
1584
					SET @INDEX_NS = @INDEX_NS +1
1585
					--KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
1586
					IF(@p_TYPE_FUNCTION ='SEND')
1587
					BEGIN
1588
						IF(ISNULL(@AMT_EXE,0) =0)
1589
						BEGIN
1590
							ROLLBACK TRANSACTION
1591
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Số tiền sử dụng thực tế phải lớn hơn không.' ErrorDesc
1592
								RETURN '-1'
1593
						END
1594
						IF((@AMT_EXE  > @AMT_REMAIN_GD) AND ((SELECT GD_TYPE_ID FROM CM_GOODS WHERE GD_ID =@GD_ID) ='NS'))
1595
						BEGIN
1596
								ROLLBACK TRANSACTION
1597
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Thông tin hạng mục ngân sách và chi phí, dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng thực tế không được vượt quá ngân sách còn lại.' ErrorDesc
1598
								RETURN '-1'
1599
						END		
1600
					END
1601
					IF(NOT EXISTS(SELECT * FROM PL_IMPORT WHERE TRADE_ID =@TRADE_ID AND IMP_YEAR =YEAR(GETDATE()))
1602
						  AND NOT EXISTS (SELECT * FROM PL_MASTER WHERE PLAN_ID =(SELECT TOP 1 PLAN_ID FROM PL_TRADEDETAIL WHERE TRADE_ID =@TRADE_ID) AND YEAR =YEAR(GETDATE())))
1603
					BEGIN
1604
								ROLLBACK TRANSACTION
1605
								SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_NS)+ N': Ngân sách sử dụng phải chọn lại ngân sách của năm hiện tại. Không được phép sử dụng ngân sách năm cũ.' ErrorDesc
1606
								RETURN '-1'
1607
					END*/
1608
					SET @INDEX_DRIVEDT = @INDEX_DRIVEDT + 1;
1609
                    --hieuhm 09/01/2022 kiểm tra số lít tồn chuyển kì sau không được nhỏ hơn 0
1610
                    IF(CONVERT(INT,@INVENTORY_GAS) < 0)
1611
                    BEGIN
1612
                        ROLLBACK TRANSACTION
1613
                        SELECT '-1' as Result, '' REQ_PAY_ID,''  AS REQ_PAY_CODE, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX_DRIVEDT)+ N': Bảng kê chi phí sử dụng nhiên liệu số lít xăng tồn chuyển kỳ sau phải là số dương. Không được phép là số âm.' ErrorDesc
1614
                        RETURN '-1'
1615
                    END
1616
					DECLARE @p_REQ_DRIVE_DT_ID VARCHAR(15);
1617
					EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_DRIVE_DT', @p_REQ_DRIVE_DT_ID OUT;
1618
					IF @p_REQ_DRIVE_DT_ID='' OR @p_REQ_DRIVE_DT_ID IS NULL GOTO ABORT;
1619
					INSERT INTO TR_REQ_PAY_DRIVE_DT(REQ_PAY_DRIVE_DT_ID, REQ_PAY_ID, CAR_ID, MAKER_ID, CREATE_DT, BRANCH_REQ, PAY_PHASE, CAR_TYPE, CAR_PLATE,
1620
					RATE_GAS_100KM, KM_START, KM_END, KM_USED, RATE_GAS, REAL_GAS, REDUNDANCY_GAS, INVENTORY_GAS, COST_INCURRED, NOTES, CREATE_SCHEDULE, TRUONGDONVI,
1621
					AUTH_STATUS, AUTH_STATUS_KT)
1622
					VALUES (@p_REQ_DRIVE_DT_ID , @p_REQ_PAY_ID, @CAR_ID, @MAKER_ID, @CREATE_DT, @BRANCH_REQ, @PAY_PHASE, @CAR_TYPE, @CAR_PLATE, 
1623
					@RATE_GAS_100KM, @KM_START, @KM_END, @KM_USED, @RATE_GAS, @REAL_GAS, @REDUNDANCY_GAS, @INVENTORY_GAS, @COST_INCURRED, @NOTES,
1624
					@CREATE_SCHEDULE, @TRUONGDONVI, @AUTH_STATUS, @AUTH_STATUS_KT)
1625
					IF @@error<>0 GOTO ABORT;
1626
					FETCH NEXT FROM XmlDataDriveDT INTO @REQ_PAY_DRIVE_ID , @REQ_PAY_ID, @CAR_ID, @MAKER_ID, @CREATE_DT, @BRANCH_REQ, @PAY_PHASE, @CAR_TYPE, @CAR_PLATE, 
1627
					@RATE_GAS_100KM, @KM_START, @KM_END, @KM_USED, @RATE_GAS, @REAL_GAS, @REDUNDANCY_GAS, @INVENTORY_GAS, @NOTES, @COST_INCURRED, @CREATE_SCHEDULE,
1628
					@TRUONGDONVI, @AUTH_STATUS, @AUTH_STATUS_KT
1629
				END;
1630
				CLOSE XmlDataDriveDT;
1631
				DEALLOCATE XmlDataDriveDT;
1632
--- END INSERT CHI TIET PHIEU YEU CAU CONG TAC
1633
COMMIT TRANSACTION
1634
-- BEIGN VALIDATE SEND APPROVE
1635
	IF(@p_TYPE_FUNCTION ='SEND') -- KIEM TRA NEU 2 BIEN XML KHAC NULL TUC LA DANG TRONG QUA TRINH LUU NHAP
1636
	BEGIN
1637
	-- VALIDATE CAC LUOI THANH TOAN
1638
		IF((SELECT COUNT(*) FROM TR_REQ_PAY_SERVICE WHERE REQ_PAY_ID = @p_REQ_PAY_ID) = 0 AND @p_REQ_TYPE = 'D')
1639
		BEGIN
1640
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới thông tin các dịch vụ thanh toán không được để trống'  ErrorDesc
1641
			RETURN '-1'
1642
		END
1643
		/*
1644
		ELSE IF((SELECT COUNT(*) FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) = 0 AND @p_REQ_TYPE = 'P' AND @p_IS_PERIOD <> 'Y')
1645
		BEGIN
1646
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới thông tin PO/ hợp đồng không được để trống'  ErrorDesc
1647
			RETURN '-1'
1648
		END
1649
		ELSE IF((SELECT COUNT(*) FROM TR_REQ_ADVANCE_DT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) = 0 AND @p_REQ_TYPE = 'P' AND @p_IS_PERIOD = 'Y')
1650
		BEGIN
1651
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới thông tin hợp đồng định kỳ không được để trống'  ErrorDesc
1652
			RETURN '-1'
1653
		END
1654
		*/
1655

    
1656
	-- DECLARE
1657
		DECLARE @BRANCH_TYPE_CR VARCHAR(15)
1658
		DECLARE @SUM_THANH_TOAN DECIMAL(18,0) =0, @SUM_PHUONG_THUC DECIMAL(18,0) =0, @SUM_NGAN_SACH DECIMAL(18,2) =0, @SUM_USE_REAL DECIMAL(18,2), @SUM_SERVICE DECIMAL(18,0),
1659
		@SUM_SCHEDULE DECIMAL(18,0), @SUM_PERIOD DECIMAL(18,0), @SUM_PAY_BACK DECIMAL(18,0) =0, @SUM_ADD DECIMAL(18,0), @SUM_USE_I DECIMAL(18,0)
1660
	-- SET
1661
		SET @BRANCH_TYPE_CR =(SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@p_BRANCH_CREATE)
1662
		SET @SUM_THANH_TOAN =(SELECT ISNULL(SUM(REQ_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
1663
		SET @SUM_PHUONG_THUC =ABS((SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID  
1664
		AND (TYPE_TRANSFER ='A' OR TYPE_TRANSFER IS NULL OR TYPE_TRANSFER ='')) - (SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID  
1665
		AND TYPE_TRANSFER ='R'))
1666
		SET @SUM_NGAN_SACH =(SELECT ISNULL(SUM(AMT_EXE * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
1667
		SET @SUM_SERVICE =(SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SERVICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
1668
		SET @SUM_PERIOD =(SELECT ISNULL(SUM(AMT_PAY * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
1669
		SET @SUM_SCHEDULE =(SELECT ISNULL(SUM(AMT_PAY_REAL * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
1670

    
1671
		PRINT '@SUM_THANH_TOAN: ' + CONVERT(VARCHAR(20),@SUM_THANH_TOAN);
1672
		PRINT '@SUM_PHUONG_THUC: ' + CONVERT(VARCHAR(20),@SUM_PHUONG_THUC);
1673
		PRINT '@SUM_NGAN_SACH: ' + CONVERT(VARCHAR(20),@SUM_NGAN_SACH);
1674
		PRINT '@SUM_SERVICE: ' + CONVERT(VARCHAR(20),@SUM_SERVICE);
1675
		PRINT '@SUM_PERIOD: ' + CONVERT(VARCHAR(20),@SUM_PERIOD);
1676
		PRINT '@SUM_SCHEDULE: ' + CONVERT(VARCHAR(20),@SUM_SCHEDULE);
1677

    
1678
		IF(@p_REQ_TYPE ='I')
1679
		BEGIN
1680
			/*SET @SUM_USE_I =	(SELECT ISNULL(SUM(TOTAL_AMT*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SERVICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
1681
							+	(SELECT ISNULL(SUM(AMT_PAY*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
1682
							+	(SELECT ISNULL(SUM(AMT_PAY_REAL*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID)*/
1683
			SET @SUM_USE_REAL =(SELECT ISNULL(SUM(AMT_USE*ISNULL(RATE,1)),0) FROM TR_REQ_PAYMENT_DT WHERE PAY_ID =@p_REQ_PAY_ID)
1684
			SET @SUM_PAY_BACK =(SELECT ISNULL(SUM(AMT_REVERT*ISNULL(RATE,1)),0) FROM TR_REQ_PAYMENT_DT WHERE PAY_ID =@p_REQ_PAY_ID)
1685
			SET @SUM_ADD =(SELECT ISNULL(SUM(AMT_ADD*ISNULL(RATE,1)),0) FROM TR_REQ_PAYMENT_DT WHERE PAY_ID =@p_REQ_PAY_ID)
1686
			SET @SUM_PHUONG_THUC =(SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND TYPE_TRANSFER ='A') -
1687
			(SELECT ISNULL(SUM(TOTAL_AMT * ISNULL(RATE,1)),0) FROM TR_REQ_PAY_METHOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND TYPE_TRANSFER ='R')
1688
		END
1689
		IF(@p_REQ_TYPE ='P' AND @p_IS_PERIOD ='Y' AND @p_IS_PERIOD <>'' AND @p_IS_PERIOD IS NOT NULL)
1690
		BEGIN
1691
			SET @SUM_USE_REAL =(SELECT ISNULL(SUM(AMT_PAY*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
1692
			--SET @SUM_PAY_BACK =(SELECT ISNULL(SUM(AMT_PAY*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_PERIOD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND PROCESS <> '0')
1693
					
1694
		END
1695
		IF(@p_REQ_TYPE ='P' AND (@p_IS_PERIOD ='N' OR (@p_IS_PERIOD ='' OR @p_IS_PERIOD IS NULL)))
1696
		BEGIN
1697
			SET @SUM_USE_REAL =(SELECT ISNULL(SUM(AMT_PAY_REAL*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID)	
1698
			SET @SUM_PAY_BACK =(SELECT ISNULL(SUM(AMT_ADVANCE*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SCHEDULE WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
1699
		END
1700
		IF(@p_REQ_TYPE ='D')
1701
		BEGIN
1702
			SET @SUM_USE_REAL =(SELECT ISNULL(SUM(TOTAL_AMT*ISNULL(RATE,1)),0) FROM TR_REQ_PAY_SERVICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
1703
		END
1704
		IF(@p_REQ_TYPE = 'D' AND ROUND(@SUM_NGAN_SACH,0) <> ROUND(@SUM_THANH_TOAN,0))
1705
		BEGIN
1706
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền sử dụng ngân sách và chi phí phải bằng số tiền bạn cần thanh toán là: ' + FORMAT(SUM(@SUM_THANH_TOAN),'#,#', 'vi-VN') ErrorDesc
1707
			RETURN '-1'
1708
		END
1709
		PRINT '@SUM_USE_REAL: ' + CONVERT(VARCHAR(20),@SUM_USE_REAL);
1710
		PRINT '@@SUM_NGAN_SACH: ' + CONVERT(VARCHAR(20),ROUND(@SUM_NGAN_SACH,0));
1711
		PRINT '@@SUM_USE_REAL: ' + CONVERT(VARCHAR(20),ROUND(@SUM_USE_REAL,0));
1712
		IF(ROUND(@SUM_NGAN_SACH,0) <> ROUND(@SUM_USE_REAL,0))
1713
		BEGIN
1714
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền sử dụng ngân sách và chi phí phải bằng số tiền bạn sử dụng thực tế là: ' +  FORMAT(SUM(@SUM_USE_REAL),'#,#', 'vi-VN')  ErrorDesc
1715
			RETURN '-1'
1716
		END
1717
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE TRASFER_USER_RECIVE <> '' AND TRASFER_USER_RECIVE IS NOT NULL AND REQ_PAY_ID =@p_REQ_PAY_ID) AND @BRANCH_TYPE_CR ='PGD')
1718
		BEGIN
1719
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Cấp độ phòng giao dịch vui lòng không được chọn cấp phê duyệt trung gian' ErrorDesc
1720
			RETURN '-1'
1721
		END
1722
		IF(@p_REQ_TYPE <> 'I')
1723
		BEGIN
1724
			IF(NOT EXISTS(SELECT * FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID  =@p_REQ_PAY_ID))
1725
			BEGIN
1726
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Thông tin hạng mục ngân sách và chi phí không được để trống. Vui lòng chọn ngân sách và chi phí' ErrorDesc
1727
				RETURN '-1'
1728
			END
1729
			IF(ROUND(@SUM_THANH_TOAN,0) <> ROUND(@SUM_PHUONG_THUC,0))
1730
			BEGIN
1731
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền phương thức thanh toán phải bằng số tiền bạn cần thanh toán là: ' + FORMAT(ISNULL(@SUM_THANH_TOAN, 0),'#,#', 'vi-VN') ErrorDesc
1732
				RETURN '-1'
1733
			END
1734
		END
1735
		ELSE
1736
		BEGIN
1737
			print 'START thanh toan hoan tam ung'
1738
			IF(ISNULL(@SUM_USE_REAL,0) >0)
1739
			BEGIN
1740
				IF(NOT EXISTS(SELECT * FROM TR_REQ_PAY_BUDGET WHERE REQ_PAY_ID  =@p_REQ_PAY_ID))
1741
				BEGIN
1742
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Thông tin hạng mục ngân sách và chi phí không được để trống. Vui lòng chọn ngân sách và chi phí' ErrorDesc
1743
					RETURN '-1'	
1744
				END
1745
				IF(ROUND(@SUM_NGAN_SACH,0) <> ROUND(@SUM_USE_REAL,0))
1746
				BEGIN
1747
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền sử dụng ngân sách và chi phí phải bằng số tiền sử dụng thực tế trên lưới hoàn tạm ứng: ' + FORMAT(SUM(@SUM_USE_REAL),'#,#', 'vi-VN')  ErrorDesc
1748
					RETURN '-1'
1749
				END
1750
				IF(ISNULL(@SUM_USE_REAL,0) <> (ISNULL(@SUM_SERVICE,0) + ISNULL(@SUM_PERIOD,0) + ISNULL(@SUM_SCHEDULE,0)))
1751
				BEGIN
1752
					SELECT '-1' as Result, '' REQ_PAY_ID, N'Tổng số tiền thanh toán dịch vụ, thanh toán nhà cung cấp, thanh toán định kì phải bằng số tiền sử dụng thực tế trên lưới hoàn tạm ứng: ' + FORMAT(SUM(@SUM_USE_REAL),'#,#', 'vi-VN') ErrorDesc
1753
					RETURN '-1'
1754
				END
1755
			END
1756
			--IF(ABS((ISNULL(@SUM_ADD,0) - ISNULL(@SUM_PAY_BACK,0))) <> @SUM_PHUONG_THUC)
1757
			IF(((ISNULL(@SUM_ADD,0) - ISNULL(@SUM_PAY_BACK,0))) <> @SUM_PHUONG_THUC)
1758
			BEGIN
1759
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Số tiền phương thức thanh toán (hiệu số thanh toán và trích từ tai khoản) tương ứng với số tiền chi bổ sung trừ số tiền hoàn tạm ứng: ' + FORMAT(ABS((ISNULL(@SUM_ADD,0) - ISNULL(@SUM_PAY_BACK,0))),'#,#', 'vi-VN') + ' ' + CAST(@SUM_PHUONG_THUC as nvarchar)  ErrorDesc
1760
				RETURN '-1'
1761
			END
1762
		END
1763
		-- CAP NHAT TINH TRANG DUYET KE TOAN LA DANG XU LY 
1764
		IF(ISNULL(@p_TRASFER_USER_RECIVE, '') <> '')
1765
		BEGIN
1766
			UPDATE TR_REQ_PAYMENT SET AUTH_STATUS ='W', PROCESS = NULL WHERE REQ_PAY_ID =@p_REQ_PAY_ID
1767
		END
1768
		ELSE
1769
		BEGIN
1770
			UPDATE TR_REQ_PAYMENT SET AUTH_STATUS ='U', PROCESS = NULL WHERE REQ_PAY_ID =@p_REQ_PAY_ID
1771
		END
1772
		
1773
		INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
1774
				
1775
		VALUES(@p_REQ_PAY_ID,'SEND',@p_MAKER_ID,GETDATE(), N'Đơn vị gửi phê duyệt',N'Đơn vị tạo phiếu thanh toán và gửi phê duyệt')
1776
		--- Luu log chinh sua
1777
		INSERT INTO TR_REQ_PAY_INVOICE_LOG SELECT * FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID
1778
		-----
1779
		UPDATE TR_REQ_PAY_SCHEDULE SET AMT_REMAIN =0.00 WHERE AMT_REMAIN <0
1780
		UPDATE TR_REQ_PAY_BUDGET SET AMT_APP= ROUND(AMT_APP,0), AMT_REMAIN = ROUND(AMT_REMAIN,0)
1781
				
1782
		IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE (TRASFER_USER_RECIVE <> '' AND TRASFER_USER_RECIVE IS NOT NULL) AND REQ_PAY_ID =@p_REQ_PAY_ID))
1783
		BEGIN
1784
			SELECT '4' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, N'Đơn vị gửi phiếu phê duyệt phiếu đề nghị thanh toán số: ' + ISNULL(@p_REQ_PAY_CODE,'') + N' thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận phiếu' ErrorDesc
1785
			RETURN '4'
1786
		END
1787
		ELSE
1788
		BEGIN
1789
			SELECT '4' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, N'Đơn vị gửi phiếu phê duyệt phiếu đề nghị thanh toán số: ' + ISNULL(@p_REQ_PAY_CODE,'') + N' thành công. Vui lòng đợi trưởng đơn vị phê duyệt phiếu' ErrorDesc
1790
			RETURN '4'
1791
		END
1792
	END
1793
-- END VALIDATE SEND APPROVE	
1794

    
1795

    
1796
SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, '' ErrorDesc
1797
RETURN '0'
1798
ABORT:
1799
BEGIN
1800
		ROLLBACK TRANSACTION
1801
		SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
1802
		RETURN '-1'
1803
End
1804