ho modificato lo script come mi hai detto tu, ma non mi funziona:
tanto per restare sul generico...

Tieni presente che ho supposto che, rispettando le convenzioni originarie, al campo sconto ho assegnato il nome dinamico:

ff.elements[pre+"_sco"]

a proposito... nel passaggio da parametri del form interi a decimali (da perseInt a parseFloat) e' rimasto nello script un ",10" in piu'... errore ripetuto nella riga aggiunta per ultima

Riporto lo script corretto... se non dovesse andare (non ho il tempo di inventarmi una pagina completa per provarlo) posta un link

codice:
<script language="javascript">
function duecifre(nn) {
	som = String(nn) 
	som += (som.indexOf('.')>=0)?'0':'.00'; 
	som = som.substr(0,som.indexOf('.')+3) 
	return som.replace(/\./,"\,");
}
function Somma(tt){
	var ff = tt.form
	var pre = tt.name.substr(0,1)
	var somma = 0
	var i=0;
	while(ff.elements[pre+(i+1)]) {
		if(ff.elements[pre+(i+1)].value!='')
			 somma+=parseFloat(ff.elements[pre+(i+1)].value.replace(/\,/,"\.")); 
		i++;
	}
	ff.elements[pre+'_tot'].value=duecifre(somma)
	sconto = parseFloat(ff.elements[pre+"_sco"].value.replace(/\,/,"\.")); 
	somma = somma - sconto;
	ff.elements[pre+'_iva'].value=duecifre(somma*0.2)
	ff.elements[pre+'_som'].value=duecifre(somma*1.2)
}
</script>
ciao