Elaborato Tesi
-
Upload
guest9039eba -
Category
Documents
-
view
1.944 -
download
0
description
Transcript of Elaborato Tesi
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
1. Introduzione.............................................................................................................V1.1. Struttura dell’elaborato..................................................................................VII
2. Definizione delle specifiche di progetto...................................................................82.1. Analisi e raccolta dei requisiti...........................................................................8
2.2. Descrizione del processo di fatturazione................................................14
3. Progettazione della base di dati...............................................................................173.1. Progettazione concettuale...............................................................................17
3.2. Ristrutturazione e documentazione degli schemi ER.....................................22
3.2.1. Entità Soggetto........................................................................................24
3.2.2. Entità Indirizzo........................................................................................25
3.2.3. Entità Comune........................................................................................26
3.2.4. Relazione Stradario.................................................................................26
3.2.5. Relazione Residenza...............................................................................27
3.2.6. Relazione Recapito.................................................................................28
3.2.7. Relazione Recapito Presso Terzi............................................................28
3.2.8. Relazione Domiciliazione Bancaria........................................................29
3.2.9. Entità Banca............................................................................................30
3.2.10. Entità Cliente..........................................................................................31
3.2.11. Lo stato contrattuale................................................................................33
3.2.11.1. Entità Valore Contrattuale..............................................................333.2.11.2. Entità Data Contrattuale..................................................................34
3.2.12. Entità Addebito Fisso..............................................................................35
3.2.13. Entità Tariffa...........................................................................................35
3.2.14. Relazione Periodo di Validità Tariffaria.................................................38
3.2.15. Entità Prezzo...........................................................................................39
3.2.16. Entità Algoritmo.....................................................................................40
3.2.17. Relazione Piano Tariffario......................................................................42
3.2.18. Relazione Trattamento Economico.........................................................43
3.2.19. Entità Sconto...........................................................................................44
3.2.20. Entità Imposta Valore Aggiunto.............................................................45
3.2.21. Relazione Periodo Di Rilevazione Misure..............................................45
3.2.22. Entità Misura di Consumo......................................................................47
3.2.23. Entità Misura di intervalli temporali.......................................................48
III
3.2.24. Entità Misura di grandezze discrete........................................................49
3.2.25. Relazione Sistema di Misura..................................................................49
3.2.26. Entità Fattura...........................................................................................50
3.2.27. Entità dettaglio di fatturazione................................................................51
3.2.29. Entità Stato Anagrafico Fatturato...........................................................54
3.2.30. Entità Valore Cliente Fatturato...............................................................55
3.2.31. Entità Data Cliente Fatturata...................................................................55
3.2.32. Entità Errori di Fatturazione...................................................................56
3.2.33. Entità Descrizione Codici.......................................................................57
3.3. Il modello logico della base di dati.................................................................58
3.4. Traduzione dallo schema concettuale allo schema logico relazionale............59
3.5. Tavola dei volumi e tavola degli accessi........................................................61
4. Realizzazione del prodotto......................................................................................644.1. Contesto Tecnologico.....................................................................................64
4.2. Lo schema del data base.................................................................................64
4.3. Lo schema esterno della base di dati...............................................................71
4.4. La Logica di Business.....................................................................................73
5. Conclusioni.............................................................................................................796. Bibliografia.............................................................................................................81Appendice A – Contenuto del Compact Disk allegato...................................................82
IV
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.
V
Archivio Fatturazione
Moduli diinterfaccia
Applicativo difatturazione
Sistemi diacquisizione
misure e gestionecliente
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.
VI
1.1. Struttura dell’elaborato
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.
VII
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.
2.1. Analisi e raccolta dei requisiti
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;
8
destinatario dei documenti di fatturazione (potrebbe non essere il titolare del
contratto);
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.
9
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 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.
10
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.
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.
Periodo di rilevazione delle misure
Misura dientità che varia in modo discreto
Inizio rilevazione Fine rilevazione
Misura di grandezza fisica che varia con continuità
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
che variano
Intervalli
puntuali di
Grandezze
discrete
Intervallo
temporale di
11
con continuità tempo rilevazione
Tipo di
suddivisione
della misura
La misura è
suddivisa in
modo
proporzionale
al numero di
giorni di
appartenenza
alla decorrenza
tariffaria.
Non definibile.
L’appartenenza
alla decorrenza
tariffaria è
definita sulla
base della data
di effettuazione
dell’evento.
La misura è
suddivisa in
proporzione al
periodo in cui
si mantiene
costante.
Intervallo
suddiviso in
base ai giorni
di rilevazione.
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.
Periodo di rilevazione misure effettivo
Periodo validità prezzo A Periodo validità prezzo B
Sub - periodo rilev. A Sub – periodo rilevazione B
Data inizio rilevazione
Data fine rilevazione
Data variazione prezzi
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;
12
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 €/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
che variano
con continuità
Intervalli
puntuali di
tempo
Grandezze
discrete
Intervallo
temporale di
rilevazione
Misura *
prezzo
unitario
Si No No No
Prezzo *
periodo di
rilevazione
No No No Si
Prezzo *
Periodo *
attributo
No No No Si
Fascia di
consumo
Si No No No
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
13
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.
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
14
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.
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.
15
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.
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.
16
3. Progettazione della base di dati
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.
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.
3.1. Progettazione concettuale
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.
17
Soggetto
(0,N)
Piano tariffario
Cliente
Misura
Fattura
Dettaglio di fatturazione
(1,N)
Sistema di misura
Trattamento economico
Valorizzazione
Contratto
Tariffa
ScontoPartite monetarie
Addebito
(1,1) (0,N)
(0,N) (1,1)
(0,1) (0,N)
(1,1)
(0,N)
(1,N)
(1,1)
(0,1)
(0,N)
(0,N)
Servizioerogato
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.
Valore contrattuale
Stato Contrattuale
VolumeLimiteFattore di correzione
Data 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
18
fatturazione; questi potranno poi essere associati a una o più tariffe e imposte,
caratterizzate da un periodo di validità e da un prezzo.
Soggetto
(0,N)
Piano tariffario
Cliente
Misura
Dettaglio di fatturazione
(1,N)
Sistema di misura
Trattamento economico
Valorizzazione
Contratto
Tariffa
Sconto
Stato Cliente
Algoritmo
Applicazione
Fattura
Partite monetarie
Addebito
(1,1)
(0,N)
(1,1)
(1,1) (0,N)
(1,1)(0,N)
(0,N)(0,1)
(1,N)
(1,1)
(0,N)
(1,1)
(0,1)(0,N)
(0,N)
Servizioerogato
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.
19
Soggetto
(0,N)
Piano tariffario
Cliente
Misura
Fattura
Dettaglio di fatturazione
(1,N)
Sistema di misura
Trattamento economico
Valorizzazione
Contratto
Tariffa
Stato Cliente
Periodo di rilevazione
misure
Sconto Algoritmo
Applicazione
Prezzo
Periodo divalidità
tariffaria
Partite monetarie
Addebito
(1,1)
(1,1)
(0,N)
(1,N)
(1,1)
(1,1) (1,1)
(1,N)
(1,1) (0,N)
(0,N) (1,1)
(0,1) (0,N)
(1,N)
(1,1)
(1,1)
(0,N)
(0,N)
(0,N) (0,1)
(1,1)
Valorizzazione
Servizio erogato
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 entitàche variano in modo discreto
Misura di intervalli temporali
Misura di grandezze fisiche che variano con 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 fatture emesse a nome di un altro soggetto. Le relazioni di interesse
20
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.
Titolare di contratto
(0,N)
(0,N)
(1,N)
Indirizzo
Destinatario comunicazioni
Istituto di Credito
Soggetto
Recapito presso terzi
Domicilio bancario
Residenza
(0,N)
(0,N)
(0,N)
(0,N)
(0,N)
Persona giuridica
Persona fisica
Recapito
Comune
Stradario(1,N)
(1,1)
Attributi banca
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.
Cliente
Ubicazionefornitura
Indirizzo(1,1) (0,N) Comune
Stradario
(1,1) (1,N)
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.
21
Fattura
Cliente
Stato anagrafico
Indirizzo
Soggetto
Residenza
Recapito
Recapito presso terzi
Domicilio bancario
Valorizzazione
Contratto
(0,N)
(1,1)
(1,1)
(1,1)
(1,1) (0,N)(1,1)
(1,1) (0,N)
(1,1) (0,N)
(1,1) (0,N)
(1,1)(0,N)
Stato anagraficofatturato
Dettaglio di fatturazione
Imposta fatturata
Partite monetarie
Valorizzazione
Valorizzazione
(1,N)
(1,1)(1,1)
(0,N)(1,1)
Stato contrattuale
fatturato
Servizioerogato
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.
3.2. Ristrutturazione e documentazione degli schemi
ER
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.
22
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.
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.
23
3.2.1. Entità SoggettoL’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.
Utilizzato per realizzare funzionalità di
raggruppamento e sintesi delle
Intero Il codice deve essere presente nella tabella
“Descrizione Codici” con Tipo Codice = 4
“CodiceClasseAnagrafica”.
No
24
informazioni.
Denominazione Ragione sociale o Cognome e Nome in
funzione del tipo soggetto
Testo No
Codice Fiscale Codice fiscale Testo Si
Partita IVA Partita IVA Testo Si
Flag Fatturazione Flag che definisce se l’anagrafica è
fatturabile
Booleano N: no; S: si No
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
3.2.2. Entità Indirizzo
25
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
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
caratteri.
Testo No
Stato Stato di appartenenza del comune Testo No
3.2.4. Relazione Stradario
26
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 ResidenzaLa 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.
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
dell’anagrafica o della residenza attiva.
Booleano S: Residenza attiva; N: non più residente No
Data inizio Data di inizio validità dell’occorrenza Data No
Data fine Data di fine validità dell’occorrenza (di
cambio residenza)
Data Si
27
3.2.6. Relazione RecapitoLa 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
dell’anagrafica o del recapito attivo.
Booleano S: Recapito attivo; N: recapito non attivo No
Data inizio Data di inizio validità della relazione Data No
Data fine Data di cambio recapito o fine validità della
relazione
Data Si
3.2.7. Relazione Recapito Presso TerziLa 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,
28
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
documenti (sempre entità soggetto)
No
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 BancariaLa 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
Codice soggetto Identificatore Intero Codice identificatore del soggetto No
Codice soggetto banca Identificatore Intero Codice identificatore del soggetto che è No
29
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
cliente nel circuito interbancario
Testo No
3.2.9. Entità BancaQuesta 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
30
3.2.10. Entità ClienteL’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
“Descrizione Codici” con Tipo Codice = 1
“CodiceTipoServizio”.
No
Codice Tipo Utilizzo Definisce una regola di raggruppamento per
le utenze. Può essere l’uso merceologico o
altre codifiche a piacimento. E’ utilizzabile
per analisi e funzioni di reportistica.
Intero Il codice deve essere presente nella tabella
“Descrizione Codici” con Tipo Codice = 2
“CodiceTipoUtilizzo”.
No
Identificativo Fornitura Codice identificativo della fornitura. Per il
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.
Testo No
Codice Gruppo per
fatturazione
Definisce un codice per la selezione delle
utenze da fatturare nei processi di
fatturazione di gruppo.
Intero Il codice deve essere presente nella tabella
“Descrizione Codici” con Tipo Codice = 3
“CodiceGruppoFatturazione”.
No
Codice Indirizzo fornitura Identificativo del luogo di fornitura del Intero Identificatore dell’entità Indirizzo No
31
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
“Descrizione Codici” con Tipo Codice =
16 “CodiceStatoCliente”.
No
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
32
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
1 Codice generico
Codice Gruppo Fatt. Descrizione
1 Codice generico
3.2.11. Lo stato contrattuale
3.2.11.1. Entità Valore ContrattualeQuesta 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
33
Codice Tariffa Identificatore Intero Riferimento alla tariffa applicata No
Codice Valore Cliente Identificatore. Codice che identifica il
significato dell’occorrenza dell’entità.
Intero Il codice deve essere presente nella tabella
“Descrizione Codici” con Tipo Codice = 5
“CodiceValoreContrattuale”
No
Valore E’ il valore associato all’entità. Reale No
3.2.11.2. Entità Data ContrattualeL’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
significato dell’occorrenza dell’entità.
Intero Il codice deve essere presente nella tabella
“Descrizione Codici” con Tipo Codice = 6
“CodiceDataContrattuale”
No
Data E’ la data associata all’entità. Data No
34
3.2.12. Entità Addebito FissoConsente 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 /
accreditare la voce.
Intero Riferimento all’entità Cliente No
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
Flag anomalia Specifica se l’addebito non deve essere
fatturato
Booleano S: da fatturare N: non fatturare No
Sistema di provenienza Definisce il sistema o modulo che ha
generato l’addebito.
No
Codice Fattura Se null elemento non fatturato, altrimenti
identifica la fattura.
Intero Riferimento all’entità Fattura Si
3.2.13. Entità Tariffa
35
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
l’imposta)
Intero Identificatore dell’entità No
Descrizione Tariffa Descrizione della tariffa (o imposta) Testo No
Codice Algoritmo Applicato Definisce il codice dell’algoritmo di
fatturazione che viene applicato.
Intero Riferimento all’entità Algoritmo. No
Codice Voce Fattura Codice della voce creata in fattura. Intero Il codice deve essere presente nella tabella
“Descrizione Codici” con Tipo Codice =
10 “CodiceVoceFattura”.
No
Codice Tipo Misura Definisce il tipo di misura che il sistema di
fatturazione ricerca per applicare la tariffa.
Intero Il codice deve essere presente nella tabella
“Descrizione Codici” con Tipo Codice = 7
“CodiceTipoMisura”.
No
Flag Dettagli Variazione Definisce se l’algoritmo di calcolo deve Booleano S: crea dettagli No
36
creare i dettagli di fatturazione per ogni
variazione del periodo di validità
N: non crea dettagli
Flag Dettagli Prezzo Definisce se l’algoritmo di calcolo deve
creare i dettagli di fatturazione per ogni
fascia di prezzo
Booleano S: crea dettagli
N: non crea dettagli
No
Flag Sconti applicabili Definisce se possono essere applicati degli
sconti.
Booleano S: applicabili N: non applicabili No
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
differenza delle due date che definiscono
l’intervallo di misurazione
6 Misura di superficie in mq
7 Numero intero, numero di persone.
37
8 Misura di potenza in kW
9 Misura di consumo in kVarh
10 Misura di tempo in ore, minuti e secondi
3.2.14. Relazione Periodo di Validità TariffariaE’ 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
ogni tariffa, l’occorrenza della relazione.
Intero No
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
temporale superiore.
Si
Codice voce fattura Codice della voce che viene generata dal
sistema di fatturazione
Intero Il codice deve essere presente nella tabella
“Descrizione Codici” con Tipo Codice =
No
38
10 “CodiceVoceFattura”.
3.2.15. Entità PrezzoL’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
determina la fascia.
Intero No
Limite Inferiore Definisce il limite inferiore a partire dal
quale viene applicato il prezzo specificato.
Reale Si
39
Limite Superiore Definisce il limite superiore di consumo
fino al quale applicare il prezzo.
Reale Si
Prezzo Applicato Definisce il prezzo da applicare alla misura
rilevata.
Reale No
Codice Voce Fattura Codice della voce che viene generata dal
sistema di fatturazione.
Intero Il codice deve essere presente nella tabella
“Descrizione Codici” con Tipo Codice =
10 “CodiceVoceFattura”.
No
3.2.16. Entità Algoritmo
Nome attributo Descrizione Tipo Vincoli o valori previsti Null
Codice Algoritmo Identificatore dell’entità. Intero I codici devono essere opportunamente
predefiniti, rappresentano dei driver di
fatturazione.
No
Versione Algoritmo Versione. Serve a dare profondità storica
all’entità. Da utilizzare solo a livello
descrittivo, in quanto versioni diverse dello
stesso algoritmo devono essere identificate
da codici diversi.
Intero No
Descrizione Algoritmo Breve descrizione delle funzionalità Testo No
40
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.
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
41
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 variano con
continuità
Intervalli
puntuali di
tempo
Grandezze
discrete
Intervallo
temporale di
rilevazione
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.
3.2.17. Relazione Piano TariffarioStabilisce 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
42
Codice Tariffa Identificatore Intero Riferimento all’entità Tariffa. No
Codice IVA Codice dell’aliquota IVA da applicare alla
voce di fatturazione generata.
Intero Riferimento all’entità Imposta. No
Flag Fatturare Definisce se la tariffa è applicabile in
fatturazione
Booleano N: no
S: si
No
3.2.18. Relazione Trattamento EconomicoQuesta 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
43
Totale Importo Totale importo già scontato nelle fatture
precedenti.
Reale Si
Totale Consumo Totale consumo già scontato nelle fatture
precedenti.
Reale Si
Percentuale massima Percentuale massima dell’importo fatturato
che può essere scontata su ogni singola
fattura.
Reale No
Flag sospensione Definisce se il trattamento è sospeso. Booleano N: no - S: Si No
Flag Attivo Definisce se il trattamento è applicabile (da
applicare in fatturazione).
Booleano N: no - S: Si No
3.2.19. Entità ScontoL’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
consumo o sul prezzo.
Intero 1: sconto sul consumo
2: sconto sul prezzo
No
Codice Tipologia temporale Definisce il criterio temporale di Intero 1: periodo limitato No
44
applicazione dello sconto.
2: per una singola fattura
3.2.20. Entità Imposta Valore Aggiunto
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
1 IVA 10% 10
2 IVA 20% 20
3 Non imponibile 0
4 Esente 0
45
3.2.21. Relazione Periodo Di Rilevazione MisureLa 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
fatturazione ricerca per ogni tariffa attribuita
al contratto, un solo tipo misura da
associare.
Intero Il codice deve essere presente nella tabella
“Descrizione Codici” con Tipo Codice = 7
“CodiceTipoMisura”.
No
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
Rilevazione
E’ la data che definisce l’inizio del periodo
di rilevazione delle misure associate.
Data No
Data Fine Periodo Rilevazione E’ la data che definisce la fine del periodo
di rilevazione delle misure associate.
Data No
Unità di Misura Definisce l’unità di misura delle rilevazioni
effettuate.
Testo No
46
Sistema di provenienza Definisce il sistema o modulo di
provenienza.
Testo No
3.2.22. Entità Misura di Consumo
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
rilevazione.
No
Misura Valore della misura Reale No
Costante moltiplicativa Eventuali costanti moltiplicative del
consumo.
Reale No
Flag Anomalia Specifica se la voce è da fatturare o presenta
anomalie.
Booleano S: Misura valida
A: anomalia, misura da non fatturare
No
Codice Sistema di Misura Codice che identifica l’elemento di misura
per sistemi di fatturazione di consumi
misurati.
Intero Identificatore dell’entità sistema di
misura.
No
Descrizione Per Bolletta Descrizione proveniente dal sistema di
rilevazione che opzionalmente può essere
riportata in fattura.
Testo Si
47
Tipo Lettura Definisce se la lettura è effettiva o stimata Intero E: Effettiva; A:Stimata No
3.2.23. Entità Misura di intervalli temporali
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
rilevazione.
No
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
anomalie.
Booleano S: Misura valida
A: anomalia, misura da non fatturare
No
Chiamante Identifica il chiamante intero No
Descrizione Per Bolletta Descrizione proveniente dal sistema di
rilevazione che opzionalmente può essere
riportata in fattura.
Testo Si
48
3.2.24. Entità Misura di grandezze discreteQuesta 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
rilevazione.
No
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
anomalie.
Booleano S: Misura valida
A: anomalia, misura da non fatturare
No
Descrizione Per Bolletta Descrizione proveniente dal sistema di
rilevazione che opzionalmente può essere
riportata in fattura.
Testo Si
3.2.25. Relazione Sistema di Misura
49
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
misura.
Intero Riferimento all’entità cliente No
Descrizione Descrizione. Testo No
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.
R: rimosso
C: chiuso
No
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à FatturaIdentifica 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.
50
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:
contestata dal cliente, V: pagata
parzialmente.
No
Imponibile totale Reale No
Imposta totale Reale No
Importo totale Reale No
Importo Pagato Reale No
3.2.27. Entità dettaglio di fatturazioneE’ 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.
51
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
fatturazione
Identificatore Intero No
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
misure.
No
Codice misura Misura fatturata Intero Riferimento alla misura. Se null allora il
dettaglio si riferisce ad un periodo di
rilevazione senza misura
Si
Codice Voce Fattura Codice della descrizione dell’elemento. Da
significato al valore calcolato.
Intero Il codice deve essere presente nella tabella
“Descrizione Codici” con Tipo Codice =
10 “CodiceVoceFattura”.
No
Livello struttura Definisce il livello di gerarchia nella
struttura.
Intero 1: valore che si riferisce alla fascia di
prezzo
No
52
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
opzionalmente può essere riportato
nell’entità fattura per questa voce.
Testo Si
3.2.28. Entità Imposta Fatturata
53
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
3.2.29. Entità Stato Anagrafico FatturatoQuesta 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
momento di emissione della fattura
Intero Riferimento all’entità Indirizzo No
Codice Indirizzo recapito Codice dell’indirizzo di recapito nel
momento di emissione della fattura
Intero Riferimento all’entità Indirizzo No
Codice anagrafica terzi Codice dell’anagrafica terzi nel momento di Intero Riferimento all’entità Anagrafica No
54
emissione della fattura
Codice anagrafica banca Codice dell’anagrafica di domiciliazione
bancaria nel momento di emissione della
fattura
Intero Riferimento all’entità Anagrafica No
3.2.30. Entità Valore Cliente FatturatoQuesta 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 contrattuale.
Intero Riferimento al valore contrattuale No
Valore E’ il valore associato all’occorrenza
dell’entità da memorizzare.
Reale No
3.2.31. Entità Data Cliente FatturataQuesta entità ha lo scopo di salvare lo stato contrattuale presente nel momento in cui è esaminato dall’applicativo di fatturazione.
55
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
3.2.32. Entità Errori di FatturazioneQuesta 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
fatturazione.
Intero Riferimento all’entità Cliente No
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
L: errore nella logica applicativa
No
56
Procedura Generatrice Errore Nome della procedura che ha generato
l’errore
Testo No
Descrizione Descrizione dell’errore Testo No
3.2.33. Entità Descrizione Codici
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
57
58
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.
59
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.
3.4. Traduzione dallo schema concettuale allo schema
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
oggetto
(E/R)
Relazione (modello
logico)
Prefisso
codifica
attributi
Identificatore
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_CodiceIndRes
idenza
Recapito R Recapito Rec_ Rec_CodiceAnagrafi
ca+Rec_CodiceIndRe
capito
Recapito presso
terzi
R Recapito Terzi Rtz_ Rtz_CodiceAnagrafic
a+Rtz_CodiceTerzi
Domiciliazione R DomiciliazioneBancaria Dmb_ Dmb_CodiceAnagraf
60
Bancaria ica+Dmb_CodiceAna
Banca
Banca E Banca Ban_ Ban_Codice
Cliente E Cliente Cli_ Cli_Codice
Valore
contrattuale
E Valore Cliente Vlc_ Vlc_CodiceCliente+
Vlc_CodiceTariffa+
Vlc_CodiceValore
Data
contrattuale
E Data Cliente Dta_ Dta_CodiceCliente+
Dta_CodiceTariffa +
DtaCodiceData
Addebito fisso E Addebito Add_ Add_Codice
Tariffa E Tariffa Tar_ Tar_Codice
Periodo di
validità
tariffaria
R Validità Tariffa Pvt_ Pvt_CodicePeriodoV
alidita
Prezzo E Prezzo Prz_ Prz_CodiceTariffa+P
rz_CodiceVarTariffa
+Prz_CodiceFasciaTa
riffa
Algoritmo E Algoritmo Alg_ Alg_Codice
Piano tariffario R Piano Tariffario Pta_ Pta_CodiceCliente+P
ta_CodiceTariffa
Trattamento
economico
R TrattamentoEconomico Tra_ Tra_Codice
Sconto E Sconto Sco_ Sco_Codice
Imposta valore
aggiunto
E Imposta Iva_ Iva_Codice
Periodo di
rilevazione
misure
R PeriodoRilevazione Prl_ Prl_Codice
Misura di
consumo
E MisuraConsumo Mco_ Mco_Codice
Misura di
intervalli
temporali
E MisuraTempo Mte_ Mte_Codice
Misura di
grandezze
E MisuraDiscreta Mdi_ Mdi_Codice
61
discrete
Sistema di
misura
R ApparatoMisura Apm_ Apm_Codice
Fattura E Fattura Fat_ Fat_Codice
Imposta
fatturata
E ImpostaFatt Ifa_ Ifa_CodiceFattura+If
a_CodiceImposta
Dettaglio di
fatturazione
E DettaglioFatt Det_ Det_Codice
Stato
anagrafico
fatturato
E StatoAnaFatt Saf_ Saf_CodiceFattura
Valore cliente
fatturato
E ValoreFatt Vcf_ Vcf_CodiceFattura+
Vcf_CodiceCliente+
Vcf_CodiceTariffa+
Vcf_CodiceValore
Data cliente
fatturata
E DataFatt Dfa_ Dfa_CodiceFattura+
Dfa_CodiceCliente+
Dfa_CodiceTariffa+
Dfa_CodiceData
Errori di
fatturazione
E ErroriFatturazione Err_ Err_CodiceErrore
Descrizione
codici
E Codici Cod_ Cod_TipoCodice+
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;
62
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.
Modello E/R Tipo di
oggetto
(E/R)
Relazione (modello
logico)
Volume Accessi (per la
generazione di una
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
terzi
R Recapito Terzi 500 1 (L)
Domiciliazione
Bancaria
R DomiciliazioneBancaria 5.000 1 (L)
Banca E Banca 100 1 (L)
Cliente E Cliente 40.000 1 (L)
Valore
contrattuale
E Valore Cliente 480.000 5 (L) – 5 (S)
Data
contrattuale
E Data Cliente 480.000 5 (L) – 5 (S)
Addebito fisso E Addebito 320.000 3 (S)
Tariffa E Tariffa 100 3 (L)
Periodo di
validità
tariffaria
R Validità Tariffa 400 6 (L)
Prezzo E Prezzo 1500 10 (L)
Algoritmo E Algoritmo 6 3 (L)
63
Piano tariffario R Piano Tariffario 40.000 1 (L)
Trattamento
economico
R TrattamentoEconomico 40.000 3 (L) – 3 (S)
Sconto E Sconto 100 3 (L)
Imposta valore
aggiunto
E Imposta 4 4 (L)
Periodo di
rilevazione
misure
R PeriodoRilevazione 480.000 2 (L) - 2 (S)
Misura di
consumo
E MisuraConsumo 180.000 1 (L)
Misura di
intervalli
temporali
E MisuraTempo 4.000.000 50 (L)
Misura di
grandezze
discrete
E MisuraDiscreta 20.000 2 (L)
Sistema di
misura
R ApparatoMisura 30.000 1 (L)
Fattura E Fattura 240.000 4 (S)
Imposta
fatturata
E ImpostaFatt 960.000 3 (S)
Dettaglio di
fatturazione
E DettaglioFatt 4.560.000 19 (S)
Stato
anagrafico
fatturato
E StatoAnaFatt 240.000 1 (S)
Valore cliente
fatturato
E ValoreFatt 2.400.000 5 (S)
Data cliente
fatturata
E DataFatt 2.400.000 5 (S)
Errori di
fatturazione
E ErroriFatturazione 0 0
Descrizione
codici
E Codici 50 10 (L)
64
4. Realizzazione del prodotto
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.
65
Di seguito è rappresentato il diagramma riguardante l’anagrafica dei soggetti e le tabelle
correlate:
BancaBan_Codice
Ban_CodiceAnagrafica
Ban_BancaAttiva
Ban_CodiceABI
Ban_CodiceCAB
Ban_DataInizio
Ban_DataFine
FK_Banca_Anagrafica
ClienteCli_Codice
Cli_CodiceAnagrafica
Cli_CodiceTipoServizio
Cli_CodiceTipoUtilizzo
Cli_CodiceGruppoFatt
Cli_CodiceFornitura
Cli_CodiceStatoCliente
Cli_AnnoContratto
Cli_NumeroContratto
Cli_DataContratto
Cli_IdFornitura
Cli_ClienteFatturabile
Cli_NoteTecniche
Cli_NoteAmministrative
FK_Cliente_Anagrafica
ComuneCom_Codice
Com_Comune
Com_CAP
Com_Provincia
Com_Stato
DomiciliazioneBancariaDmb_CodiceAnagrafica
Dmb_CodiceAnaBanca
Dmb_ContoCorrente
Dmb_CodieceIBAN
Dmb_DomiciliazioneAttiva
Dmb_DataInizio
Dmb_DataFine
FK_DomiciliazioneBancaria_Anagrafica
FK_DomiciliazioneBancaria_AnaBanca
IndirizzoInd_Codice
Ind_CodiceStradario
Ind_Civico
Ind_Interno
FK_Cliente_Indirizzo
RecapitoRec_CodiceAnagrafica
Rec_CodiceIndRecapito
Rec_recapitoAttivo
Rec_DataInizio
Rec_DataFine
FK_Recapito_Anagrafica
FK_Recapito_Indirizzo
RecapitoTerziRtz_CodiceAnagrafica
Rtz_CodiceTerzi
Rtz_RecapitoAttiv
Rtz_DataInizio
Rtz_DataFine
FK_RecapitoTerzi_Anagrafica
FK_RecapitoTerzi_AnagraficaTerzi
ResidenzaRes_CodiceAnagrafica
Res_codiceIndResidenza
Res_ResidenzaAttiva
Res_DataInizio
Res_DataFine
FK_Residenza_Anagrafica
FK_Residenza_Indirizzo
StradarioStr_Codice
Str_CodiceComune
Str_Descrizione
FK_Stradario_Comune FK_Indirizzo_Stradario
AnagraficaAna_Codice
Ana_TipoPersona
Ana_CodiceClasse
Ana_Demominazione
Ana_codiceFiscale
Ana_PartitaIVA
Ana_FlagFatturazione
Ana_DataNascita
Ana_Sesso
66
Di seguito è rappresentato il diagramma riguardante l’entità cliente e le tabelle ad esso
correlate:
AddebitoAdd_codice
Add_CodiceCliente
Add_Descrizione
Add_Valore
Add_codiceIVA
Add_AddebitoFatturato
Add_AddebitoDaFatturare
Add_SistemaProvenienza
Add_CodiceFattura
AnagraficaAna_Codice
Ana_TipoPersona
Ana_CodiceClasse
Ana_Demominazione
Ana_codiceFiscale
Ana_PartitaIVA
Ana_FlagFatturazione
Ana_DataNascita
Ana_Sesso
ApparatoMisuraApm_Codice
Apm_CodiceCliente
Apm_Descrizione
Apm_Marca
Apm_Modello
Apm_AnnoProduzione
Apm_StatoApparato
Apm_DataInstallazione
Apm_DataRimozione
Apm_NoteTecniche
ClienteCli_Codice
Cli_CodiceAnagrafica
Cli_CodiceTipoServizio
Cli_CodiceTipoUtilizzo
Cli_CodiceGruppoFatt
Cli_CodiceFornitura
Cli_CodiceStatoCliente
Cli_AnnoContratto
Cli_NumeroContratto
Cli_DataContratto
Cli_IdFornitura
Cli_ClienteFatturabile
Cli_NoteTecniche
Cli_NoteAmministrative
FK_Cliente_Anagrafica
FK_ApparatoMisura_Cliente FK_Addebito_cliente
DataClienteDta_CodiceCliente
Dta_CodiceTariffa
Dta_CodiceData
Dta_Data
FK_DataCliente_Cliente
FatturaFat_Codice
Fat_DataEmissione
Fat_DataScadenza
Fat_DataPagamento
Fat_CodiceCliente
Fat_TotaleImponibile
Fat_TotaleImposta
Fat_TotaleFattura
Fat_TotalePagato
Fat_StatoFattura
FK_Fattura_Cliente
MisuraConsumoMco_Codice
Mco_PeriodoRilevazione
Mco_Misura
Mco_Anomalia
Mco_ApparatoMisura
Mco_Descrizione
Mco_CostanteMoltiplicativa
Mco_TipoLettura
FK_MisuraConsumo_Apparato
MisuraDiscretaMdi_Codice
Mdi_PeriodoRilevazione
Mdi_Misura
Mdi_DataInizioMisura
Mdi_DataFineMisura
Mdi_Anomalia
Mdi_Descrizione
PeriodoRilevazionePrl_Codice
Prl_CodiceCliente
Prl_CodiceTipoMisura
Prl_Fatturabile
Prl_DataInizioRilevazione
Prl_DataFineRilevazione
Prl_SistemaProvenienza
Prl_UnitàMisura
Prl_Fatturato
FK_MisuraConsumo_PeriodoRilevazione
FK_PeriodoRilevazione_Cliente
FK_MisuraDiscreta_PeriodoRilevazione
PianoTariffarioPta_CodiceCliente
Pta_CodiceTariffa
Pta_CodiceIVA
Pta_TariffaDaFatt
FK_PianoTariffario_Cliente
ScontoSco_Codice
Sco_Descrizione
Sco_TipoSconto
Sco_TipoScadenza
TariffaTar_Codice
Tar_Descrizione
Tar_CodiceAlgoritmo
Tar_CodiceTipoMisura
Tar_CodiceVoceFattura
Tar_CreadettVariazione
Tar_CreaDettFascia
Tar_applicaSconti
FK_PianoTariffario_Tariffa
FK_DataCliente_Tariffa
TrattamentoEconomicoTra_Codice
Tra_CodiceCliente
Tra_CodiceTariffa
Tra_CodiceSconto
Tra_ScontoApplicabile
Tra_DataInizio
Tra_DataFine
Tra_ScontoSospeso
Tra_LimiteImporto
Tra_LimiteConsumo
Tra_ImportoScontato
Tra_ConsumoScontato
Tra_Percentuale
FK_TrattamentoEconomico_Tariffa
FK_TrattamentoEconomico_Cliente
FK_TrattamentoEconomico_Sconto
ValoreClienteVlc_CodiceCliente
Vlc_CodiceTariffa
Vlc_CodiceValore
Vlc_Valore
FK_ValoreCliente_Tariffa
FK_ValoreCliente_Cliente
MisuraTempoMte_Codice
Mte_PeriodoRilevazione
Mte_Chiamato
Mte_BillingNumber
Mte_DataInizioConversazione
Mte_DurataConversazione
Mte_Anomalia
Mte_Chiamante
Mte_Descrizione
FK_MisuraTempo_PeriodoRilevazione
67
Di seguito è rappresentato il diagramma riguardante le tabelle che costituiscono
l’articolazione tariffaria:
AlgoritmoAlg_Codice
Alg_Descrizione
Alg_Versione
PianoTariffarioPta_CodiceCliente
Pta_CodiceTariffa
Pta_CodiceIVA
Pta_TariffaDaFatt
FK_Tariffa_Algoritmo FK_PianoTariffario_Tariffa
TrattamentoEconomicoTra_Codice
Tra_CodiceCliente
Tra_CodiceTariffa
Tra_CodiceSconto
Tra_ScontoApplicabile
Tra_DataInizio
Tra_DataFine
Tra_ScontoSospeso
Tra_LimiteImporto
Tra_LimiteConsumo
Tra_ImportoScontato
Tra_ConsumoScontato
Tra_Percentuale
FK_TrattamentoEconomico_Tariffa
ValiditaTariffaPvt_CodiceTariffa
Pvt_CodicePeriodoValidità
Pvt_DataInizioValidità
Pvt_DataFineValidità
Pvt_CodiceVoceFattura
FK_ValiditaTariffa_Tariffa
FK_PianoTariffario_Cliente
FK_TrattamentoEconomico_Cliente
PrezzoPrz_CodiceTariffa
Prz_CodiceVarTariffa
Prz_CodiceFasciaTariffaria
Prz_LimiteInferiore
Prz_LimiteSuperiore
Prz_Prezzo
Prz_VoceFattura
FK_Prezzo_Tariffa
FK_Prezzo_VarTariffa
ImpostaIva_Codice
Iva_Descrizione
Iva_Valore
FK_PianoTariffario_Imposta
TariffaTar_Codice
Tar_Descrizione
Tar_CodiceAlgoritmo
Tar_CodiceTipoMisura
Tar_CodiceVoceFattura
Tar_CreadettVariazione
Tar_CreaDettFascia
Tar_applicaSconti
ClienteCli_Codice
Cli_CodiceAnagrafica
Cli_CodiceTipoServizio
Cli_CodiceTipoUtilizzo
Cli_CodiceGruppoFatt
Cli_CodiceFornitura
Cli_CodiceStatoCliente
Cli_AnnoContratto
Cli_NumeroContratto
Cli_DataContratto
Cli_IdFornitura
Cli_ClienteFatturabile
Cli_NoteTecniche
Cli_NoteAmministrative
ScontoSco_Codice
Sco_Descrizione
Sco_TipoSconto
Sco_TipoScadenza
FK_TrattamentoEconomico_Sconto
68
Di seguito è rappresentato il diagramma riguardante le tabelle che contribuiscono a
formare la fattura:
ValoreFattVcf_CodiceFattura
Vcf_CodiceCliente
Vcf_CodiceValore
Vcf_Valore
StatoAnaFattSaf_CodiceFattura
Saf_CodiceResidenza
Saf_CodiceRecapito
Saf_CodiceAnaTerzi
Saf_CodiceDomiciliazione
Saf_CodiceAnagrafica
ImpostaFattIfa_CodiceFattura
Ifa_CodiceImposta
Ifa_Imponibile
Ifa_Imposta
Ifa_AliquotaImposta
FatturaFat_Codice
Fat_DataEmissione
Fat_DataScadenza
Fat_DataPagamento
Fat_CodiceCliente
Fat_TotaleImponibile
Fat_TotaleImposta
Fat_TotaleFattura
Fat_TotalePagato
Fat_StatoFattura
FK_ValoreFatt_Fattura
FK_ImpostaFatt_Fattura
FK_StatoAnaFatt_Fattura
DettaglioFattDet_Codice
Det_CodiceFattura
Det_CodiceTariffa
Det_CodiceValiditàTariffa
Det_CodicePrezzo
Det_CodicePeriodoRilev
Det_CodiceMisura
Det_CodiceVoce
Det_LivelloStruttura
Det_ImportoFatt
Det_QtaFatt
Det_DataIniFatt
Det_DataFinFatt
Det_ImportoScontato
Det_QtaScontata
Det_CodiceImposta
Det_ImpostaFatt
Det_Descrizione
Det_Prezzo
FK_DettaglioFattFattura
DataFattDfa_CodiceFattura
Dfa_CodiceCliente
Dfa_CodiceData
Dfa_Data
FK_DataFatt_Fattura
AddebitoAdd_codice
Add_CodiceCliente
Add_Descrizione
Add_Valore
Add_codiceIVA
Add_AddebitoFatturato
Add_AddebitoDaFatturare
Add_SistemaProvenienza
Add_CodiceFattura
ClienteCli_Codice
Cli_CodiceAnagrafica
Cli_CodiceTipoServizio
Cli_CodiceTipoUtilizzo
Cli_CodiceGruppoFatt
Cli_CodiceFornitura
Cli_CodiceStatoCliente
Cli_AnnoContratto
Cli_NumeroContratto
Cli_DataContratto
Cli_IdFornitura
Cli_ClienteFatturabile
Cli_NoteTecniche
Cli_NoteAmministrative
FK_DataFatt_Cliente
FK_ValoreFatt_Cliente
FK_Fattura_Cliente
FK_Addebito_cliente
69
Di seguito è rappresentato il diagramma riguardante il dettaglio di fatturazione e le tabelle
ad esso correlatele:
DettaglioFattDet_Codice
Det_CodiceFattura
Det_CodiceTariffa
Det_CodiceValiditàTariffa
Det_CodicePrezzo
Det_CodicePeriodoRilev
Det_CodiceMisura
Det_CodiceVoce
Det_LivelloStruttura
Det_ImportoFatt
Det_QtaFatt
Det_DataIniFatt
Det_DataFinFatt
Det_ImportoScontato
Det_QtaScontata
Det_CodiceImposta
Det_ImpostaFatt
Det_Descrizione
Det_Prezzo
PeriodoRilevazionePrl_Codice
Prl_CodiceCliente
Prl_CodiceTipoMisura
Prl_Fatturabile
Prl_DataInizioRilevazione
Prl_DataFineRilevazione
Prl_SistemaProvenienza
Prl_UnitàMisura
Prl_Fatturato
ImpostaIva_Codice
Iva_Descrizione
Iva_Valore
FatturaFat_Codice
Fat_DataEmissione
Fat_DataScadenza
Fat_DataPagamento
Fat_CodiceCliente
Fat_TotaleImponibile
Fat_TotaleImposta
Fat_TotaleFattura
Fat_TotalePagato
Fat_StatoFattura
PrezzoPrz_CodiceTariffa
Prz_CodiceVarTariffa
Prz_CodiceFasciaTariffaria
Prz_LimiteInferiore
Prz_LimiteSuperiore
Prz_Prezzo
Prz_VoceFattura
TariffaTar_Codice
Tar_Descrizione
Tar_CodiceAlgoritmo
Tar_CodiceTipoMisura
Tar_CodiceVoceFattura
Tar_CreadettVariazione
Tar_CreaDettFascia
Tar_applicaScontiValiditaTariffa
Pvt_CodiceTariffa
Pvt_CodicePeriodoValidità
Pvt_DataInizioValidità
Pvt_DataFineValidità
Pvt_CodiceVoceFattura
FK_ValiditaTariffa_Tariffa
FK_Prezzo_VarTariffa
FK_DettaglioFatt_Validità
FK_Prezzo_Tariffa
FK_DettaglioFatt_Tariffa
FK_DettaglioFatt_PeriodoRilev
FK_DettaglioFatt_imposta
FK_DettaglioFattFattura
FK_DettaglioFatt_Prezzo
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.
CodiciCod_TipoCodice
Cod_Codice
Cod_Descrizione
ErroriFatturazioneErr_CodiceErrore
Err_CodiceContratto
Err_DataErrore
Err_CodiceAnomalia
Err_Classe
Err_Procedura
Err_Descrizione
70
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.
AddebitoAdd_codice
Add_CodiceCliente
Add_codiceIVA
AlgoritmoAlg_Codice
AnagraficaAna_Codice
ApparatoMisuraApm_Codice
Apm_CodiceCliente
BancaBan_Codice
Ban_CodiceAnagrafica
ClienteCli_Codice
Cli_CodiceAnagrafica
Cli_CodiceFornitura
CodiciCod_TipoCodice
Cod_Codice
ComuneCom_Codice
DataClienteDta_CodiceCliente
Dta_CodiceTariffa
Dta_CodiceData
DataFattDfa_CodiceFattura
Dfa_CodiceCliente
Dfa_CodiceTariffa
Dfa_CodiceData
DettaglioFattDet_Codice
Det_CodiceFattura
Det_CodiceTariffa
Det_CodiceValiditàTariffa
Det_CodicePrezzo
Det_CodicePeriodoRilev
Det_CodiceImposta
DomiciliazioneBancariaDmb_CodiceAnagrafica
Dmb_CodiceAnaBanca
ErroriFatturazioneErr_CodiceErrore
FatturaFat_Codice
Fat_CodiceCliente
ImpostaIva_Codice
ImpostaFattIfa_CodiceFattura
Ifa_CodiceImposta
Ifa_Imponibile
Ifa_Imposta
Ifa_AliquotaImposta
IndirizzoInd_Codice
Ind_CodiceStradario
Ind_Civico
Ind_Interno
MisuraConsumoMco_Codice
Mco_PeriodoRilevazione
Mco_ApparatoMisura
MisuraDiscretaMdi_Codice
Mdi_PeriodoRilevazione
MisuraTelefonicaMte_Codice
Mte_PeriodoRilevazione
PeriodoRilevazionePrl_Codice
Prl_CodiceCliente
PianoTariffarioPta_CodiceCliente
Pta_CodiceTariffa
Pta_CodiceIVA
Pta_TariffaDaFatt
PrezzoPrz_CodiceTariffa
Prz_CodiceVarTariffa
Prz_CodiceFasciaTariff...
RecapitoRec_CodiceAnagrafica
Rec_CodiceIndRecapito
Rec_recapitoAttivo
Rec_DataInizio
Rec_DataFine
RecapitoTerziRtz_CodiceAnagrafica
Rtz_CodiceTerzi
ResidenzaRes_CodiceAnagrafica
Res_codiceIndResidenza
Res_ResidenzaAttiva
Res_DataInizio
Res_DataFine
ScontoSco_Codice
StatoAnaFattSaf_CodiceFattura
Saf_CodiceResidenza
Saf_CodiceRecapito
Saf_CodiceAnaTerzi
Saf_CodiceDomiciliazione
Saf_CodiceAnagrafica
StradarioStr_Codice
Str_CodiceComune
Str_Descrizione
TariffaTar_Codice
Tar_CodiceAlgoritmo
TrattamentoEconomicoTra_Codice
Tra_CodiceCliente
Tra_CodiceTariffa
Tra_CodiceSconto
ValiditaTariffaPvt_CodiceTariffa
Pvt_CodicePeriodoVali...
ValoreClienteVlc_CodiceCliente
Vlc_CodiceTariffa
Vlc_CodiceValore
Vlc_Valore
ValoreFattVcf_CodiceFattura
Vcf_CodiceCliente
Vcf_CodiceTariffa
Vcf_CodiceValore
Vcf_Valore
71
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
72
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.
73
Vw_ValContrFatt
Utilizzata per esporre in fattura lo stato contrattuale fatturato di interesse. Realizzata con
le tabelle Tariffa, ValoreFatt e Codici.
4.4. La Logica di Business
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
74
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
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.
75
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
if @ConsumoMaxFascia <= @zPrz_LimiteSuperiore
76
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:--
77
--
********************************************************************
-- 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
78
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;
79
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
80
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.
81
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/
82
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
83