UFN_MEMBERSHIPDUESBATCH_PAYMENTVALIDFORDIRECTDEBIT_UK
Return
Return Type |
---|
bit |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@MEMBERSHIPDUESBATCHID | uniqueidentifier | IN | |
@EXISTINGMEMBERSHIPID | uniqueidentifier | IN | |
@MEMBERSHIPPROGRAMID | uniqueidentifier | IN |
Definition
Copy
create function dbo.UFN_MEMBERSHIPDUESBATCH_PAYMENTVALIDFORDIRECTDEBIT_UK(@MEMBERSHIPDUESBATCHID uniqueidentifier,@EXISTINGMEMBERSHIPID uniqueidentifier,@MEMBERSHIPPROGRAMID uniqueidentifier)
returns bit
as
begin
declare @SOURCEREVENUEID uniqueidentifier = dbo.UFN_MEMBERSHIP_GETPLEDGE(@EXISTINGMEMBERSHIPID)
if @SOURCEREVENUEID is null
begin
select @SOURCEREVENUEID = dbo.UFN_MEMBERSHIP_GETRECURRINGGIFT(@EXISTINGMEMBERSHIPID);
end
--Return false when there is no existing source revenue, this means there is no installmentplan or recurring gift
if @SOURCEREVENUEID is null
return 0;
declare @R bit;
--Note: This select will return a row that are considered invalid. So the case that assigns to @R looks
--inverted. However, it's correct: if there are any rows returned then the @BATCHREVENUEID is not valid for UK direct debit
select
@R = case when count(1) > 0 then 0 else 1 end
from dbo.BATCHMEMBERSHIPDUES
inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.ID = @SOURCEREVENUEID
inner join dbo.REVENUEPAYMENTMETHOD on REVENUEPAYMENTMETHOD.REVENUEID = FINANCIALTRANSACTION.ID
inner join dbo.REVENUESCHEDULEDIRECTDEBITPAYMENT as REVENUESCHEDULEDIRECTDEBITPAYMENT on REVENUESCHEDULEDIRECTDEBITPAYMENT.ID = FINANCIALTRANSACTION.ID
where BATCHMEMBERSHIPDUES.ID = @MEMBERSHIPDUESBATCHID
and BATCHMEMBERSHIPDUES.PAYMENTMETHODCODE = 3
and REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 3
and FINANCIALTRANSACTION.DELETEDON is null
and --This and clause has all the rejection rules
(
REVENUESCHEDULEDIRECTDEBITPAYMENT.CONSTITUENTACCOUNTID <> BATCHMEMBERSHIPDUES.CONSTITUENTACCOUNTID -- The application has a different account from the payment
or
(
dbo.UFN_PAPERLESSMANDATES_ENABLED_FORMEMBERSHIPPROGRAM(@MEMBERSHIPPROGRAMID) = 1 --Site is configured for paperless mandates but...
and
(
--... the DDISOURCECODE is null
REVENUESCHEDULEDIRECTDEBITPAYMENT.DDISOURCECODEID is null
or --... the advance notice date is not set at all
REVENUESCHEDULEDIRECTDEBITPAYMENT.PMADVANCENOTICESENTDATE is null
or --...the advance notice date is not in the right place
--The "GETEARLIESTTIME" date function has been inlined here for performance (the part with "cast(@DATE as date)")...
dateadd(dd,dbo.UFN_PAPERLESSMANDATES_DAYSADVANCEDNOTICE_FORREVENUE(FINANCIALTRANSACTION.ID), REVENUESCHEDULEDIRECTDEBITPAYMENT.PMADVANCENOTICESENTDATE) > cast(BATCHMEMBERSHIPDUES.DATE as date)
)
)
)
return @R;
end