Pagina 3 di 4 primaprima 1 2 3 4 ultimoultimo
Visualizzazione dei risultati da 21 a 30 su 37

Discussione: Fare una somma totale

  1. #21
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Forse ho capito i 2 problemi.

    1. quando fa il calcolo.
    La routine viene avviata quando vengono modificati i campi pz e pre, ma ti occorre anche che venga fatto quando scrivi l'iva.
    Il campo Iva quandi dovra` chiamare la funzione (con gli stessi parametri.

    2. il calcolo dell'imponibile.
    E` il solito problema del parseInt() o parseFloat.

    Ti propongo un nuovo algoritmo (che dovrebbe essere anche un po' piu` veloce):

    ff.iva10.value = iva10t * 0.1; // *10/100
    ff.impon10.value = iva10t * 0.9; // - ff.iva10.value;
    ff.iva20.value = iva20t * 0.2; // *20/100
    ff.impon20.value = iva20t * 0.8; // - ff.iva20.value;

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  2. #22
    Michele, purtroppo il problema sussiste
    Cos'altro può essere?
    Forse è meglio che ti prepari una pagina PHP per poterlo testare anche nel tuo computer? Ti viene meglio?

  3. #23
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Ho difficolta` ad inserire pagina. Non parliamo poi di PHP (che per giunta non conosco).

    Quale problema persiste? Il primo o il secondo?

    Se e` il primo, posta il codice HTML di una riga del form (come lo vedi nel browser).

    Se e` il secondo posta la funzione (come la hai modificata).

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  4. #24
    Ciao, ti posto il codice in HTML:
    Codice PHP:
    <HTML>
    <
    HEAD>
    <
    TITLE>Fattura con IVAinserisci una nuova voce</TITLE>
    <
    link rel="stylesheet" type="text/css" href="style.css">

    <
    script>
    function 
    calcola(ff,k) {
      
    ff.elements['prezz'+k].value parseFloat(ff.elements['pz'+k].value) * parseFloat(ff.elements['pre'+k].value); 

      var 
    pretot 0
      var 
    iva10t 0;
      var 
    iva20t 0;
      for(var 
    i=1i<=41i++) { 
        var 
    cc parseFloat(ff.elements['prezz'+i].value);
        var 
    iva ff.elements['iva'+i].value// se iva e` campo text
        
    var ii ff.elements['iva'+i];
        if(!
    isNaN(cc) ) {
          
    pretot += cc
          if(
    iva=='10'iva10t += cc;
          else if(
    iva=='20'iva20t += cc;
        }
      }
      
    ff.iva10.value iva10t 0.1// *10/100 
      
    ff.impon10.value iva10t 0.9// - ff.iva10.value; 
      
    ff.iva20.value iva20t 0.2// *20/100 
      
    ff.impon20.value iva20t 0.8// - ff.iva20.value; 

      
    return true;
    }
    </script>
    </HEAD>
    <BODY>

    [b]Dati merce acquistata[/b]

    <table width="100%">
      <tr>
        <td>n°</td>
        <td>Descrizione</td>
        <td>U.M.</td>
        <td>Pezzi</td>
        <td>Prezzo</td>
        <td>Prezzo TOT</td>
        <td>IVA %</td>
      </tr>
      <tr>
        <td width="1">1</td>
        <td><INPUT TYPE="text" NAME="descr1" SIZE=70></td>
        <td><INPUT TYPE="text" NAME="um1" SIZE=3></td>
        <td><input type="text" name="pz1" size="5" onChange="calcola(this.form,1);"></td>
        <td><input type="text" name="pre1" size="7" onChange="calcola(this.form,1);"></td>
        <td><input type="text" name="prezz1" size="7" readonly="true"></td>
        <td><INPUT TYPE="text" NAME="iva1" SIZE="3" MAXLENGTH="2"></td></tr>  
      
    </table>



    [b]Calcolo automatico dell'IVA e totale fattura[/b]

    Totale fattura <input type="text" name="totfatt" size="7" readonly="true">

    IVA 20% <input type="text" name="iva20" size="7"> 
    Imp. 20% <input type="text" name="impon20" size="7">

    IVA 10% <input type="text" name="iva10" size="7"> 
    Imp.10% <input type="text" name="impon10" size="7">








    <INPUT TYPE="SUBMIT" NAME="invio" VALUE="Inserisci fattura">

    </FORM>


    </BODY>
    </HTML> 
    Per ora ho scritto solo descr1, um1, pz1 ecc. in realtà continua anche con descr2, descr3 ecc.

    Fammi sapere

  5. #25
    ciao, dimenticavo, il problema è uguale a prima, non sottrae l'imponibile per trovare l'IVA e non visualizza il risultato dell'imponibile se non scrivo un'altra riga.

    Ciao e grazie

  6. #26
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Ma perche` usi le maiuscole per i tag e gli attributi? E` sintassi vecchia, deprecata.

    Questa riga:
    <td><INPUT TYPE="text" NAME="iva1" SIZE="3" MAXLENGTH="2"></td></tr>

    deve diventare:
    <td><input type="text" name="iva1" size="3" maxlength="2" onchange="calcola(this.form,1);"></td></tr>
    E questo risolve il problema che faceva il calcolo solo dopo una nuova immissione.

    Per l'altro non riesco a capire. Controlla esattamente i nomi dei campi (io non ho trovato errori, ma quattro occhi sono meglio di due).


    PS Questa riga non serve (serviva per l'altra sintassi):
    var ii = ff.elements['iva'+i];

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  7. #27
    Ciao, ecco com'è in finale:
    Codice PHP:
    <script>
    function 
    calcola(ff,k) {
      
    ff.elements['prezz'+k].value parseFloat(ff.elements['pz'+k].value) * parseFloat(ff.elements['pre'+k].value); 

      var 
    pretot 0
      var 
    iva10t 0;
      var 
    iva20t 0;
      for(var 
    i=1i<=41i++) { 
        var 
    cc parseFloat(ff.elements['prezz'+i].value);
        var 
    iva ff.elements['iva'+i].value// se iva e` campo text
        
    var ii ff.elements['iva'+i];
        if(!
    isNaN(cc) ) {
          
    pretot += cc
          
    ff.totfatt.value pretot;
          if(
    iva=='10'iva10t += cc;
          else if(
    iva=='20'iva20t += cc;
        }
      }
      
    ff.iva10.value iva10t 0.1// *10/100 
      
    ff.imp10.value iva10t 0.9// - ff.iva10.value; 
      
    ff.iva20.value iva20t 0.2// *20/100 
      
    ff.imp20.value iva20t 0.8// - ff.iva20.value; 

      
    return true;
    }
    </script> 
    C'era un problema con il totale (abbimao dimenticato una riga sullo script ma l'ho risolto.
    L'imponibile lo trova subito e va benisismo, l'unico problema è l'IVA, lo spazio rimane bianco, nno scrive neppure 0!!
    Ho controlalto anc'hio e per me è tutto apposto. Sembra impossiible però è la stessa formula che usa per l'imponibile ma con un campo diverso!!! Per prova ho eliminato dallo script il campo ff.imp10.value = iva10t * 0.9; e lasciato quello dell'IVA ma il risultato rimane uguale!!
    Non sò cosa dire!

    Una domanda, mi spieghi meglio dove collocare la riga per l'arrotondamento ai due decimali da fare ai campi prezz, totfatt e i 4 campi dell'IVA e l'imponibile? Grazie

  8. #28
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    C'e` un errore nella riga inserita da te: deve stare fuori dal loop.

    Risitemo anche il tutto, in modo che sia piu` facile da capire.
    codice:
    function calcola(ff,k) {
      var pzk = parseFloat(ff.elements['pz'+k].value);
      var prek = parseFloat(ff.elements['pre'+k].value); 
      var prezk = Math.round(pzk * prek * 100) / 100;
      ff.elements['prezz'+k].value = prezk;
    
      var pretot = 0; 
      var iva10t = 0;
      var iva20t = 0;
      for(var i=1; i<=41; i++) { 
        var cc = parseFloat(ff.elements['prezz'+i].value);
        var iva = ff.elements['iva'+i].value; // se iva e` campo text
        if(!isNaN(cc) ) {
          pretot += cc; 
          if(iva=='10') iva10t += cc;
          else if(iva=='20') iva20t += cc;
        }
      }
      ff.totfatt.value = Math.round(pretot * 100) / 100;
    
      ff.iva10.value = Math.round(iva10t * 10) / 100; // *10/100 
      ff.imp10.value = Math.round(iva10t * 90) / 100; // - ff.iva10.value; 
      ff.iva20.value = Math.round(iva20t * 20) / 100; // *20/100 
      ff.imp20.value = Math.round(iva20t * 80) / 100; // - ff.iva20.value; 
    
      return true;
    }
    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  9. #29
    Ciao, non capisco, è uguale a prima, calcola il totale e l'imponibile ma dell'IVA manco l'ombra...

  10. #30
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    In effetti non ho cambiato molto: solo alcuni parseInt() e sim.

    Ma l'altro problema (quelo che calcolava in ritardo) e` andato a posto?

    I nomi sono corretti? (JS e` case-sensitive!)

    Non e` che ci siano dei nomi doppi?

    Prova anche a modificare i nomi dei campi (in tutti i posti dove sono usati): magari abbiamo incontrato un nome che e` una parola riservata (non mi pare, ma con JS le parole riservate sono parecchie).

    Come vedi sto brancolando nel buio anch'io.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

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 © 2026 vBulletin Solutions, Inc. All rights reserved.