UFN_BACSPROCESS_GETTRANSACTIONCODE_MEMBERSHIPDUESBATCH
Return
Return Type |
---|
nvarchar(2) |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@MEMBERSHIPDUESBATCHID | uniqueidentifier | IN | |
@EXISTINGMEMBERSHIPID | uniqueidentifier | IN |
Definition
Copy
create function dbo.UFN_BACSPROCESS_GETTRANSACTIONCODE_MEMBERSHIPDUESBATCH(@MEMBERSHIPDUESBATCHID uniqueidentifier,@EXISTINGMEMBERSHIPID uniqueidentifier)
returns nvarchar(2)
with execute as caller
as begin
declare @SOURCEREVENUEID uniqueidentifier = dbo.UFN_MEMBERSHIP_GETPLEDGE(@EXISTINGMEMBERSHIPID) ;
if @SOURCEREVENUEID is null
begin
select @SOURCEREVENUEID = dbo.UFN_MEMBERSHIP_GETRECURRINGGIFT(@EXISTINGMEMBERSHIPID);
end
declare @TRANSACTIONTYPECODE tinyint
select @TRANSACTIONTYPECODE=TYPECODE
from dbo.FINANCIALTRANSACTION
where ID = @SOURCEREVENUEID;
declare @ACTIVITYCOUNT integer;
if @TRANSACTIONTYPECODE = 2
begin
select @ACTIVITYCOUNT = count(*)
from dbo.RECURRINGGIFTACTIVITY
inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.ID = RECURRINGGIFTACTIVITY.SOURCEREVENUEID
where FINANCIALTRANSACTION.ID = @SOURCEREVENUEID
and FINANCIALTRANSACTION.DELETEDON is null
end
else
begin
select @ACTIVITYCOUNT = count(*) from dbo.INSTALLMENT
inner join dbo.INSTALLMENTPAYMENT on INSTALLMENT.ID = INSTALLMENTPAYMENT.INSTALLMENTID
where INSTALLMENT.REVENUEID = @SOURCEREVENUEID;
end
declare @ENDDATE datetime;
declare @THISTRANSACTIONDATE datetime;
declare @FREQUENCYCODE tinyint;
declare @NUMINSTALLMENTS int;
select
@ENDDATE = REVENUESCHEDULE.ENDDATE,
@THISTRANSACTIONDATE = REVENUESCHEDULE.NEXTTRANSACTIONDATE,
@FREQUENCYCODE = REVENUESCHEDULE.FREQUENCYCODE,
@NUMINSTALLMENTS = REVENUESCHEDULE.NUMBEROFINSTALLMENTS
from REVENUESCHEDULE where REVENUESCHEDULE.ID = @SOURCEREVENUEID;
if @FREQUENCYCODE = 5
begin
return N'19';
end
else
begin
declare @NEXTTRANSACTIONDATE datetime;
select @NEXTTRANSACTIONDATE = dbo.UFN_REVENUE_GETNEXTTRANSACTIONDATE(@FREQUENCYCODE, @THISTRANSACTIONDATE);
if @ACTIVITYCOUNT = 0
begin
return N'01';
end
else if @TRANSACTIONTYPECODE = 2
begin
if @ENDDATE < @NEXTTRANSACTIONDATE
begin
return N'19';
end
end
else if (@NUMINSTALLMENTS - @ACTIVITYCOUNT) = 1
begin
return N'19';
end
end
return N'17';
end