O projeto consiste no desenvolvimento de um sistema de Controle de Estoque utilizando o padrão Spring MVC, Spring Boot framework, Spring Security e DB H2.
Link para o Swagger UI.
- Utilizar o BD H2 do Spring Boot;
- Todos os dados necessários para a execução e utilização do projeto deverão ser enviados junto com o código feito;
- Deverá ser utilizado o Spring Security para controle de acesso;
- 1- Deverão existir 2 perfis de usuários para o acesso as funcionalidades: OPERADOR, GERENTE.
- 2- O sistema deverá ter uma tela para permitir o cadastro e edição de produtos com os seguintes campos ( somente GERENTE ):
- Id: Deverá ser um sequencial único, mostrado somente em modo de edição sem permitir sua alteração;
- Código de barras: Código de barras do produto, sendo um campo do tipo literal. Não poderá exisitr mais de um produto com o mesmo código de barras;
- Nome: Nome do produto, sendo um campo do tipo literal;
- Quantidade mínima: Quantidade mínima do produto em estoque, sendo um campo do tipo numérico;
- Saldo inicial: Saldo inicial do produto no momento do cadastro, sendo um campo do tipo numérico;
- Não será possível sua alteração após o cadastro;
- Ao cadastrar um valor superior a 0, uma movimentação de SALDO_INICIAL deverá ser criada para o produto;
- O Saldo inicial não poderá ser inferior a quantidade mínima
- 3- O sistema deverá ter uma tela para permitir o lançamento das movimentações de estoque com os seguintes campos (GERENTE e OPERADOR):
- Produto: Campo para permitir informar/selecionar um produto previamente cadastrado;
- Tipo de Movimento: Os tipos de movimentação possíveis são: ENTRADA, SAÍDA, SALDO_INICIAL, AJUSTE_ENTRADA e AJUSTE_SAÍDA;
- Somente o GERENTE pode realizar lançamentos do tipo SALDO_INICIAL e AJUSTE;
- Deverá existir no máximo 1 lançamento do tipo SALDO_INICIAL por produto;
- O lançamento de SALDO_INICIAL somente poderá ser realizado se não existirem outros lançamentos para o produto;
- O lançamento de AJUSTE somente poderá ser realizado quando existirem outros lançamentos para o produto;
- Quantidade: Quantidade a ser movimentada no estoque.
- O sistema não poderá permitir lançamentos em que o saldo do produto se torne negativo;
- Data: Data da movimentação.
- Não poderá ter movimentação para um determinado produto anterior a sua criação;
- Motivo: Motivo da Movimentação
- Documento: Documento vinculado a movimentação, mostrar somente quando a movimentação for do tipo ENTRADA ou SAÍDA;
- 4- O sistema deverá ter uma tela para listar as movimentações de estoque com os seguintes campos:
- Filtros:
- Produto: Permitir filtrar os lançamentos por produto;
- Período: Permitir filtrar os lançamentos de um determinado período;
- Tipo de Movimento: Permitir filtrar os lançamentos de um determinado Tipo de Movimento;
- Ordenações:
- Produto
- Data
- Campos da Listagem:
- Data do Movimento
- Produto
- Tipo do Movimento
- Documento
- Motivo
- Saldo: Calculado considerando (Saldo Inicial + Entradas + Ajustes de Entrada - Saídas - Ajustes de Saída);
- Situação: Caso o produto tiver valor para o campo Quantidade Mínima, e o Saldo for inferior a ele, mostrar Inferior ao Mínimo do contrário, mostrar Ok;
- Filtros:
O repositório deverá conter os 02 projetos, o frontend
e o server
, sendo eles:
frontend
: Projeto em Angular que deve conter todas as camadas de apresentação do projeto (telas, formatações...).- A inicialização do projeto é feito pelo comando
npm install
onde será feito o download das dependências. (Obs.: Necessário ter o Angular CLI - 12.2.17^). - A execução do projeto é feita pelo comando
npm start
que rodará o projeto na porta4200
. - Todas as chamadas serão feitas para o server através da porta
8081
já configurada noproxy-config.json
. Essa configuração faz com que toda a requisição para/server/...
seja redirecionado para o server.
- A inicialização do projeto é feito pelo comando
server
: Projeto em Java - Spring Boot que deve conter todas as regras de negócio da aplicação, incluindo as regras de segurança de acesso.