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
|