Project

General

Profile

invoice_vat_upd.txt

Luc Tran Van, 11/15/2022 01:59 PM

 
1
ALTER PROCEDURE [dbo].[TR_REQ_PAY_INVOICE_VAT_Upd]
2
@p_REQ_PAY_ID	VARCHAR(15)= NULL,
3
@p_MAKER_ID	VARCHAR(15)	= NULL,
4
@p_MAKER_ID_KT	VARCHAR(15)	= NULL,
5
@p_REQ_TYPE_CURRENCY NVARCHAR(50) = 'VND',
6
@p_RATE	DECIMAL(18,2) = '1',
7
@p_XMP_TEMP_VAT_INVOICE XML = NULL
8
AS
9
	DECLARE @INDEX_VAT INT =0
10
	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,
11
		@INVOICE_NO NVARCHAR(50) = NULL,@INVOICE_DT VARCHAR(20) = NULL,@SELLER NVARCHAR(250) = NULL,@TAX_NO NVARCHAR(15) = NULL,@GOODS_NAME NVARCHAR(250) = NULL,
12
		@PRICE DECIMAL(18, 0) = NULL,@TAX DECIMAL(18, 0) = NULL,@NOTES NVARCHAR(MAX) = NULL,@VAT_RATE DECIMAL(18,2),
13
		@ACC_NO VARCHAR(25),@ACC_NAME NVARCHAR(250),@ISSUED_BY NVARCHAR(250),@ISSUED_DT VARCHAR(20),@RATE DECIMAL(18,2),@PRICE_KT DECIMAL(18,2) =0,@TOTAL_AMT_KT DECIMAL(18,2) =0,@VAT_KT DECIMAL(18,2) =0,
14
		@TYPE_VAT VARCHAR(15),@TYPE_FUNC VARCHAR(15), @IS_TRANSFER_EXTERNAL VARCHAR(15), @CURRENCY VARCHAR(15)
15
	
16
	DECLARE @hdocVATInvoice INT;
17
	EXEC sp_xml_preparedocument @hdocVATInvoice OUTPUT, @p_XMP_TEMP_VAT_INVOICE;
18
BEGIN TRANSACTION
19
-- BEGIN HOA DON CO VAT
20
	IF(@p_XMP_TEMP_VAT_INVOICE IS NOT NULL)
21
	BEGIN
22
		-- hoa don co VAT
23
		DECLARE XmlVATInvoice CURSOR FOR
24
		SELECT * FROM OPENXML(@hdocVATInvoice, '/Root/XmlVATInvoice', 2)
25
		WITH(TRANS_NO nvarchar(50),TRANS_DT VARCHAR(20),INVOICE_SIGN nvarchar(50),INVOICE_NO_SIGN nvarchar(50),
26
				INVOICE_NO nvarchar(50),INVOICE_DT VARCHAR(20) ,SELLER nvarchar(250),TAX_NO nvarchar(15),GOODS_NAME nvarchar(250) ,
27
				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),PRICE_KT DECIMAL(18,0),VAT_KT DECIMAL(18,2),TOTAL_AMT_KT DECIMAL(18,2),TYPE_VAT VARCHAR(15), TYPE_FUNC VARCHAR(15))
28
		OPEN XmlVATInvoice
29

    
30
		-- CAP NHAT HOA DON CO VAT
31
		FETCH NEXT FROM XmlVATInvoice  INTO @TRANS_NO , @TRANS_DT  ,@INVOICE_SIGN ,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,
32
		@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC
33
		WHILE @@fetch_status=0 BEGIN
34
			SET @INDEX_VAT = @INDEX_VAT+1
35
			--IF(@TYPE_FUNC ='KT')
36
			--BEGIN
37
				IF(EXISTS(SELECT REQ_PAYDT_ID FROM TR_REQ_PAY_INVOICE 
38
									WHERE INVOICE_NO =@INVOICE_NO 
39
										AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN 
40
										AND INVOICE_SIGN =@INVOICE_SIGN 
41
										AND TAX_NO =@TAX_NO 
42
										AND TAX =@TAX 
43
										AND TYPE_FUNC = 'KT' 
44
										AND AUTH_STATUS <>'D' 
45
										AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS NOT IN ('E','D') AND MAKER_ID NOT IN (SELECT TLNANME FROM TL_USER WHERE RoleName ='DISABLE' OR AUTH_STATUS ='U'))
46
							)
47
					)
48
				BEGIN
49
					ROLLBACK TRANSACTION
50
					CLOSE XmlVATInvoice;
51
					DEALLOCATE XmlVATInvoice;
52
					SELECT '-1' as Result, '' REQ_PAY_ID,N'Thông tin hóa đơn đính kèm có VAT, dòng ' + CONVERT(VARCHAR(5),@INDEX_VAT)+N': Số hóa đơn '+ @INVOICE_NO +N' đã tồn tại trong hệ thống' ErrorDesc
53
					RETURN '-1'
54
				END	
55
			--END
56
			--doanptt 20/04/2022
57
			/*
58
			IF(NOT EXISTS(SELECT * FROM OPENXML(@hdoc, '/Root/XmlDataEntries', 2) WITH(DR_CR varchar(20),ACCT VARCHAR(50), ACCT_NAME VARCHAR(500), AMT decimal(18,2))  WHERE ACCT = '353200002'))
59
			BEGIN
60
				ROLLBACK TRANSACTION
61
				CLOSE XmlVATInvoice;	
62
				DEALLOCATE XmlVATInvoice;
63
				SELECT '-1' as Result, '' REQ_PAY_ID, N'Lưới hóa đơn đính kèm có VAT, nhưng lưới hạch toán không có tài khoản nợ 353200002. Vui lòng thêm tài khoản nợ 353200002 trước khi gửi phê duyệt'  ErrorDesc
64
				RETURN '-1'
65
			END
66
			*/
67
					
68
			DECLARE @p_REQ_INV_VAT_ID VARCHAR(15);
69
			EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_INVOICE', @p_REQ_INV_VAT_ID OUT;
70
			IF @p_REQ_INV_VAT_ID='' OR @p_REQ_INV_VAT_ID IS NULL GOTO ABORT;
71
			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,
72
			AUTH_STATUS,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,
73
			TOTAL_AMT_KT,TYPE_VAT,TYPE_FUNC) 
74
			VALUES (@p_REQ_INV_VAT_ID,@p_REQ_PAY_ID , @TRANS_NO , CONVERT(DATE,@TRANS_DT,103)  ,@INVOICE_SIGN ,@INVOICE_NO ,CONVERT(DATE,@INVOICE_DT,103) ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE ,
75
			@TAX,@VAT,@NOTES, @p_MAKER_ID,GETDATE(),NULL,'U',NULL,NULL,GETDATE(),@p_MAKER_ID_KT,'U',NULL,NULL,'1',@INVOICE_NO_SIGN,@VAT_RATE, @p_REQ_TYPE_CURRENCY, @p_RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,
76
			@TYPE_VAT,'KT')
77
		IF @@error<>0 GOTO ABORT;
78

    
79
		FETCH NEXT FROM XmlVATInvoice 
80
		INTO @TRANS_NO , @TRANS_DT,@INVOICE_SIGN,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,@TAX_NO ,@GOODS_NAME ,@PRICE ,
81
		@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC
82
		END;
83
		CLOSE XmlVATInvoice;
84
		DEALLOCATE XmlVATInvoice;
85
	END
86
-- END HOA DON CO VAT
87
	COMMIT TRANSACTION
88
SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID, '' ErrorDesc
89
RETURN '0'
90
ABORT:
91
BEGIN
92
		ROLLBACK TRANSACTION
93
		CLOSE XmlData;
94
		DEALLOCATE XmlData;
95
		SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
96
		RETURN '-1'
97
End