You are here

Calcoli e Formule

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

Colonna Importo

Ai fini della pianificazione fa stato il valore della colonna Importo.

Il valore della colonna Importo:

  • Può essere inserito manualmente.
  • Può essere il risultato di un calcolo:
    • Se sono inserite una quantità e un prezzo, l'importo sarà il risultato della moltiplicazione di questi valori.
      Se c'é solo la quantità o il prezzo, l'importo sarà 0.
    • Se viene inserita una formula, l'importo sarà il risultato della formula.
      La formula ha priorità anche sulla quantità e sul prezzo. Se c'é una formula il contenuto delle colonne Quantità e Prezzo non viene considerato.

Inserimento di formule di calcolo

Linguaggio 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

Come è spiegato in seguito, le righe sono ordinate per data e risolte partendo dalla più bassa.
Se ci sono operazioni con la medesima data, l'ordine è quello di inserimento.
Quando una riga viene risolta, ci sono solo i risultati delle righe precedenti. Non sono ancora state elaborate le righe successive, quindi nella formula del budget si hanno solo i valori fino a quel momento.

Viene ripreso il risultato dell'ultima operazione

Il valore inserito nella colonna Importo è il risultato dell'ultima operazione eseguita.

  • 10*3 //verrà ritornato 30
  • Se vi sono più operazioni in sequenza, separate da punto e virgola ";" verrà ripresa l'ultima operazione.
    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 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

Alre 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. 

    Elenco funzioni disponibili in tutte le contabilità:

    • 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)
      Se 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 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..

    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)

    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

     

    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;
    

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


    Sequenza di calcolo e ricalcolo

    Tutte le volte che viene modificato un valore nella tabella Preventivo o che si fa un ricalcolo manuale (Maiusc+F9), il programma:

    • Se esiste viene prima di tutto eseguito il contenuto del documento "_budget.js".
    • Ricalcola le righe della tabella Preventivo:
      • Il programma genera le righe ripetute in base alla colonna Data inizio, Data fine e Ripetizione.
        Se a gennaio vi è una riga con una ripetizione mensile, verranno create 12 righe uguali, ma con la data per i diversi mesi dell'anno.
      • Le righe di preventivo sono quindi elaborate in ordine di data (se hanno la medesima data nell'ordine di immissione).
        • Viene calcolato l'importo della registrazione in base alla quantità e prezzo unitario o se c'é una formula in base al risultato della formula.
        • Per la contabilità multi-moneta viene prima eseguita la formula importo in moneta e poi la formula importo in moneta base.
          Se non vi è una formula importo in moneta base, il programma riprende il cambio storico e calcola il controvalore in moneta base.
        • Per la contabilità con IVA viene ricalcolata l'IVA in base all'importo della registrazione.
      • Le righe elaborate in precedenza servono per i calcoli delle righe successive.
        Il saldo dei conti, alla data della riga di preventivo, comprenderà solo gli importi elaborati in precedenza. 
        Se in una registrazione di febbraio si usa una formula per il calcolo del saldo per tutto l'anno, si avrà comunque solo il saldo fino a febbraio. 
    • Ricalcola i valori del preventivo nella tabella conti, sulla base delle righe di preventivo e dei saldi iniziali.
    • Viene aggiornato il valore della colonna totale nella tabella di preventivo.

    Se viene modificata la data di inizio o di fine della contabilità, o di altri valori, che servono al calcolo dei valori di preventivo (p.es. tabella Iva), si deve effettuare un ricalcolo manualmente (Comando ricontrolla e ricalcola contabilità).

    Se avete tante righe, con molte ripetizioni e con un periodo di calcolo lungo, il ricalcolo della tabella preventivo potrebbe rendere lenta l'immissione. In questo caso abilitare il ricalcolo manuale nella proprietà del file.

     

    Share this article: Twitter | Facebook | Email


    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.