UFN_CORPORATION_GETEMPLOYEEGIVINGTOTALINCURRENCY_BULK
Returns the employees for the given corporation based on the current corporate relationship types.
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@CURRENCYID | uniqueidentifier | IN | |
@ORGANIZATIONCURRENCYID | uniqueidentifier | IN | |
@DECIMALDIGITS | tinyint | IN | |
@ROUNDINGTYPECODE | tinyint | IN |
Definition
Copy
CREATE function [dbo].[UFN_CORPORATION_GETEMPLOYEEGIVINGTOTALINCURRENCY_BULK]
(
@CURRENTAPPUSERID uniqueidentifier,
@CURRENCYID uniqueidentifier,
@ORGANIZATIONCURRENCYID uniqueidentifier,
@DECIMALDIGITS tinyint,
@ROUNDINGTYPECODE tinyint
)
returns table
as
return(
select
RELATIONSHIP.RECIPROCALCONSTITUENTID as CONSTITUENTID,
case
when (@CURRENCYID is null) or (@CURRENCYID = @ORGANIZATIONCURRENCYID)
then coalesce(sum(REVENUESPLIT.ORGAMOUNT), 0)
else
coalesce(sum(RS.AMOUNTINCURRENCY), 0)
end [AMOUNTINCURRENCY],
cast(REVENUE.DATE as datetime) DATE
from
dbo.RELATIONSHIP
inner join dbo.EMPLOYEECORPORATERELATIONSHIPTYPE on RELATIONSHIP.RELATIONSHIPTYPECODEID = EMPLOYEECORPORATERELATIONSHIPTYPE.RELATIONSHIPTYPECODEID
inner join dbo.FINANCIALTRANSACTION REVENUE on REVENUE.CONSTITUENTID = RELATIONSHIP.RELATIONSHIPCONSTITUENTID
inner join (select distinct REVENUEID from dbo.UFN_SITEACCESSABLE_REVENUESPLITID_FORUSER(@CURRENTAPPUSERID)) SITEFILTER on SITEFILTER.REVENUEID = REVENUE.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT on REVENUESPLIT.FINANCIALTRANSACTIONID = REVENUE.ID
inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT_EXT.ID = REVENUESPLIT.ID
inner join dbo.PDACCOUNTSYSTEM on REVENUE.PDACCOUNTSYSTEMID = PDACCOUNTSYSTEM.ID
inner join dbo.CURRENCYSET on PDACCOUNTSYSTEM.CURRENCYSETID = CURRENCYSET.ID
left join dbo.INSTALLMENTSPLITPAYMENT on REVENUESPLIT.ID = INSTALLMENTSPLITPAYMENT.PAYMENTID
left join dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY_BULK(@CURRENCYID,dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(),@DECIMALDIGITS,@ROUNDINGTYPECODE) as RS on RS.ID = REVENUESPLIT.ID
where
REVENUE.DELETEDON is null and
REVENUESPLIT.DELETEDON is null and
REVENUESPLIT.TYPECODE <> 1 and
((@CURRENCYID is null)
or (@CURRENCYID = @ORGANIZATIONCURRENCYID)
or @CURRENCYID = CURRENCYSET.BASECURRENCYID)
and
(REVENUE.TYPECODE in (1,3) or --Pledge or MG claim
(REVENUE.TYPECODE = 0 and
(REVENUESPLIT_EXT.APPLICATIONCODE in (0,1,3,4,5,6,18,19) or
(REVENUESPLIT_EXT.APPLICATIONCODE = 7 and INSTALLMENTSPLITPAYMENT.ID is null) -- unapplied MG claim payments
)
)
) --Payments
group by RELATIONSHIP.RECIPROCALCONSTITUENTID,REVENUE.DATE
union all
select
RELATIONSHIP.RECIPROCALCONSTITUENTID as CONSTITUENTID,
case
when [LATESTORGANIZATIONEXCHANGERATE].RATE is not null
then sum(dbo.UFN_CURRENCY_ROUND(dbo.UFN_CURRENCY_APPLYRATE(REVENUESPLIT.ORGAMOUNT, [LATESTORGANIZATIONEXCHANGERATE].RATE), @DECIMALDIGITS, @ROUNDINGTYPECODE))
when [LATESTINVERSEORGANIZATIONEXCHANGERATE].RATE is not null
then sum(dbo.UFN_CURRENCY_ROUND(dbo.UFN_CURRENCY_APPLYRATE(REVENUESPLIT.ORGAMOUNT, cast((1 / [LATESTINVERSEORGANIZATIONEXCHANGERATE].RATE) as decimal(20,8))), @DECIMALDIGITS, @ROUNDINGTYPECODE))
else
0
end [AMOUNTINCURRENCY],
cast(REVENUE.DATE as datetime) DATE
from
dbo.RELATIONSHIP
inner join dbo.EMPLOYEECORPORATERELATIONSHIPTYPE on RELATIONSHIP.RELATIONSHIPTYPECODEID = EMPLOYEECORPORATERELATIONSHIPTYPE.RELATIONSHIPTYPECODEID
inner join dbo.FINANCIALTRANSACTION REVENUE on REVENUE.CONSTITUENTID = RELATIONSHIP.RELATIONSHIPCONSTITUENTID
inner join (select distinct REVENUEID from dbo.UFN_SITEACCESSABLE_REVENUESPLITID_FORUSER(@CURRENTAPPUSERID)) SITEFILTER on SITEFILTER.REVENUEID = REVENUE.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT on REVENUESPLIT.FINANCIALTRANSACTIONID = REVENUE.ID
inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT_EXT.ID = REVENUESPLIT.ID
inner join dbo.PDACCOUNTSYSTEM on REVENUE.PDACCOUNTSYSTEMID = PDACCOUNTSYSTEM.ID
inner join dbo.CURRENCYSET on PDACCOUNTSYSTEM.CURRENCYSETID = CURRENCYSET.ID
left join dbo.INSTALLMENTSPLITPAYMENT on REVENUESPLIT.ID = INSTALLMENTSPLITPAYMENT.PAYMENTID
left join dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY_BULK(@CURRENCYID,dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(),@DECIMALDIGITS,@ROUNDINGTYPECODE) as RS on RS.ID = REVENUESPLIT.ID
outer apply
(
select
RATE
from
dbo.CURRENCYEXCHANGERATE
where
@ORGANIZATIONCURRENCYID = CURRENCYEXCHANGERATE.FROMCURRENCYID
and @CURRENCYID = CURRENCYEXCHANGERATE.TOCURRENCYID
and CURRENCYEXCHANGERATE.TYPECODE in (0,1)
and CURRENCYEXCHANGERATE.ISLATESTRATEFORASOFDATE = 1
and dateadd(ms, 86399996,cast(REVENUE.DATE as datetime)) >= CURRENCYEXCHANGERATE.ASOFDATESDTZ
and dateadd(ms, 86399996,cast(REVENUE.DATE as datetime)) <= CURRENCYEXCHANGERATE.NEXTRATEASOFDATEORMAXSDTZ
) LATESTORGANIZATIONEXCHANGERATE
outer apply
(
select
RATE
from
dbo.CURRENCYEXCHANGERATE
where
@CURRENCYID = CURRENCYEXCHANGERATE.FROMCURRENCYID
and @ORGANIZATIONCURRENCYID= CURRENCYEXCHANGERATE.TOCURRENCYID
and CURRENCYEXCHANGERATE.TYPECODE in (0,1)
and CURRENCYEXCHANGERATE.ISLATESTRATEFORASOFDATE = 1
and dateadd(ms, 86399996,cast(REVENUE.DATE as datetime)) >= CURRENCYEXCHANGERATE.ASOFDATESDTZ
and dateadd(ms, 86399996,cast(REVENUE.DATE as datetime)) <= CURRENCYEXCHANGERATE.NEXTRATEASOFDATEORMAXSDTZ
) LATESTINVERSEORGANIZATIONEXCHANGERATE
where ((@CURRENCYID is not null)
and (@CURRENCYID <> @ORGANIZATIONCURRENCYID)
and @CURRENCYID <> CURRENCYSET.BASECURRENCYID)
and
(REVENUE.TYPECODE in (1,3) or --Pledge or MG claim
(REVENUE.TYPECODE = 0 and
(REVENUESPLIT_EXT.APPLICATIONCODE in (0,1,3,4,5,6,18,19) or
(REVENUESPLIT_EXT.APPLICATIONCODE = 7 and INSTALLMENTSPLITPAYMENT.ID is null) -- unapplied MG claim payments
)
)
) and --Payments
REVENUE.DELETEDON is null and
REVENUESPLIT.DELETEDON is null and
REVENUESPLIT.TYPECODE <> 1
group by RELATIONSHIP.RECIPROCALCONSTITUENTID,LATESTORGANIZATIONEXCHANGERATE.RATE,LATESTINVERSEORGANIZATIONEXCHANGERATE.RATE,REVENUE.DATE
);