USP_BBNC_BATCH_FINDERNUMBERLOOKUP

Retrieves information about a gift from its finder number for use by Blackbaud Internet Solutions transaction batch processing.

Parameters

Parameter Parameter Type Mode Description
@FINDERNUMBER bigint IN
@CONSTITUENTID uniqueidentifier INOUT
@MAILINGID uniqueidentifier INOUT
@SOURCECODE nvarchar(50) INOUT
@APPEALID uniqueidentifier INOUT

Definition

Copy


CREATE procedure dbo.[USP_BBNC_BATCH_FINDERNUMBERLOOKUP]
(
  @FINDERNUMBER bigint,
  @CONSTITUENTID uniqueidentifier output,
  @MAILINGID uniqueidentifier output,
  @SOURCECODE nvarchar(50) output,
  @APPEALID uniqueidentifier output
)
as
  set nocount on;

  set @CONSTITUENTID = null;

  if @FINDERNUMBER > 0
    begin
      -- quick and dirty, but the CONSTITUENTAPPEAL row created by the mailing activate process can be deleted

      select top 1
        @CONSTITUENTID = [CONSTITUENTID],
        @MAILINGID = [MKTSEGMENTATIONID],
        @SOURCECODE = [SOURCECODE],
        @APPEALID = [APPEALID]
      from dbo.[CONSTITUENTAPPEAL]
      where [FINDERNUMBER] = @FINDERNUMBER;

      if @CONSTITUENTID is null
        begin
          -- slow and thorough, but guaranteed to work

          select @MAILINGID = dbo.[UFN_MKTSEGMENTATIONFINDERNUMBER_GETSEGMENTATION](@FINDERNUMBER);

          -- this table structure must match the one defined in 

          -- Marketing.Catalog\Segmentation\FinderNumber\FinderNumberLookup.DataList.xml

          declare @LOOKUP table (
            [ID] nvarchar(36),
            [CONSTITUENTID] nvarchar(36),
            [FULLNAME] nvarchar(255),
            [FIRSTNAME] nvarchar(255),
            [MIDDLENAME] nvarchar(255),
            [LASTNAME] nvarchar(255),
            [TITLE] nvarchar(255),
            [SUFFIX] nvarchar(255),
            [COUNTRY] nvarchar(255),
            [ADDRESSLINE1] nvarchar(255),
            [ADDRESSLINE2] nvarchar(255),
            [ADDRESSLINE3] nvarchar(255),
            [ADDRESSLINE4] nvarchar(255),
            [ADDRESSLINE5] nvarchar(255),
            [CITY] nvarchar(255),
            [STATE] nvarchar(255),
            [POSTCODE] nvarchar(255),
            [CART] nvarchar(255),
            [DPC] nvarchar(255),
            [LOT] nvarchar(255),
            [PHONENUMBER] nvarchar(255),
            [EMAILADDRESS] nvarchar(255),
            [MAILINGIDINTEGER] int,
            [MAILDATE] datetime,
            [SOURCECODE] nvarchar(50),
            [APPEALSYSTEMID] nvarchar(36),
            [APPEALID] nvarchar(100),
            [APPEALDESCRIPTION] nvarchar(100),
            [PACKAGECODE] nvarchar(10),
            [PACKAGENAME] nvarchar(100),
            [PACKAGEDESCRIPTION] nvarchar(255),
            [SEGMENTID] uniqueidentifier,
            [SEGMENTNAME] nvarchar(203),
            [LISTNAME] nvarchar(100),
            [TITLE2] nvarchar(255),
            [SUFFIX2] nvarchar(255)
          );

          declare @RECORDSOURCEID uniqueidentifier
          set @RECORDSOURCEID = (select  dbo.UFN_MKTRECORDSOURCE_GETFIRSTBBECRECORDSOURCEID());

          insert into @LOOKUP
            exec dbo.[USP_DATALIST_MKTFINDERNUMBERLOOKUP] @FINDERNUMBER, @RECORDSOURCEID;

          declare @CONSTITUENTIDFROMFINDERNUMBER nvarchar(36);

          select top 1 @CONSTITUENTIDFROMFINDERNUMBER = [CONSTITUENTID], @SOURCECODE = [SOURCECODE] from @LOOKUP;

          if @CONSTITUENTIDFROMFINDERNUMBER is not null
            if len(@CONSTITUENTIDFROMFINDERNUMBER) = 36 and exists (select top 1 1 from dbo.[CONSTITUENT] where [ID] = convert(uniqueidentifier, @CONSTITUENTIDFROMFINDERNUMBER))
              set @CONSTITUENTID = convert(uniqueidentifier, @CONSTITUENTIDFROMFINDERNUMBER);

          declare @APPEALIDFROMMAILING nvarchar(36);

          select
            @APPEALIDFROMMAILING = [APPEALSYSTEMID]
          from dbo.[MKTSEGMENTATIONACTIVATE]
          where [SEGMENTATIONID] = @MAILINGID;

          if @APPEALIDFROMMAILING is not null 
            if len(@APPEALIDFROMMAILING) = 36 and exists (select top 1 1 from dbo.[APPEAL] where [ID] = convert(uniqueidentifier, @APPEALIDFROMMAILING))
              set @APPEALID = convert(uniqueidentifier, @APPEALIDFROMMAILING);
        end
    end

  -- source code cannot be null; must be an empty string if one isn't found

  if @SOURCECODE is null set @SOURCECODE = '';

  return 0;