Difference between revisions of "Man Tecnico:Modulo per la gestione del personale"

From CDG Wiki
Jump to navigation Jump to search
Line 116: Line 116:
  
 
=Modello Classi=
 
=Modello Classi=
== class CarrieraPersonale==
+
== class CarrieraPersonale extends Entity==
 
''Rappresenta una posizione di carriera di un dipendente.''
 
''Rappresenta una posizione di carriera di un dipendente.''
 
*Attributi
 
*Attributi
:*public $id;
+
:*protected static $tablename = "carriera";
:*public $matricola_personale;
 
:*public $id_tipo_contratto;
 
:*public $id_qualifica_interna;
 
:*public $id_rapporto_lavoro;
 
:*public $perc_rapporto_lavoro;
 
:*public $posizione_organizzativa;
 
:*public $data_inizio;
 
:*public $data_fine;
 
  
 
*Metodi
 
*Metodi
:*public function __construct($id=null)
+
:*public static function getAll($where=array(), $order=array(array("fieldname"=>"matricola_personale", "direction"=>"ASC"),array("fieldname"=>"data_inizio", "direction"=>"DESC")))
::''Costruttore. Se id diverso da null vengono valorizzati gli attributi con quelli del record della tabella "carriera" con ID = parametro.''
 
:*public static function getAll ($filters=array())
 
 
::''Viene restituito un array di istanze della classe, corrispondenti a tutti i record della tabella "carriera". 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.''
 
::''Viene restituito un array di istanze della classe, corrispondenti a tutti i record della tabella "carriera". 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 function update()
 
:*public function update()
Line 139: Line 129:
 
::''Eliminazione del record della tabella "carriera" corrispondente all'istanza dell'oggetto.''
 
::''Eliminazione del record della tabella "carriera" corrispondente all'istanza dell'oggetto.''
  
== class CdcPersonale==
+
== class CdcPersonale extends Entity==
 
''Rappresenta una distribuzione delle teste (associazione cdc - personale).''
 
''Rappresenta una distribuzione delle teste (associazione cdc - personale).''
 
*Attributi
 
*Attributi
:*public $id;
+
:*protected static $tablename = "cdc_personale";
:*public $matricola_personale;
 
:*public $codice_cdc;
 
:*public $percentuale;
 
:*public $data_inizio;
 
:*public $data_fine;
 
  
 
*Metodi
 
*Metodi
:*public function __construct($id=null)
+
:*public static function getAll($where=array(), $order=array(array("fieldname"=>"matricola_personale", "direction"=>"ASC"), array("fieldname"=>"percentuale", "direction"=>"DESC"), array("fieldname"=>"codice_cdc", "direction"=>"ASC")))
::''Costruttore. Se id diverso da null vengono valorizzati gli attributi con quelli del record della tabella "cdc_personale" con ID = parametro.''
 
:*public static function getAll ($filters=array())
 
 
::''Viene restituito un array di istanze della classe, corrispondenti a tutti i record della tabella "cdc_personale". 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.''
 
::''Viene restituito un array di istanze della classe, corrispondenti a tutti i record della tabella "cdc_personale". 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 function update()
 
:*public function update()
Line 159: Line 142:
 
::''Eliminazione del record della tabella "cdc_personale" corrispondente all'oggetto.''
 
::''Eliminazione del record della tabella "cdc_personale" corrispondente all'oggetto.''
  
== class Personale==
+
== class Personale extends Entity==
 
''Rappresenta una persona fisica dipendente aziendale.''
 
''Rappresenta una persona fisica dipendente aziendale.''
 
*Attributi
 
*Attributi
:*public $id;
+
:*;
:*public $matricola;
 
:*public $cognome;
 
 
:*public $nome;
 
:*public $nome;
  
 
*Metodi
 
*Metodi
:*public function __construct($id=null)
 
::''Costruttore. Se id diverso da null vengono valorizzati gli attributi con quelli del record della tabella "personale" con ID = parametro.''
 
 
:*public static function factoryFromMatricola($matricola)
 
:*public static function factoryFromMatricola($matricola)
 
::''Costruttore da parametri differenti da ID. Viene istanziato un oggetto del tipo della classe utilzzando i parametri pasati per identificare univocamente il record.''
 
::''Costruttore da parametri differenti da ID. Viene istanziato un oggetto del tipo della classe utilzzando i parametri pasati per identificare univocamente il record.''
:*public static function getAll ($filters=array())
+
:* public static function getAll($where=array(), $order=array(array("fieldname"=>"cognome", "direction"=>"ASC"),array("fieldname"=>"nome", "direction"=>"ASC")))
 
::''Viene restituito un array di istanze della classe, corrispondenti a tutti i record della tabella "personale". 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.''
 
::''Viene restituito un array di istanze della classe, corrispondenti a tutti i record della tabella "personale". 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 function getCdcAfferenzaInData(TipoPianoCdr $tipo_piano_cdr, $date)
 
:*public function getCdcAfferenzaInData(TipoPianoCdr $tipo_piano_cdr, $date)

Revision as of 14:35, 21 December 2020

Introduzione

La “Gestione del Personale” è la parte del “Core” che si occupa di amministrare tutte le informazioni relative alle Risorse Umane necessarie al corretto funzionamento dell’applicativo, fornendo un’interfaccia per la gestione del personale della dirigenza e del comparto che presta la propria attività presso un Centro di responsabilità (CdR).

Tali informazioni consentono il riconoscimento dell’utente loggato e la sua associazione al dipendente aziendale, garantendo il collegamento con le funzionalità e i moduli applicativi ad esso dedicati in base alla sua posizione in azienda.

Analisi dei requisiti

Il personale della dirigenza e del comparto dell'ATS, di seguito denominato “risorse umane”, è elencato in un’anagrafica costituita da nome, cognome e numero di matricola; quest’ultima è utilizzata come identificativo univoco all'interno dell’azienda. In anagrafica è presente tutto il personale attualmente in servizio oltre ai dipendenti per cui il rapporto di lavoro è cessato.

Ogni dipendente è assegnato ad un Centro di Costo (CdC), di conseguenza la sua assegnazione al/i CdR viene derivata sulla base dell’afferenza del CdC di assegnazione al CdR. Il responsabile del dipendente infine viene identificato nel responsabile del CdR di afferenza. L’unica relazione specificata per la risorsa umana sarà quindi la sua assegnazione ad uno o più centri di costo.

Un dipendente può infatti afferire contemporaneamente a più Centri di Costo; tale assegnazione viene identificata da una percentuale che indica la quantità di tempo in cui è impiegato presso ognuno di questi e può variare nel tempo. Ad ogni dipendente sarà quindi associato uno storico costituito da una o più posizioni che riporteranno la data di inizio ed eventualmente di fine, il CdC di afferenza e la percentuale di assegnazione. La somma delle percentuali di afferenza di un dipendente ai CdC in un determinato periodo sarà sempre pari a 100. Se una risorsa umana non è caratterizzata da una posizione attiva significa che è cessato il rapporto di lavoro subordinato con ATS.

Lo storico delle assegnazioni viene chiamato “Distribuzione Teste”.

Ad ogni risorsa umana sono associate le informazioni di carriera, storicizzate nel tempo, che ne riassumono lo stato di servizio. Per ogni voce dello storico sono indicati il tipo di contratto, il tipo di rapporto di lavoro e la qualifica interna che fornisce anche informazioni sul ruolo e sul tipo di qualifica (Dirigenza / Comparto), nonché sull'eventuale posizione organizzativa prevista per la risorsa umana. Tutte questi dati sono codificati in tabelle specifiche che sarà necessario poter amministrare.

Tutti i dati relativi al personale vengono forniti dal Servizio Risorse Umane, si renderà quindi necessario un flusso continuo e aggiornato di informazioni al fine di popolare rapidamente e correttamente le anagrafiche.

La “Gestione del Personale” dovrà quindi prevedere l’amministrazione di tutte le seguenti informazioni, garantendo la possibilità di aggiungere e modificare i dati coerentemente con i vincoli di integrità stabiliti:

  • Anagrafica personale
    • Nome
    • Cognome
    • Matricola
  • Distribuzione teste
    • Matricola
    • Codice CdC
    • Percentuale
    • Data inizio
    • Data fine
  • Carriera
    • Matricola
    • Tipo contratto (riferimento a ID tabella supporto)
    • Qualifica interna (riferimento a ID tabella supporto)
    • Rapporto di lavoro (riferimento a ID tabella supporto)
    • Percentuale rapporto di lavoro
    • Posizione organizzativa Si / no
    • Data inizio
    • Data fine
  • Tabelle di supporto
    • Tipo contratto
      • ID
      • Descrizione
    • Qualifica interna
      • ID
      • Codice (facoltativo)
      • Descrizione
      • Dirigente / collaboratore
      • Ruolo (riferimento a ID tabella supporto)
    • Rapporto di lavoro
      • ID
      • Codice (facoltativo)
      • Descrizione
      • Part Time Si / No
    • Ruolo
      • ID
      • Descrizione

Descrizione delle funzionalità

Valutando quanto considerato nell’analisi dei requisiti, si definiscono le funzionalità che l’applicativo dovrà fornire all’utente per la Gestione del Personale.

Verrà prevista una tabella in cui saranno riportate le informazioni di un dipendente, visualizzate in ordine alfabetico/codice matricola

  • Cognome
  • Nome
  • Matricola

Cliccando sulla riga della tabella, sarà possibile visualizzare l’afferenza ai CdC e le informazioni di carriera della risorsa umana: tali informazioni saranno presentate in forma tabellare e riporteranno l’intero storico della risorsa umana, ordinato dalle posizioni più recenti a quelle meno recenti. Dalle tabelle sarà possibile variare le informazioni inserendo / modificando / eliminando i dati, rispettando i vincoli che verranno descritti in seguito. Verrà inoltre garantita una funzione per poter chiudere una posizione attiva ed aprirne contestualmente una nuova, per poter gestire in maniera semplice i cambi di afferenza ai CdC e quelli sulle posizioni di carriera.

Gli utenti Amministratori, inoltre, avranno a disposizione una sezione specifica per configurare le varie tabelle di supporto

  • Qualifica interna
  • Rapporto di lavoro
  • Ruolo
  • Tipologia di contratto

coerentemente con i vincoli specificati di seguito.

Vincoli

  • Tabelle di supporto
    • Se una voce di queste tabelle è utilizzata nella carriera di una persona, non è possibile modificarle e non è possibile eliminarla
  • Tabella principale
    • Matricola univoca
    • Eliminazione possibile solo se non presenti voci di carriera o afferenze ai CdC
    • Visualizzata anomalia se la somma delle percentuali delle posizioni attive è diferente dal 100%
    • Visualizzata anomalia se non è presente una voce di carriera attiva
  • Carriera
  • Non possono esistere due posizioni aperte o sovrapposte per uno stesso dipendente

Scelte implementative

Si decide di creare una nuova voce di menù “Gestione Personale” sotto la sezione “Azienda”, visualizzabile solamente dagli amministratori, coerentemente con quanto già previsto per la gestione dei piani CdR e delle anagrafiche.

La pagina principale sarà costituita da una Grid che visualizzerà l’elenco del personale ordinato per cognome con i Field “nome”, “cognome”, “matricola”. Verrà gestita con un evento l’attribuzione di una classe css specifica alla riga della Grid per evidenziare le anomalie. Cliccando su una riga della Grid verrà visualizzata in un dialog il Record di dettaglio della risorsa umana che oltre a nome, cognome e matricola del dipendente, presenterà due grid, una per l’afferenza ai CdC ed una per lo storico di carriera.

Da entrambe le Grid si raggiungeranno i Record specifici per l’inserimento / modifica / eliminazione / cambio posizione di afferenza e carriera (Button su ogni record con posizione attiva), coerentemente con i vincoli previsti (sia come visualizzazione in Grid che come vincoli sulle operazioni del Record).

La Grid delle afferenze ai Cdc presenterà i Field “Centro di Costo”, “Percentuale”, “Data Inizio” e “Data fine” mentre quella dello storico di carriera sarà costituita dai Field “Tipo contratto”, “Ruolo”, “Dirigente” (Si/no), “Qualifica Interna”, “Rapporto di lavoro” (fra parentesi “part time al “ [percentuale di part time] se campo part time = 1), “Posizione organizzativa” (Si / No).

Gli utenti Amministratori accederanno alla sezione di gestione delle tabelle di supporto tramite un’icona a forma di ingranaggio posta a lato del link per accedere alla sezione principale: da qui, tramite 4 tabs, potranno gestire la tabella d’interesse. La gestione è la medesima per ciascuna tabella di supporto: Grid che visualizza tutti i possibili valori e, cliccando su una singola riga, verrà offerta la possibilità di modificare od eliminare l’elemento selezionato tramite un Record. Nelle Grid è previsto anche un pulsante per l’inserimento di nuove voci.

Le operazioni elencate dovranno sottostare ai vincoli precedentemente indicati, gestiti in visualizzazione in Grid e come vincoli sulle operazioni nei Record.

Sarà mantenuta la funzionalità “Distribuzione teste” che presenterà la distribuzione teste in una data specifica per un tipo piano CdR selezionato, gestita tramite template per la selezione della data e del tipo di piano Cdr e una Grid per la visualizzazione dei dati. Nella Grid non verranno presentate le operazioni di eliminazione ed inserimento, sarà possibile però cliccare su ogni riga per visualizzare il dettaglio del dipendente, tramite un link alla pagina di dettaglio già implementata per “Gestione Personale”.

Modello ER

personale (ID, matricola, cognome, nome)

carriera (ID, matricola_personale, ID_tipo_contratto, ID_qualifica_interna, ID_rapporto_lavoro, perc_rapporto_lavoro, posizione_organizzativa, data_inizio date, data_fine date)

cdc_personale (ID, matricola_personale, codice_cdc, percentuale, data_inizio date, data_fine date)

qualifica_interna (ID, codice, descrizione, dirigente, ID_ruolo)

rapporto_lavoro (ID, codice, descrizione, part_time)

ruolo (ID, descrizione)

tipo_contratto (ID, descrizione)

Modello Classi

class CarrieraPersonale extends Entity

Rappresenta una posizione di carriera di un dipendente.

  • Attributi
  • protected static $tablename = "carriera";
  • Metodi
  • public static function getAll($where=array(), $order=array(array("fieldname"=>"matricola_personale", "direction"=>"ASC"),array("fieldname"=>"data_inizio", "direction"=>"DESC")))
Viene restituito un array di istanze della classe, corrispondenti a tutti i record della tabella "carriera". 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 function update()
Aggiornamento del record della tabella "carriera" corrispondente all'istanza dell'oggetto.
  • public function delete()
Eliminazione del record della tabella "carriera" corrispondente all'istanza dell'oggetto.

class CdcPersonale extends Entity

Rappresenta una distribuzione delle teste (associazione cdc - personale).

  • Attributi
  • protected static $tablename = "cdc_personale";
  • Metodi
  • public static function getAll($where=array(), $order=array(array("fieldname"=>"matricola_personale", "direction"=>"ASC"), array("fieldname"=>"percentuale", "direction"=>"DESC"), array("fieldname"=>"codice_cdc", "direction"=>"ASC")))
Viene restituito un array di istanze della classe, corrispondenti a tutti i record della tabella "cdc_personale". 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 function update()
Viene aggiornato il record nella tabella "cdc_personale" corrispondente all'oggetto. Gli attributi vengono salvati come valori dei campi corrispondenti.
  • public function delete()
Eliminazione del record della tabella "cdc_personale" corrispondente all'oggetto.

class Personale extends Entity

Rappresenta una persona fisica dipendente aziendale.

  • Attributi
  • public $nome;
  • Metodi
  • public static function factoryFromMatricola($matricola)
Costruttore da parametri differenti da ID. Viene istanziato un oggetto del tipo della classe utilzzando i parametri pasati per identificare univocamente il record.
  • public static function getAll($where=array(), $order=array(array("fieldname"=>"cognome", "direction"=>"ASC"),array("fieldname"=>"nome", "direction"=>"ASC")))
Viene restituito un array di istanze della classe, corrispondenti a tutti i record della tabella "personale". 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 function getCdcAfferenzaInData(TipoPianoCdr $tipo_piano_cdr, $date)
Restituisce un array con i CdC d'afferenza di un dipendente alla data per un tipo piano passati come parametri.
  array("cdc_personale" => CdcPersonale, 
     "cdc" => Cdc);
  • public function getCdrAfferenzaInData(TipoPianoCdr $tipo_piano_cdr, $date)
Restituisce un array di array contententi CdR di afferenza e peso totale su CdC, ordinati per livello gerarchico.
  array("cdc_personale" => CdcPersonale, 
     "cdc" => Cdc);
  • public function getCdrUltimaAfferenza(TipoPianoCdr $tipo_piano_cdr, AnnoBudget $anno = null)
Restituisce un array di array con gli ultimi CdR al quale il dipendente risulta afferente. Viene restituito un array di array contententi CdR e peso totale su CdR. Se viene passato l'anno come parametro, il metodo restituisce l'ultimo CdR di afferenza nell'anno
  array("cdc_personale" => CdcPersonale, 
     "cdc" => Cdc);
  • public function getCarriera($data=null)
Restituisce un array di array contenente gli eventi di carriera del dipendente, attualizzata alla data considerata nel caso venga passata come parametro.
  • public function getCdrResponsabilitaAnno(AnnoBudget $anno, TipoPianoCdr $tipo_piano = null)
Restituisce un array di array con i CdR di responsabilità diretta in un anno di budget (anche su piani CdR differenti).
  array(
     "piano" => PianoCdr, 
     "cdr" => Cdr
  );
  • public function getCdrResponsabilitaPiano(PianoCdr $piano_cdr, DateTime $data_riferimento)
Restituisce un array di array con i CdR di responsabilità diretta in uno specifico piano dei CdR.
  array( 
     "cdr" => Cdr
  );
  • function getCdrVisibiliPianoCdr(PianoCdr $piano_cdr, DateTime $date)
Restituisce un array con tutti i CdR visibili dal dipendente in un determinato piano cdr in una data specifica, passati come parametro.
  array(
     "cdr" => Cdr,
     "livello" => Cdr->getLivelloGerarchico(),
  );
  • public function isAttivoInData ($date)
Restituisce true se il dipendente risulta attivo in azienda nella data passata come parametro.
  • public function isAttivoAnno (AnnoBudget $anno)
Restituisce true se il dipendente risulta attivo in azienda nell'anno passato come parametro.

class QualificaInterna

Rappresenta la qualifica interna aziendale.

  • Attributi
  • public $id;
  • public $codice;
  • public $decrizione;
  • public $dirigente;
  • public $id_ruolo;
  • Metodi
  • public function __construct($id=null)
Costruttore. Se id diverso da null vengono valorizzati gli attributi con quelli del record della tabella "qualifica_interna" con ID = parametro.
  • public static function getAll ($filters=array())
Viene restituito un array di istanze della classe, corrispondenti a tutti i record della tabella "qualifica_interna". 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.

class RapportoLavoro

Rappresenta il rapporto di lavoro.

  • Attributi
  • public $id;
  • public $codice;
  • public $decrizione;
  • public $part_time;
  • Metodi
  • public function __construct($id=null)
Costruttore. Se id diverso da null vengono valorizzati gli attributi con quelli del record della tabella "rapporto_lavoro" con ID = parametro.
  • public static function getAll ($filters=array())
Viene restituito un array di istanze della classe, corrispondenti a tutti i record della tabella "rapporto_lavoro". 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.

class Ruolo

Rappresenta il ruolo.

  • Attributi
  • public $id;
  • public $decrizione;
  • Metodi
  • public function __construct($id=null)
Costruttore. Se id diverso da null vengono valorizzati gli attributi con quelli del record della tabella "ruolo" con ID = parametro.
  • public static function getAll ($filters=array())
Viene restituito un array di istanze della classe, corrispondenti a tutti i record della tabella "ruolo". 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.

class TipoContratto

Rappresenta il tipo contratto.

  • Attributi
  • public $id;
  • public $decrizione;
  • Metodi
  • public function __construct($id=null)
Costruttore. Se id diverso da null vengono valorizzati gli attributi con quelli del record della tabella "tipo_contratto" con ID = parametro.
  • public static function getAll ($filters=array())
Viene restituito un array di istanze della classe, corrispondenti a tutti i record della tabella "tipo_contratto". 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.



Torna all'Indice del Manuale Tecnico