estou com uma duvida na minha logica, que seria o seguinte
Possuo 2 campos: valor e desconto.
Quando informo o valor e o desconto eu já consigo atualizar os dois componetes até aqui OK.
Agora quero informar o valor com desconto e mostrar no **Total c/ Desconto.
Irei colocar só os campos para o codigo não ficar grande.
tentei fazer mais não consegui e meu codigo está assim.
<p:outputLabel value="valor" for="valor" />
<p:inputText styleClass="moeda" value="#{cadastroServicoBean.servico.valor}" size="5" id="valor" required="true">
<f:convertNumber minFractionDigits="2" maxFractionDigits="2" />
<p:ajax process="@this" update="totalServico" event="keyup" listener="#{cadastroServicoBean.calcularValorComDesconto}" />
</p:inputText>
<p:outputLabel value="Total Bruto" style="font-weight:bold; font-size:10pt;" />
<h:outputLabel id="totalServico" style="font-weight:bold; font-size:10pt;" value="R$ #{cadastroServicoBean.servico.valor}">
<f:convertNumber type="currency" />
</h:outputLabel>
<p:outputLabel value="desconto" for="desc" />
<p:inputText id="desc" value="#{cadastroServicoBean.servico.desconto}" styleClass="moeda" size="5">
<f:convertNumber minFractionDigits="2" maxFractionDigits="2" />
<p:ajax process="@this" event="keyup" update="totalComDesconto" listener="#{cadastroServicoBean.calcularValorComDesconto}" />
</p:inputText>
<p:outputLabel value="Total c/ Desconto" style="font-weight:bold; font-size:10pt;" />
<h:outputLabel id="totalComDesconto" style="font-weight:bold; font-size:10pt;" value=" R$ #{cadastroServicoBean.servico.totalComDesconto}">
<f:convertNumber type="currency" />
</h:outputLabel>
Meu Bean
@Getter
@Setter
private Servico servico;
public void inicializa() {
if (this.servico == null) {
limpar();
}
public void calcularValorComDesconto(){
this.servico.calcularValorComDesconto();
}
Modelo
@Min(value=0)
@Column(name="valor",nullable = false, precision = 10, scale =2)
private BigDecimal valor = BigDecimal.ZERO;
@Min(value=0)
@Column(name="desconto",nullable = false, precision = 10, scale =2)
private BigDecimal desconto= BigDecimal.ZERO;
@Min(value=0)
@Column(name="total_com_desconto",nullable = false, precision = 10, scale =2)
private BigDecimal totalComDesconto= BigDecimal.ZERO;
/**
* Método que calcula valor total do serviço e subtraindo com desconto.
*/
public void calcularValorComDesconto(){
totalComDesconto = totalComDesconto.add(this.getValor())
.subtract(this.getDesconto());
}
O Problema ficou o Seguinte: quando informo o valor de Desconto ele mostra um numero negativo muito estranho.