[Resolvido] Diminuir itens no carrinho de compras (Java Web)

Estou criando um carrinho de compras, a parte do adicionar item esta funcionando perfeitamente mas a parte de diminuir item não esta funcionando, segue o código.

	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()));

	}


Alguem sabe aonde esta o erro no método diminuir ?

O que é não está funcionando? Não remove? não calcula o valor novo? Dá erro?

Resolvido, agora o problema é que no valor total esta dando negativo

	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.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()));
	}