Problemas com divisão com BigDecimal - Resolvido

Olá
estou tentando dividir o valor sendo vendido pelo valor de venda para saber a quantidade a ser vendida.

BigDecimal quantidade1 = preco.divide(produto.getValorVenda(), BigDecimal.ROUND_DOWN)
.setScale(3, BigDecimal.ROUND_HALF_UP);

assim ele me retorna 0 a divisão.

Já tentei assim:
BigDecimal quantidade1 = preco.divide(produto.getValorVenda(), 3, RoundingMode.HALF_UP);

mas ele me retorna muito preciso.

Me Ajudem pls!

Obrigado

@Janick_Robert Dá uma olhada no código e compara com o seu, aqui funcionou corretamente, é algo em outro ponto do código;

public class Teste {

public static void main(String[] args) {
    System.out.println(new TesteLeitura().getMsg());
}

}

public class TesteLeitura {

public TesteLeitura() {
}

public String getMsg(){
    return new TesteLeitura().calcularValor(new BigDecimal("12.30"), new TesteLeitura.Produto(new BigDecimal("3.00")));
}

private String calcularValor(BigDecimal preco, Produto produto) {
    BigDecimal quantidade1 = preco.divide(produto.getValorVenda(), BigDecimal.ROUND_DOWN).setScale(3, BigDecimal.ROUND_HALF_UP);
    return quantidade1.toString();
}

public class Produto {

    private BigDecimal valorVenda;

    public Produto(BigDecimal valorVenda) {
        this.valorVenda = valorVenda;
    }

    public BigDecimal getValorVenda() {
        return valorVenda;
    }

    public void setValorVenda(BigDecimal valorVenda) {
        this.valorVenda = valorVenda;
    }

}

}

então eu consegui resolver assim

BigDecimal quantidade1 = preco.divide(produto.getValorVenda(), 3, RoundingMode.HALF_UP);

				quantidade = quantidade1.doubleValue();