Calculo em JavaScript

Galera estou montando uma tela de pdv, e queria saber se tem como em java scrip mesmo eu fazer o calculo pra gerar o troco do cliente…

no caso eu tenho que pegar o valor que o caixa digita e subtrair com o total dos produtos…

como eu poderia fazer isso

aki estaum as jsp’s de onde tem o totalGeral dos produtos e onde o caixa vai colocar o valor recebido

[code]<%@page contentType=“text/html”%>
<%@page pageEncoding=“UTF-8”%>
<%@taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>
<%@taglib uri=“http://java.sun.com/jsp/jstl/fmt” prefix=“fmt”%>

PDV

Ponto de Venda - Meeble Tecnologia

Data Venda:

Cliente:

Quantidade:

Produto:

Forma de Pagamento:

Dinheiro Cartao de Crédito Cartão de Débito Cheque

Valor:

Troco:

Usuário Logado:

[/code]

notem que o Campo Valor é onde o caixa coloca o valor recebido…tenho que subtrair com o totalGeral que esta em outra pagina…e trazer o resultado no campo Troco

[code]<%@page contentType=“text/html”%>
<%@page pageEncoding=“UTF-8”%>
<%@taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>
<%@taglib uri=“http://java.sun.com/jsp/jstl/fmt” prefix=“fmt”%>








Produto

Preço Unitário

Quantidade

Excluir


<c:forEach items="${vendaPDV.listaProdutos}" var=“produtoDTO”>






</c:forEach>





<c:out value="${produtoDTO.descricao}"/>

<fmt:formatNumber value="${produtoDTO.precoUnitario}" pattern=“0.00” />

<fmt:formatNumber value="${produtoDTO.quantidadeDisponivel}" pattern=“0.00” />

Excluir

Total Geral:



<fmt:formatNumber value="${vendaPDV.totalGeral}" pattern=“0.00” />
[/code]

valeu galera

Bom se eu entendi o que vc está precisando é mais ou menos isso. criei a seguinte função javascript:

function calcula(form) 
{  
  var x = Subst(form.campovalordinheiro.value, "," , ".");
  var y = Subst(form.campototalprodutos.value, "," , ".");
 
  var soma = eval(x) - eval(y);
  form.resultado.value = (Math.round(soma*100))/100 ; 
}

function Subst(Texto, Isto, PorIsto) { //funçao para substituir vírgula por ponto

     var ret = "", i;

     if (Isto.length < 0) {
          ret = Texto;
     }
     else {
          for (i = 0; i <= (Texto.length - 1); i++) {
               if (Texto.substr(i, Isto.length) == Isto) {
                    ret = ret + PorIsto;
                    i = i + (Isto.length - 1);
               }
               else {
                    ret = ret + Texto.substr(i, 1);
               }
          }
     }

     return ret;
} 

E vc coloca o evento onBlur do campo dinheiro(assim ao perder o foco, ele calcula o troco) chamando a função da seguinte maneira:

<input type=‘text’ onBlur=‘calcula(this.form);’ …>

Atenção: coloque os nomes dos campos na função javascript…Fico no aguardo, espero ter ajudado

Valeu mesmo Paezani, vou testar ainda hoje e assim funcionando eu aviso voce, e se surgir alguma duvida tbm…

valeu mais uma vez, abraços.

naum entendi o pq da função de substituir ponto por virgula…

só isso naum funcionaria ???

[code] function calcula(form)
{
var x = Subst(form.campovalordinheiro.value, “,” , “.”);
var y = Subst(form.campototalprodutos.value, “,” , “.”);

var soma = eval(x) - eval(y);
form.resultado.value = (Math.round(soma*100))/100 ;
} [/code]

e onde eu coloco o nome dos campos ???

sem falar que o dinheiro é em uma jsp e o totalGeral esta em outra jsp…

ai a função eu colocaria na jsp de onde ta o dinheiro e como faço pra pegar o totalGeral da outra jsp ???

se puder me explicar…sou bem leigo em javascript…

valeu

Fabio, então esta função de substituir ponto por virgula é pra não dar erro no cálculo… igual ao java… em caso de números decimais( 9,70 )… Agora quanto aos valores, vc tem que passar o valor do primeiro( do jsp do dinheiro ou do total geral) para opróximo jsp… E mostrá-lo na tela… Ve c sabe mexer com parâmetros?

Fico no aguardo.

ai que esta, naum sei mexer com parametros…

Olha só…coloquei essa função na minha pagina ontem tem o campo dinheiro e o troco…

[code]<%@page contentType=“text/html”%>
<%@page pageEncoding=“UTF-8”%>
<%@taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>
<%@taglib uri=“http://java.sun.com/jsp/jstl/fmt” prefix=“fmt”%>

Ponto de Venda - Meeble Tecnologia

Ponto de Venda - Meeble Tecnologia

Data Venda:

Cliente:

Quantidade:

Produto:

Forma de Pagamento:

Dinheiro Cartao de Crédito Cartão de Débito Cheque

Valor:

Troco:

Usuário Logado:

[/code]

agora o campo onde tem o totalGeral esta na nessa pagina

[code]<%@page contentType=“text/html”%>
<%@page pageEncoding=“UTF-8”%>
<%@taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>
<%@taglib uri=“http://java.sun.com/jsp/jstl/fmt” prefix=“fmt”%>








Produto

Preço Unitário

Quantidade

Excluir


<c:forEach items="${vendaPDV.listaProdutos}" var=“produtoDTO”>






</c:forEach>





<c:out value="${produtoDTO.descricao}"/>

<fmt:formatNumber value="${produtoDTO.precoUnitario}" pattern=“0.00” />

<fmt:formatNumber value="${produtoDTO.quantidadeDisponivel}" pattern=“0.00” />

Excluir

Total Geral:



<fmt:formatNumber value="${vendaPDV.totalGeral}" pattern=“0.00” />
[/code]

o calculo sera feito na pagina PDV…na primeira que eu coloquei a função de calculo…ae

[b]eu sei que o q eu quero fazer é bem simples…mas naum to sabendo fazer…

logicamente seria…
var x recebe total geral
var y recebe dinheiro

var troco = dinheiro - totalGeral[/b]

mais uma vez valeu mesmo pela ajuda

No jsp TotalGeral vc coloca o código abaixo pra receber o valor do dinheiro e troco…vc coloca entre <%…%> e antes do form de seu jsp…

String dinheiro = request.getParameter("dinheiro");//o nome entre parentese é o nome de seu campo no jsp anteriror
String troco = request.getParameter("troco"); 

só q o valor do troco pelo q vi está em uma label…tem q estar em uma cx de texto…
Pra vc ver se trouxe os valores:

<input type='text' name='dinheiro' value='<%out.print(dinheiro);%>'  >

Fico no aguardo

Cuidado ao fazer contas em JavaScript. É que o JavaScript usa “double” (como o Java) para fazer contas, e você sabe o que pode ocorrer com “double”.