V_QUERY_SPONSOR

This provides the ability to query all sponsor fields.

Fields

Field Field Type Null Description
ID uniqueidentifier System record ID
DONOTTERMINATE bit Do not terminate
ACTIVESPONSORSHIPS int yes Active sponsorships
UNIQUEOPPORTUNITIESFORGIFTDONOR bit Unique opportunities for gift donor
SPONSORSINCE date yes Sponsor since
SPONSORSHIPTOTALAMOUNT money yes Sponsorship payments to date
STATUS varchar(8) Status
ADDEDBY_APPLICATION nvarchar(200) yes Added by application
ADDEDBY_USERNAME nvarchar(128) yes Added by user name
CHANGEDBY_APPLICATION nvarchar(200) yes Changed by application
CHANGEDBY_USERNAME nvarchar(128) yes Changed by user name
DATEADDED datetime Date added
DATECHANGED datetime Date changed
TSLONG bigint yes Timestamp value
ACTIVECOMMITMENTS int yes Active financial commitments
BASECURRENCYID uniqueidentifier yes BASECURRENCYID
SPONSORSHIPTOTALORGANIZATIONAMOUNT money yes Sponsorship payments to date (organization currency)
ORGANIZATIONEXCHANGERATEID uniqueidentifier yes ORGANIZATIONEXCHANGERATEID

Definition

Copy
/*
Generated by Blackbaud AppFx Platform
Date:  3/28/2016 5:45:31 PM
Assembly Version:  Blackbaud.AppFx.Platform.SqlClr, Version=4.0.158.0, Culture=neutral, PublicKeyToken=null
Copyright Blackbaud
*/
CREATE VIEW dbo.V_QUERY_SPONSOR AS



-- removed the SPONSORS CTE as it wasn't needed

-- also removed the currency fields from the GROUP BY in the cte below and ensured they are properly calculated in the select statement. When multicurrency was added to this view

-- the one result per sponsor desired behavior was broken, because different exchange rates/base currencies would cause multiple result below, therefore we had to put conditional

-- case logic in the select statements to prevent that

-- This queryview is intended to produce one result per SPONSOR!!!

with SPONSORSHIPPAYMENTS as
(
  select
    FINANCIALTRANSACTION.CONSTITUENTID,
    case
      when min(cast(isnull(REVENUE_EXT.NONPOSTABLEBASECURRENCYID, V.BASECURRENCYID) as nvarchar(36))) = max(cast(isnull(REVENUE_EXT.NONPOSTABLEBASECURRENCYID, V.BASECURRENCYID) as nvarchar(36))) then sum(FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT)
      else null
    end as SPONSORSHIPTOTALAMOUNT,
    case
      when min(cast(isnull(REVENUE_EXT.NONPOSTABLEBASECURRENCYID, V.BASECURRENCYID) as nvarchar(36))) = max(cast(isnull(REVENUE_EXT.NONPOSTABLEBASECURRENCYID, V.BASECURRENCYID) as nvarchar(36))) then cast(min(cast(isnull(REVENUE_EXT.NONPOSTABLEBASECURRENCYID, V.BASECURRENCYID) as nvarchar(36))) as uniqueidentifier)
      else null
    end as BASECURRENCYID,
    sum(FINANCIALTRANSACTIONLINEITEM.ORGAMOUNT) as SPONSORSHIPTOTALORGANIZATIONAMOUNT,
    case
      when min(cast(FINANCIALTRANSACTION.ORGEXCHANGERATEID as nvarchar(36))) = max(cast(FINANCIALTRANSACTION.ORGEXCHANGERATEID as nvarchar(36))) then cast(min(cast(FINANCIALTRANSACTION.ORGEXCHANGERATEID as nvarchar(36))) as uniqueidentifier)
      else null
    end as ORGANIZATIONEXCHANGERATEID
  from dbo.FINANCIALTRANSACTIONLINEITEM
    inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
    inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
    inner join dbo.REVENUE_EXT on REVENUE_EXT.ID = FINANCIALTRANSACTION.ID
    inner join dbo.V_BASECURRENCYFORFINANCIALTRANSACTION_I V with (noexpand) on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = V.FINANCIALTRANSACTIONID
    inner join SPONSOR on SPONSOR.ID = FINANCIALTRANSACTION.CONSTITUENTID
  where
    REVENUESPLIT_EXT.TYPECODE = 9 and
    FINANCIALTRANSACTION.TYPECODE = 0 and
    FINANCIALTRANSACTION.DELETEDON is null
  group by FINANCIALTRANSACTION.CONSTITUENTID
)
select
  SPONSOR.ID,
  SPONSOR.DONOTTERMINATE,
  (
    select count(1)
    from dbo.SPONSORSHIP
    where
      CONSTITUENTID = SPONSOR.ID and
      STATUSCODE = 1
  ) as ACTIVESPONSORSHIPS,
  SPONSOR.UNIQUEOPPORTUNITIESFORGIFTDONOR,
  (
    select min(DATEFROM)
    from dbo.SPONSORDATERANGE
    where CONSTITUENTID = SPONSOR.ID
  ) as [SPONSORSINCE],
  SPONSORSHIPPAYMENTS.SPONSORSHIPTOTALAMOUNT,
  case 
    (
      select count(1)
      from dbo.SPONSORSHIP
      where
        CONSTITUENTID = SPONSOR.ID
        and STATUSCODE = 1
    )
    when 0 then 'Inactive'
    else 'Active'
  end as [STATUS],
  [ADDEDBY].APPLICATIONNAME as [ADDEDBY_APPLICATION],
  [ADDEDBY].USERNAME as [ADDEDBY_USERNAME],
  [CHANGEDBY].APPLICATIONNAME as [CHANGEDBY_APPLICATION],
  [CHANGEDBY].USERNAME as [CHANGEDBY_USERNAME],
  SPONSOR.DATEADDED,
  SPONSOR.DATECHANGED,
  SPONSOR.TSLONG,
  (
    select count(1)
    from dbo.SPONSORSHIP
      inner join dbo.FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTIONLINEITEM.ID = SPONSORSHIP.REVENUESPLITID
      inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.ID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
    where
      FINANCIALTRANSACTION.CONSTITUENTID = SPONSOR.ID and
      FINANCIALTRANSACTION.DELETEDON is null and
      SPONSORSHIP.STATUSCODE = 1
  ) as ACTIVECOMMITMENTS,
  SPONSORSHIPPAYMENTS.BASECURRENCYID,
  SPONSORSHIPPAYMENTS.SPONSORSHIPTOTALORGANIZATIONAMOUNT,
  SPONSORSHIPPAYMENTS.ORGANIZATIONEXCHANGERATEID
from dbo.SPONSOR
  left join SPONSORSHIPPAYMENTS on SPONSORSHIPPAYMENTS.CONSTITUENTID = SPONSOR.ID
  left join dbo.CHANGEAGENT as [ADDEDBY] on [ADDEDBY].ID = SPONSOR.ADDEDBYID
  left join dbo.CHANGEAGENT as [CHANGEDBY] on [CHANGEDBY].ID = SPONSOR.CHANGEDBYID