Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Melhoria no codigo.

Opa, tenho o seguinte problema, quando fazia uma compra pegava o valor da parcela e dividia pela quantidade da parcela, ai tive o problema como por exemplo, uma compra dar 100 reais e divir por 3, ai as parcelas ficava 33 reais e 33 centavos, de 3 x, correto? Ai pensei em arrendondar esse valor, ai fiz.

public void calcularParcela() {
        for (int i = 0; i <= parcelaCompra.getQuantidadeParcela(); i++) {
            this.parcelaCompra.setValorParcela((double) Math.round(this.compra
                    .getPrecoPagar() / i));
        }
    }

Aqui usei a função Math.round que arrendonda o valor, ai envez de 33.33 vou ter algo como 3 x para 33.00, arredondo minhas parcelas, ai fazendo assim var dar 99 reais, irá passar um real, tá dai peguei a ultima parcela e somei mais 1, ficando assim.

public void adicionarParcelas() {
        if (this.parcelaCompra.getQuantidadeParcela() < 0) {
            Mensagem.mensagemError("Quantidade da parcela não pode ser menor que 0");
        } else if (this.parcelaCompra.getQuantidadeParcela() > 12) {
            Mensagem.mensagemError("Quantidade da parcela não pode ser maior que 12");
        } else if (this.compra.getPrecoPago() > this.compra.getPrecoTotal()) {
            Mensagem.mensagemError("Quantidade paga maior que o valor da compra, verifique com atenção");
        } else if ((this.compraPagamento.getQuantidade() == this.compra
                .getPrecoTotal())
                && (this.parcelaCompra.getQuantidadeParcela() > 0)) {
            Mensagem.mensagemError("Compra a vistá não pode ter parcelas diferente de 0");
        } else if (this.parcelaCompra.getQuantidadeParcela() == 0) {
            System.out.println("Parcela paga");
            this.parcelaCompra.setDataFinal(LocalDate.now());
            this.parcelaCompra.setStatusCompra(StatusCompra.PAGO);
            parcelasCompras.add(parcelaCompra);
        } else {
            System.out.println("Parcela pendente");
            LocalDate dataHoje = LocalDate.now();
            for (int i = 1; i <= parcelaCompra.getQuantidadeParcela(); i++) {
                ParcelaCompra pc = new ParcelaCompra();
                dataHoje = dataHoje.plusMonths(1);
                pc.setDataFinal(dataHoje);
                pc.setDiasParcela(parcelaCompra.getDiasParcela());
                pc.setQuantidadeParcela(parcelaCompra.getQuantidadeParcela());
                pc.setStatusCompra(StatusCompra.PENDENTE);
                pc.setValorParcela(parcelaCompra.getValorParcela());
                parcelasCompras.add(pc);
            }
////// AQUI EU FIZ para ascrecentar um real na minha parcela
            if (!compra.getPrecoPagar().equals(
                    this.parcelaCompra.getValorParcela()
                            * this.parcelaCompra.getQuantidadeParcela())) {
                for (int i = 1; i <= parcelasCompras.size(); i++) {
                    System.out.println(i);
                    parcelasCompras.get(parcelasCompras.size() - 1)
                            .setValorParcela(
                                    parcelaCompra.getValorParcela() + 1);
                }
            } else {
                System.out.println("Caiu fora");
            }
        }
    }

Fazendo assim, eu resolvi uma conta com o valor de 33.33, mais agora ao fazer uma outra conta, se tiver o valor da parcela acima de 33.50 ele irá me arrendondar para 34 reais, a função math ta sendo uma boa escolha aqui? Oque fazer para arrumar essas parcelas com seus valores correto, estou usando o Double, e passando para arrendondar para 34 reais o valor o valor irá passar do valor total da compras e minhas parcelas irão dar errado o valor e irei perder dinheiro assim kk. HELPPPP

1 resposta
solução!

Resolvido já