Olá pessoal, blz??
Estou com problema na atualização do valor total da minha venda.
Tenho uma lista de produtos e ao cliente digitar a quantidade de produtos eu calculo o valor total do produto e o valor da venda.
Seguem meus códigos:
Bean:
public void onItemSelectSoma(AjaxBehaviorEvent event) {
//Prepara meus dados
BigInteger qtdProdutos = (BigInteger) ((UIOutput)event.getSource()).getValue();
String coProd = FacesUtils.getRequestParameter("idProdSelected");
TbProduto produtoCompar = new TbProduto(Long.parseLong( coProd) );
//Verifica se os selecionados e realiza a soma dos produtos
if( listaProdutosSelecionados != null && listaProdutosSelecionados.contains( produtoCompar)) {
for (Iterator iterator = listaProdutosSelecionados.iterator(); iterator.hasNext();) {
TbProduto produto = (TbProduto) iterator.next();
if(produto.equals( produtoCompar )) {
produto.setVlSomaProdutos( produto.getVlVenda().multiply(BigDecimal.valueOf( qtdProdutos.longValue() )));
}
}
//Realiza a soma total dos produtos.
BigDecimal valorTotal = new BigDecimal(0);
for (Iterator iterator = listaProdutosSelecionados.iterator(); iterator.hasNext();) {
TbProduto produto = (TbProduto) iterator.next();
valorTotal = valorTotal.add(produto.getVlSomaProdutos() );
}
valorFinalVenda =valorTotal;
}
Pagina:
<p:column id="idQtdVenda" headerText="Quantidade" style="width:5%;text-align: center;">
<p:inputText value="#{produto.qtdProdSolicitada}" >
<f:param id="idProd" name="idProdSelected" value="#{produto.codProd}"/>
<p:ajax event="keyup" update="idVlSomaProdutos,idValorFinalVenda" listener="#{ordemServicoBBean.onItemSelectSoma}" />
</p:inputText>
</p:column>
<p:column id="idVlVenda" headerText="Valor" style="text-align: center;width:20%;" filterStyle="display:none" sortBy="#{produto.vlVenda}" filterBy="#{produto.vlVenda}" filterMatchMode="contains">
<h:outputText id="idVlProduto" value="R$ #{produto.vlVenda}" />
</p:column>
<p:column id="idTituloVlSomaProdutos" headerText="Valor Total por Produto" style="text-align: center;width:20%;" filterStyle="display:none" sortBy="#{produto.vlSomaProdutos}" filterBy="#{produto.vlSomaProdutos}" filterMatchMode="contains">
<h:outputText id="idVlSomaProdutos" value="R$ #{produto.vlSomaProdutos}" />
</p:column>
<p:columnGroup type="footer" id="idFooter">
<p:row>
<p:column footerText="Valor Total da venda: " style="text-align:right" colspan="1"/>
<p:column id="idValorFinalVendaColumn" footerText="R$ " colspan="4">
<h:outputText id="idValorFinalVenda" value="R$ #{ordemServicoBBean.valorFinalVenda}" />
</p:column>
</p:row>
</p:columnGroup>
Problema: O valor do campo “idValorFinalVenda”, não está sendo atualizado. Os demais estão funcionando corretamente.
Uma coisa que percebi, quando visualizo o html gerado não está gerando as tags e os ids corretos dos campos do footer . Será que a propriedade footerText="R$ " está atrapalhando ???
Só para constar, retirei a tag <h:outputText id=“idValorFinalVenda”> do footer e funcionou. Porém gostaria de criar o footer contendo o total da conta…
Se alguém puder ajudar, ficaria agradecido.
Abraços.