USP_DATAFORMTEMPLATE_LOAD_REVENUEBATCHCONSTITUENT

The load procedure used by the view dataform template "Revenue Batch Constituent 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.
@ISORGANIZATION bit INOUT Is organization
@ISEXISTINGCONSTITUENT bit INOUT Is existing constituent
@LASTNAME nvarchar(100) INOUT Last name
@ORGANIZATIONNAME nvarchar(100) INOUT Org name
@FIRSTNAME nvarchar(50) INOUT First name
@MIDDLENAME nvarchar(50) INOUT Middle name
@MAIDENNAME nvarchar(100) INOUT Maiden name
@NICKNAME nvarchar(50) INOUT Nickname
@TITLECODEID nvarchar(50) INOUT Title
@SUFFIXCODEID nvarchar(50) INOUT Suffix
@GENDERCODE nvarchar(12) INOUT Gender
@BIRTHDATE UDT_FUZZYDATE INOUT Birth date
@ADDRESS_ADDRESSTYPECODEID nvarchar(50) INOUT Address type
@ADDRESS_DONOTMAIL bit INOUT Do not send mail to this address
@ADDRESS_COUNTRYID uniqueidentifier INOUT Country
@ADDRESS_COUNTRY nvarchar(50) INOUT Country
@ADDRESS_STATEID nvarchar(50) INOUT State
@ADDRESS_ADDRESSBLOCK nvarchar(150) INOUT Address
@ADDRESS_CITY nvarchar(50) INOUT City
@ADDRESS_POSTCODE nvarchar(12) INOUT ZIP
@PHONE_PHONETYPECODEID nvarchar(50) INOUT Phone type
@PHONE_NUMBER nvarchar(100) INOUT Phone number
@EMAILADDRESS_EMAILADDRESSTYPECODEID nvarchar(50) INOUT Email type
@EMAILADDRESS_EMAILADDRESS UDT_EMAILADDRESS INOUT Email address
@ORGANIZATION_ADDRESSTYPECODEID nvarchar(50) INOUT Address type
@ORGANIZATION_DONOTMAIL bit INOUT Do not send mail to this address
@ORGANIZATION_COUNTRYID uniqueidentifier INOUT Country
@ORGANIZATION_COUNTRY nvarchar(50) INOUT Country
@ORGANIZATION_STATEID nvarchar(50) INOUT State
@ORGANIZATION_ADDRESSBLOCK nvarchar(150) INOUT Address
@ORGANIZATION_CITY nvarchar(50) INOUT City
@ORGANIZATION_POSTCODE nvarchar(12) INOUT ZIP
@ORGANIZATION_PHONETYPECODEID nvarchar(50) INOUT Phone type
@ORGANIZATION_NUMBER nvarchar(100) INOUT Phone number
@ORGANIZATION_EMAILADDRESSTYPECODEID nvarchar(50) INOUT Email type
@ORGANIZATION_EMAILADDRESS UDT_EMAILADDRESS INOUT Email address
@MARITALSTATUS nvarchar(50) INOUT Marital status
@WEBADDRESS nvarchar(100) INOUT Website
@INDUSTRYCODEID nvarchar(100) INOUT Industry
@NUMEMPLOYEES int INOUT Number of employees
@NUMSUBSIDIARIES int INOUT Number of subsidiaries
@PARENTCORPID nvarchar(100) INOUT Parent org
@SPOUSEID uniqueidentifier INOUT Name
@EXISTINGSPOUSE bit INOUT Existing constituent
@SPOUSE_LASTNAME nvarchar(100) INOUT Last name
@SPOUSE_FIRSTNAME nvarchar(50) INOUT First name
@SPOUSE_MIDDLENAME nvarchar(50) INOUT Middle name
@SPOUSE_MAIDENNAME nvarchar(100) INOUT Maiden name
@SPOUSE_NICKNAME nvarchar(50) INOUT Nickname
@SPOUSE_TITLECODEID nvarchar(50) INOUT Title
@SPOUSE_SUFFIXCODEID nvarchar(50) INOUT Suffix
@SPOUSE_GENDERCODE nvarchar(50) INOUT Gender
@SPOUSE_BIRTHDATE UDT_FUZZYDATE INOUT Birth date
@SPOUSE_RECIPROCALTYPECODEID nvarchar(50) INOUT Reciprocal relationship type
@SPOUSE_RELATIONSHIPTYPECODEID nvarchar(50) INOUT Relationship type
@COPYPRIMARYINFORMATION bit INOUT Copy primary information
@SPOUSE_STARTDATE datetime INOUT Start date
@PRIMARYRELATIONSHIPEXISTS bit INOUT Apply recognition credit to individual for constituent's payments
@PRIMARYMATCHFACTOR decimal(5, 2) INOUT Recognition credit match percentage
@RECIPROCALRELATIONSHIPEXISTS bit INOUT Apply recognition credit to constituent for individual's payments
@RECIPROCALMATCHFACTOR decimal(5, 2) INOUT Reciprocal recognition credit match percentage
@BUSINESSID uniqueidentifier INOUT Org name
@EXISTINGBUSINESS bit INOUT Existing constituent
@BUSINESS_NAME nvarchar(100) INOUT Org name
@BUSINESS_ADDRESSTYPECODEID nvarchar(50) INOUT Address type
@BUSINESS_COUNTRYID uniqueidentifier INOUT Country
@BUSINESS_COUNTRY nvarchar(50) INOUT Country
@BUSINESS_STATEID nvarchar(50) INOUT State
@BUSINESS_ADDRESSBLOCK nvarchar(150) INOUT Address
@BUSINESS_CITY nvarchar(50) INOUT City
@BUSINESS_POSTCODE nvarchar(12) INOUT ZIP
@BUSINESS_DONOTMAIL bit INOUT Do not send mail to this address
@BUSINESS_PHONETYPECODEID nvarchar(50) INOUT Phone type
@BUSINESS_NUMBER nvarchar(100) INOUT Phone number
@BUSINESS_RECIPROCALTYPECODEID nvarchar(50) INOUT Reciprocal relationship type
@BUSINESS_RELATIONSHIPTYPECODEID nvarchar(50) INOUT Relationship type
@BUSINESS_STARTDATE datetime INOUT Start date
@ISCONTACT bit INOUT Is contact
@ISPRIMARYCONTACT bit INOUT Is primary contact
@CONTACTTYPECODEID nvarchar(50) INOUT Contact type
@POSITION nvarchar(50) INOUT Position
@ISMATCHINGGIFTRELATIONSHIP bit INOUT Matching gift relationship
@INDIVIDUALSHOUSEHOLDNAME nvarchar(100) INOUT Household name
@ISGROUP bit INOUT Is group
@GROUP_NAME nvarchar(100) INOUT Group name
@GROUP_TYPE nvarchar(150) INOUT Group type
@GROUP_NUMBERMEMBERS int INOUT No. of members
@GROUP_PRIMARYCONTACT nvarchar(154) INOUT Primary contact
@GROUP_ADDRESSTYPECODEID nvarchar(50) INOUT Address type
@GROUP_COUNTRYID uniqueidentifier INOUT Country
@GROUP_COUNTRY nvarchar(50) INOUT Country
@GROUP_STATEID nvarchar(50) INOUT State
@GROUP_ADDRESSBLOCK nvarchar(150) INOUT Address
@GROUP_CITY nvarchar(50) INOUT City
@GROUP_POSTCODE nvarchar(12) INOUT ZIP
@GROUP_PHONETYPECODEID nvarchar(50) INOUT Phone type
@GROUP_NUMBER nvarchar(100) INOUT Phone number
@GROUP_EMAILADDRESSTYPECODEID nvarchar(50) INOUT Email type
@GROUP_EMAILADDRESS UDT_EMAILADDRESS INOUT Email address
@ISHOUSEHOLD bit INOUT Is household
@HOUSEHOLD_NAME nvarchar(100) INOUT Household name
@HOUSEHOLD_NUMBERMEMBERS int INOUT No. of members
@HOUSEHOLD_PRIMARYCONTACT nvarchar(154) INOUT Primary contact
@HOUSEHOLD_MEMBERS xml INOUT Members
@HOUSEHOLD_ADDRESSTYPECODEID nvarchar(50) INOUT Address type
@HOUSEHOLD_COUNTRYID uniqueidentifier INOUT Country
@HOUSEHOLD_COUNTRY nvarchar(50) INOUT Country
@HOUSEHOLD_STATEID nvarchar(50) INOUT State
@HOUSEHOLD_ADDRESSBLOCK nvarchar(150) INOUT Address
@HOUSEHOLD_CITY nvarchar(50) INOUT City
@HOUSEHOLD_POSTCODE nvarchar(12) INOUT ZIP
@HOUSEHOLD_PHONETYPECODEID nvarchar(50) INOUT Phone type
@HOUSEHOLD_NUMBER nvarchar(100) INOUT Phone number
@HOUSEHOLD_EMAILADDRESSTYPECODEID nvarchar(50) INOUT Email type
@HOUSEHOLD_EMAILADDRESS UDT_EMAILADDRESS INOUT Email address

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_LOAD_REVENUEBATCHCONSTITUENT(
                        @ID uniqueidentifier,
                        @DATALOADED bit = 0 output,
                        @ISORGANIZATION bit = null output,
                        @ISEXISTINGCONSTITUENT bit = null output,
                        @LASTNAME nvarchar(100) = null output,
                        @ORGANIZATIONNAME nvarchar(100) = null output,
                        @FIRSTNAME nvarchar(50) = null output,
                        @MIDDLENAME nvarchar(50) = null output,
                        @MAIDENNAME nvarchar(100) = null output,
                        @NICKNAME nvarchar(50) = null output,
                        @TITLECODEID nvarchar(50) = null output,
                        @SUFFIXCODEID nvarchar(50) = null output,
                        @GENDERCODE nvarchar(12) = null output,
                        @BIRTHDATE dbo.UDT_FUZZYDATE = null output,
                        @ADDRESS_ADDRESSTYPECODEID nvarchar(50) = null output,
                        @ADDRESS_DONOTMAIL bit = null output,
                        @ADDRESS_COUNTRYID uniqueidentifier = null output,
                        @ADDRESS_COUNTRY nvarchar(50) = null output,
                        @ADDRESS_STATEID nvarchar(50) = null output,
                        @ADDRESS_ADDRESSBLOCK nvarchar(150) = null output,
                        @ADDRESS_CITY nvarchar(50) = null output,
                        @ADDRESS_POSTCODE nvarchar(12) = null output,
                        @PHONE_PHONETYPECODEID nvarchar(50) = null output,
                        @PHONE_NUMBER nvarchar(100) = null output,
                        @EMAILADDRESS_EMAILADDRESSTYPECODEID nvarchar(50) = null output,
                        @EMAILADDRESS_EMAILADDRESS dbo.UDT_EMAILADDRESS = null output,
                        @ORGANIZATION_ADDRESSTYPECODEID nvarchar(50) = null output,
                        @ORGANIZATION_DONOTMAIL bit = null output,
                        @ORGANIZATION_COUNTRYID uniqueidentifier = null output,
                        @ORGANIZATION_COUNTRY nvarchar(50) = null output,
                        @ORGANIZATION_STATEID nvarchar(50) = null output,
                        @ORGANIZATION_ADDRESSBLOCK nvarchar(150) = null output,
                        @ORGANIZATION_CITY nvarchar(50) = null output,
                        @ORGANIZATION_POSTCODE nvarchar(12) = null output,
                        @ORGANIZATION_PHONETYPECODEID nvarchar(50) = null output,
                        @ORGANIZATION_NUMBER nvarchar(100) = null output,
                        @ORGANIZATION_EMAILADDRESSTYPECODEID nvarchar(50) = null output,
                        @ORGANIZATION_EMAILADDRESS dbo.UDT_EMAILADDRESS = null output,
                        @MARITALSTATUS nvarchar(50) = null output,
                        @WEBADDRESS nvarchar(100) = null output,
                        @INDUSTRYCODEID nvarchar(100) = null output,
                        @NUMEMPLOYEES int = null output,
                        @NUMSUBSIDIARIES int = null output,
                        @PARENTCORPID nvarchar(100) = null output,

                        --Individual's Household Variables

                        @SPOUSEID uniqueidentifier = null output,
                        @EXISTINGSPOUSE bit = null output,
                        @SPOUSE_LASTNAME nvarchar(100) = null output,
                        @SPOUSE_FIRSTNAME nvarchar(50) = null output,
                        @SPOUSE_MIDDLENAME nvarchar(50) = null output,
                        @SPOUSE_MAIDENNAME nvarchar(100) = null output,
                        @SPOUSE_NICKNAME nvarchar(50) = null output,
                        @SPOUSE_TITLECODEID nvarchar(50) = null output,
                        @SPOUSE_SUFFIXCODEID nvarchar(50) = null output,
                        @SPOUSE_GENDERCODE nvarchar(50) = null output,
                        @SPOUSE_BIRTHDATE dbo.UDT_FUZZYDATE = null output,
                        @SPOUSE_RECIPROCALTYPECODEID nvarchar(50) = null output,
                        @SPOUSE_RELATIONSHIPTYPECODEID nvarchar(50) = null output,
                        @COPYPRIMARYINFORMATION bit = null output,
                        @SPOUSE_STARTDATE datetime = null output,
                        @PRIMARYRELATIONSHIPEXISTS bit = null output,
                        @PRIMARYMATCHFACTOR decimal(5,2) = null output,
                        @RECIPROCALRELATIONSHIPEXISTS bit = null output,
                        @RECIPROCALMATCHFACTOR decimal(5,2) = null output,

                        --Organization variables

                        @BUSINESSID uniqueidentifier = null output,
                        @EXISTINGBUSINESS bit = null output,
                        @BUSINESS_NAME nvarchar(100) = null output,
                        @BUSINESS_ADDRESSTYPECODEID nvarchar(50) = null output,
                        @BUSINESS_COUNTRYID uniqueidentifier = null output,
                        @BUSINESS_COUNTRY nvarchar(50) = null output,
                        @BUSINESS_STATEID nvarchar(50) = null output,
                        @BUSINESS_ADDRESSBLOCK nvarchar(150) = null output,
                        @BUSINESS_CITY nvarchar(50) = null output,
                        @BUSINESS_POSTCODE nvarchar(12) = null output,
                        @BUSINESS_DONOTMAIL bit = null output,
                        @BUSINESS_PHONETYPECODEID nvarchar(50) = null output,
                        @BUSINESS_NUMBER nvarchar(100) = null output,
                        @BUSINESS_RECIPROCALTYPECODEID nvarchar(50) = null output,
                        @BUSINESS_RELATIONSHIPTYPECODEID nvarchar(50) = null output,
                        @BUSINESS_STARTDATE datetime = null output,                        
                        @ISCONTACT bit = null output,
                        @ISPRIMARYCONTACT bit = null output,
                        @CONTACTTYPECODEID nvarchar(50) = null output,
                        @POSITION nvarchar(50) = null output,
                        @ISMATCHINGGIFTRELATIONSHIP bit = null output,

                        -- Individual's household variables continued

                        @INDIVIDUALSHOUSEHOLDNAME nvarchar(100) = null output,

                        --Group variables

                        @ISGROUP bit = null output,
                        @GROUP_NAME nvarchar(100) = null output,
                        @GROUP_TYPE nvarchar(150) = null output,
                        @GROUP_NUMBERMEMBERS int = null output,
                        @GROUP_PRIMARYCONTACT nvarchar(154) = null output,
                        @GROUP_ADDRESSTYPECODEID nvarchar(50) = null output,
                        @GROUP_COUNTRYID uniqueidentifier = null output,
                        @GROUP_COUNTRY nvarchar(50) = null output,
                        @GROUP_STATEID nvarchar(50) = null output,
                        @GROUP_ADDRESSBLOCK nvarchar(150) = null output,
                        @GROUP_CITY nvarchar(50) = null output,
                        @GROUP_POSTCODE nvarchar(12) = null output,
                        @GROUP_PHONETYPECODEID nvarchar(50) = null output,
                        @GROUP_NUMBER nvarchar(100) = null output,
                        @GROUP_EMAILADDRESSTYPECODEID nvarchar(50) = null output,
                        @GROUP_EMAILADDRESS dbo.UDT_EMAILADDRESS = null output,

                        --Household variables

                        @ISHOUSEHOLD bit = null output,
                        @HOUSEHOLD_NAME nvarchar(100) = null output,
                        @HOUSEHOLD_NUMBERMEMBERS int = null output,
                        @HOUSEHOLD_PRIMARYCONTACT nvarchar(154) = null output,
                        @HOUSEHOLD_MEMBERS xml = null output,
                        @HOUSEHOLD_ADDRESSTYPECODEID nvarchar(50) = null output,
                        @HOUSEHOLD_COUNTRYID uniqueidentifier = null output,
                        @HOUSEHOLD_COUNTRY nvarchar(50) = null output,
                        @HOUSEHOLD_STATEID nvarchar(50) = null output,
                        @HOUSEHOLD_ADDRESSBLOCK nvarchar(150) = null output,
                        @HOUSEHOLD_CITY nvarchar(50) = null output,
                        @HOUSEHOLD_POSTCODE nvarchar(12) = null output,
                        @HOUSEHOLD_PHONETYPECODEID nvarchar(50) = null output,
                        @HOUSEHOLD_NUMBER nvarchar(100) = null output,
                        @HOUSEHOLD_EMAILADDRESSTYPECODEID nvarchar(50) = null output,
                        @HOUSEHOLD_EMAILADDRESS dbo.UDT_EMAILADDRESS = null output

) as begin
    set nocount on;

    begin try

    set @ISEXISTINGCONSTITUENT = 0;
    select @ISEXISTINGCONSTITUENT=1 from dbo.CONSTITUENT where CONSTITUENT.ID = @ID;

    if @ISEXISTINGCONSTITUENT = 1        
            select @ISORGANIZATION=CONSTITUENT.ISORGANIZATION,                
                @LASTNAME = CONSTITUENT.KEYNAME,
                @FIRSTNAME = CONSTITUENT.FIRSTNAME,
                @MIDDLENAME = CONSTITUENT.MIDDLENAME,
                @MAIDENNAME = CONSTITUENT.MAIDENNAME,
                @NICKNAME=CONSTITUENT.NICKNAME,
                @TITLECODEID=(select TITLECODE.DESCRIPTION from dbo.TITLECODE where TITLECODE.ID = CONSTITUENT.TITLECODEID),
                @SUFFIXCODEID=(select DESCRIPTION from dbo.SUFFIXCODE where ID = CONSTITUENT.SUFFIXCODEID),
                @GENDERCODE=CONSTITUENT.GENDER,
                @BIRTHDATE=CONSTITUENT.BIRTHDATE,
                @ADDRESS_ADDRESSTYPECODEID=(select DESCRIPTION from dbo.ADDRESSTYPECODE where ID = ADDRESS.ADDRESSTYPECODEID),                 
                @ADDRESS_DONOTMAIL=ADDRESS.DONOTMAIL,                
                @ADDRESS_COUNTRYID=ADDRESS.COUNTRYID,                 
                @ADDRESS_COUNTRY=(select DESCRIPTION from dbo.COUNTRY where ID = ADDRESS.COUNTRYID),                 
                @ADDRESS_STATEID=(select ABBREVIATION from dbo.STATE where ID = ADDRESS.STATEID),                 
                @ADDRESS_ADDRESSBLOCK=dbo.UFN_BUILDFULLADDRESS(ADDRESS.ID, ADDRESS.ADDRESSBLOCK, ADDRESS.CITY, ADDRESS.STATEID, ADDRESS.POSTCODE, ADDRESS.COUNTRYID),                
                @ADDRESS_CITY=ADDRESS.CITY,                
                @ADDRESS_POSTCODE=ADDRESS.POSTCODE,                
                @PHONE_PHONETYPECODEID=(select DESCRIPTION from dbo.PHONETYPECODE where ID = PHONE.PHONETYPECODEID),                
                @PHONE_NUMBER=PHONE.NUMBER,                
                @EMAILADDRESS_EMAILADDRESSTYPECODEID=(select DESCRIPTION from dbo.EMAILADDRESSTYPECODE where ID = EMAILADDRESS.EMAILADDRESSTYPECODEID),                
                @EMAILADDRESS_EMAILADDRESS=EMAILADDRESS.EMAILADDRESS,                
                @MARITALSTATUS=(select DESCRIPTION from dbo.MARITALSTATUSCODE where ID = CONSTITUENT.MARITALSTATUSCODEID),
                @WEBADDRESS=CONSTITUENT.WEBADDRESS,
                @INDUSTRYCODEID=(select DESCRIPTION from dbo.INDUSTRYCODE where ID = INDUSTRYCODEID),
                @NUMEMPLOYEES=ORGANIZATIONDATA.NUMEMPLOYEES,
                @NUMSUBSIDIARIES=ORGANIZATIONDATA.NUMSUBSIDIARIES,
                @PARENTCORPID=case when ORGANIZATIONDATA.PARENTCORPID is null then '' else (select NAME from dbo.CONSTITUENT where ID = ORGANIZATIONDATA.PARENTCORPID) end,
                @ISGROUP = CONSTITUENT.ISGROUP,
                @ISHOUSEHOLD = case when GROUPDATA.GROUPTYPECODE = 0 and CONSTITUENT.ISGROUP = 1 then 1 else 0 end
                from dbo.CONSTITUENT 
                left join dbo.ADDRESS on CONSTITUENT.ID = ADDRESS.CONSTITUENTID and ADDRESS.ISPRIMARY = 1
                left join dbo.PHONE on CONSTITUENT.ID = PHONE.CONSTITUENTID and PHONE.ISPRIMARY = 1
                left join dbo.EMAILADDRESS on CONSTITUENT.ID = EMAILADDRESS.CONSTITUENTID and EMAILADDRESS.ISPRIMARY = 1
                left join dbo.ORGANIZATIONDATA on CONSTITUENT.ID = ORGANIZATIONDATA.ID
                left join dbo.GROUPDATA on CONSTITUENT.ID = GROUPDATA.ID
                where CONSTITUENT.ID = @ID

    else
        begin
            select    @ISORGANIZATION=ISORGANIZATION,
                    @ISGROUP=BATCHREVENUECONSTITUENT.ISGROUP,
                    @ISHOUSEHOLD = case when BATCHREVENUECONSTITUENT.GROUPTYPECODE = 0 and BATCHREVENUECONSTITUENT.ISGROUP = 1 then 1 else 0 end,
                    @LASTNAME = BATCHREVENUECONSTITUENT.KEYNAME,
                    @FIRSTNAME = BATCHREVENUECONSTITUENT.FIRSTNAME,
                    @MIDDLENAME = BATCHREVENUECONSTITUENT.MIDDLENAME,
                    @MAIDENNAME = BATCHREVENUECONSTITUENT.MAIDENNAME,
                    @NICKNAME=BATCHREVENUECONSTITUENT.NICKNAME,
                    @TITLECODEID=(select DESCRIPTION from dbo.TITLECODE where ID = BATCHREVENUECONSTITUENT.TITLECODEID),
                    @SUFFIXCODEID=(select DESCRIPTION from dbo.SUFFIXCODE where ID = BATCHREVENUECONSTITUENT.SUFFIXCODEID),
                    @GENDERCODE=BATCHREVENUECONSTITUENT.GENDER,
                    @BIRTHDATE=BATCHREVENUECONSTITUENT.BIRTHDATE,
                    @ADDRESS_ADDRESSTYPECODEID=(select DESCRIPTION from dbo.ADDRESSTYPECODE where ID = BATCHREVENUECONSTITUENT.ADDRESSTYPECODEID),
                    @ADDRESS_DONOTMAIL=BATCHREVENUECONSTITUENT.DONOTMAIL,
                    @ADDRESS_COUNTRYID=BATCHREVENUECONSTITUENT.COUNTRYID,
                    @ADDRESS_COUNTRY=(select DESCRIPTION from dbo.COUNTRY where ID = BATCHREVENUECONSTITUENT.COUNTRYID),
                    @ADDRESS_STATEID=(select ABBREVIATION from dbo.STATE where ID = BATCHREVENUECONSTITUENT.STATEID),
                    @ADDRESS_ADDRESSBLOCK=dbo.UFN_BUILDFULLADDRESS(null, BATCHREVENUECONSTITUENT.ADDRESSBLOCK, BATCHREVENUECONSTITUENT.CITY, BATCHREVENUECONSTITUENT.STATEID, BATCHREVENUECONSTITUENT.POSTCODE, BATCHREVENUECONSTITUENT.COUNTRYID),
                    @ADDRESS_CITY=BATCHREVENUECONSTITUENT.CITY,
                    @ADDRESS_POSTCODE=BATCHREVENUECONSTITUENT.POSTCODE,
                    @PHONE_PHONETYPECODEID=(select DESCRIPTION from dbo.PHONETYPECODE where ID = BATCHREVENUECONSTITUENT.PHONETYPECODEID),
                    @PHONE_NUMBER=BATCHREVENUECONSTITUENT.NUMBER,
                    @EMAILADDRESS_EMAILADDRESSTYPECODEID=(select DESCRIPTION from dbo.EMAILADDRESSTYPECODE where ID = BATCHREVENUECONSTITUENT.EMAILADDRESSTYPECODEID),
                    @EMAILADDRESS_EMAILADDRESS=BATCHREVENUECONSTITUENT.EMAILADDRESS,
                    @MARITALSTATUS=(select DESCRIPTION from dbo.MARITALSTATUSCODE where ID = BATCHREVENUECONSTITUENT.MARITALSTATUSCODEID),
                    @WEBADDRESS=BATCHREVENUECONSTITUENT.WEBADDRESS,
                    @INDUSTRYCODEID=(select DESCRIPTION from dbo.INDUSTRYCODE where ID = BATCHREVENUECONSTITUENT.INDUSTRYCODEID),
                    @NUMEMPLOYEES=BATCHREVENUECONSTITUENT.NUMEMPLOYEES,
                    @NUMSUBSIDIARIES=BATCHREVENUECONSTITUENT.NUMSUBSIDIARIES,
                    @PARENTCORPID=(select NAME from dbo.CONSTITUENT where ID = PARENTCORPID)
                    from dbo.BATCHREVENUECONSTITUENT where BATCHREVENUECONSTITUENT.ID = @ID

                select @SPOUSEID=BATCHREVENUECONSTITUENT.EXISTINGCONSTITUENTID,
                    @SPOUSE_LASTNAME=case when C.ID is not null then C.KEYNAME else BATCHREVENUECONSTITUENT.KEYNAME end,
                    @SPOUSE_FIRSTNAME=case when C.ID is not null then C.FIRSTNAME else BATCHREVENUECONSTITUENT.FIRSTNAME end,
                    @SPOUSE_MIDDLENAME=case when C.ID is not null then C.MIDDLENAME else BATCHREVENUECONSTITUENT.MIDDLENAME end,
                    @SPOUSE_MAIDENNAME=case when C.ID is not null then C.MAIDENNAME else BATCHREVENUECONSTITUENT.MAIDENNAME end,
                    @SPOUSE_NICKNAME=case when C.ID is not null then C.NICKNAME else BATCHREVENUECONSTITUENT.NICKNAME end,
                    @SPOUSE_TITLECODEID=(select DESCRIPTION from dbo.TITLECODE where ID = case when C.ID is not null then C.TITLECODEID else BATCHREVENUECONSTITUENT.TITLECODEID end),
                    @SPOUSE_SUFFIXCODEID=(select DESCRIPTION from dbo.SUFFIXCODE where ID = case when C.ID is not null then C.SUFFIXCODEID else BATCHREVENUECONSTITUENT.SUFFIXCODEID end),
                    @SPOUSE_GENDERCODE=case when C.ID is not null then C.GENDER else BATCHREVENUECONSTITUENT.GENDER end,
                    @SPOUSE_BIRTHDATE=case when C.ID is not null then C.BIRTHDATE else BATCHREVENUECONSTITUENT.BIRTHDATE end,
                    @SPOUSE_RECIPROCALTYPECODEID=(select DESCRIPTION from dbo.RELATIONSHIPTYPECODE where ID = BATCHREVENUECONSTITUENTRELATION.RELATIONSHIPTYPECODEID),
                    @SPOUSE_RELATIONSHIPTYPECODEID=(select DESCRIPTION from dbo.RELATIONSHIPTYPECODE where ID = BATCHREVENUECONSTITUENTRELATION.RECIPROCALTYPECODEID),
                    @COPYPRIMARYINFORMATION=BATCHREVENUECONSTITUENTRELATION.COPYPRIMARYINFORMATION,
                    @SPOUSE_STARTDATE=BATCHREVENUECONSTITUENTRELATION.STARTDATE,
                    @PRIMARYRELATIONSHIPEXISTS=BATCHREVENUECONSTITUENTRELATION.PRIMARYRELATIONSHIPEXISTS,
                    @PRIMARYMATCHFACTOR=BATCHREVENUECONSTITUENTRELATION.PRIMARYMATCHFACTOR,
                    @RECIPROCALRELATIONSHIPEXISTS=BATCHREVENUECONSTITUENTRELATION.RECIPROCALRELATIONSHIPEXISTS,
                    @RECIPROCALMATCHFACTOR=BATCHREVENUECONSTITUENTRELATION.RECIPROCALMATCHFACTOR
                    from dbo.BATCHREVENUECONSTITUENTRELATION
                    left join dbo.BATCHREVENUECONSTITUENT on BATCHREVENUECONSTITUENTRELATION.RELATIONID = BATCHREVENUECONSTITUENT.ID
                    left join dbo.CONSTITUENT C on BATCHREVENUECONSTITUENT.EXISTINGCONSTITUENTID = C.ID
                    where BATCHREVENUECONSTITUENTRELATION.CONSTITUENTID = @ID and BATCHREVENUECONSTITUENT.ISORGANIZATION = 0

                if @@ROWCOUNT = 0
                    set @EXISTINGSPOUSE = 1;
                else
                    if @SPOUSEID is null
                        set @EXISTINGSPOUSE = 0;
                    else
                        set @EXISTINGSPOUSE = 1;

                if @PRIMARYRELATIONSHIPEXISTS = 0
                    set @PRIMARYMATCHFACTOR = null;

                if @RECIPROCALRELATIONSHIPEXISTS = 0
                    set @RECIPROCALMATCHFACTOR = null;



                if @ISGROUP = 0 and @ISORGANIZATION = 0
                    begin
                        select
                            @INDIVIDUALSHOUSEHOLDNAME    = case when BRC.EXISTINGCONSTITUENTID is not null then C.NAME else BRC.NAME end
                        from dbo.BATCHREVENUECONSTITUENTGROUPMEMBER BRCGM
                        inner join dbo.BATCHREVENUECONSTITUENT BRC on BRCGM.GROUPID = BRC.ID and BRC.GROUPTYPECODE = 0
                        left join dbo.CONSTITUENT C on BRC.EXISTINGCONSTITUENTID = C.ID
                        where BRCGM.MEMBERID = @ID
                    end

                select @BUSINESSID=BATCHREVENUECONSTITUENT.EXISTINGCONSTITUENTID,
                    @BUSINESS_NAME=BATCHREVENUECONSTITUENT.NAME,
                    @BUSINESS_ADDRESSTYPECODEID=(select DESCRIPTION from dbo.ADDRESSTYPECODE where ID = BATCHREVENUECONSTITUENT.ADDRESSTYPECODEID),
                    @BUSINESS_COUNTRYID=BATCHREVENUECONSTITUENT.COUNTRYID,
                    @BUSINESS_COUNTRY=(select DESCRIPTION from dbo.COUNTRY where ID = BATCHREVENUECONSTITUENT.COUNTRYID),
                    @BUSINESS_STATEID=(select STATE.ABBREVIATION from dbo.STATE where ID = BATCHREVENUECONSTITUENT.STATEID),
                    @BUSINESS_ADDRESSBLOCK=dbo.UFN_BUILDFULLADDRESS(null, BATCHREVENUECONSTITUENT.ADDRESSBLOCK, BATCHREVENUECONSTITUENT.CITY, BATCHREVENUECONSTITUENT.STATEID, BATCHREVENUECONSTITUENT.POSTCODE, BATCHREVENUECONSTITUENT.COUNTRYID),                    
                    @BUSINESS_DONOTMAIL=BATCHREVENUECONSTITUENT.DONOTMAIL,
                    @BUSINESS_PHONETYPECODEID=(select PHONETYPECODE.DESCRIPTION from dbo.PHONETYPECODE where PHONETYPECODE.ID = BATCHREVENUECONSTITUENT.PHONETYPECODEID),
                    @BUSINESS_NUMBER=BATCHREVENUECONSTITUENT.NUMBER,
                    --@BUSINESS_RECIPROCALTYPECODEID=(select DESCRIPTION from dbo.RELATIONSHIPTYPECODE where ID = BATCHREVENUECONSTITUENTRELATION.RECIPROCALTYPECODEID),

                    --@BUSINESS_RELATIONSHIPTYPECODEID=(select DESCRIPTION from dbo.RELATIONSHIPTYPECODE where ID = BATCHREVENUECONSTITUENTRELATION.RELATIONSHIPTYPECODEID),

                    @BUSINESS_RECIPROCALTYPECODEID=(select DESCRIPTION from dbo.RELATIONSHIPTYPECODE where ID = BATCHREVENUECONSTITUENTRELATION.RELATIONSHIPTYPECODEID),
                    @BUSINESS_RELATIONSHIPTYPECODEID=(select DESCRIPTION from dbo.RELATIONSHIPTYPECODE where ID = BATCHREVENUECONSTITUENTRELATION.RECIPROCALTYPECODEID),
                    @BUSINESS_STARTDATE=BATCHREVENUECONSTITUENTRELATION.STARTDATE,                    
                    @ISCONTACT=BATCHREVENUECONSTITUENTRELATION.ISCONTACT,
                    @ISPRIMARYCONTACT=BATCHREVENUECONSTITUENTRELATION.ISPRIMARYCONTACT,
                    @CONTACTTYPECODEID=(select DESCRIPTION from dbo.CONTACTTYPECODE where ID = BATCHREVENUECONSTITUENTRELATION.CONTACTTYPECODEID),
                    @POSITION=BATCHREVENUECONSTITUENTRELATION.POSITION,
                    @ISMATCHINGGIFTRELATIONSHIP=BATCHREVENUECONSTITUENTRELATION.ISMATCHINGGIFTRELATIONSHIP
                    from dbo.BATCHREVENUECONSTITUENTRELATION 
                    left join dbo.BATCHREVENUECONSTITUENT on BATCHREVENUECONSTITUENTRELATION.RELATIONID = BATCHREVENUECONSTITUENT.ID
                    where BATCHREVENUECONSTITUENTRELATION.CONSTITUENTID = @ID and BATCHREVENUECONSTITUENTRELATION.ISPRIMARYBUSINESS = 1

                if @@ROWCOUNT = 0
                    set @EXISTINGBUSINESS = 1;
                else
                    if @BUSINESSID is null 
                        set @EXISTINGBUSINESS = 0;
                    else
                        set @EXISTINGBUSINESS = 1;
        end;

        if @ISORGANIZATION = 1
            begin
                set @ORGANIZATIONNAME = @LASTNAME;
                set @ORGANIZATION_ADDRESSTYPECODEID=@ADDRESS_ADDRESSTYPECODEID;
                set @ORGANIZATION_DONOTMAIL=@ADDRESS_DONOTMAIL;
                set @ORGANIZATION_COUNTRYID=@ADDRESS_COUNTRYID;
                set @ORGANIZATION_COUNTRY=@ADDRESS_COUNTRY;
                set @ORGANIZATION_STATEID=@ADDRESS_STATEID;
                set @ORGANIZATION_ADDRESSBLOCK=@ADDRESS_ADDRESSBLOCK;
                set @ORGANIZATION_CITY=@ADDRESS_CITY;
                set @ORGANIZATION_POSTCODE=@ADDRESS_POSTCODE;
                set @ORGANIZATION_PHONETYPECODEID=@PHONE_PHONETYPECODEID;
                set @ORGANIZATION_NUMBER=@PHONE_NUMBER;
                set @ORGANIZATION_EMAILADDRESSTYPECODEID=@EMAILADDRESS_EMAILADDRESSTYPECODEID;
                set @ORGANIZATION_EMAILADDRESS=@EMAILADDRESS_EMAILADDRESS;
            end;

        if @ISGROUP = 1            
            begin
                declare @CURRENTDATEEARLIEST datetime;
                set @CURRENTDATEEARLIEST = dbo.UFN_DATE_GETEARLIESTTIME(getdate())

                declare @NUMBERMEMBERS int
                declare @PRIMARYCONTACT nvarchar(154)

                if @ISEXISTINGCONSTITUENT = 1
                    begin                    
                        select @NUMBERMEMBERS = count(GM.MEMBERID)
                        from dbo.GROUPMEMBER GM
                        left join dbo.GROUPMEMBERDATERANGE GMDR on GM.ID = GMDR.GROUPMEMBERID
                        where GROUPID = @ID
                        and ((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO > @CURRENTDATEEARLIEST))
                            or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= @CURRENTDATEEARLIEST)) 
                            or (GMDR.DATEFROM <= @CURRENTDATEEARLIEST and GMDR.DATETO > @CURRENTDATEEARLIEST))

                        select
                            @PRIMARYCONTACT = C.NAME
                        from dbo.GROUPMEMBER GM
                        inner join dbo.CONSTITUENT C on GM.MEMBERID = C.ID
                        left join dbo.GROUPMEMBERDATERANGE GMDR on GM.ID = GMDR.GROUPMEMBERID
                        where
                            GM.GROUPID = @ID and
                            GM.ISPRIMARY = 1
                            and ((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO > @CURRENTDATEEARLIEST))
                                or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= @CURRENTDATEEARLIEST)) 
                                or (GMDR.DATEFROM <= @CURRENTDATEEARLIEST and GMDR.DATETO > @CURRENTDATEEARLIEST))
                    end
                else
                    begin
                        select @NUMBERMEMBERS = count(GM.MEMBERID)
                        from dbo.BATCHREVENUECONSTITUENTGROUPMEMBER GM
                        where GROUPID = @ID

                        select
                            @PRIMARYCONTACT = case when C.NAME is null then BRC.NAME else C.NAME end
                        from dbo.BATCHREVENUECONSTITUENTGROUPMEMBER BRCGM
                        inner join dbo.BATCHREVENUECONSTITUENT BRC on BRCGM.MEMBERID = BRC.ID
                        left join dbo.CONSTITUENT C on BRC.EXISTINGCONSTITUENTID = C.ID
                        where
                            BRCGM.GROUPID = @ID and
                            BRCGM.ISPRIMARY = 1
                    end

                if @ISHOUSEHOLD = 1
                    begin
                        if @ISEXISTINGCONSTITUENT = 1
                            begin
                                set @HOUSEHOLD_MEMBERS =    (
                                                                select top 4
                                                                    C.NAME
                                                                from dbo.GROUPMEMBER GM
                                                                inner join dbo.CONSTITUENT C on GM.MEMBERID = C.ID
                                                                left join dbo.GROUPMEMBERDATERANGE GMDR on GM.ID = GMDR.GROUPMEMBERID
                                                                where
                                                                    GM.GROUPID = @ID
                                                                    and ((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO > @CURRENTDATEEARLIEST))
                                                                        or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= @CURRENTDATEEARLIEST)) 
                                                                        or (GMDR.DATEFROM <= @CURRENTDATEEARLIEST and GMDR.DATETO > @CURRENTDATEEARLIEST))
                                                                order by C.KEYNAME, C.FIRSTNAME
                                                                for xml raw('ITEM'), type, elements, root('HOUSEHOLD_MEMBERS'),binary base64
                                                            )
                            end
                        else
                            begin
                                set @HOUSEHOLD_MEMBERS =    (
                                                                select top 4
                                                                    case when C.NAME is null then BRC.NAME else C.NAME end NAME
                                                                from dbo.BATCHREVENUECONSTITUENTGROUPMEMBER BRCGM
                                                                inner join dbo.BATCHREVENUECONSTITUENT BRC on BRCGM.MEMBERID = BRC.ID
                                                                left join dbo.CONSTITUENT C on BRC.EXISTINGCONSTITUENTID = C.ID
                                                                where
                                                                    BRCGM.GROUPID = @ID
                                                                order by BRC.KEYNAME, BRC.FIRSTNAME, C.KEYNAME, C.FIRSTNAME
                                                                for xml raw('ITEM'), type, elements, root('HOUSEHOLD_MEMBERS'),binary base64
                                                            )
                            end

                        set @HOUSEHOLD_NAME = @LASTNAME
                        set @HOUSEHOLD_NUMBERMEMBERS = @NUMBERMEMBERS
                        set @HOUSEHOLD_PRIMARYCONTACT = @PRIMARYCONTACT
                        set @HOUSEHOLD_ADDRESSTYPECODEID=@ADDRESS_ADDRESSTYPECODEID;
                        set @HOUSEHOLD_COUNTRYID=@ADDRESS_COUNTRYID;
                        set @HOUSEHOLD_COUNTRY=@ADDRESS_COUNTRY;
                        set @HOUSEHOLD_STATEID=@ADDRESS_STATEID;
                        set @HOUSEHOLD_ADDRESSBLOCK=@ADDRESS_ADDRESSBLOCK;
                        set @HOUSEHOLD_CITY=@ADDRESS_CITY;
                        set @HOUSEHOLD_POSTCODE=@ADDRESS_POSTCODE;
                        set @HOUSEHOLD_PHONETYPECODEID=@PHONE_PHONETYPECODEID;
                        set @HOUSEHOLD_NUMBER=@PHONE_NUMBER;
                        set @HOUSEHOLD_EMAILADDRESSTYPECODEID=@EMAILADDRESS_EMAILADDRESSTYPECODEID;
                        set @HOUSEHOLD_EMAILADDRESS=@EMAILADDRESS_EMAILADDRESS;                        
                    end
                else
                    begin
                        if @ISEXISTINGCONSTITUENT = 1
                            select @GROUP_TYPE = GT.NAME
                            from dbo.GROUPDATA GD
                            inner join dbo.GROUPTYPE GT on GD.GROUPTYPEID = GT.ID
                            where GD.ID = @ID
                        else
                            select @GROUP_TYPE = GT.NAME
                            from dbo.BATCHREVENUECONSTITUENT BRC
                            inner join dbo.GROUPTYPE GT on BRC.GROUPTYPEID = GT.ID
                            where BRC.ID = @ID

                        set @GROUP_NAME = @LASTNAME
                        set @GROUP_NUMBERMEMBERS = @NUMBERMEMBERS
                        set @GROUP_PRIMARYCONTACT = @PRIMARYCONTACT
                        set @GROUP_ADDRESSTYPECODEID=@ADDRESS_ADDRESSTYPECODEID;
                        set @GROUP_COUNTRYID=@ADDRESS_COUNTRYID;
                        set @GROUP_COUNTRY=@ADDRESS_COUNTRY;
                        set @GROUP_STATEID=@ADDRESS_STATEID;
                        set @GROUP_ADDRESSBLOCK=@ADDRESS_ADDRESSBLOCK;
                        set @GROUP_CITY=@ADDRESS_CITY;
                        set @GROUP_POSTCODE=@ADDRESS_POSTCODE;
                        set @GROUP_PHONETYPECODEID=@PHONE_PHONETYPECODEID;
                        set @GROUP_NUMBER=@PHONE_NUMBER;
                        set @GROUP_EMAILADDRESSTYPECODEID=@EMAILADDRESS_EMAILADDRESSTYPECODEID;
                        set @GROUP_EMAILADDRESS=@EMAILADDRESS_EMAILADDRESS;
                    end
            end;

        if @LASTNAME is not null
            set @DATALOADED = -1;

        if @ADDRESS_COUNTRYID is null
            exec @ADDRESS_COUNTRYID = dbo.UFN_COUNTRY_GETDEFAULT;

        if @BUSINESS_COUNTRYID is null
            exec @BUSINESS_COUNTRYID = dbo.UFN_COUNTRY_GETDEFAULT;

    end try
    begin catch
        exec dbo.USP_RAISE_ERROR;
        return 1;
    end catch

    return 0;

end;