← Torna all'App

📖 Introduzione

Panoramica del sistema Fastsign Calcolo Provvigioni

Fastsign CP e' il sistema per il calcolo automatico delle provvigioni mensili dei contractor Fastsign. L'applicazione consente di:

  • Definire regole di calcolo per ogni voce canvas (servizio) di ciascuna sub-agenzia
  • Configurare soglie, modificatori di prezzo e bonus
  • Lanciare il calcolo automatico delle provvigioni per un mese specifico
  • Visualizzare un'anteprima dettagliata dei risultati
  • Gestire il ciclo di vita delle fatture (dalla bozza al pagamento)
  • Monitorare i margini di profitto per contractor e sub
  • Analizzare i gettoni medi confrontando incassato vs riconosciuto con delta per contractor/sub/mese
  • Eseguire simulazioni what-if per prevedere l'impatto di modifiche alle regole

Architettura di base

L'applicazione e' composta da una singola pagina HTML che comunica con un backend basato su n8n workflows. I dati sono salvati in MySQL e le regole vengono cachate in Redis per prestazioni ottimali.

Frontend HTML
API REST (n8n)
MySQL
+
Redis Cache

Struttura della navigazione

L'interfaccia e' organizzata in 11 sezioni accessibili dalla barra di navigazione superiore, piu' una sidebar laterale per la selezione di contractor e sub-agenzia.

🔐 Login e Autenticazione

Come accedere al sistema

All'apertura dell'applicazione viene mostrata la schermata di login. Per accedere:

  1. Inserisci il tuo indirizzo email nel campo "Email"
  2. Inserisci la tua password nel campo "Password"
  3. Clicca il pulsante "Entra" oppure premi Invio
fastsign
Calcolo Provvigioni
••••••••
Entra
Schermata di login
💡
La sessione viene salvata nel browser. Se hai gia' effettuato il login, la prossima volta verrai autenticato automaticamente senza dover reinserire le credenziali.

Logout

Per uscire dal sistema, clicca sulla chip utente in alto a destra nella barra di navigazione (mostra le tue iniziali e il nome). Un click effettua il logout immediato e mostra la schermata di login.

🏠 Dashboard KPI

Panoramica KPI e stato del sistema a colpo d'occhio

La Dashboard e' accessibile tramite il pulsante 🏠 nella topbar ed e' la vista ideale per avere una panoramica immediata della situazione mensile. Mostra indicatori chiave di performance (KPI), alert operativi, ranking contractor e grafici.

Filtro mese

In alto a destra della sezione, un selettore mese (formato YYYY-MM) e il pulsante "Aggiorna" permettono di caricare i dati per il periodo desiderato. Al primo accesso viene pre-selezionato il mese corrente.

Card riassuntive

Quattro card mostrano i KPI principali del mese selezionato:

Totale Incassato
€ 45,230.00
Gettone medio: € 125.64/pz
Totale Riconosciuto
€ 32,180.00
Gettone medio: € 89.39/pz
Margine
€ 13,050.00
28.9% del fatturato
Produzione
360
185 contratti
Le 4 card KPI: Incassato, Riconosciuto, Margine (con %), Produzione (pezzi + contratti)

Dettaglio delle card

  • Totale Incassato — somma degli importo_fatturazione di tutti i contratti del mese, incluso il surcharge BLUENERGY (+45€/pezzo sull'indiretta). Il sottotitolo mostra il gettone medio incassato per pezzo
  • Totale Riconosciuto — somma dei calculated_price da invoice_details (anteprime/fatture). Il sottotitolo mostra il gettone medio riconosciuto per pezzo
  • Margine — differenza tra incassato e riconosciuto. Colorato in verde se positivo, rosso se negativo. Il sottotitolo mostra la percentuale sul fatturato
  • Produzione — totale pezzi prodotti nel mese. Il sottotitolo mostra il numero di contratti distinti

Alert operativi

Sotto le card KPI, un pannello alert mostra le situazioni che richiedono attenzione:

  • ⏰ Regole in scadenza — numero di regole con valid_to entro i prossimi 30 giorni. Colore ambra
  • ⚠️ Voci non mappate — numero di voci canvas senza regola associata (dal badge Non Mappati). Colore rosso

Ranking contractor e grafici

La parte inferiore della dashboard e' divisa in due colonne:

Ranking Contractor per Margine (colonna sinistra)

Tabella ordinata per margine decrescente con le colonne: Contractor, Incassato, Riconosciuto, Margine (€), Margine (%). Permette di identificare immediatamente i contractor piu' profittevoli e quelli critici.

Grafico a barre — Margine per Contractor (colonna destra)

Grafico a barre affiancate che confronta visivamente Incassato (blu) vs Riconosciuto (viola) per ogni contractor. L'asse Y mostra i valori in migliaia di euro (€k). Realizzato con Chart.js.

Grafico a ciambella — Distribuzione Pezzi

Sotto al ranking, un grafico donut mostra la distribuzione percentuale dei pezzi prodotti per contractor, con legenda a destra. Ogni contractor ha un colore univoco.

💡
I dati della dashboard provengono dagli endpoint gettoni-medi e margini gia' esistenti. Non vengono creati nuovi endpoint. I grafici vengono renderizzati con la libreria Chart.js v4 caricata da CDN.

📏 Regole

Definisci come calcolare le provvigioni per ogni voce canvas

La sezione Regole e' il cuore del sistema. Ogni regola definisce come calcolare la provvigione per una specifica voce canvas (servizio) di una sub-agenzia.

Panoramica della sezione

+ Nuova Regola ⧉ Duplica su altra sub 📋 Incolla regola
🟢 Attive (12) 🔵 Future (2) 🔴 Scadute (5) Tutte (19)
EE_RESIDENZIALE_DOMESTICO service local fixed 01/01/2026 → 31/12/2038 📋 ✏️
GAS_CONDOMINIO service global variable 01/01/2026 → 31/12/2038 MOD 📋 ✏️
Elenco regole con badge tipo, scope, calcolo e azioni

Badge delle regole

service regola legata a una voce canvas
virtual regola per commissioni non legate a voci canvas
local valuta il valore del singolo contratto
global valuta una metrica globale (es. % qualita')
fixed prezzo fisso (modified_price)
variable passa il valore canvas direttamente
MOD ha un modificatore di prezzo applicato

Filtri temporali

Le pillole in alto filtrano le regole in base alla loro validita':

  • 🟢 Attive — regole valide oggi (valid_from ≤ oggi < valid_to)
  • 🔵 Future — regole che entreranno in vigore in futuro
  • 🔴 Scadute — regole la cui validita' e' terminata
  • Tutte — mostra tutte le regole senza filtro
🚨
Se piu' regole attive condividono lo stesso service_name, viene mostrato un banner di avviso conflitto. Verifica e risolvi i conflitti prima di lanciare il calcolo.

Creare una nuova regola

  1. Seleziona un contractor e sub dalla sidebar
  2. Clicca "+ Nuova Regola"
  3. Compila i campi nel modale che si apre
  4. Clicca "Salva Regola"

Campi del modale regola

  • Contractor — seleziona il contractor (pre-compilato se selezionato dalla sidebar)
  • Sub — seleziona la sub-agenzia (dipende dal contractor scelto)
  • Service Name — nome della voce canvas (es. EE_RESIDENZIALE_DOMESTICO)
  • Tiposervice (voce canvas) o virtual (commissione non legata a canvas)
  • Base Price — prezzo base opzionale, usato come riferimento per il calcolo DUAL/SINGLE
  • Max Single Value — valore massimo per considerare il contratto SINGLE (opzionale)
  • Dipende da — solo per regole virtual: condizioni separate da virgola con prefissi opzionali *: (storico) e !: (esclusione). Vedi sintassi completa
  • Metric Key — solo per scope global: chiave della metrica da valutare
  • Valid From — data di inizio validita'
  • Valid To — data di fine validita' (default: 2038-01-01)
💡
DUAL vs SINGLE: il moltiplicatore e' 2 (DUAL) quando il valore assoluto del canvas supera il prezzo unitario (|canvasValue| > |unitPrice|), altrimenti e' 1 (SINGLE). unitPrice = base_price se presente, altrimenti modified_price. Il moltiplicatore e' sempre 1 o 2, mai altro.

Soglie (Tier)

Ogni regola puo' avere una o piu' soglie (tier) che definiscono il prezzo in base a intervalli di valori.

Per aggiungere una soglia, espandi una regola cliccandoci sopra, poi clicca "+ Aggiungi Soglia".

Campi della soglia

  • Tipo calcolofixed (prezzo fisso) o variable (valore canvas passato direttamente)
  • Scopelocal (confronta valore singolo contratto) o global (confronta metrica globale)
  • Min — valore minimo dell'intervallo
  • Max — valore massimo dell'intervallo
  • Modified Price — prezzo da applicare (solo per tipo fixed)
ScopeCalcoloMinMaxPrezzo
localfixed050€ 25.00✏️ ✕
localfixed50999999€ 35.00✏️ ✕
Esempio: due soglie con prezzo crescente in base al valore

Modificatori di prezzo

Un modificatore applica una formula di aggiustamento al prezzo calcolato dalla soglia. Ogni regola puo' avere al massimo un modificatore.

Per aggiungere un modificatore, espandi la regola e clicca "+ Aggiungi Modificatore".

Campi del modificatore

  • Formula — espressione JS (es. base_price * value)
  • Valore — il numero usato nella formula (es. 1.15 per +15%)
  • Arrotondamentonone, round, floor, ceil
Modificatore: base_price * value × 1.15 round ✏️ ✕
Modificatore che applica +15% al prezzo base con arrotondamento

Regole Virtual e sintassi depends_on

Le regole di tipo virtual generano voci di calcolo non presenti nel canvas del contractor. Vengono iniettate automaticamente dal sistema quando le condizioni specificate nel campo Dipende da (depends_on) sono soddisfatte.

Quando usare una regola virtual

  • Commissioni aggiuntive da riconoscere alla sub quando una specifica voce canvas e' presente (es. +25€ per ogni contratto con PRECHECK)
  • Storni virtuali di voci che il contractor non storna esplicitamente nel canvas (es. storno RID quando viene stornato il PRECHECK)
  • Qualsiasi compenso che dipende dalla presenza di altre voci ma non ha una corrispondente voce canvas diretta

Campi specifici delle regole virtual

  • Tipo — deve essere virtual
  • Service Name — il nome con cui la voce apparira' nell'anteprima e nei calcoli (es. STORNO VIRTUAL RID SU DECORRENZA POWER)
  • Base Price — il valore che viene iniettato come canvas value (positivo per compensi, negativo per storni)
  • Dipende da — le condizioni che devono essere soddisfatte per iniettare la voce (vedi sintassi sotto)

Sintassi del campo depends_on

Il campo depends_on supporta tre tipi di condizioni, separati da virgola. Ogni condizione viene identificata dal suo prefisso:

PrefissoSignificatoLogicaEsempio
(nessuno) Mese corrente Almeno UNA delle condizioni senza prefisso deve essere presente nelle chiavi canvas del mese in elaborazione. Le condizioni senza prefisso sono in OR tra loro. PRECHECK 180 GG - DOMESTICO POWER
*: Qualsiasi mese (storico) La chiave deve esistere in qualsiasi mese della storia canvas del contratto (passato, presente o futuro). Piu' condizioni *: sono in AND tra loro (devono essere tutte vere). *:RID SU DECORRENZA POWER
!: NON presente nel mese corrente La chiave NON deve esistere nel canvas del mese in elaborazione. Piu' condizioni !: sono in AND tra loro (nessuna deve essere presente). Serve per evitare duplicazioni con voci canvas reali. !:STORNO RID SU DECORRENZA POWER
I tre prefissi per le condizioni depends_on: mese corrente, storico e esclusione

Tutte e tre le tipologie di condizione devono essere soddisfatte contemporaneamente (AND tra i gruppi). All'interno dello stesso gruppo, la logica e':

  • Condizioni senza prefisso: basta che almeno una sia vera (OR)
  • Condizioni *:: devono essere tutte vere (AND)
  • Condizioni !:: devono essere tutte vere, cioe' nessuna chiave elencata deve essere presente (AND)

Esempio pratico: storno virtual RID

Scenario: Bluenergy storna il PRECHECK POWER ma non storna mai il RID SU DECORRENZA POWER nel canvas. Si vuole generare automaticamente uno storno RID quando il PRECHECK viene stornato, ma solo se il RID era stato effettivamente pagato in un mese precedente.

CampoValore
Service NameSTORNO VIRTUAL RID SU DECORRENZA POWER
Tipovirtual
Base Price-15
Dipende daSTORNO PRECHECK 180 GG - DOMESTICO POWER, *:RID SU DECORRENZA POWER, !:STORNO RID SU DECORRENZA POWER
Configurazione completa di una regola virtual per storno RID

Questa regola si attiva solo quando tutte e tre le condizioni sono soddisfatte:

  1. Il canvas del mese corrente contiene STORNO PRECHECK 180 GG - DOMESTICO POWER (il trigger)
  2. In qualsiasi mese della storia canvas del contratto esiste RID SU DECORRENZA POWER (verifica che il RID sia stato effettivamente pagato)
  3. Il canvas del mese corrente NON contiene STORNO RID SU DECORRENZA POWER (evita duplicazione se Bluenergy storna il RID direttamente)
⚠️
Nome diverso dal canvas reale: se esiste gia' una regola service per la voce canvas STORNO RID SU DECORRENZA POWER, la regola virtual deve avere un service_name diverso (es. STORNO VIRTUAL RID SU DECORRENZA POWER) per evitare conflitti nella configurazione. Il prefisso !: nel depends_on previene comunque la duplicazione a runtime.

Esempio pratico: compenso aggiuntivo per voce canvas

Scenario: si vuole riconoscere 25€ extra alla sub per ogni contratto che ha la voce PRECHECK 180 GG - DOMESTICO POWER.

CampoValore
Service NameBONUS PRECHECK POWER
Tipovirtual
Base Price25
Dipende daPRECHECK 180 GG - DOMESTICO POWER
Regola virtual semplice: inietta +25€ quando PRECHECK POWER e' presente nel mese
💡
Deduplicazione automatica: se il canvas del mese corrente contiene gia' una voce con lo stesso service_name della regola virtual, l'iniezione viene saltata automaticamente. Questo previene doppie contabilizzazioni nel caso in cui la voce arrivi sia dal canvas reale che dalla regola virtual.

Campo max_single_value per forzare SINGLE

Sulle regole storno con modificatore ×2, la detection DUAL/SINGLE puo' interferire con il calcolo. Se il canvas dello storno ha un valore pari al prezzo DUAL originale (es. -80 con unit price 40), il sistema lo interpreta come DUAL e raddoppia prima del modificatore, causando un addebito doppio.

Per risolvere, impostare max_single_value = 9999 sulla regola storno. Il sistema usera' la logica: se |canvasValue| > max_single_value allora DUAL, altrimenti SINGLE. Con 9999, il risultato e' sempre SINGLE, lasciando al modificatore il compito di raddoppiare correttamente.

CampoValoreEffetto
max_single_valueNULL (default)Detection DUAL/SINGLE standard: |canvas| >= |unit| × 2
max_single_value9999Forza SINGLE: nessun canvas realistico supera 9999, quindi il moltiplicatore e' sempre 1
Effetto di max_single_value sulla detection DUAL/SINGLE

Timeline regole

La vista Timeline fornisce una rappresentazione visuale Gantt-like della validita' temporale di tutte le regole della sub selezionata, permettendo di identificare a colpo d'occhio sovrapposizioni, buchi e regole in scadenza.

Come accedere

  1. Seleziona un contractor e una sub dalla sidebar
  2. Nella sezione Regole, clicca il pulsante "📅 Timeline" in alto a destra (accanto a "Nuova Regola")
  3. La vista lista viene sostituita dalla timeline. Clicca di nuovo "📅 Timeline" per tornare alla lista
Timeline Regole — PLENITUDE > WEBMARKS
Regola set 25 ott 25 nov 25 dic 25 gen 26 feb 26 mar 26 apr 26 mag 26
PRECHECK POWER
PRECHECK 180 GG - DOMESTICO POWER
Incentivo SDD
Incentivo SDD Switch Residenziali 3T
BONUS PRECHECK
BONUS PRECHECK POWER
CANVASS TLS
CANVASS VARIABILE TLS
STORNO PRECHECK
STORNO PRECHECK POWER
service local service global virtual soppressa 3Tmulti-soglia Opacita' ridotta = regola scaduta o futura
Timeline completa con 5 tipologie visive: service local (blu), service global (viola), virtual (rosa), soppressa (grigio), e badge multi-soglia

Come leggere la timeline

  • Asse verticale — ogni riga corrisponde a una regola, identificata dal service_name
  • Asse orizzontale — mesi, con un range di ±6 mesi rispetto alla data odierna (13 mesi totali)
  • Colore della barra — identifica il tipo e lo scope della regola a colpo d'occhio:
    • Blu pieno — regola service con scope local. E' il tipo piu' comune: il valore del singolo contratto viene confrontato con le soglie min/max
    • Viola pieno — regola service con scope global. Una metrica globale (es. percentuale SDD) determina in quale soglia ricade il contratto. Esempio tipico: le regole "Incentivo Mensile SDD" di Plenitude che hanno 3 soglie basate sulla percentuale di attivazione SDD
    • Rosa/fucsia — regola virtual. Genera voci non presenti nel canvas (compensi aggiuntivi, storni virtuali). Il colore corrisponde al badge virtual usato nella vista lista
    • Grigio tratteggiato — regola soppressa. Ha un modificatore con value = 0 (formula base_price * 0), quindi il risultato e' sempre €0. La voce canvas esiste ma viene annullata. Nella vista lista appare con il badge 🚫 soppressa
  • Badge multi-soglia — se una regola ha piu' di una soglia (tier), sulla barra compare un badge come 3T che indica il numero di soglie configurate. Questo e' particolarmente utile per le regole con scope global dove il numero di tier determina la granularita' degli scaglioni (es. SDD 55-65% → €15, 65-85% → €22, 85-100% → €30)
  • Opacita' — le regole attive (in corso) hanno opacita' piena (100%). Le regole scadute o future hanno opacita' ridotta (40%), per distinguerle visivamente senza rimuoverle dalla vista

Tooltip interattivo

Passando il mouse su una riga della timeline (sia sul nome che sulla barra), viene mostrato un tooltip HTML ricco e colorato che segue il cursore e riassume l'intera configurazione della regola in modo strutturato e visualmente chiaro.

Incentivo Mensile SDD Switch ATTIVA
Tiposervice global
Validita'2025-01-01 → 2038-01-01
Soglie (3)
fixed global 55 → 65 € 15.00
fixed global 65 → 85 € 22.00
fixed global 85 → 100 € 30.00
Tooltip ricco con titolo colorato, badge stato, tipo/scope, e soglie con tag visivi — esempio regola SDD Plenitude con 3 soglie global

Il tooltip e' composto da sezioni distinte, ognuna con colorazione dedicata:

  • Titolo — nome della regola colorato per tipo (blu = service, rosa = virtual) + badge arrotondato con lo stato: ATTIVA FUTURA SCADUTA
  • Tipo e scope — badge colorati: service / virtual e global se applicabile
  • Validita' — date in formato monospaced
  • Base price / Max single / Depends on — mostrati solo se configurati
  • Soglie — ogni tier su riga separata con sfondo grigio, badge fixed/variable e local/global, range min→max e prezzo in blu a destra
  • Modificatore — formula, moltiplicatore evidenziato in blu, badge arrotondamento (se presente) in viola. Le regole soppresse (×0) mostrano il modificatore in grigio

Click per modifica rapida

Cliccando su qualsiasi riga della timeline (nome o barra) si apre direttamente il modale di modifica della regola, permettendo di editarla senza dover tornare alla vista lista e cercarla manualmente.

💡
La timeline e' particolarmente utile per: identificare regole in scadenza (barre che terminano vicino al mese corrente), verificare che non ci siano buchi temporali tra regole successive, e controllare che le regole virtual coprano lo stesso periodo delle regole service da cui dipendono.

Copia, Incolla e Duplica regole

Copia/Incolla singola regola

  1. Clicca l'icona 📋 accanto alla regola da copiare — la regola viene salvata negli appunti interni
  2. Naviga alla sub di destinazione (selezionandola dalla sidebar)
  3. Clicca "📋 Incolla regola" — la regola viene creata nella nuova sub

Duplica tutte le regole su un'altra sub

  1. Seleziona la sub sorgente dalla sidebar
  2. Clicca "⧉ Duplica su altra sub"
  3. Nel modale, seleziona la sub destinazione
  4. Opzionalmente, spunta "Sovrascrivi regole esistenti"
  5. Clicca "⧉ Duplica"
⚠️
La duplicazione copia tutte le regole con le relative soglie e modificatori. Se "Sovrascrivi" e' attivo, le regole esistenti nella sub di destinazione con lo stesso service_name verranno eliminate e ricreate.

Espandere una regola

Clicca su una regola per espanderla e visualizzare i dettagli:

  • Soglie — tabella con tutti i tier definiti
  • Modificatore — formula di aggiustamento prezzo (se presente)
  • Dipende da — per regole virtual, condizioni con sintassi *: e !: (dettagli)
  • Metrica globale — per scope global, la chiave della metrica

🎁 Bonus

Gestisci bonus e penalita' per le sub-agenzie

I bonus sono importi aggiuntivi (positivi o negativi) che vengono aggiunti al calcolo delle provvigioni. Possono essere flat (importo fisso) o basati sul numero di pezzi (contratti).

ContractorSubDescrizioneFormulaImportoSoglia pezziValidita'
Alpha Roma Bonus qualita' flat € 500.00 min 10 / max ∞ 01/2026 → 12/2038 ✏️ ✕
Alpha Roma Incentivo volume pezzi × importo € 5.00 min 20 / max 50 01/2026 → 06/2026 ✏️ ✕
Tabella bonus con due tipi: flat e pezzi × importo

Creare un nuovo bonus

  1. Clicca "+ Nuovo Bonus"
  2. Compila i campi nel modale
  3. Clicca "Salva Bonus"

Campi del modale bonus

  • Contractor — seleziona il contractor
  • Sub — seleziona la sub
  • Descrizione — testo descrittivo (es. "Bonus qualita' Q1")
  • Formula:
    • flat — importo fisso indipendente dal numero di pezzi
    • pezzi * importo — l'importo viene moltiplicato per il numero di contratti nel mese
  • Importo — valore in euro (positivo per bonus, negativo per penalita')
  • Min pezzi — numero minimo di contratti richiesto per attivare il bonus (opzionale)
  • Max pezzi — numero massimo di contratti (opzionale)
  • Valid From / Valid To — periodo di validita'
💡
I bonus usano il mese di competenza (billing month) per determinare la validita', a differenza delle regole che usano la created_at del contratto.

▶️ Calcola

Lancia il calcolo automatico delle provvigioni

Questa sezione consente di avviare il workflow di calcolo che applica tutte le regole, soglie, modificatori e bonus ai contratti del mese selezionato.

Come avviare un calcolo

  1. Seleziona il mese di competenza (es. 2026-03)
  2. Seleziona il contractor dal menu a tendina
  3. Seleziona una o piu' sub-agenzie (Ctrl+Click per selezione multipla, oppure clicca "Seleziona tutte")
  4. Clicca "▶ Avvia Calcolo"
Mese di competenza
2026-03
Contractor
Alpha Energia
Sub (Agenzia)
✓ Roma
✓ Milano
Napoli
▶ Avvia Calcolo 🗑️ Svuota Cache 🔥 Flush Tutta
Form di avvio calcolo con selezione multipla sub

Monitoraggio del progresso

Durante il calcolo, viene mostrata una barra di progresso in tempo reale con:

  • Step corrente — nome della fase in esecuzione
  • Percentuale — avanzamento complessivo
  • Conteggio contratti — es. "125/300 contratti (42%)"
  • Log messaggi — dettaglio delle operazioni con timestamp
Applica Regole 67%
201/300 contratti
[14:32:05] Warm-up cache completato
[14:32:07] Estratti 300 contratti
[14:32:08] Applicazione regole in corso...
Progresso del calcolo con barra, conteggio e log

Al termine del calcolo, compaiono due pulsanti:

  • 🔍 Vai all'Anteprima — passa direttamente alla sezione Anteprima per vedere i risultati
  • ↩ Nuovo Calcolo — resetta il form per un nuovo calcolo
💡
Se selezioni piu' sub, il calcolo viene eseguito sequenzialmente per ciascuna sub. Puoi interrompere il monitoraggio cliccando "⬛ Interrompi" (il workflow continua in background su n8n).

Gestione Cache Redis

Il sistema utilizza una cache Redis per velocizzare i calcoli. Se modifichi regole, soglie o modificatori, potresti dover invalidare la cache prima di ricalcolare.

  • 🗑️ Svuota Cache — invalida la cache solo per il contractor/sub/mese selezionato
  • 🔥 Flush Tutta — invalida tutta la cache Redis (tutte le chiavi fastsign:*)
⚠️
Usa "Flush Tutta" con cautela: forza il ricalcolo di tutte le regole da database per ogni successivo calcolo, aumentando i tempi di elaborazione.

👁️ Anteprima

Visualizza i risultati del calcolo provvigioni

La sezione Anteprima mostra i risultati calcolati, raggruppati per contractor → sub.

Filtri

Mese
2026-03
Contractor
Tutti
Sub
Tutte
🔍 Carica Anteprima 📄 Genera PDF 📥 Excel per Sub
Barra filtri con opzioni di esportazione

Struttura dei risultati

Per ogni coppia contractor/sub, l'anteprima mostra:

Alpha Energia › Sub Roma
Voce CanvasPezziTotale
EE_RESIDENZIALE_DOMESTICO45€ 1,125.00
GAS_CONDOMINIO12€ 420.00
Storni-€ 75.00
Bonus: Qualita' Q1€ 500.00
TOTALE€ 1,970.00
Anteprima raggruppata con voci canvas, storni, bonus e totale

Dettaglio per riga

Cliccando su "▶ Dettaglio contratti" sotto ogni card anteprima, si espande la tabella con il dettaglio riga per riga di ogni contratto calcolato:

  • Codice contratto
  • Data creazione (created_at)
  • POD/PDR
  • Log ID
  • Voce canvas
  • Tipo — Canvas, Storno, Bonus
  • Prezzo calcolato — colorato in verde (positivo) o rosso (negativo)
  • Debug — dettagli del calcolo (regola applicata, moltiplicatore, ecc.)

Evidenziazione voci senza regola

Quando una voce canvas non ha una regola associata (service_name non presente in invoice_rules), la riga viene evidenziata con massima visibilita':

ContrattoVoce CanvasTipoImportoCalcolo
DOA2224836SA Compensi Switch In Residenziale canvas € 120.00 60 x 2 = 120 [DUAL]
DOA2224836SA Incentivo conversione Polizza canvas € 0.00 ⚠ NESSUNA REGOLA
DOA2224836SA Incentivo Mensile SDD canvas € 15.00 15 x 1 = 15 [SINGLE]
Riga senza regola: sfondo rosso, bordo sinistro rosso, badge lampeggiante ⚠ NESSUNA REGOLA

L'evidenziazione comprende:

  • Sfondo rosso chiaro su tutta la riga (12% opacita')
  • Bordo sinistro rosso spesso (3px) per visibilita' anche scorrendo velocemente
  • Badge rosso lampeggiante ⚠ NESSUNA REGOLA nella colonna calcolo, con animazione pulse che alterna opacita' ogni 1.5 secondi
⚠️
Quando vedi una riga con ⚠ NESSUNA REGOLA, significa che la voce canvas presente nel contratto non ha una regola configurata nella sezione Regole per quel contractor/sub. Devi creare la regola corrispondente oppure verificare nella sezione ⚠️ Non Mappati se la voce e' gia' segnalata.

Contratti pagati e stornati nella stessa competenza (canvas zero)

Quando un contratto viene pagato e stornato dal contractor nella stessa competenza, tutte le voci canvas risultano a € 0.00. Questi contratti appaiono nel dettaglio con il debug canvas zero (pagato+stornato) per indicare che il valore zero non e' un errore ma il risultato di una compensazione nella stessa fattura.

ContrattoVoce CanvasTipoImportoCalcolo
DOA2224836SA Compensi Switch In Residenziale canvas € 0.00 canvas zero (pagato+stornato)
DOA2224836SA Incentivo Mensile SDD canvas € 0.00 canvas zero (pagato+stornato)
Contratto pagato+stornato: tutte le voci a €0 con debug esplicativo

Questi contratti sono importanti per la sub perche' documentano l'avvenuto pagamento e storno, anche se il saldo netto e' zero. Vengono inclusi sia nel dettaglio contratti che nell'export Excel per Sub.

💡
Voci soppresse vs canvas zero: le regole soppresse (con modificatore ×0) producono anch'esse importo €0, ma vengono escluse sia dal dettaglio visibile alla sub che dall'Excel. Si riconoscono dal debug che include [mod: base_price * value x0 = 0]. Le canvas zero genuine invece hanno solo canvas zero (pagato+stornato) senza la sezione [mod:].

Esportazione

  • 📄 Genera PDF — apre la finestra di stampa del browser (puoi salvare come PDF). Le righe soppresse (€0) vengono automaticamente nascoste in stampa
  • 📥 Excel per Sub — esporta i dati in formato CSV apribile con Excel. Include le righe canvas zero (pagato+stornato) per dare visibilita' alla sub. Esclude le righe soppresse (modificatore ×0) che la sub non deve vedere. La distinzione avviene tramite il campo calcolo_debug: se contiene canvas zero senza [mod:] viene incluso, altrimenti viene escluso

⚙️ Config

Gestione contractor, sub-agenzie e contatti

La sezione Config mostra una vista ad albero gerarchica di tutti i contractor con le relative sub-agenzie.

+ Nuovo Contractor
Alpha Energia attivo split payment 3 sub ID: 1 ✏️ 💳
Sub Agenzia Roma GRP 42 🏢 Roma SRL 📧 [email protected] ✏️ Contatti ✕ Scollega
Sub Agenzia Milano GRP 43 ✏️ Contatti ✕ Scollega
Albero configurazione con contractor, badge stato e sub-agenzie

Gestione Contractor

Creare un nuovo contractor

  1. Clicca "+ Nuovo Contractor"
  2. Inserisci il nome del contractor
  3. Clicca "Salva"

Azioni sul contractor

  • ✏️ Modifica nome — rinomina il contractor
  • ⏸ / ▶ Abilita/Disabilita — disattiva un contractor (non apparira' nei calcoli). Badge: attivo o disabilitato
  • 💳 Split Payment — attiva/disattiva il regime di split payment. Badge: split payment o IVA standard

Gestione Sub-Agenzie

Ogni contractor puo' avere piu' sub-agenzie collegate. Per aggiungere una sub:

  1. Espandi il contractor nell'albero
  2. Clicca "+ Aggiungi Sub" sotto il contractor
  3. Seleziona una sub esistente dal menu o crea una nuova sub
  4. Clicca "Aggiungi"

Per scollegare una sub da un contractor, clicca "✕ Scollega".

🚨
Scollegare una sub non elimina i dati della sub (regole, bonus, ecc.), ma rimuove solo l'associazione con il contractor.

Contatti Sub-Agenzia

Ogni sub-agenzia puo' avere informazioni di contatto associate:

  • 🏢 Ragione Sociale
  • 📧 Email
  • 📱 Cellulare

Per modificare i contatti, clicca "✏️ Contatti" accanto alla sub nell'albero config. I dati vengono mostrati come tag colorati nella vista ad albero.

🧾 Fatture

Gestisci il ciclo di vita delle fatture

La sezione Fatture consente di monitorare e gestire lo stato delle fatture generate dal calcolo provvigioni.

Filtri

  • Mese — filtra per mese di competenza (o "Tutti")
  • Stato — filtra per stato della fattura (o "Tutti")
Marzo 2026 Totale: € 12,500 | Pagato: € 8,000 | Residuo: € 4,500
ContractorSubImponibileIVATotaleStatoN° FatturaDataPDFAzioni
AlphaRoma€ 1,970€ 433€ 2,403 Accettata 2026/04215/03/2026 📎 PDF ✏️ ▶
AlphaMilano€ 980€ 216€ 1,196 Inviata ✏️ ▶ ◀
Tabella fatture con stati, importi e azioni

Ciclo di vita della fattura

Ogni fattura attraversa i seguenti stati in ordine:

Bozza
Inviata
Accettata
Fattura ricevuta
SEPA inviato
Pagata ✓

Transizioni di stato

  • ▶ Avanza — porta la fattura allo stato successivo
  • ◀ Retrocedi — riporta la fattura allo stato precedente
  • Dallo stato "Pagata" non e' possibile retrocedere (stato finale)

Modifica fattura

Cliccando ✏️ si apre un modale per modificare:

  • Stato — selezione diretta dello stato
  • Numero fattura — numero identificativo
  • Data fattura
  • Note — annotazioni libere
  • PDF Fattura — caricamento del file PDF (drag & drop supportato)
💡
I totali per mese (Totale, Pagato, Residuo) si aggiornano automaticamente in base allo stato delle singole fatture.

📥 Inviti / Import Fatturato

Controlla lo stato degli import e carica i dati mancanti

La sezione Inviti mostra una matrice di checklist che indica, per ogni contractor e mese, se il fatturato e' stato importato correttamente.

Legenda

Importato correttamente
↑ carica Mancante — clicca per caricare
~ Mese corrente (non ancora richiesto)
ContractorMar 2026Feb 2026Gen 2026Dic 2025
Alpha Energia ~
Beta Gas ~ ↑ carica
Matrice checklist: verde = importato, rosso = mancante, ambra = mese corrente

Caricare un fatturato mancante

  1. Individua la cella ↑ carica nella matrice
  2. Cliccaci sopra — si apre il modale di upload
  3. Trascina il file nella zona di drop oppure clicca per selezionarlo
  4. Formati accettati: .xlsx, .xls, .csv
  5. Clicca "Carica" per avviare l'importazione

Matrice Sub-Agenzia

Sotto la matrice contractor, c'e' una seconda matrice che mostra il dettaglio per sub-agenzia. Puoi filtrarla per contractor specifico. Mostra il conteggio dei record importati per ogni sub/mese.

⚠️ Non Mappati

Voci canvas senza regola di calcolo associata

Questa sezione mostra le voci canvas trovate nei contratti che non hanno una regola di calcolo corrispondente. Finche' una voce non e' mappata, non verra' calcolata nel provvigionamento.

⚠️
Il badge rosso sul pulsante "Non Mappati" nella barra di navigazione indica quante voci non mappate esistono. Controlla regolarmente questa sezione per evitare di perdere provvigioni.

Filtri

  • Mese — filtra per mese di rilevamento
  • Contractor — filtra per contractor
  • 🔄 — aggiorna i dati
ContractorSubVoce CanvasValoreMeseRilevatoAzioni
Alpha Roma EE_NUOVO_SERVIZIO € 45.00 2026-03 15/03 14:32 📋 Regola
Voce canvas non mappata con azione rapida per creare la regola

Azioni disponibili

  • 📋 Regola — apre il modale di creazione regola con il service_name pre-compilato dalla voce canvas. Devi solo completare i restanti campi (soglia, prezzo, ecc.)
  • ✕ Ignora — rimuove la voce dalla lista (la segna come ignorata). Usalo per voci canvas che non devono generare provvigioni

📊 Margini

Analisi di redditivita' per contractor e sub

La sezione Margini fornisce una visione aggregata della redditivita' per ciascun contractor e sub-agenzia.

Come usarla

  1. Seleziona il mese di riferimento
  2. Clicca "Carica"

Dati visualizzati

Riepilogo per Contractor

Alpha Energia
Incassato: € 15,000
Costo Sub: € 9,800
Margine: € 5,200
Margine %: 34.7%
SubMeseRicavoCostoMargine%Entrata (IVA)Uscita (IVA)Cashflow
Roma03/2026 € 8,000€ 5,200 € 2,80035% € 9,760€ 6,344 € 3,416
Milano03/2026 € 7,000€ 4,600 € 2,40034.3% € 8,540€ 5,612 € 2,928
Dettaglio margini con IVA e cashflow per sub

Colonne della tabella

  • Incassato / Ricavo — totale fatturato dal contractor (canvas value)
  • Costo Sub — totale provvigioni da pagare alla sub
  • Margine — differenza tra ricavo e costo
  • Margine % — percentuale di margine (verde se positivo, rosso se negativo)
  • Entrata (IVA) — ricavo + IVA 22%
  • Uscita (IVA) — costo + IVA 22%
  • Cashflow — differenza tra entrata e uscita
💡
Per i contractor con split payment, il calcolo IVA viene gestito diversamente (IVA non incassata direttamente). Verifica i dettagli nella sezione Config.

🔬 Simulazione What-If

Testa modifiche alle regole senza impattare i dati reali

La sezione Simulazione consente di modificare virtualmente le regole di calcolo e vederne l'effetto in tempo reale, senza alterare i dati nel database. E' uno strumento potente per:

  • Prevedere l'impatto di variazioni di prezzo
  • Testare nuove soglie prima di applicarle
  • Analizzare scenari "what-if" per la negoziazione
  • Stimare margini con configurazioni diverse

Come avviare una simulazione

  1. Seleziona mese, contractor e sub
  2. Clicca "▶ Carica dati" — vengono scaricati contratti e regole
  3. Modifica le regole nella tabella interattiva
  4. I risultati si ricalcolano automaticamente ad ogni modifica

Tabella regole modificabile

ServizioTipoScopeCalcoloBase PriceMod. PriceMinMaxMod. FormulaMod. ValoreArrot.
EE_RES_DOM service local fixed ▾ 0999999 none
GAS_COND service global variable ▾ 0100 base * val round ▾
Tabella regole: checkbox per abilitare/disabilitare, campi editabili in-line

Campi modificabili

  • ☑ Checkbox — abilita/disabilita la regola nella simulazione (opacita' ridotta = disabilitata)
  • Calcolo — dropdown per cambiare tra fixed e variable
  • Base Price — modifica il prezzo base
  • Modified Price — modifica il prezzo della soglia
  • Mod. Valore — modifica il valore del modificatore
  • Arrotondamento — dropdown: none, round, floor, ceil
Il checkbox master nella riga di intestazione abilita/disabilita tutte le regole contemporaneamente. Utile per partire da zero e attivare solo quelle che vuoi testare.

Modifica quantita' pezzi

Nei risultati della simulazione, puoi modificare le quantita' (pezzi) per ogni voce canvas. Questo consente di simulare scenari con volumi diversi senza alterare i dati reali.

Ricalcolo e export

  • 🔄 Ricalcola — forza un ricalcolo manuale (di solito automatico)
  • 📥 Esporta CSV — scarica i risultati della simulazione in formato CSV
💡
L'engine di simulazione ignora le date di validita' (valid_from/valid_to) delle regole, permettendoti di testare regole future o scadute. Il calcolo replica fedelmente la logica dei workflow WF-3 e WF-4 del backend.

💰 Gettoni Medi

Confronto gettone incassato vs riconosciuto per contractor / sub / mese

La sezione Gettoni Medi confronta due prospettive fondamentali per ogni combinazione contractor/sub/mese:

  • Gettone Incassato — quanto Soloweb ha effettivamente incassato dal contractor per pezzo, calcolato come SUM(importo_fatturazione + surcharge) / SUM(pezzi). Per BLUENERGY viene aggiunto un surcharge di +45€/pezzo sull'indiretta
  • Gettone Riconosciuto — quanto Soloweb ha riconosciuto alla sub-agenzia per pezzo, calcolato dalla somma dei calculated_price in invoice_details (dati dall'anteprima/fattura) diviso per i pezzi
  • Delta Gettone — la differenza tra incassato e riconosciuto, che rappresenta il margine di Soloweb per pezzo. Positivo (verde) = margine, negativo (rosso) = perdita

Questo confronto e' fondamentale per:

  • Verificare la marginalita' — capire se il rapporto tra incassato e riconosciuto e' sostenibile
  • Confrontare le sub-agenzie — identificare dove il delta e' piu' favorevole o critico
  • Analizzare i trend temporali — filtrando per range di mesi e' possibile osservare come variano i gettoni e il delta nel tempo
  • Confrontare produzione indiretta e diretta — con l'opzione SOLOWEB si possono confrontare i gettoni medi delle sub con quelli della produzione diretta

Filtri disponibili

La barra dei filtri si trova nella parte superiore della sezione e consente di restringere i dati visualizzati:

Contractor
Tutti ▾
Sub
Tutte ▾
Da mese
2026-01
A mese
2026-03
Includi produzione diretta (SOLOWEB)
Filtri: contractor, sub, range mesi e opzione produzione diretta
  • Contractor — seleziona un singolo contractor o lascia "Tutti" per vedere tutti i contractor attivi. La lista e' popolata automaticamente dalla sidebar
  • Sub — seleziona una specifica sub-agenzia. Disponibile solo dopo aver scelto un contractor. Lascia "Tutte" per vedere tutte le sub del contractor selezionato
  • Da mese / A mese — definiscono un intervallo temporale. I mesi si riferiscono alla created_at del contratto (data di inserimento nel sistema). Se entrambi sono vuoti, vengono mostrati tutti i mesi disponibili. E' possibile impostare solo uno dei due per un filtro aperto
  • Includi produzione diretta (SOLOWEB) — checkbox che, se attivata, aggiunge una seconda tabella con i gettoni medi della produzione diretta (contratti gestiti internamente con agenzia = SOLOWEB dalla tabella backoffice)

Dopo aver impostato i filtri desiderati, clicca il pulsante "Carica" in alto a destra per eseguire la query e visualizzare i risultati.

Risultati e tabelle

I risultati vengono mostrati in una tabella raggruppata per contractor, con una riga per ogni combinazione di sub-agenzia e mese.

Tabella Gettoni Medi — Sub

Gettoni Medi — Sub
ContractorSubMeseContrattiPezziTot IncassatoGett. IncassatoTot RiconosciutoGett. RiconosciutoΔ Gettone
Alpha EnergiaRoma2026_03 45 52 € 6,760.00 € 130.00 € 4,680.00 € 90.00 € 40.00
Alpha EnergiaMilano2026_03 32 38 € 5,320.00 € 140.00 € 4,180.00 € 110.00 € 30.00
Subtotale Alpha Energia 77 90 € 12,080.00 € 134.22 € 8,860.00 € 98.44 € 35.78
TOTALE GENERALE 77 90 € 12,080.00 € 134.22 € 8,860.00 € 98.44 € 35.78
Tabella gettoni medi con incassato, riconosciuto, delta e subtotali

Colonne della tabella

  • Contractor — il cliente/fornitore (es. Alpha Energia, BLUENERGY)
  • Sub — la sub-agenzia che ha prodotto i contratti
  • Mese — il mese di creazione dei contratti, in formato YYYY_MM
  • Contratti — il numero totale di contratti con importo di fatturazione valido (maggiore di zero)
  • Pezzi — la somma dei pezzi dei contratti. Un contratto DUAL conta 2 pezzi, un SINGLE conta 1
  • Tot Incassato — la somma degli importi di fatturazione, con surcharge BLUENERGY (+45€/pezzo sull'indiretta). Rappresenta quanto Soloweb ha effettivamente incassato dal contractor
  • Gett. Incassato — il gettone medio incassato: Tot Incassato / Pezzi
  • Tot Riconosciuto — la somma dei calculated_price da invoice_details (anteprima/fattura). Rappresenta quanto Soloweb ha riconosciuto alla sub. Se il calcolo non e' stato ancora eseguito per quel mese, il valore sara' 0
  • Gett. Riconosciuto — il gettone medio riconosciuto: Tot Riconosciuto / Pezzi
  • Δ Gettone — la differenza tra gettone incassato e riconosciuto per pezzo. Colorato in verde se positivo (margine) o in rosso se negativo (perdita)

La tabella include due livelli di subtotali:

  • Subtotale per contractor — riga con sfondo grigio che mostra i totali e le medie complessive per quel contractor
  • Totale Generale — riga evidenziata in blu in fondo alla tabella con il riepilogo globale
💡
Il gettone medio viene calcolato solo sui contratti con esito = 'INSERITO' e importo_fatturazione > 0. Per BLUENERGY, l'incassato include un surcharge di +45€/pezzo che il contractor riconosce a Soloweb sull'indiretta, mentre il riconosciuto alla sub segue le regole configurate. Il delta mostra quindi il margine effettivo di Soloweb.

Produzione diretta (SOLOWEB)

Attivando la checkbox "Includi produzione diretta (SOLOWEB)", sotto alla tabella delle sub viene visualizzata una seconda tabella dedicata alla produzione diretta, cioe' i contratti gestiti internamente dall'agenzia SOLOWEB.

Tabella Gettoni Medi — Produzione Diretta (SOLOWEB)

Gettoni Medi — Produzione Diretta (SOLOWEB)
ContractorMeseN. ContrattiPezziImporto TotaleGettone Medio
Alpha Energia2026_03 18 22 € 3,080.00 € 140.00
Beta Gas2026_03 12 14 € 1,540.00 € 110.00
TOTALE DIRETTA 30 36 € 4,620.00 € 128.33
Gettoni medi della produzione diretta — dati dalla tabella backoffice

La tabella della produzione diretta ha una struttura simile ma semplificata:

  • Non ha la colonna Sub (la produzione diretta non passa per sub-agenzie)
  • I dati provengono dalla tabella backoffice (non backoffice_subs) filtrata per agenzia = 'SOLOWEB'
  • Il filtro Contractor si applica anche a questa tabella; il filtro Sub no (non pertinente)
  • I filtri temporali Da mese / A mese si applicano anche alla produzione diretta
💡
Confrontare i gettoni medi delle sub con quelli della produzione diretta permette di valutare se le sub-agenzie stanno producendo contratti con importi allineati alla produzione interna, o se ci sono scostamenti significativi che meritano attenzione.

🎨 Tema Chiaro / Scuro

Personalizza l'aspetto dell'applicazione

L'applicazione supporta due temi:

  • 🌙 Tema scuro (default) — sfondo scuro, ideale per ambienti con poca luce
  • ☀️ Tema chiaro — sfondo chiaro, migliore leggibilita' in ambienti luminosi

Per cambiare tema, clicca il pulsante 🌙 / ☀️ nella barra di navigazione in alto a destra. La preferenza viene salvata nel browser.

📚 Glossario

Terminologia utilizzata nell'applicazione

Contractor Fornitore di energia/gas che commissiona la vendita tramite sub-agenzie
Sub / Sub-Agenzia Agenzia che vende i contratti per conto del contractor e percepisce le provvigioni
Voce Canvas Identificativo del tipo di servizio/contratto nel sistema canvas (es. EE_RESIDENZIALE_DOMESTICO)
Regola Definisce come calcolare la provvigione per una specifica voce canvas di una sub
Soglia / Tier Intervallo di valori (min/max) con un prezzo associato. Le regole possono avere piu' soglie
Modificatore Formula di aggiustamento applicata dopo la soglia (es. +15% su base price)
DUAL / SINGLE Moltiplicatore: DUAL (×2) se il valore canvas supera il prezzo unitario, altrimenti SINGLE (×1)
Billing Month Mese di competenza della fattura (usato per bonus e metriche)
created_at Data di creazione del contratto in backoffice_subs (usata per il matching delle regole)
Split Payment Regime fiscale in cui l'IVA viene versata direttamente all'erario dal committente
Storno Rettifica negativa di una provvigione precedentemente calcolata
POD / PDR Identificativi univoci del punto di fornitura (POD = energia elettrica, PDR = gas)
Cache Redis Memoria temporanea (TTL 2h) che velocizza il calcolo evitando query ripetute al database
Fastsign Provvigioni — Manuale Utente
Ultimo aggiornamento: Marzo 2026