UFN_DESIGNATION_REVENUERECEIVEDINCURRENCY
This function returns revenue received for designations in a given currency.
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@STARTDATE | datetime | IN | |
@ENDDATE | datetime | IN | |
@CURRENCYID | uniqueidentifier | IN | |
@DESIGNATIONID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_DESIGNATION_REVENUERECEIVEDINCURRENCY
(
@STARTDATE datetime,
@ENDDATE datetime,
@CURRENCYID uniqueidentifier,
@DESIGNATIONID uniqueidentifier
)
returns @REVENUEINFO table
(
DESIGNATIONID uniqueidentifier NOT NULL PRIMARY KEY CLUSTERED,
TOTALRECEIVED money NOT NULL
)
as
begin
select @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE),
@ENDDATE = dbo.UFN_DATE_GETLATESTTIME(@ENDDATE);
declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
declare @DECIMALDIGITS tinyint;
declare @ROUNDINGTYPECODE tinyint;
if @CURRENCYID is null
set @CURRENCYID = @ORGANIZATIONCURRENCYID;
select
@DECIMALDIGITS = DECIMALDIGITS,
@ROUNDINGTYPECODE = ROUNDINGTYPECODE
from
dbo.UFN_CURRENCY_GETPROPERTIES(@CURRENCYID)
insert @REVENUEINFO
select
D.ID,
isnull(sum(REVENUESPLIT.AMOUNTINCURRENCY), 0) - isnull(sum(REFUNDSPLIT.REFUNDTOTAL), 0)
from
dbo.DESIGNATION D
inner join dbo.DESIGNATION DESIGNATION2 on (D.DESIGNATIONLEVEL1ID = DESIGNATION2.DESIGNATIONLEVEL1ID
and (D.DESIGNATIONLEVEL2ID = DESIGNATION2.DESIGNATIONLEVEL2ID or D.DESIGNATIONLEVEL2ID is null)
and (D.DESIGNATIONLEVEL3ID = DESIGNATION2.DESIGNATIONLEVEL3ID or D.DESIGNATIONLEVEL3ID is null)
and (D.DESIGNATIONLEVEL4ID = DESIGNATION2.DESIGNATIONLEVEL4ID or D.DESIGNATIONLEVEL4ID is null)
and (D.DESIGNATIONLEVEL5ID = DESIGNATION2.DESIGNATIONLEVEL5ID or D.DESIGNATIONLEVEL5ID is null))
inner join dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCYID, @DECIMALDIGITS, @ROUNDINGTYPECODE) REVENUESPLIT on REVENUESPLIT.DESIGNATIONID = DESIGNATION2.ID
left outer join dbo.UFN_CREDIT_GETSPLITREFUNDAMOUNT_BULK() REFUNDSPLIT
on REVENUESPLIT.ID = REFUNDSPLIT.SOURCELINEITEMID
inner join dbo.FINANCIALTRANSACTION REVENUE on REVENUESPLIT.REVENUEID = REVENUE.ID
where
(cast(REVENUE.DATE as datetime) >= @STARTDATE or @STARTDATE is null) and
(cast(REVENUE.DATE as datetime) <= @ENDDATE or @ENDDATE is null) and
/*
In the case of a sales order, use the order split applied to the gift to aid incorporating refunds.
Filter out any payments with application type 'Order' so as not to double count sales order splits.
*/
REVENUE.TYPECODE in (0, 5) and REVENUE.DELETEDON is null and
(REVENUESPLIT.APPLICATIONCODE in (0,3,6,7,13) or (REVENUESPLIT.APPLICATIONCODE = 1 and REVENUESPLIT.TYPECODE = 0)) and
(REVENUESPLIT.SPLITDELETEDON is null and REVENUESPLIT.REVENUEDELETEDON is null) and
(@DESIGNATIONID is null or @DESIGNATIONID = D.ID)
group by D.ID
return
end