Università degli Studi di Trieste
Facoltà di Ingegneria
________________________________________________________________________
Tesi di Laurea Triennale in Ingegneria Informatica
Progettazione di un sistema di fatturazione
di consumi e servizi
Relatore Laureando
Chiar.mo Prof. Maurizio FERMEGLIA Mauro LUPIERI
________________________________________________________________________
Anno Accademico 2007-2008
A Riccardo, Licia e Mamma
Indice
III
1. Introduzione
L’oggetto di studio di questo elaborato è la progettazione e lo sviluppo di un sistema di
fatturazione di consumi e servizi sufficientemente flessibile e generalizzato da coprire un
ampio spettro di esigenze e funzionalità. A partire dall’analisi dei processi di fatturazione
delle società che forniscono servizi al pubblico, quali forniture di gas metano, energia
elettrica e acqua potabile, si intende sviluppare un prodotto in grado di gestire in ingresso
una qualsiasi misura da fatturare e di produrne in uscita la valorizzazione monetaria in
funzione della storia del cliente e del piano tariffario applicato.
L’analisi parte dalla ricerca degli elementi che questi sevizi hanno in comune con
l’obiettivo non solo di sviluppare un unico sistema in grado di gestirli, ma anche di poter
affrontare nuove diverse esigenze ed articolazioni tariffarie.
Lo studio di un prodotto caratterizzato da un alto grado di flessibilità, oltre che di efficienza
ed efficacia, è motivato dalla progressiva evoluzione e liberalizzazione dei mercati
dell’energia e dei servizi pubblici. Le aziende devono adeguarsi a fornire nuovi servizi,
entrare in mercati nuovi e liberalizzati, offrire piani tariffari personalizzati e adottare
strategie di marketing orientate alla fidelizzazione del cliente. Tutti questi fattori
determinano l’inadeguatezza dei tradizionali sistemi monolitici e poco flessibili,
rappresentando un freno alle strategie del management.
I termini flessibile e generalizzato significano che il prodotto deve essere in grado di
adattarsi ed evolversi a fronte di nuovi servizi, nuove esigenze, ristrutturazioni dei mercati e
repentini cambiamenti delle strategie di marketing aziendali. Il tutto deve essere possibile
con uno sforzo minimo in termini di tempi di implementazione e costi di realizzazione.
Come evidenziato nella figura che segue, si presuppone l’esistenza di altri prodotti adibiti
alla gestione dei clienti, alle strutture tariffarie ed alla rilevazione delle misure; attraverso
opportuni moduli d’interfaccia, questi sistemi alimentano la base di dati. L’applicativo
opera quindi su informazioni gestite da altri moduli e, a sua volta, genera informazioni che
potranno essere utilizzate da sistemi quali ad esempio portali Web che forniscono servizi al
cliente finale, sistemi ERP, strumenti di reportistica, di Business Intelligence ed altro
ancora.
IV
Sistemi di
Moduli di
acquisizione
interfaccia
misure e Applicativo di
gestione fatturazione
cliente
Archivio
Fatturazione
Estrazione dati:
ERP, Web,
Report,….
La progettazione di un qualsiasi sistema informativo riguarda sostanzialmente due aspetti,
la progettazione dei dati e la progettazione delle applicazioni. Questo elaborato tratta
essenzialmente la progettazione e la realizzazione della Base di Dati e della Logica di
Business dell’applicativo.
Nell’elaborato viene adottato il metodo progettuale basato sul modello di sviluppo del ciclo
di vita del software limitatamente alle attività di raccolta ed analisi dei requisiti,
progettazione e realizzazione.
L’applicazione è stata implementata utilizzando il Data Base Management System
Microsoft SQL Server 2005 Express su piattaforma Microsoft (sistemi operativi Windows
XP, Windows Vista o Windows 2000 - 2003 Server). Gli unici vincoli Hardware sono
rappresentati dai requisiti minimi di installazione di SQL Server Express. Per il Porting in
produzione è necessaria l’adozione della versione completa di SQL Server e sono da
valutare le caratteristiche minime del Server che deve ospitare la base di dati, caratteristiche
che sono determinate sostanzialmente dal numero di clienti e di fatture da gestire. Per
quanto riguarda i vincoli normativi, si è fatto riferimento alle disposizioni dell’AEEG
(Autorità per l’Energia Elettrica ed il Gas) ed ai contratti standard proposti dagli operatori
presenti sul mercato.
V
Struttura dell’elaborato
1.1.
Il secondo capitolo presenta una descrizione generale del processo di fatturazione delle
società che forniscono servizi al pubblico. Vengono evidenziati i principali elementi
costitutivi di questo processo e viene soprattutto eseguita l’analisi dettagliata delle esigenze
e dei requisiti che un qualsiasi sistema di fatturazione attualmente in commercio deve
possedere. La necessità di definire un modello flessibile costringe ad una continua ricerca
della ragione d’essere di ogni singolo requisito e degli elementi che i vari servizi hanno in
comune. Il risultato di questa fase è una descrizione precisa delle caratteristiche e delle
funzionalità che il prodotto deve presentare.
Il terzo capitolo presenta la progettazione del sistema ed è articolato in due fasi: la
progettazione concettuale e la progettazione logica. La prima fa ampio uso del modello
Entità – Relazioni, il modello più idoneo a rappresentare e supportare lo sviluppo di sistemi
relazionali. La seconda fase tratta la traduzione del modello concettuale nello schema
logico relazionale.
Nel quarto capitolo si procede allo sviluppo del data base e della logica di business,
implementata con le Stored Procedures scritte in Transact-SQL di Microsoft SQL Server.
Per la presentazione della fattura, a solo scopo dimostrativo e di controllo dei risultati
ottenuti, è stato sviluppato uno script in linguaggio VBS per la generazione di un foglio
Excel contenente il documento prodotto dall’applicativo.
Seguono le opportune conclusioni, la valutazione dei risultati ottenuti e la definizione degli
eventuali sviluppi futuri.
VI
2. Definizione delle specifiche di progetto
Le specifiche del progetto sono definite a partire dalle caratteristiche generali di un comune
sistema di fatturazione. La difficoltà principale risiede nella volontà di progettare un
modello generale, non strettamente legato alle peculiarità di una singola tipologia di
servizio. Il prodotto deve essere in grado di adattarsi a gestire nuove esigenze, nuove
situazioni e nuovi servizi e deve essere progettato in modo tale da facilitare le future
implementazioni e lo sviluppo di nuove funzionalità che gli permettano di crescere in tutte
le sue dimensioni.
Lo sviluppo del sistema avviene a partire dall’analisi delle tecniche di fatturazione dei
seguenti servizi:
• Servizio di fornitura di acqua potabile
• Servizio di fornitura di gas metano
• Servizio di fornitura di energia elettrica
Particolare attenzione è stata posta alla definizione dell’entità “misura”. La volontà di
realizzare un sistema flessibile e aperto agli sviluppi futuri ha comportato la gestione di
tipologie di misura che non sono utilizzate nella fatturazione dei servizi a rete ma che
descrivono in modo completo ed esaustivo l’entità stessa.
L’appendice B contiene documenti scaricati dai siti istituzionali di Aziende che operano nei
settori elencati e dal sito dell’Autorità per l’Energia Elettrica ed il Gas, e definiscono in
modo puntuale le tecniche di fatturazione che vengono applicate ai relativi consumi.
Analisi e raccolta dei requisiti
2.1.
Di seguito vengono esposti i concetti fondamentali attorno ai quali è stato sviluppato il
progetto.
L’anagrafica dei soggetti.
Il soggetto può essere censito a sistema per uno dei seguenti motivi:
• titolare di un contratto di fornitura e quindi cliente;
• destinatario dei documenti di fatturazione (potrebbe non essere il titolare del contratto);
7
• istituto di credito al quale il cliente può delegare il pagamento delle fatture.
Il soggetto è caratterizzato dai seguenti attributi: il codice fiscale e la partita iva, l’indirizzo
di residenza e quello di recapito dei documenti, la data di nascita, il sesso e l’eventuale
domiciliazione bancaria; può essere persona fisica o persona giuridica.
La residenza.
E’ un attributo del soggetto e ne identifica l’indirizzo di residenza.
Il recapito.
E’ l’attributo del soggetto che identifica l’indirizzo al quale inviare le comunicazioni. Può
essere anche un soggetto diverso dal titolare, in questo caso si tratta di recapito presso terzi.
Il contratto.
Il contratto è stipulato dal soggetto con l’azienda che eroga il servizio ed è caratterizzato da
un numero identificativo, da una data di stipula e dallo stato (aperto, chiuso, in attesa di
perfezionamento).
Il cliente.
Il cliente è il soggetto che ha stipulato un contratto con l’azienda; è caratterizzato, da tutti
gli attributi che tipicamente rivestono importanza nell’ambito del rapporto contrattuale
quali l’indirizzo di fornitura, il tipo di servizio erogato (elettricità, gas, acqua, telefonia,
ecc.), uno o più codici di raggruppamento definiti dalle caratteristiche del tipo servizio
(utilizzati per funzioni di analisi e reportistica, ad esempio il codice merceologico), il piano
tariffario applicato, la storia (rilevante per la fatturazione), l’apparato di rilevazione delle
misure ed il trattamento economico, cioè l’applicazione di particolari condizioni di favore
(sconti), un codice che identifica univocamente il cliente ed un codice che rappresenta
univocamente la fornitura, ad esempio per i servizi elettricità e gas il “Point of Delivery”
stabilito dall’autorità adibita al controllo della rete di distribuzione ed eventualmente per il
servizio di telefonia il numero telefonico identificativo.
La fornitura.
Rappresenta l’indirizzo di erogazione del servizio.
Il tipo servizio.
Il tipo di servizio è caratterizzato dai processi tecnici ed amministrativi necessari ad
erogarlo. Ai fini dell’applicativo il servizio è caratterizzato dai metodi di fatturazione, dalle
tariffe e dai prezzi che possono essere applicati al cliente, dall’entità fisica che è misurata
8
per quantificarlo e da eventuali parametri di natura geografica e/o tecnica degli impianti di
fornitura.
L’indirizzo.
L’indirizzo è caratterizzato dai seguenti attributi: via, civico, interno, città, CAP, nazione.
E’ legato alla fornitura, al recapito e alla residenza.
Lo strumento di misura.
Per strumento di misura s’intende l’oggetto adibito alla rilevazione dei consumi,
caratterizzato dalla marca, dalla matricola, dall’anno di produzione, dall’anno di
installazione, dallo stato, dall’anno di rimozione ed eventualmente da altri attributi
riguardanti le specificità tecniche dell’apparato. Nell’analisi delle realtà da gestire non
sempre questa entità è presente.
Lo stato contrattuale.
Rappresenta la condizione nella quale si trova il cliente nel momento in cui è esaminato dal
processo di fatturazione e ne riassume la storia passata. Lo stato è costituito da un insieme
di attributi che devono essere gestiti con la massima generalità, così da non porre vincoli
allo sviluppo di future implementazioni. L’introduzione di questo livello di astrazione
comporta la necessità di mantenere una struttura dati che deve, in ogni momento, essere
congruente con l’articolazione tariffaria applicata e con la struttura delle misure rilevate,
tale che tutte le voci indispensabili all’esecuzione degli algoritmi di calcolo siano presenti e
contengano valori rilevanti.
Le misure ed il periodo di rilevazione.
Il software gestisce entità generiche da fatturare che sono definite misure. Una misura potrà
essere ad esempio una superficie, un numero di persone, un consumo di acqua, gas o
energia elettrica, un numero di mesi o di giorni; il sistema dovrà essere in grado di definire
di volta in volta gli attributi dell’entità misura così da darne un significato concreto. Le
misure sono strettamente legate al periodo di rilevazione nel corso del quale sono state
rilevate o afferiscono.
Si possono definire quattro diversi tipi di misura:
a) misura di consumi, quindi in generale di grandezze fisiche che variano con continuità
nel tempo. E’ definita una relazione “uno a uno” tra misura e periodo di rilevazione.
b) misura di intervalli puntuali di tempo, tipico della telefonia, caratterizzata da un
valore espresso in ore, minuti e secondi. Ad ogni periodo può essere associato un
numero variabile di misure, senza obbligo di continuità temporale.
9
c) misura di grandezze discrete, ad esempio superficie, portata, numero di persone o
altro. In questo caso la misura può variare in modo discreto nel corso del periodo di
rilevazione.
d) rilevazione di un intervallo temporale. In questo caso è l’intervallo stesso di
rilevazione che ha significato, non esiste una misura associata. Può essere considerato
un caso degenere di misura.
Per quanto riguarda la fornitura di gas metano, la misura del volume consumato deve essere
corretta in conformità ad un coefficiente di natura geografica stabilito dall’autorità
competente.
La figura che segue, rappresenta le relazioni temporali tra il periodo di rilevazione e i
diversi tipi di misure gestite dal sistema.
Inizio rilevazione Fine rilevazione
Periodo di rilevazione delle misure
Misura di grandezza fisica che varia con continuità
Misura di
entità che varia in modo discreto
Misure puntuali di eventi
che si verificano
nell’intervallo di rilevazione
La tariffa, il prezzo e la variazione tariffaria.
L’applicativo deve essere in grado di gestire l’evoluzione nel tempo dell’entità fisica in
esame, determinata essenzialmente dall’evolversi dell’articolazione tariffaria. In generale
tariffe e imposte sono caratterizzate da una data di inizio validità ed una di fine validità, che
definiscono il periodo di applicazione del prezzo o decorrenza tariffaria. Tutti i consumi ed
i servizi devono quindi essere rapportati ai periodi determinati delle variazioni tariffarie.
Segue la tabella che definisce le norme di suddivisione delle misure in funzione del tipo di
misura.
Entità fisiche Intervalli Grandezze Intervallo
che variano puntuali di discrete temporale di
con continuità tempo rilevazione
Tipo di La misura è Non definibile. La misura è Intervallo
suddivisione suddivisa in L’appartenenza suddivisa in suddiviso in
della misura modo alla decorrenza proporzione al base ai giorni
10
proporzionale al tariffaria è periodo in cui di rilevazione.
numero di definita sulla si mantiene
giorni di base della data di costante.
appartenenza effettuazione
alla decorrenza dell’evento.
tariffaria.
La seguente figura schematizza la suddivisione di misure che variano con continuità nel
tempo in funzione di una variazione del prezzo avvenuta nel corso del periodo di
rilevazione.
Data inizio Data variazione Data fine
rilevazione prezzi rilevazione
Periodo validità prezzo A Periodo validità prezzo B
Periodo di rilevazione misure effettivo
Sub – periodo rilevazione B
Sub - periodo rilev. A
L’algoritmo di calcolo.
L’algoritmo di calcolo in generale può essere considerato una proprietà della tariffa. Il
sistema è stato sviluppato mantenendo invece separati i due concetti. Per tariffa s’intende
l’entità che definisce il prezzo da applicare alla misura da fatturare e che è associata al
cliente. Per algoritmo di calcolo s’intende il metodo che è utilizzato per applicare il prezzo
alla misura. Gli algoritmi sono legati al tipo di servizio, al tipo di misura e alle regole di
fatturazione che sono stabilite.
Gli algoritmi che più comunemente sono utilizzati nelle realtà esaminate sono:
a) moltiplicazione della misura rilevata per il prezzo unitario (espresso in €/unità di
misura), ad esempio nel calcolo dei corrispettivi per fognatura e depurazione del
servizio idrico integrato. Il calcolo deve essere anche rapportato al numero di giorni ai
quali è riferita la misura;
b) moltiplicazione del numero di giorni (o mesi) del periodo di rilevazione per il prezzo
unitario (espresso in €/giorni), ad esempio nel calcolo della quota fissa nelle fatture
del servizio idrico.
c) moltiplicazione del prezzo unitario per il periodo di rilevazione (espresso in giorni o
mesi) e per un attributo che rappresenta la misura del servizio (prezzo espresso in
11
€/gg*unità di misura); ad esempio la quota potenza del servizio elettrico (prezzo *
giorni * potenza impegnata);
d) suddivisione del consumo in scaglioni a riempimento, e quindi applicazione di prezzi
diversi per fascia; ad esempio calcolo della quota consumo del servizio gas;
e) suddivisione del consumo in scaglioni proporzionali, e quindi applicazione di prezzi
diversi per fascia; ad esempio calcolo della quota consumo nei servizi acqua potabile
ed elettricità.
Segue la tabella che definisce l’applicabilità degli algoritmi ai tipi di misura.
Entità fisiche Intervalli Grandezze Intervallo
che variano puntuali di discrete temporale di
con continuità tempo rilevazione
Misura * Si No No No
prezzo unitario
Prezzo * No No No Si
periodo di
rilevazione
Prezzo * No No No Si
Periodo *
attributo
Fascia di Si No No No
consumo
Futuri sviluppi No Si Si No
Sconti sul prezzo e sui consumi.
L’applicativo deve supportare le strategie di marketing che generalmente sono perseguite
dall’azienda nell’ambito dei mercati liberalizzati o in fase di liberalizzazione, strategie che
si concretano di norma nell’applicazione di particolari condizioni di favore, cioè sconti sul
prezzo applicato o sui consumi rilevati.
Le condizioni di favore sono applicate a livello di singola tariffa, hanno validità temporale,
caratterizzata da un determinato periodo compreso tra due date, oppure possono essere
condizioni di particolare favore applicate in occasione di un determinato evento, e quindi in
una singola fatturazione. Sono inoltre caratterizzate dall’esistenza o meno di un limite
massimo di applicazione e dalla possibilità di essere concepite come una percentuale
dell’importo calcolato o del consumo fatturato. Ultimo requisito riguardante l’entità sconto
è che in fattura, per motivi di trasparenza, deve essere registrato sia l’importo totale sia
quello scontato.
Addebiti fissi.
12
Sono degli addebiti e/o accrediti (oneri, bolli, depositi cauzionali, ecc) già calcolati da altri
sistemi che vengono applicati in fattura.
La fattura.
E’ il prodotto finale dell’applicazione, generata dalle misure, dal piano tariffario e dalle
informazioni presenti nello stato contrattuale. E’ caratterizzata da una testata, costituita dai
dati del contratto e del cliente, dagli attributi dell’anagrafica e del sistema di misura, da un
codice univoco d’identificazione, dalle date di emissione, scadenza e pagamento, dal totale
imponibile, totale delle imposte e totale fattura. Deve inoltre contenere una sezione con le
informazioni concernenti le misure fatturate, ai prezzi applicati, all’eventuale presenza di
condizioni di favore e all’imposta calcolata con le aliquote applicate. Le informazioni
presenti nello stato contrattuale nel momento in cui la fatturazione esamina il cliente
devono essere memorizzate come attributi della fattura stessa, così come deve essere
registrato lo stato anagrafico, che può essere considerato come una fotografia degli attributi
del soggetto cui è attribuita la fattura.
2.2.Descrizione del processo di fatturazione
L’applicativo riceve in input il codice del cliente da fatturare e la data di scadenza del
documento, quindi per produrre la fattura esegue la seguente sequenza di operazioni:
Operazione n.1: esame dell’anagrafica, del soggetto e del cliente.
Sono estratti l’anagrafica del soggetto ed il cliente. Si verifica se è un soggetto fatturabile in
base allo stato contrattuale e agli indicatori che abilitano il processo a proseguire.
Operazione n.2: estrazione dei dati che si riferiscono a recapito, residenza, e
domiciliazione bancaria.
Vengono estratte tutte le informazioni riguardanti la residenza, il recapito e la
domiciliazione bancaria e memorizzate nello stato anagrafico fatturato. L’assenza della
residenza deve produrre una rilevazione di errore ed impedire la produzione del documento.
Recapito, Recapito presso Terzi e Domiciliazione Bancaria possono essere assenti. Viene
quindi estratto l’indirizzo di fornitura, che obbligatoriamente deve essere presente.
Operazione n.3: determinazione del codice fattura e registrazione della testata del
documento.
13
Viene determinato il codice progressivo della fattura e registrata la testata del documento
con le informazioni in possesso. Da questo momento fino al termine del processo di
fatturazione non dovrà più essere possibile per nessun operatore collegato al sistema,
eseguire operazioni di fatturazione o modificare le entità coinvolte nel processo. Il numero
fattura deve essere un progressivo.
Operazione n.4: estrazione di eventuali addebiti da applicare in fattura.
L’applicativo ricerca eventuali addebiti o accrediti da fatturare. In caso positivo, deve
procedere con l’applicazione in fattura e la memorizzazione delle informazioni per il
calcolo dell’imposta.
Operazione n.5: estrazione dei periodi di rilevazione e delle misure.
Vengono selezionati in sequenza tutti i periodi di rilevazione associati al contratto e non
fatturati; si verifica se il periodo è fatturabile analizzando l’opportuno indicatore.
Operazione n. 6: estrazione delle tariffe ed associazione ai periodi di rilevazione.
Per ogni periodo di rilevazione, si determina la lista delle tariffe da applicare in base al Tipo
Misura. Un singolo periodo di rilevazione potrebbe essere preso in esame da più tariffe
(tipico caso è l’elaborazione della fattura del gas metano: la fatturazione prende in esame il
consumo per calcolare prima la tariffa consumo e poi l’imposta erariale con due algoritmi
diversi.).
Deve essere anche eseguito il controllo che tutte le tariffe associate al contratto siano
elaborate e che tutte le misure rilevate siano pertinenti, in caso contrario l’applicativo deve
terminare segnalando l’anomalia.
Operazione n.7: estrazione e verifica dello stato contrattuale legato alla tariffa.
Per ogni tariffa applicata si estrae lo stato contrattuale associato, costituito da tutta una serie
di attributi che appartengono alle due relazioni “Valore contrattuale” e “Data contrattuale”.
Si verifica che siano presenti tutte le voci richieste per la corretta fatturazione della misura.
Ogni algoritmo di calcolo ha associato un ben preciso stato contrattuale che identifica lo
stato del cliente a partire dal quale effettuare la fatturazione dei consumi. Lo stato
contrattuale è legato alla tariffa che a sua volta è indissolubilmente legata all’algoritmo di
calcolo; una tariffa non può mai cambiare algoritmo di calcolo nel corso della sua vita.
Devono essere compiute anche tutte le verifiche legate alla congruità dello stato
contrattuale con la tariffa e le misure da fatturare. In particolare va controllata la continuità
del periodo di rilevazione con l’ultimo periodo fatturato.
Operazione n.8: determinazione di eventuali Sconti da applicare.
14
Per ogni tariffa si determina se devono essere applicate delle condizioni di favore (sconti
sul consumo o sul fatturato).
Operazione n.9: determinazione del periodo tariffario applicabile.
Per ogni coppia “tariffa – periodo di rilevazione misure” viene ricercato il periodo tariffario
applicabile. Se il periodo di rilevazione misure non è compreso in un unico periodo
tariffario, allora il primo deve essere suddiviso in tanti sottoperiodi in conformità
all’articolazione della variazione dei prezzi. Le misure associate al periodo tariffario
originale devono quindi essere spostate nei nuovi periodi tariffari seguendo le opportune
regole definite in base al tipo misura.
Operazione n.10: determinazione del prezzo da applicare e scrittura del dettaglio di
fatturazione.
A fronte di ogni periodo di rilevazione ridefinito in base alle variazioni tariffarie, vengono
estratte le misure ed i prezzi da applicare. Vengono quindi scritti i dettagli di fatturazione
che tengono conto di tutte le entità che contribuiscono a determinare l’importo fatturato.
Operazione n.11: scrittura del nuovo stato contrattuale.
Al termine dell’esame di ogni periodo di rilevazione dei consumi l’applicativo deve
registrare il nuovo stato contrattuale risultante dall’elaborazione.
Operazione n.12: scrittura della fattura e del dettaglio IVA.
Al termine dell’esame di ogni tariffa l’applicativo aggiorna la testata della fattura e il
dettaglio IVA.
Progettazione della base di dati
3.
E’ stata adottata la tipica metodologia di progettazione articolata in due fasi: progettazione
concettuale e progettazione logica.
La prima fase ha lo scopo di rappresentare l’oggetto di studio in termini formali e completi.
Si fa ampio utilizzo del modello Entità – Relazioni, il più diffuso modello concettuale
utilizzato nell’analisi di basi di dati relazionali. Il risultato finale è il modello concettuale
dei dati.
15
La seconda fase consiste nella traduzione dello schema concettuale nell’apposito modello
logico prescelto per la realizzazione del sistema. Il risultato complessivo della fase
progettuale è lo schema logico, la struttura vera e propria del data base, corredato da tutta la
documentazione necessaria alla fase di sviluppo.
Progettazione concettuale
3.1.
Nello sviluppo del modello concettuale è stata adottata una strategia di tipo misto. Vengono
inizialmente individuati i concetti principali della realtà in esame che sono quindi inseriti in
uno schema semplificato; si procede poi a macchia d’olio con lo sviluppo del progetto
attraverso un processo di raffinamenti successivi.
In questa fase progettuale è stato utilizzato il modello Entità – Relazioni che permette di
dare una veste grafica e quindi d’immediata interpretazione dell’oggetto di studio. Lo
schema finale è stato quindi ristrutturato per consentirne la traduzione verso il modello
relazionale e documentato opportunamente, facendo ricorso a un dizionario dati strutturato
e organizzato in modo da descrivere a fondo tutti gli oggetti ed i loro attributi.
Segue il diagramma ER semplificato in cui sono presenti gli oggetti fondamentali che
partecipano al processo di fatturazione, oggetti che sono già stati descritti nella fase di
analisi.
Addebito
(0,N)
(1,1)
Partite Sconto
(0,N)
monetarie
Trattamento
economico
(0,N) (0,N) (0,1)
(1,1)
Soggetto Cliente Tariffa
Contratto
(0,N) (0,N)
(0,1) (1,N)
Misura
Sistema Piano tariffario
(0,N)
di misura
Servizio (1,1)
erogato
Dettaglio di
fatturazione
(1,1)
(1,N)
Fattura
Valorizzazione
16
Il passo successivo consiste nell’introduzione dello stato del cliente e dell’algoritmo di
fatturazione. Queste due entità sono strettamente collegate a livello operativo, poiché ogni
algoritmo per funzionare correttamente richiede, per ogni coppia “cliente – tariffa”, la
presenza di un insieme di informazioni che devono essere preventivamente memorizzate
nello stato del cliente. L’appendice D definisce con precisione lo stato richiesto da ogni
algoritmo di calcolo per ogni tipo di misura rilevata.
Lo stato riassume la storia del cliente e contribuisce a definirne il trattamento economico;
può essere modificato solamente dal processo di fatturazione ed è strettamente legato al
piano tariffario del cliente e alla struttura dell’impianto di misura.
Stato
Contrattuale
Fattore di Data
Limite Volume
correzione contrattuale
Valore
contrattuale
Il concetto di algoritmo di calcolo serve a disaggregare la tariffa dal metodo di calcolo. Si
definiscono a priori gli algoritmi che possono essere considerati dei veri e propri driver di
fatturazione; questi potranno poi essere associati a una o più tariffe e imposte, caratterizzate
da un periodo di validità e da un prezzo.
17
Addebito Applicazione
(1,1) (0,N) (0,N)
Partite
Sconto Algoritmo
monetarie
(1,1)
Trattamento (0,N)
economico
(0,N) (1,1)
Soggetto Cliente Tariffa
(0,N) (0,1)
Contratto
Stato
Cliente
(0,N)
(0,1)
Misura (1,1)
Sistema
di misura
(1,N) (0,N)
(0,N)
Piano tariffario
Servizio
(1,1)
erogato
Dettaglio di
fatturazione
(1,1)
Valorizzazione
(1,N)
Fattura
Un successivo raffinamento consiste nell’introduzione degli elementi che caratterizzano
l’evoluzione nel tempo del sistema: il periodo di rilevazione delle misure ed il periodo di
validità tariffaria.
L’elemento fondante dell’impianto tariffario è la distinzione tra tariffa, periodo di validità e
prezzo applicato. Una tariffa è sempre caratterizzata da un periodo di validità, poiché nel
tempo può subire variazioni o addirittura essere annullata. Nel nostro modello questo
aspetto è gestito definendo due oggetti distinti: la tariffa, entità che identifica e definisce la
regola di calcolo ed è associata al cliente, ed il prezzo caratterizzato dagli attributi utilizzati
per la valorizzazione economica della misura da fatturare. La relazione tra le due entità è il
“periodo di validità tariffaria” identificato da una coppia di date che ne definiscono l’inizio
e la fine. La relazione è “uno a n”, poiché gli algoritmi che suddividono il consumo in fasce
applicano prezzi diversi a seconda della fascia di appartenenza.
Il periodo di rilevazione delle misure definisce l’arco temporale nel corso del quale sono
state raccolte le misure. La relazione con l’entità misura è “uno a n”, poiché a ogni periodo
può essere ricondotta più di una misura.
18
Applicazione
Addebito
(0,N)
(1,1) (0,N)
Partite Sconto Algoritmo
(0,N)
monetarie
(1,1)
Trattamento
economico
(0,N) (1,1)
Soggetto Cliente Tariffa
(0,N) (0,1)
Contratto
Periodo di
Servizio erogato
validità
Stato
(0,N)
(1,N) tariffaria
Cliente
(0,1) (0,N)
Misura (1,1)
Sistema (1,1)
di misura
(1,N) (0,N) (1,1)
Fattura Piano tariffario
(1,N)
Prezzo
(1,1) Dettaglio di
fatturazione
Valorizzazione
Periodo di
(1,1)
rilevazione (1,N)
misure
(1,1) (1,1) Valorizzazione
L’entità misura è una generalizzazione dei diversi tipi di misura che sono stati definiti in
fase di analisi: la misura di grandezze fisiche che variano con continuità oggetto di studio
di questo elaborato, quella d’intervalli temporali che potrebbe essere utilizzata per
sviluppare algoritmi di fatturazione di consumi telefonici ed infine la misura di entità che
variano in modo discreto nel tempo, quali ad esempio una superficie e un numero di
persone.
Misura
Misura di
grandezze Misura di Misura di entità
fisiche che intervalli che variano in
variano con temporali modo discreto
continuità
Il passo successivo è quello di raffinare il concetto di soggetto, con l’introduzione di tutte le
entità e le relazioni collegate, già identificate nella fase di raccolta dei requisiti. Il soggetto
può essere persona fisica o persona giuridica; può inoltre essere presente in archivio in
qualità di cliente sottoscrittore di un contratto, di istituto di credito o di destinatario delle
19
fatture emesse a nome di un altro soggetto. Le relazioni di interesse sono il recapito, la
residenza, la domiciliazione bancaria ed il recapito dei documenti presso altro soggetto.
Recapito e residenza coinvolgono l’entità indirizzo che assieme allo stradario ed al comune,
contribuisce a definire in maniera completa l’ambito geografico del soggetto.
Persona Persona
fisica giuridica
Recapito
(0,N) (0,N)
Attributi banca
Soggetto
Indirizzo Residenza
(1,N)
(0,N)
Istituto
Titolare di Destinatario
(1,1)
di Credito
contratto comunicazioni
(0,N)
Stradario
(0,N)
(1,N)
Recapito
presso terzi
(0,N) (0,N)
Comune
Domicilio
bancario
Un’altra relazione che coinvolge l’entità indirizzo è l’ubicazione della fornitura, che è
legata al cliente, in quanto definisce il luogo fisico nel quale è fornito il servizio.
Ubicazione
Stradario
fornitura
(1,1) (0,N) (1,N)
(1,1) Comune
Cliente Indirizzo
La fattura è il prodotto dell’applicazione, generata dalle misure, dal piano tariffario e dalle
informazioni presenti nello stato contrattuale. E’ caratterizzata dai dettagli di fatturazione,
calcolati e registrati dall’applicazione nel corso del processo di esame delle misure
attribuite al cliente. E’ anche caratterizzata dallo stato contrattuale presente nel momento
della fatturazione, che deve essere registrato in qualità di attributo della fattura stessa così
come deve essere registrato lo stato anagrafico che può essere considerato come una
fotografia degli attributi del soggetto.
L’entità fattura è altresì caratterizzata dai seguenti attributi: codice univoco
d’identificazione, data di emissione, data di scadenza, data di pagamento, totale imponibile,
totale imposte, totale fattura e totale pagato.
20
Residenza
(0,N)
(1,1)
Indirizzo
Stato
anagrafico
Stato Recapito
(1,1)
anagrafico
(1,1) (0,N)
fatturato
Valorizzazione
Recapito
(1,1)
presso terzi
(1,1) (1,N)
Dettaglio di (0,N)
(1,1)
fatturazione
Fattura
Domicilio
Valorizzazione
bancario
Imposta (1,1) (1,1) (0,N)
fatturata (1,1) (1,1)
Valorizzazione Servizio
(0,N) erogato
Partite
monetarie (1,1) (0,N)
(0,N)
(1,1)
Soggetto
Cliente
Stato
contrattuale Contratto
fatturato
Lo schema finale ottenuto è quindi il risultato di un’attività iterativa, di un processo
graduale, a partire da uno schema base che è stato progressivamente raffinato, arricchito,
trasformato e corretto. Alla base di tutto il processo è sempre stato presente l’obiettivo
primario di dare la massima flessibilità al sistema.
Ristrutturazione e documentazione degli schemi ER
3.2.
I diagrammi Entità – Relazioni devono essere opportunamente documentati. Segue la
documentazione riguardante gli oggetti in esame, in particolare sono approfonditi i concetti,
definiti gli attributi e gli identificatori e specificate le regole ed i vincoli non esprimibili
graficamente.
La documentazione seguente è anche il frutto di una prima ristrutturazione dei diagrammi
originari, ristrutturazione e trasformazione che consegna un prodotto già pronto per la
traduzione nello specifico schema logico che sarà adottato.
In particolare sono state eseguite le seguenti operazioni.
Rimozione delle generalizzazioni. Siccome il modello relazionale non consente di trattare
generalizzazioni, queste sono state rimosse mediante tecniche di accorpamento che saranno
presentate di volta in volta.
21
Scelta degli identificatori. Per ogni entità e relazione viene scelto l’identificatore principale
che fungerà da chiave primaria nell’implementazione del modello logico.
Accorpamento di entità e relazioni. Vengono accorpate entità e relazioni in modo da
ottimizzare il futuro modello logico e anticipare per quanto possibile l’attività di
normalizzazione della base di dati.
22
Soggetto
3.2.1.Entità
L’entità Soggetto descrive i dati anagrafici di tutti i soggetti presenti a sistema, siano essi persona fisica o persona giuridica. I soggetti possono
essere memorizzati a diverso titolo. Si tratta di una generalizzazione totale e sovrapposta delle tre entità figlie: titolare del contratto, destinatario
delle comunicazioni ed istituto di credito. La generalizzazione è totale, nel senso che ogni occorrenza dell’entità Soggetto è occorrenza di almeno
una delle entità figlie. E’ sovrapposta nel senso che un’occorrenza dell’entità Soggetto può essere occorrenza di più di un’entità figlia. L’entità figlia
di maggior importanza è il titolare del contratto che descrive il soggetto che ha stipulato uno o più contratti di servizio con la società. L’entità
Destinatario rappresenta il soggetto al quale sono inviati i documenti intestati ad un ulteriore soggetto, ad esempio le fatture.
Questa generalizzazione viene eliminata per accorpamento nella generalizzazione padre; non è necessario nessun attributo che individui la natura
del soggetto, considerato che questo può svolgere più di una funzione contemporaneamente. Saranno le relazioni alle quali il soggetto partecipa a
definire di quale specializzazione si tratta.
Il soggetto è anche generalizzazione totale ed esclusiva delle entità Persona fisica e Persona giuridica, generalizzazione che viene eliminata per
accorpamento nella generalizzazione padre, che può accollarsi gli attributi propri delle figlie. In particolare, nell’entità padre, i due attributi
“Ragione Sociale” e “Cognome Nome” possono collassare nell’attributo Denominazione. Per quanto riguarda i codici identificativi, esistono casi di
soggetti caratterizzati dalla presenza contemporanea della Partita IVA e del codice fiscale; questi due attributi diventano quindi entrambi attributi
dell’entità padre. Inoltre per mantenere la distinzione tra persona fisica e persona giuridica viene aggiunto l’attributo Tipo soggetto.
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Codice Soggetto Identificatore Intero No
Tipo Persona Tipologia di persona Testo P: persona fisica; G: persona giuridica No
Codice Classe Anagrafica Codice di classificazione delle anagrafiche. Intero Il codice deve essere presente nella tabella No
Utilizzato per realizzare funzionalità di “Descrizione Codici” con Tipo Codice = 4
raggruppamento e sintesi delle informazioni. “CodiceClasseAnagrafica”.
Denominazione Ragione sociale o Cognome e Nome in Testo No
23
funzione del tipo soggetto
Codice Fiscale Codice fiscale Testo Si
Partita IVA Partita IVA Testo Si
Flag Fatturazione Flag che definisce se l’anagrafica è Booleano N: no; S: si No
fatturabile
Data di nascita Solo per persona fisica Data Si
Sesso Solo per persona fisica Testo M: maschile, F: femminile Si
Segue la lista dei valori che sono stati configurati a sistema per l’attributo Codice Classe Anagrafica.
Codice Classe anagrafica Descrizione
1 Ente pubblico
2 Privato
3 Sanità
4 Forze armate
Indirizzo
3.2.2.Entità
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Codice Indirizzo Identificatore Intero No
Codice Stradario Codice identificativo della via. Intero Identificatore dell’entità Stradario No
Civico Numero civico. Intero No
Interno Interno. Può essere numerico o testo. Testo Si
24
3.2.3.Entità Comune
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Codice Comune Identificatore Intero No
CAP CAP del comune Intero No
Descrizione Comune Descrizione Testo No
Provincia Identifica la provincia. In genere due Testo No
caratteri.
Stato Stato di appartenenza del comune Testo No
3.2.4.Relazione Stradario
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Codice Via Identificatore Intero No
Codice Comune Codice del comune di appartenenza della via Intero Identificatore dell’entità Comune No
Descrizione Descrizione della Via Testo No
3.2.5.Relazione Residenza
La relazione Residenza lega il soggetto all’indirizzo di residenza. E’ strutturata in modo da mantenere lo storico delle residenze del soggetto,
caratterizzate da una data di inizio e una data di fine. Il soggetto deve presentare sempre una relazione di residenza, l’occorrenza di quella attiva è
caratterizzata dalla flag Residenza Attiva = S e dalla data di fine validità impostata a null. L’identificatore della relazione è costituito dai due
attributi Codice Soggetto e Codice Indirizzo Residenza.
25
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Codice Soggetto Identificatore Intero Identificatore dell’entità Soggetto No
Codice Indirizzo Residenza Identificatore Intero Identificatore dell’entità Indirizzo No
Residenza attiva Definisce se si tratta dell’ultima residenza Booleano S: Residenza attiva; N: non più residente No
dell’anagrafica o della residenza attiva.
Data inizio Data di inizio validità dell’occorrenza Data No
Data fine Data di fine validità dell’occorrenza (di Data Si
cambio residenza)
3.2.6.Relazione Recapito
La relazione Recapito stabilisce un legame tra il soggetto e l’indirizzo di recapito. E’ strutturata in modo da mantenere lo storico dei recapiti
caratterizzato da una data di inizio e una data di fine. La relazione è opzionale, in caso di assenza del recapito l’applicazione invierà il documento
all’indirizzo del soggetto. L’occorrenza del recapito attivo è caratterizzata dalla flag Recapito Attivo = S e dalla data di fine validità impostata a
null. L’identificatore della relazione è costituito dai due attributi Codice Soggetto e Codice Indirizzo Recapito.
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Codice soggetto Identificatore Intero Identificatore dell’entità Soggetto No
Codice Indirizzo recapito Identificatore Intero Identificatore dell’entità Indirizzo No
Recapito attivo Definisce se si tratta dell’ultimo recapito Booleano S: Recapito attivo; N: recapito non attivo No
dell’anagrafica o del recapito attivo.
Data inizio Data di inizio validità della relazione Data No
Data fine Data di cambio recapito o fine validità della Data Si
relazione
26
Recapito Presso Terzi
3.2.7.Relazione
La relazione Recapito presso terzi identifica un ulteriore soggetto al quale trasmettere i documenti di fatturazione. Non dovrebbero presentarsi casi
di soggetti con presenza contemporanea di recapito e recapito presso terzi. L’applicativo di fatturazione, nel caso riscontri tale condizione, invierà il
documento al recapito ignorando l’esistenza del recapito presso terzi. L’occorrenza del recapito attivo è caratterizzata dalla flag Recapito Attivo = S
e dalla data fine validità impostata a null. L’identificatore della relazione è costituito dai due attributi Codice Soggetto e Codice Soggetto Terzi.
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Codice soggetto Identificatore Intero Identificatore dell’entità Soggetto No
Codice soggetto terzi Identificatore Intero Identificatore del soggetto cui recapitare i No
documenti (sempre entità soggetto)
Recapito attivo Definisce se si tratta di relazione attiva. Booleano S: Relazione attiva; N: non più valida No
Data inizio Data inizio validità relazione Data No
Data fine Data fine validità relazione Data Si
3.2.8.Relazione Domiciliazione Bancaria
La relazione Domiciliazione Bancaria implementa la possibilità di attivare il pagamento automatico del documento presso un istituto di credito.
L’occorrenza della relazione attiva è caratterizzata dalla flag Domiciliazione Attiva = S e dalla data fine validità impostata a null. L’identificatore
della relazione è costituito dai due attributi Codice Soggetto e Codice Soggetto Banca.
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
27
Codice soggetto Identificatore Intero Codice identificatore del soggetto No
Codice soggetto banca Identificatore Intero Codice identificatore del soggetto che è No
istituto di credito
Domiciliazione attiva Definisce se si tratta di relazione attiva. Booleano S: Relazione attiva; N: non più valida No
Data inizio Data di inizio validità Data No
Data fine Data di fine validità Data Si
Codice IBAN Definisce gli estremi del conto corrente del Testo No
cliente nel circuito interbancario
3.2.9.Entità Banca
Questa entità prende forma dalla ristrutturazione dell’attributo composto che definisce le caratteristiche del soggetto banca. L’occorrenza della
relazione attiva è caratterizzata dalla flag Relazione Attiva = S e dalla data fine validità impostata a null.
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Codice Banca Identificatore Intero No
Codice Soggetto Codice del soggetto censito a sistema Intero Identificatore dell’entità Soggetto No
Relazione attiva Definisce se si tratta di relazione attiva. Booleano S: Relazione attiva; N: non più valida No
Codice ABI Coordinate bancarie: codice ABI Intero No
Codice CAB Coordinate bancarie: codice CAB Intero No
Data inizio Data inizio validità Data No
Data fine Data fine validità Data Si
Cliente
3.2.10.Entità
28
L’entità cliente rappresenta l’oggetto attorno al quale si sviluppa l’intero sistema. Definisce lo schema dei dati che si riferiscono al cliente ed alla
relazione “contratto”, relazione che quindi è stata assorbita da questa entità.
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Codice Cliente Identificatore Intero No
Codice Soggetto Codice del soggetto che è cliente Intero Identificatore dell’entità Soggetto No
Codice Tipo Servizio Definisce il servizio che è fornito al cliente. Intero Il codice deve essere presente nella tabella No
“Descrizione Codici” con Tipo Codice = 1
“CodiceTipoServizio”.
Codice Tipo Utilizzo Definisce una regola di raggruppamento per Intero Il codice deve essere presente nella tabella No
le utenze. Può essere l’uso merceologico o “Descrizione Codici” con Tipo Codice = 2
altre codifiche a piacimento. E’ utilizzabile “CodiceTipoUtilizzo”.
per analisi e funzioni di reportistica.
Identificativo Fornitura Codice identificativo della fornitura. Per il Testo No
gas e l’elettricità è il Point of Delivery,
stabilito dall’autorità per l’energia elettrica
ed il Gas; per l’acqua la codifica della presa.
Codice Gruppo per Definisce un codice per la selezione delle Intero Il codice deve essere presente nella tabella No
fatturazione utenze da fatturare nei processi di “Descrizione Codici” con Tipo Codice = 3
fatturazione di gruppo. “CodiceGruppoFatturazione”.
Codice Indirizzo fornitura Identificativo del luogo di fornitura del Intero Identificatore dell’entità Indirizzo No
servizio, indirizzo che tipicamente coincide
con l’indirizzo di residenza del cliente.
Stato Cliente Identifica lo stato del contratto Intero Il codice deve essere presente nella tabella No
29
“Descrizione Codici” con Tipo Codice =
16 “CodiceStatoCliente”.
Anno contratto Attributo della relazione Contratto No
Numero contratto Attributo della relazione Contratto No
Data contratto Attributo della relazione Contratto No
Flag Fatturazione Definisce se il cliente è fatturabile Booleano S: si; N: no No
Note tecniche Testo Si
Note amministrative Testo Si
Segue la lista dei valori che sono stati configurati a sistema per gli attributi Codice Tipo Servizio, Codice Stato Cliente, Codice Tipo Utilizzo e
Codice Gruppo Fatturazione.
Codice Tipo Servizio Descrizione
1 Servizio di vendita gas metano
2 Servizio di vendita energia elettrica
3 Servizio di vendita acqua potabile
Codice Stato Cliente Descrizione
1 Cliente Attivo Fatturabile
2 Contratto Cessato
3 Cliente in fase di attivazione o in attesa di
documentazione per l’attivazione
4 Cliente moroso
Codice Tipo Utilizzo Descrizione
30
1 Codice generico
Codice Gruppo Fatt. Descrizione
1 Codice generico
stato contrattuale
3.2.11.Lo
3.2.11.1.Entità Valore Contrattuale
Questa entità è una generalizzazione delle entità Fattore di correzione, Limite e Volume. E’ l’algoritmo di calcolo che attribuisce, in base al codice,
il significato operativo delle singole istanze. Ogni algoritmo è caratterizzato da uno stato diverso, e quindi dalla presenza o assenza di determinate
voci contrattuali. In appendice D è specificata la configurazione delle tariffe e degli algoritmi da applicare ad ogni singolo servizio.
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Codice Cliente Identificatore Intero Riferimento all’entità cliente No
Codice Tariffa Identificatore Intero Riferimento alla tariffa applicata No
Codice Valore Cliente Identificatore. Codice che identifica il Intero Il codice deve essere presente nella tabella No
significato dell’occorrenza dell’entità. “Descrizione Codici” con Tipo Codice = 5
“CodiceValoreContrattuale”
Valore E’ il valore associato all’entità. Reale No
3.2.11.2.Entità Data Contrattuale
31
L’entità Data Contrattuale costituisce, assieme all’entità Valore Contrattuale, lo stato del cliente. E’ strettamente legata all’algoritmo di calcolo e
quindi alla tariffa e contiene tutte le occorrenze delle date significative ai fini della fatturazione. In appendice D è specificata la configurazione delle
tariffe e degli algoritmi da applicare ad ogni singolo servizio.
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Codice Cliente Identificatore Intero Riferimento all’entità cliente. No
Codice Tariffa Identificatore Intero Riferimento alla tariffa applicata. No
Codice Data Cliente Identificatore. Codice che identifica il Intero Il codice deve essere presente nella tabella No
significato dell’occorrenza dell’entità. “Descrizione Codici” con Tipo Codice = 6
“CodiceDataContrattuale”
Data E’ la data associata all’entità. Data No
Addebito Fisso
3.2.12.Entità
Consente all’applicativo di inserire in fattura degli importi già calcolati da altri sistemi, quali ad esempio bolli, mora su ritardati pagamenti, cauzioni
ed altro.
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Codice Addebito Identificatore Intero No
Codice Cliente Codice del cliente al quale addebitare / Intero Riferimento all’entità Cliente No
accreditare la voce.
Descrizione Addebito Descrizione Testo No
Valore addebito Valore da addebitare / accreditare Reale No
Codice IVA da applicare Codice IVA Intero Riferimento all’entità Imposta No
Flag fatturato Specifica se l’addebito è già stato fatturato Booleano S: si N: no No
32
Flag anomalia Specifica se l’addebito non deve essere Booleano S: da fatturare N: non fatturare No
fatturato
Sistema di provenienza Definisce il sistema o modulo che ha No
generato l’addebito.
Codice Fattura Se null elemento non fatturato, altrimenti Intero Riferimento all’entità Fattura Si
identifica la fattura.
3.2.13.Entità Tariffa
E’ l’entità le cui occorrenze sono le tariffe e le imposte gestite a sistema. Ogni occorrenza è caratterizzata dall’algoritmo di calcolo, un modulo
software sviluppato ad hoc che sviluppa la logica applicativa della tariffa.
L’impianto tariffario è costituito dalle due entità Tariffa e Prezzo e dalla relazione Periodo di validità che definisce il periodo temporale di validità
dei prezzi. Questa struttura permette di gestire le variazioni tariffarie determinate dall’andamento dei prezzi nel tempo.
L’attributo Codice Tipo Misura definisce il tipo di misura che viene agganciato dal processo di fatturazione. Ciò permette di introdurre un livello di
disaccoppiamento tra tariffe e misure; ad una singola misura, identificata da un Codice Tipo Misura, possono essere applicate diverse tariffe.
Esempio concreto è il caso della fatturazione del gas naturale; al consumo si applicano due algoritmi diversi: la tariffa di consumo e l’imposta
erariale. Il Codice tipo misura è stato preventivamente ed opportunamente codificato.
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Codice Tariffa Codice univoco che rappresenta la tariffa (o Intero Identificatore dell’entità No
l’imposta)
Descrizione Tariffa Descrizione della tariffa (o imposta) Testo No
Codice Algoritmo Applicato Definisce il codice dell’algoritmo di Intero Riferimento all’entità Algoritmo. No
fatturazione che viene applicato.
33
Codice Voce Fattura Codice della voce creata in fattura. Intero Il codice deve essere presente nella tabella No
“Descrizione Codici” con Tipo Codice =
10 “CodiceVoceFattura”.
Codice Tipo Misura Definisce il tipo di misura che il sistema di Intero Il codice deve essere presente nella tabella No
fatturazione ricerca per applicare la tariffa. “Descrizione Codici” con Tipo Codice = 7
“CodiceTipoMisura”.
Flag Dettagli Variazione Definisce se l’algoritmo di calcolo deve Booleano S: crea dettagli No
creare i dettagli di fatturazione per ogni N: non crea dettagli
variazione del periodo di validità
Flag Dettagli Prezzo Definisce se l’algoritmo di calcolo deve Booleano S: crea dettagli No
creare i dettagli di fatturazione per ogni N: non crea dettagli
fascia di prezzo
Flag Sconti applicabili Definisce se possono essere applicati degli Booleano S: applicabili N: non applicabili No
sconti.
Segue la lista dei valori che sono stati configurati a sistema per l’attributo Codice Tipo Misura.
Codice Tipo Misura Descrizione
1 Misura di consumo acqua in Mc
2 Misura di consumo gas in Mc
3 Misura di consumo in kWh
4 Misura di tempo in mesi da calcolare come
differenza delle due date che definiscono
l’intervallo di misurazione
5 Misura di tempo in giorni da calcolare come
34
differenza delle due date che definiscono
l’intervallo di misurazione
6 Misura di superficie in mq
7 Numero intero, numero di persone.
8 Misura di potenza in kW
9 Misura di consumo in kVarh
10 Misura di tempo in ore, minuti e secondi
Periodo di Validità Tariffaria
3.2.14.Relazione
E’ la relazione che permette di gestire l’evoluzione nel tempo dei prezzi; ogni tariffa, infatti, pur mantenendo inalterata la logica di calcolo, subisce
nel tempo variazioni nei prezzi. Il periodo di validità è caratterizzato essenzialmente da una data di inizio validità e da una data di fine validità. Il
motore di fatturazione dovrà tener conto delle variazioni tariffarie rendendo compatibili i periodi di validità tariffaria ed i periodi di rilevazione delle
misure da fatturare, eventualmente suddividendo questi ultimi in modo da applicare alle misure il prezzo corretto. Ovviamente i periodi di validità
tariffaria devono avere proprietà di continuità; questa specificità è garantita dai moduli software che gestiscono l’impianto tariffario in quanto il
motore di fatturazione non può operare scelte in merito.
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Codice Tariffa Identificatore Intero Riferimento all’entità Tariffa. No
Codice Periodo Validità Identificatore. Identifica univocamente per Intero No
ogni tariffa, l’occorrenza della relazione.
Data Inizio Validità Data di inizio validità del periodo Data No
Data Fine Validità Data di fine validità del periodo Data Se null allora il periodo non ha limite Si
temporale superiore.
Codice voce fattura Codice della voce che viene generata dal Intero Il codice deve essere presente nella tabella No
35
sistema di fatturazione “Descrizione Codici” con Tipo Codice =
10 “CodiceVoceFattura”.
Prezzo
3.2.15.Entità
L’attributo Prezzo Applicato definisce l’importo unitario da applicare alla misura da fatturare. Gli attributi Limite Inferiore e Limite Superiore
introducono la possibilità di fatturare per fasce, cioè di suddividere la misura rilevata su più fasce caratterizzate dall’applicazione di prezzi diversi.
La relazione è “uno a n”, quindi possono esserci per ogni periodo di validità n diverse fasce di prezzo identificate da un Codice Fascia progressivo
con valori da uno a n, e da un intervallo di valori continuo limitato dagli attributi Limite Inferiore e Limite Superiore. Le due tecniche di
suddivisione dei consumi sono quella “a riempimento” che attribuisce tutto il consumo alla fascia n prima di iniziare a riempire la fascia n+1 e
quella “proporzionale” che attribuisce il consumo nelle varie fasce proporzionalmente ai giorni fatturati (gli algoritmi sono descritti opportunamente
nella fase di stesura del codice). Nel caso in cui non si preveda differenziazione di prezzo, allora sarà presente un’unica occorrenza di questa entità.
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Codice Tariffa Identificatore. Intero Riferimento all’entità Tariffa. No
Codice Variazione Tariffaria Identificatore. Intero Riferimento al periodo di validità tariffario No
Codice Fascia Tariffaria Identificatore. Numero progressivo che Intero No
determina la fascia.
Limite Inferiore Definisce il limite inferiore a partire dal Reale Si
quale viene applicato il prezzo specificato.
Limite Superiore Definisce il limite superiore di consumo fino Reale Si
al quale applicare il prezzo.
Prezzo Applicato Definisce il prezzo da applicare alla misura Reale No
36
rilevata.
Codice Voce Fattura Codice della voce che viene generata dal Intero Il codice deve essere presente nella tabella No
sistema di fatturazione. “Descrizione Codici” con Tipo Codice =
10 “CodiceVoceFattura”.
Algoritmo
3.2.16.Entità
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Codice Algoritmo Identificatore dell’entità. Intero I codici devono essere opportunamente No
predefiniti, rappresentano dei driver di
fatturazione.
Versione Algoritmo Versione. Serve a dare profondità storica Intero No
all’entità. Da utilizzare solo a livello
descrittivo, in quanto versioni diverse dello
stesso algoritmo devono essere identificate
da codici diversi.
Descrizione Algoritmo Breve descrizione delle funzionalità Testo No
dell’algoritmo.
Segue la lista degli algoritmi progettati e la relativa codifica. La creazione di nuovi algoritmi di calcolo comporta la scrittura del codice, la codifica
nella tabella Algoritmo, l’associazione alle tariffe e l’implementazione dello stato contrattuale al fine di garantire l’adeguata infrastruttura al motore
di fatturazione.
37
Codice Algoritmo Descrizione
1 Moltiplicazione della misura rilevata per il prezzo unitario (espresso in €/unità di misura)
utilizzabile per misure che variano con continuità, ad esempio nel calcolo dei corrispettivi per
fognatura e depurazione. Il calcolo deve essere anche rapportato al numero di giorni ai quali è
riferita la misura.
2 Suddivisione del consumo in scaglioni a riempimento, e quindi applicazione di prezzi diversi
per fascia; ad esempio calcolo della quota consumo nella fattura del servizio di fornitura di gas.
3 Moltiplicazione del periodo di rilevazione (espresso in giorni o mesi) per il prezzo unitario e
per un attributo che rappresenta la misura del servizio, (prezzo espresso in €/gg*unità di
misura); ad esempio la quota potenza del servizio elettrico (prezzo * giorni * potenza
impegnata) oppure calcolo nolo fatture acqua (prezzo * giorni * numero unità abitative). La
costante moltiplicativa può essere unitaria, in tal caso l’algoritmo calcola il semplice prodotto
del numero di giorni rilevati * il prezzo unitario. Da utilizzare per misure che rappresentano
intervalli temporali.
4 Suddivisione del consumo in scaglioni proporzionali, e quindi applicazione di prezzi diversi per
fascia; ad esempio calcolo della quota consumo nella fattura del servizio di fornitura di acqua
potabile.
Di seguito è riepilogata l’applicabilità degli algoritmi ai tipi di misura.
Entità fisiche che Intervalli Grandezze Intervallo
variano con puntuali di discrete temporale di
continuità tempo rilevazione
38
Algoritmo01 Si No No No
Algoritmo02 Si No No No
Algoritmo03 No No No Si
Algoritmo04 Si No No No
Sviluppi futuri No Si Si No
In appendice D è specificata la configurazione delle tariffe e degli algoritmi da applicare ad ogni singolo servizio.
Piano Tariffario
3.2.17.Relazione
Stabilisce il legame tra la struttura tariffaria ed il cliente determinando le tariffe che saranno applicate alle misure assegnate al cliente. Definisce
anche l’aliquota IVA, che quindi può variare in funzione del cliente e della tariffa.
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Codice Contratto Identificatore Intero Riferimento all’entità Contratto. No
Codice Tariffa Identificatore Intero Riferimento all’entità Tariffa. No
Codice IVA Codice dell’aliquota IVA da applicare alla Intero Riferimento all’entità Imposta. No
voce di fatturazione generata.
Flag Fatturare Definisce se la tariffa è applicabile in Booleano N: no No
fatturazione S: si
Trattamento Economico
3.2.18.Relazione
39
Questa relazione implementa la possibilità di applicare degli sconti ad ogni singola tariffa applicata al cliente. E’ caratterizzata dalla presenza di un
periodo di validità e dalla possibilità di sospensione del trattamento di favore. Le date di inizio trattamento e fine trattamento devono sempre essere
presenti, perché non si prevede la gestione di un trattamento illimitato.
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Codice Trattamento Identificatore Intero No
Codice Cliente Codice del cliente al quale applicare il tratt. Intero Riferimento all’entità contratto. No
Codice Tariffa Codice della tariffa da scontare Intero Riferimento all’entità tariffa. No
Codice Sconto Codice sconto applicato Intero Riferimento all’entità Sconti No
Data inizio Data inizio periodo di applicazione Data No
Data fine Data fine periodo di applicazione Data No
Limite importo Limite massimo di importo scontabile Reale Si
Limite consumo Limite massimo di consumo scontabile Reale Si
Totale Importo Totale importo già scontato nelle fatture Reale Si
precedenti.
Totale Consumo Totale consumo già scontato nelle fatture Reale Si
precedenti.
Percentuale massima Percentuale massima dell’importo fatturato Reale No
che può essere scontata su ogni singola
fattura.
Flag sospensione Definisce se il trattamento è sospeso. Booleano N: no - S: Si No
Flag Attivo Definisce se il trattamento è applicabile (da Booleano N: no - S: Si No
applicare in fatturazione).
40
Sconto
3.2.19.Entità
L’entità Sconto definisce l’anagrafica degli sconti gestiti dal sistema. Il motore di fatturazione è in grado di applicare su ogni singola tariffa sconti
sugli importi o sui consumi. Si suppone che più forme di sconto non siano cumulabili sulla stessa tariffa.
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Codice Sconto Identificatore Intero No
Descrizione Descrizione della forma di sconto Testo No
Codice Tipologia Sconto Definisce se lo sconto va applicato sul Intero 1: sconto sul consumo No
consumo o sul prezzo. 2: sconto sul prezzo
Codice Tipologia temporale Definisce il criterio temporale di Intero 1: periodo limitato No
applicazione dello sconto. 2: per una singola fattura
Imposta Valore Aggiunto
3.2.20.Entità
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Codice Imposta Identificatore Intero No
Descrizione Imposta Descrizione Testo No
Valore Imposta Valore Intero No
Segue la lista delle occorrenze dell’entità che devono essere configurate affinché il sistema funzioni correttamente.
Codice Imposta Descrizione Valore
41
1 IVA 10% 10
2 IVA 20% 20
3 Non imponibile 0
4 Esente 0
Periodo Di Rilevazione Misure
3.2.21.Relazione
La relazione Periodo di Rilevazione Misure definisce il periodo nel corso del quale le misure sono state rilevate ed assume un ruolo d’importanza
fondamentale nel processo di fatturazione in quanto disaggrega la misura dai vincoli temporali; il motore di fatturazione dovrà accedere ai consumi
solo attraverso il periodo di rilevazione.
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Codice Periodo Temporale Identificatore Intero No
Codice Tipo Misura Definisce il tipo di misura. Il processo di Intero Il codice deve essere presente nella tabella No
fatturazione ricerca per ogni tariffa attribuita “Descrizione Codici” con Tipo Codice = 7
al contratto, un solo tipo misura da associare. “CodiceTipoMisura”.
Codice Cliente Cliente al quale sono associate le rilevazioni. Intero Riferimento all’entità cliente No
Flag Fatturabile Definisce se l’elemento è fatturabile. Booleano S: si; N: no No
Flag Fatturato Definisce se l’elemento è fatturato Booleano S: si; N: no No
Data Inizio Periodo E’ la data che definisce l’inizio del periodo Data No
Rilevazione di rilevazione delle misure associate.
Data Fine Periodo Rilevazione E’ la data che definisce la fine del periodo di Data No
rilevazione delle misure associate.
42
Unità di Misura Definisce l’unità di misura delle rilevazioni Testo No
effettuate.
Sistema di provenienza Definisce il sistema o modulo di Testo No
provenienza.
Misura di Consumo
3.2.22.Entità
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Codice misura Identificatore Intero No
Codice Periodo di Rilevazione Riferimento alla data di rilevazione. Intero Identificatore della relazione Periodo di No
rilevazione.
Misura Valore della misura Reale No
Costante moltiplicativa Eventuali costanti moltiplicative del Reale No
consumo.
Flag Anomalia Specifica se la voce è da fatturare o presenta Booleano S: Misura valida No
anomalie. A: anomalia, misura da non fatturare
Codice Sistema di Misura Codice che identifica l’elemento di misura Intero Identificatore dell’entità sistema di misura. No
per sistemi di fatturazione di consumi
misurati.
Descrizione Per Bolletta Descrizione proveniente dal sistema di Testo Si
rilevazione che opzionalmente può essere
riportata in fattura.
43
Tipo Lettura Definisce se la lettura è effettiva o stimata Intero E: Effettiva; A:Stimata No
Misura di intervalli temporali
3.2.23.Entità
Questa entità è progettata per consentire lo sviluppo futuro di algoritmi per la fatturazione dei consumi telefonici.
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Codice misura Identificatore Intero No
Codice Periodo di Rilevazione Riferimento alla data di rilevazione. Intero Identificatore della relazione Periodo di No
rilevazione.
Numero chiamato Identifica il chiamato Intero No
Billing number Soggetto che paga la chiamata Intero No
Data Inizio Conversazione Data di inizio della chiamata Data No
Durata conversazione Misura della durata della conversazione. Tempo No
Flag Anomalia Specifica se la voce è da fatturare o presenta Booleano S: Misura valida No
anomalie. A: anomalia, misura da non fatturare
Chiamante Identifica il chiamante intero No
Descrizione Per Bolletta Descrizione proveniente dal sistema di Testo Si
rilevazione che opzionalmente può essere
riportata in fattura.
Misura di grandezze discrete
3.2.24.Entità
44
Questa entità è progettata per consentire lo sviluppo futuro di algoritmi di fatturazione di tariffe ed imposte calcolate su parametri quali la superficie,
il numero di persone e qualsiasi altra misura rappresentabile da un valore intero.
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Codice misura Identificatore Intero No
Codice Periodo di Rilevazione Riferimento alla data di rilevazione. Intero Identificatore della relazione Periodo di No
rilevazione.
Misura Discreta Valore della misura. Reale No
Data Inizio Misura Discreta Data di inizio misura Data No
Data Fine Misura Discreta Data di fine misura Data No
Flag Anomalia Specifica se la voce è da fatturare o presenta Booleano S: Misura valida No
anomalie. A: anomalia, misura da non fatturare
Descrizione Per Bolletta Descrizione proveniente dal sistema di Testo Si
rilevazione che opzionalmente può essere
riportata in fattura.
3.2.25.Relazione Sistema di Misura
Descrive l’apparato fisico utilizzato per la rilevazione delle misure, per i servizi che lo prevedono (solo per misure di consumo).
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Codice Sistema di Misura Identificatore Intero No
Codice Cliente Cliente al quale è associato il sistema di Intero Riferimento all’entità cliente No
misura.
Descrizione Descrizione. Testo No
45
Marca Marca – non codificata Testo No
Modello Modello – non codificato Testo No
Stato Apparato Definisce lo stato del sistema di misura. Testo I: installato e funzionante. No
R: rimosso
C: chiuso
Anno di produzione Anno di produzione Intero No
Data di Installazione Data di installazione. Data No
Data di Rimozione Data di rimozione. Data Si
Note tecniche Note tecniche rilevanti. Testo Si
3.2.26.Entità Fattura
Identifica la testata della fattura; contiene tutte le informazioni di carattere generale pertinenti al documento, in particolare il codice numerico
progressivo di identificazione, lo stato, e le date di emissione, scadenza e pagamento.
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Codice Fattura Identificatore Intero No
Data Emissione Data di emissione Data No
Data Scadenza Data di scadenza Data No
Data Pagamento Data di pagamento Data No
Codice Cliente Cliente al quale viene intestata la fattura. Intero Codice identificativo dell’entità cliente. No
Stato fattura Definisce lo stato della fattura Testo E: emessa, P: pagata, A: annullata, C: No
contestata dal cliente, V: pagata
parzialmente.
Imponibile totale Reale No
46
Imposta totale Reale No
Importo totale Reale No
Importo Pagato Reale No
dettaglio di fatturazione
3.2.27.Entità
E’ l’oggetto creato dal processo di fatturazione a fronte di ogni misura rilevata ed è caratterizzato da tutti gli attributi che contribuiscono a definire
l’importo fatturato. Deve mantenere la storia della tariffa, del periodo tariffario, del prezzo applicato, dell’eventuale applicazione di sconti, del
codice e del valore dell’imposta, del periodo di rilevazione e della misura. Di particolare importanza sono le due date Data Inizio Misura Fatturata e
Data Fine Misura Fatturata che identificano il periodo temporale fatturato e che possono non combaciare con le date del periodo di rilevazione
poiché questi possono essere suddivisi dal processo di fatturazione per essere ricondotti ai periodi di validità tariffaria.
Le occorrenze di questa entità formano una struttura gerarchica a tre livelli; il livello più alto è rappresentato dal totale calcolato su tutto il periodo
di rilevazione, il livello intermedio rappresenta il totale calcolato per ogni variazione tariffaria, il livello più basso rappresenta il totale calcolato
sulla singola fascia tariffaria. Per ogni misura quindi l’applicativo può generare fino a tre occorrenze di elementi di fatturazione in funzione della
configurazione della tariffa.
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Codice dettaglio di Identificatore Intero No
fatturazione
Codice fattura Fattura alla quale appartiene il dettaglio. Intero Riferimento all’entità Fattura. No
Codice tariffa applicata Tariffa applicata Intero Riferimento all’entità Tariffa. No
Codice periodo validità tari Decorrenza tariffaria Intero Riferimento al periodo tariffario. Si
Codice prezzo applicato Prezzo applicato Intero Riferimento alla fascia tariffaria. Si
Codice Periodo di Rilevazione Periodo di rilevazione della misura. Intero Riferimento al periodo di rilevazione No
47
misure.
Codice misura Misura fatturata Intero Riferimento alla misura. Se null allora il Si
dettaglio si riferisce ad un periodo di
rilevazione senza misura
Codice Voce Fattura Codice della descrizione dell’elemento. Da Intero Il codice deve essere presente nella tabella No
significato al valore calcolato. “Descrizione Codici” con Tipo Codice =
10 “CodiceVoceFattura”.
Livello struttura Definisce il livello di gerarchia nella Intero 1: valore che si riferisce alla fascia di No
struttura. prezzo
2: valore aggregato per periodo di validità
tariffaria
3: valore aggregato per tariffa
Importo fatturato Reale No
Quantità fatturata Reale No
Data Inizio Misura fatturata Data No
Data Fine Misura fatturata Data No
Importo scontato Reale No
Quantità scontata Reale No
Importo lordo sconti Importo al lordo degli sconti Reale No
Quantità lordo sconti Quantità al lordo degli sconti Reale No
Codice IVA IVA Applicata Intero Riferimento alla tabella Imposta No
Codice Trattamento Econom. Intero Riferimento alla tabella Trattamento
Economico
IVA calcolata Reale No
Prezzo Prezzo applicato Reale No
Descrizione Per Bolletta Rappresenta il campo descrizione che Testo Si
48
opzionalmente può essere riportato
nell’entità fattura per questa voce.
3.2.28.Entità Imposta Fatturata
Definisce per ogni fattura, il riepilogo dell’imposta fatturata suddiviso per aliquota.
Nome Attributo Descrizione Tipo Vincoli o valori previsti Null
Codice Fattura Identificatore Intero Riferimento all’entità Fattura No
Codice Imposta Identificatore Intero Riferimento all’entità Imposta No
Imponibile Imponibile totale Reale No
Valore Imposta Aliquota Intero No
Imposta fatturata Valore dell’imposta Reale No
Stato Anagrafico Fatturato
3.2.29.Entità
Questa entità è stata progettata per mantenere traccia degli attributi dell’anagrafica che nel tempo sono soggetti a variazione e che non possono
modificarsi nella fattura.
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Codice Fattura Identificatore Intero Riferimento all’entità Fattura No
Codice Indirizzo residenza Codice dell’indirizzo di residenza nel Intero Riferimento all’entità Indirizzo No
momento di emissione della fattura
Codice Indirizzo recapito Codice dell’indirizzo di recapito nel Intero Riferimento all’entità Indirizzo No
49
momento di emissione della fattura
Codice anagrafica terzi Codice dell’anagrafica terzi nel momento di Intero Riferimento all’entità Anagrafica No
emissione della fattura
Codice anagrafica banca Codice dell’anagrafica di domiciliazione Intero Riferimento all’entità Anagrafica No
bancaria nel momento di emissione della
fattura
Valore Cliente Fatturato
3.2.30.Entità
Questa entità ha lo scopo di salvare lo stato contrattuale presente nel momento in cui è esaminato dall’applicativo di fatturazione.
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Codice Fattura Identificatore Intero Riferimento all’entità Fattura No
Codice Cliente Identificatore Intero Riferimento all’entità Cliente No
Codice Tariffa Identificatore Intero Riferimento all’entità Tariffa No
Codice Valore Cliente Identificatore. Codice che identifica il valore Intero Riferimento al valore contrattuale No
contrattuale.
Valore E’ il valore associato all’occorrenza Reale No
dell’entità da memorizzare.
Data Cliente Fatturata
3.2.31.Entità
Questa entità ha lo scopo di salvare lo stato contrattuale presente nel momento in cui è esaminato dall’applicativo di fatturazione.
50
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Codice Fattura Identificatore Intero Riferimento all’entità Fattura No
Codice Cliente Identificatore Intero Riferimento all’entità Cliente No
Codice Tariffa Identificatore Intero Riferimento all’entità Tariffa No
Codice Data Contrattuale Identificatore. Codice che identifica la data. Intero Riferimento alla data contrattuale No
Data Data da memorizzare. Data No
Errori di Fatturazione
3.2.32.Entità
Questa entità viene utilizzata per la gestione delle anomalie che si presentano nel corso del processo di fatturazione; ogni eccezione prodotta
dall’applicativo è registrata.
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Codice Errore Identificatore Intero No
Codice Contratto Cliente esaminato dalla procedura di Intero Riferimento all’entità Cliente No
fatturazione.
Data Errore Data nella quale si è verificato l’errore Data No
Codice Anomalia Codice dell’errore prodotto. Intero No
Classe Errore Tipologia di errore Testo S: errore di sistema No
L: errore nella logica applicativa
Procedura Generatrice Errore Nome della procedura che ha generato Testo No
l’errore
Descrizione Descrizione dell’errore Testo No
51
Descrizione Codici
3.2.33.Entità
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Tipo Codice Identificatore. Intero No
Codice Identificatore. Intero No
Descrizione Descrizione Testo No
Segue la lista dei Tipi di codice che sono codificati a sistema per garantirne il corretto funzionamento.
Tipo codice Significato del codice 5 Codice Valore Contrattuale
1 Codice Tipo Servizio 6 Codice Data Contrattuale
2 Codice Tipo Utilizzo 7 Codice Tipo Misura
3 Codice Gruppo Fatturazione 10 Codice Voce Fattura
4 Codice Classe Anagrafica 16 Codice Stato Cliente
52
3.3.Il modello logico della base di dati
L’ingegneria informatica, così come tutte le altre discipline scientifiche, fa largo uso di
modelli, intesi come schemi teorici capaci di rappresentare gli aspetti salienti della realtà in
esame. Uno dei compiti principali di un sistema informatico è quello di raccogliere,
organizzare, elaborare e conservare in modo permanente informazioni riferite all’oggetto di
studio. Risulta quindi particolarmente importante definire a priori un modello dei dati, cioè
un insieme di concetti da utilizzare per organizzare i dati di interesse e descriverne la
struttura in modo che risulti comprensibile ad un elaboratore. Il modello logico adottato
nello sviluppo della base di dati della fatturazione è quello relazionale che si basa su solidi
fondamenti teorici, l’algebra relazionale, ed è caratterizzato dal fatto che tutte le
informazioni sono organizzate in tabelle e tutte le operazioni danno come risultato tabelle.
Fu proposto per la prima volta in una pubblicazione scientifica nel 1970 da E.F. Codd allo
scopo di superare le limitazioni dei modelli gerarchico e reticolare che non consentivano di
realizzare una proprietà fondamentale per le basi di dati come quella dell’indipendenza dei
dati. Il problema dell’indipendenza dei dati è stato per decenni alla base dell’evoluzione dei
moderni DBMS commerciali; lo sviluppo della teoria ha portato all’architettura standard
ANSI/SPARC a tre livelli:
a) lo schema fisico che rappresenta la base di dati per mezzo di strutture fisiche di
memorizzazione;
b) lo schema logico che porta alla descrizione della base dati nel modello logico dello
specifico DBMS;
c) lo schema esterno che permette di organizzare le informazioni in modo utile alle varie
applicazioni che vi operano;
Conseguenza fondamentale dell’articolazione in livelli di astrazione è l’indipendenza dei
dati che permette “ad utenti e applicativi che utilizzano una base di dati di interagire ad un
elevato livello di astrazione” rendendoli indipendenti sia dalla struttura fisica sia da quella
logica. Si ottiene quindi che il livello logico e quello esterno sono indipendenti dalla
realizzazione fisica e che il livello esterno è indipendente da quello logico.
In questa fase progettuale il modello concettuale opportunamente ristrutturato è utilizzato
per generare lo schema logico della base di dati; tutti gli oggetti dello schema Entità –
Relazioni sono quindi tradotti in opportuni oggetti del modello Relazionale, in base ad un
insieme di regole predefinite. Lo schema ER originario è già stato oggetto di una prima
ristrutturazione nel corso della fase di stesura della documentazione. In particolare sono già
state rimosse le generalizzazioni, scelti gli identificatori ed accorpate entità e relazioni in
modo da ottimizzare lo schema logico.
53
Poiché l’unico oggetto utilizzabile nel modello relazionale è la Relazione, tutte le Entità e le
Relationship dello schema ER saranno tradotte in Relazioni, caratterizzate da un
identificatore, da un insieme di attributi e da opportune regole d’integrità referenziale.
Lo schema logico che viene presentato di seguito è anche il risultato di un ulteriore
processo di normalizzazione e quindi può essere considerato qualitativamente corretto e
adatto ad essere utilizzato per la realizzazione dello schema della base di dati.
In questa fase si è posta particolare attenzione alla traduzione delle Relationship, in
particolare si è adottata la seguente norma comportamentale: ogni entità che partecipa alla
relationship viene tradotta in una relazione dello schema logico. La relationship, sempre che
non sia dotata di attributi rilevanti, viene assorbita da una delle entità che vi partecipano e
non viene tradotta nello schema logico.
Traduzione dallo schema concettuale allo schema
3.4.
logico relazionale
La seguente tabella definisce la corrispondenza tra i concetti dello schema concettuale e
quelli dello schema logico. E’ integrata con l’indicazione degli identificatori e della tecnica
di codifica degli attributi.
Modello E/R Tipo di Relazione (modello Prefisso Identificatore
oggetto logico) codifica
(E/R) attributi
Soggetto E Anagrafica Ana_ Ana_Codice
Indirizzo E Indirizzo Ind_ Ind_Codice
Comune E Comune Com_ Com_Codice
Stradario R Stradario Str_ Str_Codice
Residenza R Residenza Res_ Res_CodiceAnagrafic
a+Res_CodiceIndResi
denza
Recapito R Recapito Rec_ Rec_CodiceAnagrafic
a+Rec_CodiceIndRec
apito
Recapito presso R Recapito Terzi Rtz_ Rtz_CodiceAnagrafic
terzi a+Rtz_CodiceTerzi
Domiciliazione R DomiciliazioneBancaria Dmb_ Dmb_CodiceAnagrafi
Bancaria ca+Dmb_CodiceAna
Banca
54
Banca E Banca Ban_ Ban_Codice
Cliente E Cliente Cli_ Cli_Codice
Valore E Valore Cliente Vlc_ Vlc_CodiceCliente+V
contrattuale lc_CodiceTariffa+
Vlc_CodiceValore
Data E Data Cliente Dta_ Dta_CodiceCliente+D
contrattuale ta_CodiceTariffa +
DtaCodiceData
Addebito fisso E Addebito Add_ Add_Codice
Tariffa E Tariffa Tar_ Tar_Codice
Periodo di R Validità Tariffa Pvt_ Pvt_CodicePeriodoVa
validità lidita
tariffaria
Prezzo E Prezzo Prz_ Prz_CodiceTariffa+Pr
z_CodiceVarTariffa+
Prz_CodiceFasciaTari
ffa
Algoritmo E Algoritmo Alg_ Alg_Codice
Piano tariffario R Piano Tariffario Pta_ Pta_CodiceCliente+Pt
a_CodiceTariffa
Trattamento R TrattamentoEconomico Tra_ Tra_Codice
economico
Sconto E Sconto Sco_ Sco_Codice
Imposta valore E Imposta Iva_ Iva_Codice
aggiunto
Periodo di R PeriodoRilevazione Prl_ Prl_Codice
rilevazione
misure
Misura di E MisuraConsumo Mco_ Mco_Codice
consumo
Misura di E MisuraTempo Mte_ Mte_Codice
intervalli
temporali
Misura di E MisuraDiscreta Mdi_ Mdi_Codice
grandezze
discrete
Sistema di R ApparatoMisura Apm_ Apm_Codice
misura
Fattura E Fattura Fat_ Fat_Codice
Imposta E ImpostaFatt Ifa_ Ifa_CodiceFattura+Ifa
fatturata _CodiceImposta
Dettaglio di E DettaglioFatt Det_ Det_Codice
55
fatturazione
Stato anagrafico E StatoAnaFatt Saf_ Saf_CodiceFattura
fatturato
Valore cliente E ValoreFatt Vcf_ Vcf_CodiceFattura+V
fatturato cf_CodiceCliente+Vcf
_CodiceTariffa+Vcf_
CodiceValore
Data cliente E DataFatt Dfa_ Dfa_CodiceFattura+D
fatturata fa_CodiceCliente+
Dfa_CodiceTariffa+D
fa_CodiceData
Errori di E ErroriFatturazione Err_ Err_CodiceErrore
fatturazione
Descrizione E Codici Cod_ Cod_TipoCodice+
codici Cod_Codice
L’appendice C contiene la descrizione precisa di tutte le tabelle implementate nel Data
Base.
3.5.Tavola dei volumi e tavola degli accessi
La seguente tabella definisce il volume misurato in numero di occorrenze previste a regime
per ogni tabella ed il numero medio di accessi che l’applicazione effettua nella creazione di
una fattura.
Le due tavole si riferiscono ad un’azienda che opera in un mercato caratterizzato dai
seguenti indicatori:
• 10.000 clienti;
• quattro servizi e quindi in totale 40.000 contratti;
• fatturazioni a periodicità bimestrale, quindi sei fatture per contratto all’anno per un
totale di 240.000 fatture;
• l’applicazione in media di tre tariffe a fattura (consumo, quota fissa e imposta);
• variazioni tariffarie trimestrali per imposta e consumo e annuali per la quota fissa; in
totale per ogni cliente nove variazioni tariffarie l’anno;
• per ogni fattura un totale di nove fasce di prezzo;
• uno sconto applicato almeno una volta in fattura, quindi 240.000 sconti;
I volumi si riferiscono quindi ad un totale di 40.000 contratti, valore costante negli anni, e
ad un anno di fatturazione che corrisponde a 240.000 fatture emesse.
56
Modello E/R Tipo di Relazione (modello Volume Accessi (per la
oggetto logico) generazione di una
(E/R) fattura)
Soggetto E Anagrafica 10.000 3 (L)
Indirizzo E Indirizzo 40.000 3 (L)
Comune E Comune 100 4 (L)
Stradario R Stradario 1.000 4(L)
Residenza R Residenza 10.000 1 (L)
Recapito R Recapito 1.000 1 (L)
Recapito presso R Recapito Terzi 500 1 (L)
terzi
Domiciliazione R DomiciliazioneBancaria 5.000 1 (L)
Bancaria
Banca E Banca 100 1 (L)
Cliente E Cliente 40.000 1 (L)
Valore E Valore Cliente 480.000 5 (L) – 5 (S)
contrattuale
Data E Data Cliente 480.000 5 (L) – 5 (S)
contrattuale
Addebito fisso E Addebito 320.000 3 (S)
Tariffa E Tariffa 100 3 (L)
Periodo di R Validità Tariffa 400 6 (L)
validità
tariffaria
Prezzo E Prezzo 1500 10 (L)
Algoritmo E Algoritmo 6 3 (L)
Piano tariffario R Piano Tariffario 40.000 1 (L)
Trattamento R TrattamentoEconomico 40.000 3 (L) – 3 (S)
economico
Sconto E Sconto 100 3 (L)
Imposta valore E Imposta 4 4 (L)
aggiunto
Periodo di R PeriodoRilevazione 480.000 2 (L) - 2 (S)
rilevazione
misure
Misura di E MisuraConsumo 180.000 1 (L)
consumo
Misura di E MisuraTempo 4.000.000 50 (L)
intervalli
temporali
Misura di E MisuraDiscreta 20.000 2 (L)
grandezze
57
discrete
Sistema di R ApparatoMisura 30.000 1 (L)
misura
Fattura E Fattura 240.000 4 (S)
Imposta E ImpostaFatt 960.000 3 (S)
fatturata
Dettaglio di E DettaglioFatt 4.560.000 19 (S)
fatturazione
Stato anagrafico E StatoAnaFatt 240.000 1 (S)
fatturato
Valore cliente E ValoreFatt 2.400.000 5 (S)
fatturato
Data cliente E DataFatt 2.400.000 5 (S)
fatturata
Errori di E ErroriFatturazione 0 0
fatturazione
Descrizione E Codici 50 10 (L)
codici
58
Realizzazione del prodotto
4.
4.1.Contesto Tecnologico
L’applicazione è stata sviluppata utilizzando il Data Base Management System Microsoft
SQL Server 2005 Express su piattaforma Microsoft (sistemi operativi Windows XP,
Windows Vista o Windows 2000 - 2003 Server). Gli unici vincoli Hardware sono
rappresentati dai requisiti minimi di installazione di SQL Server Express. Per il Porting in
produzione è necessaria l’adozione di una versione di SQL Server completa di licenza
d’uso (e quindi senza limiti nelle dimensioni del data base) e sono da valutare le
caratteristiche minime del Server che deve ospitare la base di dati, caratteristiche che sono
determinate essenzialmente dal numero di clienti e fatture da gestire.
4.2.Lo schema del data base
Lo schema logico del database è costituito da 34 tabelle. Di seguito sono rappresentati i
diagrammi delle principali macro aree nelle quali è strutturato l’archivio: l’anagrafica dei
soggetti, il cliente, la fattura, la tariffa e il dettaglio di fatturazione. L’esposizione termina
con le due tabelle di servizio, “Codici” e “Errori Fatturazione” e con il diagramma
completo dell’archivio, che per ragioni di semplicità riporta solamente i campi chiave delle
relazioni.
L’appendice C inoltre contiene la definizione precisa di tutte le tabelle che sono state
implementate a sistema.
59
Di seguito è rappresentato il diagramma riguardante il dettaglio di fatturazione e le tabelle
ad esso correlatele:
PeriodoRilevazione
Prl_Codice
Imposta DettaglioFatt FK_DettaglioFatt_PeriodoRilev
Prl_CodiceCliente
Iva_Codice Det_Codice
Prl_CodiceTipoMisura
Det_CodiceFattura
Iva_Descrizione
FK_DettaglioFatt_imposta
Prl_Fatturabile
Det_CodiceTariffa
Iva_Valore
Prl_DataInizioRilevazione
Det_CodiceValiditàTariffa
FK_DettaglioFatt_Prezzo Prl_DataFineRilevazione
Det_CodicePrezzo
Prezzo Prl_SistemaProvenienza
Det_CodicePeriodoRilev
Prz_CodiceTariffa Prl_UnitàMisura
Fattura Det_CodiceMisura
FK_DettaglioFattFattura Prz_CodiceVarTariffa Prl_Fatturato
Det_CodiceVoce
Fat_Codice
Prz_CodiceFasciaTariffaria
Det_LivelloStruttura
Fat_DataEmissione
Prz_LimiteInferiore
Det_ImportoFatt
Fat_DataScadenza
Prz_LimiteSuperiore
Det_QtaFatt
Fat_DataPagamento
Prz_Prezzo
Det_DataIniFatt
Fat_CodiceCliente
Prz_VoceFattura
Det_DataFinFatt
Fat_TotaleImponibile
Det_ImportoScontato
Fat_TotaleImposta
Det_QtaScontata
Fat_TotaleFattura
FK_Prezzo_Tariffa
Det_CodiceImposta
Fat_TotalePagato
Det_ImpostaFatt
Fat_StatoFattura
Det_Descrizione
FK_DettaglioFatt_Tariffa
Tariffa
Det_Prezzo
Tar_Codice
FK_Prezzo_VarTariffa
Tar_Descrizione
FK_DettaglioFatt_Validità
Tar_CodiceAlgoritmo
Tar_CodiceTipoMisura
Tar_CodiceVoceFattura
Tar_CreadettVariazione
Tar_CreaDettFascia
FK_ValiditaTariffa_Tariffa
ValiditaTariffa
Tar_applicaSconti
Pvt_CodiceTariffa
Pvt_CodicePeriodoValidità
Pvt_DataInizioValidità
Pvt_DataFineValidità
Pvt_CodiceVoceFattura
Le tabelle Codici ed ErroriFatturazione sono tabelle di servizio, utilizzate dall’applicativo
per riportare errori avvenuti nel corso dell’elaborazione e per recuperare le descrizioni dei
codici utilizzati.
ErroriFatturazione
Codici Err_CodiceErrore
Cod_TipoCodice
Err_CodiceContratto
Cod_Codice
Err_DataErrore
Cod_Descrizione
Err_CodiceAnomalia
Err_Classe
Err_Procedura
Err_Descrizione
64
Di seguito è rappresentato il diagramma completo della base di dati. Per semplicità di
esposizione sono visualizzati solo i campi chiave e quelli che contribuiscono a definire
l’integrità referenziale del data base.
Cliente
Cli_Codice
Codici
ErroriFatturazione Cli_CodiceAnagrafica
Cod_TipoCodice
Err_CodiceErrore Cli_CodiceFornitura
Cod_Codice
ValoreCliente
Vlc_CodiceCliente
Vlc_CodiceTariffa
Vlc_CodiceValore
Vlc_Valore
Stradario
Str_Codice
Str_CodiceComune
Recapito
Str_Descrizione
Indirizzo Rec_CodiceAnagrafica
Ind_Codice
Rec_CodiceIndRecapito
Ind_CodiceStradario
Rec_recapitoAttivo
Ind_Civico
Rec_DataInizio
Ind_Interno
Rec_DataFine
DataCliente
Dta_CodiceCliente
Comune
Dta_CodiceTariffa
Com_Codice
Dta_CodiceData
Residenza
Res_CodiceAnagrafica
Res_codiceIndResidenza
Res_ResidenzaAttiva
Tariffa Res_DataInizio
Tar_Codice
Res_DataFine
Tar_CodiceAlgoritmo
DomiciliazioneBancaria
Dmb_CodiceAnagrafica
Dmb_CodiceAnaBanca
Algoritmo
Alg_Codice
Addebito
Add_codice
Add_CodiceCliente
Add_codiceIVA
TrattamentoEconomico PianoTariffario
Tra_Codice Pta_CodiceCliente DataFatt
Tra_CodiceCliente Pta_CodiceTariffa Dfa_CodiceFattura
Anagrafica
Tra_CodiceTariffa Pta_CodiceIVA Dfa_CodiceCliente
Ana_Codice
Tra_CodiceSconto Pta_TariffaDaFatt Dfa_CodiceTariffa
Dfa_CodiceData
Sconto
Imposta
Sco_Codice
Banca
Iva_Codice
Ban_Codice
ValoreFatt
Ban_CodiceAnagrafica
Vcf_CodiceFattura
Fattura
Vcf_CodiceCliente
Fat_Codice
Vcf_CodiceTariffa
Fat_CodiceCliente
Vcf_CodiceValore
Vcf_Valore
ImpostaFatt
Ifa_CodiceFattura
Ifa_CodiceImposta
Ifa_Imponibile
StatoAnaFatt
Ifa_Imposta
Saf_CodiceFattura
Ifa_AliquotaImposta
Saf_CodiceResidenza
Saf_CodiceRecapito
Saf_CodiceAnaTerzi
Saf_CodiceDomiciliazione
Saf_CodiceAnagrafica
MisuraConsumo
Mco_Codice
Mco_PeriodoRilevazione
ApparatoMisura
Mco_ApparatoMisura Apm_Codice
Apm_CodiceCliente
DettaglioFatt
RecapitoTerzi
PeriodoRilevazione
Det_Codice
Rtz_CodiceAnagrafica
Prl_Codice
Det_CodiceFattura
Rtz_CodiceTerzi
Prl_CodiceCliente
Det_CodiceTariffa
Det_CodiceValiditàTariffa
Det_CodicePrezzo
MisuraDiscreta
Det_CodicePeriodoRilev
Mdi_Codice
Det_CodiceImposta
Mdi_PeriodoRilevazione
MisuraTelefonica
Mte_Codice
Mte_PeriodoRilevazione
Prezzo
Prz_CodiceTariffa
Prz_CodiceVarTariffa
Prz_CodiceFasciaTariff...
ValiditaTariffa
Pvt_CodiceTariffa
Pvt_CodicePeriodoVali...
65
4.3.Lo schema esterno della base di dati
Lo schema esterno del data base permette di realizzare un ulteriore livello d’indipendenza
dei dati; è costituito da viste generate dalle tabelle dello schema logico ed è utilizzato
direttamente dalle applicazioni che elaborano il dato. Alcune viste sono utilizzate dal
processo di fatturazione, altre sono indispensabili per eseguire controlli sui dati inseriti e
per la visualizzazione della fattura e degli attributi del cliente.
Di seguito sono elencate e descritte le viste sviluppate:
Vw_ClienteCompleto
Utilizzata dal processo di fatturazione per estrarre le informazioni relative al soggetto, al
contratto, al cliente ed alla residenza.
E’ costituita dalle tabelle Cliente, Anagrafica, Residenza, Indirizzo, Stradario e Comune.
Vw_DomCompleta
Utilizzata dal processo di fatturazione per estrarre l’eventuale domiciliazione bancaria e gli
attributi dell’istituto di credito.
E’ costituita dalle tabelle Anagrafica (inclusa due volte, in qualità di anagrafica del cliente
ed anagrafica della banca), Banca e Domiciliazione Bancaria.
Vw_IndirizzoCompleto
Utilizzata per estrarre l’indirizzo completo e per realizzare query di controllo sugli indirizzi
inseriti in archivio. E’ costituita dalle tabelle Indirizzo, Stradario e Comune.
Vw_MisureReport
Utilizzata dagli algoritmi di calcolo che operano sulle misure di consumi. E’ costituita dalle
tabelle PeriodoRilevazione, Tariffa e Misura Consumo.
Vw_MisureRilevate
Utilizzata dal programma di fatturazione per associare le misure rilevate da fatturare alle
relative tariffe di fatturazione. L’associazione è effettuata utilizzando il campo
CodiceTipoMisura. E’ costituita dalle tabelle Tariffa, Piano Tariffario, Cliente, Algoritmo e
Periodorilevazione.
Vw_ScontiApplicati
66
Utilizzata dagli algoritmi di calcolo per verificare l’esistenza di sconti da applicare alla
tariffa in esame. Utilizza le tabelle Sconto, Trattamento Economico, Tariffa e Piano
Tariffario.
Vw_TariffaCompleta
Utilizzata per estrarre la struttura tariffaria completa e realizzare query e report in grado di
visualizzare tutte le informazioni legate alla tariffa, alle decorrenze tariffarie ed alle fasce di
prezzo da applicare. Implementata con le tabelle Tariffa, Prezzo e Validità Tariffa.
Vw_TariffeApplicate
Estrae tutte le tariffe applicate al cliente. Da utilizzare per realizzare query e report
riguardanti il cliente. Implementata con le tabelle Cliente, Piano Tariffario e Tariffa.
Vw_TestataFattura
Estrae tutte le informazioni da visualizzare nella testata della fattura. Realizzata con le
tabelle Fattura, Cliente, Anagrafica, Residenza, Indirizzo, Stradario e Comune.
Vw_Dettaglio
Estrae il dettaglio di fatturazione completo degli attributi della tariffa e dell’imposta.
Utilizzato per la visualizzazione del quadro di dettaglio dei consumi della fattura. Vista
realizzata con le tabelle Dettaglio, Tariffa e Imposta.
Vw_Addebito
Utilizzata per estrarre l’addebito con gli attributi dell’imposta applicata da esporre in
fattura. Vista realizzata con le tabelle Addebito e Imposta.
Vw_Fornitura
Utilizzata per estrarre l’indirizzo completo di fornitura del servizio da esporre in fattura.
Utilizza le tabelle Cliente, Indirizzo, Comune e Stradario.
Vw_RecapitoPerFattura
Utilizzata per estrarre il recapito della fattura da esporre in fattura. Utilizza le tabelle
Recapito, StatoAnaFatt, Indirizzo, Comune e Stradario.
Vw_RiepilogoIVA
Utilizzata per esporre il riepilogo IVA in fattura. Realizzata con le tabelle Imposta e
ImpostaFatt.
67
Vw_ValContrFatt
Utilizzata per esporre in fattura lo stato contrattuale fatturato di interesse. Realizzata con le
tabelle Tariffa, ValoreFatt e Codici.
La Logica di Business
4.4.
La logica di business è stata implementata in Transact SQL con il supporto delle Stored
Procedures di SQL Server. Segue la lista documentata delle Stored Procedures realizzate
nell’ambito del progetto.
Fatturazione
Questa procedura costituisce il corpo principale dell’applicativo. Esegue le seguenti
funzionalità:
• verifica l’esistenza del cliente, estrae gli attributi del soggetto, del cliente, della
residenza, di un eventuale recapito e domiciliazione bancaria;
• scrive il record fattura, impostando i valori monetari a zero (saranno aggiornati in
seguito dagli algoritmi di calcolo);
• scrive la struttura dati relativa all’imposta che sarà poi aggiornata progressivamente
dagli algoritmi di calcolo;
• scrive lo stato anagrafico;
• ricerca e fattura eventuali addebiti e/o accrediti;
• ricerca tutte le misure da fatturare attribuite al cliente, associa la relativa tariffa ed
esegue l’algoritmo di fatturazione;
• al termine, se non si sono verificati errori di sistema o errori nella logica applicativa,
esegue il “Commit” della transazione.
All’inizio della procedura viene dichiarata la seguente transazione
Set transaction isolation level repeatable read;
che permette di bloccare l’accesso alle risorse lette ed aggiornate dal programma.
Qualsiasi anomalia di sistema o nella logica applicativa inibisce la produzione della fattura,
viene visualizzata (se è attiva la flag di debug dell’applicazione) e sempre registrata
nell’apposita tabella di supporto.
Le misure da fatturare vengono estratte utilizzando la vista Vw_MisureRilevate ed il
cursore estrai_misure.
Declare estrai_misure cursor for
68
SELECT [Tar_Codice],[Prl_Codice],[Tar_CodiceAlgoritmo],
[Prl_DataInizioRilevazione],[Prl_DataFineRilevazione],
[Pta_codiceIVA],[Tar_ApplicaSconti],[Tar_CodiceTipoMisura]
FROM [DB_Fatturazione].[dbo].[vw_MisureRilevate]
WHERE Pta_CodiceCliente = @CodiceCliente and Prl_Fatturabile = 1
and Prl_Fatturato = 0 and Pta_TariffaDaFatt = 1
Ogni algoritmo di fatturazione eseguito deve:
• estrarre lo stato contrattuale;
• eseguire le opportune verifiche di congruità dello stato contrattuale e della misura
da fatturare;
• memorizzare lo stato contrattuale così come si presenta, prima del calcolo;
• determinare l’eventuale presenza ed applicabilità di sconti;
• determinare il prezzo o i prezzi da applicare alla misura; effettuarne la
valorizzazione;
• scrivere i dettagli di fatturazione, che sono di tre livelli;
o dettaglio a livello di prezzo;
o dettaglio a livello di decorrenza tariffaria;
o dettaglio a livello di tariffa
• gli sconti sono applicati solamente al dettaglio a livello di tariffa;
• aggiornare lo stato cliente;
• aggiornare il periodo di rilevazione misure a fatturato;
• aggiornare la fattura e l’imposta.
ScriviErrore
Procedura che è richiamata ogni qual volta si verifica un errore per registrarlo nella tabella
ErroriFatturazione. Segue la chiamata standard alla procedura:
if @@error <> 0
begin
if @MessaggiFatt = 1 print 'Fatturazione: Errore select @AliquotaIVA'
rollback transaction fatturazione;
execute @Error_Status = ScriviErrore @CodiceCliente, 199, 'S',
'Fatturazione','Errore select @AliquotaIVA'
Return -1
end
69
La variabile @MessaggiFatt viene impostata all’inizio dell’applicazione e, se attiva,
determina la visualizzazione di tutti i messaggi relativi alla logica del software e ad
eventuali errori che vengono comunque sempre registrati nella tabella ErroriFatturazione.
Scrivi Dettaglio
Procedura che viene eseguita dagli algoritmi di calcolo ogni qual volta si tratta di registrare
un dettaglio di fatturazione. Si occupa esclusivamente della funzione di “insert” in tabella
DettaglioFatt. Riceve tutte le informazioni dal chiamante, non esegue alcun tipo di calcolo.
AggiornaFattura
È utilizzata per aggiornare i campi “totale imponibile”, “totale imposta” e “totale fattura”
del record fattura; viene richiamata dagli algoritmi di fatturazione al termine del calcolo
degli importi dovuti. E’ utilizzata anche per aggiornare il dettaglio IVA.
Algoritmo01
Procedura che implementa il seguente algoritmo di fatturazione: moltiplicazione della
misura rilevata per il prezzo unitario (espresso in €/unità di misura). Il calcolo deve essere
anche rapportato al numero di giorni ai quali è riferita la misura;
Algoritmo03
Procedura che implementa il seguente algoritmo di fatturazione: moltiplicazione del
periodo di rilevazione (espresso in giorni o mesi) per il prezzo unitario e per un attributo
che rappresenta la misura del servizio, (prezzo espresso in €/gg*unità di misura). La
costante moltiplicativa viene letta dallo stato contrattuale, deve sempre esistere per questo
algoritmo, può eventualmente essere unitaria; in tal caso l’algoritmo calcola il semplice
prodotto del numero di giorni rilevati * il prezzo unitario.
Set @totaleImpFascia = @totaleImpFascia + round(@mesidafatt *
@zPrz_Prezzo * @Moltiplicatore,2)
Algoritmo02
Procedura che implementa il seguente algoritmo di fatturazione: suddivisione del consumo
in scaglioni a riempimento, e quindi applicazione di prezzi diversi per fascia.
Questo algoritmo è molto simile all’algoritmo04 che sarà descritto a breve. Varia il metodo
utilizzato per determinare il consumo da applicare alla fascia tariffaria, che si fonda sul
confronto con il totale già consumato nel periodo di fatturazione corrente (@ConsumoCorr):
if @ConsumoCorr < @zPrz_LimiteSuperiore
Begin
set @ConsumoMaxFascia = @ConsumoCorr + @ConsumoResiduo
70
if @ConsumoMaxFascia <= @zPrz_LimiteSuperiore
begin
set @ConsumoPerFascia = @ConsumoResiduo
set @ConsumoCorr = @ConsumoCorr + @ConsumoResiduo
set @consumoResiduo = 0
end
else
begin
set @ConsumoPerFascia = @zPrz_LimiteSuperiore - @ConsumoCorr
set @consumoResiduo = @ConsumoMaxFascia - @zPrz_LimiteSuperiore
set @ConsumoCorr = @zPrz_LimiteSuperiore
end
…………
Algoritmo04
Procedura che implementa il seguente algoritmo di fatturazione: suddivisione del consumo
in scaglioni proporzionali, e quindi applicazione di prezzi diversi per fascia.
Lo scaglionamento del consumo viene calcolato attraverso un cursore che legge in sequenza
ordinata tutte le fasce di prezzo da applicare. Determina prima il consumo massimo
giornaliero della fascia applicando la seguente formula:
consumo massimo giornaliero = consumo totale fascia / 365gg
e consumo massimo applicabile = consumo massimo giornaliero * totale giorni da fatturare.
In sintesi l’applicativo esegue la seguente operazione:
set @ConsumoMaxFascia = round(@giornidafatt * (@zPrz_LimiteSuperiore -
@zPrz_LimiteInferiore) / 365,@nrcifre)
Il consumo per fascia è quindi calcolato con il seguente blocco d’istruzioni.
if @ConsumoResiduo <= @ConsumoMaxFascia
begin
set @ConsumoPerFascia = @ConsumoResiduo
set @consumoResiduo = 0
end
else
begin
set @ConsumoPerFascia = @ConsumoMaxFascia
set @consumoResiduo = @ConsumoResiduo - @ConsumoMaxFascia
end
Il blocco di codice che esegue la valorizzazione è il seguente:
--
71
--
********************************************************************
-- calcolo i prezzi da applicare al periodo
--
set @ConsumoResiduo = @ConsumoPerDecorrenza
Declare estrai_prezzi cursor for
SELECT [Prz_CodiceFasciaTariffaria]
,[Prz_LimiteInferiore]
,[Prz_LimiteSuperiore]
,[Prz_Prezzo]
,[Prz_VoceFattura]
FROM [DB_Fatturazione].[dbo].[Prezzo]
WHERE [Prz_CodiceTariffa] = @CodiceTariffa and
[Prz_CodiceVarTariffa] = @zPvt_CodicePeriodoValidità
ORDER BY [Prz_CodiceTariffa], [Prz_CodiceVarTariffa],
[Prz_CodiceFasciaTariffaria];
Open estrai_prezzi;
Fetch next from estrai_prezzi into
@zPrz_CodiceFasciaTariffaria,
@zPrz_LimiteInferiore,
@zPrz_LimiteSuperiore,
@zPrz_Prezzo,
@zPrz_VoceFattura;
WHILE @@FETCH_STATUS = 0
BEGIN
if @MessaggiFatt = 1 print 'Ciclo prezzo. Codice fascia ' +
ltrim(str(@zPrz_CodiceFasciaTariffaria)) + ' min ' +
ltrim(str(@zPrz_LimiteInferiore,10,@nrcifre)) + ' max ' +
ltrim(str(@zPrz_LimiteSuperiore,10,@nrcifre))
+ ' prz ' + ltrim(str(@zPrz_Prezzo,18,8)) + ' consumo ' +
ltrim(str(@ConsumoResiduo,10,@nrcifre))
--- determino il consumo massimo per la fascia in modo proporzionale:
--- x : giornidafatt = volumedellafascia : 365
set @ConsumoMaxFascia = round(@giornidafatt * (@zPrz_LimiteSuperiore -
@zPrz_LimiteInferiore) / 365,@nrcifre)
if @ConsumoResiduo <= @ConsumoMaxFascia
begin
set @ConsumoPerFascia = @ConsumoResiduo
72
set @consumoResiduo = 0
end
else
begin
set @ConsumoPerFascia = @ConsumoMaxFascia
set @consumoResiduo = @ConsumoResiduo - @ConsumoMaxFascia
end
Set @totaleImpFascia = @totaleImpFascia + round(@zPrz_Prezzo *
@ConsumoPerFascia,2)
set @totaleImpVarTar = @totaleImpVarTar + round(@zPrz_Prezzo *
@ConsumoPerFascia,2)
Set @totaleImpTariff = @totaleImpTariff + round(@zPrz_Prezzo *
@ConsumoPerFascia,2)
--
-- scrittura dettagli di fatturazione
--
………
Set @totaleImpFascia = 0
Fetch next from estrai_prezzi into
@zPrz_CodiceFasciaTariffaria,
@zPrz_LimiteInferiore,
@zPrz_LimiteSuperiore,
@zPrz_Prezzo,
@zPrz_VoceFattura;
END -- fine fetch su estrai-prezzi
Close estrai_prezzi;
Deallocate estrai_prezzi;
73
5. Conclusioni
L’obiettivo del progetto è la realizzazione di un sistema di fatturazione di consumi e servizi
flessibile e generalizzato. Sono stati studiati e gestiti i servizi di fornitura di gas metano,
acqua potabile ed energia elettrica. La difficoltà principale è stata la ricerca degli elementi
che questi servizi hanno in comune con l’obiettivo di disegnare un sistema flessibile in
grado di adattarsi alle diverse esigenze.
La flessibilità del sistema è stata raggiunta implementando un “livello applicativo”
configurabile, caratterizzato dalle seguenti entità:
a) il tipo di servizio (acqua, gas, energia ed eventuali altri servizi);
a) la tariffa;
c) le caratteristiche del sistema di tariffazione (cioè lo stato contrattuale);
d) il tipo di misura;
e) l’algoritmo di calcolo da utilizzare per la valorizzazione della misura.
Il prodotto gestisce tre diversi tipi di misure:
a) le misure di fenomeni fisici che variano con continuità nel tempo, indispensabili per
operare con i consumi di acqua, gas ed energia elettrica;
b) le misure di grandezze discrete, da utilizzare per sviluppi futuri;
c) le misure di intervalli temporali, da utilizzare per eventuali sviluppi futuri.
Sono stati realizzati i seguenti algoritmi di calcolo che, associati ai vari tipi di misura,
permettono di gestire un ampio spettro di esigenze di fatturazione per i servizi di vendita di
gas, acqua ed energia elettrica:
a) moltiplicazione della misura rilevata per il prezzo unitario;
b) moltiplicazione del numero di giorni (o mesi) del periodo di rilevazione per il prezzo
unitario ed eventualmente per un attributo che rappresenta un parametro indicativo del
servizio;
c) suddivisione del consumo in scaglioni a riempimento e quindi applicazione di prezzi
diversi per fascia;
d) suddivisione del consumo in scaglioni proporzionali e quindi applicazione di prezzi
diversi per fascia;
La separazione dell’algoritmo di calcolo dalla tariffa, la gestione dello stato contrattuale e
l’estensione del concetto di misura rendono il prodotto flessibile e facilmente
implementabile. Eventuali sviluppi futuri, infatti, potrebbero essere la fatturazione di
74
consumi telefonici, il cui calcolo è basato sulla misura d’intervalli temporali e, di tasse ed
imposte comunali determinate sulla base di parametri quali la superficie abitativa o un
numero di persone.
L’obiettivo prefissato quindi può ritenersi ampiamente raggiunto:
a) vengono gestiti tutti i tipi di servizio presi in considerazione;
b) il sistema si adatta con facilità a nuove esigenze configurando opportunamente il “livello
applicativo”;
c) lo sviluppo di nuove tecniche di calcolo non gestite comporta l’implementazione di
nuovi moduli e non la modifica del codice esistente.
L’applicazione riceve in input la data di scadenza della fattura ed il codice univoco del
cliente da fatturare, quindi esamina le tariffe da applicare, lo stato contrattuale e le misure
rilevate. Per ogni coppia “misura rilevata – tariffa da applicare” viene eseguito l’algoritmo
di calcolo specifico che aggiorna il dettaglio IVA, la testata della fattura e genera i dettagli
di fatturazione nei quali sono specificati tutti gli attributi che hanno contribuito a generare
l’importo fatturato. Tutte le anomalie sono registrate in una tabella di sistema ed
eventualmente visualizzate nella pagina dei messaggi di esecuzione della procedura di SQL
Server (in funzione di una variabile software). A fronte di una qualsiasi anomalia è inoltre
eseguito il “rollback” della transazione ed inibita la creazione del documento.
Per visualizzare il documento prodotto è stato predisposto un VBS che genera un file Excel
contenente i dati identificativi del cliente e della fattura, il riepilogo IVA, quello riguardante
le tariffe applicate ed il dettaglio di calcolo comprensivo delle fasce di prezzo e delle
variazioni tariffarie.
Il lavoro svolto può essere così quantificato:
a) 43 tabelle;
b) 15 viste;
c) 8 stored procedures;
d) Circa 5.900 righe di codice in Transact SQL;
e) Circa 450 righe di codice VB Script.
Resta da sviluppare l’interfaccia utente che potrebbe essere un portale Web ovvero un
applicativo in ambiente Windows. La fattura può essere visualizzata sviluppando
opportunamente il foglio Excel utilizzato per il test del sistema oppure facendo ricorso a
tecnologie più idonee alla gestione di documenti di natura fiscale.
E’ inoltre indispensabile un test completo ed esaustivo della procedura che deve prevedere
tutte le combinazioni di servizi, algoritmi, tipi di misura, applicazione di sconti e modalità
di fatturazione.
75
6. Bibliografia
Atzeni P., Ceri S., Paraboschi S., Torlone R., Basi di dati Modelli e linguaggi di
interrogazione, McGraw-Hill
Ramez A. Elmasri, Shamkant B. Navathe, Sistemi di basi di dati Complementi 4°
edizione Addison Wesley 4° edizione febbraio 2005
Fuggetta , Ghezzi, Morasca, Morzenti, Pezzè, Ingegneria del Software, Progettazione,
Sviluppo e Verifica, Mondadori Informatica
http://msdn.microsoft.com
http://www.estenergy.it
http://www.cogeme.net
http://www.autorita.energia.it/
http://www.iride-energia.it/
http://www.irisacqua.it/
76
Appendice A – Contenuto del Compact Disk allegato
Il CD allegato contiene i seguenti files:
• Questo documento in formato Microsoft Word 2003 e in formato pdf.
• I seguenti documenti in formato Microsoft Word 2003 e pdf:
o Appendice B – Documentazione scaricata da Internet
o Appendice C - Schema logico relazionale
o Appendice D – Configurazione stato contrattuale
• La presentazione in formato Powerpoint: presentazione.ppt
• Il backup del data base in formato SQL Server 2005
• La fattura in formato Excel e lo script Report.VBS per la generazione del file
Excel.
• Lo script CreaDB.SQL per la creazione del Data Base
77
0 comments
Post a comment