1
resposta

calcular valor total do pedido como desconto

Poderiam dar uma luz? Tentando calcular o valor total subtraindo o desconto, queria fazer com stream, mas estou apanhando.

public class Pedido {
   @EqualsAndHashCode.Include
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
        private BigDecimal subtotal;
    private BigDecimal taxaFrete;
    private BigDecimal valorTotal;
    @Enumerated(EnumType.STRING)
    private StatusPedido status = StatusPedido.CRIADO;
    
    @CreationTimestamp
    private OffsetDateTime dataCriacao;

    private OffsetDateTime dataConfirmacao;
    private OffsetDateTime dataCancelamento;
    private OffsetDateTime dataEntrega;




    @JsonIgnoreProperties
    @OneToMany(mappedBy = "pedido", cascade = CascadeType.ALL)
    private List<ItemPedido> itens = new ArrayList<>();

    public void calcularValorTotal() {
        getItens().forEach(ItemPedido::calcularPrecoTotal);
        
        this.subtotal = getItens().stream()
            .map(item -> item.getPrecoTotal())
            .reduce(BigDecimal.ZERO, BigDecimal::add);
        
    //	this.valorTotal = this.subtotal.add(this.taxaFrete);
    }

 public void calcularDesconto(){

     getItens().stream().forEach(item->item.setDesconto(new BigDecimal(String.valueOf(item.getPrecoUnitario().multiply(BigDecimal.valueOf(0.10))))));
1 resposta

Oii, Emerson! Tudo bem?

No código você já utilizando streams para calcular o subtotal do pedido. Então, como sugestão, recomendo que para calcular o valor total subtraindo o desconto, você pode fazer por exemplo:

  • Crie uma variável chamada descontoTotal e inicialize-a com zero.
  • Utilize o método forEach da stream dos itens para percorrer cada item do pedido.
  • Dentro do forEach, atualize o valor do desconto total somando o desconto de cada item.
  • Após o forEach, subtraia o descontoTotal do subtotal para obter o valor total com desconto.

Espero que as sugestões te ajude. Continue interagindo no fórum compartilhando suas dúvidas, projetos e feedback.

Bons estudos, Emerson!