De momento cuando introduzco los productos nuevos ya les indico el tipo de iva y Req que tendrán para así agilizar el proceso de introduccion de lineas aunque tambien hay un combo para cambiar los valores por si acaso. Poniendo la cantidad me hereda el precio y los tipos de iva y req y me calcula el importe de esa linea, lo que tendré que añadir de cada tipo de iva y lo que tendré que añadir de cada tipo de req. las lineas las hago visibles en el albaran con un Frame y me recalcula todos los totales de tipos de ivas y reqs, los totales parciales de ivas y reqs, la suma del importe y el total. Todo eso me lo hace bien. El problema lo tengo al intentar de borrar lineas. Me borra bien las lineas, el problema lo tengo con el recalculo de los totales pues hereda datos confusos. A ciencia cierta que se puede hacer todo de muchas maneras pero no he encontrado la manera correcta y por eso pido vuestra ayuda. Ahi va un poco de codigo y quedo a la espera.. Gracias.
este seria el framelineas.php
Código:
en la funcion hago los mismos calculos para el req pero los he quitado para que me quepa el mensaje.function eliminar_linea(codalbarantmp,numlinea,importe,lineaivaprimero,lineaivasegundo,lineaivatercero,lineareqprimero,lineareqsegundo,lineareqtercero) //,parcialivaprimero,parcialivasegundo,parcialivatercero,parcialreqprimero,parcialreqsegundo,parcialreqtercero { if (confirm(" Desea eliminar esta linea ? ")) { parent.document.getElementById("baseimponible").value=parseFloat(parent.document.getElementById("baseimponible").value) - parseFloat(importe); parent.document.getElementById("parcialivaprimero").value=parseFloat(parent.document.getElementById("parcialivaprimero").value) - parseFloat(lineaivaprimero); parent.document.getElementById("parcialreqprimero").value=parseFloat(parent.document.getElementById("parcialreqprimero").value) - parseFloat(lineareqprimero); parent.document.getElementById("parcialivasegundo").value=parseFloat(parent.document.getElementById("parcialivasegundo").value) - parseFloat(lineaivasegundo); parent.document.getElementById("parcialreqsegundo").value=parseFloat(parent.document.getElementById("parcialreqsegundo").value) - parseFloat(lineareqsegundo); parent.document.getElementById("parcialivatercero").value=parseFloat(parent.document.getElementById("parcialivatercero").value) - parseFloat(lineaivatercero); parent.document.getElementById("parcialreqtercero").value=parseFloat(parent.document.getElementById("parcialreqtercero").value) - parseFloat(lineareqtercero); parent.document.getElementById("baseimpuestosreq").value=parseFloat(parent.document.getElementById("parcialreqtercero").value) + parseFloat(parent.document.getElementById("parcialreqsegundo").value) + parseFloat(parent.document.getElementById("parcialreqprimero").value); parent.document.getElementById("baseimpuestosiva").value=parseFloat(parent.document.getElementById("parcialivatercero").value) + parseFloat(parent.document.getElementById("parcialivasegundo").value) + parseFloat(parent.document.getElementById("parcialivaprimero").value); var a1=parseFloat(parent.document.getElementById("baseimponible").value); var a2=Math.round(a1*1000)/1000 ; parent.document.getElementById("baseimponible").value=parseFloat(a2); var b1=parseFloat(parent.document.getElementById("baseimpuestosiva").value); var b2=Math.round(b1*1000)/1000 ; parent.document.getElementById("baseimpuestosiva").value=parseFloat(b2); var c1=parseFloat(parent.document.getElementById("baseimpuestosreq").value); var c2=Math.round(c1*1000)/1000 ; parent.document.getElementById("baseimpuestosreq").value=parseFloat(c2); var r1=parseFloat(a2 + b2); var r2=parseFloat(c2 + r1); var r3=Math.round(r2*1000)/1000 ; parent.document.getElementById("preciototal").value=parseFloat(r3); document.getElementById("frame_datos").src="eliminar_linea.php?codalbarantmp="+codalbarantmp+"&numlinea=" + numlinea; } else { parent.reload();}} </script>
en la url meto mas valores de los necesario para ver lo que esta pasando
y en la pagina padre(nuevo albaran) la funcion para recalcular ivas y reqs
Código:
LO mismo que antes, tambien hago lo mismo con los tipos de req pero no los he copiado para que quepa el mensaje.var precio=document.getElementById("precio").value; var cantidad=document.getElementById("cantidad").value; var tipoiva=document.getElementById("tipoiva").value; tipoiva=tipoiva/100; total=precio*cantidad; tipoiva=total*tipoiva; var conseguir=parseFloat(tipoiva); var result=Math.round(conseguir*100)/100 ; document.getElementById("parcialiva").value=parseFloat(result); var parcialiva=document.getElementById("tipoiva").value; switch (parcialiva) { case "4.00": document.getElementById("lineaivaprimero").value=result; document.getElementById("lineaivasegundo").value=0; document.getElementById("lineaivatercero").value=0; document.getElementById("ivaprimero").value=result; document.getElementById("ivasegundo").value=0; document.getElementById("ivatercero").value=0; break; case "10.00": document.getElementById("lineaivasegundo").value=result; document.getElementById("lineaivaprimero").value=0; document.getElementById("lineaivatercero").value=0; document.getElementById("ivasegundo").value=result; document.getElementById("ivaprimero").value=0; document.getElementById("ivatercero").value=0; break; case "21.00": document.getElementById("lineaivatercero").value=result; document.getElementById("lineaivaprimero").value=0; document.getElementById("lineaivasegundo").value=0; document.getElementById("ivatercero").value=result; document.getElementById("ivaprimero").value=0; document.getElementById("ivasegundo").value=0; break; case "0.00": document.getElementById("lineaivaprimero").value=0; document.getElementById("lineaivasegundo").value=0; document.getElementById("lineaivatercero").value=0; document.getElementById("ivaprimero").value=0; document.getElementById("ivasegundo").value=0; document.getElementById("ivatercero").value=0; break; default: window.alert("La has vuelto a cagar");} }
Para mi es un proyecto enorme y muy importante asi que ansío vuestra ayuda.