Elaborato Tesi

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Elaborato Tesi - Presentation Transcript

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

    + guest9039ebaguest9039eba Nominate

    custom

    475 views, 0 favs, 0 embeds more stats

    Elaborato Tesi

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 475
      • 475 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 7
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Tags