USP_GLOBALCHANGE_CONSTITUENTDATASTANDARDIZATION

Parameters

Parameter Parameter Type Mode Description
@CHANGEAGENTID uniqueidentifier IN
@ASOF datetime IN
@IDSETREGISTERID uniqueidentifier IN
@NUMBERADDED int INOUT
@NUMBEREDITED int INOUT
@NUMBERDELETED int INOUT

Definition

Copy


CREATE procedure dbo.USP_GLOBALCHANGE_CONSTITUENTDATASTANDARDIZATION
(
    @CHANGEAGENTID uniqueidentifier = null,
    @ASOF as datetime = null,    
  @IDSETREGISTERID uniqueidentifier,
    @NUMBERADDED int = 0 output,
    @NUMBEREDITED int = 0 output,
    @NUMBERDELETED int = 0 output  
)
as            
        set nocount off;

    declare @CURRENTDATE datetime, @SHOULDCAPITALIZE bit = 0, @SHOULDTRANSLATE bit = 0;
    set @CURRENTDATE = getdate();
    set @NUMBERADDED = 0;
    set @NUMBEREDITED = 0;
    set @NUMBERDELETED = 0;   

  select @SHOULDCAPITALIZE = FIELDCAPITALIZATIONENABLED, @SHOULDTRANSLATE = ADDRESSSTANDARDIZATIONENABLED from dbo.CONSTITUENTBUSINESSRULESSETTINGS;

    if @CHANGEAGENTID is null
        exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

    begin try
      -- Capitalize and translate

    if @SHOULDCAPITALIZE = 1 and @SHOULDTRANSLATE = 1
      begin
        update DONORS set 
              KEYNAME = CAPITALIZE.LASTNAME,
              FIRSTNAME = CAPITALIZE.FIRSTNAME,
              MIDDLENAME = CAPITALIZE.MIDDLENAME,
              MAIDENNAME = CAPITALIZE.MAIDENNAME,
              NICKNAME = CAPITALIZE.NICKNAME,
              DATECHANGED = @CURRENTDATE,
              CHANGEDBYID = @CHANGEAGENTID
        from dbo.CONSTITUENT as DONORS     
        inner join dbo.UFN_IDSETREADER_GETRESULTS(@IDSETREGISTERID) IDSET on DONORS.ID = IDSET.ID
        cross apply dbo.UFN_CONSTITUENT_CAPITALIZENAMES(DONORS.KEYNAME,DONORS.FIRSTNAME,DONORS.MIDDLENAME,DONORS.MAIDENNAME,DONORS.NICKNAME) as CAPITALIZE
        set @NUMBEREDITED = @@ROWCOUNT;    

        update ALIAS set 
              KEYNAME = CAPITALIZE.LASTNAME,
              FIRSTNAME = CAPITALIZE.FIRSTNAME,
              MIDDLENAME = CAPITALIZE.MIDDLENAME,             
              DATECHANGED = @CURRENTDATE,
              CHANGEDBYID = @CHANGEAGENTID
        from dbo.ALIAS   
        inner join dbo.UFN_IDSETREADER_GETRESULTS(@IDSETREGISTERID) IDSET on ALIAS.CONSTITUENTID = IDSET.ID
        cross apply dbo.UFN_CONSTITUENT_CAPITALIZENAMES(ALIAS.KEYNAME,ALIAS.FIRSTNAME,ALIAS.MIDDLENAME, null, null) as CAPITALIZE
        set @NUMBEREDITED = @@ROWCOUNT;    

            update DONORADDRESS set 
                      DONORADDRESS.CITY = STANDARDIZE.LASTNAME,
                      DONORADDRESS.ADDRESSBLOCK = dbo.UFN_ADDRESS_STANDARDIZE(STANDARDIZE.FIRSTNAME,DONORADDRESS.COUNTRYID),
                      DATECHANGED = @CURRENTDATE,
                      CHANGEDBYID = @CHANGEAGENTID
          from dbo.ADDRESS as DONORADDRESS
          inner join dbo.UFN_IDSETREADER_GETRESULTS(@IDSETREGISTERID) IDSET on DONORADDRESS.CONSTITUENTID = IDSET.ID
          cross apply dbo.UFN_CONSTITUENT_CAPITALIZENAMES(DONORADDRESS.CITY,DONORADDRESS.ADDRESSBLOCK,null,null,null) as STANDARDIZE         
    end

    -- Only capitalize  

      else if @SHOULDCAPITALIZE = 1 and @SHOULDTRANSLATE = 0   
        begin
        update DONORS set 
              KEYNAME = CAPITALIZE.LASTNAME,
              FIRSTNAME = CAPITALIZE.FIRSTNAME,
              MIDDLENAME = CAPITALIZE.MIDDLENAME,
              MAIDENNAME = CAPITALIZE.MAIDENNAME,
              NICKNAME = CAPITALIZE.NICKNAME,
              DATECHANGED = @CURRENTDATE,
              CHANGEDBYID = @CHANGEAGENTID
        from dbo.CONSTITUENT as DONORS     
        inner join dbo.UFN_IDSETREADER_GETRESULTS(@IDSETREGISTERID) IDSET on DONORS.ID = IDSET.ID
        cross apply dbo.UFN_CONSTITUENT_CAPITALIZENAMES(DONORS.KEYNAME,DONORS.FIRSTNAME,DONORS.MIDDLENAME,DONORS.MAIDENNAME,DONORS.NICKNAME) as CAPITALIZE
        set @NUMBEREDITED = @@ROWCOUNT;    

        update ALIAS set 
              KEYNAME = CAPITALIZE.LASTNAME,
              FIRSTNAME = CAPITALIZE.FIRSTNAME,
              MIDDLENAME = CAPITALIZE.MIDDLENAME,             
              DATECHANGED = @CURRENTDATE,
              CHANGEDBYID = @CHANGEAGENTID
        from dbo.ALIAS   
        inner join dbo.UFN_IDSETREADER_GETRESULTS(@IDSETREGISTERID) IDSET on ALIAS.CONSTITUENTID = IDSET.ID
        cross apply dbo.UFN_CONSTITUENT_CAPITALIZENAMES(ALIAS.KEYNAME,ALIAS.FIRSTNAME,ALIAS.MIDDLENAME, null, null) as CAPITALIZE
        set @NUMBEREDITED = @@ROWCOUNT;            

            update DONORADDRESS set 
                      DONORADDRESS.CITY = STANDARDIZE.LASTNAME,
                      DONORADDRESS.ADDRESSBLOCK = STANDARDIZE.FIRSTNAME,
                      DATECHANGED = @CURRENTDATE,
                      CHANGEDBYID = @CHANGEAGENTID
            from dbo.ADDRESS as DONORADDRESS
            inner join dbo.UFN_IDSETREADER_GETRESULTS(@IDSETREGISTERID) IDSET on DONORADDRESS.CONSTITUENTID = IDSET.ID
            cross apply dbo.UFN_CONSTITUENT_CAPITALIZENAMES(DONORADDRESS.CITY,DONORADDRESS.ADDRESSBLOCK,null,null,null) as STANDARDIZE                     
        end

      -- Translate only

      else if @SHOULDCAPITALIZE = 0 and @SHOULDTRANSLATE = 1
          begin
            update DONORADDRESS set 
                  DONORADDRESS.ADDRESSBLOCK = dbo.UFN_ADDRESS_STANDARDIZE(DONORADDRESS.ADDRESSBLOCK,DONORADDRESS.COUNTRYID),
                  DATECHANGED = @CURRENTDATE,
                  CHANGEDBYID = @CHANGEAGENTID
            from dbo.ADDRESS as DONORADDRESS
            inner join dbo.UFN_IDSETREADER_GETRESULTS(@IDSETREGISTERID) IDSET on DONORADDRESS.CONSTITUENTID = IDSET.ID

            select @NUMBEREDITED = count(ID) from dbo.UFN_IDSETREADER_GETRESULTS(@IDSETREGISTERID);    
          end    
    end try

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