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?