UFN_BACSPROCESS_GETTRANSACTIONCODE
Returns the transaction code given a batch revenue ID.
Return
Return Type |
---|
nvarchar(2) |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@BATCHREVENUEID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_BACSPROCESS_GETTRANSACTIONCODE(@BATCHREVENUEID uniqueidentifier)
returns nvarchar(2)
with execute as caller
as begin
declare @SOURCEREVENUEID uniqueidentifier;
select @SOURCEREVENUEID = BATCHREVENUEAPPLICATION.REVENUEID from dbo.BATCHREVENUEAPPLICATION
inner join dbo.BATCHREVENUE on BATCHREVENUE.ID = BATCHREVENUEAPPLICATION.BATCHREVENUEID
where BATCHREVENUE.ID = @BATCHREVENUEID;
if @SOURCEREVENUEID is null
begin
declare @APPINFO as nvarchar(60);
set @APPINFO = (select APPLICATIONINFO from dbo.BATCHREVENUE where ID = @BATCHREVENUEID);
set @SOURCEREVENUEID = (select SINGLEAPPLICATIONID from dbo.UFN_REVENUEBATCH_PARSEAPPLICATIONINFO(@APPINFO));
end
declare @TRANSACTIONTYPECODE tinyint = (select TRANSACTIONTYPECODE from dbo.REVENUE where ID = @SOURCEREVENUEID);
declare @ACTIVITYCOUNT integer;
if @TRANSACTIONTYPECODE = 2
begin
select @ACTIVITYCOUNT = COUNT(*) from dbo.RECURRINGGIFTACTIVITY
inner join dbo.REVENUE on REVENUE.ID = RECURRINGGIFTACTIVITY.SOURCEREVENUEID
where REVENUE.ID = @SOURCEREVENUEID;
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