Pessoal eu fiz um código para gerar códigos: de AA0001A01 até ZZ9999Z99
Vou disponibilizar aqui para qualquer que decidir utilizar. Talvez até dê para melhorar o código, mas este funciona direitinho.
$check_sql = "SELECT CHA001_ID"
. " FROM cha001 ORDER BY CHA001_ID DESC LIMIT 1";
sc_lookup(rs, $check_sql);
if (isset({rs[0][0]}))
{
$cha = {rs[0][0]};
// Array de Letras
$alfa = array("A", "B", "C", "D", "E",
"F", "G", "H", "I", "J",
"K", "L", "M", "N", "O",
"P", "Q", "R", "S", "T",
"U", "V", "W", "X", "Y","Z"
);
// Variável de teste, descomente para testar o código.
//$cha = "BZ9999Z99";
// Tamanho array de letras
$count = count($alfa);
// Validações Final do código
$final = $cha[7].$cha[8];
$final = (int) $final;
$final = $final + 1;
if ($final < 10) {
$final = 0 . $final;
}
else if($final == 100) {
$final = "00";
}
// Validações Meio do código
$meio = $cha[2].$cha[3].$cha[4].$cha[5];
$meio = (int) $meio;
if ($meio < 10) {
$meio = "000".$meio;
}
elseif ($meio < 100) {
$meio = "00".$meio;
}
elseif ($meio < 1000) {
$meio = "0".$meio;
}
// Verifica Letra 3
for ($i=0; $i<$count; $i++) {
if ($alfa[$i] == $cha[6]) {
$alfa3 = $alfa[$i];
$alfa2 = $cha[1];
$alfa1 = $cha[0];
if ($final == "00" && $i < 25) {
$alfa3 = $alfa[$i+1];
}
else if ($i == 25 && $final == "00") {
$alfa3 = $alfa[0];
$meio = $meio+1;
if ($meio < 10) {
$meio = "000".$meio;
}
elseif ($meio < 100) {
$meio = "00".$meio;
}
elseif ($meio < 1000) {
$meio = "0".$meio;
}
}
if ($i == 25 && $final == "00" && $meio == 10000) {
$meio = "0001";
// Verifica Letra 2
for ($j=0; $j<$count; $j++) {
if ($alfa[$j] == $cha[1]) {
if ($j == 25) {
$alfa2 = $alfa[0];
// Verifica Letra 1
for ($k=0; $k<$count; $k++) {
if ($alfa[$k] == $cha[0]) {
$alfa1 = $alfa[$k+1];
}
}
}
else {
$alfa2 = $alfa[$j+1];
}
}
}
}
}
}
// Código pronto
$chamaCode = $alfa1.$alfa2.$meio.$alfa3.$final;
sc_set_global($chamaCode);
// Visualização de teste, descomente para visualizar o teste.
// echo $chamaCode;
}
else
{
$chamaCode = "AA0001A01";
sc_set_global($chamaCode);
}
Abração galera.
Robert Berbert