Jump to content

Laravel | Números sequenciais por ano


klasss

Recommended Posts

Olá a todos, 

Estou a precisar de uma pequena ajuda para tentar criar o seguinte: 

Estou a criar uma pequena plataforma que vai gerar um processo cada um novo registo com um número por ordem sequencial. 
A minha ideia seria esse número ser criado assim que é gravado o processo mas quando fossem criados processos no ano 2024 a sequencia voltasse ao valor 0. 

Não estou a conseguir ter uma ideia de criar desta forma. 

Obrigado! 

Link to comment
Share on other sites

Viva,

O teu objetivo é um pouco vago e sem contexto, podes acrescentar mais algum detalhe? Alguma coisa que já esteja feita?

Existe muitos modos de fazer isso, podes guardar numa tabela de números gerados, e quando chegar ao 2024 no código fazes o reset para zero.

Na tabela podes ainda criar um trigger para fazer isso.

No limite podes até gravar essa informação num ficheiro de texto e gerir o próximo numero ou o reset do número.

 

São apenas ideias sem pensar

Feito é melhor que perfeito

Link to comment
Share on other sites

Em 07/06/2023 às 23:33, Ivo Vicente disse:

Viva,

O teu objetivo é um pouco vago e sem contexto, podes acrescentar mais algum detalhe? Alguma coisa que já esteja feita?

Existe muitos modos de fazer isso, podes guardar numa tabela de números gerados, e quando chegar ao 2024 no código fazes o reset para zero.

Na tabela podes ainda criar um trigger para fazer isso.

No limite podes até gravar essa informação num ficheiro de texto e gerir o próximo numero ou o reset do número.

 

São apenas ideias sem pensar

O objetivo é : 

Criar um processo com a data 08-06-2023 e ser gerado o número 1/2023; Novo processo para o mesmo dia, 2/2023. 

Imaginado que faço depois a criação de um novo processo para o dia 02-01-2024; o número sequencial anterior volta ao 1 ficando 1/2024. 

Link to comment
Share on other sites

@klasss

A tua questão tem pouco que ver com Laravel propriamente dito, e muito de programação pura. Diria que o ideal será definires claramente o que pretendes que a tua função faça, e depois a implementes. Sugiro um breve exercício em pseudo-código para não estares limitado pela sintaxe da linguagem.

função Gerar Número de Processo
  inputs
    ultimo_n: número do último processo gerado
    ultimo_ano: ano do último processo gerado
    ano: ano actual
  
  logica
    ...

Consegues completar a secção «lógica» com base nos inputs e na descrição que fizeste do resultado esperado?

Link to comment
Share on other sites

Em 08/06/2023 às 11:16, pwseo disse:

@klasss

A tua questão tem pouco que ver com Laravel propriamente dito, e muito de programação pura. Diria que o ideal será definires claramente o que pretendes que a tua função faça, e depois a implementes. Sugiro um breve exercício em pseudo-código para não estares limitado pela sintaxe da linguagem.

função Gerar Número de Processo
  inputs
    ultimo_n: número do último processo gerado
    ultimo_ano: ano do último processo gerado
    ano: ano actual
  
  logica
    ...

Consegues completar a secção «lógica» com base nos inputs e na descrição que fizeste do resultado esperado?

Logica assim a primeira vista : 
  SE ultimo_ano = ano 
       ultimo_n +1 

SE não descobrir o ano novo

 

Link to comment
Share on other sites

Em 08/06/2023 às 14:44, pwseo disse:

Agora, tendo em conta o que falámos, consegues facilmente escrever uma função em PHP que faça o pretendido. Experimenta.

Existem pormenores que não estão completamente correctos na solução que deste, mas tornar-se-ão evidentes no código.

Obrigado pela dica! 

Neste momento estou a guardar os dados da seguinte forma : 

Pesquiso o ultimo processo inserido. 
Na data procuro o ano do agendamento

faço a soma (+1) do ultimo processo. 

Duvida: Não seria importante eu tambem guardar apenas o ano na base de dados ? ou consigo fazer apenas isso no código? 

 

            $ultimo_processo = processo::orderby('created_at','DESC')->first();
            $data_processo = $request->data_agendamento;
            $ano_processo = date('Y', strtotime($data_processo));
            $soma_processo = $ultimo_processo+1;

            $tabela->n_processo = $ano_processo. '/' .$soma_processo;   

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.