USP_DATAFORMTEMPLATE_VIEW_BIOGRAPHICALDEMOGRAPHICNEEDSUPDATEFORM

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@DATALOADED bit INOUT
@NEEDSUPDATEFORM bit INOUT
@CONSTITUENTID uniqueidentifier INOUT
@MOSAIC nvarchar(200) INOUT
@HHINCOMECODEID uniqueidentifier INOUT
@DISCRETIONARYSPENDING money INOUT
@ISCONFIRMED bit INOUT

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_BIOGRAPHICALDEMOGRAPHICNEEDSUPDATEFORM
(
    @ID uniqueidentifier,
    @DATALOADED bit = 0 output,
  @NEEDSUPDATEFORM bit = null output,

  @CONSTITUENTID uniqueidentifier = null output,
  @MOSAIC nvarchar(200) = null output,
  @HHINCOMECODEID uniqueidentifier = null output,
  @DISCRETIONARYSPENDING money = null output,
  @ISCONFIRMED bit = null output
)
as
    set nocount on;

    -- be sure to set this, in case the select returns no rows
    set @DATALOADED = 0;
  set @NEEDSUPDATEFORM = 1;

  declare @LASTNAME_NEW nvarchar(200);
  declare @LASTNAME_VALUE nvarchar(200);

  declare @FIRSTNAME_NEW nvarchar(200);
  declare @FIRSTNAME_VALUE nvarchar(200);

  declare @MIDDLENAME_NEW nvarchar(200); 
  declare @MIDDLENAME_VALUE nvarchar(200);

  declare @TITLECODEID_NEW uniqueidentifier;
  declare @TITLECODEID_VALUE uniqueidentifier;
  declare @TITLE2CODEID_VALUE uniqueidentifier;

  declare @SUFFIXCODEID_NEW uniqueidentifier;
  declare @SUFFIXCODEID_VALUE uniqueidentifier;
  declare @SUFFIX2CODEID_VALUE uniqueidentifier;

  declare @BIRTHDATE_NEW dbo.UDT_FUZZYDATE;
  declare @BIRTHDATE_VALUE dbo.UDT_FUZZYDATE;

  declare @MARITALSTATUSCODEID_NEW uniqueidentifier;
  declare @MARITALSTATUSCODEID_VALUE uniqueidentifier;

  declare @DISCRETIONARYSPENDING_NEW money;
  declare @DISCRETIONARYSPENDING_VALUE money;

  declare @HHINCOMECODEID_NEW uniqueidentifier;
  declare @HHINCOME_NEW nvarchar(200);
  declare @HHINCOME_VALUE nvarchar(200);

  declare @MOSAIC_NEW nvarchar(200);
  declare @MOSAIC_VALUE nvarchar(200);

  declare @HASSPOUSE bit;

  declare @ISSPOUSEMATCHCODE bit;

    set @HASSPOUSE = 0

    declare @CHANGEAGENTID uniqueidentifier = null;
    exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output

  select
    @CONSTITUENTID = C.ID,

    @LASTNAME_NEW = D.LASTNAME,
    @FIRSTNAME_NEW = left(D.FIRSTNAME, 50),
    @MIDDLENAME_NEW = left(D.MIDDLENAME, 50),
    @SUFFIXCODEID_NEW = D.SUFFIXCODEID,
    @TITLECODEID_NEW = D.TITLECODEID,
    @BIRTHDATE_NEW = D.BIRTHDATE,
    @MARITALSTATUSCODEID_NEW = D.MARITALSTATUSCODEID,
    @DISCRETIONARYSPENDING_NEW = D.DISCRETIONARY_SPEND,
    @HHINCOMECODEID_NEW = D.HOUSEHOLD_INCOMECODEID,    
    @MOSAIC_NEW = D.HOUSEHOLD_MOSAIC,
    @ISCONFIRMED = D.CONFIRMED,
    @ISSPOUSEMATCHCODE = case when D.MC like 'S%' then 1 else 0 end,

    @LASTNAME_VALUE = C.KEYNAME,
    @FIRSTNAME_VALUE = C.FIRSTNAME,
    @MIDDLENAME_VALUE = C.MIDDLENAME,
    @SUFFIXCODEID_VALUE = C.SUFFIXCODEID,
    @SUFFIX2CODEID_VALUE = C.SUFFIX2CODEID,
    @TITLECODEID_VALUE = C.TITLECODEID,
    @TITLE2CODEID_VALUE = C.TITLE2CODEID,
    @BIRTHDATE_VALUE = C.BIRTHDATE,
    @MARITALSTATUSCODEID_VALUE = C.MARITALSTATUSCODEID

  from
    WPBIOGRAPHICALDEMOGRAPHIC as D
  left join
    CONSTITUENT C on C.ID = D.WEALTHID
  where @ID = D.ID;

  if exists(select ID from RELATIONSHIP where @CONSTITUENTID = RELATIONSHIPCONSTITUENTID and ISSPOUSE = 1)
    set @HASSPOUSE = 1

  select 
    @HHINCOME_NEW = DESCRIPTION 
  from 
    HOUSEHOLDINCOMEESTIMATECODE 
  where 
    @HHINCOMECODEID_NEW = ID 

  DECLARE @DEMOGRAPHICMODELS TABLE
      CATEGORY nvarchar(200), 
      STRINGVALUE nvarchar(200),
      CURRENCYVALUE money 
  )

  insert into @DEMOGRAPHICMODELS (
      CATEGORY, 
      STRINGVALUE, 
      CURRENCYVALUE
  )
  select 
      CATEGORY,
      STRINGVALUE,
      CURRENCYVALUE
  from 
      dbo.UFN_ATTRIBUTE_GETATTRIBUTELIST('Model Scores and Ratings', @CONSTITUENTID, @CHANGEAGENTID)

  select
      @DISCRETIONARYSPENDING_VALUE = CURRENCYVALUE
  from @DEMOGRAPHICMODELS
  where CATEGORY = 'Discretionary spending estimate'

  select
      @HHINCOME_VALUE = STRINGVALUE
  from @DEMOGRAPHICMODELS
  where CATEGORY = 'Household income estimate'

  select
      @MOSAIC_VALUE = STRINGVALUE
  from @DEMOGRAPHICMODELS
  where CATEGORY = 'Household Mosaic'

  if 
  (
    @ISSPOUSEMATCHCODE = 0
    and 
    (
      (@LASTNAME_NEW <> @LASTNAME_VALUE and @LASTNAME_VALUE <> '' and @LASTNAME_NEW <> '')
      or (@FIRSTNAME_NEW <> @FIRSTNAME_VALUE and @FIRSTNAME_VALUE <> '' and @FIRSTNAME_NEW <> '')
      or (@MIDDLENAME_NEW <> @MIDDLENAME_VALUE and @MIDDLENAME_VALUE <> '' and @MIDDLENAME_NEW <> '')
      or (@TITLECODEID_NEW <> @TITLECODEID_VALUE and (@TITLE2CODEID_VALUE is null or @TITLECODEID_NEW <> @TITLE2CODEID_VALUE) and @TITLECODEID_VALUE is not null and @TITLECODEID_NEW is not null)
      or (@SUFFIXCODEID_NEW <> @SUFFIXCODEID_VALUE and (@SUFFIX2CODEID_VALUE is null or @SUFFIXCODEID_NEW <> @SUFFIX2CODEID_VALUE) and @SUFFIXCODEID_VALUE is not null and @SUFFIXCODEID_NEW is not null)
      or (@BIRTHDATE_NEW <> @BIRTHDATE_VALUE and @BIRTHDATE_VALUE <> '00000000' and @BIRTHDATE_NEW <> '00000000')
      or (@MARITALSTATUSCODEID_NEW <> @MARITALSTATUSCODEID_VALUE and @MARITALSTATUSCODEID_VALUE is not null and @MARITALSTATUSCODEID_NEW is not null)
      or (@HASSPOUSE = 0 and exists(Select 1 from WPBIOGRAPHICALHHMEMBER where WPBIOGRAPHICALDEMOGRAPHICID = @ID))
    )
  )
  or (@DISCRETIONARYSPENDING_NEW <> @DISCRETIONARYSPENDING_VALUE and @DISCRETIONARYSPENDING_VALUE <> '' and @DISCRETIONARYSPENDING_NEW <> '')
  or (@HHINCOME_NEW <> @HHINCOME_VALUE and @HHINCOME_VALUE <> '' and @HHINCOME_NEW <> '')
  or (@MOSAIC_NEW <> @MOSAIC_VALUE and @MOSAIC_VALUE <> '' and @MOSAIC_NEW <> '')

  begin
      --we want to show dataform
      set @DATALOADED = 1;
    set @NEEDSUPDATEFORM = 1;
  end else begin
      --do not want to show dataform
      set @DATALOADED = 1;
    set @NEEDSUPDATEFORM = 0;

    set @MOSAIC = case when @MOSAIC_VALUE <> '' then '' else @MOSAIC_NEW end;
    set @HHINCOMECODEID = case when  @HHINCOME_VALUE <> '' then null else @HHINCOMECODEID_NEW end;
    set @DISCRETIONARYSPENDING = case when @DISCRETIONARYSPENDING_VALUE <> '' then '' else @DISCRETIONARYSPENDING_NEW end;
  end
    return 0;