Usare il cfdiv e cfform per calcolare importi, iva e totale fattura

  • 21
  • May 2013
  • Sales @ Contech Lab
  • View: 25143 | 0 Comments

  • cfdiv | cfform | javascript

  • Qualche tempo fa ho sviluppato un software di fatturazione, che utilizziamo anche qui alla Contech. Per i vari calcoli, quantità, somme, iva, totali ho provato ad usare il cfdiv.

    Credo possa essere utile a chi non conosce o conosce pochissimo javascript.
    La fattura presa come esempio, ha 3 righe, con quantità, importo prodotto, iva e totale. In fondo alla fattura ovviamente il totale di tutti gli importi.
    Per fare tutto questo ho utilizzato tre files. Il primo file chiamato form.cfm, contiene la griglia delle righe della fattura:

    view plain print about
    <cfajaximport tags="cfform,cfdiv">

    <cfdump var="#form#">

    <!---  --->
    <cfparam name="var_tot" default="0">

    <!--- loop per le righe della fattura che verranno inviate al cfdiv per il calcolo del totale --->
    <cfloop from="1" to="3" index="i">
        <cfparam name="totale#i#" default="0">
        <cfset var_tot = listappend(var_tot, "{totale"&#i#&"}")>
    </cfloop>
    <!--- // --->

    <cfform action="" method="post">
        <table>
        <cfloop from="1" to="3" index="i">
        <tr>    
            <td>Q.ta</td><td><cfinput type="text" name="quantita#i#" value="0"></td>  
            <td>Importo</td><td><cfinput type="text" name="importo#i#" value="0"> </td>
            <td>Tax</td><td><cfinput type="text" name="iva#i#" value="0"> </td>
    <!--- componente per il calcolo iva e totale prodotto --->        
    <td>Totale</td><td class="price"><cfinput type="text" name="totale#i#" value="0"
     bind="cfc:somma.getSomma({quantita#i#},{importo#i#},{iva#i#})" >
    </td>        
        </tr>
        </cfloop>
        </table>

    <br>

    <!--- cfdiv per calcolo totale fattura ---> 
    <cfdiv bind="url:divtot.cfm?imp=#var_tot#" id="checktot">

        <cfinput type="submit" name="invia">

    </cfform>

    Il secondo file, è il cfc per il calcolo del totale prodotto, e l'iva, chiamato somma.cfc

    view plain print about
    <cfcomponent>
        <cffunction name="getSomma" access="remote" returntype="string">
                    
            <cfargument name="quantita" default="0">
            <cfargument name="importo" default="0">
            <cfargument name="iva" default="0">
            
            <cfset totaleSomma=#evaluate((importo*quantita)*(1+iva/100))#>
            
            <cfreturn totaleSomma>
        </cffunction>    
        
    </cfcomponent>

    Il terzo file, divtot.cfm, e calcola il totale fattura

    view plain print about
    <cfparam name="tot" default="0">
    <cfset listval=url.imp>

    <cfloop index="i" list="#listval#" delimiters=",">
        <cfset tot=tot+i>
    </cfloop>


    TOTALE: <cfoutput>#LSCurrencyFormat(tot)#</cfoutput>