UFN_MKTFINDERNUMBER_CHECKDIGIT_MOD10

Create a check digit for a finder number using Mod 10.

Return

Return Type
bigint

Parameters

Parameter Parameter Type Mode Description
@FINDERNUMBER bigint IN

Definition

Copy


CREATE function dbo.[UFN_MKTFINDERNUMBER_CHECKDIGIT_MOD10]
(
  @FINDERNUMBER bigint
)
returns bigint
as
begin
  declare @STR_FN nvarchar(21);
  declare @TOTAL int;
  declare @DIGIT int;
  declare @ODD bit;
  declare @INDEX int;

  set @TOTAL = 0;
  set @ODD = 1;
  set @STR_FN = convert(nvarchar(21),@FINDERNUMBER);
  set @INDEX = len(@STR_FN);

  while @INDEX > 0
  begin
    if @ODD = 1
    begin
      set @DIGIT = convert(int,substring(@STR_FN,@INDEX,1)) * 2;  
      set @TOTAL += case when @DIGIT > 9 then @DIGIT - 9 else @DIGIT end;    
      set @ODD = 0;    
    end
    else
    begin
      set @TOTAL += convert(int,substring(@STR_FN,@INDEX,1));            
      set @ODD = 1;
    end
    set @INDEX -= 1;
  end 

  select @TOTAL = case @TOTAL%10 when 0 then 0 else 10 - @TOTAL%10 end;

  return (@FINDERNUMBER * 10) + @TOTAL;
end;