Reportistica

Report Personalizzati

Creazione e personalizzazione di report contabili in Laundry ERP utilizzando il framework di reportistica con motori di calcolo, espressioni e raggruppamenti.

Laundry ERP include un framework di reportistica potente e facile da usare. Il motore consente di creare nuovi report, come dichiarazioni fiscali, bilanci e conti economici con raggruppamenti e layout specifici.

Attivare la modalità sviluppatore per accedere alla configurazione dei report contabili.

Per creare un nuovo report, andare in Contabilità > Configurazione > Report Contabili. Da qui, creare un report principale oppure una variante.

  • Considerare di salvare i report modificati come varianti di report per mantenere intatti i report principali.
  • Per accedere all'interfaccia di gestione di un report esistente direttamente dal report stesso, fare clic sull'icona dell'ingranaggio. ::

Report principali

I report principali possono essere considerati come report contabili generici e neutrali. Servono come modelli su cui vengono costruite le versioni contabili locali. Se un report non ha un report principale, viene considerato esso stesso un report principale.
Esempio: Un report fiscale per il Belgio e uno per gli Stati Uniti utilizzerebbero entrambi la stessa versione generica come base, adattandola alle rispettive normative nazionali.
La creazione di una voce di menu è necessaria per accedere a un nuovo report principale. Per farlo, aprire la configurazione del report, fare clic su Azione, Crea Voce di Menu e aggiornare la pagina. Il report è ora disponibile in Contabilità > Reportistica.
I casi che richiedono la creazione di un nuovo report principale sono rari, come quando le autorità fiscali di un paese richiedono un tipo di report nuovo e specifico.

Varianti

Le varianti sono versioni specifiche per paese dei report principali e, pertanto, fanno sempre riferimento a un report principale. Per creare una variante, selezionare un report generico (principale) nel campo Report Principale durante la creazione di un nuovo report.Quando un report principale viene aperto dal menu Reportistica dell'app Contabilità, tutte le sue varianti vengono visualizzate nel selettore di varianti del report nell'angolo in alto a destra della vista.
Esempio:Dichiarazione IVA (BE) è una variante del report principale Report Fiscale Generico.

Righe

Dopo aver creato un report (principale o variante), il passaggio successivo consiste nel compilarlo con le righe. Per creare una nuova riga, fare clic su Aggiungi una riga. Per modificare una riga esistente, fare clic sulla riga stessa e modificare il popup. Tutte le righe richiedono un Nome e possono avere un Codice opzionale che consente di utilizzare il valore della riga nelle formule.

Espressioni

Ogni riga può contenere una o più espressioni. Le espressioni possono essere viste come sotto-variabili necessarie per una riga del report. Per creare un'espressione, fare clic su Aggiungi una rigaall'interno del popup di una riga.Durante la creazione di un'espressione, è necessario inserire un'Etichetta utilizzata per fare riferimento a quell'espressione. L'etichetta deve essere unica tra le espressioni di ciascuna riga del report. Anche i campi Motore di Calcolo e Formula devono essere compilati. Il motore di calcolo definisce come le formule e le sottoformule vengono interpretate. È possibile combinare espressioni che utilizzano motori di calcolo diversi nella stessa riga, se necessario.
A seconda del motore, potrebbero essere necessarie anche le sottoformule.

Motore di calcolo Dominio Laundry ERP

Quando si utilizza il motore di calcolo Dominio Laundry ERP, una formula viene interpretata come un dominio Laundry ERP che ha come target gli oggetti account.move.line.La sottoformula consente di definire come le righe di movimento corrispondenti al dominio vengono utilizzate per calcolare il valore dell'espressione:sum : Il risultato è la somma di tutti i saldi delle righe di movimento corrispondenti.sum_if_pos : Il risultato è la somma di tutti i saldi delle righe di movimento corrispondenti se tale importo è positivo. Altrimenti, è 0.sum_if_neg : Il risultato è la somma di tutti i saldi delle righe di movimento corrispondenti se tale importo è negativo. Altrimenti, è 0.count_rows : Il risultato è il numero di sotto-righe di questa espressione. Se la riga padre ha un valore di raggruppamento, questo corrisponderà al numero di chiavi di raggruppamento distinte nelle righe di movimento corrispondenti. Altrimenti, sarà il numero di righe di movimento corrispondenti.
Per invertire il segno del risultato, inserire un segno - all'inizio della sottoformula.

Motore di calcolo Tag Fiscali

Quando si utilizza il motore di calcolo Tag Fiscali, il contenuto del campo Formula viene confrontato con i tag fiscali. Se tali tag non esistono al momento della creazione dell'espressione, verranno creati.Durante la valutazione dell'espressione, il calcolo può essere espresso approssimativamente come: (importo delle righe di movimento con tag+)-(importo delle righe di movimento con tag-).
Esempio: Se la Formula è impostata su nome_tag, il motore confronta i tag fiscali +nome_tag e -nome_tag, creandoli se necessario. Per approfondire: due tag vengono confrontati dalla formula. Se la formula è A, richiederà (e creerà, se necessario) i tag +A e -A.

Motore di calcolo Aggrega Altre Formule

Il motore di calcolo Aggrega Altre Formule esegue operazioni aritmetiche sugli importi ottenuti da altre espressioni. Le formule qui sono composte da riferimenti a espressioni separati da uno dei quattro operatori aritmetici base (addizione +, sottrazione -, divisione / e moltiplicazione *). Per fare riferimento a un'espressione, digitare il codice della riga padre seguito da un punto . e l'etichetta dell'espressione (es. codice.etichetta).Le sottoformule possono essere una delle seguenti:if_above(CUR(importo)) : Il valore dell'espressione aritmetica verrà restituito solo se è maggiore del limite fornito. Altrimenti, il risultato sarà 0.if_below(CUR(importo)) : Il valore dell'espressione aritmetica verrà restituito solo se è inferiore al limite fornito. Altrimenti, il risultato sarà 0.if_between(CUR1(importo1), CUR2(importo2)) : Il valore dell'espressione aritmetica verrà restituito solo se è strettamente compreso tra i limiti forniti. Altrimenti, verrà riportato al limite più vicino.if_other_expr_above(CODICE_RIGA.ETICHETTA_ESPRESSIONE, CUR(importo)) : Il valore dell'espressione aritmetica verrà restituito solo se il valore dell'espressione indicata dal codice riga e dall'etichetta espressione forniti è maggiore del limite fornito. Altrimenti, il risultato sarà 0.if_other_expr_below(CODICE_RIGA.ETICHETTA_ESPRESSIONE, CUR(importo)) : Il valore dell'espressione aritmetica verrà restituito solo se il valore dell'espressione indicata dal codice riga e dall'etichetta espressione forniti è inferiore al limite fornito. Altrimenti, il risultato sarà 0.CUR è il codice valuta in lettere maiuscole e importo è l'importo del limite espresso in quella valuta.cross_report(xml_id | report_id) : Utilizzato per confrontare un'espressione da un altro report identificato dall'xml_id o dall'ID del report stesso.

Motore di calcolo Prefisso Codici Conto

Il motore di calcolo Prefisso Codici Conto viene utilizzato per confrontare gli importi registrati sui conti utilizzando i prefissi dei codici di questi conti come variabili in un'espressione aritmetica.
Esempio:21 - Le espressioni aritmetiche possono essere anche un singolo prefisso, come in questo caso.
Esempio:21 + 10 - 5 - Questa formula somma i saldi delle righe di movimento registrate sui conti i cui codici iniziano con 21 e 10, e sottrae il saldo di quelli sui conti con prefisso 5.
È anche possibile ignorare una selezione di sotto-prefissi.
Esempio:21 + 10\(101, 102) - 5\(57) - Questa formula funziona allo stesso modo dell'esempio precedente ma ignora i prefissi 101, 102 e 57.
È possibile applicare un 'sotto-filtro' su crediti e debiti utilizzando i suffissi C e D. In questo caso, un conto verrà considerato solo se il suo prefisso corrisponde e se il saldo totale delle righe di movimento registrate su questo conto è a credito/debito.
Esempio: Il conto 210001 ha un saldo di -42 e il conto 210002 ha un saldo di 25. La formula 21D corrisponde solo al conto 210002, e quindi restituisce 25. 210001 non viene incluso, poiché il suo saldo è a credito.
Le esclusioni di prefisso possono essere combinate con i suffissi C e D.
Esempio:21D + 10\(101, 102)C - 5\(57) - Questa formula somma i saldi delle righe di movimento registrate sui conti il cui codice inizia con 21se è a debito (D) e 10se è a credito (C), ma ignora i prefissi 101, 102, e sottrae il saldo di quelli sui conti con prefisso 5, ignorando il prefisso 57.
Per confrontare la lettera C o D in un prefisso e non usarla come suffisso, utilizzare un'esclusione vuota ().
Esempio:21D\() - Questa formula corrisponde ai conti il cui codice inizia con 21D, indipendentemente dal segno del loro saldo.
Oltre a utilizzare i prefissi dei codici per includere i conti, è possibile anche confrontarli con i tag dei conti. Questo è particolarmente utile, ad esempio, se il proprio paese non dispone di un piano dei conti standardizzato, dove lo stesso prefisso potrebbe essere utilizzato per scopi diversi tra aziende.
Esempio:tag(25) - Questa formula corrisponde ai conti i cui tag associati contengono quello con ID 25.
Se il tag a cui si fa riferimento è definito in un file di dati, è possibile utilizzare un XMLID al posto dell'ID.
Esempio:tag(my_module.my_tag) - Questa formula corrisponde ai conti i cui tag associati includono il tag indicato da my_module.my_tag.
È possibile utilizzare anche espressioni aritmetiche con i tag, eventualmente combinandole con selezioni di prefisso.
Esempio:tag(my_module.my_tag) + tag(42) + 10 - I saldi dei conti contrassegnati come my_module.my_tag verranno sommati con quelli dei conti collegati al tag con ID 42 e dei conti con prefisso codice 10.
I suffissi C e D possono essere utilizzati allo stesso modo con i tag.
Esempio:tag(my_module.my_tag)C - Questa formula corrisponde ai conti con il tag my_module.my_tag e un saldo a credito.
L'esclusione di prefisso funziona anche con i tag.
Esempio:tag(my_module.my_tag)\(10) - Questa formula corrisponde ai conti con il tag my_module.my_tag e un codice che non inizia con 10.

Motore di calcolo Valore Esterno

Il motore di calcolo Valore Esterno viene utilizzato per fare riferimento a valori manuali e valori di riporto. Questi valori non vengono memorizzati tramite account.move.line, ma con account.report.external.value. Ciascuno di questi oggetti punta direttamente all'espressione che influenza, quindi c'è poco da fare per la loro selezione qui.Le formule possono essere una delle seguenti:sum : Se il risultato deve essere la somma di tutti i valori esterni nel periodo.most_recent : Se il risultato deve essere il valore del valore esterno più recente nel periodo.Inoltre, le sottoformule possono essere utilizzate in due modi:rounding=X : Sostituendo X con un numero si indica di arrotondare l'importo a X decimali.editable : Indica che questa espressione può essere modificata manualmente, attivando la visualizzazione di un'icona nel report che consente all'utente di eseguire questa azione.
I valori manuali vengono creati alla data date_to attualmente selezionata nel report.
Entrambe le sottoformule possono essere combinate separandole con un ;.
Esempio:editable;rounding=2 - Questa sottoformula mostra il modo corretto per combinare entrambi i comportamenti.

Motore di calcolo Funzione Python Personalizzata

Il motore di calcolo Funzione Python Personalizzata è un mezzo per gli sviluppatori per introdurre calcoli personalizzati delle espressioni caso per caso. La Formula è il nome di una funzione python da chiamare, e la Sottoformula è una chiave da recuperare nel dizionario restituito da questa funzione. Utilizzare questo motore di calcolo solo se si sta creando un modulo personalizzato.

Colonne

I report possono avere un numero indefinito di colonne da visualizzare. Ogni colonna ottiene i suoi valori dalle espressioni dichiarate nelle righe. Il campo expression_label della colonna fornisce l'etichetta delle espressioni il cui valore viene visualizzato. Se una riga non ha un'espressione in quel campo, non viene visualizzato nulla per essa in questa colonna. Se sono necessarie più colonne, è necessario utilizzare etichette di espressione diverse.Quando si utilizza la funzione di confronto periodi presente nella scheda Opzioni di un report contabile, tutte le colonne vengono ripetute in e per ciascun periodo.

Raggruppamento righe

È possibile un raggruppamento non standard aggiungendo o utilizzando campi esistenti nel modello Elemento del Giornale, a condizione che i campi siano correlati e non memorizzati.
Il raggruppamento delle righe richiede che il report abbia righe esplicite che possono essere modificate. I report differiti, ad esempio, non supportano il raggruppamento delle righe poiché utilizzano righe dinamiche generate automaticamente.

Creare un nuovo campo su elemento del giornale

Per creare un campo non memorizzato e correlato nel modello Elemento del Giornale, andare prima in Contabilità > Elementi del Giornale, fare clic sull'icona debug, quindi fare clic su Campi. Fare clic su Nuovo per creare un nuovo campo e compilare i seguenti campi:
  • Nome Campo: un nome tecnico per il campo
  • Etichetta Campo: l'etichetta da visualizzare per il campo
  • Tipo Campo: il tipo di campo a cui questo campo correlato deve puntare
  • Memorizzato: Lasciare questo campo deselezionato poiché solo i campi non memorizzati possono essere utilizzati per raggruppare le righe.
  • Modello Correlato: Se il tipo di campo è one2many, many2many o many2one, selezionare il modello del campo originale per il raggruppamento.
  • Definizione Campo Correlato: il percorso tecnico al campo per cui si desidera raggruppare
Esempio: Per raggruppare per il team di vendita del partner commerciale, impostare la definizione del campo correlato su move_id.team_id.

Raggruppare le righe

Per raggruppare le righe, andare alla scheda Righe del report desiderato, fare clic sulla riga da raggruppare e modificare il campo Raggruppa per. Inserire il nome tecnico (Nome Campo) del campo da utilizzare come chiave di raggruppamento.
Per trovare un elenco di tutti i campi del modello e i relativi nomi tecnici, andare in Contabilità > Elementi del Giornale, fare clic sull'icona debug, quindi fare clic su Campi. Il nome tecnico di ciascun campo è elencato nella colonna Nome Campo.