Decrease items in shopping cart (Java Web)

Asked

Viewed 50 times

0

Good afternoon, I am creating a shopping cart, the add item part is working perfectly but the decrease item part is not working, follow the code.

    public void adicionar(Produto produto) {

        int posicaoEncontrada = -1;

        for (int pos = 0; pos < itens.size() && posicaoEncontrada < 0; pos++) {
            Item itemTemp = itens.get(pos);

            if (itemTemp.getProduto().equals(produto)) {
                posicaoEncontrada = pos;
            }
        }

        Item item = new Item();
        item.setProduto(produto);

        if (posicaoEncontrada < 0) {
            item.setQuantidade(1);
            item.setValor_parceial(produto.getPreco());
            itens.add(item);
        } else {

            Item itemTemp = itens.get(posicaoEncontrada);
            item.setQuantidade(itemTemp.getQuantidade() + 1);
            item.setValor_parceial(produto.getPreco().multiply(new BigDecimal(item.getQuantidade())));
            itens.set(posicaoEncontrada, item);

        }

        vendaCadastro.setValor_total(vendaCadastro.getValor_total().add(produto.getPreco()));

    }

    public void diminuir(Produto produto) {

        int posicaoEncontrada = -1;

        for (int pos = 0; pos < itens.size() && posicaoEncontrada < 0; pos++) {
            Item itemTemp = itens.get(pos);

            if (itemTemp.getProduto().equals(produto)) {
                posicaoEncontrada = pos;
            }
        }

        Item item = new Item();
        item.setProduto(produto);

        if (posicaoEncontrada > 0) {
            item.setQuantidade(1);
            item.setValor_parceial(produto.getPreco());
            itens.remove(item);
        } else {

            Item itemTemp = itens.get(posicaoEncontrada);
            item.setQuantidade(itemTemp.getQuantidade() -1 );
            item.setValor_parceial(produto.getPreco().multiply(new BigDecimal(item.getQuantidade())));
            itens.set(posicaoEncontrada, item);

        }

        vendaCadastro.setValor_total(vendaCadastro.getValor_total().subtract(produto.getPreco()));

    }

inserir a descrição da imagem aqui Does anyone know where the error in the method decreases ?

  • The line if (posicaoEncontrada > 0) { of function diminuir shouldn’t be if (posicaoEncontrada < 0) { ? The signal is switched with respect to function aumentar

1 answer

0

Solved, now the problem is in the total value that ends up being negative

public void decrease(Product) {

int posicaoEncontrada = -1;

for (int pos = 0; pos < itens.size() && posicaoEncontrada < 0; pos++) {
    Item itemTemp = itens.get(pos);

    if (itemTemp.getProduto().equals(produto)) {
        posicaoEncontrada = pos;
    }
}

Item item = new Item();
item.setProduto(produto);

if (posicaoEncontrada < 0) {
    item.setQuantidade(1);
    item.setValor_parceial(produto.getPreco());
    itens.add(item);
} else {
    Item itemTemp = itens.get(posicaoEncontrada);
    item.setQuantidade(itemTemp.getQuantidade() - 1);
    item.setValor_parceial(produto.getPreco().multiply(new BigDecimal(item.getQuantidade())));
    itens.set(posicaoEncontrada, item);
    if(item.getQuantidade() == 0){
    itens.remove(posicaoEncontrada);

    }


vendaCadastro.setValor_total(vendaCadastro.getValor_total().subtract(produto.getPreco()));

}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.