UFN_CONTACTPREFERENCES_GETFORMATS_CONSTITUENT_WORKER

Does the work for UFN_CONTACTPREFERENCES_GETFORMATS_CONSTITUENT

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@CONSTITUENTID uniqueidentifier IN
@NAMEFORMATPARAMETERID uniqueidentifier IN
@ADDRESSPROCESSINGOPTIONID uniqueidentifier IN
@MAILTYPE tinyint IN
@PARAMETERSETID uniqueidentifier IN
@SEASONALDATE datetime IN
@INCLUDEHOUSEHOLDPROCESSING bit IN
@USEADDRESSEEFORMAT bit IN
@ADDRESSEEFORMATID uniqueidentifier IN
@ADDRESSEEFORMATISPRIMARY bit IN
@ALTADDRESSEEFORMATID uniqueidentifier IN
@ALTADDRESSEEFORMATISPRIMARY bit IN
@ADDRESSEEFUNCTIONID uniqueidentifier IN
@USESALUTATIONFORMAT bit IN
@SALUTATIONFORMATID uniqueidentifier IN
@SALUTATIONFORMATISPRIMARY bit IN
@ALTSALUTATIONFORMATID uniqueidentifier IN
@ALTSALUTATIONFORMATISPRIMARY bit IN
@SALUTATIONFUNCTIONID uniqueidentifier IN
@USECONTACTADDRESSEEFORMAT bit IN
@CONTACTADDRESSEEFORMATID uniqueidentifier IN
@CONTACTADDRESSEEFORMATISPRIMARY bit IN
@ALTCONTACTADDRESSEEFORMATID uniqueidentifier IN
@ALTCONTACTADDRESSEEFORMATISPRIMARY bit IN
@CONTACTADDRESSEEFUNCTIONID uniqueidentifier IN
@ORGSALUTATIONCODE tinyint IN
@USECONTACTSALUTATIONFORMAT bit IN
@CONTACTSALUTATIONFORMATID uniqueidentifier IN
@CONTACTSALUTATIONFORMATISPRIMARY bit IN
@ALTCONTACTSALUTATIONFORMATID uniqueidentifier IN
@ALTCONTACTSALUTATIONFORMATISPRIMARY bit IN
@CONTACTSALUTATIONFUNCTIONID uniqueidentifier IN
@CONTACTSALUTATIONOPTIONCODE tinyint IN
@CUSTOMNAME nvarchar(100) IN
@INDUSESEASONALADDRESS bit IN
@ORGMAILINGPREFERENCE tinyint IN
@INDALTADDRESS1TYPECODEID uniqueidentifier IN
@INDALTADDRESS1ISPRIMARY bit IN
@INDALTADDRESS2TYPECODEID uniqueidentifier IN
@INDALTADDRESS2ISPRIMARY bit IN
@ORGALTADDRESS1TYPECODEID uniqueidentifier IN
@ORGALTADDRESS1ISPRIMARY bit IN
@ORGALTADDRESS2TYPECODEID uniqueidentifier IN
@ORGALTADDRESS2ISPRIMARY bit IN
@INDINCLUDEWITHNOADDRESS bit IN
@ORGINCLUDEWITHNOADDRESS bit IN
@ORGINCLUDEWITHNOCONTACT bit IN
@ORGSENDTOALLCONTACTS bit IN
@INDUSECONSTITUENTPREFS bit IN
@ORGUSECONSTITUENTPREFS bit IN
@GROUPALTADDRESS1TYPECODEID uniqueidentifier IN
@GROUPALTADDRESS1ISPRIMARY bit IN
@GROUPALTADDRESS2TYPECODEID uniqueidentifier IN
@GROUPALTADDRESS2ISPRIMARY bit IN
@GROUPINCLUDEWITHNOADDRESS bit IN
@GROUPUSECONSTITUENTPREFS tinyint IN

Definition

Copy


CREATE function dbo.UFN_CONTACTPREFERENCES_GETFORMATS_CONSTITUENT_WORKER
(
  @CONSTITUENTID uniqueidentifier,
  @NAMEFORMATPARAMETERID uniqueidentifier,
  @ADDRESSPROCESSINGOPTIONID uniqueidentifier,
  @MAILTYPE tinyint,
  @PARAMETERSETID uniqueidentifier,
  @SEASONALDATE datetime,
  @INCLUDEHOUSEHOLDPROCESSING bit,
  @USEADDRESSEEFORMAT bit,
  @ADDRESSEEFORMATID uniqueidentifier,
  @ADDRESSEEFORMATISPRIMARY bit,
  @ALTADDRESSEEFORMATID uniqueidentifier,
  @ALTADDRESSEEFORMATISPRIMARY bit,
  @ADDRESSEEFUNCTIONID uniqueidentifier,
  @USESALUTATIONFORMAT bit,
  @SALUTATIONFORMATID uniqueidentifier,
  @SALUTATIONFORMATISPRIMARY bit,
  @ALTSALUTATIONFORMATID uniqueidentifier,
  @ALTSALUTATIONFORMATISPRIMARY bit,
  @SALUTATIONFUNCTIONID uniqueidentifier,
  @USECONTACTADDRESSEEFORMAT bit,
  @CONTACTADDRESSEEFORMATID uniqueidentifier,
  @CONTACTADDRESSEEFORMATISPRIMARY bit,
  @ALTCONTACTADDRESSEEFORMATID uniqueidentifier,
  @ALTCONTACTADDRESSEEFORMATISPRIMARY bit,
  @CONTACTADDRESSEEFUNCTIONID uniqueidentifier,
  @ORGSALUTATIONCODE tinyint,
  @USECONTACTSALUTATIONFORMAT bit,
  @CONTACTSALUTATIONFORMATID uniqueidentifier,
  @CONTACTSALUTATIONFORMATISPRIMARY bit,
  @ALTCONTACTSALUTATIONFORMATID uniqueidentifier,
  @ALTCONTACTSALUTATIONFORMATISPRIMARY bit,
  @CONTACTSALUTATIONFUNCTIONID uniqueidentifier,
  @CONTACTSALUTATIONOPTIONCODE tinyint,
  @CUSTOMNAME nvarchar(100),
  @INDUSESEASONALADDRESS bit,
  @ORGMAILINGPREFERENCE tinyint,
  @INDALTADDRESS1TYPECODEID uniqueidentifier,
  @INDALTADDRESS1ISPRIMARY bit,
  @INDALTADDRESS2TYPECODEID uniqueidentifier,
  @INDALTADDRESS2ISPRIMARY bit,
  @ORGALTADDRESS1TYPECODEID uniqueidentifier,
  @ORGALTADDRESS1ISPRIMARY bit,
  @ORGALTADDRESS2TYPECODEID uniqueidentifier,
  @ORGALTADDRESS2ISPRIMARY bit,
  @INDINCLUDEWITHNOADDRESS bit,
  @ORGINCLUDEWITHNOADDRESS bit,
  @ORGINCLUDEWITHNOCONTACT bit,
  @ORGSENDTOALLCONTACTS bit,
  @INDUSECONSTITUENTPREFS bit,
  @ORGUSECONSTITUENTPREFS bit,
  @GROUPALTADDRESS1TYPECODEID uniqueidentifier,
  @GROUPALTADDRESS1ISPRIMARY bit,
  @GROUPALTADDRESS2TYPECODEID uniqueidentifier,
  @GROUPALTADDRESS2ISPRIMARY bit,
  @GROUPINCLUDEWITHNOADDRESS bit,
  @GROUPUSECONSTITUENTPREFS tinyint
)
returns @R table
(
  CONSTITUENTID uniqueidentifier,
  ADDRESSEE nvarchar(700),
  SALUTATION nvarchar(700),
  CONTACT nvarchar(700),
  POSITION nvarchar(50),
  ADDRESSBLOCK nvarchar(150),
  CITY nvarchar(50),
  STATE nvarchar(100),
  POSTCODE nvarchar(12),
  COUNTRY nvarchar(100),
  CONTACTID uniqueidentifier,
  HOUSEHOLDID uniqueidentifier,
  RETURNEDASHOUSEHOLDMEMBER bit,
  GROUPCONTACTID uniqueidentifier,
  CONTACTORCONSTITUENTID uniqueidentifier
)
as
begin

  --CAMERONBO WI 44493 If the letter comes in with its own name format parameters, use those instead of the default ones. 

  if @NAMEFORMATPARAMETERID is not null
    with NAMEFORMAT_CTE as
    (
      select 
        case when ADDRESSEEFUNCTIONID is null then 0 else 1 end USEADDRESSEEFORMAT,
        ADDRESSEE.NAMEFORMATTYPECODEID ADDRESSEEFORMATID,
        ADDRESSEE.ADDRESSEEFORMATISPRIMARY ADDRESSEEFORMATISPRIMARY,
        ALTADDRESSEE.NAMEFORMATTYPECODEID ALTADDRESSEEFORMATID,
        ALTADDRESSEE.ADDRESSEEFORMATISPRIMARY ALTADDRESSEEFORMATISPRIMARY,
        ADDRESSEEFUNCTIONID,
        case when SALUTATIONFUNCTIONID is null then 0 else 1 end USESALUTATIONFORMAT,
        SALUTATION.NAMEFORMATTYPECODEID SALUTATIONFORMATID,
        SALUTATION.SALUTATIONFORMATISPRIMARY SALUTATIONFORMATISPRIMARY,
        ALTSALUTATION.NAMEFORMATTYPECODEID ALTSALUTATIONFORMATID,
        ALTSALUTATION.SALUTATIONFORMATISPRIMARY ALTSALUTATIONFORMATISPRIMARY,
        SALUTATIONFUNCTIONID,
        case when CONTACTADDRESSEEFUNCTIONID is null then 0 else 1 end USECONTACTADDRESSEEFORMAT,
        ORGADDRESSEE.NAMEFORMATTYPECODEID CONTACTADDRESSEEFORMATID,
        ORGADDRESSEE.ADDRESSEEFORMATISPRIMARY CONTACTADDRESSEEFORMATISPRIMARY,
        ALTORGADDRESSEE.NAMEFORMATTYPECODEID ALTCONTACTADDRESSEEFORMATID,
        ALTORGADDRESSEE.ADDRESSEEFORMATISPRIMARY ALTCONTACTADDRESSEEFORMATISPRIMARY,
        CONTACTADDRESSEEFUNCTIONID,
        ORGSALUTATIONCODE as ORGSALUTATIONCODE,
        case when CONTACTSALUTATIONFUNCTIONID is null then 0 else 1 end USECONTACTSALUTATIONFORMAT,
        ORGSALUTATION.NAMEFORMATTYPECODEID CONTACTSALUTATIONFORMATID,
        ORGSALUTATION.SALUTATIONFORMATISPRIMARY CONTACTSALUTATIONFORMATISPRIMARY,
        ALTORGSALUTATION.NAMEFORMATTYPECODEID ALTCONTACTSALUTATIONFORMATID,
        ALTORGSALUTATION.SALUTATIONFORMATISPRIMARY ALTCONTACTSALUTATIONFORMATISPRIMARY,
        CONTACTSALUTATIONFUNCTIONID,
        CONTACTSALUTATIONOPTIONCODE,
        CUSTOMNAME
      from dbo.NAMEFORMATPARAMETER
      outer apply (select top 1 ID, NAMEFORMATTYPECODEID, ADDRESSEEFORMATISPRIMARY
                from dbo.NAMEFORMATPARAMETERINDADDRESSEE 
                where NAMEFORMATPARAMETERID = NAMEFORMATPARAMETER.ID 
                order by SEQUENCE) ADDRESSEE
      outer apply (select top 1 ID, NAMEFORMATTYPECODEID, ADDRESSEEFORMATISPRIMARY 
                from dbo.NAMEFORMATPARAMETERINDADDRESSEE 
                where NAMEFORMATPARAMETERID = NAMEFORMATPARAMETER.ID 
                  and NAMEFORMATPARAMETERINDADDRESSEE.ID <> ADDRESSEE.ID
                order by SEQUENCE) ALTADDRESSEE
      outer apply (select top 1 ID, NAMEFORMATTYPECODEID, SALUTATIONFORMATISPRIMARY
                from dbo.NAMEFORMATPARAMETERINDSALUTATION 
                where NAMEFORMATPARAMETERID = NAMEFORMATPARAMETER.ID 
                order by SEQUENCE) SALUTATION
      outer apply (select top 1 ID, NAMEFORMATTYPECODEID, SALUTATIONFORMATISPRIMARY 
                from dbo.NAMEFORMATPARAMETERINDSALUTATION 
                where NAMEFORMATPARAMETERID = NAMEFORMATPARAMETER.ID 
                  and NAMEFORMATPARAMETERINDSALUTATION.ID <> SALUTATION.ID
                order by SEQUENCE) ALTSALUTATION
      outer apply (select top 1 ID, NAMEFORMATTYPECODEID, ADDRESSEEFORMATISPRIMARY
                from dbo.NAMEFORMATPARAMETERORGADDRESSEE 
                where NAMEFORMATPARAMETERID = NAMEFORMATPARAMETER.ID 
                order by SEQUENCE) ORGADDRESSEE
      outer apply (select top 1 ID, NAMEFORMATTYPECODEID, ADDRESSEEFORMATISPRIMARY 
                from dbo.NAMEFORMATPARAMETERORGADDRESSEE 
                where NAMEFORMATPARAMETERID = NAMEFORMATPARAMETER.ID 
                  and NAMEFORMATPARAMETERORGADDRESSEE.ID <> ORGADDRESSEE.ID
                order by SEQUENCE) ALTORGADDRESSEE
      outer apply (select top 1 ID, NAMEFORMATTYPECODEID, SALUTATIONFORMATISPRIMARY
                from dbo.NAMEFORMATPARAMETERORGSALUTATION 
                where NAMEFORMATPARAMETERID = NAMEFORMATPARAMETER.ID 
                order by SEQUENCE) ORGSALUTATION
      outer apply (select top 1 ID, NAMEFORMATTYPECODEID, SALUTATIONFORMATISPRIMARY 
                from dbo.NAMEFORMATPARAMETERORGSALUTATION 
                where NAMEFORMATPARAMETERID = NAMEFORMATPARAMETER.ID 
                  and NAMEFORMATPARAMETERORGSALUTATION.ID <> ORGSALUTATION.ID
                order by SEQUENCE) ALTORGSALUTATION
      where NAMEFORMATPARAMETER.ID = @NAMEFORMATPARAMETERID
    )
    select
      @USEADDRESSEEFORMAT = coalesce(USEADDRESSEEFORMAT, @USEADDRESSEEFORMAT),
      @ADDRESSEEFORMATID = coalesce(ADDRESSEEFORMATID, @ADDRESSEEFORMATID),
      @ADDRESSEEFORMATISPRIMARY = coalesce(ADDRESSEEFORMATISPRIMARY, @ADDRESSEEFORMATISPRIMARY),
      @ALTADDRESSEEFORMATID = coalesce(ALTADDRESSEEFORMATID, @ALTADDRESSEEFORMATID),
      @ALTADDRESSEEFORMATISPRIMARY = coalesce(ALTADDRESSEEFORMATISPRIMARY, @ALTADDRESSEEFORMATISPRIMARY),
      @ADDRESSEEFUNCTIONID = coalesce(ADDRESSEEFUNCTIONID, @ADDRESSEEFUNCTIONID),
      @USESALUTATIONFORMAT = coalesce(USESALUTATIONFORMAT, @USESALUTATIONFORMAT),
      @SALUTATIONFORMATID = coalesce(SALUTATIONFORMATID, @SALUTATIONFORMATID),
      @SALUTATIONFORMATISPRIMARY = coalesce(SALUTATIONFORMATISPRIMARY, @SALUTATIONFORMATISPRIMARY),
      @ALTSALUTATIONFORMATID = coalesce(ALTSALUTATIONFORMATID, @ALTSALUTATIONFORMATID),
      @ALTSALUTATIONFORMATISPRIMARY = coalesce(ALTSALUTATIONFORMATISPRIMARY, @ALTSALUTATIONFORMATISPRIMARY),
      @SALUTATIONFUNCTIONID = coalesce(SALUTATIONFUNCTIONID, @SALUTATIONFUNCTIONID),
      @USECONTACTADDRESSEEFORMAT = coalesce(USECONTACTADDRESSEEFORMAT, @USECONTACTADDRESSEEFORMAT),
      @CONTACTADDRESSEEFORMATID = coalesce(CONTACTADDRESSEEFORMATID, @CONTACTADDRESSEEFORMATID),
      @CONTACTADDRESSEEFORMATISPRIMARY = coalesce(CONTACTADDRESSEEFORMATISPRIMARY, @CONTACTADDRESSEEFORMATISPRIMARY),
      @ALTCONTACTADDRESSEEFORMATID = coalesce(ALTCONTACTADDRESSEEFORMATID, @ALTCONTACTADDRESSEEFORMATID),
      @ALTCONTACTADDRESSEEFORMATISPRIMARY = coalesce(ALTCONTACTADDRESSEEFORMATISPRIMARY, @ALTCONTACTADDRESSEEFORMATISPRIMARY),
      @CONTACTADDRESSEEFUNCTIONID = coalesce(CONTACTADDRESSEEFUNCTIONID, @CONTACTADDRESSEEFUNCTIONID),
      @ORGSALUTATIONCODE = coalesce(ORGSALUTATIONCODE, @ORGSALUTATIONCODE),
      @USECONTACTSALUTATIONFORMAT = coalesce(USECONTACTSALUTATIONFORMAT, @USECONTACTSALUTATIONFORMAT),
      @CONTACTSALUTATIONFORMATID = coalesce(CONTACTSALUTATIONFORMATID, @CONTACTSALUTATIONFORMATID),
      @CONTACTSALUTATIONFORMATISPRIMARY = coalesce(CONTACTSALUTATIONFORMATISPRIMARY, @CONTACTSALUTATIONFORMATISPRIMARY),
      @ALTCONTACTSALUTATIONFORMATID = coalesce(ALTCONTACTSALUTATIONFORMATID, @ALTCONTACTSALUTATIONFORMATID),
      @ALTCONTACTSALUTATIONFORMATISPRIMARY = coalesce(ALTCONTACTSALUTATIONFORMATISPRIMARY, @ALTCONTACTSALUTATIONFORMATISPRIMARY),
      @CONTACTSALUTATIONFUNCTIONID = coalesce(CONTACTSALUTATIONFUNCTIONID, @CONTACTSALUTATIONFUNCTIONID),
      @CONTACTSALUTATIONOPTIONCODE = coalesce(CONTACTSALUTATIONOPTIONCODE, @CONTACTSALUTATIONOPTIONCODE),
      @CUSTOMNAME = coalesce(CUSTOMNAME, @CUSTOMNAME)
    from NAMEFORMAT_CTE;

  --JamesWill WI 40150 If the letter comes in with its own set of comm prefs, use those instead of the default ones. 

  if @ADDRESSPROCESSINGOPTIONID is not null
    select
      @INDUSECONSTITUENTPREFS = coalesce(INDUSECONSTITUENTPREFS, @INDUSECONSTITUENTPREFS),
      @INDALTADDRESS1TYPECODEID = coalesce(INDALTADDRESS1TYPECODEID, @INDALTADDRESS1TYPECODEID),
      @INDALTADDRESS1ISPRIMARY = coalesce(INDALTADDRESS1ISPRIMARY, @INDALTADDRESS1ISPRIMARY),
      @INDALTADDRESS2TYPECODEID = coalesce(INDALTADDRESS2TYPECODEID, @INDALTADDRESS2TYPECODEID),
      @INDALTADDRESS2ISPRIMARY = coalesce(INDALTADDRESS2ISPRIMARY, @INDALTADDRESS2ISPRIMARY),
      @INDUSESEASONALADDRESS = coalesce(INDUSESEASONALADDRESS, @INDUSESEASONALADDRESS),
      @INDINCLUDEWITHNOADDRESS = coalesce(INDINCLUDEWITHNOADDRESS, @INDINCLUDEWITHNOADDRESS),
      @ORGMAILINGPREFERENCE = coalesce(ORGMAILINGPREFERENCE, @ORGMAILINGPREFERENCE),
      @ORGALTADDRESS1TYPECODEID = coalesce(ORGALTADDRESS1TYPECODEID, @ORGALTADDRESS1TYPECODEID),
      @ORGALTADDRESS1ISPRIMARY = coalesce(ORGALTADDRESS1ISPRIMARY, @ORGALTADDRESS1ISPRIMARY),
      @ORGALTADDRESS2TYPECODEID = coalesce(ORGALTADDRESS2TYPECODEID, @ORGALTADDRESS2TYPECODEID),
      @ORGALTADDRESS2ISPRIMARY = coalesce(ORGALTADDRESS2ISPRIMARY, @ORGALTADDRESS2ISPRIMARY),
      @ORGINCLUDEWITHNOADDRESS= coalesce(ORGINCLUDEWITHNOADDRESS, @ORGINCLUDEWITHNOADDRESS),
      @ORGSENDTOALLCONTACTS = coalesce(ORGSENDTOALLCONTACTS, @ORGSENDTOALLCONTACTS),
      @ORGINCLUDEWITHNOCONTACT = coalesce(ORGINCLUDEWITHNOCONTACT, @ORGINCLUDEWITHNOCONTACT)
    from dbo.ADDRESSPROCESSINGOPTION
    where ID = @ADDRESSPROCESSINGOPTIONID;

   insert into @R(CONSTITUENTID, ADDRESSEE, SALUTATION, CONTACT, POSITION, ADDRESSBLOCK, CITY, STATE, POSTCODE, COUNTRY, CONTACTID, HOUSEHOLDID, RETURNEDASHOUSEHOLDMEMBER, GROUPCONTACTID, CONTACTORCONSTITUENTID)
    select 
      CONSTITUENT.ID as CONSTITUENTID,
      case when CONSTITUENT.ISORGANIZATION = 1 then
        CONSTITUENT.NAME
      else
 case when @USEADDRESSEEFORMAT = 0 then
          dbo.UFN_NAMEFORMAT_FROMID(@ADDRESSEEFUNCTIONID, coalesce(AP.GROUPCONTACTID, CONSTITUENT.ID))
        else
          case when AP.GROUPCONTACTID is not null then
            coalesce((select FORMATTEDNAME from dbo.NAMEFORMAT where NAMEFORMAT.CONSTITUENTID = AP.GROUPCONTACTID
                  and (NAMEFORMAT.NAMEFORMATTYPECODEID = @ADDRESSEEFORMATID
                  or (@ADDRESSEEFORMATISPRIMARY = 1 and NAMEFORMAT.PRIMARYADDRESSEE = 1))),
                (select FORMATTEDNAME from dbo.NAMEFORMAT where NAMEFORMAT.CONSTITUENTID = AP.GROUPCONTACTID
                  and (NAMEFORMAT.NAMEFORMATTYPECODEID = @ALTADDRESSEEFORMATID
                  or (@ALTADDRESSEEFORMATISPRIMARY = 1 and NAMEFORMAT.PRIMARYADDRESSEE = 1))),
                (select NAME from dbo.CONSTITUENT where ID = AP.GROUPCONTACTID))
          else
            coalesce((select FORMATTEDNAME from dbo.NAMEFORMAT where NAMEFORMAT.CONSTITUENTID = CONSTITUENT.ID
                  and (NAMEFORMAT.NAMEFORMATTYPECODEID = @ADDRESSEEFORMATID
                  or (@ADDRESSEEFORMATISPRIMARY = 1 and NAMEFORMAT.PRIMARYADDRESSEE = 1))),
                (select FORMATTEDNAME from dbo.NAMEFORMAT where NAMEFORMAT.CONSTITUENTID = CONSTITUENT.ID
                  and (NAMEFORMAT.NAMEFORMATTYPECODEID = @ALTADDRESSEEFORMATID
                  or (@ALTADDRESSEEFORMATISPRIMARY = 1 and NAMEFORMAT.PRIMARYADDRESSEE = 1))),
                CONSTITUENT.NAME)
          end
        end
      end as ADDRESSEE,
      case when CONSTITUENT.ISORGANIZATION = 1 then
        --process salutation option

        case when @ORGSALUTATIONCODE = 0 then --use organization name

          CONSTITUENT.NAME
        when @ORGSALUTATIONCODE = 1 then -- use contact name

          coalesce((select top (1)
                case when @USECONTACTSALUTATIONFORMAT = 0 then
                  dbo.UFN_NAMEFORMAT_FROMID(@CONTACTSALUTATIONFUNCTIONID, CONTACT.ID)
                else
                  coalesce((select FORMATTEDNAME from dbo.NAMEFORMAT where NAMEFORMAT.CONSTITUENTID = CONTACT.ID
                        and (NAMEFORMAT.NAMEFORMATTYPECODEID = @CONTACTSALUTATIONFORMATID
                        or (@CONTACTSALUTATIONFORMATISPRIMARY = 1 and NAMEFORMAT.PRIMARYSALUTATION = 1))),
                      (select FORMATTEDNAME from dbo.NAMEFORMAT where NAMEFORMAT.CONSTITUENTID = CONTACT.ID
                        and (NAMEFORMAT.NAMEFORMATTYPECODEID = @ALTCONTACTSALUTATIONFORMATID
                        or (@ALTCONTACTSALUTATIONFORMATISPRIMARY = 1 and NAMEFORMAT.PRIMARYSALUTATION = 1))),
                      CONTACT.NAME)
                end
              from dbo.CONSTITUENT CONTACT
              where CONTACT.ID = AP.CONTACTID),
              (case when @CUSTOMNAME <> '' then @CUSTOMNAME else null end), 
              CONSTITUENT.NAME)
      else --use custom name

        @CUSTOMNAME
      end
    else
      case when @USESALUTATIONFORMAT = 0 then
        dbo.UFN_NAMEFORMAT_FROMID(@SALUTATIONFUNCTIONID, coalesce(AP.GROUPCONTACTID, CONSTITUENT.ID))
      else
        case when AP.GROUPCONTACTID is not null then
          coalesce((select FORMATTEDNAME from dbo.NAMEFORMAT where NAMEFORMAT.CONSTITUENTID = AP.GROUPCONTACTID
                and (NAMEFORMAT.NAMEFORMATTYPECODEID = @SALUTATIONFORMATID
                or (@SALUTATIONFORMATISPRIMARY = 1 and NAMEFORMAT.PRIMARYSALUTATION = 1))),
              (select FORMATTEDNAME from dbo.NAMEFORMAT where NAMEFORMAT.CONSTITUENTID = AP.GROUPCONTACTID
                and (NAMEFORMAT.NAMEFORMATTYPECODEID = @ALTSALUTATIONFORMATID
                or (@ALTSALUTATIONFORMATISPRIMARY = 1 and NAMEFORMAT.PRIMARYSALUTATION = 1))),
              (select NAME from dbo.CONSTITUENT where ID = AP.GROUPCONTACTID))
        else
          coalesce((select FORMATTEDNAME from dbo.NAMEFORMAT where NAMEFORMAT.CONSTITUENTID = CONSTITUENT.ID
                and (NAMEFORMAT.NAMEFORMATTYPECODEID = @SALUTATIONFORMATID
                or (@SALUTATIONFORMATISPRIMARY = 1 and NAMEFORMAT.PRIMARYSALUTATION = 1))),
              (select FORMATTEDNAME from dbo.NAMEFORMAT where NAMEFORMAT.CONSTITUENTID = CONSTITUENT.ID
                and (NAMEFORMAT.NAMEFORMATTYPECODEID = @ALTSALUTATIONFORMATID
                or (@ALTSALUTATIONFORMATISPRIMARY = 1 and NAMEFORMAT.PRIMARYSALUTATION = 1))),
              CONSTITUENT.NAME)
        end
      end
    end as SALUTATION,
    case when CONSTITUENT.ISORGANIZATION = 1 then
      (select top (1)
        case when @USECONTACTADDRESSEEFORMAT = 0 then
          dbo.UFN_NAMEFORMAT_FROMID(@CONTACTADDRESSEEFUNCTIONID, CONTACT.ID)
        else
          coalesce((select FORMATTEDNAME from dbo.NAMEFORMAT where NAMEFORMAT.CONSTITUENTID = CONTACT.ID
                and (NAMEFORMAT.NAMEFORMATTYPECODEID = @CONTACTADDRESSEEFORMATID
                or (@CONTACTADDRESSEEFORMATISPRIMARY = 1 and NAMEFORMAT.PRIMARYADDRESSEE = 1))),
              (select FORMATTEDNAME from dbo.NAMEFORMAT where NAMEFORMAT.CONSTITUENTID = CONTACT.ID
                and (NAMEFORMAT.NAMEFORMATTYPECODEID = @ALTCONTACTADDRESSEEFORMATID
                or (@ALTCONTACTADDRESSEEFORMATISPRIMARY = 1 and NAMEFORMAT.PRIMARYADDRESSEE = 1))),
              CONTACT.NAME)
        end
      from dbo.CONSTITUENT CONTACT
      where CONTACT.ID = AP.CONTACTID)
    else
      null
    end as CONTACT,
    AP.POSITION,
    A.ADDRESSBLOCK,
    A.CITY,
    STATE.ABBREVIATION as [STATE],
    A.POSTCODE,
    COUNTRY.DESCRIPTION as COUNTRY,
    AP.CONTACTID,
    AP.HOUSEHOLDID,
    AP.RETURNEDASHOUSEHOLDMEMBER,
    AP.GROUPCONTACTID,
    coalesce(AP.GROUPCONTACTID, CONSTITUENT.ID) as CONTACTORCONSTITUENTID
  from dbo.UFN_ADDRESSPROCESS_ADDRESSES_CONSTITUENT(@CONSTITUENTID, @ADDRESSPROCESSINGOPTIONID,@MAILTYPE,@PARAMETERSETID,@SEASONALDATE,@INCLUDEHOUSEHOLDPROCESSING,@INDUSESEASONALADDRESS, @ORGMAILINGPREFERENCE, @INDALTADDRESS1TYPECODEID, @INDALTADDRESS1ISPRIMARY, @INDALTADDRESS2TYPECODEID, @INDALTADDRESS2ISPRIMARY, @ORGALTADDRESS1TYPECODEID, @ORGALTADDRESS1ISPRIMARY, @ORGALTADDRESS2TYPECODEID, @ORGALTADDRESS2ISPRIMARY, @INDINCLUDEWITHNOADDRESS, @ORGINCLUDEWITHNOADDRESS, @ORGINCLUDEWITHNOCONTACT, @ORGSENDTOALLCONTACTS, @INDUSECONSTITUENTPREFS, @ORGUSECONSTITUENTPREFS, @GROUPALTADDRESS1TYPECODEID, @GROUPALTADDRESS1ISPRIMARY, @GROUPALTADDRESS2TYPECODEID, @GROUPALTADDRESS2ISPRIMARY, @GROUPINCLUDEWITHNOADDRESS, @GROUPUSECONSTITUENTPREFS) as AP
  inner join CONSTITUENT on AP.CONSTITUENTID = CONSTITUENT.ID
  left join dbo.ADDRESS A on AP.ADDRESSID = A.ID
  left join dbo.STATE on A.STATEID = STATE.ID
  left join dbo.COUNTRY on A.COUNTRYID = COUNTRY.ID;

  return;
end