Usare il cfdiv e cfform per calcolare importi, iva e totale fattura
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:
<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
<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
<cfset listval=url.imp>
<cfloop index="i" list="#listval#" delimiters=",">
<cfset tot=tot+i>
</cfloop>
TOTALE: <cfoutput>#LSCurrencyFormat(tot)#</cfoutput>