Introdução
Se você está trabalhando em um projeto que envolve armazém ou estoque, importa muito a gestão da entrada e saída de produtos. Afinal, o controle desses dados pode afetar diretamente a lucratividade da sua empresa. Nesse artigo, vamos aprender como criar um sistema de gerenciamento de saída de produtos utilizando o framework Symfony.
Entendendo o problema
Antes de dar início ao desenvolvimento, precisamos entender a problemática que queremos resolver. Em um sistema de gerenciamento de estoque, é importante registrar cada saída de produto e a sua respectiva data. Dessa forma, pode-se ter um histórico de como está sendo a saída de produtos em um determinado período. Além disso, com esses dados em mãos, é possível fazer projeções e trabalhar para otimizar a gestão dos estoques.
Desenvolvendo o sistema
Para desenvolvermos o sistema, utilizaremos o Symfony 4.4 e o Doctrine ORM. O primeiro passo é criar uma entidade que será responsável por registrar as informações das saídas de produtos. Vamos criar uma entidade chamada “ProdutoSaida” com os seguintes campos: id, produto_id, quantidade e data_saida.
Crie um comando no Symfony para criar automaticamente as tabelas no banco de dados. Execute o comando através do terminal:
php bin/console doctrine:schema:update --force
Em seguida, criaremos um formulário para que seja possível preencher esses dados no sistema.
Criando o formulário
Para criar o formulário, vamos utilizar o pacote Symfony Forms. No arquivo "src/Form/ProdutoSaidaType.php", vamos criar o seguinte código:
add('produto_id', IntegerType::class)
->add('quantidade', IntegerType::class)
->add('data_saida', DateTimeType::class)
->add('salvar', SubmitType::class)
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => ProdutoSaida::class,
]);
}
}
Fazendo o registro das informações
Com isso, já temos a entidade e formulário criados. Agora, vamos criar a funcionalidade para que essas informações sejam registradas no banco de dados.
No arquivo "src/Controller/ProdutoSaidaController.php", vamos criar a seguinte função:
createForm(ProdutoSaidaType::class, $produtoSaida);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$entityManager->persist($produtoSaida);
$entityManager->flush();
}
return $this->render('produto/saida.html.twig', [
'form' => $form->createView(),
]);
}
}
Conclusão
Pronto, agora já temos toda a estrutura pronta para gerenciar a saída de produtos em nosso sistema. É importante lembrar que nosso objetivo foi criar um exemplo simples de como trabalhar com registros de saída de produtos e que existem diversas outras implementações que podem ser feitas para otimizar ainda mais o processo.