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;
}




