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:
|
|
[/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:out value="${produtoDTO.descricao}"/>
|
<fmt:formatNumber value="${produtoDTO.precoUnitario}" pattern=“0.00” />
|
<fmt:formatNumber value="${produtoDTO.quantidadeDisponivel}" pattern=“0.00” />
|
Excluir
|
</c:forEach>
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:
|
|
[/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:out value="${produtoDTO.descricao}"/>
|
<fmt:formatNumber value="${produtoDTO.precoUnitario}" pattern=“0.00” />
|
<fmt:formatNumber value="${produtoDTO.quantidadeDisponivel}" pattern=“0.00” />
|
Excluir
|
</c:forEach>
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”.