UFN_MKTFINDERNUMBER_VALIDATE_MOD10

Validate a finder number using MOD 10.

Return

Return Type
bit

Parameters

Parameter Parameter Type Mode Description
@FINDERNUMBER bigint IN

Definition

Copy


create function dbo.[UFN_MKTFINDERNUMBER_VALIDATE_MOD10]
(
  @FINDERNUMBER bigint
)
returns bit
as
begin
  declare @STR_FN nvarchar(21);
  declare @TOTAL int;
  declare @DIGIT int;
  declare @EVEN bit;
  declare @INDEX int;

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

  if exists (select 1 from dbo.[MKTFINDERNUMBER] where [CHECKDIGIT] = 1 and [LAST_FINDERNUMBER] < @FINDERNUMBER)
  begin
    while @INDEX > 0
    begin
      if @EVEN = 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 @EVEN = 0;    
      end
      else
      begin
        set @TOTAL += convert(int,substring(@STR_FN,@INDEX,1));            
        set @EVEN = 1;
      end

      set @INDEX -= 1;
    end 
  end

  return case @TOTAL%10 when 0 then 1 else 0 end;
end;