Tabella QuickSum (Technical preview)

Documentation •
In this article

QuickSum Table è una tabella strutturata, basata su una logica contabile, pensata per la preparazione di capitolati, computi metrici e richieste di offerta all’interno di un ambiente affidabile e controllato.

Vantaggi principali:

  • Totali sempre corretti, calcolati automaticamente dal sistema secondo una logica contabile, senza formule manuali.
  • Coerenza e tracciabilità dei dati, grazie a una struttura che evita incongruenze e modifiche accidentali.
  • Riduzione degli errori, anche in presenza di aggiunte, correzioni o riorganizzazioni delle voci.
  • Struttura chiara e stabile, adatta a documenti professionali e allegati contrattuali.
  • Utilizzo immediato, simile a un foglio di calcolo, ma con i vantaggi di un sistema contabile.
  • Documenti affidabili, pronti per essere condivisi, archiviati o allegati a offerte e contratti.

Technical Preview

La tabella QuickSum è uno strumento ancora in fase di sviluppo e che viene messo a disposizione a un limitato numero di utenti. 
Ci sono diverse funzionalità che sono per il momento provvisorie e che subiranno cambiamenti con il tempo.

Per il momento è solo disponibile all'interno della versione Dev Channel. 

Funzionamento

La QuickSum Table si usa come una tabella Excel, con colonne per l'identificativo, descrizione, quantità, prezzo e totale, con però i totali in verticale fatti in automatico.

  • L'identificatore (ItemId) può essere suddiviso in più livelli tramite i punto ".".
  • Gli identificatori devono essere disposti in sequenza ordinata, dal più piccolo al più grande.
  • Il programma in automatico fa i totali.

Qui un esempio

quicksum table

Aggiunta della tabella QuickSum

Attualmente la Tabella QuickSum è ancora in fase sperimentale ed è disponibile solo nella versione interna di Banana Contabilità. 

Nella applicazioni di produttività viene aggiunta con il comando Menu Strumenti > Aggiungi Funzionalità > Tabella QuickSum

Le colonne 

La Tabella QuickSum ha le seguenti colonne di inserimento dati :

  • ItemId 
    L'id che identifica l'elemento
    • Può assumere diverse forme come spiegato in seguito.
    • Deve essere sempre in sequenza crescente. Prima i valori più bassi e poi quelli più alti.
    • Per esempio "2.1.1", "T:2.1.1", "V:2.1.1", "V:T:2.1.1"
  • Stile
    Per assegnare uno stile, per un uso futuro della stampa.
  • Codice Modifica.
    Per quando la tabella è in modalità blocco, indica quale colonne devono essere modificabili.
    • D: Descrizione modificabile.
    • N: Note modificabile.
    • Q: Quantità modificabile.
    • P: Prezzo unitario modificabile
    • I valori indicati fra parentesi quadre e fra parentesi graffe sono inseriti in automatico dal programma e possono essere sovrascritti.
  • Descrizione
    La descrizione dell'elemento e anche i valori nel caso di sommario.
    Se contiene tre punti "..." significa che vi è un valore da completare. 
  • Note
    Una colonna di testo per annotazioni.
  • Quantità
    Un importo numerico.
  • Unità
    Indica il tipo di valore indicato.
    • Un testo libero.
    • "%" la quantità sarà considerata come un percento del prezzo.
  • Formula Prezzo Unitario
    Se presente la formula viene calcolata e il risultato rimpiazzera il valore nella colonna Prezzo.
  • Prezzo Unitario 
    Il prezzo che viene usato per calcolare il valore.
  • Formula inizio
    Nel caso che si vuole indicare la formula in due parti.
  • Formula testo
    • Una formula di calcolo in Javascript.
    • Se presente viene eseguita e il risultato andrà a sostituire l'Importo calcolato.
  • Importo risultato
    Importo calcolato dal programma.
    • Se esiste una formuala il risultato della formula.
      Altrimenti
    • La quantità moltiplicata per il prezzo unitario.
    • Se unità "%" il prezzo unitario in percentuale della quantità.
  • Codice1 e Codice2
    Delle colonne che servono per indicare che la riga è di un certo tipo.
    Per esempio "S" può significare che a queste posizioni viene indicato uno sconto particolare.

Ci sono poi una serie di colonne che servono per i calcoli e il controllo:

  • ItemIdCalc
    È l'ItemId usato per il calcolo e considera anche le modifiche dovuta all'attivazione delle varianti.
  • Formula Prezzo Unitario Calc
    È la formula di calcolo del prezzo unitario usata per i calcoli, creata partendo dalla formula del prezzo unitario modificata dal programma tenendo conto dell'attivazione delle varianti.
  • Formula Calc
    È la formula di calcolo usata per i calcoli, creata partendo dalla formula inizio e formula modificata dal programma tenendo conto dell'attivazione delle varianti.
  • Testo Risultato
    • È il risultato in formato testo ottenendo eseguendo la Formula Calc.
    • Mostra eventuali errori.
  • Sommato in
    • Indica in che elemento è stato sommato il valore della riga. 
    • Permette di controllare l'itemId ne caso sia lasciato vuoto o si sia usato una variante.

L'ItemId

Viene inserito nella colonna ItemId ed identifica la riga e l'elemento. Può avere diverse forme

  • Identificatore dell'elemento (ItemId)
    Può essere composto dai seguenti elementi, separati da duepunti ";" 
    Per esempio "2.1.1", "T:2.1.1", "V:2.1.1", "V:T:2.1.1"
    • Il valore "00" è relativo al totale complessivo.
      • Si inserisce all'inizio per indicare il testo del progetto.
      • Il Subtotale "S:00" mostra la somma fino a quel momento.
      • Il Totale "T:00" può essere usato solo come ultima riga di totale.
        Oltre non ci possono più essere totali.
      • Nella formula $S('00') ritorna il totale complessivo di tutte le righe sommate fino a quel momento.
    • Gerarchia.
      • Dei valori separati da dei punti "." che definiscono l'emento e la struttura.
      • Esempio "1", "1.9", "2", "2.1", "2.1.2", "A.1.2"
      • La gerarchia è data dalla separazione. 
        Quindi gli elmenti "2.1" e "2.1.2" apparteranno all'elmento superiore "2".
      • La gerarchia determina anche la sequenza degli elementi in ordine alfabetico naturale.
        L'elemento "1" dovrà precedere il "1.9" e il "2" e via di seguito.
        In caso contrario verrà segnalato un errore.
    • Prefisso.
      • Determina il tipo di elemento.
        • "F": riga finale gerarchia.
          • Questo elemento è l'ultimo della gerarchia creata.
          • Esempio: "2.1", "2.1.1", "2.1.1.1", "2.1.2", "F:2.1" chiude la sequenza e quindi dopo il "F:2.1" non ci potranno più essere elementi "2.1", "2.1.1".
        • "S:" riga di subtotale
          • Viene indicata la somma di tutti gli elementi che appartengono alla gerarchia.
          • Esempio: "S:2.1" riprenderà la somma di tutti gli elmenti  "2.1", "2.1.1", "2.1.1.1", "2.1.2"
        • "T:" riga di totale
          • Viene indicata la somma finale di tutti gli elementi che appartengono alla gerarchia.
          • Esempio: "T:2.1" riprenderà la somma di tutti gli elmenti  "2.1", "2.1.1", "2.1.1.1", "2.1.2"
          • Chiude la sequenza e quindi dopo il "T:2.1" non ci potranno più essere elementi "2.1", "2.1.1".
    • Variante.
      Vedi sezione successiva di spiegazione.
      • Un codice che identifica la Variante e precede l'ItemId. 
      • Deve obbligatoriamente iniziare con la lettera "V" ed esere seguito da dei duepunti ":" .
      • Il codice della variante deve precedere gli elementi. V
      • Esempi variante 
        • "VA:" "VA:2.1", "VA:2.1.1"
        • "VB:" "VB:2.1", "VB:2.1.1"
      • Le righe della variante devono essere in sequenza.
      • Se si integrano o sostituiscono una riga devono essere anche nella sequenza.
    •  
  • Comandi "#"
    Il valore viene indicato nella colonna Descrizione
    • Iniziano con il carattere "#"
    • Sono usati internamente per indicare delle fuzionalità
    • Gli elmenti non vengono sommati.
    • "#scenario" permette di specificare nella colonna Descrizione le Varianti da usare in aggiunta o al posto delle posizioni esistenti.
      per esempio la descrizione "VA;VB"
    • "#options" opzioni di calcolo separate da punti e virgola.
      • "lock", attiva il blocco della tabella (comando provvisiorio).
      • "onerrorcalculate" continua la calcolazione anche se ci sono degli errori.
    • "#columnsSum" indica il nomeXml delle colonne da sommare nei contatori accessibili tramite la funzione "$S()".
      • Diverse colonne vengono separate da punto e virgola ";".
      • Le colonne "Code1;Code2" sono già considerare e non bisogna specificarle.
      • Per esempio "Code3;Code4" .
    • "#rounding" è il valore minimo in cui l'importo totale riga viene arrotondato. 
      • Si inderisce nella colonna Descrizione.
      • Per esempio  "0.05", "0.10", "1"
      • Il separatore decimale deve sempre essere il punto "."
    • Righe calcolo hash
      Sevono a verificare se il documento è cambiato
      • "#hash-base" 
        Il programma inserisce nella Descrizione l'hash calcolato sugli elementi che non sono modificabili.
        Se si modificano le celle in cui si possono inserire valori anche quando il documento è in modalità blocco, l'hash non cambia.
      • "#hash-all"
        Il programma inserisce nella Descrizione l'hash calcolato su tutti gli elementi del documento.
        Quindi qualsiasi valore viene modificato viene modificato anche l'hash.

        quicksum table
         
  • Commenti fra []
    • Sono elementi che sono inclusi in parentesi quadre
      "[]", "[testo]"
    • Gli elmenti non vengono sommati.
  • Elementi vuoti
    • Viene ripreso l'id che precede e non è stato chiuso. 

 

Logica di calcolo e somme

Nella tabella QuickSumi gli importi vengono calcolati e sommati in automatico.

  • Dopo ogni modifica tutta la tabella viene ricalcolata.
  • Il programma svuota tutte le colonne calcolate.
  • Il programma parte della prima riga e continua fino all'ultima. 
    Se vi è un errore la calcolazione viene interrotta delle righe successive non viene eseguita.
  • Descrizione righe di Totale "T:" o sottototale "S:"
    • Se la descrizione è vuota o termina con elemento commento (fra parentesi quadre), la descrizione viene messa automaticamente dal programma, facendo seguire al termine "Totale" o "Sottototale" l'intestazione dell'ItemId o se non presente il valore dell'ItemId.
    • L'intestazione dell'ItemId è considerata la descrizione usata quando è stato usato per la prima volta l'ItemId.
  • Calcolo importo riga.
    • Vengono usati u contenuti delle colonne Quantità, Unità e Prezzo unitario
    • Se vi sono delle formule queste vengono eseguiti e il risultato rimpiazza il valore.
  • Il programma dopo ogni riga somma nel contatori dei diversi elementi strutturati.
    • Somma il valore della riga nei diversi elementi che compongono l'ItemId strutturato.
    • Se per esempio se l'item è "2.1" il programma andrà a sommare l'importo della riga nei seguenti contatori, accessibili con la formual $S('2.1.1') in:
      • 2
      • 2:{*}
      • 2.1
      • 2.1:{}
    • Se per esempio se l'item è "2.1.1" il programma andrà a sommare l'importo della riga nei seguenti contatori, accessibili nelle formule con la funzione $S('2.1.1') in:
      • 2
      • 2:{*}
      • 2.1
      • 2.1:{*}
      • 2.1.1
      • 2.1.1:{}
  • Il programma somma anche nei contatori relative alle colonne, accessibili nelle formule tramite la funzione $S().

Le colonne formule

Le colonne Formula prezzo unitario e Formula permettono di inserire delle espressioni in linguaggio Javascript. 

  • Gli importi si indicano nel formato di programmazione e non quello internazionale.
    • Non vi sono separatori di migliaia.
    • Il separatore di decimali è sempre il punto ".".
    • Esempi di numeri "12345.67", "-123.45"
    • Si può usare tutta la sintassi del Javascript e anche creare funzioni.
  • Si possono usare le funzioni predefinite appositamente per la tabella QuickSum:
    • $S('itemId')
      • Ritorna la somma, fino a questo punto, del contatore specifico dell'item.
      • Per esempio 
        • $S('2') ritorna la somma di tutti i totali che iniziano con 2
        • $S('2.1') ritorna la somma di tutti i totali che iniziano con 2.1
        • $S('2.1.1') ritorna la somma di tutti i totali che iniziano con 2.1.1
        • $S('00') ritorna la somma di tutto 
      • Si può usare anche con parentesi graffe
        • $S('2:{=}') solo gli elementi che sono esattamente 2, quindi senza i sotto elementi.
        • $S('2:{+}') solo gli sottoelementi di 2.
        • $S('2') = $S('2:{=}') + $S('2:{+}') 
    • $C('ColumnNameXml', 'Value')
      • Sum values with conte 
      • ColumnNameXml è il nome in inglese  della colonna.
      • Value è il possibile contenuto della colonna.
      • Ritorna la somma degli importi delle righe fino alla calcolazione precedente alla riga attuale, per tutte le colonne che contengono nella colonna specificata il valore indicato.
      • Per esempio con un valore specifico
        • "$C('Code1','X')" La somma degli importi delle righe che contengono nella colonna Code1 il valore "X".
        • "$C('Code1','Y')" La somma degli importi delle righe che contengono nella colonna Code1 il valore "Y".
      • Puoi usare anche un distintivo
        • "$C('Code1','{*}')" La somma degli importi delle righe con qualsiasi valore (anche vuoto) nella colonna Code1 .
          Corrisponde alla somma totale T00.
        • "$C('Code1','')" oppure "$C('Code1','{}')" La somma degli importi delle righe con la colonna Code1 vuota..
        • "$C('Code1','{<>}')" La somma degli importi delle righe che contengono un valore non vuoto nella colonna Code1.
      • Valori non ammessi 
        • Nella colonna che viene usata per inserire dei valori non si possono usare 
          "{}","{*}","{<>}"
        • Ai fini dei totali per la funzione $C questi valori sono considerati come vuoti. 
    • $V() L'elenco delle varianti usate nella calcolo separate da punti e virgole.
      • Per esempio "VA;VB"
  • Arrotondamento finale.Si può inserire una formula prima della riga finale per calcolare l'arrotondamento al minore. 
    • Per esempio "Math.floor($S('00'))-$S('00')"
    • Si può usare la formula anche in altre posizioni cambiando l'Id.

Varianti

La tabella permette di inserire degli elementi varianti per:

  • Includere degli elementi.
    Per esempio un'offerta che prevede appunto degli elementi opzionali. 
  • Sostituire degli elementi.
    Per esempio per cambiare le specifiche tecniche.

La variante viene indicata nell'ItemId, facendo precederla da un identificatore di variante.

  • La sigla della variante deve iniziare obbligatoriamente con "V" ed essere separata da un due punti ":" dall'itemId.
    • Per esempio "VA:2.1"; "VB:2.1.1"
    • "VA:T:2.1" per indicare la riga di totale.
    • Meglio usare sempre una sigla maiuscola.
  • L'elenco degli elementi appartenenti alla variante deve seguire quello della gerarchia normale.
  • Le Varianti possono essere degli elementi supplementari.
  • Le Varianti possono sostituire un elemento già esistente.
  • Normalmente le Varianti vengono calcolate a se stante. 

L'attivazione di una Variante viene effettuata nel seguente modo:

  • Andare sulla riga con ItemId "#scenario"
    • Nella colonna Descrizione indicare la sigla della varianti che si vuole attivare.
    • Se si vogliono attivare separate da un punto e virgola ";".
    • Esempio:
      • Inserire "VA" per attivare la variante "VA".
      • Inserire "VA;VB" per attivare le varianti "VA" e "VB".
  • Il programma attiva la variante selezionata "VA" ed esclude le posizioni che sono sotiute:
    • Rimuove la sigla della Variante.
      • "VA:2.1" diventa "2.1"
      • "VA:T:2.1" diventa "T:2.1"
    • Se vi è una posizione uguale principale, aggiunge a questa e a tutti gli elementi figli la sigla della Variante che sostituisce preceduta da X.
      • "2.1" diventa "XVA:2.1"
      • "T:2.1" diventa "XVA:T:2.1"
      • "VA:2.1" diventa "2.1"
      • "VA:T:2.1" diventa "T:2.1"
         

Modalità blocco per inserimento prezzi 

La tabella prevede una modalità di inserimento prezzi, che blocca tutte le celle, eccetto quelle che servono a inserire prezzi e altri valori. 
L'idea è che il file venga trasmesso alle imprese e queste possano inserire i loro prezzi e vedano subito i totali, senza però avere la possibilità di modificare altri elementi. 
Se è attivata questa modalità il programma: 

  • Blocca tutte le celle eccetto quelle che sono destinate a inserire prezzi, percentuali o testi.
  • Le righe dove devono essere inseriti dei valori sono colorate in giallo.
  • Le righe già completate con il valore richiesto nella colonna ModifyCode, sono visualizzate in celeste chiaro.
    Sarebbe stato più intuitivo il verde, ma non è facilmente distinguibile da persone daltoniche. 

Per attivara la modalità blocco (provvisorio):

  • Aggiungere una nuova riga a inizio file
  • Nella colonna ItemId inserire il testo #options
  • Nella colonna Descrizione inserire il testo lock

Le righe con le celle modificate sono indicate nella colonna "Mod. Code" (ModifyCode), tramite un carattere:

  • D: Descrizione modificabile.
  • N: Note modificabile.
  • Q: Quantità modificabile.
  • P: Prezzo unitario modificabile
  • U: Unità
  • Si possono combinare più codici, ad esempio "QP" (Quantità e Prezzo unitario modificabili).
  • Il programma in automatico indica il codice in parentesi graffe "{P}", con la seguente logica.
    • Il valore in automatico viene messo solo se la cella è vuota o vi è un valore fra parentesi quadre.
    • Se vi è un valore nella colonna Quantità e non c'é formula prezzo viene messo "{P}" .

Colore righe 

In modalità blocco le righe vengono colorate in automatico con questa logica.

  • In giallo le righe che richiedono un inserimento di valore. 
    • Se vi è un codice di modifica e la rispettiva colonna è vuota.
    • Oppure per la Colonna Descrizione contiene tre puntini "..."
      Per esempio "Marca: ..."
  • In verde chiaro se i valori sono completati.

Verifica originalità dei dati inseriti

Quando si preparano dei capitolati e si inseriscono i prezzi delle offerte è importante potere verificare che le informazioni inserite siano quelle originale inserite. Quando si stampa un documento su carta e lo si firma si ha una versione originale che può poi essere usata per confrontare, questo però impedisce di usare i dati anche per i calcoli.

La tabella QuickSum include quindi un sistema di calcolo di hash, basato su algoritmi crittografici, che crea delle impronte digitale uniche relativamente a dati inseriti. Si tratta di Questi hash, se uguali, garantiscono che il contenuto è uguale. Il programma calcola due hash.

  • #hash-all
    È 
  • #hash-base
    È relativo ai dati inseriti e che non possono essere modificati durante l'immissione di prezzi.
    • dd
  • #

 

Stampe

Per stampare i dati della tabella QuickSum, esistono le possibilità seguenti.

Stampa tramite l'Anteprima

Con il comando Anteprima di Stampa è possibile creare una stampa della tabella.

Si possono preparare delle Viste apposite in modo da definire quali colonne includere nella stampa.

Tramite la funzione Filtra righe, nella stampa si possono includere solo le righe desiderate. Ad esempio, se si vogliono avere solo le righe di totale:

  • Posizionarsi nell'editor del filtro.
  • Inserire 
    !itemcalc!^t:
    • Questo comando indica di selezionare solo le righe che nella colonna ItemCal iniziano con "T:".
    • Sono le righe delle colonne che sono attivate.

Stampa tramite Estensioni

Con estensioni in Javascript è possibile creare dei report di stampa personalizzati, ad esempio che mostrano i dati desiderati con il riassunto dei diversi totali.

Errori 

La calcolazione parte dalla prima riga e se il programma trova un errore la riga viene messa in colore rosso e la calcolazione degli importi viene interrotta. 

  • Con l "#options" "onerrorcalculate", gli errori vengono segnalati, ma la calcolazione viene effettuata comunque, anche se è sbagliata.
    • Serve per un controllo.
    • Deve essere disattivata per avere dei risultati corretti.

Il programma segnale questi possibili errori:

  • Per il momento la gestione degli errori è molto basilare e i codici deggli errori vengono visualizzati nella tabella Info.
  • "err_Duplicate"
    La riga di totale è gia presente.
  • "err_IdNotNumeric"
    Si è attivata l'opzione che richiede che gli ItemId siano numerici, ma l'ItemId contiene altri caratteri.
  • "err_OutOfSequence";
    • L'ItemId non è nella sequenza numerica/alfabetica corretta.
      • "2.1" viene prima del "2"
    • Si usa un ItemId di livello uguale o inferiore dopo avere fatto un totale.
      • Vi è il "T:2.1"
      • Successivamente si usa ancora "2.1" o "2.1.1"
  • "err_TotalWithoutElements"
    • Si è indicata una riga di totale ma non è stato specificato alcun elemento.
    • Per esempio vi è il "T:2.1", ma non vi è in precedenza alcun itemId "2.1" o "2.1.1"
  • "err_UnitPriceFormulaUndefined"
    • Il risultato della formula Prezzo Unitario è indefinito.
    • Per esempio quando si usa nel "$S('2.1') ma l'item "2.1" non è mai stato usato.
  • "err_UnitPriceFormulaError"
    Il testo della formula Prezzo Unitario contiene un errore, per cui il codice Javascript non è valido.
  • "err_FormulaTextError"
    • Il risultato della Formula Inizio e Formula assieme è indefinito.
    • Per esempio quando si usa nel "$S('2.1') ma l'item "2.1" non è mai stato usato.
  • "err_FormulaTextUndefined";
    Il testo della Formula inizio o Fromula contiene un errore, per cui il codice Javascript non è valido.
  • "err_ParseError"
    L'ItemId è in un formato non valido.
  • "wrn_totalRowWithCalcArguments"
    Riga di totale "T:" o sottototale "S:" con elementi di calcolo (quantità, prezzo unitario, formula) che non vengono usati.
  • "wrn_emptyIdWithCalcArguments"
    Non vi è un ItemId ma vi sono elementi di calcolo.
  • "others error"
    Altri errori.

 

 

help_id
quicksum
How can we help you better?

Let us know what topic we should expand or add to make this page more useful.

Send us your feedback

Share this article: Twitter | Facebook | LinkedIn | Email