Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Somma campi da script br1

    Ciao a tutti e Buon Inizio Anno,

    tempo fa ho utlizzato uno script di br1 per la somma automatica dei campi:

    codice:
    code:--------------------------------------------------------------------------------<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(/\,/,"\."),10); 
    		i++;
    	}
    	ff.elements[pre+'_tot'].value=duecifre(somma)
    	ff.elements[pre+'_iva'].value=duecifre(somma*0.2)
    	ff.elements[pre+'_som'].value=duecifre(somma*1.2)
    }
    </script>
    --------------------------------------------------------------------------------
    adesso mi chiedo se è possibile inserire pure un campo sconto(-) prima del totale complessivo

    Grazie a tutti
    Pippo Giacalone
    giacalone@tin.it

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Lo sconto e' fisso o viene preso da un campo del form? nel secondo caso, in che formato viene scritto? deve essere applicato prima o dopo l'IVA?

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Grazie per aver risposto br1,

    allora lo sconto è un campo del form, viene scritto ed è ad importo ( con o senza la virgola dei decimali lo stabilisci tu )
    Pippo Giacalone
    giacalone@tin.it

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    inserire pure un campo sconto(-) prima del totale complessivo
    poiche' i metodi per applicare uno sconto sono molteplici (in percentuale o in valore assoluto? sull'imponibile o sul totale? ecc.) lo prendo alla lettera
    codice:
    ...
    	ff.elements[pre+'_tot'].value=duecifre(somma)
    	sconto = parseFloat(ff.elements[pre+"_sco"].value.replace(/\,/,"\."),10); 
    	somma = somma - sconto;
    	ff.elements[pre+'_iva'].value=duecifre(somma*0.2)
    	ff.elements[pre+'_som'].value=duecifre(somma*1.2)
    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  5. #5
    scusa br1 hai ragione sono stato troppo evasivo,
    in effetti devo calcolare lo sconto in valore assoluto e sull'imponibile

    Grazie e nuovamente scusa
    Pippo Giacalone
    giacalone@tin.it

  6. #6
    Ciao br1,

    ho modificato lo script come mi hai detto tu, ma non mi funziona:

    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(/\,/,"\."),10); 
    		i++;
    	}
    	ff.elements[pre+'_tot'].value=duecifre(somma)
    	sconto = parseFloat(ff.elements[pre+"_sco"].value.replace(/\,/,"\."),10); 
    	somma = somma - sconto;
    	ff.elements[pre+'_iva'].value=duecifre(somma*0.2)
    	ff.elements[pre+'_som'].value=duecifre(somma*1.2)
    }
    </script>
    Pippo Giacalone
    giacalone@tin.it

  7. #7
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    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
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  8. #8
    intanto grazie per la risposta, ancora non funge .... ho messo una paginetta online per farti vedere cosa fa..

    www.posdata.it/prova.asp
    Pippo Giacalone
    giacalone@tin.it

  9. #9
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Funziona se lo sconto lo scrivi per primo...

    Per evitare il problema devi prevedere che il valore possa non essere inserito ed inoltre gestire l'evento onchange nel relativo campo... ti posto le porzioni da modificare:

    nello script:
    sconto = parseFloat("0"+ff.elements[pre+"_sco"].value.replace(/\,/,"\."));

    nel form:
    <input type="text" name="a_sco" size="4" style="border:1px dotted #999999; font-family: Arial; font-size: 9pt; color:#005782; background-color:#FFF5EC; font-weight:bold; text-align:right" onchange="Somma(this);">

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  10. #10
    Grazie br1,

    funziona alla grande....

    posso mettere il campo sconto sul form prima del campo iva ?
    Pippo Giacalone
    giacalone@tin.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.