** RESOLVIDO ** Codigo de Autorizacao

(thiago_itp) #1

Boa tarde, minha duvida é a seguinte
Tenho um formulario de autorizacao de procedimento
nesse preciso d um codigo q sera gerado de acordo com formato abaixo

x x x x - x x x / x x x x - x x x x x
numero aleatorio - mes / ano - codigo do cliente

como faço isso, scriptcase tem alguma funcionalidade.
ou preciso programar (php/java?) ?

(system) #2

Olá Thiago!

Acho que vc terá que programar isso em php mesmo… dá pra fazer algo parecido com isso:

// 1ª parte - gerar o número aleatório
$num_min = 1;            // menor número que poderá ser gerado
$num_max = 9999;         // maior número que poderá ser gerado
$num_qtde = 4;          // quantidade de dígitos desejados no campo gerado

$num_rand = rand($num_min, $num_max);  // será gerado um número entre o mínimo e o máximo definido
$parte1 = str_pad($num_rand, $num_qtde, "0", STR_PAD_LEFT);  // completa com zeros à esquerda, de acordo com qtde de digitos definida


// 2ª parte - Pegar mês/ano
$parte2 = date('m/Y');

// 3ª parte - código do cliente
$parte3 = {cli_id};

{codigo} = $parte1."-".$parte2."-".$parte3;

Supondo que o código do cliente seja “1”, isso irá resultar em algo como:
5437-10/2009-1
0029-10/2009-1
9188-10/2009-1

Espero ter ajudado.

Att.
Robson

(Rodrigo Lins) #3

Bom dia,

De fato terá que fazer em PHP como o nosso companheiro Robson lhe explicou… Agora seria um número aleatório ou sequencial?

Sendo sequencial poderia utilizar algo como o SELECT MAX para pegar o último código inserido no banco de dados e incrementar…

Exemplo:

sc_lookup(ds_sequencia, “SELECT max(nomecampoCodigo) FROM minhatabela”);

$incremento = {ds_sequencia[0][0]} + 1;

{meu_campo_do_form} = $incremento;

OBS: Se o código em questão, será de fato todo criado no evento (não vai ser pego de outro local) teriamos que utilizar a função substr do PHP para pegar somente parte da string. Algo como tem embaixo:

$valor_que_preciso = substr(‘abcdef’, 0, 4);

Rodrigo Lins.

(thiago_itp) #4

Resolvido - Obrigado!

Ajuda de grande valia. Sim, codigo aleatório mesmo…

(system) #5

Olá Thiago!

Que bom que deu certo! acho que a idéia do Rodrigo foi prevenir que sejam gerado códigos idênticos, o que (hipoteticamente) pode ocorrer neste exemplo (mesmo cliente durante o mesmo mês)…

É meio dificil, mas dependendo do volume de códigos gerados e da qtde de digitos ($parte1), pode acontecer… Se quiser evitar isso talvez seja preciso armazenar este código no banco e conferir a cada geração, ou adicionar minutos e segundos na geração do código…

Att.
Robson