Formule in Javascript nella tabella Preventivo

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:

Tabella Budget con formule in Javascript

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.

Variabili nella pianificazione finanziaria

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.

Funzioni Budget

Altre alle API budget definite nell'API della classe contabilità, ci sono delle funzioni specifiche.

budgetGetPeriod(tDate, period)

Questa funziona si impiega in combinazione dell'uso della ripetizione.
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
  • 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 ed esegue un file javascript, con la possibilità di creare delle proprie funzioni e variabili che possono essere richiamate nello script.
    • 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])

    Questa formula richiama la funzione Banana.document.budgetExchangeDifference.
     

    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;
    }
    

     

    Aiutaci a migliorare la documentazione

    Sono benvenuti suggerimenti per come migliorare questa pagina.

    Dicci quale tema necessita di una spiegazione migliore o come chiarire meglio un argomento.

    Condividi questo articolo: Twitter | Facebook | LinkedIn | Email