Formule Javascript

Funzioni utilizzabili nella colonna Formula della tabella Preventivo

File con esempi

Per degli esempi in merito alle formule si rimanda alle seguenti spiegazioni:

Tabelle preventivo con formule

 

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 contine 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

È possibile definire e usare delle variabili direttamente all'interno delle righe.
La variabile deve essere stata definita in precedenza.

price = 10;
total = price * 5;

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.

budgetExchangeDifference (account, [date, exchangeRate])

Questa formula richiama la funzione Banana.document.budgetExchangeDifference.

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 la data della riga di registrazione.
  • Parametro period.
    Una sigla
    • "MC", "QC", "YC" per indicare il mese, il trimestre o l'anno corrente.
    • "MP", "QP", "YP" per indicare il mese, il trimestre o l'anno 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 "MC", "QC", "YC", "MP", "QP", "YP"  spiegate nel budgetGetPeriod.
    • Se viene specificata una sigla periodo come data viene usata la 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. 

    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.

    budgetOpeningCurrency(account, startDate, endDate, extraParam)

    Il saldo nella moneta del conto fino alla riga attuale.

    budgetTotalCurrency(account, startDate, endDate, extraParam)

    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
    function calcolaImposte(utile)
    {
       var aliquota = 10;
       if (utile > 50000)
          aliquota = 10;
       else if (utile > 100000)
          aliquota =20;
       return utile * aliquota / 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 | Email