UFN_CURRENCYEXCHANGERATEDOWNLOADPROCESS_GETDEFAULTRATES
Returns a table containing the default rates to be downloaded for a new currency exchange rate download process, based on the currency sets defined.
Return
Return Type |
---|
xml |
Definition
Copy
create function dbo.[UFN_CURRENCYEXCHANGERATEDOWNLOADPROCESS_GETDEFAULTRATES]()
returns xml
as
begin
declare @RATES table ([FROMCURRENCYID] uniqueidentifier not null, [TOCURRENCYID] uniqueidentifier not null);
-- this gets all of the rates the client _should_ be populating
-- see http://meebee/BBSites/Products/InfinityDevelopment/Wiki/Wiki%20Pages/Setup%20and%20use%20of%20corporate%20and%20daily%20exchange%20rates.aspx
with [ORGANIZATIONCURRENCY] as (
select dbo.[UFN_CURRENCY_GETORGANIZATIONCURRENCY]() as [ORGANIZATIONCURRENCYID]
),
[BASETOORGANIZATIONPAIRS] as (
select
[FROM].[BASECURRENCYID] as [FROMCURRENCYID],
[TO].[ORGANIZATIONCURRENCYID] as [TOCURRENCYID]
from dbo.[CURRENCYSET] as [FROM]
cross join [ORGANIZATIONCURRENCY] as [TO]
),
[TRANSACTIONTOORGANIZATIONPAIRS] as (
select
[FROM].[CURRENCYID] as [FROMCURRENCYID],
[TO].[ORGANIZATIONCURRENCYID] as [TOCURRENCYID]
from dbo.[CURRENCYSETTRANSACTIONCURRENCY] as [FROM]
cross join [ORGANIZATIONCURRENCY] as [TO]
),
[BASETOBASEPAIRS] as (
select
[FROM].[BASECURRENCYID] as [FROMCURRENCYID],
[TO].[BASECURRENCYID] as [TOCURRENCYID]
from dbo.[CURRENCYSET] as [FROM]
cross join dbo.[CURRENCYSET] as [TO]
),
[TRANSACTIONTOBASEPAIRS] as (
select
[FROM].[CURRENCYID] as [FROMCURRENCYID],
[TO].[BASECURRENCYID] as [TOCURRENCYID]
from dbo.[CURRENCYSETTRANSACTIONCURRENCY] as [FROM]
cross join dbo.[CURRENCYSET] as [TO]
),
[BASETOTRANSACTIONPAIRS] as (
select
[FROM].[BASECURRENCYID] as [FROMCURRENCYID],
[TO].[CURRENCYID] as [TOCURRENCYID]
from dbo.[CURRENCYSET] as [FROM]
cross join dbo.[CURRENCYSETTRANSACTIONCURRENCY] as [TO]
),
[TRANSACTIONTOTRANSACTIONPAIRS] as (
select
[FROM].[CURRENCYID] as [FROMCURRENCYID],
[TO].[CURRENCYID] as [TOCURRENCYID]
from dbo.[CURRENCYSETTRANSACTIONCURRENCY] as [FROM]
cross join dbo.[CURRENCYSETTRANSACTIONCURRENCY] as [TO]
),
[RATES] as (
select
[FROMCURRENCYID],
[TOCURRENCYID]
from [BASETOORGANIZATIONPAIRS]
where [FROMCURRENCYID] <> [TOCURRENCYID]
union
select
[FROMCURRENCYID],
[TOCURRENCYID]
from [TRANSACTIONTOORGANIZATIONPAIRS]
where [FROMCURRENCYID] <> [TOCURRENCYID]
union
select
[FROMCURRENCYID],
[TOCURRENCYID]
from [BASETOBASEPAIRS]
where [FROMCURRENCYID] <> [TOCURRENCYID]
union
select
[FROMCURRENCYID],
[TOCURRENCYID]
from [TRANSACTIONTOBASEPAIRS]
where [FROMCURRENCYID] <> [TOCURRENCYID]
union
select
[FROMCURRENCYID],
[TOCURRENCYID]
from [BASETOTRANSACTIONPAIRS]
where [FROMCURRENCYID] <> [TOCURRENCYID]
union
select
[FROMCURRENCYID],
[TOCURRENCYID]
from [TRANSACTIONTOTRANSACTIONPAIRS]
where [FROMCURRENCYID] <> [TOCURRENCYID]
)
insert into @RATES
select
[RATES].[FROMCURRENCYID],
[RATES].[TOCURRENCYID]
from [RATES]
inner join dbo.[CURRENCY] as [FROM] on [FROM].[ID] = [FROMCURRENCYID]
inner join dbo.[CURRENCY] as [TO] on [TO].[ID] = [TOCURRENCYID]
order by [FROM].[NAME], [TO].[NAME]
return (select [FROMCURRENCYID], [TOCURRENCYID] from @RATES for xml raw('ITEM'), type, elements, root('RATES'), binary base64);
end