Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Alterar lista de itens

Estou estudando com um projeto onde simulo a emissão de uma nota fiscal. Para isso tenho a classe itens que contem o produto, o valor e a quantidade, e tenho a classe nota, que possui os itens o valor total da nota, data da sua emissão e sua numeração.

O processo de salvar conseguir fazer perfeitamente. O método se encontra assim:

 public Nota salvar(NotaDTO dto) {
        Nota nota = new Nota(dto);

        if (dto.getCliente() == null) {
            throw new ValidacaoException("É necessário informar um cliente .");
        }

        if (!clienteRepository.existsById(dto.getCliente().getId())) {
            throw new ValidacaoException("O cliente informado não existe.");
        }

        Cliente cliente = clienteRepository.getReferenceById(dto.getCliente().getId());

        Random random = new Random();
        int numeroAleatorio = random.nextInt();
        nota.setNumero(numeroAleatorio);

        int ordenacao = 1;
        BigDecimal somaTotal = BigDecimal.ZERO;

        for (Itens item : dto.getItens()) {
           item.setOrdenacao(ordenacao++);

            Long valorUnitario = produtoRepository.findByValorUnitarioProduto(item.getProduto().getId());

           item.setValor_total(item.getQuantidade().multiply(BigDecimal.valueOf(valorUnitario)));
           somaTotal = somaTotal.add(item.getValor_total());

           item.setNota(nota);
        }

        nota.setValor_total(somaTotal);

        nota = repository.save(nota);

        return nota;
    }

Agora a minha dúvida acontece no método de alterar a nota fiscal. Pois eu preciso sempre verificar os itens e ver se tem atualização na quantidade do produto, se foram adicionados novos ou se foi removido algum item. Ao fim atualizar a lista.

Tentei reaproveitar o método de salvar mas ao fim esta sendo salvo novos itens e não alterando. Poderiam me dar uma luz de uma possível forma de alteração?

3 respostas
solução!

Bom dia, Natali!

Creio que para a alteração poderias criar um novo método de "alteração de notas" e reaproveitar o código do seu método salvar() incluindo uma verificação, procura, no repositório de notas com o ID da qual você está querendo atualizar. Digo isso assumindo que ao chamar esse método de alteração, você já estará passando um objeto NotaDTO existente no banco.

Existindo essa a nota, você poderia realizar as alterações necessárias e salvar a mesma.

Como eu faria no caso para remover um produto da nota? Por exemplo, minha nota fiscal possui 3 itens e agora ficará apenas com dois... como eu o removeria?

Olá Natali, não sei com foi declarado o array que armazena os seus itens, mas você poderia criar um método com o filter, exemplo:

notas = Arrays.stream(notas).filter(m -> m != itemRemover).toArray(String[]::new); //String[] se suas notas é uma array de String