USP_STANDINGORDERSIMPORTPROCESS_VERIFYREVENUE
Verifies revenue information for the standing orders import process.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTID | uniqueidentifier | IN | |
@ACCOUNTID | uniqueidentifier | IN | |
@AMOUNT | money | IN | |
@CUTOFFDATE | datetime | IN | |
@PAYFUTURE | bit | IN | |
@PAYMENTCURRENCYID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure USP_STANDINGORDERSIMPORTPROCESS_VERIFYREVENUE
(
@CONSTITUENTID uniqueidentifier,
@ACCOUNTID uniqueidentifier,
@AMOUNT money,
@CUTOFFDATE datetime,
@PAYFUTURE bit,
@PAYMENTCURRENCYID uniqueidentifier
)
as
set nocount on;
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate();
declare @MULTICURRENCYENABLED bit
set @MULTICURRENCYENABLED = dbo.UFN_CONDITIONSETTING_EVALUATEEXISTSCONDITION('Multicurrency');
if @PAYMENTCURRENCYID is null
set @PAYMENTCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
with INSTALLMENTS_CTE (
ID,
TRANSACTIONTYPECODE,
TRANSACTIONAMOUNT,
TRANSACTIONCURRENCYID,
BASECURRENCYID
) as (
select
REVENUE.ID,
REVENUE.TRANSACTIONTYPECODE,
REVENUE.TRANSACTIONAMOUNT,
REVENUE.TRANSACTIONCURRENCYID,
REVENUE.BASECURRENCYID
from
REVENUESCHEDULESTANDINGORDERPAYMENT
inner join REVENUE on
REVENUESCHEDULESTANDINGORDERPAYMENT.ID = REVENUE.ID
inner join REVENUEPAYMENTMETHOD on
REVENUEPAYMENTMETHOD.REVENUEID = REVENUE.ID
where
REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 11 and
REVENUE.CONSTITUENTID = @CONSTITUENTID and
REVENUESCHEDULESTANDINGORDERPAYMENT.CONSTITUENTACCOUNTID = @ACCOUNTID
)
select
INSTALLMENTS_CTE.ID,
INSTALLMENTS_CTE.TRANSACTIONTYPECODE,
INSTALLMENTS_CTE.BASECURRENCYID
from
INSTALLMENTS_CTE
left outer join INSTALLMENT on
INSTALLMENT.REVENUEID = INSTALLMENTS_CTE.ID
inner join REVENUESCHEDULE on
REVENUESCHEDULE.ID = INSTALLMENTS_CTE.ID
where
(@MULTICURRENCYENABLED = 0 or
INSTALLMENTS_CTE.TRANSACTIONCURRENCYID = @PAYMENTCURRENCYID) and
(
(
((INSTALLMENT.DATE <= @CUTOFFDATE) or (@PAYFUTURE = 1)) and
(INSTALLMENTS_CTE.TRANSACTIONTYPECODE = 1) and
(INSTALLMENT.SEQUENCE =
(select COALESCE(MAX(SEQUENCE),0) + 1 as SEQUENCE
from
dbo.INSTALLMENT
inner join dbo.INSTALLMENTSPLIT on INSTALLMENT.ID = INSTALLMENTSPLIT.INSTALLMENTID
left join dbo.INSTALLMENTSPLITPAYMENT on INSTALLMENTSPLIT.ID = INSTALLMENTSPLITPAYMENT.INSTALLMENTSPLITID
left join dbo.INSTALLMENTSPLITWRITEOFF on INSTALLMENTSPLITWRITEOFF.INSTALLMENTSPLITID = INSTALLMENTSPLIT.ID
where
INSTALLMENT.REVENUEID = INSTALLMENTS_CTE.ID
and
(
INSTALLMENTSPLITPAYMENT.ID is not null
or INSTALLMENTSPLITWRITEOFF.WRITEOFFID is not null
)
)
) and
(INSTALLMENT.TRANSACTIONAMOUNT = @AMOUNT)
) or (
REVENUESCHEDULE.STATUSCODE = 0 and --Active
(INSTALLMENTS_CTE.TRANSACTIONTYPECODE = 2) and
((REVENUESCHEDULE.NEXTTRANSACTIONDATE <= @CUTOFFDATE) or (@PAYFUTURE = 1)) and
(INSTALLMENTS_CTE.TRANSACTIONAMOUNT = @AMOUNT)
)
)