USP_INVOICE_VALIDATE
Validates saving an invoice
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@DATEDUE | datetime | IN | |
@REMITADDRESSID | uniqueidentifier | IN | |
@DISCOUNTPERCENT | decimal(20, 4) | IN | |
@DISCOUNTAMOUNT | money | IN | |
@DISCOUNTEXPIRATIONDATE | datetime | IN | |
@PAYMENTMETHODCODE | tinyint | IN | |
@SEPARATEPAYMENT | bit | IN | |
@BANKACCOUNTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_INVOICE_VALIDATE(
@ID uniqueidentifier
,@DATEDUE datetime
,@REMITADDRESSID uniqueidentifier
,@DISCOUNTPERCENT decimal(20,4)
,@DISCOUNTAMOUNT money
,@DISCOUNTEXPIRATIONDATE datetime
,@PAYMENTMETHODCODE tinyint
,@SEPARATEPAYMENT bit
,@BANKACCOUNTID uniqueidentifier
)
as
begin
declare @PAID bit = 0;
if exists (
select I.ID
from dbo.INVOICE I
join dbo.FINANCIALTRANSACTION FT on FT.ID = I.ID
join dbo.FINANCIALTRANSACTIONAPPLICATION FTA on FTA.FINANCIALTRANSACTIONSCHEDULEID = FT.ID
where FTA.STATUSCODE <> 2 and FT.ID = I.ID)
set @PAID = 1;
if @PAID = 1
begin
IF EXISTS (
SELECT I.ID
FROM INVOICE I
WHERE I.ID = @ID and I.DATEDUE <> @DATEDUE
)
BEGIN
RAISERROR ('ERR_INVOICE_LOCKEDDATEDUE', 16, 1)
END
IF EXISTS (
SELECT I.ID
FROM INVOICE I
WHERE I.ID = @ID and I.REMITADDRESSID <> @REMITADDRESSID
)
BEGIN
RAISERROR ('ERR_INVOICE_LOCKEDREMITADDRESSID', 16, 1)
END
IF EXISTS (
SELECT I.ID
FROM INVOICE I
WHERE I.ID = @ID and I.DISCOUNTPERCENT <> @DISCOUNTPERCENT
)
BEGIN
RAISERROR ('ERR_INVOICE_LOCKEDDISCOUNTPERCENT', 16, 1)
END
IF EXISTS (
SELECT I.ID
FROM INVOICE I
WHERE I.ID = @ID and I.DISCOUNTAMOUNT <> @DISCOUNTAMOUNT
)
BEGIN
RAISERROR ('ERR_INVOICE_LOCKEDDISCOUNTAMOUNT', 16, 1)
END
IF EXISTS (
SELECT I.ID
FROM INVOICE I
WHERE I.ID = @ID and I.DISCOUNTEXPIRATIONDATE <> @DISCOUNTEXPIRATIONDATE
)
BEGIN
RAISERROR ('ERR_INVOICE_LOCKEDDISCOUNTEXPIRATIONDATE', 16, 1)
END
IF EXISTS (
SELECT I.ID
FROM INVOICE I
WHERE I.ID = @ID and I.PAYMENTMETHODCODE <> @PAYMENTMETHODCODE
)
BEGIN
RAISERROR ('ERR_INVOICE_LOCKEDPAYMENTMETHODCODE', 16, 1)
END
IF EXISTS (
SELECT I.ID
FROM INVOICE I
WHERE I.ID = @ID and I.SEPARATEPAYMENT <> @SEPARATEPAYMENT
)
BEGIN
RAISERROR ('ERR_INVOICE_LOCKEDSEPARATEPAYMENT', 16, 1)
END
IF EXISTS (
SELECT I.ID
FROM INVOICE I
WHERE I.ID = @ID and I.BANKACCOUNTID <> @BANKACCOUNTID
)
BEGIN
RAISERROR ('ERR_INVOICE_LOCKEDBANKACCOUNTID', 16, 1)
END
end
end