Man Tecnico:Modulo per la gestione delle anagrafiche

From CDG Wiki
Jump to navigation Jump to search

Introduzione

La sezione “Anagrafica”, sottomenù di “Azienda”, fornisce una interfaccia che consente agli Amministratori la configurazione delle anagrafiche relative ai Responsabili CdR, ai CdR ed ai CdC.

Analisi dei requisiti

La gestione dei piani CdR permette la definizione di più dimensioni sulle quali definire una struttura aziendale (tipi piani CdR), risulta necessario prevedere un meccanismo che permetta di centralizzare le informazioni relative ai CdR per mantenere un’anagrafica unica per tutte le tipologie di piano garantendo così l’integrità dei dati. Le informazioni descrittive dei CdR verranno quindi gestite tramite un’anagrafica centralizzata e potranno essere utilizzate nel piano CdR che si limiterà a definirne le relazioni gerarchiche. Per evitare che ogni variazione descrittiva o di tipologia del CdR implichi l’introduzione di un nuovo piano dei CdR occorre prevedere che l’anagrafica sia storicizzata ed indipendente dallo storico dei piani in modo di recuperare le informazioni corrette in una data specifica in maniera indipendente dal piano.

Le stesse considerazioni vengono effettuate per i CdC, anche in questo caso gestendo un’anagrafica unica e storicizzata sarà possibile centralizzare le informazioni descrittive e storicizzate garantendo coerenza e integrità dei dati rispetto alle varie dimensioni dei piani CdR.

Anche per la gestione dei responsabili, soggetti a continue variazioni, si ritiene opportuno gestire uno storico separato rispetto a quello dei piani CdR per evitare che ad ogni cambiamento risulti necessario definire ed introdurre un nuovo piano.

L’anagrafica dei Responsabili CdR dovrà consentire di collegare la matricola di una persona al CdR di cui è responsabile, definendo un periodo di validità tramite intervallo di date: in questo modo sarà possibile risalire al responsabile corretto durante la consultazione dell’applicativo in una data specifica.

L’anagrafica dei CdR dovrà consentire di definire l’insieme dei CdR utilizzabili dall’applicativo; la definizione avviene specificando il codice del CdR, la descrizione, l’abbreviazione, la tipologia (gestita dinamicamente tramite apposita tabella di supporto) e, come per l’anagrafica dei Responsabili CdR, un periodo di validità tramite intervallo date: in questo modo sarà possibile selezionare l’anagrafica corretta durante la consultazione dell’applicativo in una data specifica.

L’anagrafica dei CdC dovrà consentire la definizione dell’insieme dei CdC utilizzabili dall’applicativo; la definizione avverrà specificando il codice del CdC, la descrizione, l’abbreviazione e, come per le altre anagrafiche, un periodo di validità tramite intervallo date: in questo modo sarà possibile selezionare l’anagrafica corretta durante la consultazione dell’applicativo in una data specifica.

Descrizione delle funzionalità

Valutando quanto considerato nell’analisi dei requisiti si definiscono le funzionalità che l’applicativo dovrà fornire all’utente per la gestione delle anagrafiche.

Selezionando la voce di menù viene presentata una pagina con tabs (una per ogni anagrafica); selezionando la tab di interesse (di default è l’anagrafica dei responsabili) viene mostrata una tabella contenente lo storico, ordinando i record prima in ordine alfabetico/codice e successivamente per periodo di validità (dal più recente al più lontano).

Le operazioni possibili saranno le medesime:

  • Inserimento di una nuova anagrafica;
  • Modifica di un’anagrafica;
  • Eliminazione di un’anagrafica.

Tali operazioni saranno soggette a vincoli, diversi a seconda dell’anagrafica che si sta analizzando.

Anagrafica Responsabili CdR – Vincoli

Di seguito i vincoli relativi alla gestione dell’anagrafica dei Responsabili CdR

  • Inserimento e modifica
    • Matricola, codice_cdr e data inizio obbligatori
    • Verifica che l’eventuale data chiusura sia successiva e non uguale alla data inizio
    • Impedire due periodi di validità sovrapposti sullo stesso codice CdR (il codice CdR, per un periodo di validità, può avere SOLO un responsabile)
    • La data di fine validità deve essere successiva rispetto alla data definizione del POAS (temporaneo o introdotto non ha importanza) più recente in cui è il CdR dell’anagrafica
    • (STAND-BY) Impedire utilizzo di matricole (quindi persone) non attive/esistenti in anagrafica personale
    • (STAND-BY) Capire come gestire responsabile su CdR radice che deve risultare sempre presente (ipotesi: action personalizzata che, automaticamente, aggiorna la data di fine validità del responsabile attuale ed inserisce automaticamente un nuovo responsabile)
  • Modifica ed Eliminazione
    • Impedire modifica di Responsabili che non hanno più un intervallo di validità

Anagrafica CdR – Vincoli

Di seguito i vincoli relativi alla gestione dell’anagrafica dei CdR

  • Inserimento
    • Verificare univocità codice–periodo validità(non sovrapposto)
  • Modifica
    • Impedire modifica della data di introduzione di CdR
    • La data di fine validità deve essere successiva rispetto alla data definizione del POAS (temporaneo o introdotto non ha importanza) più recente in cui è il CdR dell’anagrafica
    • Impedire la modifica del tipo CdR di CdR appartenente a POAS (ovvero, esiste una relazione su tabella cdr) [anagrafica CdR non ancora utilizzata]
  • Eliminazione
    • Impedire eliminazione di CdR con relazione su tabella cdr

Anagrafica CdC – Vincoli

Di seguito i vincoli relativi alla gestione dell’anagrafica dei CdC

  • Inserimento
    • Impedire due periodi di validità sovrapposti per uno stesso CdC
  • Modifica
    • La data di fine validità deve essere successiva rispetto alla data definizione del POAS (temporaneo o introdotto non ha importanza) più recente in cui è il CdR dell’anagrafica
  • Eliminazione
    • Impedire eliminazione di CdC appartenenti a CdR di POAS
    • (STAND-BY) Impedire eliminazione se ho delle teste associate al CdC: test di eliminazione Cdc con una testa associata NON ha corrotto il modulo ‘Distribuzione teste’; anche l’applicativo, testato in maniera random, sembra non aver risentito dell’eliminazione

Scelte implementative

Alla luce delle considerazioni fatte si delineano le scelte implementative.

La gestione completa dell’anagrafica è affidata ad un’unica pagina che, tramite tabs, permetterà di scegliere l’anagrafica di interesse; l’anagrafica di default è quella dei Responsabili CdR. La gestione a tabs verrà implementata tramite il sistema templating del framework.

La tab selezionata mostrerà la grid contenete lo storico dell’anagrafica selezionata, i dati sono ordinati in ordine alfabetico partendo dal periodo di validità più recente; la grid presenta anche una finestra di ricerca.

La grid consente di inserire un nuovo elemento nell’anagrafica e di modificare, tramite click sulla riga, l’elemento d’interesse. Le modifiche saranno salvate solo se rispetteranno i vincoli definiti in fase di analisi.

L’obiettivo ultimo è quello di sviluppare un componente flessibile e non rigido rispetto ai moduli (es progetti, obiettivi, valutazioni, ecc…). Proprio per questo motivo alcune informazioni aggiuntive, ad esempio controlli sui moduli in cui l’elemento è coinvolto, sono demandati ai moduli stessi piuttosto che al core dell’applicativo.

La modifica dei campi “Descrizione” ed “Abbreviazione”, ove prevista, è sempre consentita.

Modello ER

anagrafica_cdc (ID, codice, descrizione, abbreviazione, data_introduzione date, data_termine date)

anagrafica_cdr (ID, codice, descrizione, abbreviazione, ID_tipo_cdr, data_introduzione date)

responsabile_cdr (ID, matricola_responsabile, codice_cdr, data_inizio, data_fine)

Modello Classi

class AnagraficaCdc extends Entity

Rappresenta una voce dell'anagrafica CdC.

  • Attributi
  • protected static $tablename = "anagrafica_cdc";
  • Metodi
  • public static function factoryFromCodice($codice, DateTime $date)
Costruttore da parametri differenti da ID. Viene istanziato un oggetto del tipo della classe utilzzando i parametri passati per identificare univocamente il record.
  • public static function getAnagraficaInData (DateTime $date)
Restituisce tutti i record dell'anagrafica attivi in una data specifica passata come parametro.
  • public static function getAnagraficaAnno (AnnoBudget $anno)
Restituisce tutti i record dell'anagrafica attivi in un anno di budget specifico passato come parametro.

class AnagraficaCdr

Rappresenta una voce dell'anagrafica CdR.

  • Attributi
  • public $id;
  • public $codice;
  • public $descrizione;
  • public $abbreviazione;
  • public $id_tipo_cdr;
  • public $data_introduzione;
  • public $data_termine;
  • Metodi
  • public function __construct($id=null)
Costruttore. Se id diverso da null vengono valorizzati gli attributi con quelli del record della tabella "anagrafica_cdr" con ID = parametro.
  • public static function factoryFromCodice($codice, DateTime $date)
Costruttore da parametri differenti da ID. Viene istanziato un oggetto del tipo della classe utilzzando i parametri passati per identificare univocamente il record.
  • public static function getAll ($filters=array())
Viene restituito un array di istanze della classe, corrispondenti a tutti i record della tabella "anagrafica_cdr". Il parametro $filters è un array di array associativi "campo_db"=>valore che permette di limitare i risultati ai soli elementi corrispondenti alle condizioni impostate nel parametro che vengono applicati alla query di recupero dei dati.
  • public static function getAnagraficaInData (DateTime $date)
Restituisce tutti i record dell'anagrafica attivi in una data specifica passata come parametro.
  • public static function getAnagraficaAnno (AnnoBudget $anno)
Restituisce tutti i record dell'anagrafica attivi in un anno di budget specifico passato come parametro.
  • public static function isCdrInInterval($codice_cdr, DateTime $date_start, DateTime $date_end)
Restituisce true se è presente almeno un'anagrafica CdR con codice passato come parametro nell'intervallo temporale definito dalle date passate come parametro.;

class ResponsabileCdr

Rappresenta una posizione di responsabilità sul CdR.

  • Attributi
  • public $id;
  • public $matricola_responsabile;
  • public $codice_cdr;
  • public $data_inizio;
  • public $data_fine;
  • public $id_personale;
  • public $cognome;
  • public $nome;
  • public $useSql;
  • Metodi
  • public function __construct($id=null)
Costruttore. Se id diverso da null vengono valorizzati gli attributi con quelli del record della tabella "responsabile_cdr" con ID = parametro.. Vengono inoltre popolati gli attributi "id_personale", "cognome", "nome" da "personale". Nel caso in cui $useSql = true i dati vengono ricavati dall'oggetto globale invece che da db.
  • public static function factoryFromCodice($codice_cdr, DateTime $date)
Costruttore da parametri differenti da ID. Viene istanziato un oggetto del tipo della classe utilzzando i parametri passati per identificare univocamente il record.
  • public static function getAll ($filters=array())
Viene restituito un array di istanze della classe, corrispondenti a tutti i record della tabella "responsabile_cdr". Il parametro $filters è un array di array associativi "campo_db"=>valore che permette di limitare i risultati ai soli elementi corrispondenti alle condizioni impostate nel parametro che vengono applicati alla query di recupero dei dati.
  • public static function getResponsabiliCdrInData(DateTime $date)
Restituisce tutti i record dell'anagrafica attivi in una data specifica passata come parametro.
  • public static function getResponsabiliCdrAnno(AnnoBudget $anno)
Restituisce tutti i record dell'anagrafica attivi in un anno di budget specifico passato come parametro.
  • public static function getResponsabiliCdrCessatiInAnno(AnnoBudget $anno, $matricola = null)
Rrestituisce i dipendenti che in un anno di budget hanno terminato il proprio ruolo di responsabile (ultima posizione di responsabilità nell'anno)