Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fabiosc80

[Resolvido] Sistema de Calculo de Valores.

Recommended Posts

Tenho um código que ao eu inserir o produto e a quantidade ele automaticamente quando estou prrenchendo o campo ja vai me calculando os valores em subtotal e total.

 

Porem ele mantem os valores de frete e desconto apenas da primeira linha, quando eu insiro uma linha nova ("tem um botão de inserir campo") ele nao muda os valores.

 

Como faço para ele pegar o campo correto?

 

Tente adicionar dois registros e depois apagar o frete da segunda linha ou adicionar outra diferente.

 

Esta muito dificil isso para mim e olha que nem comecei a fazer os calculos ainda direito.

 

Agradeço toda a ajuda que puderem me dar.

 

<%call verifica_vendedores()%>
<script type="text/javascript">
//Total máximo de campos que você permitirá criar em seu site:
var totalCampos = 30;

//Não altere os valores abaixo, pois são variáveis controle;
var iLoop = 1;
var iCount = 1;
var linhaAtual;


function AddCampos() {
//Executar apenas se houver possibilidade de inserção de novos campos:
        if (iCount < totalCampos) {
         var objTr = document.getElementById("linha"+iCount);
         objTr.style.display = "";
         iCount++;
        }
}

function ResetCampos() {
//Executar apenas se houver possibilidade de inserção de novos campos:
        if (iCount > totalCampos) {
         var objTr = document.getElementById("linha"-iCount);
         objTr.style.display = "";
         iCount--;
        }
}


function somar(el) {
	

var objItem = document.getElementById("sel"+el);
var objQtde = document.getElementById("qtde"+el);
var objVunit = document.getElementById("vUnit"+el);
var objVtot = document.getElementById("vTot"+el);
var SubTot = document.getElementById("subTotal");
var objFrete = document.getElementById("frete");
var objDesc = document.getElementById("decapagem");
var objTotal = document.getElementById("total");

        if (objItem.value != "") {
                objVunit.value = objItem.value;
                var total = (parseFloat(objItem.value)*parseFloat(objQtde.value)+parseFloat(objDesc.value)+parseFloat(objFrete.value));
                objVtot.value = total.toFixed(2);
        }else{
                objVunit.value = "0.00";
                objVtot.value = "0.00";
        }

var calcSubTotal = 0;
for (iC = 1; iC<=totalCampos; iC++) {
        calcSubTotal += parseFloat(document.getElementById("vTot"+iC).value);
}
SubTot.value = calcSubTotal.toFixed(2);
calcTotal = (calcSubTotal);
objTotal.value = calcTotal.toFixed(2);
}
</script>
</head>
<body>
<form name="form1" action="paginaPHPouASP" method="post">
<table border="0">
<tr>
        <td width="200px">Produto</td>
        <td width="100px">Quantidade</td>
        <td width="100px">Preço de Tabela</td>
        <td width="100px">SubTotal</td>
        <td width="100px">Corte + Dec</td>
        <td width="100px">Frete</td>
</tr>
<script type="text/javascript">
//Escrevendo o código-fonte HTML e ocultando os campos criados:
for (iLoop = 1; iLoop <= totalCampos; iLoop++) {
var linha = "";
if (iLoop <=1) {
        visualizar = "";
} else {
        visualizar = "none";
}

        linha += "<tr id='linha"+iLoop+"' style='display:"+visualizar+"'>";
        linha += "<td width='200px'>";
        linha += "<select id='sel"+iLoop+"' onchange='somar("+iLoop+")'>";
        linha += "<option value=''>---</option>";
        linha += "<option value='2650.00'>FQ.01</option>";
        linha += "<option value='2480.00'>FQ.02</option>";
        linha += "<option value='3300.00'>FQ.06</option>";
        linha += "<option value='3200.00'>FQ.07</option>";
        linha += "<option value='2750.00'>FQ.08</option>";
        linha += "</select>";
        linha += "</td>";
        linha += "<td width='100px'>";
        linha += "<select id='qtde"+iLoop+"' onchange='somar("+iLoop+")'><option value='0'>0</option><option value='1'>1</option><option value='2'>2</option><option value='3'>3</option><option value='4'>4</option><option value='5'>5</option></select>";
        linha += "</td>";
        linha += "<td width='100px'>";
        linha += "<input type='text' id='vUnit"+iLoop+"' readonly='readonly' value='0.00'>";
        linha += "</td>";
        linha += "<td width='100px'>";
        linha += "<input type='text' id='vTot"+iLoop+"' readonly='readonly' value='0.00'>";
        linha += "</td>";
		linha += "<td><input type='text' name='decapagem' id='decapagem' value='35.00' onkeyup='somar("+iLoop+")'></td>";
        linha += "<td><input type='text' name='frete' id='frete' value='50.00' onkeyup='somar("+iLoop+")'></td>";
		linha += "<td><input type='button' value='Remover campo' onclick='RemoverCampos("+iLoop+")'></td>";
        linha += "</tr>";       

document.write (linha);
}


function RemoverCampos(id) {
//Criando ponteiro para hidden1:        
var hidden1 = document.getElementById("decapagem");

//Pegar o valor do campo que será excluído:
var campoValor = document.getElementById("decapagem").value;
        //Se o campo não tiver nenhum valor, atribuir a string: vazio:
        if (campoValor == "") {
                campoValor = "vazio";
        }

        {
                document.getElementById("linha"+id).style.display = "none"; iCount--;
                
                //Removendo o valor de hidden1:
                if (hidden1.value.indexOf(",linha"+id) != -1) {
                        hidden1.value = hidden1.value.replace(",linha"+id,"");
                }else if (hidden1.value.indexOf("linha"+id+",") == 0) {
                        hidden1.value = hidden1.value.replace("linha"+id+",","");
                }else{
                        hidden1.value = "";
                }
        }
}
</script>

<tr>
        <td> </td>
        <td> </td>
        <td>Sub-total:</td>
        <td><input type="text" id="subTotal" readonly='readonly' value="0.00"></td>
</tr>
<tr>
        <td> </td>
        <td> </td>
        <td>Total:</td>
        <td><input type="text" id="total" readonly='readonly' value="0.00"></td>
</tr>
</table>
<input type="button" value="Adicionar campos" onClick="AddCampos()">

<input type="hidden" name="hidden2" id="hidden2">
<br><br>
<br><br>
</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça o seguinte.

Selecione um produto e coloque a quantidade.

Depois adicione um item novo e selecione outro produto e outra quantidade.

 

Depois coloque 0(zero) em frete no segundo produto. Veja que nao muda o valor deste sub item no segundo produto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim é pra deixar mas ele esta exibindo só da primeira linha no calculo.

se eu adiciono uma linha nova ele se perde e nao calcula dessa linha se eu mudar na mao o frete ou zerar ele?

alias caso seja NaN tem que ser igual a zero e nao fica zerado.

 

outra coisa.

 

coloquei um botão de excluir linhas mas ele se perde tambem quando eu apago o primeiro registro.

 

Estou copiando denovo o código.

 

Salve-o como .html

 

<script type="text/javascript">
//Total máximo de campos que você permitirá criar em seu site:
var totalCampos = 30;

//Não altere os valores abaixo, pois são variáveis controle;
var iLoop = 1;
var iCount = 1;
var linhaAtual;


function AddCampos() {
//Executar apenas se houver possibilidade de inserção de novos campos:
        if (iCount < totalCampos) {
         var objTr = document.getElementById("linha"+iCount);
         objTr.style.display = "";
         iCount++;
        }
}

function ResetCampos() {
//Executar apenas se houver possibilidade de inserção de novos campos:
        if (iCount > totalCampos) {
         var objTr = document.getElementById("linha"-iCount);
         objTr.style.display = "";
         iCount--;
        }
}


function somar(el) {
	

var objItem = document.getElementById("sel"+el);
var objQtde = document.getElementById("qtde"+el);
var objVunit = document.getElementById("vUnit"+el);
var objVtot = document.getElementById("vTot"+el);
var SubTot = document.getElementById("subTotal");
var objFrete = document.getElementById("frete");
var objDesc = document.getElementById("decapagem");
var objTotal = document.getElementById("total");


//alert(1+(45-45)/30*(1.5/100)*0.82/(1-(0.82))/9.99)*10;

	    if (objItem.value != "") {
                objVunit.value = objItem.value;
                var total = (parseFloat(objItem.value)*parseFloat(objQtde.value)+parseFloat(objDesc.value)+parseFloat(objFrete.value));
                objVtot.value = total.toFixed(2);
        }else{
                objVunit.value = "0.00";
                objVtot.value = "0.00";
        }

var calcSubTotal = 0;
for (iC = 1; iC<=totalCampos; iC++) {
        calcSubTotal += parseFloat(document.getElementById("vTot"+iC).value);
}
SubTot.value = calcSubTotal.toFixed(2);
calcTotal = (calcSubTotal);
objTotal.value = calcTotal.toFixed(2);
}
</script>
</head>
<body>
<form name="form1" action="paginaPHPouASP" method="post">
<table border="0">
<tr>
        <td width="200px">Produto</td>
        <td width="100px">Quantidade</td>
        <td width="100px">Preço de Tabela</td>
        <td width="100px">SubTotal</td>
        <td width="100px">Corte + Dec</td>
        <td width="100px">Frete</td>
</tr>
<script type="text/javascript">
//Escrevendo o código-fonte HTML e ocultando os campos criados:
for (iLoop = 1; iLoop <= totalCampos; iLoop++) {
var linha = "";
if (iLoop <=1) {
        visualizar = "";
} else {
        visualizar = "none";
}

        linha += "<tr id='linha"+iLoop+"' style='display:"+visualizar+"'>";
        linha += "<td width='200px'>";
        linha += "<select id='sel"+iLoop+"' onchange='somar("+iLoop+")'>";
        linha += "<option value=''>---</option>";
        linha += "<option value='2650.00'>FQ.01</option>";
        linha += "<option value='2480.00'>FQ.02</option>";
        linha += "<option value='3300.00'>FQ.06</option>";
        linha += "<option value='3200.00'>FQ.07</option>";
        linha += "<option value='2750.00'>FQ.08</option>";
        linha += "</select>";
        linha += "</td>";
        linha += "<td width='100px'>";
        linha += "<select id='qtde"+iLoop+"' onchange='somar("+iLoop+")'><option value='0'>0</option><option value='1'>1</option><option value='2'>2</option><option value='3'>3</option><option value='4'>4</option><option value='5'>5</option></select>";
        linha += "</td>";
        linha += "<td width='100px'>";
        linha += "<input type='text' id='vUnit"+iLoop+"' readonly='readonly' value='0.00'>";
        linha += "</td>";
        linha += "<td width='100px'>";
        linha += "<input type='text' id='vTot"+iLoop+"' readonly='readonly' value='0.00'>";
        linha += "</td>";
		linha += "<td><input type='text' name='decapagem' id='decapagem' value='35.00' onkeyup='somar("+iLoop+")'></td>";
        linha += "<td><input type='text' name='frete' id='frete' value='50.00' onkeyup='somar("+iLoop+")'></td>";
		linha += "<td><input type='button' value='Remover campo' onclick='RemoverCampos("+iLoop+")'></td>";
        linha += "</tr>";       

document.write (linha);
}


function RemoverCampos(id) {
//Criando ponteiro para hidden1:        
var hidden1 = document.getElementById("decapagem");

//Pegar o valor do campo que será excluído:
var campoValor = document.getElementById("decapagem").value;
        //Se o campo não tiver nenhum valor, atribuir a string: vazio:
        if (campoValor == "") {
                campoValor = "vazio";
        }

        {
                document.getElementById("linha"+id).style.display = "none"; iCount--;
                
                //Removendo o valor de hidden1:
                if (hidden1.value.indexOf(",linha"+id) != -1) {
                        hidden1.value = hidden1.value.replace(",linha"+id,"");
                }else if (hidden1.value.indexOf("linha"+id+",") == 0) {
                        hidden1.value = hidden1.value.replace("linha"+id+",","");
                }else{
                        hidden1.value = "";
                }
        }
}
</script>

<tr>
        <td> </td>
        <td> </td>
        <td>Sub-total:</td>
        <td><input type="text" id="subTotal" readonly='readonly' value="0.00"></td>
</tr>
<tr>
        <td> </td>
        <td> </td>
        <td>Total:</td>
        <td><input type="text" id="total" readonly='readonly' value="0.00"></td>
</tr>
</table>
<input type="button" value="Adicionar campos" onClick="AddCampos()">
<input type="button" value="Remover campo" onclick="RemoverCampos('+iLoop+')">

<input type="hidden" name="hidden2" id="hidden2">
<br><br>
<br><br>
</form>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

segue solução :

 

sistema ótimo para quem quiser algo dinamico em javascript. até deleta registros.

 

mas agora falta o asp....

 

<%call verifica_vendedores()%>
<script type="text/javascript">
//Total máximo de campos que você permitirá criar em seu site:
var totalCampos = 30;

//Não altere os valores abaixo, pois são variáveis controle;
var iLoop = 1;
var iCount = 1;
var linhaAtual;


function AddCampos() {
//Executar apenas se houver possibilidade de inserção de novos campos:
        if (iCount < totalCampos) {
         var objTr = document.getElementById("linha"+iCount);
         objTr.style.display = "";
         iCount++;
        }
}

function ResetCampos() {
//Executar apenas se houver possibilidade de inserção de novos campos:
        if (iCount > totalCampos) {
         var objTr = document.getElementById("linha"-iCount);
         objTr.style.display = "";
         iCount--;
        }
}


function somar(el) {
	

var objItem = document.getElementById("sel"+el);
var objQtde = document.getElementById("qtde"+el);
var objVunit = document.getElementById("vUnit"+el);
var objCliente = document.getElementById("vCliente"+el);
var objVtot = document.getElementById("vTot"+el);
var SubTot = document.getElementById("subTotal"+el);
var objFrete = document.getElementById("frete"+el);
var objDesc = document.getElementById("decapagem"+el);
var objTotal = document.getElementById("total"+el);



		if ((objQtde.value >= 1) && (objQtde.value < 5)){
			parseFloat(objCliente.value).toFixed(2);
			objCliente.value = "2720.00"
		}
		
		if ((objQtde.value >= 5) && (objQtde.value < 10)){
			parseFloat(objCliente.value).toFixed(2);
			objCliente.value = "2400.00"
		}
//alert(1+(45-45)/30*(1.5/100)*0.82/(1-(0.82))/9.99)*10;

	    if (objItem.value != "") {
                objVunit.value = objItem.value;
                var total = (parseFloat(objItem.value)*parseFloat(objQtde.value)+parseFloat(objDesc.value)+parseFloat(objFrete.value));
                objVtot.value = total.toFixed(2);
        }else{
                objVunit.value = "0.00";
                objVtot.value = "0.00";
        }

var calcSubTotal = 0;
for (iC = 1; iC<=totalCampos; iC++) {
        calcSubTotal += parseFloat(document.getElementById("vTot"+iC).value);
}
SubTot.value = calcSubTotal.toFixed(2);
calcTotal = (calcSubTotal);
objTotal.value = calcTotal.toFixed(2);
}
</script>
</head>
<body>
<form name="form1" action="" method="post">

<script type="text/javascript">
var linha2 = "";
linha2 += "<table width='980' border='0'>";
linha2 += "<tr>";
linha2 += "<td width='100px'>Produto</td>";
linha2 += "<td width='100px'>Quantidade</td>";
linha2 += "<td width='100px'>Preço de Tabela</td>";
linha2 += "<td width='100px'>Preço do Cliente</td>";
linha2 += "<td width='100px'>Corte + Dec</td>";
linha2 += "<td width='100px'>Frete</td>";
linha2 += "<td width='100px'>Total Produto</td>";
linha2 += "<td width='100px'></td>";
linha2 += "<td width='100px'></td>";
linha2 += "<td width='80px'></td>";
linha2 += "</tr>";
linha2 += "</table>";
document.write (linha2);
</script>

<script type="text/javascript">
//Escrevendo o código-fonte HTML e ocultando os campos criados:
for (iLoop = 1; iLoop <= totalCampos; iLoop++) {
var linha = "";
if (iLoop <=1) {
        visualizar = "";
} else {
        visualizar = "none";
}

		linha += "<table width='980' border='0'>";
        linha += "<tr id='linha"+iLoop+"' style='display:"+visualizar+"'>";
        linha += "<td width='100px'>";
        linha += "<select id='sel"+iLoop+"' onchange='somar("+iLoop+")'>";
        linha += "<option value=''>---</option>";
        linha += "<option value='2650.00'>FQ.01</option>";
        linha += "<input type='hidden' name='mercado' id='mercado' value='2'>";		
        linha += "<option value='2480.00'>FQ.02</option>";
        linha += "<option value='3300.00'>FQ.06</option>";
        linha += "<option value='3200.00'>FQ.07</option>";
        linha += "<option value='2750.00'>FQ.08</option>";
        linha += "</select>";
        linha += "</td>";
        linha += "<td width='100px'>";
        linha += "<input type='text' id='qtde"+iLoop+"' onkeyup='somar("+iLoop+");' size='3' value='1'>";
        linha += "</td>";
        linha += "<td width='100px'>";
        linha += "<input type='text' size='7' id='vUnit"+iLoop+"' readonly='readonly' value='0.00'>";
        linha += "</td>";
        linha += "<td width='100px'>";
        linha += "<input type='text' size='7' id='vCliente"+iLoop+"' readonly='readonly' value='0.00'>";
        linha += "</td>";
		linha += "<td width='100px'><input type='text' size='5' name='decapagem"+iLoop+"' id='decapagem"+iLoop+"' value='35.00' onkeyup='somar("+iLoop+")'></td>";
        linha += "<td width='100px'><input type='text' size='5' name='frete"+iLoop+"' id='frete"+iLoop+"' value='50.00' onkeyup='somar("+iLoop+")'></td>";
        linha += "<td width='100px'>";
        linha += "<input type='text' size='8' id='vTot"+iLoop+"' readonly='readonly' value='0.00'>";
        linha += "</td>";
        linha += "<td width='100px'><input type='text' size='8' id='subTotal' readonly='readonly' value='0.00'></td>";
		linha += "<td width='100px'><input type='text' size='8' id='total' readonly='readonly' value='0.00'></td>";
		linha += "<td width='80px'><input type='button' value='X' onclick='RemoverCampos("+iLoop+")'></td>";
		linha += "</tr>";
		linha += "</table>";
document.write (linha);
}

function RemoverCampos(id) {
//Criando ponteiro para hidden1:        
var hidden1 = document.getElementById("linha"+id);

//Pegar o valor do campo que será excluído:
var campoValor = document.getElementById("linha"+id).value;
        //Se o campo não tiver nenhum valor, atribuir a string: vazio:
        if (campoValor == "") {
                campoValor = "vazio";
        }

        {
                document.getElementById("linha"+id).style.display = "none"; iCount--;
                
                //Removendo o valor de hidden1:
                if (hidden1.value.indexOf(",linha"+id) != -1) {
                        hidden1.value = hidden1.value.replace(",linha"+id,"");
                }else if (hidden1.value.indexOf("linha"+id+",") == 0) {
                        hidden1.value = hidden1.value.replace("linha"+id+",","");
                }else{
                        hidden1.value = "";
                }
        }
}
AddCampos()
</script>
<input type="button" value="Adicionar campos" onClick="AddCampos()">
<input type="hidden" name="hidden2" id="hidden2">
<br><br>
<br><br>
</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.