Beregning af felter i faktura
hej.Vil gerne lave et online faktura system.
er i gang med det punkt, hvor man skal udfylde hhv. timer og reservedelspriser.
Der er mulighed for to forskellige timepriser på samme linje. Dette er hvad jeg indtil videre har strikket sammen.
Jeg har fundet, og modificeret koder, fundet her på experten, men har svært ved at gennemskue dem, derfor dette spørgsmål...
<script language="javascript" type="text/javascript">
numFields = 3;
function beregn(fld){
if(!fld.value.match(/^\d+\.?\d*$/)){
alert('Ugyldigt antal angivet');
fld.value = fld.defaultValue;
return false;
}
var num = fld.name.substring(5);
var p = document.getElementById("Pris1").value;
var s = document.getElementById("Sum"+num);
var ialt = document.getElementById("Ialt0");
var ialt1 = document.getElementById("Ialt1");
var pris = p;
if(p.indexOf(",-")>-1){
pris = p.substring(0,p.indexOf(",-"));
}else{
komma = p.indexOf(",")
if(p.indexOf(",")>0){
pris = (p.substring(0,komma)+"."+p.substring(komma+1));
}
}
pris = +pris;
var sum = pris*fld.value;
s.value = formatNum(sum);
sum = 0;
for(i=1;numFields+1>i;i++){
sum += +document.getElementById("Sum"+i).value
}
ialt.value = formatNum(sum);
ialt1.value = formatNum(sum*1.25);
}
function formatNum(t){
if((""+t).length>(""+t).indexOf(".")+3)t=(Math.round(t*100))/100;
if((""+t).indexOf(".")==-1)t=t+".00";
if((""+t).indexOf(".")+2==(""+t).length)t=t+"0";
return t;
}
</script>
<table width="91%" border="0" align="right" cellpadding="0" cellspacing="0">
<tr>
<td>tekst</td>
<td><div align="center">produktpris</div></td>
<td><div align="center">timepris A<span class="style21">
<input name="Pris1" type="text" class="style12" id="Pris2" style="text-align:right;" value="100" size="2" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;beregn(this);" />
</span></div></td>
<td><div align="center">timepris B<span class="style21">
<input name="timepris2" type="text" class="style12" id="timepris2" size="1" />
</span></div></td>
<td><div align="right">I alt </div></td>
</tr>
<tr>
<td width="39%">
<input name="tekst1" type="text" class="style12" id="tekst1" size="35" /></td>
<td width="11%"><div align="center">
<input name="produkt1" type="text" class="style12" id="produkt1" size="2" />
</div></td>
<td width="12%"><div align="center">
<input name="aAntal1" type="text" class="style12" id="aAntal1" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;beregn(this);" size="2" />
</div></td>
<td width="12%"><div align="center">
<input name="bAntal1" type="text" class="style12" id="bAntal1" size="2" />
</div></td>
<td width="14%"><div align="right">
<input name="Sum1" type="text" disabled="disabled" class="style12" id="Sum1" style="text-align:right;" value="" size="4" />
</div></td>
</tr>
<tr>
<td>
<input name="tekst2" type="text" class="style12" id="tekst2" size="35" /></td>
<td><div align="center">
<input name="produkt2" type="text" class="style12" id="produkt2" size="2" />
</div></td>
<td><div align="center">
<input name="aAntal2" type="text" class="style12" id="aAntal2" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;beregn(this);" size="2" />
</div></td>
<td><div align="center">
<input name="bAntal2" type="text" class="style12" id="bAntal2" size="2" />
</div></td>
<td><div align="right">
<input name="Sum2" type="text" disabled="disabled" class="style12" id="Sum2" style="text-align:right;" value="" size="4" />
</div></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td>eks moms</td>
<td><div align="right">
<input name="ialt0" type="text" disabled="disabled" class="style12" id="ialt0" style="text-align:right;" value="" size="4" />
</div></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td>inkl moms</td>
<td><div align="right">
<input name="ialt1" type="text" disabled="disabled" class="style12" id="ialt1" style="text-align:right;" value="" size="4" />
</div></td>
</tr>
</table>
De to felter der hedder "aAntal1" og "aAntal2" Hed oprindeligt "antal1" og "antal2". De virker ikke lige nu, men hvis man ændrer navnene til de oprindelige virker de.
Det er li'som her jeg har indset, at jeg bare ikke er god nok til at gennemskue javascript, for jeg kan ikke se, hvor scriptet genkender "antal-felterne".
Det er meningen at der skal være plads til et uendeligt antal rækker, men her i spørgsmålet arbejdes der med to rækker, for overskuelighedens skyld.
