Soma Dinamica não esta somando
26/08/2014
0
tenho a resenha de um sistema de PDV mal programado, e eu fiquei com a "bronca" do programa já que o antigo programador saiu, eu tive que ficar responsável pela manutenção do sistema, o caso é que eu sou novato em desenvolvimento...
Consigo me virar com sistemas de baixa complexidade e desenvolvimentos baixos, mas o sistema utiliza de ajax para poder estar fazendo suas buscas, além de que antes era um problema que eu consegui resolver trocando de script para uma outra busca dinâmica. O caso é que essa busca não soma os valores automaticamente quando eu os trago para serem exibidos
Deem uma olhada no código.
Esse é o código para poder trazer os itens e assim passar os valores quando eu o seleciono,
o problema na real é que ele so faz a soma quando o input perde o foco, o que não poderia estar acontecendo, se não ele insere vazio no banco de dados.
<?php if(!empty($_GET["valor"])){ $valor=$_GET['valor']; //selecionar os valores do banco $sql = mysql_query("SELECT * FROM produtos WHERE descricao LIKE '".$valor."%' OR gtin_ean LIKE '".$valor."%' LIMIT 5"); //while para trazer todos os valores do banco while ($noticias = mysql_fetch_array($sql)) { echo ("<div class='exibir_res'>"); echo ('<a href="javascript:func();" onclick=\"passar_1()\" onclick="exibirConteudo('.$noticias['codigo'].');">'.$noticias['descricao'].'</a><br />'); echo ("</div>"); } } ?>
codigo para poder exibir os itens quando selecionado
<?php //conexao com o banco ####################### include('conn.php'); ####################### // Variaveis $id = $_GET['id']; $qnt = '1'; ####################### $sql = mysql_query("SELECT * FROM produtos WHERE codigo = '".$id."'"); $prod = mysql_fetch_array($sql); ####################### echo('<tr>'); echo('<td><div style="width:165px; float:left;">Item<input type="text" value="'.$prod['descricao'].'" name="item_1" style="width:150px "></div></td>'); echo('<td><div style="width:113px; float:left;">Quantidade<input type="text" onclick="passar_1();" onblur="calcula_1();" value="'.$qnt.'" name="qnt_1" id="qnt_1" style="width:100px "></div></td>'); echo('<td><div style="width:113px; float:left;">Preço<input type="text" onclick="passar_1();" onblur="calcula_1();" value="'.$prod['preco_v'].'" name="vlr_1" id="vlr_1" style="width:100px "></div></td>'); echo('<td><div style="width:113px; float:left;">Valor Total<input type="text" value="'.number_format($qnt*$prod['preco_v'],2,",",".").'" onclick="passar_1();" onblur="calcula_1();" name="vlritem_1" id="vlritem_1" style="width:100px "></div></td>'); echo('</tr>'); ?>
Código que faz a "[DES]graça" do Ajax acontecer
var req; function buscarNoticias(valor) { if(window.XMLHttpRequest) { req = new XMLHttpRequest(); } else if(window.ActiveXObject) { req = new ActiveXObject("Microsoft.XMLHTTP"); } var url = "pdv_busca.php?valor="+valor; req.open("Get", url, true); req.onreadystatechange = function() { if(req.readyState == 1) { document.getElementById('resultado').innerHTML = 'Buscando Produtos...'; } if(req.readyState == 4 && req.status == 200) { // Resposta retornada pelo busca.php var resposta = req.responseText; // Abaixo colocamos a(s) resposta(s) na div resultado document.getElementById('resultado').innerHTML = resposta; } } req.send(null); } //função para exibir noticias function exibirConteudo(id) { // Verificando Browser if(window.XMLHttpRequest) { req = new XMLHttpRequest(); } else if(window.ActiveXObject) { req = new ActiveXObject("Microsoft.XMLHTTP"); } // Arquivo PHP juntamento com a id da noticia (método GET) var url = "pdv_exibir.php?id="+id; // Chamada do método open para processar a requisição req.open("Get", url, true); // Quando o objeto recebe o retorno, chamamos a seguinte função; req.onreadystatechange = function() { // Exibe a mensagem "Aguarde..." enquanto carrega if(req.readyState == 1) { document.getElementById('conteudo').innerHTML = 'Aguarde...'; } // Verifica se o Ajax realizou todas as operações corretamente if(req.readyState == 4 && req.status == 200) { // Resposta retornada pelo exibir.php var resposta = req.responseText; // Abaixo colocamos a resposta na div conteudo document.getElementById('conteudo').innerHTML = resposta; document.getElementById('resultado').innerHTML = ""; } } req.send(null); }
Mario Costa
Posts
27/08/2014
Lucas Burg
seria pelo ajax a alteração da quantidade ?
27/08/2014
Ronaldo Lanhellas
"o problema na real é que ele so faz a soma quando o input perde o foco, o que não poderia estar acontecendo"
Imagino que o problema não esteja no código mostrado acima pois você mesmo disse que a soma está sendo feito. O problema é que o evento está errado, procure mudar para onFocus em vez de onBlur. O onBlur executa o código quando o componente perde o foco, então faça o contrário, execute quando ele "ganha" o foco (onFocus)
28/08/2014
Mario Costa
A alteração de quantidade é feita direta no input de quantidade, e o resultado é calculado pelo javascript.
Ronaldo, o que eu gostaria que o código fizesse era somar sem ter que perder ou ganhar o foco, ele somar ao apertar clica no botão de escolher o produto, mandando o valor ao total.
28/08/2014
Lucas Burg
o teu problema e que esse total não gera ?
se não for isso descreva o teu case, que vai facilitar bastante.
abraço
28/08/2014
Mario Costa
////////////////////////// ITEM 1 function passar_1(){ var bitem_1 = document.getElementById("bitem_1"); var item_1 = document.getElementById("item_1"); item_1.value = bitem_1.value; var bqnt_1 = document.getElementById("bqnt_1"); var qnt_1 = document.getElementById("qnt_1"); qnt_1.value = bqnt_1.value; var bvlr_1 = document.getElementById("bvlr_1"); var vlr_1 = document.getElementById("vlr_1"); var vlritem_1 = document.getElementById("vlritem_1"); var vlr_pedido = document.getElementById("vlr_pedido"); var total = document.getElementById("total"); vlr_1.value = bvlr_1.value; vlritem_1.value = bvlr_1.value; vlr_pedido.value = bvlr_1.value; total.value = bvlr_1.value; }; function calcula_1() { //Pega novamente as variaveis para um novo calculo var tqnt_1 = document.getElementById("qnt_1").value; var tvlr_1 = document.getElementById("vlr_1").value; if((tqnt_1 == "" || tqnt_1 == null) && (tvlr_1 == "" || tvlr_1 == null)) return false; //retira caracteres especiais do campo while(tqnt_1.indexOf(',') != -1) tqnt_1 = tqnt_1.replace(',','.'); //retira caracteres especiais do campo while(tvlr_1.indexOf(',') != -1) tvlr_1 = tvlr_1.replace(',','.'); // multiplica os 2 campos t_vlritem_1 = parseFloat(tqnt_1*tvlr_1); // passa o valor para o campo total document.form1.vlritem_1.value = t_vlritem_1; //valor do pedido document.form1.vlr_pedido.value = t_vlritem_1; //valor total document.form1.total.value = t_vlritem_1; } //fecha function calcula ////////////////////////// ITEM 2 function passar_2(){ var bitem_2 = document.getElementById("bitem_2"); var item_2 = document.getElementById("item_2"); item_2.value = bitem_2.value; var bqnt_2 = document.getElementById("bqnt_2"); var qnt_2 = document.getElementById("qnt_2"); qnt_2.value = bqnt_2.value; var bvlr_2 = document.getElementById("bvlr_2"); var vlr_2 = document.getElementById("vlr_2"); var vlritem_2 = document.getElementById("vlritem_2"); var vlr_pedido = document.getElementById("vlr_pedido"); var total = document.getElementById("total"); vlr_2.value = bvlr_2.value; vlritem_2.value = bvlr_2.value; var vlr_pedidoc = document.getElementById("vlr_pedido").value; var vlritem_2c = document.getElementById("vlritem_2").value; if((vlr_pedidoc == "" || vlr_pedidoc == null) && (vlritem_2c == "" || vlritem_2c == null)) return false; //retira caracteres especiais do campo while(vlr_pedidoc.indexOf(',') != -1) vlr_pedidoc = vlr_pedidoc.replace(',','.'); //retira caracteres especiais do campo while(vlritem_2c.indexOf(',') != -1) vlritem_2c = vlritem_2c.replace(',','.'); gu = parseFloat(vlr_pedidoc) + parseFloat(vlritem_2c); document.form1.vlr_pedido.value = gu; document.form1.total.value = gu; }; // aqui começa o srcipt da quantidade function calcula_2() { //Pega novamente as variaveis para um novo calculo var tqnt_2 = document.getElementById("qnt_2").value; var tvlr_2 = document.getElementById("vlr_2").value; if((tqnt_2 == "" || tqnt_2 == null) && (tvlr_2 == "" || tvlr_2 == null)) return false; //retira caracteres especiais do campo while(tqnt_2.indexOf(',') != -1) tqnt_2 = tqnt_2.replace(',','.'); //retira caracteres especiais do campo while(tvlr_2.indexOf(',') != -1) tvlr_2 = tvlr_2.replace(',','.'); // multiplica os 2 campos t_vlritem_2 = parseFloat(tqnt_2*tvlr_2); // passa o valor para o campo total document.form1.vlritem_2.value = t_vlritem_2; var vlr_pedidoc = document.getElementById("vlritem_1").value; var vlritem_2c = document.getElementById("vlritem_2").value; if((vlr_pedidoc == "" || vlr_pedidoc == null) && (vlritem_2c == "" || vlritem_2c == null)) return false; //retira caracteres especiais do campo while(vlr_pedidoc.indexOf(',') != -1) vlr_pedidoc = vlr_pedidoc.replace(',','.'); //retira caracteres especiais do campo while(vlritem_2c.indexOf(',') != -1) vlritem_2c = vlritem_2c.replace(',','.'); gu2 = parseFloat(vlr_pedidoc) + parseFloat(vlritem_2c); //valor do pedido document.form1.vlr_pedido.value = gu2; //valor total document.form1.total.value = gu2; } //fecha function calcula ////////////////////////// ITEM 3 function passar_3(){ var bitem_3 = document.getElementById("bitem_3"); var item_3 = document.getElementById("item_3"); item_3.value = bitem_3.value; var bqnt_3 = document.getElementById("bqnt_3"); var qnt_3 = document.getElementById("qnt_3"); qnt_3.value = bqnt_3.value; var bvlr_3 = document.getElementById("bvlr_3"); var vlr_3 = document.getElementById("vlr_3"); var vlritem_3 = document.getElementById("vlritem_3"); var vlr_pedido = document.getElementById("vlr_pedido"); var total = document.getElementById("total"); vlr_3.value = bvlr_3.value; vlritem_3.value = bvlr_3.value; var vlr_pedidoc = document.getElementById("vlr_pedido").value; var vlritem_3c = document.getElementById("vlritem_3").value; if((vlr_pedidoc == "" || vlr_pedidoc == null) && (vlritem_3c == "" || vlritem_3c == null)) return false; //retira caracteres especiais do campo while(vlr_pedidoc.indexOf(',') != -1) vlr_pedidoc = vlr_pedidoc.replace(',','.'); //retira caracteres especiais do campo while(vlritem_3c.indexOf(',') != -1) vlritem_3c = vlritem_3c.replace(',','.'); gu = parseFloat(vlr_pedidoc) + parseFloat(vlritem_3c); document.form1.vlr_pedido.value = gu; document.form1.total.value = gu; }; // aqui começa o srcipt da quantidade function calcula_3() { //Pega novamente as variaveis para um novo calculo var tqnt_3 = document.getElementById("qnt_3").value; var tvlr_3 = document.getElementById("vlr_3").value; if((tqnt_3 == "" || tqnt_3 == null) && (tvlr_3 == "" || tvlr_3 == null)) return false; //retira caracteres especiais do campo while(tqnt_3.indexOf(',') != -1) tqnt_3 = tqnt_3.replace(',','.'); //retira caracteres especiais do campo while(tvlr_3.indexOf(',') != -1) tvlr_3 = tvlr_3.replace(',','.'); // multiplica os 2 campos t_vlritem_3 = parseFloat(tqnt_3*tvlr_3); // passa o valor para o campo total document.form1.vlritem_3.value = t_vlritem_3; var vlritem_1c = document.getElementById("vlritem_1").value; var vlritem_2c = document.getElementById("vlritem_2").value; var vlritem_3c = document.getElementById("vlritem_3").value; if((vlritem_1c == "" || vlritem_1c == null) && (vlritem_2c == "" || vlritem_2c == null) && (vlritem_3c == "" || vlritem_3c == null)) return false; //retira caracteres especiais do campo while(vlritem_1c.indexOf(',') != -1) vlritem_1c = vlritem_1c.replace(',','.'); //retira caracteres especiais do campo while(vlritem_2c.indexOf(',') != -1) vlritem_2c = vlritem_2c.replace(',','.'); //retira caracteres especiais do campo while(vlritem_3c.indexOf(',') != -1) vlritem_3c = vlritem_3c.replace(',','.'); gu2 = parseFloat(vlritem_1c) + parseFloat(vlritem_2c) + parseFloat(vlritem_3c); //valor do pedido document.form1.vlr_pedido.value = gu2; //valor total document.form1.total.value = gu2; } //fecha function calcula ////////////////////////// ITEM 4 function passar_4(){ var bitem_4 = document.getElementById("bitem_4"); var item_4 = document.getElementById("item_4"); item_4.value = bitem_4.value; var bqnt_4 = document.getElementById("bqnt_4"); var qnt_4 = document.getElementById("qnt_4"); qnt_4.value = bqnt_4.value; var bvlr_4 = document.getElementById("bvlr_4"); var vlr_4 = document.getElementById("vlr_4"); var vlritem_4 = document.getElementById("vlritem_4"); var vlr_pedido = document.getElementById("vlr_pedido"); var total = document.getElementById("total"); vlr_4.value = bvlr_4.value; vlritem_4.value = bvlr_4.value; var vlr_pedidoc = document.getElementById("vlr_pedido").value; var vlritem_4c = document.getElementById("vlritem_4").value; if((vlr_pedidoc == "" || vlr_pedidoc == null) && (vlritem_4c == "" || vlritem_4c == null)) return false; //retira caracteres especiais do campo while(vlr_pedidoc.indexOf(',') != -1) vlr_pedidoc = vlr_pedidoc.replace(',','.'); //retira caracteres especiais do campo while(vlritem_4c.indexOf(',') != -1) vlritem_4c = vlritem_4c.replace(',','.'); gu = parseFloat(vlr_pedidoc) + parseFloat(vlritem_4c); document.form1.vlr_pedido.value = gu; document.form1.total.value = gu; }; // aqui começa o srcipt da quantidade function calcula_4() { //Pega novamente as variaveis para um novo calculo var tqnt_4 = document.getElementById("qnt_4").value; var tvlr_4 = document.getElementById("vlr_4").value; if((tqnt_4 == "" || tqnt_4 == null) && (tvlr_4 == "" || tvlr_4 == null)) return false; //retira caracteres especiais do campo while(tqnt_4.indexOf(',') != -1) tqnt_4 = tqnt_4.replace(',','.'); //retira caracteres especiais do campo while(tvlr_4.indexOf(',') != -1) tvlr_4 = tvlr_4.replace(',','.'); // multiplica os 2 campos t_vlritem_4 = parseFloat(tqnt_4*tvlr_4); // passa o valor para o campo total document.form1.vlritem_4.value = t_vlritem_4; var vlritem_1c = document.getElementById("vlritem_1").value; var vlritem_2c = document.getElementById("vlritem_2").value; var vlritem_3c = document.getElementById("vlritem_3").value; var vlritem_4c = document.getElementById("vlritem_4").value; if((vlritem_1c == "" || vlritem_1c == null) && (vlritem_2c == "" || vlritem_2c == null) && (vlritem_3c == "" || vlritem_3c == null) && (vlritem_4c == "" || vlritem_4c == null)) return false; //retira caracteres especiais do campo while(vlritem_1c.indexOf(',') != -1) vlritem_1c = vlritem_1c.replace(',','.'); //retira caracteres especiais do campo while(vlritem_2c.indexOf(',') != -1) vlritem_2c = vlritem_2c.replace(',','.'); //retira caracteres especiais do campo while(vlritem_3c.indexOf(',') != -1) vlritem_3c = vlritem_3c.replace(',','.'); //retira caracteres especiais do campo while(vlritem_4c.indexOf(',') != -1) vlritem_4c = vlritem_4c.replace(',','.'); gu2 = parseFloat(vlritem_1c) + parseFloat(vlritem_2c) + parseFloat(vlritem_3c) + parseFloat(vlritem_4c); //valor do pedido document.form1.vlr_pedido.value = gu2; //valor total document.form1.total.value = gu2; } //fecha function calcula ////////////////////////// ITEM 5 function passar_5(){ var bitem_5 = document.getElementById("bitem_5"); var item_5 = document.getElementById("item_5"); item_5.value = bitem_5.value; var bqnt_5 = document.getElementById("bqnt_5"); var qnt_5 = document.getElementById("qnt_5"); qnt_5.value = bqnt_5.value; var bvlr_5 = document.getElementById("bvlr_5"); var vlr_5 = document.getElementById("vlr_5"); var vlritem_5 = document.getElementById("vlritem_5"); var vlr_pedido = document.getElementById("vlr_pedido"); var total = document.getElementById("total"); vlr_5.value = bvlr_5.value; vlritem_5.value = bvlr_5.value; var vlr_pedidoc = document.getElementById("vlr_pedido").value; var vlritem_5c = document.getElementById("vlritem_5").value; if((vlr_pedidoc == "" || vlr_pedidoc == null) && (vlritem_5c == "" || vlritem_5c == null)) return false; //retira caracteres especiais do campo while(vlr_pedidoc.indexOf(',') != -1) vlr_pedidoc = vlr_pedidoc.replace(',','.'); //retira caracteres especiais do campo while(vlritem_5c.indexOf(',') != -1) vlritem_5c = vlritem_5c.replace(',','.'); gu = parseFloat(vlr_pedidoc) + parseFloat(vlritem_5c); document.form1.vlr_pedido.value = gu; document.form1.total.value = gu; }; // aqui começa o srcipt da quantidade function calcula_5() { //Pega novamente as variaveis para um novo calculo var tqnt_5 = document.getElementById("qnt_5").value; var tvlr_5 = document.getElementById("vlr_5").value; if((tqnt_5 == "" || tqnt_5 == null) && (tvlr_5 == "" || tvlr_5 == null)) return false; //retira caracteres especiais do campo while(tqnt_5.indexOf(',') != -1) tqnt_5 = tqnt_5.replace(',','.'); //retira caracteres especiais do campo while(tvlr_5.indexOf(',') != -1) tvlr_5 = tvlr_5.replace(',','.'); // multiplica os 2 campos t_vlritem_5 = parseFloat(tqnt_5*tvlr_5); // passa o valor para o campo total document.form1.vlritem_5.value = t_vlritem_5; var vlritem_1c = document.getElementById("vlritem_1").value; var vlritem_2c = document.getElementById("vlritem_2").value; var vlritem_3c = document.getElementById("vlritem_3").value; var vlritem_4c = document.getElementById("vlritem_4").value; var vlritem_5c = document.getElementById("vlritem_5").value; if((vlritem_1c == "" || vlritem_1c == null) && (vlritem_2c == "" || vlritem_2c == null) && (vlritem_3c == "" || vlritem_3c == null) && (vlritem_4c == "" || vlritem_4c == null) && (vlritem_5c == "" || vlritem_5c == null)) return false; //retira caracteres especiais do campo while(vlritem_1c.indexOf(',') != -1) vlritem_1c = vlritem_1c.replace(',','.'); //retira caracteres especiais do campo while(vlritem_2c.indexOf(',') != -1) vlritem_2c = vlritem_2c.replace(',','.'); //retira caracteres especiais do campo while(vlritem_3c.indexOf(',') != -1) vlritem_3c = vlritem_3c.replace(',','.'); //retira caracteres especiais do campo while(vlritem_4c.indexOf(',') != -1) vlritem_4c = vlritem_4c.replace(',','.'); while(vlritem_5c.indexOf(',') != -1) vlritem_5c = vlritem_5c.replace(',','.'); gu2 = parseFloat(vlritem_1c) + parseFloat(vlritem_2c) + parseFloat(vlritem_3c) + parseFloat(vlritem_4c) + parseFloat(vlritem_5c); //valor do pedido document.form1.vlr_pedido.value = gu2; //valor total document.form1.total.value = gu2; } //fecha function calcula ////////////////////DESCONTO function calcula_desc() { //Pega novamente as variaveis para um novo calculo var tdesconto = document.getElementById("desconto").value; var ttotal = document.getElementById("vlr_pedido").value; if((tdesconto == "" || tdesconto == null) && (ttotal == "" || ttotal == null)) return false; //retira caracteres especiais do campo while(tdesconto.indexOf(',') != -1) tdesconto = tdesconto.replace(',','.'); //retira caracteres especiais do campo while(ttotal.indexOf(',') != -1) ttotal = ttotal.replace(',','.'); // Subtrai os 2 campos tt = parseFloat(ttotal-(tdesconto)); // passa o valor para o campo total document.form1.total.value = tt; document.getElementById("vlr_pedido").innerHTML = tt; } ////////////////////////////////////PARCELA function calcula_par() { //Pega novamente as variaveis para um novo calculo var ttotal = document.getElementById("total").value; var tvezes = document.getElementById("n_par").value; if((ttotal == "" || ttotal == null) && (tvezes == "" || tvezes == null)) return false; //retira caracteres especiais do campo while(ttotal.indexOf(',') != -1) ttotal = ttotal.replace(',','.'); //retira caracteres especiais do campo while(tvezes.indexOf(',') != -1) tvezes = tvezes.replace(',','.'); // Subtrai os 2 campos tz = parseFloat(ttotal/tvezes); // passa o valor para o campo total document.form1.vlr_par.value = tz; }
Clique aqui para fazer login e interagir na Comunidade :)