USP_DATALIST_MKTAPPEALUNRESOLVEDRESPONSES

Returns a list of unresolved gifts for a marketing effort.

Parameters

Parameter Parameter Type Mode Description
@SEGMENTATIONID uniqueidentifier IN Input parameter indicating the context ID for the data list.
@CURRENCYCODE tinyint IN Currency

Definition

Copy


CREATE procedure dbo.USP_DATALIST_MKTAPPEALUNRESOLVEDRESPONSES
(
  @SEGMENTATIONID uniqueidentifier,
  @CURRENCYCODE tinyint = 1
)
as
  set nocount on;

  declare @RECORDSOURCEID uniqueidentifier;
  declare @SQL nvarchar(max);
  declare @GIFTIDSETID uniqueidentifier;
  declare @RECORDSOURCEVIEWNAME nvarchar(255);
  declare @RECORDSOURCEPRIMARYKEYFIELD nvarchar(255);
  declare @RECORDSOURCETITLEFIELD nvarchar(255);
  declare @RECORDSOURCEFIRSTNAMEFIELD nvarchar(255);
  declare @RECORDSOURCEMIDDLENAMEFIELD nvarchar(255);
  declare @RECORDSOURCELASTNAMEFIELD nvarchar(255);
  declare @RECORDSOURCESUFFIXFIELD nvarchar(255);
  declare @RECORDSOURCECOUNTRYFIELD nvarchar(255);
  declare @RECORDSOURCEADDRESSLINE1FIELD nvarchar(255);
  declare @RECORDSOURCEADDRESSLINE2FIELD nvarchar(255);
  declare @RECORDSOURCECITYFIELD nvarchar(255);
  declare @RECORDSOURCESTATEFIELD nvarchar(255);
  declare @RECORDSOURCEPOSTCODEFIELD nvarchar(255);
  declare @RECORDSOURCEPHONENUMBERFIELD nvarchar(255);
  declare @RECORDSOURCEEMAILADDRESSFIELD nvarchar(255);
  declare @RECORDSOURCEFULLNAMEFIELD nvarchar(255);

  /* Get multicurrency values for the given effort */
  declare @ISO4217 nvarchar(100);
  declare @DECIMALDIGITS tinyint;
  declare @CURRENCYSYMBOL nvarchar(5);
  declare @SYMBOLDISPLAYSETTINGCODE tinyint;

  select
    @ISO4217 = [CURRENCY].[ISO4217],
    @DECIMALDIGITS = [CURRENCY].[DECIMALDIGITS],
    @CURRENCYSYMBOL = [CURRENCY].[CURRENCYSYMBOL],
    @SYMBOLDISPLAYSETTINGCODE = [CURRENCY].[SYMBOLDISPLAYSETTINGCODE]
  from dbo.[MKTSEGMENTATION]
  inner join dbo.[CURRENCY] on [CURRENCY].[ID] = case when @CURRENCYCODE = 1 then dbo.[UFN_CURRENCY_GETORGANIZATIONCURRENCY]() else [MKTSEGMENTATION].[BASECURRENCYID] end
  where [MKTSEGMENTATION].[ID] = @SEGMENTATIONID;

  declare @RESULTTABLE table([TITLE] nvarchar(50),
                             [FIRSTNAME] nvarchar(100),
                             [MIDDLENAME] nvarchar(100),
                             [LASTNAME] nvarchar(100),
                             [SUFFIX] nvarchar(50),
                             [COUNTRY] nvarchar(100),
                             [ADDRESSLINE1] nvarchar(255),
                             [ADDRESSLINE2] nvarchar(255),
                             [CITY] nvarchar(100),
                             [STATE] nvarchar(100),
                             [POSTCODE] nvarchar(30),
                             [PHONENUMBER] nvarchar(50),
                             [EMAILADDRESS] nvarchar(255),
                             [FULLNAME] nvarchar(255),
                             [GIFTDATE] datetime,
                             [GIFTAMOUNT] money)

  declare RECORDSOURCECURSOR cursor local fast_forward for
    select [QUERYVIEWCATALOGID]
    from dbo.[UFN_MKTSEGMENTATION_GETDISTINCTRECORDSOURCES](@SEGMENTATIONID);

  open RECORDSOURCECURSOR;
  fetch next from RECORDSOURCECURSOR into @RECORDSOURCEID;

  while (@@FETCH_STATUS = 0)
  begin
    /* Gather some info so we can build the SQL for each record source */
    select
      @GIFTIDSETID = [UNRESOLVEDGIFTIDSETREGISTERID]
    from dbo.[MKTSEGMENTATIONACTIVATE]
    where [SEGMENTATIONID] = @SEGMENTATIONID
    and [RECORDSOURCEID] = @RECORDSOURCEID;

    select
      @RECORDSOURCEVIEWNAME = [QUERYVIEWCATALOG].[OBJECTNAME],
      @RECORDSOURCEPRIMARYKEYFIELD = [QUERYVIEWCATALOG].[PRIMARYKEYFIELD],
      @RECORDSOURCETITLEFIELD = isnull([TITLEFIELD],''),
      @RECORDSOURCEFIRSTNAMEFIELD = isnull([FIRSTNAMEFIELD],''),
      @RECORDSOURCEMIDDLENAMEFIELD = isnull([MIDDLENAMEFIELD],''),
      @RECORDSOURCELASTNAMEFIELD = isnull([LASTNAMEFIELD],''),
      @RECORDSOURCESUFFIXFIELD = isnull([SUFFIXFIELD],''),
      @RECORDSOURCECOUNTRYFIELD = isnull([COUNTRYFIELD],''),
      @RECORDSOURCEADDRESSLINE1FIELD = isnull([ADDRESSLINE1FIELD],''),
      @RECORDSOURCEADDRESSLINE2FIELD = isnull([ADDRESSLINE2FIELD],''),
      @RECORDSOURCECITYFIELD = isnull([CITYFIELD],''),
      @RECORDSOURCESTATEFIELD = isnull([STATEFIELD],''),
      @RECORDSOURCEPOSTCODEFIELD = isnull([POSTCODEFIELD],''),
      @RECORDSOURCEPHONENUMBERFIELD = isnull([PHONENUMBERFIELD],''),
      @RECORDSOURCEEMAILADDRESSFIELD = isnull([EMAILADDRESSFIELD],''),
      @RECORDSOURCEFULLNAMEFIELD = isnull([FULLNAMEFIELD], '')
    from dbo.[MKTRECORDSOURCEFIELDMAPPINGS]
    inner join dbo.[QUERYVIEWCATALOG] on [QUERYVIEWCATALOG].[ID] = [MKTRECORDSOURCEFIELDMAPPINGS].[ID]
    where [MKTRECORDSOURCEFIELDMAPPINGS].[ID] = @RECORDSOURCEID;


    /* Build the SQL statement for this record source */
    set @SQL = 'select' + char(13) +
               '  ' + (case when len(@RECORDSOURCETITLEFIELD) = 0 then '''''' else '[DONORS].[' + @RECORDSOURCETITLEFIELD + ']' end) + ',' + char(13) +
               '  ' + (case when len(@RECORDSOURCEFIRSTNAMEFIELD) = 0 then '''''' else '[DONORS].[' + @RECORDSOURCEFIRSTNAMEFIELD + ']' end) + ',' + char(13) +
               '  ' + (case when len(@RECORDSOURCEMIDDLENAMEFIELD) = 0 then '''''' else '[DONORS].[' + @RECORDSOURCEMIDDLENAMEFIELD + ']' end) + ',' + char(13) +
               '  ' + (case when len(@RECORDSOURCELASTNAMEFIELD) = 0 then '''''' else '[DONORS].[' + @RECORDSOURCELASTNAMEFIELD + ']' end) + ',' + char(13) +
               '  ' + (case when len(@RECORDSOURCESUFFIXFIELD) = 0 then '''''' else '[DONORS].[' + @RECORDSOURCESUFFIXFIELD + ']' end) + ',' + char(13) +
               '  ' + (case when len(@RECORDSOURCECOUNTRYFIELD) = 0 then '''''' else '[DONORS].[' + @RECORDSOURCECOUNTRYFIELD + ']' end) + ',' + char(13) +
               '  ' + (case when len(@RECORDSOURCEADDRESSLINE1FIELD) = 0 then '''''' else '[DONORS].[' + @RECORDSOURCEADDRESSLINE1FIELD + ']' end) + ',' + char(13) +
               '  ' + (case when len(@RECORDSOURCEADDRESSLINE2FIELD) = 0 then '''''' else '[DONORS].[' + @RECORDSOURCEADDRESSLINE2FIELD + ']' end) + ',' + char(13) +
               '  ' + (case when len(@RECORDSOURCECITYFIELD) = 0 then '''''' else '[DONORS].[' + @RECORDSOURCECITYFIELD + ']' end) + ',' + char(13) +
               '  ' + (case when len(@RECORDSOURCESTATEFIELD) = 0 then '''''' else '[DONORS].[' + @RECORDSOURCESTATEFIELD + ']' end) + ',' + char(13) +
               '  ' + (case when len(@RECORDSOURCEPOSTCODEFIELD) = 0 then '''''' else '[DONORS].[' + @RECORDSOURCEPOSTCODEFIELD + ']' end) + ',' + char(13) +
               '  ' + (case when len(@RECORDSOURCEPHONENUMBERFIELD) = 0 then '''''' else '[DONORS].[' + @RECORDSOURCEPHONENUMBERFIELD + ']' end) + ',' + char(13) +
               '  ' + (case when len(@RECORDSOURCEEMAILADDRESSFIELD) = 0 then '''''' else '[DONORS].[' + @RECORDSOURCEEMAILADDRESSFIELD + ']' end) + ',' + char(13) +
               '  ' + (case when len(@RECORDSOURCEFULLNAMEFIELD) = 0 then '''''' else '[DONORS].[' + @RECORDSOURCEFULLNAMEFIELD + ']' end) + ',' + char(13) +
               '  [GIFTIDSET].[DATE],' + char(13) +
               '  ' + (case when @CURRENCYCODE = 1 then '[GIFTIDSET].[ORGANIZATIONAMOUNT]' else '[GIFTIDSET].[AMOUNT]' end) + ' as [AMOUNT]' + char(13) +
               'from dbo.' + dbo.[UFN_MKTSELECTION_GETFUNCTIONNAME](@GIFTIDSETID) + ' as [GIFTIDSET]' + char(13) +
               'inner join dbo.[' + @RECORDSOURCEVIEWNAME + '] as [DONORS] on [DONORS].[' + @RECORDSOURCEPRIMARYKEYFIELD + '] = [GIFTIDSET].[DONORID]';

    /* Execute the SQL to get the counts/amounts for this record source */
    insert into @RESULTTABLE
      exec (@SQL);

    fetch next from RECORDSOURCECURSOR into @RECORDSOURCEID;
  end;

  close RECORDSOURCECURSOR;
  deallocate RECORDSOURCECURSOR;

  /* Return the values */
  select 
    [TITLE],
    [FIRSTNAME],
    [MIDDLENAME],
    [LASTNAME],
    [SUFFIX],
    [COUNTRY],
    [ADDRESSLINE1],
    [ADDRESSLINE2],
    [CITY],
    [STATE],
    [POSTCODE],
    [PHONENUMBER],
    [EMAILADDRESS],
    [FULLNAME],
    [GIFTDATE],
    [GIFTAMOUNT],
    @ISO4217 as [CURRENCYISOCURRENCYCODE],
    @DECIMALDIGITS as [CURRENCYDECIMALDIGITS],
    @CURRENCYSYMBOL as [CURRENCYSYMBOL],
    @SYMBOLDISPLAYSETTINGCODE as [CURRENCYSYMBOLDISPLAYSETTINGCODE],
    [MIDDLENAME] as [MIDDLENAME_STRING],
    [LASTNAME] as [LASTNAME_STRING],
    [GIFTDATE] as [GIFTDATE_DATE],
    [GIFTAMOUNT] as [GIFTAMOUNT_MONEY]
  from @RESULTTABLE
  order by [LASTNAME], [FULLNAME], [FIRSTNAME], [MIDDLENAME], [GIFTDATE];

  return 0;