USP_DATAFORMTEMPLATE_VIEW_SPONSOR

The load procedure used by the view dataform template "Sponsor View Form"

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter used to load the fields defined on the form.
@DATALOADED bit INOUT Output parameter indicating whether or not data was actually loaded.
@NAME nvarchar(700) INOUT Name
@ADDRESS nvarchar(300) INOUT ADDRESS
@PHONENUMBER nvarchar(100) INOUT PHONENUMBER
@PHONETYPE nvarchar(100) INOUT Phone type
@EMAILADDRESS UDT_EMAILADDRESS INOUT EMAILADDRESS
@WEBADDRESS UDT_WEBADDRESS INOUT Web
@STATUS nvarchar(20) INOUT Sponsor status
@ISINACTIVE bit INOUT ISINACTIVE
@PICTURE varbinary INOUT Image
@PICTURETHUMBNAIL varbinary INOUT Image thumbnail
@SPONSORSINCE datetime INOUT Sponsor since
@LASTSPONSORSHIP nvarchar(100) INOUT Last sponsorship
@SPONSORSHIPCOUNT int INOUT Active sponsorships
@SPONSORSHIPTOTALAMOUNT money INOUT Sponsor paid to date
@ISSPONSORPROFILE bit INOUT ISSPONSORPROFILE
@LOOKUPID nvarchar(100) INOUT Lookup ID
@CONSTITUENTID uniqueidentifier INOUT CONSTITUENTID
@ISPROSPECT bit INOUT ISPROSPECT
@ISFORMERPROSPECT bit INOUT ISFORMERPROSPECT
@ISFUNDRAISER bit INOUT ISFUNDRAISER
@ISFORMERFUNDRAISER bit INOUT ISFORMERFUNDRAISER
@ISVOLUNTEER bit INOUT ISVOLUNTEER
@ISFORMERVOLUNTEER bit INOUT ISFORMERVOLUNTEER
@ISVENDOR bit INOUT ISVENDOR
@ISALUMNUS bit INOUT ISALUMNUS
@ISSTUDENT bit INOUT ISSTUDENT
@ISFORMERSTUDENT bit INOUT ISFORMERSTUDENT
@ISGROUPMEMBER bit INOUT ISGROUPMEMBER
@ISPLANNEDGIVER bit INOUT ISPLANNEDGIVER
@ISGROUP bit INOUT ISGROUP
@GROUPTYPE nvarchar(300) INOUT Group type
@GROUPMEMBERCOUNT int INOUT No. of members
@DONOTTERMINATE bit INOUT DONOTTERMINATE
@PASTDUETOTAL money INOUT Total past due
@SHOWPASTDUE bit INOUT SHOWPASTDUE
@SPONSORTYPECODE tinyint INOUT SPONSORTYPECODE
@ISCOMMITTEE bit INOUT ISCOMMITTEE
@ISCOMMITTEEMEMBER bit INOUT ISCOMMITTEEMEMBER
@UNIQUEOPPORTUNITIESFORGIFTDONOR bit INOUT UNIQUEOPPORTUNITIESFORGIFTDONOR
@ISREGISTRANT bit INOUT ISREGISTRANT
@ISFACULTY bit INOUT ISFACULTY
@ISFORMERSPONSOR bit INOUT ISFORMERSPONSOR
@HASSTEWARDSHIPPLAN bit INOUT HASSTEWARDSHIPPLAN
@BASECURRENCYID uniqueidentifier INOUT BASECURRENCYID
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@CONSTITUENTINACTIVITYREASON nvarchar(63) INOUT Inactive reason
@DONOTMAIL bit INOUT DONOTMAIL
@DONOTEMAIL bit INOUT DONOTEMAIL
@DONOTPHONE bit INOUT DONOTPHONE
@PHONEISCONFIDENTIAL bit INOUT PHONEISCONFIDENTIAL
@ADDRESSISCONFIDENTIAL bit INOUT ADDRESSISCONFIDENTIAL
@ADDRESSID uniqueidentifier INOUT ADDRESSID
@PHONENUMBERID uniqueidentifier INOUT PHONENUMBERID
@EMAILADDRESSID uniqueidentifier INOUT EMAILADDRESSID
@ISHOUSEHOLD bit INOUT ISHOUSEHOLD
@ISORG bit INOUT ISORG
@HASRECEIVEDFUNDS bit INOUT HASRECEIVEDFUNDS
@FINANCIALCOMMITMENTCOUNT int INOUT Active financial commitments
@SINGLESPONSORSHIP bit INOUT SINGLESPONSORSHIP
@USER_GRANTED_CONSTITPERSONALINFO_EDIT bit INOUT
@SOCIALMEDIAACCOUNTS xml INOUT

Definition

Copy

    CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_SPONSOR (
        @ID uniqueidentifier, --Back to constituent id
        @DATALOADED bit = 0 output,
        @NAME nvarchar(700) = null output,
        @ADDRESS nvarchar(300) = null output,
        @PHONENUMBER nvarchar(100) = null output,
        @PHONETYPE nvarchar(100) = null output,
        @EMAILADDRESS dbo.UDT_EMAILADDRESS = null output,
        @WEBADDRESS dbo.UDT_WEBADDRESS = null output,
        @STATUS nvarchar(20) = null output,
        @ISINACTIVE bit = null output,
        @PICTURE varbinary(max) = null output,
        @PICTURETHUMBNAIL varbinary(max) = null output,
        @SPONSORSINCE datetime = null output,
        @LASTSPONSORSHIP nvarchar(100) = null output,
        @SPONSORSHIPCOUNT int = null output,
        @SPONSORSHIPTOTALAMOUNT money = null output,
        @ISSPONSORPROFILE bit = null output,
        @LOOKUPID nvarchar(100) = null output,
        @CONSTITUENTID uniqueidentifier = null output,
        @ISPROSPECT bit = null output,
        @ISFORMERPROSPECT bit = null output,
        @ISFUNDRAISER bit = null output,
        @ISFORMERFUNDRAISER bit = null output,
        @ISVOLUNTEER bit = null output,
        @ISFORMERVOLUNTEER bit = null output,
        @ISVENDOR bit = null output,
        @ISALUMNUS bit = null output,
        @ISSTUDENT bit = null output,
        @ISFORMERSTUDENT bit = null output,
        @ISGROUPMEMBER bit = null output,
        @ISPLANNEDGIVER bit = null output,
        @ISGROUP bit = null output,
        @GROUPTYPE nvarchar(300) = null output,
        @GROUPMEMBERCOUNT integer = null output,
        @DONOTTERMINATE bit = null output,
        @PASTDUETOTAL money = null output,
        @SHOWPASTDUE bit = null output,
        @SPONSORTYPECODE tinyint = null output,
        @ISCOMMITTEE bit = null output,
        @ISCOMMITTEEMEMBER bit = null output,
        @UNIQUEOPPORTUNITIESFORGIFTDONOR bit = null output,
        @ISREGISTRANT bit = null output,
        @ISFACULTY bit = null output,
        @ISFORMERSPONSOR bit = null output,
        @HASSTEWARDSHIPPLAN bit = null output,
        @BASECURRENCYID uniqueidentifier = null output,
        @CURRENTAPPUSERID uniqueidentifier = null,
        @CONSTITUENTINACTIVITYREASON nvarchar(63) = null output,
        @DONOTMAIL bit = null output,
        @DONOTEMAIL bit = null output,
        @DONOTPHONE bit = null output,
        @PHONEISCONFIDENTIAL bit = null output,
        @ADDRESSISCONFIDENTIAL bit = null output,
        @ADDRESSID uniqueidentifier = null output,
        @PHONENUMBERID uniqueidentifier = null output,
        @EMAILADDRESSID uniqueidentifier = null output,
        @ISHOUSEHOLD bit = null output,
        @ISORG bit = null output,
        @HASRECEIVEDFUNDS bit = null output,
        @FINANCIALCOMMITMENTCOUNT int = null output,
        @SINGLESPONSORSHIP bit = null output,
        @USER_GRANTED_CONSTITPERSONALINFO_EDIT bit = null output,
        @SOCIALMEDIAACCOUNTS xml = null output
        )
    as
    set nocount on;
    -- be sure to set this, in case the select returns no rows
    set @DATALOADED = 0;

    declare @CURRENTDATE datetime;

    set @CURRENTDATE = getdate();
    set @ISSPONSORPROFILE = 1;

    declare @CURRENTDATEEARLIESTTIME date;

    set @CURRENTDATEEARLIESTTIME = @CURRENTDATE;

    declare @CONSTITUENTISSPONSOR bit = 0;
    declare @CONSTITUENTISFORMERSPONSOR bit = 0;

    exec dbo.USP_SPONSOR_GETINFORMATION @CONSTITUENTID = @ID,
        @ISSPONSOR = @CONSTITUENTISSPONSOR output,
        @ISFORMERSPONSOR = @CONSTITUENTISFORMERSPONSOR output;

    set @BASECURRENCYID = dbo.UFN_APPUSER_GETBASECURRENCY(@CURRENTAPPUSERID)

    select @DATALOADED = 1,
        @CONSTITUENTID = C.ID,
        @NAME = NF.name,
        @ADDRESS = dbo.UFN_BUILDFULLADDRESS(A.ID, A.ADDRESSBLOCK, A.CITY, A.STATEID, A.POSTCODE, A.COUNTRYID),
        @DONOTMAIL = A.DONOTMAIL,
        @ADDRESSISCONFIDENTIAL = A.ISCONFIDENTIAL,
        @ADDRESSID = A.ID,
        @PHONENUMBER = PH.NUMBER,
     @PHONETYPE = dbo.UFN_PHONETYPECODE_GETDESCRIPTION(PH.PHONETYPECODEID),
        @DONOTPHONE = PH.DONOTCALL,
        @PHONEISCONFIDENTIAL = PH.ISCONFIDENTIAL,
        @PHONENUMBERID = PH.ID,
        @EMAILADDRESS = E.EMAILADDRESS,
        @DONOTEMAIL = E.DONOTEMAIL,
        @EMAILADDRESSID = E.ID,
        @WEBADDRESS = C.WEBADDRESS,
        @PICTURE = C.PICTURETHUMBNAIL,
        @ISINACTIVE = C.ISINACTIVE,
        @HASSTEWARDSHIPPLAN = dbo.UFN_CONSTITUENT_HASSTEWARDSHIPPLAN(@ID),
        @LOOKUPID = C.LOOKUPID
    from dbo.CONSTITUENT C
    left outer join dbo.ADDRESS A
        on A.CONSTITUENTID = C.ID
            and A.ISPRIMARY = 1
    left outer join dbo.PHONE PH
        on PH.CONSTITUENTID = C.ID
            and PH.ISPRIMARY = 1
    left outer join dbo.EMAILADDRESS E
        on E.CONSTITUENTID = C.ID
            and E.ISPRIMARY = 1
    outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(C.ID) NF
    where C.ID = @ID
        and (
            @CONSTITUENTISSPONSOR = 1
            or @CONSTITUENTISFORMERSPONSOR = 1
            );

    --SOCIAL MEDIA ACCOUNTS
    select @SOCIALMEDIAACCOUNTS = dbo.UFN_CONSTITUENT_GETSOCIALMEDIAACCOUNTS_TOITEMLISTXML(@CONSTITUENTID);

    if @ISINACTIVE = 1
        select @CONSTITUENTINACTIVITYREASON = dbo.UFN_CONSTITUENTINACTIVITYREASONCODE_TRANSLATE(CONSTITUENTINACTIVEDETAIL.CONSTITUENTINACTIVITYREASONCODEID)
        from dbo.CONSTITUENTINACTIVEDETAIL
        where ID = @ID

    --SPONSOR SINCE
    select @SPONSORSINCE = min(DATEFROM)
    from dbo.SPONSORDATERANGE
    where CONSTITUENTID = @ID

    --LAST SPONSORSHIP, SPONSORTYPECODE
    select top 1 @LASTSPONSORSHIP = case 
            when nullif(max(DATETO), CURRENT_TIMESTAMP) >= CURRENT_TIMESTAMP
                then 'Current'
            else max(DATETO)
            end,
        @SPONSORTYPECODE = case 
            when min(SPONSORTYPECODE) = max(SPONSORTYPECODE)
                then min(SPONSORTYPECODE)
            else 0
            end
    from dbo.SPONSORDATERANGE
    where CONSTITUENTID = @ID
    group by case 
            when DATEFROM <= @CURRENTDATEEARLIESTTIME
                then 0
            else 1
            end,
        case 
            when (
                    DATETO is null
                    or DATETO > @CURRENTDATEEARLIESTTIME
                    )
                then 0
            else 1
            end
    order by case 
            when DATEFROM <= @CURRENTDATEEARLIESTTIME
                then 0
            else 1
            end,
        case 
            when (
                    DATETO is null
                    or DATETO > @CURRENTDATEEARLIESTTIME
                    )
                then 0
            else 1
            end

    --SPONSORSHIP COUNT
    set @SPONSORSHIPCOUNT = dbo.UFN_SPONSORSHIP_GETACTIVESPONSORSHIPSFORSPONSOR(@ID)
    --Financial Commitment Count
    set @FINANCIALCOMMITMENTCOUNT = dbo.UFN_SPONSORSHIP_GETACTIVEFINANCIALCOMMITMENTFORSPONSOR(@ID)

    --Status
    if @SPONSORSHIPCOUNT > 0
        set @STATUS = 'Active'
    else
        set @STATUS = 'Inactive'

    --TOTAL AMOUNT OF ALL SPONSORSHIP payments
    select @SPONSORSHIPTOTALAMOUNT = isnull(sum(case REVENUESPLIT.TRANSACTIONCURRENCYID
                    when @BASECURRENCYID
                        then REVENUESPLIT.TRANSACTIONAMOUNT
                    else dbo.UFN_CURRENCY_CONVERT(REVENUESPLIT.TRANSACTIONAMOUNT, dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTINCLUDEEXPIRED(REVENUESPLIT.TRANSACTIONCURRENCYID, @BASECURRENCYID, REVENUE.date, 1, null))
                    end), 0)
    from dbo.REVENUESPLIT
    inner join dbo.REVENUE
        on REVENUESPLIT.REVENUEID = REVENUE.ID
    where REVENUESPLIT.TYPECODE = 9
        and REVENUE.TRANSACTIONTYPECODE = 0
        and REVENUE.CONSTITUENTID = @ID

    --TOTAL AMOUNT DUE
    create table #SPONSORSHIPREVENUE (
        ID uniqueidentifier,
        [DATE] datetime,
        TRANSACTIONCURRENCYID uniqueidentifier
        )

    insert into #SPONSORSHIPREVENUE (
        ID,
        [DATE],
        TRANSACTIONCURRENCYID
        )
    select REVENUE.ID,
        REVENUE.date,
        REVENUESPLIT.TRANSACTIONCURRENCYID
    from dbo.REVENUE
    inner join dbo.REVENUESPLIT
        on REVENUESPLIT.REVENUEID = REVENUE.ID
    inner join dbo.SPONSORSHIP
        on SPONSORSHIP.REVENUESPLITID = REVENUESPLIT.id
    where REVENUE.CONSTITUENTID = @ID
        and SPONSORSHIP.STATUSCODE = 1;

    select @PASTDUETOTAL = isnull(sum(case r.TRANSACTIONCURRENCYID
                    when @BASECURRENCYID
                        then PASTDUEAMOUNT.AMOUNT
                    else dbo.UFN_CURRENCY_CONVERT(PASTDUEAMOUNT.AMOUNT, dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTINCLUDEEXPIRED(R.TRANSACTIONCURRENCYID, @BASECURRENCYID, R.date, 1, null))
                    end), 0)
    from #SPONSORSHIPREVENUE r
    inner join dbo.UFN_RECURRINGGIFT_GETPASTDUEAMOUNT_BULK_2(getdate(), 0) PASTDUEAMOUNT
        on r.ID = PASTDUEAMOUNT.ID;

    --CONSTITUENCIES
    select @ISPROSPECT = dbo.UFN_CONSTITUENT_ISPROSPECT(@ID),
        @ISFORMERPROSPECT = dbo.UFN_CONSTITUENT_ISFORMERPROSPECT(@ID),
        @ISFUNDRAISER = dbo.UFN_CONSTITUENT_ISFUNDRAISER(@ID),
        @ISFORMERFUNDRAISER = dbo.UFN_CONSTITUENT_ISFORMERFUNDRAISER(@ID),
        @ISVOLUNTEER = dbo.UFN_CONSTITUENT_ISVOLUNTEER(@ID),
        @ISFORMERVOLUNTEER = dbo.UFN_CONSTITUENT_ISFORMERVOLUNTEER(@ID),
        @ISVENDOR = dbo.UFN_CONSTITUENT_ISVENDOR(@ID),
        @ISALUMNUS = dbo.UFN_CONSTITUENT_ISALUMNUS(@ID),
        @ISSTUDENT = dbo.UFN_CONSTITUENT_ISSTUDENT(@ID),
        @ISFORMERSTUDENT = dbo.UFN_CONSTITUENT_ISFORMERSTUDENT(@ID),
        @ISGROUPMEMBER = dbo.UFN_CONSTITUENT_HASGROUPMEMBERRECORD(@ID),
        @ISPLANNEDGIVER = dbo.UFN_CONSTITUENT_ISPLANNEDGIVER(@ID),
        @ISGROUP = C.ISGROUP,
        @ISORG = C.ISORGANIZATION,
        @ISCOMMITTEE = dbo.UFN_CONSTITUENT_ISCOMMITTEE(@ID),
        @ISCOMMITTEEMEMBER = dbo.UFN_CONSTITUENT_ISCOMMITTEEMEMBER(@ID),
        @ISREGISTRANT = dbo.UFN_CONSTITUENT_ISREGISTRANT(@ID),
        @ISFACULTY = dbo.UFN_CONSTITUENT_ISFACULTY(@ID),
        @ISFORMERSPONSOR = dbo.UFN_CONSTITUENT_ISFORMERSPONSOR(@ID)
    from dbo.CONSTITUENT as C
    left join dbo.DECEASEDCONSTITUENT
        on DECEASEDCONSTITUENT.ID = C.ID
    left join dbo.DISSOLVEDGROUP
        on DISSOLVEDGROUP.ID = C.ID
    where C.ID = @ID;

    --MEMBER COUNT
    select @GROUPMEMBERCOUNT = count(GM.ID)
    from dbo.GROUPMEMBER GM
    left join dbo.GROUPMEMBERDATERANGE as GMDR
        on GM.ID = GMDR.GROUPMEMBERID
    where GM.GROUPID = @ID
        and (
            (
                GMDR.DATEFROM is null
                and (
                    GMDR.DATETO is null
                    or GMDR.DATETO > @CURRENTDATE
                    )
                )
            or (
                GMDR.DATETO is null
                and (
                    GMDR.DATEFROM is null
                    or GMDR.DATEFROM <= @CURRENTDATE
                    )
                )
            or (
                GMDR.DATEFROM <= @CURRENTDATE
                and GMDR.DATETO > @CURRENTDATE
                )
            )

    --CONSTIT GROUP FIELDS
    -- group fields
    select @GROUPTYPE = coalesce((
                select GT.name
                from dbo.GROUPTYPE GT
                where GT.ID = G.GROUPTYPEID
                ), 'Household'),
        @ISHOUSEHOLD = case 
            when G.GROUPTYPECODE = 0
                then 1
            else 0
            end
    from dbo.GROUPDATA G
    where G.ID = @ID;

    -- sponsor termination code
    select @DONOTTERMINATE = DONOTTERMINATE,
        @UNIQUEOPPORTUNITIESFORGIFTDONOR = UNIQUEOPPORTUNITIESFORGIFTDONOR
    from dbo.SPONSOR S
    where S.ID = @ID;

    -- Show past due?
    --Always showing past due now that the payment handling rules replace the RECURRINGGIFTSETTING
    set @SHOWPASTDUE = 1
    set @HASRECEIVEDFUNDS = dbo.UFN_CONSTITUENT_HASRECEIVEDFUNDS(@ID)

    declare @RECORDSCOUNT int;

    select @RECORDSCOUNT = count(ID)
    from dbo.SPONSORSHIPCOMMITMENT
 where CONSTITUENTID = @ID;

    set @SINGLESPONSORSHIP = 0;

    if @RECORDSCOUNT = 1
        set @SINGLESPONSORSHIP = 1;

    if dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1
    begin
        set @USER_GRANTED_CONSTITPERSONALINFO_EDIT = 1;
    end
    else
    begin
        set @USER_GRANTED_CONSTITPERSONALINFO_EDIT = case 
                when @ISORG = 1
                    then dbo.UFN_SECURITY_APPUSER_GRANTED_FORM_IN_SYSTEMROLE(@CURRENTAPPUSERID, 'a9954902-ea62-48ae-8e6f-4e2ed3c3f4f9')
                when @ISHOUSEHOLD = 1
                    then dbo.UFN_SECURITY_APPUSER_GRANTED_FORM_IN_SYSTEMROLE(@CURRENTAPPUSERID, '2f419cfd-9e70-406c-8277-ba2c4b7bdfba')
                when @ISGROUP = 1
                    then dbo.UFN_SECURITY_APPUSER_GRANTED_FORM_IN_SYSTEMROLE(@CURRENTAPPUSERID, '292ee330-a63c-4cc5-98c2-a1168a1b7150')
                else dbo.UFN_SECURITY_APPUSER_GRANTED_FORM_IN_SYSTEMROLE(@CURRENTAPPUSERID, '788AB947-26ED-40C4-865E-8FE29577E593')
                end;
    end

    return 0;