Cálculos dos 3 dígitos verificadores do id padrão tamanho 18 do Sales Force

image_pdfimage_print

Segue abaixo o núcleo da lógica de cálculo de id padrão tamanho 15 do Sales Force para padrão de tamanho 18.

//Aceita id do Sales Force padrão 15 ou 18 de tamanho e retorna sempre o padrão 18
function padrao_id_18_sales_force( $id ){
    if(strlen($id) == 18){
        return $id;
    }
    $suffix = '';
    for ($i = 0; $i < 3; $i++) {
        $flags = 0;
        for ($j = 0; $j < 5; $j++) {
            $c = substr($id, $i * 5 + $j,1);
                //Only add to flags if c is an uppercase letter: 
                if( strtoupper($c) == $c && $c >= 'A' && $c <= 'Z' ){
                    $flags = $flags + (1 << $j);
                }
        }
        $suffix = $suffix . substr('ABCDEFGHIJKLMNOPQRSTUVWXYZ012345',$flags, 1);
    }
    return $id.$suffix;
}
Gostou? Tire um minutinho e dê sua contribuição para Drall Dev Community no Patreon!