In questo articolo
La colonna Formula permette di inserire delle formule di calcolo. Gli importi di preventivo possono così essere calcolati in base a degli altri valori della stessa pianificazione (vedi Esempi di formule).
- Indicare il costo merce in base a una percentuale delle vendite.
- Aumentare il budget delle vendite in base a una percentuale di crescita.
- A fine anno, calcolare gli ammortamenti in base al valore degli investimenti effettuati.
- Trimestralmente, calcolare gli interessi sul conto bancario in base all'utilizzo effettivo (giorni/365).
- Mensilmente, calcolare le imposte sull'utile in base all'utile effettivamente realizzato.
Se si inserisce un valore nella colonna Formula , la colonna Importo viene calcolata dal programma in base alla formula.
File con esempi
Per degli esempi in merito alle formule si rimanda alle seguenti spiegazioni:
- Modello con registrazioni con uso della colonna Quantità e della colonna Formula.
- Modello con registrazioni per la contabilità multi-moneta che fanno uso della colonna Formula per la moneta base.
- Vedi anche Esempi dell'uso delle formule nelle previsioni finanziaria.
Formule di calcolo in Javascript
- La formula deve essere espressa nel linguaggio Javascript (da non confondere con il linguaggio Java).
- Se vi è una formula (o un qualsiasi testo), il valore della colonna Importo viene impostato in base al risultato della formula.
- Si possono usare tutte le funzioni del linguaggio Javascript, più le API messe a disposizioni da Banana.
Separatore di decimali
Come separatore di decimali javascript usa unicamente il punto ".".
Se si usa un separatore diverso, quello usato per numeri nel formato locale, è probabile che il numero venga troncato.
Sequenza di calcolo e mancanza di valori futuri
Per maggiori informazioni sulla sequenza di calcolo vedi Logica della Pianificazione.
- Le righe sono ordinate per data e risolte partendo dalla più bassa.
- Se ci sono righe con la medesima data, l'ordine è quello di inserimento.
- Quando una riga viene risolta, non essendo ancora state elaborate le righe successive, con le formule si avrà accesso solo ai dati fino a quel momento.
Importo = risultato dell'ultima istruzione
In Javascript il punto e virgola ";" è usato per separare le espressioni.
Se la formula Javascript contiene più espressioni separate da ";" il valore della colonna Importo sarà il risultato dell'ultima espressione eseguita.
- 10*3 //verrà ritornato 30
- Se vi sono più espressioni verrà ripresa il risultato dell'ultima.
10*3;7; //Verrà ripreso il 7; - Se vi è il return viene ripreso il valore dopo il return.
return 10; // viene ripreso il 10
Variabili
Le variabili di Javascript sono gli elementi più potenti della programmazione in quanto permettono di accedere alla memoria del computer con un nome, salvare e riprendere dei valori.
Le variabili non esistono nelle formule di Excel, ma sono simili al nome delle celle, con la differenza che il nome può essere attribuito liberamente.
La variabile viene creata indicando un nome e indicando con l'uguale.
È possibile definire e usare delle variabili direttamente all'interno delle righe. Scrivendo il nome della variabile nella formula, il valore salvato viene ripreso.
Qui viene creata la variabile price e gli viene attribuito il valore 10.
var price = 10;
oppure anche semplicemente
price = 10;
qui seguito creiamo una variabile total a cui viene attribuito il valore price moltiplicato per 5.
total = price * 5;
Il valore della variabile può essere riassegnato.
price = 20;
Oggetti
Gli oggetti di Javascipt sono delle variabili che permettono di salvare più valori, ognuno indicato con una proprietà.
Qui di seguito viene creato l'oggetto prices indicando le parentesi graffe. Per accedere e salvare i valori si usa invece le parentesi quadre oppure si indica in nome della proprietà dopo il nome dell'oggetto.
prices = {} prices['car'] = 10; prices.car = 10; prices['computer'] = 20; prices.computer = 20;
Array
Gli array di Javascript sono delle variabili che contengono più valori che sono accessibili in sequenza.
Gli array si creano usando le parentesi quadre e anche per accedervi. Il primo elemento dell'array ha indice 0.
costs = [1,2,3]; costs[0]=3; result = prices['car'] - costs[0];
Variabili automatiche
- budgetCurrent
È un oggetto che contiene la tabella con le righe di budget successivamente alla creazione delle ripetizioni.
Servono per riprendere i valori, in congiunzione con il JReapeatNumber. - DEBUG è una variabile che può essere "true" o falsa.
Se è "true", nei messaggi sono visualizzati tutti i risultati delle formule. - row
È un oggetto di javascript che fa riferimento alla riga corrente.- I valori delle celle possono essere ripresi con la funzione value ("columnNameXml").
row.value ("date") ritorna la data della registrazione. - row.value ("JRepeatNumber") ritorna il progressivo della ripetizione.
La prima ripetizione è 0.
- I valori delle celle possono essere ripresi con la funzione value ("columnNameXml").
Funzioni Budget
Altre alle API budget definite nell'API della classe contabilità, ci sono delle funzioni specifiche.
budgetGetPeriod(tDate, period)
Quando si indicano delle ripetizioni è opportuno riferirsi ad un periodo di calcolo e non ad una data precisa.
- Parametro tDate.
La data a cui si riferisce il calcolo del periodo. Di regola si usa la data della riga di registrazione. - Parametro period.
Una sigla- Per il periodo corrente
- "MC" mese corrente
- "QC" trimestre corrente
- "YC" anno corrente.
- Per il periodo precedente
- "MP" mese precedente
- "QP" trimestre precedente
- "YP" anno precedente .
- Nella versione Experimental (a partire dalla versione 9.1) si possono usare anche i
- "DC" giorno corrente
- "DP" giorno precedente
- "WC" settimana corrente
- "WP" settimana precedente
- "BC" bimensile corrente (2 mesi)
- "BP" bimensile precedente
- "SC" semestre corrente
- "SP" semestre precedente
- Per il periodo corrente
- Valore di ritorno.
Un oggetto composto da due date- startDate
- endDate
// example t = BudgetGetPeriod ('2015-01-01', 'MP') ritorna t.startDate // 2014-12-01 t.endDate // 2014-12-31
Funzioni budget specifiche
Le seguenti sono simili a quelle disponibili con Banana.document, però possono essere usate senza fare indicare l'oggetto Banana.document.
Da tenere conto:
- Invece del parametro startDate può essere usata una delle sigle periodo come "MC", "MP", spiegate nel budgetGetPeriod.
- Se si usa una sigla, la funzioni calcola la data iniziale e finale del periodo, in base alla data della registrazione corrente.
- Ha senso usare la data fine solo se è precedente a quella della riga.
Se è uguale o superiore, comunque non ha effetto perché i valori successivi alla riga attuale non sono ancora disponibili, perché non sono stati elaborati. -
- Se la data della riga di registrazione è il 15 aprile.
- budgetBalance("1000","MP") ritorna il saldo del conto 1000 alla fine di marzo.
- budgetBalance("1000","MC") ritorna il saldo al momento attuale è lo stesso di budgetBalance("1000").
- budgetTotal("1000","QP") ritorna il totale del movimento per il trimestre precedente.
- budgetTotal("1000","QC") ritorna il totale del movimento per il trimestre precedente, fino alla data attuale.
budgetBalance(account, startDate, endDate, extraParam)
Il saldo fino alla riga attuale.
budgetBalance('1000', 'MP'); //ritorna il saldo del 1000 alla fine del mese precedente
budgetOpening(account, startDate, endDate, extraParam)
Il saldo all'inizio del periodo.
budgetTotal(account, startDate, endDate, extraParam)
La differenza fra movimento dare e avere del periodo.
budgetTotal('1000', 'MC'); //ritorna il movimento totale del conto 1000 per il mese corrente
budgetInterest( account, interest, startDate, endDate, extraParam)
Calcola l'interesse su un conto, per il periodo indicato (al massimo la data corrente)
Si usa per calcolare l'interesse su un conto a fine periodo, la riga dove è indicata la formula deve essere sempre l'ultima per questa data.
- parametro account
È il numero di conto sui cui movimenti verranno calcolati gli interessi - parametro interest
Indica il tasso di interesse in percentuale.- positivo (2.5, 4, 10) calcola l'interesse sul movimento dare del conto.
- negativo (-2.5, -4, -10) calcola l'interesse sul movimento avere del conto..
credit(importo)
-
Se il parametro importo è negativo, ritorna l'importo come valore positivo.
credit(-100) // ritorna 100 - Se il parametro importo è positivo, ritorna 0 (zero)
credit(100) // ritorna 0
Questa funzione è utile in abbinamento alle altre funzione budgetBalance per lavorare solo sui saldi che servono.
Se si vuole calcolare la percentuale sulle vendite, usando questa funzione è più semplice.
credit(budgetTotal('1000')) // inserisce il valore solo se è negativo.
debit(importo)
-
Se il parametro importo è positivo, ritorna l'importo.
debit(100) // ritorna 100 - Se il parametro è negativo, ritorna 0 (zero)
debit(-100) // ritorna 0
Utile se si devono fare calcoli usando solo l'importo dare ed evitare di usare quello avere.
include
- include "file:test.js"
Esegue il contenuto del file indicato. Il nome è relativo al file su cui si sta lavorando. - include "documents:test.js"
Esegue il contenuto del documento testo contenuto nella tabella documents.
Deve essere un file di tipo "text/javascript
Funzioni per contabilità multi monete
Si possono usare anche per contabilità senza multi moneta, in questo caso il conto è sempre in moneta base.
budgetBalanceCurrency(account, startDate, endDate, extraParam)
Il saldo nella moneta del conto fino alla riga attuale.
budgetExchangeDifference (account, [date, exchangeRate])
budgetOpeningCurrency(account, startDate, endDate, extraParam)
Il saldo nella moneta del conto all'inizio del periodo.
budgetTotalCurrency(account, startDate, endDate, extraParam)
Nell'Experimental vi sono anche le funzioni budgetCreditCurrency,budgetDebitCurrency,
Funzioni definite dall'utente
L'utente può definire delle funzioni con il linguaggio Javascript e richiamarle nelle formule.
È possibile definire delle funzioni:
- Direttamente in una formula.
- All'interno di un allegato del tipo codice javascript, indicato in un documento che ha come id linea il nome "_budget.js"
- All'interno di un testo nella tabella documenti e incluso con il comando includi
Nota: nelle funzioni utente al momento non è possibile usare funzioni che accedono ai dati contabili correnti (currentBalance, ...).
function calcTax(profit) { var percentage = 10; if (profit> 50000) aliqpercentage = 10; else if (profit> 100000) percentage =20; return profit* percentage / 100; }