1
|
ALTER PROCEDURE [dbo].[TR_REQ_PAY_INVOICE_UPD_Up]
|
2
|
@p_UP_ID VARCHAR(15) = NULL,
|
3
|
@p_REQ_PAY_ID varchar(15)= NULL,
|
4
|
@p_REQ_PAY_CODE varchar(50) = NULL,
|
5
|
@p_MAKER_ID varchar(15) = null,
|
6
|
@p_MAKER_ID_KT varchar(15) = null,
|
7
|
@p_EDITOR_ID VARCHAR(20) = NULL,
|
8
|
@p_XMP_TEMP XML = NULL
|
9
|
AS
|
10
|
--Validation is here
|
11
|
DECLARE @MAKER_ID_CREATE_INVOICE VARCHAR(15),@l_REQ_PAY_ID VARCHAR(15)
|
12
|
SET @MAKER_ID_CREATE_INVOICE =(SELECT MAKER_ID FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID)
|
13
|
SET @p_MAKER_ID_KT =(SELECT MAKER_ID_KT FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID)
|
14
|
SET @l_REQ_PAY_ID = (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE REQ_PAY_CODE =@p_REQ_PAY_CODE)
|
15
|
DECLARE @ENTRY_PAIR varchar(20),@DR_CR varchar(20),@ACCT VARCHAR(50), @ACCT_NAME VARCHAR(50), @AMT decimal(18,0),@CURRENCY VARCHAR(15), @EXC_RATE DECIMAL(18,0),
|
16
|
@BRANCH_ID VARCHAR(15), @DEP_ID VARCHAR(15),@TRN_DESC nvarchar(1000)
|
17
|
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,
|
18
|
@INVOICE_NO nvarchar(50) = NULL,@INVOICE_DT VARCHAR(20) = NULL,@SELLER nvarchar(50) = NULL,@TAX_NO nvarchar(15) = NULL,@GOODS_NAME nvarchar(500) = NULL,
|
19
|
@PRICE decimal(18, 0) = NULL,@TAX decimal(18, 0) = NULL,@NOTES NVARCHAR(MAX) = NULL,@VAT_RATE decimal(18,2),
|
20
|
@ACC_NO VARCHAR(25),@ACC_NAME NVARCHAR(250),@ISSUED_BY NVARCHAR(250),@ISSUED_DT VARCHAR(20),
|
21
|
@RATE DECIMAL(18,2),@PRICE_KT DECIMAL(18,2),@TOTAL_AMT_KT DECIMAL(18,2),@VAT_KT DECIMAL(18,2),@TYPE_VAT VARCHAR(15),@TYPE_FUNC VARCHAR(15),
|
22
|
@MAKER_ID VARCHAR(20), @CREATE_DT VARCHAR(20), @CREATE_DT_KT VARCHAR(20), @MAKER_ID_KT VARCHAR(20), @AUTH_STATUS_KT VARCHAR(20)
|
23
|
DECLARE @hdoc INT;
|
24
|
EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XMP_TEMP;
|
25
|
DECLARE XmlInvoice CURSOR FOR
|
26
|
SELECT *
|
27
|
FROM
|
28
|
OPENXML(@hdoc, '/Root/XmlData', 2)
|
29
|
WITH(REQ_PAY_ID VARCHAR(15),TRANS_NO nvarchar(50),TRANS_DT VARCHAR(20),INVOICE_SIGN nvarchar(50),INVOICE_NO_SIGN nvarchar(50),
|
30
|
INVOICE_NO nvarchar(50),INVOICE_DT VARCHAR(20) ,SELLER nvarchar(50),TAX_NO nvarchar(15),GOODS_NAME nvarchar(500) ,
|
31
|
PRICE decimal(18,2),TAX decimal(18, 2),VAT decimal(18,2),NOTE NVARCHAR(MAX),VAT_RATE decimal(18,2),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),
|
32
|
PRICE_KT DECIMAL(18,2),VAT_KT DECIMAL(18,2),TOTAL_AMT_KT DECIMAL(18,2),TYPE_VAT VARCHAR(15),TYPE_FUNC VARCHAR(15),
|
33
|
MAKER_ID VARCHAR(20), CREATE_DT VARCHAR(20), CREATE_DT_KT VARCHAR(20), MAKER_ID_KT VARCHAR(20), AUTH_STATUS_KT VARCHAR(20))
|
34
|
OPEN XmlInvoice;
|
35
|
DECLARE @INDEX INT =0
|
36
|
BEGIN TRANSACTION
|
37
|
-- VALIDATE
|
38
|
IF(EXISTS (SELECT * FROM TR_REQ_PAY_INVOICE_UPD WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND UP_ID<>@p_UP_ID AND AUTH_STATUS <>'A'))
|
39
|
BEGIN
|
40
|
ROLLBACK TRANSACTION
|
41
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Đang tồn tại giao dịch điều chỉnh chứng từ có mã ' + @p_REQ_PAY_CODE +N' đang chờ duyệt'ErrorDesc
|
42
|
RETURN '-1'
|
43
|
END
|
44
|
IF(@TYPE_FUNC='KT')
|
45
|
BEGIN
|
46
|
IF(EXISTS(SELECT * FROM TR_REQ_PAY_INVOICE WHERE INVOICE_NO =@INVOICE_NO AND INVOICE_NO_SIGN = @INVOICE_NO_SIGN AND INVOICE_SIGN =@INVOICE_SIGN AND TAX_NO =@TAX_NO AND TAX =@TAX AND REQ_PAY_ID <>@p_REQ_PAY_ID))
|
47
|
BEGIN
|
48
|
ROLLBACK TRANSACTION
|
49
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng ' + CONVERT(VARCHAR(5),@INDEX)+N': Số hóa đơn '+ @INVOICE_NO +N' đã tồn tại trong hệ thống' ErrorDesc
|
50
|
RETURN '-1'
|
51
|
END
|
52
|
END
|
53
|
|
54
|
-- CAP NHAT MASTER
|
55
|
SET @l_REQ_PAY_ID =(SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE REQ_PAY_CODE = @p_REQ_PAY_CODE)
|
56
|
UPDATE TR_REQ_PAY_INVOICE_UPD SET REQ_PAY_ID=@l_REQ_PAY_ID, MAKER_ID=@p_EDITOR_ID
|
57
|
WHERE UP_ID= @p_UP_ID
|
58
|
---
|
59
|
DELETE FROM TR_REQ_PAY_INVOICE_UPD_DT WHERE UPD_ID=@p_UP_ID
|
60
|
FETCH NEXT FROM XmlInvoice INTO @p_REQ_PAY_ID, @TRANS_NO , @TRANS_DT ,@INVOICE_SIGN ,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,
|
61
|
@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC,
|
62
|
@MAKER_ID, @CREATE_DT, @CREATE_DT_KT, @MAKER_ID_KT, @AUTH_STATUS_KT
|
63
|
WHILE @@fetch_status=0 BEGIN
|
64
|
INSERT INTO TR_REQ_PAY_INVOICE_UPD_DT(UPD_ID,REQ_PAY_ID,TRANS_NO,TRANS_DT,INVOICE_SIGN,INVOICE_NO,INVOICE_DT,SELLER,TAX_NO,GOODS_NAME,PRICE,
|
65
|
TAX,VAT,NOTE, MAKER_ID,CREATE_DT,EDITOR_ID,AUTH_STATUS,CHECKER_ID,APPROVE_DT, CREATE_DT_KT,MAKER_ID_KT,AUTH_STATUS_KT,CHECKER_ID_KT,APPROVE_DT_KT,RECORD_STATUS,
|
66
|
INVOICE_NO_SIGN,VAT_RATE,CURRENCY,RATE,PRICE_KT ,VAT_KT,TOTAL_AMT_KT,TYPE_VAT,TYPE_FUNC)
|
67
|
VALUES (@p_UP_ID,@l_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,
|
68
|
@TAX,@VAT,@NOTES, @MAKER_ID_CREATE_INVOICE,CONVERT(DATE,@CREATE_DT,103), @p_EDITOR_ID,'U',NULL,NULL,CONVERT(DATE,@CREATE_DT_KT,103),@p_MAKER_ID_KT,'U',NULL,NULL,'1',
|
69
|
@INVOICE_NO_SIGN,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT , @VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC)
|
70
|
IF @@error<>0 GOTO ABORT;
|
71
|
FETCH NEXT FROM XmlInvoice INTO @p_REQ_PAY_ID, @TRANS_NO , @TRANS_DT ,@INVOICE_SIGN ,@INVOICE_NO_SIGN,@INVOICE_NO ,@INVOICE_DT ,@SELLER ,
|
72
|
@TAX_NO ,@GOODS_NAME ,@PRICE ,@TAX,@VAT,@NOTES,@VAT_RATE,@CURRENCY,@RATE,@PRICE_KT ,@VAT_KT,@TOTAL_AMT_KT,@TYPE_VAT,@TYPE_FUNC,
|
73
|
@MAKER_ID, @CREATE_DT, @CREATE_DT_KT, @MAKER_ID_KT, @AUTH_STATUS_KT
|
74
|
END;
|
75
|
CLOSE XmlInvoice;
|
76
|
DEALLOCATE XmlInvoice;
|
77
|
--- Luu log chinh sua
|
78
|
INSERT INTO TR_REQ_PAY_INVOICE_LOG SELECT * FROM TR_REQ_PAY_INVOICE WHERE REQ_PAY_ID =@p_REQ_PAY_ID
|
79
|
-----
|
80
|
COMMIT TRANSACTION
|
81
|
SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID, '' ErrorDesc
|
82
|
RETURN '0'
|
83
|
ABORT:
|
84
|
BEGIN
|
85
|
ROLLBACK TRANSACTION
|
86
|
CLOSE XmlData;
|
87
|
DEALLOCATE XmlData;
|
88
|
SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
|
89
|
RETURN '-1'
|
90
|
End
|