La base dati di PyPaPi

Su PostgreSQL

Questo documento contiene tutto il necessario per creare gli oggetti del database PyPaPi Postgres per mezzo di script inclusi nel testo reST (vedi indice degli script in ordine alfabetico) e di un opportuno Makefile.

Nel testo è inclusa una documentazione di massima sulle relazioni e sui vincoli implementati negli oggetti del database.

Indice dei contenuti

Definizione del database

Ruoli

Distinguiamo le seguenti figure che necessiteranno di accedere alle informazioni contenute nel database:

amministratore
dispone di tutti i permessi, su tutte le tabelle; in particolare è l'unico a poter inserire nuovi utenti e associarli agli uffici.
modellatore iter procedurale
chi di fatto progetta e mantiene un certo iter procedurale
istruttore della pratica
chi usa un certo iter per istruire una nuova pratica
protocollatore
utente che può inserire protocolli per conto del proprio sportello
anagrafiche
chi agisce anche in modifica sugli elementi dell'anagrafica soggetti

Domini

Per definire uniformemente le caratteristiche dei campi che accolgono i dati nel database vengono utilizzati i seguenti domini.

Elenco dei domini utilizzati nel database:

nome tipo uso
boolean_t boolean default 'f' Usato per i valori Vero/Falso.
cap_t char(5) Codice CAP.
codicefiscale_t char(16) Codice fiscale.
date_t date Per le date.
flag_t char(1) Per le flag di un carattere (tipo il sesso).
integer_t integer Numero intero.
largeid_t integer Rappresenta un ID univoco di un record.
longstring_t varchar(100) Descrizione lunga. UNICODE
partitaiva_t char(11) Partita IVA.
pathname_t varchar(128) Path di un file.
provincia_t char(2) Sigla provincia.
remark_t text Usato per le note in genere. È un testo di lunghezza arbitraria. UNICODE
shortstring_t varchar(50) Stringa di medie dimensioni. UNICODE
smallid_t smallint Rappresenta un ID univoco di un record, per tabelle di piccole dimensioni.
smallint_t smallint Intero di piccole dimensioni.
stringid_t varchar(15) Usato per i codici alfanumerici.
timestamp_t timestamp with time zone Per gli istanti (data + ora).
tinystring_t varchar(25) Stringa di piccole dimensioni. UNICODE
url_t varchar(128) URLs/Emails
username_t varchar(25) Per i nomi degli utenti del database.
hash_t varchar(40) Impronta SHA.
real_t real Numero floating-point.
catastale_t varchar(4) Codice catastale dei Comuni

Queste istruzioni devono essere eseguite subito dopo la creazione del database (vedi script Abilita plpgsql).

Creazione dei dominii usati dalle tabelle

Script Dominii

dipende da
Script Abilita plpgsql
create domain boolean_t as boolean default 'f'
;;
create domain cap_t as char(5)
;;
create domain codicefiscale_t as char(16)
;;
create domain date_t as date
;;
create domain flag_t as char(1)
;;
create domain integer_t as integer
;;
create domain largeid_t as integer
;;
create domain longstring_t as varchar(100)
;;
create domain partitaiva_t as char(11)
;;
create domain pathname_t as varchar(128)
;;
create domain provincia_t as char(2)
;;
create domain remark_t as text
;;
create domain shortstring_t as varchar(50)
;;
create domain smallid_t as smallint
;;
create domain smallint_t as smallint
;;
create domain stringid_t as varchar(15)
;;
create domain timestamp_t as timestamp with time zone
;;
create domain tinystring_t as varchar(25)
;;
create domain username_t as varchar(25)
;;
create domain url_t as varchar(128)
;;
create domain hash_t as varchar(40)
;;
create domain real_t as real
;;
create domain catastale_t as varchar(4)

Utility

Questo file contiene alcune utili funzioni.

Verifica utente in gruppo

dipende da
Script Dominii
create function check_utenteingruppo(name, varchar)
returns boolean_t as '
declare
  username alias FOR $1;
  group alias FOR $2;
begin
  if exists (select * from pg_roles where rolname = username and
               group = ANY(ARRAY(select groname from pg_group where oid = ANY(grolist)))) then
    return TRUE;
  else
    return FALSE;
  end if;
end;
' language plpgsql;

Verifica utente in ufficio

dipende da
Script Dominii
create function check_utenteinufficio(name, smallid_t)
returns boolean_t as '
declare
  username alias FOR $1;
  idufficio alias FOR $2;
begin
  if exists (select * from anagrafiche.utentiufficio uu
               join anagrafiche.utenti as ut on ut.idutente = uu.idutente
             where ut.login = username
               and uu.idufficio = idufficio limit 1) then
    return TRUE;
  else
    return FALSE;
  end if;
end;
' language plpgsql;

Verifica utente in ufficio con flag

dipende da
Script Dominii
create function check_utenteflaginufficio(name, varchar, smallid_t)
returns boolean_t as '
declare
  username alias FOR $1;
  flag alias FOR $2;
  idufficio alias FOR $3;
  r record;
begin
  for r in execute ''select count(*) as ok from anagrafiche.utentiufficio uu''
                || '' join anagrafiche.utenti as ut on ut.idutente = uu.idutente''
                || '' where ut.login = '''''' || username || ''''''''
                || '' and uu.'' || flag || '' = TRUE''
                || '' and uu.idufficio = '' || idufficio loop
    if r.ok > 0 then
      return TRUE;
    else
      return FALSE;
    end if;
  end loop;
  return FALSE;
end;
' language plpgsql;

Verifica utente in ufficio referente

dipende da
Script Dominii
create function check_utenteinreferente(name, stringid_t)
returns boolean_t as '
declare
  username alias FOR $1;
  iddocumento alias FOR $2;
  r record;
begin
  for r in execute ''select count(*) as ok from protocollo.referentiprotocollo rp''
                || '' join anagrafiche.utentiufficio as uu on rp.idufficio = uu.idufficio''
                || '' join anagrafiche.utenti as ut on ut.idutente = uu.idutente''
                || '' where rp.iddocumento = '''''' || iddocumento || ''''''''
                || '' and ut.login = '''''' || username || '''''''' loop
    if r.ok > 0 then
      return TRUE;
    else
      return FALSE;
    end if;
  end loop;
  return FALSE;
end;
' language plpgsql;

Verifica utente in ufficio referente con flag

dipende da
Script Dominii
create function check_utenteflaginreferente(name, varchar, stringid_t, boolean)
returns boolean_t as '
declare
  sqlstring varchar;
  username alias FOR $1;
  flag alias FOR $2;
  iddocumento alias FOR $3;
  principale alias FOR $4;
  r record;
begin
  sqlstring := ''select count(*) as ok from protocollo.referentiprotocollo rp''
                || '' join anagrafiche.utentiufficio as uu on rp.idufficio = uu.idufficio''
                || '' join anagrafiche.utenti as ut on ut.idutente = uu.idutente''
                || '' where rp.iddocumento = '''''' || iddocumento || '''''''';
  if principale = TRUE then
    sqlstring := sqlstring || '' and rp.progressivo = 1'';
  end if;
  sqlstring := sqlstring || '' and uu.'' || flag || '' = TRUE''
                         || '' and ut.login = '''''' || username || '''''''';
  for r in execute sqlstring loop
    if r.ok > 0 then
      return TRUE;
    else
      return FALSE;
    end if;
  end loop;
  return FALSE;
end;
' language plpgsql;

Verifica protocollo convalidato

dipende da
Script Dominii
create function check_protocolloconvalidato(stringid_t)
returns boolean_t as '
declare
  iddocumento alias FOR $1;
begin
  if exists (select * from protocollo.protocolliutente p
             where p.iddocumento = iddocumento
               and p.convalida = TRUE) then
    return TRUE;
  else
    return FALSE;
  end if;
end;
' language plpgsql;

Verifica protocollo annullato

dipende da
Script Dominii
create function check_protocolloannullato(stringid_t)
returns boolean_t as '
declare
  iddocumento alias FOR $1;
begin
  if exists (select * from protocollo.protocolliutente p
             where p.iddocumento = iddocumento
               and p.annullato = TRUE) then
    return TRUE;
  else
    return FALSE;
  end if;
end;
' language plpgsql;

Tabelle del database

Tabelle del database

Tabelle di anagrafica

Le tabelle sono raggruppate nello schema anagrafiche:

Anagrafiche

create schema anagrafiche
;;
grant all privileges on schema anagrafiche to group amministratore
;;
grant usage on schema anagrafiche to public

Anagrafiche.Condizioni

Anagrafica delle condizioni (o domande) di apertura di sottoprocedimenti o di attivazione/inserimento di attività, modelli, allegati (dalla tabella lista_controllo). Tali domande vengono proposte all'utente al momento dell'apertura della pratica. L'utente può decidere di rispondere subito a tutto oppure di rinviare la risposta di una o più domande.

Informazioni sui singoli campi

IDCondizione
Identificativo della condizione/domanda
Descrizione
Domanda che viene visualizzata. Il linguaggio con cui si pone la domanda dovrebbe essere il più comprensibile al cittadino medio (limitato uso di tecnicismi), per un futuro servizio utilizzabile dal cittadino di apertura della pratica con istanza e composizione interattiva del modello di richiesta tramite web.
Tipo
La domanda viene proposta per iter procedurale e/o pratica ('I'=iter procedurale, 'P'=pratica, 'E'=entrambi)
TipoIstanza
Utilizzato per automazione; tipo di richiesta (istanza) effettuata dal cittadino. (0=denuncia, 1=dichiara, 2=chiede rilascio autorizzazione, 3=chiede rilascio concessione, 4=chiede rilascio nulla osta)
ParoleChiave
Termini concettualmente collegati per una ricerca più ampia
IDContesto
Contesto in cui tale domanda è appropriata; utile una fase di definizione dell'iter procedurale come filtro per la ricerca delle domande da associare al procedimento o alle azioni
Spiegazione
Descrizione del significato della domanda

Generatore Anagrafiche.Condizioni

dipende da
Script Anagrafiche
create sequence Anagrafiche.Gen_IDCondizione

Anagrafiche.Condizioni

dipende da
create table Anagrafiche.Condizioni
(
 IDCondizione smallid_t not null,
 Descrizione remark_t,
 Tipo flag_t,
 TipoIstanza smallint_t,
 ParoleChiave longstring_t,
 IDContesto stringid_t,
 Spiegazione remark_t,

 constraint PK_Condizioni primary key (IDCondizione)
) inherits (TimeStamped)

Chiavi esterne

FK Anagrafiche.Condizioni->Anagrafiche.Contesti

dipende da
alter table Anagrafiche.Condizioni
       add constraint fk_C_IDContesto foreign key (IDContesto)
           references Anagrafiche.Contesti (IDContesto)
                      on update cascade

Aggiornamento timestamp dei record

Inserimento record Anagrafiche.Condizioni

dipende da
create function Anagrafiche.inizializza_condizioni()
returns trigger as '
begin
  if new.IDCondizione is NULL or new.IDCondizione = 0 then
    new.IDCondizione = nextval(''Anagrafiche.Gen_IDCondizione'');
  end if;
  return new;
end;
' language plpgsql;

create trigger trg_ins_init_condizioni
  before insert on Anagrafiche.Condizioni
    for each row execute procedure Anagrafiche.inizializza_condizioni();

create trigger trg_ins_ts_p_condizioni
  before insert on Anagrafiche.Condizioni
    for each row execute procedure inizializza_timestamp();

Aggiornamento timestamp Anagrafiche.Condizioni

dipende da
Script Anagrafiche.Condizioni
create trigger trg_upd_ts_p_condizioni
  before update on Anagrafiche.Condizioni
    for each row execute procedure aggiorna_timestamp();

Permessi di accesso

Permessi di accesso a Anagrafiche.Condizioni

dipende da
Script Anagrafiche.Condizioni
grant all privileges on Anagrafiche.Condizioni to group amministratore
;;
grant select,insert,update,delete on Anagrafiche.Condizioni to group modellatore
;;
grant select,insert on Anagrafiche.Condizioni to group istruttore
;;
grant select on Anagrafiche.Condizioni to public
;;
grant all privileges on Anagrafiche.Gen_IDCondizione to group amministratore
;;
grant all privileges on Anagrafiche.Gen_IDCondizione to group modellatore
;;
grant all privileges on Anagrafiche.Gen_IDCondizione to group istruttore

Anagrafiche.Contesti

Anagrafica dei contesti, utilizzati in fase di definizione dell'iter procedurale come filtro per la ricerca delle condizioni da associare.

Informazioni sui singoli campi

IDContesto
Identificativo del contesto
Descrizione
Descrizione del contesto.

Anagrafiche.Contesti

dipende da
create table Anagrafiche.Contesti
(
 IDContesto stringid_t not null,
 Descrizione longstring_t,

 constraint PK_Contesti primary key (IDContesto)
) inherits (TimeStamped)

Aggiornamento timestamp dei record

Inserimento record Anagrafiche.Contesti

dipende da
Script Anagrafiche.Contesti
create trigger trg_ins_ts_p_contesti
  before insert on Anagrafiche.Contesti
    for each row execute procedure inizializza_timestamp();

Aggiornamento timestamp Anagrafiche.Contesti

dipende da
Script Anagrafiche.Contesti
create trigger trg_upd_ts_p_contesti
  before update on Anagrafiche.Contesti
    for each row execute procedure aggiorna_timestamp();

Permessi di accesso

Permessi di accesso a Anagrafiche.Contesti

dipende da
Script Anagrafiche.Contesti
grant all privileges on Anagrafiche.Contesti to group amministratore
;;
grant select,insert,update,delete on Anagrafiche.Contesti to group modellatore
;;
grant select on Anagrafiche.Contesti to public

Anagrafiche.Azioni

Le azioni sono una sorta di "micro programmi", composti da una serie ordinata di operazioni.

Alcune azioni sono di setup: non sono pensate per andare a costituire la checklist, ma per compiere le operazioni di inizializzazione dell'iter della pratica, come ad esempio inserire nelle fasi corrette le azioni "standard".

Informazioni sui singoli campi

IDAzione
Identificativo univoco dell'azione
Descrizione
Descrizione dell'azione
Note
Dettaglio descrittivo dell'azione
Setup
Flag che indica l'azione come azione di setup: questo tipo di azioni è utilizzabile solo nell'iter procedurale, e non nella checklist.

Generatore Anagrafiche.IDAzione

dipende da
Script Anagrafiche
create sequence Anagrafiche.Gen_IDAzione

Anagrafiche.Azioni

dipende da
create table Anagrafiche.Azioni
(
 IDAzione smallid_t not null,
 Descrizione longstring_t,
 Note remark_t,
 Setup boolean_t,

 constraint PK_Azione primary key (IDAzione)
) inherits (TimeStamped)

Aggiornamento timestamp dei record

Inserimento record Anagrafiche.Azioni

dipende da
Script Anagrafiche.Azioni
create function Anagrafiche.inizializza_azioni()
returns trigger as '
begin
  if new.IDAzione is NULL or new.IDAzione = 0 then
    new.IDAzione = nextval(''Anagrafiche.Gen_IDAzione'');
  end if;
  return new;
end;
' language plpgsql;

create trigger trg_ins_ts_init_azioni
  before insert on Anagrafiche.Azioni
    for each row execute procedure Anagrafiche.inizializza_azioni();

create trigger trg_ins_ts_p_azioni
  before insert on Anagrafiche.Azioni
    for each row execute procedure inizializza_timestamp();

Aggiornamento timestamp Anagrafiche.Azioni

dipende da
Script Anagrafiche.Azioni
create trigger trg_upd_ts_p_azioni
  before update on Anagrafiche.Azioni
    for each row execute procedure aggiorna_timestamp();

Permessi di accesso

Permessi di accesso a Anagrafiche.Azioni

dipende da
Script Anagrafiche.Azioni
grant all privileges on Anagrafiche.Azioni to group amministratore
;;
grant select,insert,update,delete on Anagrafiche.Azioni to group modellatore
;;
grant select,insert on Anagrafiche.Azioni to group istruttore
;;
grant select on Anagrafiche.Azioni to public
;;
grant all privileges on Anagrafiche.Gen_IDAzione to group amministratore
;;
grant all privileges on Anagrafiche.Gen_IDAzione to group modellatore
;;
grant all privileges on Anagrafiche.Gen_IDAzione to group istruttore
Esecuzione delle azioni

Per esecuzione di una certa azione si intende mettere in pratica ciascuna delle operazioni associate ad una determinata azione, nel contesto di un certo iter procedurale e possibilmente di una determinata pratica.

Viene svolta da una stored procedure, che sostanzialmente esegue una istruzione di questo tipo:

execute procedure
   Procedimenti.Operazione_CODICE (IDAzione,   // azione di riferimento
                                   Esito,      // esito/risposta
                                   PI,         // eventuale parametro intero
                                   PS,         // eventuale parametro stringa
                                   IDIter,     // iter procedurale
                                   IDPratica); // eventuale pratica

per ciascuna operazione associata all'azione, dove CODICE è il codice univoco associato all'operazione.

Procedura per l'esecuzione delle azioni

dipende da
create or replace function Procedimenti.EseguiOperazioniAzione(smallid_t,
                                                               smallid_t,
                                                               stringid_t,
                                                               flag_t)
returns void as '
declare
  execopz text;
  p1 text;
  p2 text;
  idp text;
  opz record;
begin
  for opz in select o.codice, oa.parametro1, oa.parametro2
             from Anagrafiche.OperazioniAzione oa
               join Anagrafiche.Operazioni o on o.idoperazione = oa.idoperazione
             where oa.idazione = $1
             order by oa.progressivo, oa.idoperazione
  loop
    if opz.parametro1 is NULL then
      p1 := ''NULL'';
    else
      p1 := cast(opz.parametro1 as text);
    end if;
    if opz.parametro2 is NULL then
      p2 := ''NULL'';
    else
      p2 := cast(opz.parametro2 as text);
    end if;
    if $3 is NULL then
      idp := ''NULL'';
    else
      idp := $3;
    end if;
    execopz := ''select procedimenti.operazione_'' || opz.codice ||
               ''('' ||
                 ''cast('' || $1 || '' as smallid_t)'' || '','' ||
                 ''cast('' || quote_literal($4) || '' as flag_t)'' || '','' ||
                 ''cast('' || p1 || '' as integer_t)'' || '','' ||
                 ''cast('' || p2 || '' as integer_t)'' || '','' ||
                 ''cast('' || $2 || '' as smallid_t)'' || '','' ||
                 ''cast('' || idp || '' as stringid_t)'' ||
               '')'';
    execute execopz;
  end loop;
  return;
end
' language plpgsql;

Permessi di accesso a Procedimenti.EseguiOperazioniAzione

dipende da
Script Procedura per l'esecuzione delle azioni
grant all privileges on function Procedimenti.EseguiOperazioniAzione(smallid_t, smallid_t, stringid_t, flag_t) to group amministratore
;;
grant execute on function Procedimenti.EseguiOperazioniAzione(smallid_t, smallid_t, stringid_t, flag_t) to group modellatore
;;
grant execute on function Procedimenti.EseguiOperazioniAzione(smallid_t, smallid_t, stringid_t, flag_t) to group istruttore

Anagrafiche.Fasi

Anagrafica delle fasi (o stati) che può assumere una generica pratica dall'apertura alla sua archiviazione. L'elenco delle fasi che assume una determinata categoria di pratiche è definito all'interno dell'iter procedurale (vedi fasi dell'iter procedurale).

Informazioni sui singoli campi

IDFase
Identificativo univoco della fase
Descrizione
Descrizione
Esclusiva
Solo l'ufficio specificato può assegnare tale fase ad una pratica
IDUfficio
Ufficio responsabile di questa fase
Istruttoria
In tale fase l'ufficio prevede l'istruttoria della pratica

Generatore Anagrafiche.IDFase

dipende da
Script Anagrafiche
create sequence Anagrafiche.Gen_IDFase

Anagrafiche.Fasi

dipende da
create table Anagrafiche.Fasi
(
 IDFase smallid_t not null,
 Descrizione longstring_t,
 Esclusiva boolean_t,
 IDUfficio smallid_t,
 Istruttoria boolean_t,

 constraint PK_Fasi primary key (IDFase)
) inherits (TimeStamped)

Chiavi esterne

FK Anagrafiche.Fasi->Anagrafiche.Uffici

dipende da
alter table Anagrafiche.Fasi
       add constraint fk_AF_IDUfficio foreign key (IDUfficio)
           references Anagrafiche.Uffici (IDUfficio)
                      on update cascade

Aggiornamento timestamp dei record

Inserimento record Anagrafiche.Fasi

dipende da
create function Anagrafiche.inizializza_fasi()
returns trigger as '
begin
  if new.IDFase is NULL or new.IDFase = 0 then
    new.IDFase = nextval(''Anagrafiche.Gen_IDFase'');
  end if;
  return new;
end;
' language plpgsql;

create trigger trg_ins_init_fasi
  before insert on Anagrafiche.Fasi
    for each row execute procedure Anagrafiche.inizializza_fasi();

create trigger trg_ins_ts_a_fasi
  before insert on Anagrafiche.Fasi
    for each row execute procedure inizializza_timestamp();

Aggiornamento timestamp Anagrafiche.Fasi

dipende da
Script Anagrafiche.Fasi
create trigger trg_upd_ts_a_fasi
  before update on Anagrafiche.Fasi
    for each row execute procedure aggiorna_timestamp();

Permessi di accesso

Permessi di accesso a Anagrafiche.Fasi

dipende da
Script Anagrafiche.Fasi
grant all privileges on Anagrafiche.Fasi to group amministratore
;;
grant select,insert,update,delete on Anagrafiche.Fasi to group modellatore
;;
grant select,insert on Anagrafiche.Fasi to group istruttore
;;
grant select on Anagrafiche.Fasi to public
;;
grant all privileges on Anagrafiche.Gen_IDFase to group amministratore
;;
grant all privileges on Anagrafiche.Gen_IDFase to group modellatore
;;
grant all privileges on Anagrafiche.Gen_IDFase to group istruttore

Dati di base

Anagrafiche.Fasi di base

dipende da
Script Permessi di accesso a Anagrafiche.Fasi
insert into Anagrafiche.Fasi (idfase, descrizione)
  values (nextval('Anagrafiche.Gen_IDFase'), 'Verifica completezza documentazione')
;;
insert into Anagrafiche.Fasi (idfase, descrizione)
  values (nextval('Anagrafiche.Gen_IDFase'), 'Istruttoria')
;;
insert into Anagrafiche.Fasi (idfase, descrizione)
  values (nextval('Anagrafiche.Gen_IDFase'), 'Approvata')
;;
insert into Anagrafiche.Fasi (idfase, descrizione)
  values (nextval('Anagrafiche.Gen_IDFase'), 'Rilasciata')
;;
insert into Anagrafiche.Fasi (idfase, descrizione)
  values (nextval('Anagrafiche.Gen_IDFase'), 'Conclusa')
;;

Anagrafiche.Norme

Anagrafica normative attinenti gli iter procedurali (inserimento ed aggiornamento a cura degli utenti).

Informazioni sui singoli campi

IDNorma
Identificativo univoco della norma
Descrizione
Descrizione breve o titolo della norma
Path
Path del file di dettaglio (permessi solo file con estensione html, txt, rtf, pdf)
IDTipologiaNorma
Tipo di norma, usato per ricerche. ('C'=comunale, 'P'=provinciale, 'R'=regionale, 'N'=nazionale, 'E'=europea)

Generatore Anagrafiche.IDNorma

dipende da
Script Anagrafiche
create sequence Anagrafiche.Gen_IDNorma

Anagrafiche.Norme

dipende da
create table Anagrafiche.Norme
(
 IDNorma smallid_t not null,
 Descrizione longstring_t,
 Path pathname_t,
 IDTipologiaNorma flag_t,

 constraint PK_Norme primary key (IDNorma)
) inherits (TimeStamped)

Chiavi esterne

FK Anagrafiche.Norme->Anagrafiche.TipologieNorma

dipende da
alter table Anagrafiche.Norme
       add constraint fk_N_IDTipologiaNorma foreign key (IDTipologiaNorma)
           references Anagrafiche.TipologieNorma (IDTipologiaNorma)
                      on update cascade

Aggiornamento timestamp dei record

Inserimento record Anagrafiche.Norme

dipende da
Script Anagrafiche.Norme
create trigger trg_ins_ts_p_norme
  before insert on Anagrafiche.Norme
    for each row execute procedure inizializza_timestamp();

Aggiornamento timestamp Anagrafiche.Norme

dipende da
Script Anagrafiche.Norme
create trigger trg_upd_ts_p_norme
  before update on Anagrafiche.Norme
    for each row execute procedure aggiorna_timestamp();

Permessi di accesso

Permessi di accesso a Anagrafiche.Norme

dipende da
Script Anagrafiche.Norme
grant all privileges on Anagrafiche.Norme to group amministratore
;;
grant select,insert,update,delete on Anagrafiche.Norme to group modellatore
;;
grant select,insert on Anagrafiche.Norme to group istruttore
;;
grant select on Anagrafiche.Norme to public
;;
grant all privileges on Anagrafiche.Gen_IDNorma to group amministratore
;;
grant all privileges on Anagrafiche.Gen_IDNorma to group modellatore
;;
grant all privileges on Anagrafiche.Gen_IDNorma to group istruttore

Anagrafiche.Operazioni

Le operazioni rappresentano genericamente una certa modifica a un procedimento, come l'attivazione di certe fasi, l'inserimento di un sottoprocedimento...

Informazioni sui singoli campi

IDOperazione
Identificativo univoco dell'operazione
Descrizione
Descrizione dell'operazione
IDTipologiaOperazione
Tipologia di operazione, per agevolarne la selezione
Codice
Una stringa di lettere e numeri, univoca tra le operazioni, usata per determinare la procedura che esegue questa operazione

Parametri

Ogni operazione può accettare dei parametri, di tipo integer, che interpreterà a suo piacimento. Per agevolare la loro composizione l'operazione può dichiarare l'interfaccia che in qualche modo caratterizza i valori.

Nel caso dell'operazione INS_AZ_PRATICA ad esempio, che accetta due parametri, uno a indicare quale azione inserire, l'altro per la fase, si avrà che InterfacciaParametro1="IAzione" e InterfacciaParametro2="IFase"

IDInterfacciaParametro1 e IDInterfacciaParametro2
Interfacce che rappresentano le particolari entità associate ai due parametri. NULL indica che il parametro non è richiesto.

Generatore Anagrafiche.IDOperazione

dipende da
Script Anagrafiche
create sequence Anagrafiche.Gen_IDOperazione

Anagrafiche.Operazioni

dipende da
create table Anagrafiche.Operazioni
(
 IDOperazione smallid_t not null,
 Descrizione remark_t,
 IDTipologiaOperazione smallid_t,
 Codice stringid_t not null,
 IDInterfacciaParametro1 smallid_t,
 IDInterfacciaParametro2 smallid_t,

 constraint PK_Operazioni primary key (IDOperazione),
 constraint UK_Operazioni unique (Codice)
) inherits (TimeStamped)

Chiavi esterne

FK Anagrafiche.Operazioni->Anagrafiche.TipologieOperazione

dipende da
alter table Anagrafiche.Operazioni
       add constraint fk_OPZ_IDTipologiaOperazione foreign key (IDTipologiaOperazione)
           references Anagrafiche.TipologieOperazione (IDTipologiaOperazione)
                      on update cascade

FK Anagrafiche.Operazioni->PyPaPi.InterfacciaTabelle

dipende da
alter table Anagrafiche.Operazioni
       add constraint fk_OPZ_IDInterfacciaParametro1 foreign key (IDInterfacciaParametro1)
           references PyPaPi.InterfacciaTabelle (IDInterfacciaTabella)
                      on update cascade
;;
alter table Anagrafiche.Operazioni
       add constraint fk_OPZ_IDInterfacciaParametro2 foreign key (IDInterfacciaParametro2)
           references PyPaPi.InterfacciaTabelle (IDInterfacciaTabella)
                      on update cascade

Aggiornamento timestamp dei record

Inserimento record Anagrafiche.Operazioni

dipende da
create function Anagrafiche.inizializza_operazioni()
returns trigger as '
begin
  if new.IDOperazione is NULL or new.IDOperazione = 0 then
    new.IDOperazione = nextval(''Anagrafiche.Gen_IDOperazione'');
  end if;
  return new;
end;
' language plpgsql;

create trigger trg_ins_init_operazioni
  before insert on Anagrafiche.Operazioni
    for each row execute procedure Anagrafiche.inizializza_operazioni();

create trigger trg_ins_ts_p_operazioni
  before insert on Anagrafiche.Operazioni
    for each row execute procedure inizializza_timestamp();

Aggiornamento timestamp Anagrafiche.Operazioni

dipende da
Script Anagrafiche.Operazioni
create trigger trg_upd_ts_p_operazioni
  before update on Anagrafiche.Operazioni
    for each row execute procedure aggiorna_timestamp();

Permessi di accesso

Permessi di accesso a Anagrafiche.Operazioni

dipende da
Script Anagrafiche.Operazioni
grant all privileges on Anagrafiche.Operazioni to group amministratore
;;
grant select on Anagrafiche.Operazioni to public

Dati di base

Anagrafiche.Operazioni di base

dipende da
insert into Anagrafiche.Operazioni (codice, descrizione, idtipologiaoperazione)
       values ('NOOP', 'Operazione che non fa un bel nulla, di test', 1)
;;
insert into Anagrafiche.Operazioni (codice, descrizione, idtipologiaoperazione,
                                    idinterfacciaparametro1, idinterfacciaparametro2)
       values ('INS_AZ_PRATICA', 'Inserimento nuova azione in Iter Pratica', 2,
               (select idinterfacciatabella
                from PyPaPi.InterfacciaTabelle
                where Interfaccia = 'pypapi.db.interfaces.anagrafiche.IAzione'),
               (select idinterfacciatabella
                from PyPaPi.InterfacciaTabelle
                where Tabella = 'anagrafiche.fasi'))
Esecuzione delle operazioni

L'esecuzione di una qualsiasi operazione è delegata a una stored procedure. La regola è semplice: il campo Codice dell'operazione viene usato per formare il nome della procedura che verrà eseguita. Questo dettaglio è codificato nella procedura usata per l'esecuzione delle azioni.

Operazione NOOP

È una operazione che non fa nulla, usata per i test, e utile come sinossi. I parametri sono:

idazione
l'ID dell'azione che viene eseguita
esito
l'esito della condizione
parametro1 e parametro2
parametri provenienti dagli omonimi campi della tabella Anagrafiche.OperazioniAzione
iditerprocedurale
l'ID dell'iter procedurale
idpratica
l'ID della pratica

Esecuzione operazione NOOP

dipende da
Script Procedimenti
create or replace function Procedimenti.Operazione_NOOP(smallid_t,
                                                        flag_t,
                                                        integer_t,
                                                        integer_t,
                                                        smallid_t,
                                                        largeid_t)
returns void as '
begin
  raise notice ''NOOP(idazione=%,esito=%,parametro1=%,parametro2=%,iterprocedurale=%,idpratica=%)'',
               $1, $2, $3, $4, $5, $6;
end
' language plpgsql;
Operazione INS_AZ_PRATICA

Se esito è S, inserisce l'azione indicata da parametro1 nell'iter della pratica, nella fase indicata da parametro2

Esecuzione operazione INS_AZ_PRATICA

dipende da
create or replace function Procedimenti.Operazione_INS_AZ_PRATICA(smallid_t,
                                                                  flag_t,
                                                                  integer_t,
                                                                  integer_t,
                                                                  smallid_t,
                                                                  stringid_t)
returns void as '
declare
  v_idfip largeid_t;
  v_idfase smallid_t;
begin
  if $2 = ''S'' then
    v_idfase = cast($4 as smallid_t);
    v_idfip = null;
    select fip.IDFaseIterProcedurale
    into v_idfip
    from Procedimenti.FasiIterProcedurale fip
    where fip.IDIterProcedurale = $5
      and fip.IDPratica = $6
      and fip.IDFase = v_idfase;
    if v_idfip is null then
      v_idfip = nextval(''Procedimenti.Gen_IDFaseIterProcedurale'');
      insert into Procedimenti.FasiIterProcedurale (IDFaseIterProcedurale, IDIterProcedurale, IDPratica, IDFase)
             values (v_idfip, $5, $6, v_idfase);
    end if;
    insert into Procedimenti.AzioniIterProcedurale (IDFaseIterProcedurale, IDAzione)
           values (v_idfip, $3);
  end if;
return;
end
' language plpgsql;

Anagrafiche.OperazioniAzione

Ad ogni azione sono associate una o più operazioni da eseguire quando quella azione viene superata.

Informazione sui singoli campi

IDOperazioneAzione
Identificativo dell'operazione
IDAzione
Identificativo dell'azione di riferimento
Progressivo
Stabilisce l'ordine delle condizioni
IDOperazione
Operazione interessata
Parametro1 e Parametro2
Parametri usati nell'esecuzione dell'operazione: "rispondono" alle rispettive interfacce specificate nell'operazione.

Generatore Anagrafiche.OperazioniAzione

dipende da
Script Anagrafiche
create sequence Anagrafiche.Gen_IDOperazioneAzione

Anagrafiche.OperazioniAzione

dipende da
create table Anagrafiche.OperazioniAzione
(
 IDOperazioneAzione smallid_t not null,
 IDAzione smallid_t not null,
 Progressivo smallint_t not null default 0,
 IDOperazione smallid_t not null,
 Parametro1 integer_t,
 Parametro2 integer_t,

 constraint PK_OperazioniAzione primary key (IDOperazioneAzione)
) inherits(TimeStamped)

Chiavi esterne

FK Anagrafiche.OperazioniAzione->Anagrafiche.Azioni

dipende da
alter table Anagrafiche.OperazioniAzione
       add constraint fk_OA_IDAzione foreign key (IDAzione)
           references Anagrafiche.Azioni (IDAzione)
                      on update cascade

FK Anagrafiche.OperazioniAzione->Anagrafiche.Operazioni

dipende da
alter table Anagrafiche.OperazioniAzione
       add constraint fk_OA_IDCondizione foreign key (IDOperazione)
           references Anagrafiche.Operazioni (IDOperazione)
                      on update cascade

Aggiornamento timestamp dei record

Inserimento record Anagrafiche.OperazioniAzione

dipende da
create function Anagrafiche.inizializza_operazioniazione()
returns trigger as '
begin
  if new.IDOperazioneAzione is NULL or new.IDOperazioneAzione = 0 then
    new.IDOperazioneAzione = nextval(''Anagrafiche.Gen_IDOperazioneAzione'');
  end if;
  return new;
end;
' language plpgsql;

create trigger trg_ins_init_operazioniazione
  before insert on Anagrafiche.OperazioniAzione
    for each row execute procedure Anagrafiche.inizializza_operazioniazione();

create trigger trg_ins_ts_p_operazioniazione
  before insert on Anagrafiche.OperazioniAzione
    for each row execute procedure inizializza_timestamp();

Aggiornamento timestamp Anagrafiche.OperazioniAzione

dipende da
Script Anagrafiche.OperazioniAzione
create trigger trg_upd_ts_p_operazioniiazione
  before update on Anagrafiche.OperazioniAzione
    for each row execute procedure aggiorna_timestamp();

Permessi di accesso

Permessi di accesso a Anagrafiche.OperazioniAzione

dipende da
Script Anagrafiche.OperazioniAzione
grant all privileges on Anagrafiche.OperazioniAzione to group amministratore
;;
grant select,insert,update,delete on Anagrafiche.OperazioniAzione to group modellatore
;;
grant select on Anagrafiche.OperazioniAzione to group istruttore
;;
grant select on Anagrafiche.OperazioniAzione to public
;;
grant update on Anagrafiche.Gen_IDOperazioneAzione to group amministratore
;;
grant update on Anagrafiche.Gen_IDOperazioneAzione to group modellatore
;;
grant update on Anagrafiche.Gen_IDOperazioneAzione to group istruttore

Anagrafiche.Soggetti

Contiene elementi anagrafici relativi a persone, enti e aziende.

Informazioni sui singoli campi

IDSoggetto
Identificativo univoco del soggetto
Tipo
Tipo anagrafico rappresentato ('P'=persona, 'A'=azienda, 'E'=ente)
ChiaveMnemonica
Chiave di ricerca alternativa
CodiceFiscale
Codice fiscale
PartitaIVA
Partita IVA
Denominazione1
Prima riga di denominazione anagrafica Ente.
Denominazione2
Seconda riga di denominazione anagrafica Ente.
Denominazione3
Terza riga di denominazione anagrafica Ente.
Cognome
Cognome del soggetto Persona.
Nome
Nome del soggetto Persona.
RagioneSociale
Ragione sociale del soggetto Azienda.
Referente
Persona di riferimento (per enti e aziende)
IDSesso
Sesso del soggetto (solo per persona fisica)
ComuneNascita
Comune di nascita. Si tratta di una stringa perché l'anagrafica dei comuni catastali può perdere congruenza con il tempo, quindi va memorizzata la denominazione.
DataNascita
Data di nascita della persona.
DataCessazione
Data di cessazione dell'elemento anagrafico
DescrizioneCessazione
Note descrittive relative alla cessazione dell'elemento anagrafico.
Titolo
Titolo con cui ci si riferisce all'elemento anagrafico
Nick
Come il soggetto è detto "informalmente"
IndicePAO
Codice organizzazione per l'indice PA
IndicePAAOO
Codice area organizzativa omogenea per l'indice PA
IDAlboProfessionale
Tipo di albo a cui il soggetto (persona) è iscritto
ProvinciaAlbo
Provincia dell'albo a cui il soggetto è iscritto
NumeroIscrizioneAlbo
Numero di iscrizione del soggetto all'albo
Residente
La persona è residente
CollegamentoAnagrafe
ID numerico da utilizzare per l'integrazione con programmi di anagrafe

Generatore Anagrafiche.IDSoggetto

dipende da
Script Anagrafiche
create sequence Anagrafiche.Gen_IDSoggetto

Anagrafiche.Soggetti

dipende da
create table Anagrafiche.Soggetti
(
 IDSoggetto largeid_t not null,
 Tipo flag_t not null,
 ChiaveMnemonica shortstring_t,
 CodiceFiscale codicefiscale_t,
 PartitaIVA partitaiva_t,
 Denominazione1 longstring_t,
 Denominazione2 longstring_t,
 Denominazione3 longstring_t,
 Cognome shortstring_t,
 Nome shortstring_t,
 RagioneSociale longstring_t,
 Referente longstring_t,
 IDSesso flag_t,
 ComuneNascita longstring_t,
 DataNascita date_t,
 DataCessazione date_t,
 DescrizioneCessazione remark_t,
 Titolo tinystring_t,
 Nick tinystring_t,
 IDAlboProfessionale smallid_t,
 ProvinciaAlbo provincia_t,
 NumeroIscrizioneAlbo shortstring_t,
 IndicePAO tinystring_t,
 IndicePAAOO tinystring_t,
 Residente boolean_t,
 CodiceAnagrafe largeid_t,

 constraint PK_Soggetti primary key (IDSoggetto)
 --, constraint UK_Sogg_CF unique (CodiceFiscale, Tipo)
 --, constraint UK_Sogg_PIVA unique (PartitaIVA, Tipo)
) inherits (TimeStamped)

FK Anagrafiche.Soggetti->Anagrafiche.Sessi

dipende da
alter table Anagrafiche.Soggetti
       add constraint fk_AS_IDSesso foreign key (IDSesso)
           references Anagrafiche.Sessi (IDSesso)
                      on update cascade

FK Anagrafiche.Soggetti->Anagrafiche.AlbiProfessionali

dipende da
alter table Anagrafiche.Soggetti
       add constraint fk_AS_IDAlboProfessionale foreign key (IDAlboProfessionale)
           references Anagrafiche.AlbiProfessionali (IDAlboProfessionale)
                      on update cascade

Aggiornamento timestamp dei record

Inserimento record Anagrafiche.Soggetti

dipende da
create function Anagrafiche.inizializza_soggetti()
returns trigger as '
begin
  if new.IDSoggetto is NULL or new.IDSoggetto = 0 then
    new.IDSoggetto = nextval(''Anagrafiche.Gen_IDSoggetto'');
  end if;
  return new;
end;
' language plpgsql;

create function Anagrafiche.inizializza_websoggetto()
returns trigger as '
begin
  if not exists (select * from anagrafiche.websoggetto where idsoggetto=new.idsoggetto) then
    insert into anagrafiche.websoggetto (idsoggetto) values (new.idsoggetto);
  end if;
  return new;
end;
' language plpgsql;

create trigger trg_ins_init_soggetti
  before insert on Anagrafiche.Soggetti
    for each row execute procedure Anagrafiche.inizializza_soggetti();

create trigger trg_ins_init_websoggetto
  after insert on Anagrafiche.Soggetti
    for each row execute procedure Anagrafiche.inizializza_websoggetto();

create trigger trg_ins_ts_a_soggetti
  before insert on Anagrafiche.Soggetti
    for each row execute procedure inizializza_timestamp();

Aggiornamento timestamp Anagrafiche.Soggetti

dipende da
Script Anagrafiche.Soggetti
create trigger trg_upd_ts_a_soggetti
  before update on Anagrafiche.Soggetti
    for each row execute procedure aggiorna_timestamp();

Permessi di accesso

Permessi di accesso a Anagrafiche.Soggetti

dipende da
Script Anagrafiche.Soggetti
grant all privileges on Anagrafiche.Soggetti to group amministratore
;;
grant select,insert,update,delete on Anagrafiche.Soggetti to group anagrafiche
;;
grant select on Anagrafiche.Soggetti to public
;;
grant update on Anagrafiche.Gen_IDSoggetto to group amministratore
;;
grant update on Anagrafiche.Gen_IDSoggetto to group anagrafiche
Visibilità dei soggetti

I soggetti sono logicamente divisi in tre categorie: privati, aziende, enti. L'utente è chiamato ad operare principalmente su una sola categoria alla volta, per tramite di tre view predisposte per garantire l'accesso alla tabella dei soggetti.

Anagrafiche.Persone

dipende da
Script Anagrafiche.Soggetti
create view Anagrafiche.Persone as
  select s.IDSoggetto
       , s.Tipo
       , s.CodiceFiscale
       , s.Cognome
       , s.Nome
       , s.IDSesso
       , s.Titolo
       , s.Nick
       , s.IDAlboProfessionale
       , s.ProvinciaAlbo
       , s.NumeroIscrizioneAlbo
       , s.DataNascita
       , s.DataCessazione
       , s.DescrizioneCessazione
       , s.rec_creato
       , s.rec_creato_da
       , s.rec_modificato
       , s.rec_modificato_da
  from anagrafiche.soggetti as s
  where s.Tipo = 'P'
;;
create rule Persone_insert as on insert to Anagrafiche.Persone
do instead
  insert into Anagrafiche.Soggetti (IDSoggetto
                                  , Tipo
                                  , CodiceFiscale
                                  , Cognome
                                  , Nome
                                  , IDSesso
                                  , Titolo
                                  , Nick
                                  , IDAlboProfessionale
                                  , ProvinciaAlbo
                                  , NumeroIscrizioneAlbo
                                  , DataNascita
                                  , DataCessazione
                                  , DescrizioneCessazione
                                    )
  values (new.IDSoggetto
        , 'P'
        , new.CodiceFiscale
        , new.Cognome
        , new.Nome
        , new.IDSesso
        , new.Titolo
        , new.Nick
        , new.IDAlboProfessionale
        , new.ProvinciaAlbo
        , new.NumeroIscrizioneAlbo
        , new.DataNascita
        , new.DataCessazione
        , new.DescrizioneCessazione
          )
;;
create rule Persone_update as on update to Anagrafiche.Persone
do instead
  update Anagrafiche.Soggetti
  set IDSoggetto = new.IDSoggetto
    , CodiceFiscale = new.CodiceFiscale
    , Cognome = new.Cognome
    , Nome = new.Nome
    , IDSesso = new.IDSesso
    , Titolo = new.Titolo
    , Nick = new.Nick
    , IDAlboProfessionale = new.IDAlboProfessionale
    , ProvinciaAlbo = new.ProvinciaAlbo
    , NumeroIscrizioneAlbo = new.NumeroIscrizioneAlbo
    , DataNascita = new.DataNascita
    , DataCessazione = new.DataCessazione
    , DescrizioneCessazione = new.DescrizioneCessazione
  where
    IDSoggetto = old.IDSoggetto;
;;
create rule Persone_delete as on delete to Anagrafiche.Persone
do instead
  delete from Anagrafiche.Soggetti where IDSoggetto =
  old.IDSoggetto;

Permessi di accesso a Anagrafiche.Persone

dipende da
Script Anagrafiche.Persone
grant all privileges on Anagrafiche.Persone to group amministratore
;;
grant select,insert,update,delete on Anagrafiche.Persone to group anagrafiche
;;
grant select on Anagrafiche.Persone to public

Anagrafiche.Enti

dipende da
Script Anagrafiche.Soggetti
create view Anagrafiche.Enti as
  select s.IDSoggetto
       , s.Tipo
       , s.PartitaIVA
       , s.Denominazione1
       , s.Denominazione2
       , s.Denominazione3
       , s.Referente
       , s.IndicePAO
       , s.IndicePAAOO
       , s.DataNascita
       , s.DataCessazione
       , s.DescrizioneCessazione
       , s.rec_creato
       , s.rec_creato_da
       , s.rec_modificato
       , s.rec_modificato_da
  from anagrafiche.soggetti as s
  where s.Tipo = 'E'
;;
create rule Enti_insert as on insert to Anagrafiche.Enti
do instead
  insert into Anagrafiche.Soggetti (IDSoggetto
                                  , Tipo
                                  , PartitaIVA
                                  , Denominazione1
                                  , Denominazione2
                                  , Denominazione3
                                  , Referente
                                  , IndicePAO
                                  , IndicePAAOO
                                  , DataNascita
                                  , DataCessazione
                                  , DescrizioneCessazione
                                    )
  values (new.IDSoggetto
        , 'E'
        , new.PartitaIVA
        , new.Denominazione1
        , new.Denominazione2
        , new.Denominazione3
        , new.Referente
        , new.IndicePAO
        , new.IndicePAAOO
        , new.DataNascita
        , new.DataCessazione
        , new.DescrizioneCessazione
          )
;;
create rule Enti_update as on update to Anagrafiche.Enti
do instead
  update Anagrafiche.Soggetti
  set IDSoggetto = new.IDSoggetto
    , PartitaIVA = new.PartitaIVA
    , Denominazione1 = new.Denominazione1
    , Denominazione2 = new.Denominazione2
    , Denominazione3 = new.Denominazione3
    , Referente = new.Referente
    , IndicePAO = new.IndicePAO
    , IndicePAAOO = new.IndicePAAOO
    , DataNascita = new.DataNascita
    , DataCessazione = new.DataCessazione
    , DescrizioneCessazione = new.DescrizioneCessazione
  where
    IDSoggetto = old.IDSoggetto;
;;
create rule Enti_delete as on delete to Anagrafiche.Enti
do instead
  delete from Anagrafiche.Soggetti where IDSoggetto =
  old.IDSoggetto;

Permessi di accesso a Anagrafiche.Enti

dipende da
Script Anagrafiche.Enti
grant all privileges on Anagrafiche.Enti to group amministratore
;;
grant select,insert,update,delete on Anagrafiche.Enti to group anagrafiche
;;
grant select on Anagrafiche.Enti to public

Anagrafiche.Aziende

dipende da
Script Anagrafiche.Soggetti
create view Anagrafiche.Aziende as
  select s.IDSoggetto
       , s.Tipo
       , s.PartitaIVA
       , s.CodiceFiscale
       , s.RagioneSociale
       , s.Referente
       , s.DataNascita
       , s.DataCessazione
       , s.DescrizioneCessazione
       , s.rec_creato
       , s.rec_creato_da
       , s.rec_modificato
       , s.rec_modificato_da
  from anagrafiche.soggetti as s
  where s.Tipo = 'A'
;;
create rule Aziende_insert as on insert to Anagrafiche.Aziende
do instead
  insert into Anagrafiche.Soggetti (IDSoggetto
                                  , Tipo
                                  , PartitaIVA
                                  , CodiceFiscale
                                  , RagioneSociale
                                  , Referente
                                  , DataNascita
                                  , DataCessazione
                                  , DescrizioneCessazione
                                    )
  values (new.IDSoggetto
        , 'A'
        , new.PartitaIVA
        , new.CodiceFiscale
        , new.RagioneSociale
        , new.Referente
        , new.DataNascita
        , new.DataCessazione
        , new.DescrizioneCessazione
          )
;;
create rule Aziende_update as on update to Anagrafiche.Aziende
do instead
  update Anagrafiche.Soggetti
  set IDSoggetto = new.IDSoggetto
    , PartitaIVA = new.PartitaIVA
    , RagioneSociale = new.RagioneSociale
    , Referente = new.Referente
    , DataNascita = new.DataNascita
    , DataCessazione = new.DataCessazione
    , DescrizioneCessazione = new.DescrizioneCessazione
  where
    IDSoggetto = old.IDSoggetto;
;;
create rule Aziende_delete as on delete to Anagrafiche.Aziende
do instead
  delete from Anagrafiche.Soggetti where IDSoggetto =
  old.IDSoggetto;

Permessi di accesso a Anagrafiche.Aziende

dipende da
Script Anagrafiche.Aziende
grant all privileges on Anagrafiche.Aziende to group amministratore
;;
grant select,insert,update,delete on Anagrafiche.Aziende to group anagrafiche
;;
grant select on Anagrafiche.Aziende to public

Indici Anagrafiche.Soggetti

dipende da
Script Anagrafiche.Soggetti
create index idx_idsoggetto
  on anagrafiche.soggetti
  using btree
  (idsoggetto, tipo)
;;
create index idx_tipo
  on anagrafiche.soggetti
  using btree
  (tipo)
;;

Anagrafiche.Uffici

Anagrafica degli uffici (a volte denominati attribuzioni).

Informazioni sui singoli campi

IDUfficio
Identificativo univoco dell'ufficio
Descrizione
Descrizione dell'ufficio per visualizzazione all'interno del Comune (possibile presenza di abbreviazioni e/o termini tecnici)
Denominazione
Descrizione dell'ufficio ad uso del Comune (possibile presenza di abbreviazioni e/o termini tecnici)
IDSoggetto
Collegamento con la tabella Soggetti (con Tipo='E') per reperimento indirizzo e num. telefono di sedi distaccate (utile su sito internet come informazione per il pubblico)
email
Indirizzo email dell'ufficio (informazione che verrà riportata su sito web)
UfficioProtocollo
Flag che esprime il fatto che si tratti di un ufficio con competenze particolari nei confronti del protocollo.

Generatore Anagrafiche.IDUfficio

dipende da
Script Anagrafiche
create sequence Anagrafiche.Gen_IDUfficio

Anagrafiche.Uffici

dipende da
create table Anagrafiche.Uffici
(
 IDUfficio smallid_t not null,
 Descrizione longstring_t,
 Denominazione longstring_t,

 Sportello boolean_t,
 Referente boolean_t,
 Destinatario boolean_t,
 Custodia boolean_t,
 --Ric_mail boolean_t,

 PostaInterna boolean_t,
 VistaBilancio boolean_t,
 ApprovaDetermine boolean_t,
 UfficioAssessorato boolean_t,
 UfficioProtocollo boolean_t,
 ModificaSpeseContratto boolean_t,

 Archiviazione boolean_t,
 --ResponsabileUO boolean_t,
 Mittente boolean_t,

 IDSoggetto largeid_t,

 Email url_t,

 constraint PK_Uffici primary key (IDUfficio)
) inherits (TimeStamped)

Chiavi esterne

FK Anagrafiche.Uffici->Anagrafiche.Soggetti

dipende da
alter table Anagrafiche.Uffici
       add constraint fk_UF_Soggetto foreign key (IDSoggetto)
           references Anagrafiche.Soggetti (IDSoggetto)
                      on update cascade

Aggiornamento timestamp dei record

Inserimento record Anagrafiche.Uffici

dipende da
create function Anagrafiche.inizializza_uffici()
returns trigger as '
begin
  if new.IDUfficio is NULL or new.IDUfficio = 0 then
    new.IDUfficio = nextval(''Anagrafiche.Gen_IDUfficio'');
  end if;
  return new;
end;
' language plpgsql;

create trigger trg_ins_init_uffici
  before insert on Anagrafiche.Uffici
    for each row execute procedure Anagrafiche.inizializza_uffici();

create trigger trg_ins_ts_a_uffici
  before insert on Anagrafiche.Uffici
    for each row execute procedure inizializza_timestamp();

Aggiornamento timestamp Anagrafiche.Uffici

dipende da
Script Anagrafiche.Uffici
create trigger trg_upd_ts_a_uffici
  before update on Anagrafiche.Uffici
    for each row execute procedure aggiorna_timestamp();

Permessi di accesso

Permessi di accesso a Anagrafiche.Uffici

dipende da
Script Anagrafiche.Uffici
grant all privileges on Anagrafiche.Uffici to group amministratore
;;
grant select,insert,update,delete on Anagrafiche.Uffici to group modellatore
;;
grant select,insert on Anagrafiche.Uffici to group istruttore
;;
grant select on Anagrafiche.Uffici to public
;;
grant update on Anagrafiche.Gen_IDUfficio to group amministratore
;;
grant update on Anagrafiche.Gen_IDUfficio to group modellatore
;;
grant update on Anagrafiche.Gen_IDUfficio to group istruttore

Dati di base

Anagrafiche.Uffici di base

dipende da
Script Permessi di accesso a Anagrafiche.Uffici
insert into Anagrafiche.Uffici (idufficio, descrizione, ufficioprotocollo)
  values (nextval('Anagrafiche.Gen_IDUfficio'), 'Ufficio Protocollo', TRUE)
;;

Indici Anagrafiche.Uffici

dipende da
Script Anagrafiche.Uffici
create index idx_uffici_idufficio
  on anagrafiche.uffici
  using btree
  (idufficio)
;;

Anagrafiche.Utenti

Anagrafica degli utenti di PyPaPi. Ad ogni utente PyPaPi corrisponde un utente di Postgres, la cui creazione, elminiazione, e modifica di password è gestita da appositi trigger sulla tabella.

Anche l'associazione di un utente ad un gruppo Postgres è gestita in modo analogo sulle tabelle Anagrafiche.GruppiPg e Anagrafiche.GruppiPgUtente.

Informazioni sui singoli campi

IDUtente
Identificativo univoco numerico dell'utente
Login
identificativo (univoco) di logon dell'utente
Password
Password (attualmente inutilizzata)
Nominativo
Nominativo completo (cognome e nome) dell'utente
  • convalida, scanner, adm, segretario, sindaco, supervisore, posta_interna, gestore, esterno, lettura - particolari abilitazioni (o restrizioni come nel caso di esterno) gestite all'interno dell'applicazione in quanto comportano la possibilità di apertura di ulteriori finestre, menu oppure applicativi

Note

Il campo IDUtente (era cod_utente) è chiave primaria, e funge foreign key per le tabelle che relazionano con la tabella Utente.

Il campo Login (era id_utente) è il nick alfanumerico utilizzato in fase di login.

Non ancora implementati:

  • convalida, scanner, adm, segretario, sindaco, supervisore, posta_interna, gestore, esterno, lettura
  • particolari abilitazioni (o restrizioni come nel caso di esterno) gestite all'interno dell'applicazione in quanto comportano la possibilità di apertura di ulteriori finestre, menu oppure applicativi

Generatore Anagrafiche.IDUtente

dipende da
Script Anagrafiche
create sequence Anagrafiche.Gen_IDUtente

Anagrafiche.Utenti

dipende da
create table Anagrafiche.Utenti
(
 IDUtente smallid_t not null,
 Nominativo longstring_t,
 Login username_t not null,
 Password tinystring_t,

 constraint PK_Utenti primary key (IDUtente),
 constraint UK_Utenti_Login unique (Login)
) inherits (TimeStamped)

Aggiornamento timestamp dei record

Inserimento record Anagrafiche.Utenti

dipende da
Script Anagrafiche.Utenti
create function Anagrafiche.inizializza_utenti()
returns trigger as '
begin
  if new.IDUtente is NULL or new.IDUtente = 0 then
    new.IDUtente = nextval(''Anagrafiche.Gen_IDUtente'');
  end if;
  if not exists(SELECT * FROM pg_catalog.pg_user WHERE usename=new.Login) then
    execute ''CREATE USER '' || quote_ident(new.Login);
  end if;
  if new.Password is not NULL then
    execute ''ALTER USER '' || quote_ident(new.Login) ||
      '' WITH PASSWORD \'\''' || new.Password || ''\'\''';
  end if;
  new.Password = ''******'';
  return new;
end;
' language plpgsql;

create trigger trg_ins_ts_init_utenti
  before insert on Anagrafiche.Utenti
    for each row execute procedure Anagrafiche.inizializza_utenti();

create trigger trg_ins_ts_p_utenti
  before insert on Anagrafiche.Utenti
    for each row execute procedure inizializza_timestamp();

Aggiornamento record Anagrafiche.Utenti

dipende da
Script Anagrafiche.Utenti
create function Anagrafiche.aggiorna_utenti()
returns trigger as '
begin
  if new.Password is not NULL then
    execute ''ALTER USER '' || new.Login ||
      '' WITH PASSWORD \'\''' || quote_ident(new.Password) || ''\\'''';
  end if;
  return new;
end;
' language plpgsql;

create trigger trg_upd_a_utenti
  before update on Anagrafiche.Utenti
    for each row execute procedure Anagrafiche.aggiorna_utenti();

Cancellazione record Anagrafiche.Utenti

dipende da
Script Anagrafiche.Utenti
create function Anagrafiche.cancella_utenti()
returns trigger as '
begin
  execute ''DROP ROLE '' || old.login;
  return old;
end;
' language plpgsql;

create trigger trg_del_utenti
  before delete on Anagrafiche.Utenti
    for each row execute procedure Anagrafiche.cancella_utenti();

Aggiornamento timestamp Anagrafiche.Utenti

dipende da
Script Anagrafiche.Utenti
create trigger trg_upd_ts_p_utenti
  before update on Anagrafiche.Utenti
    for each row execute procedure aggiorna_timestamp();

Permessi di accesso

Permessi di accesso a Anagrafiche.Utenti

dipende da
Script Anagrafiche.Utenti
grant all privileges on Anagrafiche.Utenti to group amministratore
;;
grant all privileges on Anagrafiche.Gen_IDUtente to group amministratore
;;
grant select on Anagrafiche.Utenti to public

Dati di base

Anagrafiche.Utenti di base

dipende da
Script Permessi di accesso a Anagrafiche.Utenti
insert into Anagrafiche.Utenti (nominativo, login, password)
  values ('Utente amministratore', 'admin', 'pypapi')
;;
Modifica utente personale

Ogni utente autenticato deve avere la possibilità di modificare i dati relativi al proprio utente. Ciò viene garantito dalla vista ''UtenteAutenticato'', che conterrà ovviamente sempre un solo record.

Vista utente autenticato

dipende da
Script Anagrafiche.Utenti
create view Anagrafiche.UtenteAutenticato as
  select u.IDUtente
       , u.Nominativo
       , u.Login
       , u.Password
       , u.rec_creato
       , u.rec_creato_da
       , u.rec_modificato
       , u.rec_modificato_da
  from Anagrafiche.Utenti as u
  where Login = current_user
;;
create rule UtenteAutenticato_update as on update to Anagrafiche.UtenteAutenticato
do instead
  update Anagrafiche.Utenti
  set IDUtente = new.IDUtente
    , Nominativo = new.Nominativo
    , Login = new.Login
    , Password = new.Password
    , rec_creato = new.rec_creato
    , rec_creato_da = new.rec_creato_da
    , rec_modificato = new.rec_modificato
    , rec_modificato_da = new.rec_modificato_da
  where
    IDUtente = old.IDUtente;

Permessi di accesso a Anagrafiche.UtenteAutenticato

dipende da
Script Vista utente autenticato
   grant all privileges on Anagrafiche.UtenteAutenticato to group amministratore
   ;;
   grant select,update on Anagrafiche.UtenteAutenticato to public

Indici Anagrafiche.Utenti

dipende da
Script Anagrafiche.Utenti
create index idx_utenti_idutente
  on anagrafiche.utenti
  using btree
  (idutente)
;;
create index idx_utenti_login
  on anagrafiche.utenti
  using btree
  (login)
;;

Anagrafiche.UtentiUfficio

Tabella che contiene i permessi che l'utente ha per ogni ufficio in cui è stato inserito. I permessi sono di tipo SELECT, INSERT, UPDATE e DELETE su specifiche tabelle più altre abilitazioni gestite a livello applicativo.

Informazione sui singoli campi

IDUtenteUfficio
Identificativo numerico di questa associazione utente / ufficio
IDUtente
Identificativo univoco numerico dell'utente collegato all'ufficio
IDUfficio
Identificativo univoco numerico dell'ufficio a cui è collegato l'utente
Ospite
L'utente è solo ospite dell'ufficio.
Lista
L'utente può visualizzare la lista dei documenti dell'ufficio.
Visualizza
L'utente può visualizzare i documenti allegati.
Modifica
L'utente può modificare le pratiche associate all'ufficio.
Inserisce
L'utente può inserire nuove pratiche.
DaiPerLetto
L'utente può "dare per letto" un documento attribuito all'ufficio.
Riservato
L'utente può leggere i documenti riservati.
Consolida
L'utente può eseguire la fase di consolidamento dei dati.
IncaricatoProcedimenti
L'utente è l'incaricato dei procedimenti dell'ufficio. È il solo a poter modificare la lista degli utenti associati a un iter.

Generatore Anagrafiche.UtentiUfficio

dipende da
Script Anagrafiche
create sequence Anagrafiche.Gen_IDUtenteUfficio

Anagrafiche.UtentiUfficio

dipende da
create table Anagrafiche.UtentiUfficio
(
 IDUtenteUfficio largeid_t not null,
 IDUtente smallid_t not null,
 IDUfficio smallid_t not null,
 Ospite boolean_t,
 Lista boolean_t,
 Visualizza boolean_t,
 Modifica boolean_t,
 Inserisce boolean_t,
 DaiPerLetto boolean_t,
 Riservato boolean_t,
 Consolida boolean_t,
 IncaricatoProcedimenti boolean_t,

 constraint PK_UtentiUfficio primary key (IDUtenteUfficio),
 constraint UK_UtentiUfficio unique (IDUtente, IDUfficio)
) inherits(TimeStamped)

Chiavi esterne

FK Anagrafiche.UtentiUfficio->Anagrafiche.Utenti

dipende da
alter table Anagrafiche.UtentiUfficio
       add constraint fk_UU_IDUtente foreign key (IDUtente)
           references Anagrafiche.Utenti (IDUtente)
                      on update cascade

FK Anagrafiche.UtentiUfficio->Anagrafiche.Uffici

dipende da
alter table Anagrafiche.UtentiUfficio
       add constraint fk_UU_IDUfficio foreign key (IDUfficio)
           references Anagrafiche.Uffici (IDUfficio)
                      on update cascade

Aggiornamento timestamp dei record

Inserimento record Anagrafiche.UtentiUfficio

dipende da
Script Anagrafiche.UtentiUfficio
create function Anagrafiche.inizializza_utentiufficio()
returns trigger as '
begin
  if new.IDUtenteUfficio is NULL or new.IDUtenteUfficio = 0 then
    new.IDUtenteUfficio = nextval(''Anagrafiche.Gen_IDUtenteUfficio'');
  end if;
  return new;
end;
' language plpgsql;

create trigger trg_ins_ts_init_utentiufficio
  before insert on Anagrafiche.UtentiUfficio
    for each row execute procedure Anagrafiche.inizializza_utentiufficio();

create trigger trg_ins_ts_p_utentiufficio
  before insert on Anagrafiche.UtentiUfficio
    for each row execute procedure inizializza_timestamp();

Aggiornamento timestamp Anagrafiche.UtentiUfficio

dipende da
Script Anagrafiche.UtentiUfficio
create trigger trg_upd_ts_p_utentiufficio
  before update on Anagrafiche.UtentiUfficio
    for each row execute procedure aggiorna_timestamp();

Permessi di accesso

Permessi di accesso a Anagrafiche.UtentiUfficio

dipende da
Script Anagrafiche.UtentiUfficio
grant all privileges on Anagrafiche.UtentiUfficio to group amministratore
;;
grant all privileges on Anagrafiche.Gen_IDUtenteUfficio to group amministratore
;;
grant select on Anagrafiche.UtentiUfficio to public

Indici Anagrafiche.UtentiUfficio

dipende da
Script Anagrafiche.UtentiUfficio
create index idx_utentiufficio_idutente
  on anagrafiche.utentiufficio
  using btree
  (idutente)
;;
create index idx_utentiufficio_idufficio
  on anagrafiche.utentiufficio
  using btree
  (idufficio)
;;

Anagrafiche.TipologieOperazione

Anagrafica delle tipologie di operazione.

Informazioni sui singoli campi

IDTipologiaOperazione
Identificativo univoco di questa tipologia
Descrizione
Descrizione della tipologia

Generatore Anagrafiche.IDTipologiaOperazione

dipende da
Script Anagrafiche
create sequence Anagrafiche.Gen_IDTipologiaOperazione

Anagrafiche.TipologieOperazione

dipende da
create table Anagrafiche.TipologieOperazione
(
 IDTipologiaOperazione smallid_t not null,
 Descrizione longstring_t,

 constraint PK_TipologieOperazione primary key (IDTipologiaOperazione)
) inherits (TimeStamped)

Aggiornamento timestamp dei record

Inserimento record Anagrafiche.TipologieOperazione

dipende da
create function Anagrafiche.inizializza_tipologieoperazione()
returns trigger as '
begin
  if new.IDTipologiaOperazione is NULL or new.IDTipologiaOperazione = 0 then
    new.IDTipologiaOperazione = nextval(''Anagrafiche.Gen_IDTipologiaOperazione'');
  end if;
  return new;
end;
' language plpgsql;

create trigger trg_ins_init_tipologieoperazione
  before insert on Anagrafiche.TipologieOperazione
    for each row execute procedure Anagrafiche.inizializza_tipologieoperazione();

create trigger trg_ins_ts_a_tipologieoperazione
  before insert on Anagrafiche.TipologieOperazione
    for each row execute procedure inizializza_timestamp();

Aggiornamento timestamp Anagrafiche.TipologieOperazione

dipende da
Script Anagrafiche.TipologieOperazione
create trigger trg_upd_ts_a_tipologieoperazione
  before update on Anagrafiche.TipologieOperazione
    for each row execute procedure aggiorna_timestamp();

Permessi di accesso

Permessi di accesso a Anagrafiche.TipologieOperazione

dipende da
Script Anagrafiche.TipologieOperazione
grant all privileges on Anagrafiche.TipologieOperazione to group amministratore
;;
grant select on Anagrafiche.TipologieOperazione to public

Dati di base

Anagrafiche.TipologieOperazione di base

dipende da
Script Inserimento record Anagrafiche.TipologieOperazione
insert into Anagrafiche.TipologieOperazione (descrizione) values ('Operazioni test/debug')
;;
insert into Anagrafiche.TipologieOperazione (descrizione) values ('Operazioni setup pratica')

Anagrafiche.TipologieNorma

Anagrafica delle tipologie di norma: comunale, provinciale, regionale, nazionale, europea.

Informazioni sui singoli campi

IDTipologiaNorma
Identificativo univoco della tipologia di norma
Descrizione
Descrizione della tipologia di norma (comunale, provinciale, regionale, nazionale, europea)

Anagrafiche.TipologieNorma

dipende da
create table Anagrafiche.TipologieNorma
(
 IDTipologiaNorma flag_t not null,
 Descrizione longstring_t,

 constraint PK_TipologieNorma primary key (IDTipologiaNorma)
) inherits (TimeStamped)

Aggiornamento timestamp dei record

Inserimento record Anagrafiche.TipologieNorma

dipende da
Script Anagrafiche.TipologieNorma
create trigger trg_ins_ts_p_tipologienorma
  before insert on Anagrafiche.TipologieNorma
    for each row execute procedure inizializza_timestamp();

Aggiornamento timestamp Anagrafiche.TipologieNorma

dipende da
Script Anagrafiche.TipologieNorma
create trigger trg_upd_ts_p_tipologienorma
  before update on Anagrafiche.TipologieNorma
    for each row execute procedure aggiorna_timestamp();

Permessi di accesso

Permessi di accesso a Anagrafiche.TipologieNorma

dipende da
Script Anagrafiche.TipologieNorma
grant all privileges on Anagrafiche.TipologieNorma to group amministratore
;;
grant select,insert,update,delete on Anagrafiche.TipologieNorma to group modellatore
;;
grant select,insert on Anagrafiche.TipologieNorma to group istruttore
;;
grant select on Anagrafiche.TipologieNorma to public

Dati di base

Anagrafiche.TipologieNorma di base

dipende da
Script Permessi di accesso a Anagrafiche.TipologieNorma
insert into Anagrafiche.TipologieNorma (IDTipologiaNorma, Descrizione) values ('C', 'Comunale')
;;
insert into Anagrafiche.TipologieNorma (IDTipologiaNorma, Descrizione) values ('P', 'Provinciale')
;;
insert into Anagrafiche.TipologieNorma (IDTipologiaNorma, Descrizione) values ('R', 'Regionale')
;;
insert into Anagrafiche.TipologieNorma (IDTipologiaNorma, Descrizione) values ('N', 'Nazionale')

Anagrafiche.Titoli

Titoli a cui un soggetto è allegato ad un entità, ad esempio un protocollo.

Informazioni sui singoli campi

IDTitolo
Identificativo univoco del titolo
Descrizione
Descrizione breve del titolo
IDTipologiaTitolo

Definisce il ruolo che il soggetto collegato al protocollo avrà nella pratica in cui il protocollo è inserito.

P = persona interessata T = tecnico I = incaricato all'istruttoria R = responsabile della pratica

Generatore Anagrafiche.IDTitolo

dipende da
Script Anagrafiche
create sequence Anagrafiche.Gen_IDTitolo

Anagrafiche.Titoli

dipende da
create table Anagrafiche.Titoli
(
 IDTitolo smallid_t not null,
 Descrizione longstring_t,
 IDTipologiatitolo flag_t,

 constraint PK_Titoli primary key (IDTitolo)
) inherits (TimeStamped)

Chiavi esterne

FK Anagrafiche.Titoli->Anagrafiche.TipologieTitolo

dipende da
alter table Anagrafiche.Titoli
       add constraint fk_AT_IDTipologiaTitolo foreign key (IDTipologiaTitolo)
           references Anagrafiche.TipologieTitolo (IDTipologiaTitolo)
                      on update cascade

Aggiornamento timestamp dei record

Inserimento record Anagrafiche.Titoli

dipende da
Script Anagrafiche.Titoli
create function Anagrafiche.inizializza_titoli()
returns trigger as '
begin
  if new.IDTitolo is NULL or new.IDTitolo = 0 then
    new.IDTitolo = nextval(''Anagrafiche.Gen_IDTitolo'');
  end if;
  return new;
end;
' language plpgsql;

create trigger trg_ins_ts_init_titoli
  before insert on Anagrafiche.Titoli
    for each row execute procedure Anagrafiche.inizializza_titoli();

create trigger trg_ins_ts_p_titoli
  before insert on Anagrafiche.Titoli
    for each row execute procedure inizializza_timestamp();

Aggiornamento timestamp Anagrafiche.Titoli

dipende da
Script Anagrafiche.Titoli
create trigger trg_upd_ts_p_titoli
  before update on Anagrafiche.Titoli
    for each row execute procedure aggiorna_timestamp();

Permessi di accesso

Permessi di accesso a Anagrafiche.Titoli

dipende da
Script Anagrafiche.Titoli
grant all privileges on Anagrafiche.Titoli to group amministratore
;;
grant select on Anagrafiche.Titoli to public
;;
grant all privileges on Anagrafiche.Gen_IDTitolo to group amministratore

Anagrafiche.TipologieTitolo

Le tipologie di titolo definiscono i ruoli che ha un soggetto collegato ad un entità. Nel caso dei protocolli, ad esempio, definisce il ruolo che il soggetto avrà nella pratica in cui il protocollo è inserito

Informazioni sui singoli campo

IDTipologiaTitolo
Identificativo univoco della tipologia di titolo
Descrizione
Descrizione della tipologia di titolo

Anagrafiche.TipologieTitolo

dipende da
create table Anagrafiche.TipologieTitolo
(
 IDTipologiaTitolo flag_t not null,
 Descrizione longstring_t,

 constraint PKTipologieTitolo primary key (IDTIpologiaTitolo)
)

Permessi di accesso

Permessi di accesso a Anagrafiche.TipologieTitolo

dipende da
Script Anagrafiche.TipologieTitolo
grant all privileges on Anagrafiche.TipologieTitolo to group amministratore
;;
grant select on Anagrafiche.TipologieTitolo to public

Dati di base

Anagrafiche.TipologieTitolo di base

dipende da
Script Permessi di accesso a Anagrafiche.TipologieTitolo
insert into Anagrafiche.TipologieTitolo (IDTipologiaTitolo, Descrizione) values ('', '-')
;;
insert into Anagrafiche.TipologieTitolo (IDTipologiaTitolo, Descrizione) values ('P', 'Persona interessata')
;;
insert into Anagrafiche.TipologieTitolo (IDTipologiaTitolo, Descrizione) values ('T', 'Tecnico')
;;
insert into Anagrafiche.TipologieTitolo (IDTipologiaTitolo, Descrizione) values ('I', 'Incaricato istruttoria')
;;
insert into Anagrafiche.TipologieTitolo (IDTipologiaTitolo, Descrizione) values ('R', 'Responsabile della pratica')
;;

Anagrafiche.IndirizziSoggetto

Contiene i diversi indirizzi dei soggetti anagrafici.

Informazioni sui singoli campi

IDIndirizzoSoggetto
Identificativo univoco dell'indirizzo
IDSoggetto
Identificativo del soggetto a cui si riferisce l'indirizzo
IDTipologiaIndirizzo
Tipologia di indirizzo ('D':'Domicilio', 'R':'Residenza', etc)
Indirizzo
Via e numero civico
CAP
Codice avviamento postale
Localita
Località
Provincia
Provincia
Stato
Stato
Progressivo
Stabilisce l'ordine degli indirizzi: il primo è quello di default
DataInizio
Data d'inizio d'uso dell'indirizzo
DataCessazione
Data cessazione d'uso dell'indirizzo
Descrizione
Nota descrittiva dell'indirizzo

Generatore Anagrafiche.IDIndirizzoSoggetto

dipende da
Script Anagrafiche
create sequence Anagrafiche.Gen_IDIndirizzoSoggetto

Anagrafiche.IndirizziSoggetto

dipende da
create table Anagrafiche.IndirizziSoggetto
(
 IDIndirizzoSoggetto largeid_t not null,
 IDSoggetto largeid_t not null,
 IDTipologiaIndirizzo flag_t,
 Indirizzo longstring_t,
 CAP cap_t,
 Localita shortstring_t,
 Provincia provincia_t,
 Stato tinystring_t,
 Progressivo smallint_t not null default 0,
 DataInizio date_t,
 DataCessazione date_t,
 Descrizione longstring_t,

 constraint PK_IndirizziSoggetto primary key (IDIndirizzoSoggetto)
) inherits (TimeStamped)

Chiavi esterne

FK Anagrafiche.IndirizziSoggetto->Anagrafiche.Soggetti

dipende da
alter table Anagrafiche.IndirizziSoggetto
       add constraint fk_IS_IDSoggetto foreign key (IDSoggetto)
           references Anagrafiche.Soggetti (IDSoggetto)
                      on update cascade

FK Anagrafiche.IndirizziSoggetto->Anagrafiche.TipologieIndirizzo

dipende da
alter table Anagrafiche.IndirizziSoggetto
       add constraint fk_IS_IDTipologiaIndirizzo foreign key (IDTipologiaIndirizzo)
           references Anagrafiche.TipologieIndirizzo (IDTipologiaIndirizzo)
                      on update cascade

Aggiornamento timestamp dei record

Inserimento record Anagrafiche.IndirizziSoggetto

dipende da
create function Anagrafiche.inizializza_indirizzisoggetto()
returns trigger as '
begin
  if new.IDIndirizzoSoggetto is NULL or new.IDIndirizzoSoggetto = 0 then
    new.IDIndirizzoSoggetto = nextval(''Anagrafiche.Gen_IDIndirizzoSoggetto'');
  end if;
  return new;
end;
' language plpgsql;

create trigger trg_ins_init_indirizzisoggetto
  before insert on Anagrafiche.IndirizziSoggetto
    for each row execute procedure Anagrafiche.inizializza_indirizzisoggetto();

create trigger trg_ins_ts_a_indirizzisoggetto
  before insert on Anagrafiche.IndirizziSoggetto
    for each row execute procedure inizializza_timestamp();

Aggiornamento timestamp Anagrafiche.IndirizziSoggetto

dipende da
Script Anagrafiche.IndirizziSoggetto
create trigger trg_upd_ts_a_indirizzisoggetto
  before update on Anagrafiche.IndirizziSoggetto
    for each row execute procedure aggiorna_timestamp();

Permessi di accesso

Permessi di accesso a Anagrafiche.IndirizziSoggetto

dipende da
Script Anagrafiche.IndirizziSoggetto
grant all privileges on Anagrafiche.IndirizziSoggetto to group amministratore
;;
grant select,insert,update,delete on Anagrafiche.IndirizziSoggetto to group protocollatore
;;
grant select on Anagrafiche.IndirizziSoggetto to public
;;
grant update on Anagrafiche.Gen_IDIndirizzoSoggetto to group amministratore
;;
grant update on Anagrafiche.Gen_IDIndirizzoSoggetto to group protocollatore

Anagrafiche.TipologieIndirizzo

Le tipologie di indirizzo postale del soggetto: residenza, domicilio, etc

Informazioni sui singoli campi

IDTipologiaIndirizzo
Identificativo univoco della tipologia di indirizzo
Descrizione
Descrizione della tipologia di indirizzo (residenza, domicilio, lavoro, villeggiatura, altro)

Anagrafiche.TipologieIndirizzo

dipende da
create table Anagrafiche.TipologieIndirizzo
(
 IDTipologiaIndirizzo flag_t not null,
 Descrizione longstring_t,

 constraint PK_TipologieIndirizzo primary key (IDTipologiaIndirizzo)
)

Permessi di accesso

Permessi di accesso a Anagrafiche.TipologieIndirizzo

dipende da
Script Anagrafiche.TipologieIndirizzo
grant all privileges on Anagrafiche.TipologieIndirizzo to group amministratore
;;
grant select on Anagrafiche.TipologieIndirizzo to public

Dati di base

Anagrafiche.TipologieIndirizzo di base

dipende da
Script Permessi di accesso a Anagrafiche.TipologieIndirizzo
insert into Anagrafiche.TipologieIndirizzo (IDTipologiaIndirizzo, Descrizione) values ('R', 'Residenza')
;;
insert into Anagrafiche.TipologieIndirizzo (IDTipologiaIndirizzo, Descrizione) values ('D', 'Domicilio')
;;
insert into Anagrafiche.TipologieIndirizzo (IDTipologiaIndirizzo, Descrizione) values ('L', 'Lavoro')
;;
insert into Anagrafiche.TipologieIndirizzo (IDTipologiaIndirizzo, Descrizione) values ('V', 'Villeggiatura')
;;
insert into Anagrafiche.TipologieIndirizzo (IDTipologiaIndirizzo, Descrizione) values ('A', 'Altro')
;;

Anagrafiche.RiferimentiSoggetto

Contiene i riferimenti, non indirizzi postali, dei soggetti anagrafici.

Informazioni sui singoli campi

IDRiferimentoSoggetto
Identificativo univoco del riferimento
IDSoggetto
Identificativo del soggetto a cui si riferisce il riferimento
IDTipologiaRiferimento
Il tipo di riferimento; ('T'=telefono, 'C'=cellulare, 'F'=fax, 'E'=email, 'U'=url)
Riferimento
Il riferimento vero e proprio (può essere un numero di telefono, un url, etc)
Descrizione
Descrizione del riferimento

Generatore Anagrafiche.IDRiferimentoSoggetto

dipende da
Script Anagrafiche
create sequence Anagrafiche.Gen_IDRiferimentoSoggetto

Anagrafiche.RiferimentiSoggetto

dipende da
create table Anagrafiche.RiferimentiSoggetto
(
 IDRiferimentoSoggetto largeid_t not null,
 IDSoggetto largeid_t not null,
 IDTipologiaRiferimento flag_t,
 Riferimento longstring_t,
 Descrizione remark_t,

 constraint PK_RiferimentiSoggetto primary key (IDRiferimentoSoggetto)
) inherits (TimeStamped)

Chiavi esterne

FK Anagrafiche.RiferimentiSoggetto->Anagrafiche.Soggetti

dipende da
alter table Anagrafiche.RiferimentiSoggetto
       add constraint fk_RS_IDSoggetto foreign key (IDSoggetto)
           references Anagrafiche.Soggetti (IDSoggetto)
                      on update cascade

FK Anagrafiche.RiferimentiSoggetto->Anagrafiche.TipologieRiferimento

dipende da
alter table Anagrafiche.RiferimentiSoggetto
       add constraint fk_RS_IDTipologiaRiferimentoo foreign key (IDTipologiaRiferimento)
           references Anagrafiche.TipologieRiferimento (IDTipologiaRiferimento)
                      on update cascade

Aggiornamento timestamp dei record

Inserimento record Anagrafiche.RiferimentiSoggetto

dipende da
create function Anagrafiche.inizializza_riferimentisoggetto()
returns trigger as '
begin
  if new.IDRiferimentoSoggetto is NULL or new.IDRiferimentoSoggetto = 0 then
    new.IDRiferimentoSoggetto = nextval(''Anagrafiche.Gen_IDRiferimentoSoggetto'');
  end if;
  return new;
end;
' language plpgsql;

create trigger trg_ins_init_riferimentosoggetto
  before insert on Anagrafiche.RiferimentiSoggetto
    for each row execute procedure Anagrafiche.inizializza_riferimentisoggetto();

create trigger trg_ins_ts_a_riferimentisoggetto
  before insert on Anagrafiche.RiferimentiSoggetto
    for each row execute procedure inizializza_timestamp();

Aggiornamento timestamp Anagrafiche.RiferimentiSoggetto

dipende da
Script Anagrafiche.RiferimentiSoggetto
create trigger trg_upd_ts_a_riferimentisoggetto
  before update on Anagrafiche.RiferimentiSoggetto
    for each row execute procedure aggiorna_timestamp();

Permessi di accesso

Permessi di accesso a Anagrafiche.RiferimentiSoggetto

dipende da
Script Anagrafiche.RiferimentiSoggetto
grant all privileges on Anagrafiche.RiferimentiSoggetto to group amministratore
;;
grant select,insert,update,delete on Anagrafiche.RiferimentiSoggetto to group protocollatore
;;
grant select on Anagrafiche.RiferimentiSoggetto to public
;;
grant update on Anagrafiche.Gen_IDRiferimentoSoggetto to group amministratore
;;
grant update on Anagrafiche.Gen_IDRiferimentoSoggetto to group protocollatore

Anagrafiche.TipologieRiferimento

I riferimenti possono essere telefono, fax, email, url, etc

Informazioni sui singoli campo

IDTipologiaRiferimento
Identificativo univoco della tipologia di riferimento
Descrizione
Descrizione della tipologia di protocollo (telefono, fax, email, etc)

Anagrafiche.TipologieRiferimento

dipende da
create table Anagrafiche.TipologieRiferimento
(
 IDTipologiaRiferimento flag_t not null,
 Descrizione tinystring_t,

 constraint PKTipologieRiferimento primary key (IDTIpologiaRiferimento)
)

Permessi di accesso

Permessi di accesso a Anagrafiche.TipologieRiferimento

dipende da
Script Anagrafiche.TipologieRiferimento
grant all privileges on Anagrafiche.TipologieRiferimento to group amministratore
;;
grant select on Anagrafiche.TipologieRiferimento to public

Dati di base

Anagrafiche.TipologieRiferimento di base

dipende da
Script Permessi di accesso a Anagrafiche.TipologieRiferimento
insert into Anagrafiche.TipologieRiferimento (IDTipologiaRiferimento, Descrizione) values ('T', 'telefono')
;;
insert into Anagrafiche.TipologieRiferimento (IDTipologiaRiferimento, Descrizione) values ('C', 'cellulare')
;;
insert into Anagrafiche.TipologieRiferimento (IDTipologiaRiferimento, Descrizione) values ('F', 'fax')
;;
insert into Anagrafiche.TipologieRiferimento (IDTipologiaRiferimento, Descrizione) values ('E', 'email')
;;
insert into Anagrafiche.TipologieRiferimento (IDTipologiaRiferimento, Descrizione) values ('U', 'url')
;;

Anagrafiche.Sessi

Contiene le tipologie di sesso previste per i soggetti

Informazioni sui singoli campi

IDSesso
Identificativo univoco del sesso
Descrizione
Descrizione del sesso

Anagrafiche.Sessi

dipende da
create table Anagrafiche.Sessi
(
 IDSesso flag_t not null,
 Descrizione tinystring_t,

 constraint PKSessi primary key (IDSesso)
)

Permessi di accesso

Permessi di accesso a Anagrafiche.Sessi

dipende da
Script Anagrafiche.Sessi
grant all privileges on  Anagrafiche.Sessi to group amministratore
;;
grant select on Anagrafiche.Sessi to public

Dati di base

Anagrafiche.Sessi di base

dipende da
Script Permessi di accesso a Anagrafiche.Sessi
insert into Anagrafiche.Sessi (IDSesso, Descrizione) values ('-', '-')
;;
insert into Anagrafiche.Sessi (IDSesso, Descrizione) values ('M', 'M')
;;
insert into Anagrafiche.Sessi (IDSesso, Descrizione) values ('F', 'F')
;;

Anagrafiche.AlbiProfessionali

Anagrafica degli albi professionali a cui i soggetti (persone) possono essere iscritti.

Informazioni sui singoli campi

IDAlboProfessionale
Identificativo univoco dell'albo professionale
Descrizione
Descrizione dell'albo professionale

Generatore Anagrafiche.IDAlboProfessionale

dipende da
Script Anagrafiche
create sequence Anagrafiche.Gen_IDAlboProfessionale

Anagrafiche.AlbiProfessionali

dipende da
create table Anagrafiche.AlbiProfessionali
(
 IDAlboProfessionale smallid_t not null,
 Descrizione longstring_t,

 constraint PK_AlbiProfessionali primary key (IDAlboProfessionale)
)

Permessi di accesso

Permessi di accesso a Anagrafiche.AlbiProfessionali

dipende da
Script Anagrafiche.AlbiProfessionali
grant all privileges on Anagrafiche.AlbiProfessionali to group amministratore
;;
grant select on Anagrafiche.AlbiProfessionali to public
;;
grant all privileges on Anagrafiche.Gen_IDAlboProfessionale to group amministratore

Dati di base

Anagrafiche.AlbiProfessionali di base

dipende da
Script Permessi di accesso a Anagrafiche.AlbiProfessionali
insert into Anagrafiche.AlbiProfessionali (IDAlboprofessionale, Descrizione) values (1, 'AGRONOMO')
;;
insert into Anagrafiche.AlbiProfessionali (IDAlboprofessionale, Descrizione) values (2, 'ARCHITETTO')
;;
insert into Anagrafiche.AlbiProfessionali (IDAlboprofessionale, Descrizione) values (3, 'GEOMETRA')
;;
insert into Anagrafiche.AlbiProfessionali (IDAlboprofessionale, Descrizione) values (4, 'INGEGNERE')
;;
insert into Anagrafiche.AlbiProfessionali (IDAlboprofessionale, Descrizione) values (5, 'PERITO')
;;
insert into Anagrafiche.AlbiProfessionali (IDAlboprofessionale, Descrizione) values (6, 'GEOLOGO')
;;

Anagrafiche.Allegati

La tabella degli allegati contiene i riferimenti a tutti i file che sono allegati ad oggetti diversi all'interno di PyPaPi, come ad esempio protocolli o pratiche.

Questa tabella non è accessibile direttamente dagli utenti generici.

Per ogni tipologia di oggetto a cui gli allegati sono collegati esiste una tabella secondaria di collegamento, come ad esempio la Protocollo.AllegatiProtocollo.

Informazioni sui singoli campi

IDAllegato
Identificativo univoco dell'allegato
Percorso
Percorso relativo a cui è presente l'allegato sul file system
Impronta
Impronta SHA del file
Protetto
Protetto
Descrizione
Descrizione dell'allegato

Generatore Anagrafiche.Gen_IDAllegato

dipende da
Script Anagrafiche
create sequence Anagrafiche.Gen_IDAllegato

Anagrafiche.Allegati

dipende da
create table Anagrafiche.Allegati
(
 IDAllegato largeid_t not null,
 Percorso pathname_t,
 Impronta hash_t,
 Protetto boolean_t,
 Descrizione longstring_t,

 constraint PK_Allegati primary key (IDAllegato)
) inherits (TimeStamped)

Aggiornamento timestamp dei record

Inserimento record Anagrafiche.Allegati

dipende da
create function Anagrafiche.inizializza_allegati()
returns trigger as '
begin
  if new.IDAllegato is NULL or new.IDAllegato = 0 then
    new.IDAllegato = nextval(''Anagrafiche.Gen_IDAllegato'');
  end if;
  new.Protetto = FALSE;
  return new;
end;
' language plpgsql;

create trigger trg_ins_init_allegati
  before insert on Anagrafiche.Allegati
    for each row execute procedure Anagrafiche.inizializza_allegati();

create trigger trg_ins_ts_a_allegati
  before insert on Anagrafiche.Allegati
    for each row execute procedure inizializza_timestamp();

Aggiornamento timestamp Anagrafiche.Allegati

dipende da
Script Anagrafiche.Allegati
create trigger trg_upd_ts_a_allegati
  before update on Anagrafiche.Allegati
    for each row execute procedure aggiorna_timestamp();

Permessi di accesso

Permessi di accesso a Anagrafiche.Allegati

dipende da
Script Anagrafiche.Allegati
grant all privileges on Anagrafiche.Allegati to group amministratore
;;
grant update on Anagrafiche.Gen_IDAllegato to group amministratore
;;
grant update on Anagrafiche.Gen_IDAllegato to group protocollatore
Visibilità degli allegati

La conoscenza del percorso sul server documentale di un allegato, unito alla sua impronta SHA, permette ad un utente PyPaPi di ottenere dal server http documentale il file allegato.

Per questo motivo l'utente protocollatore non ha accesso diretto alla AllegatiProtocollo, ma solo per tramite della vista AllegatiProtocolloUtente.

Le politiche applicate a questa vista sono le medesime della tabella Protocolli.

Allegati protocollo visibili agli utenti

dipende da
create view Anagrafiche.AllegatiUtente as
  select a.IDAllegato
       , a.Percorso
       , a.Impronta
       , a.Protetto
       , a.Descrizione
  from anagrafiche.allegati as a
  where a.Protetto is FALSE
  or
  (exists (select *
                from protocollo.protocolliutente pu
                  join protocollo.allegatiprotocollo as ap
                    on pu.iddocumento = ap.iddocumento
                where ap.idallegato = a.idallegato)
  and
    ( exists (select *
                from anagrafiche.utenti ut
                  join anagrafiche.utentiufficio uu
                    on uu.idutente = ut.idutente
                  join anagrafiche.uffici as uf
                    on uf.idufficio = uu.idufficio
                  join protocollo.referentiprotocollo as rp
                    on rp.idufficio = uf.idufficio
                  join protocollo.protocolli as p
                    on p.iddocumento = rp.iddocumento
                  join protocollo.allegatiprotocollo ap
                    on ap.iddocumento = p.iddocumento
                where ut.login = current_user
                  and uu.riservato = TRUE)
  or exists (select *
               from protocollo.protocolliutente pu
                 join protocollo.allegatiprotocollo as ap
                   on pu.iddocumento = ap.iddocumento
               where pu.riservato = FALSE)
    )
  )
;;
create rule AllegatiUtente_insert as on insert to Anagrafiche.AllegatiUtente
do instead
  insert into Anagrafiche.Allegati (IDAllegato
                                  , Percorso
                                  , Impronta
                                  , Protetto
                                  , Descrizione
                                    )
  values (new.IDAllegato
        , new.Percorso
        , new.Impronta
        , new.Protetto
        , new.Descrizione
          )
;;
create rule AllegatiUtente_update as on update to Anagrafiche.AllegatiUtente
do instead
  update Anagrafiche.Allegati
  set IDAllegato = new.IDAllegato
    , Percorso = new.Percorso
    , Impronta = new.Impronta
    , Protetto = new.Protetto
    , Descrizione = new.Descrizione
  where IDAllegato = old.IDAllegato;
;;
create rule AllegatiUtente_delete as on delete to Anagrafiche.AllegatiUtente
do instead
  delete from Anagrafiche.Allegati
  where IDAllegato = old.IDAllegato;

Permessi di accesso a Anagrafiche.AllegatiUtente

dipende da
Script Allegati protocollo visibili agli utenti
grant all privileges on Anagrafiche.AllegatiUtente to group amministratore
;;
grant select,insert,update,delete on Anagrafiche.AllegatiUtente to group protocollatore
;;

Anagrafiche.Gruppi

I gruppi servono per organizzare i soggetti secondo titoli comune, come ad esempio 'dipendente del comune' oppure 'consulente software'.

Ogni soggetto può appartenere ad uno o più gruppi.

Informazioni sui singoli campi

IDGruppo
Identificativo univoco del gruppo
Descrizione
Descrizione estesa del gruppo
TipoPersona
Flag che indica se al gruppo può essere associata una persona
TipoAzienda
Flag che indica se al gruppo può essere associata un'azienda
TipoEnte
Flag che indica se al gruppo può essere associata un ente

Generatore Anagrafiche.Gen_IDGruppo

dipende da
Script Anagrafiche
create sequence Anagrafiche.Gen_IDGruppo

Anagrafiche.Gruppi

dipende da
create table Anagrafiche.Gruppi
(
 IDGruppo smallid_t not null,
 Descrizione longstring_t,
 TipoPersona boolean_t not null,
 TipoAzienda boolean_t not null,
 TipoEnte boolean_t not null,

 constraint PK_Gruppi primary key (IDGruppo)
) inherits (TimeStamped)

Aggiornamento timestamp dei record

Inserimento record Anagrafiche.Gruppi

dipende da
create function Anagrafiche.inizializza_gruppi()
returns trigger as '
begin
  if new.IDGruppo is NULL or new.IDGruppo = 0 then
    new.IDGruppo = nextval(''Anagrafiche.Gen_IDGruppo'');
  end if;
  return new;
end;
' language plpgsql;

create trigger trg_ins_init_gruppi
  before insert on Anagrafiche.Gruppi
    for each row execute procedure Anagrafiche.inizializza_gruppi();

create trigger trg_ins_ts_a_gruppi
  before insert on Anagrafiche.Gruppi
    for each row execute procedure inizializza_timestamp();

Aggiornamento timestamp Anagrafiche.Gruppi

dipende da
Script Anagrafiche.Gruppi
create trigger trg_upd_ts_a_gruppi
  before update on Anagrafiche.Gruppi
    for each row execute procedure aggiorna_timestamp();

Permessi di accesso

Permessi di accesso a Anagrafiche.Gruppi

dipende da
Script Anagrafiche.Gruppi
grant all privileges on Anagrafiche.Gruppi to group amministratore
;;
grant select,insert,update,delete on Anagrafiche.Gruppi to group protocollatore
;;
grant select on Anagrafiche.Gruppi to public
;;
grant update on Anagrafiche.Gen_IDGruppo to group amministratore
;;
grant update on Anagrafiche.Gen_IDGruppo to group protocollatore
Viste GruppiPersone, GruppiAziende, GruppiEnti

I gruppi sono logicamente divisi in tre categorie relative alla tipologia di soggetto che vi può appartenere.

Anagrafiche.GruppiPersone

dipende da
Script Anagrafiche.Gruppi
create view Anagrafiche.GruppiPersone as
  select g.IDGruppo
       , g.Descrizione
  from Anagrafiche.Gruppi as g
  where g.TipoPersona is TRUE
;;

Permessi di accesso a Anagrafiche.GruppiPersone

dipende da
Script Anagrafiche.GruppiPersone
grant select on Anagrafiche.GruppiPersone to public

Anagrafiche.GruppiAziende

dipende da
Script Anagrafiche.Gruppi
create view Anagrafiche.GruppiAziende as
  select g.IDGruppo
       , g.Descrizione
  from Anagrafiche.Gruppi as g
  where g.TipoAzienda is TRUE
;;

Permessi di accesso a Anagrafiche.GruppiAziende

dipende da
Script Anagrafiche.GruppiAziende
grant select on Anagrafiche.GruppiAziende to public

Anagrafiche.GruppiEnti

dipende da
Script Anagrafiche.Gruppi
create view Anagrafiche.GruppiEnti as
  select g.IDGruppo
       , g.Descrizione
  from Anagrafiche.Gruppi as g
  where g.TipoEnte is TRUE
;;

Permessi di accesso a Anagrafiche.GruppiEnti

dipende da
Script Anagrafiche.GruppiEnti
grant select on Anagrafiche.GruppiEnti to public

Anagrafiche.GruppiSoggetto

Tabella di collegamento dei gruppi a cui appartiene un soggetto.

Informazioni sui singoli campi

IDGruppoSoggetto
Identificativo univoco dell'associazione soggetto gruppo
IDGruppo
Identificativo del gruppo
IDSoggetto
Identificativo del soggetto
Descrizione
Descizione del collegamento
DataNascita
Data di inizio validità dell'associazione
DataCessazione
Data di fine validità dell'associazione

Generatore Anagrafiche.Gen_IDGruppoSoggetto

dipende da
Script Anagrafiche
create sequence Anagrafiche.Gen_IDGruppoSoggetto

Anagrafiche.GruppiSoggetto

dipende da
create table Anagrafiche.GruppiSoggetto
(
 IDGruppoSoggetto largeid_t not null,
 IDGruppo smallid_t,
 IDSoggetto largeid_t,
 Descrizione longstring_t,
 DataNascita date_t,
 DataCessazione date_t,

 constraint PK_GruppiSoggetto primary key (IDGruppoSoggetto)
) inherits (TimeStamped)

Chiavi esterne

FK Anagrafiche.GruppiSoggetto->Anagrafiche.Soggetti

dipende da
alter table Anagrafiche.GruppiSoggetto
       add constraint fk_GS_IDSoggetto foreign key (IDSoggetto)
           references Anagrafiche.Soggetti (IDSoggetto)
                      on update cascade

FK Anagrafiche.GruppiSoggetto->Anagrafiche.Gruppi

dipende da
alter table Anagrafiche.GruppiSoggetto
       add constraint fk_GS_IDGruppi foreign key (IDGruppo)
           references Anagrafiche.Gruppi (IDGruppo)
                      on update cascade

Aggiornamento timestamp dei record

Inserimento record Anagrafiche.GruppiSoggetto

dipende da
create function Anagrafiche.inizializza_gruppisoggetto()
returns trigger as '
begin
  if new.IDGruppoSoggetto is NULL or new.IDGruppoSoggetto = 0 then
    new.IDGruppoSoggetto = nextval(''Anagrafiche.Gen_IDGruppoSoggetto'');
  end if;
  return new;
end;
' language plpgsql;

create trigger trg_ins_init_grupposoggetto
  before insert on Anagrafiche.GruppiSoggetto
    for each row execute procedure Anagrafiche.inizializza_gruppisoggetto();

create trigger trg_ins_ts_a_gruppisoggetto
  before insert on Anagrafiche.GruppiSoggetto
    for each row execute procedure inizializza_timestamp();

Aggiornamento timestamp Anagrafiche.GruppiSoggetto

dipende da
Script Anagrafiche.GruppiSoggetto
create trigger trg_upd_ts_a_gruppisoggetto
  before update on Anagrafiche.GruppiSoggetto
    for each row execute procedure aggiorna_timestamp();

Permessi di accesso

Permessi di accesso a Anagrafiche.GruppiSoggetto

dipende da
Script Anagrafiche.GruppiSoggetto
grant all privileges on Anagrafiche.GruppiSoggetto to group amministratore
;;
grant select,insert,update,delete on Anagrafiche.GruppiSoggetto to group protocollatore
;;
grant select on Anagrafiche.GruppiSoggetto to public
;;
grant update on Anagrafiche.Gen_IDGruppoSoggetto to group amministratore
;;
grant update on Anagrafiche.Gen_IDGruppoSoggetto to group protocollatore

Anagrafiche.GruppiPg

Anagrafica dei gruppi Postgres corrispondenti a gruppi di utenti all'interno di PyPaPi. Sono esempi il gruppo "amministratore" o "protocollatore".

Ad ogni gruppo PyPaPi corrisponde un gruppo Postgres; l'allineamento deve essere mantenuto a mano, creando gruppo Postgres e record corrispondente in questa tabella.

Informazioni sui singoli campi

IDGruppoPg
Identificativo univoco del gruppo
Denominazione
Denominazione Postrges del gruppo
Descrizione
Descrizione del significato del gruppo all'interno dell'applicazione

Generatore Anagrafiche.Gen_IDGruppoPg

dipende da
Script Anagrafiche
create sequence Anagrafiche.Gen_IDGruppoPg

Anagrafiche.GruppiPg

dipende da
create table Anagrafiche.GruppiPg
(
 IDGruppoPg smallid_t not null,
 Denominazione longstring_t,
 Descrizione longstring_t,

 constraint PK_GruppiPg primary key (IDGruppoPg)
) inherits (TimeStamped)

Aggiornamento timestamp dei record

Inserimento record Anagrafiche.GruppiPg

dipende da
create function Anagrafiche.inizializza_gruppipg()
returns trigger as '
begin
  if new.IDGruppoPg is NULL or new.IDGruppoPg = 0 then
    new.IDGruppoPg = nextval(''Anagrafiche.Gen_IDGruppoPg'');
  end if;
  return new;
end;
' language plpgsql;

create trigger trg_ins_init_gruppipg
  before insert on Anagrafiche.GruppiPg
    for each row execute procedure Anagrafiche.inizializza_gruppipg();

create trigger trg_ins_ts_a_gruppipg
  before insert on Anagrafiche.GruppiPg
    for each row execute procedure inizializza_timestamp();

Aggiornamento timestamp Anagrafiche.GruppiPg

dipende da
Script Anagrafiche.GruppiPg
create trigger trg_upd_ts_a_gruppiPg
  before update on Anagrafiche.GruppiPg
    for each row execute procedure aggiorna_timestamp();

Permessi di accesso

Permessi di accesso a Anagrafiche.GruppiPg

dipende da
Script Anagrafiche.GruppiPg
grant all privileges on Anagrafiche.GruppiPg to group amministratore
;;
grant select on Anagrafiche.GruppiPg to public
;;
grant update on Anagrafiche.Gen_IDGruppoPg to group amministratore

Dati di base

Anagrafiche.GruppiPg di base

dipende da
Script Permessi di accesso a Anagrafiche.GruppiPg
insert into Anagrafiche.GruppiPg (IDGruppoPg, Denominazione, Descrizione)
  values (nextval('Anagrafiche.Gen_IDGruppoPg'), 'amministratore', 'Amministratore del database')
;;
insert into Anagrafiche.GruppiPg (IDGruppoPg, Denominazione, Descrizione)
  values (nextval('Anagrafiche.Gen_IDGruppoPg'), 'superutente', 'Amministratore di PyPaPi')
;;
insert into Anagrafiche.GruppiPg (IDGruppoPg, Denominazione, Descrizione)
  values (nextval('Anagrafiche.Gen_IDGruppoPg'), 'modellatore', 'Utente che modella iter procedurali')
;;
insert into Anagrafiche.GruppiPg (IDGruppoPg, Denominazione, Descrizione)
  values (nextval('Anagrafiche.Gen_IDGruppoPg'), 'istruttore', 'Utente che istruisce pratiche')
;;
insert into Anagrafiche.GruppiPg (IDGruppoPg, Denominazione, Descrizione)
  values (nextval('Anagrafiche.Gen_IDGruppoPg'), 'protocollatore', 'Utente generico del protocollo')
;;
insert into Anagrafiche.GruppiPg (IDGruppoPg, Denominazione, Descrizione)
  values (nextval('Anagrafiche.Gen_IDGruppoPg'), 'anagrafiche', 'Utente che opera sui soggetti')
;;
insert into Anagrafiche.GruppiPg (IDGruppoPg, Denominazione, Descrizione)
  values (nextval('Anagrafiche.Gen_IDGruppoPg'), 'convalidatore', 'Utente che convalida a prescindere dal flag omonimo')
;;

Anagrafiche.GruppiPgUtente

Tabella di collegamento dei gruppi Postgres con l'utente. Attraverso dei trigger su questa tabella viene gestita l'associazione dell'utente al gruppo Postgres.

Informazione sui singoli campi

IDGruppoPgUtente
Identificativo univoco dell'associazione
IDUtente
Identificativo univoco numerico dell'utente collegato al gruppo
IDGruppo
Identificativo univoco numerico del gruppo collegato all'utente

Generatore Anagrafiche.Gen_GruppiPgUtente

dipende da
Script Anagrafiche
create sequence Anagrafiche.Gen_IDGruppoPgUtente

Anagrafiche.GruppiPgUtente

dipende da
create table Anagrafiche.GruppiPgUtente
(
 IDGruppoPgUtente largeid_t not null,
 IDUtente smallid_t not null,
 IDGruppoPg smallid_t not null,

 constraint PK_GruppoPgUtente primary key (IDGruppoPgUtente),
 constraint UK_GruppoPgUtente unique (IDUtente, IDGruppoPg)
) inherits(TimeStamped)

Chiavi esterne

FK Anagrafiche.GruppiPgUtente->Anagrafiche.Utenti

dipende da
alter table Anagrafiche.GruppiPgUtente
       add constraint fk_GPU_IDUtente foreign key (IDUtente)
           references Anagrafiche.Utenti (IDUtente)
                      on update cascade

FK Anagrafiche.GruppiPgUtente->Anagrafiche.GruppiPg

dipende da
alter table Anagrafiche.GruppiPgUtente
       add constraint fk_GPU_IDGruppoPg foreign key (IDGruppoPg)
           references Anagrafiche.GruppiPg (IDGruppoPg)
                      on update cascade

Aggiornamento timestamp dei record

Inserimento record Anagrafiche.GruppiPgUtente

dipende da
Script Anagrafiche.GruppiPgUtente
create function Anagrafiche.inizializza_gruppipgutente()
returns trigger as '
declare
  r1 RECORD;
  r2 RECORD;
  utente VARCHAR;
  gruppopg VARCHAR;
begin
  if new.IDGruppoPgUtente is NULL or new.IDGruppoPgUtente = 0 then
    new.IDGruppoPgUtente = nextval(''Anagrafiche.Gen_IDGruppoPgUtente'');
  end if;
  for r1 in SELECT * FROM Anagrafiche.Utenti WHERE IDUtente = new.IDUtente loop
    utente := r1.login;
  end loop;
  for r2 in SELECT * FROM Anagrafiche.GruppiPg WHERE IDGruppoPg = new.IDGruppoPg loop
    gruppopg := r2.denominazione;
  end loop;
  execute ''GRANT '' || gruppopg || '' TO '' || utente;
  return new;
end;
' language plpgsql;

create trigger trg_ins_ts_init_gruppipgutente
  before insert on Anagrafiche.GruppiPgUtente
    for each row execute procedure Anagrafiche.inizializza_gruppipgutente();

create trigger trg_ins_ts_a_gruppipgutente
  before insert on Anagrafiche.GruppiPgUtente
    for each row execute procedure inizializza_timestamp();

Cancellazione record Anagrafiche.GruppiPgUtente

dipende da
Script Anagrafiche.GruppiPgUtente
create function Anagrafiche.cancella_gruppipgutente()
returns trigger as '
declare
  r1 RECORD;
  r2 RECORD;
  utente VARCHAR;
  gruppopg VARCHAR;
begin
  for r1 in SELECT * FROM Anagrafiche.Utenti WHERE IDUtente = old.IDUtente loop
    utente := r1.login;
  end loop;
  for r2 in SELECT * FROM Anagrafiche.GruppiPg WHERE IDGruppoPg = old.IDGruppoPg loop
    gruppopg := r2.denominazione;
  end loop;
  execute ''REVOKE '' || gruppopg || '' FROM '' || utente;
  return old;
end;
' language plpgsql;

create trigger trg_del_gruppipgutente
  before delete on Anagrafiche.GruppiPgUtente
    for each row execute procedure Anagrafiche.cancella_gruppipgutente();

Aggiornamento timestamp Anagrafiche.GruppiPgUtente

dipende da
Script Anagrafiche.GruppiPgUtente
create trigger trg_upd_ts_a_gruppipgutente
  before update on Anagrafiche.GruppiPgUtente
    for each row execute procedure aggiorna_timestamp();

Permessi di accesso

Permessi di accesso a Anagrafiche.GruppiPgUtente

dipende da
Script Anagrafiche.GruppiPgUtente
grant all privileges on Anagrafiche.GruppiPgUtente to group amministratore
;;
grant all privileges on Anagrafiche.Gen_IDGruppoPgUtente to group amministratore
;;
grant select on Anagrafiche.GruppiPgUtente to public

Anagrafica.CategorieArchivio

Titolario basato sulla Circolare Astengo.

Informazioni sui singoli campi

IDCategoriaArchivio
Identificativo univoco
Categoria
Categoria
Classe
Classe
Fascicolo
Fascicolo
Descrizione
Descrizione

Anagrafiche.CategorieArchivio

dipende da
create table Anagrafiche.CategorieArchivio
(
 IDCategoriaArchivio largeid_t not null,
 Categoria smallid_t,
 Classe smallid_t,
 Fascicolo smallid_t,
 Descrizione longstring_t,

 constraint PK_CategorieArchivio primary key (IDCategoriaArchivio),
 constraint UK_CategorieArchivio unique (Categoria, Classe, Fascicolo)
)

Permessi di accesso a Anagrafiche.CategorieArchivio

dipende da
Script Anagrafiche.CategorieArchivio
grant all privileges on Anagrafiche.CategorieArchivio to group amministratore
;;
grant select on Anagrafiche.CategorieArchivio to public

Dati di base

Anagrafiche.CategorieArchivio di base

dipende da
Script Permessi di accesso a Anagrafiche.CategorieArchivio
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (1, 1, NULL, NULL, 'AMMINISTRAZIONE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (2, 1, 1, NULL, 'COMUNE ED UFFICIO COMUNALE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (3, 1, 1, 1, 'ATTI DI ORIGINE, STATUTO, CONCESSIONI, STEMMA ...')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (4, 1, 1, 2, 'CIRCOSCRIZIONI COMUNALI - QUARTIERI, FRAZIONI...')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (5, 1, 1, 3, 'MUNICIPI, FUSIONI DI MUNICIPI, UNIONE DI COMUNI ..')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (6, 1, 1, 4, 'RIPARTIZIONI SERVIZI ED UFFICI, ORARI, CERTIFICATI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (7, 1, 1, 5, 'ALBO PRETORIO PUBBLICAZIONI NOTIFICHE DEPOSITO ATT')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (8, 1, 1, 6, 'ANCI, UNCEM, ANCITEL, AUTONOMIE LOCALI ...')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (9, 1, 1, 7, 'CONVEGNI E RAPPRESENTANZE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (10, 1, 1, 8, 'AZIONI POPOLARI, REFERENDUM, DIFENSORE CIVICO ...')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (11, 1, 1, 9, 'AMMINISTRAZIONE PROVINCIALE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (12, 1, 10, NULL, 'ISTITUTI O SERVIZI AMMINISTRATIVI O TUTELATI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (13, 1, 10, 1, 'AZIENDE SPECIALI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (14, 1, 10, 2, 'CONSORZI AZIENDA, SPA, SOCIETA\' A PARTECIPAZ COMUN.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (15, 1, 10, 3, 'OPERE OD ISTITUZIONI AMMINISTRATE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (16, 1, 10, 4, 'AZIENDE AUTONOME DI SOGGIORNO E TURISMO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (17, 1, 11, NULL, 'LOCALI PER GLI UFFICI E SERVIZI COMUNALI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (18, 1, 11, 1, 'COSTRUZIONE E MANUTENZIONE MUNICIPIO, AFFITTANZA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (19, 1, 11, 2, 'ACQUISTO MOBILI MANUTENZIONE LOCALI E MOBILI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (20, 1, 11, 3, 'ILLUMINAZIIONE E RISCALDAMENTO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (21, 1, 11, 4, 'CONCESSIONE LOCALI ED OGGETTI COMUNALI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (22, 1, 11, 5, 'REGOLAMENTI PER CONCESSIONE LOCALI A PRIVATI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (23, 1, 11, 6, 'SISTEMA INFORMATIVO COMUNALE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (24, 1, 12, NULL, 'MANIFESTAZIONI DI INDOLE AMMINISTRATIVA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (25, 1, 12, 1, 'ASSOCIAZIONI, CONGRESSI, ONORANZE, RAPPRESENTANZE.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (26, 1, 12, 2, 'COLLABORAZIONI TRA ENTI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (27, 1, 13, NULL, 'CIRCOLARI E DISPOSIZIONI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (28, 1, 13, 1, 'CIRCOLARI, NORME, DISPOSIZIONI D\'INDOLE GENERALE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (29, 1, 13, 2, 'CIRCOLARI DELLA REGIONE E DEL COMITATO DI CONTROLL')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (30, 1, 13, 3, 'MANIFESTI ED AVVISI AL PUBBLICO DELLA PRIMA CAT.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (31, 1, 2, NULL, 'ARCHIVIO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (32, 1, 2, 1, 'PRONTUARIO D\'ARCHIVIO, SCARTO ATTI, RILASCIO COPIE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (33, 1, 2, 2, 'ARCHIVIO STORICO ANTICO E MODERNO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (34, 1, 2, 3, 'PROTOCOLLO, INDICE E RUBRICA DELLE PRATICHE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (35, 1, 2, 4, 'RIORDINAMENTO E SISTEMAZIONE ARCHIVI E LOCALI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (36, 1, 3, NULL, 'ECONOMATO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (37, 1, 3, 1, 'REGOLAMENTO DI SERVIZIO, ECONOMO, CAUZIONE ...')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (38, 1, 3, 2, 'STAMPE - CARTA - CANCELLERIA - MACCHINE UTENSILI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (39, 1, 3, 3, 'RIVISTE, GIORNALI, PUBBLICAZIONI AMM.VE, ABBONAM.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (40, 1, 3, 4, 'SPESE DI POSTA, TELEGRAFO, RECAPITI DI CORRIERE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (41, 1, 3, 5, 'COMBUSTIBILE PER RISCALDAMENTO, ACQUISTO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (42, 1, 3, 6, 'MENSE AZIENDALI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (43, 1, 4, NULL, 'ELEZIONI AMMINISTRATIVE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (44, 1, 4, 1, 'LISTE DI CANDIDATI, ATTI E ADEMPIMENTI RELATIVI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (45, 1, 4, 2, 'LEGGI ELETTORALI, PRESIDENTI, COMPONENTI, SEGRET..')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (46, 1, 4, 3, 'NORME, CIRCOLARI E CORRISPONDENZA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (47, 1, 4, 4, 'ESITO E STATISTICHE DELLE ELEZIONI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (48, 1, 5, NULL, 'CONSIGLIO,  GIUNTA E ORGANI BUROCRATICI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (49, 1, 5, 1, 'CONSIGLIO, CONVOCAZIONI, O.D.G., ATTI E RELAZIONI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (50, 1, 5, 10, 'ORGANI BUROCRATICI, DETERMINE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (51, 1, 5, 2, 'CONSIGLIERI, NOMINA, DIMISSIONI, DECADENZA, REVOC.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (52, 1, 5, 3, 'GIUNTA, CONVOCAZIONI, O.D.G., ATTI  E RELAZIONI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (53, 1, 5, 4, 'ASSESSORI, NOMINE, DIMISSIONI, REVOCHE, SOSTITUZ.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (54, 1, 5, 5, 'DELIBERAZIONI DI C.C. E G.C. RELATIVE A CONSIGL.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (55, 1, 5, 6, 'INTERPELLANZE, INTERROGAZIONI, MOZIONI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (56, 1, 5, 7, ' ANAGRAFE AMMINISTRATORI, ASPETTATIVA AMMINISTR.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (57, 1, 5, 8, 'COMMISSIONI CONSILIARI, NOMINA, ATTI RELATI, GRUPP')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (58, 1, 5, 9, 'CONSIGLI  E CONSIGLIERI CIRCOSCRIZIONALI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (59, 1, 6, NULL, 'SINDACO - COMMISSIONI - DELEGHE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (60, 1, 6, 1, 'SINDACO, ELEZIONE DIRETTA, REVOCHE, SOSTITUZ.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (61, 1, 6, 2, 'COMMISSARI STRAORDINARI, ISPEZIONI ED INCHIESTE..')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (62, 1, 6, 3, 'DELEGHE E DELEGATI, INCARICHI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (63, 1, 6, 4, 'CONVOCAZIONI, COMMISSIONI NON SPECIFICHE,NOMINE..')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (64, 1, 6, 5, 'INDENNITA\' DI CARICA E RIMBORSO SPESE FORZOSE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (65, 1, 6, 6, 'PASSAGGIO DI AMMINISTRAZIONE, CONSEGNE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (66, 1, 6, 7, 'DELIBERAZIONI DI C.C. E G.C. RELATIVE AL SINDACO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (67, 1, 6, 8, 'CERIMONIE, UDIENZE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (68, 1, 6, 9, 'ALLOGGI (RICHIESTE)')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (69, 1, 7, NULL, 'DELIBERAZIONI E REPERTORI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (70, 1, 7, 1, 'REGISTRI E INDICI DEL CONSIGLIO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (71, 1, 7, 2, 'REGISTRI E INDICI DELLA GIUNTA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (72, 1, 7, 3, 'DELIBERAZIONI SOGGETTE A CONTROLLO PREV. DI LEGITT')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (73, 1, 7, 4, 'DELIBERAZIONI DELLA G.C. INVIATE A I CAPIGRUPPO CO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (74, 1, 7, 5, 'REPERTORI E CONTRATTI (IN UNICA RACCOLTA)')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (75, 1, 7, 6, 'ORDINANZE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (76, 1, 8, NULL, 'IMPIEGATI E SALARIATI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (77, 1, 8, 1, 'REGOLAMENTO E DOTAZIONE ORGANICA DEL PERSONALE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (78, 1, 8, 10, 'INDENNITA\' DI TRASFERTA IMPIEGATI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (79, 1, 8, 11, 'INDENNITA\' DI TRASFERIMENTO E RIMBORSO SPESE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (80, 1, 8, 12, 'CORSI DI  PERFEZIONAMENTO E AGGIORNAMENTO PERSONAL')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (81, 1, 8, 13, 'COMMISSIONE DI DISCIPLINA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (82, 1, 8, 2, 'SEGRETARIO COMUNALE, NOMINA, ASSEGNI, NORME GENER.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (83, 1, 8, 3, 'IMPIEGATI,CONCORSI,NOMINE, ASSEGNI, ATTI VARI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (84, 1, 8, 4, 'ESECUTORI, SALARIATI, NOMINE, ASSEGNI, INCARICHI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (85, 1, 8, 5, 'PERSONALE AVVENTIZIO  O A TEMPO DETERM, LAVORO STR')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (86, 1, 8, 6, 'INPDAP')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (87, 1, 8, 7, 'INPS, ASSICURAZ. INVALIDITA\', VECCHIAIA ETC.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (88, 1, 8, 8, 'ASSICURAZIONI INFORTUNI DIPENDENTI COMUNALI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (89, 1, 8, 9, 'SINDACATO DIPENDENTI COMUNALI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (90, 1, 9, NULL, 'CAUSE, LITI, CONFLITTI DELL\'AMMINISTRAZIONE COMUNA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (91, 1, 9, 1, 'LITI, SENTENZE, TRANSAZIONI, CONSULTI ETC.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (92, 1, 9, 2, 'INCARICHI A LEGALI, DELIBERAZ.RELATIVE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (93, 1, 9, 3, 'CITAZIONI ALL COMUNE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (94, 1, 9, 5, 'PARERI LEGALI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (95, 10, NULL, NULL, 'LAVORI PUBBLICI, POSTE, TELEGRAFO, TELEFONO, TV ..')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (96, 10, 1, NULL, 'STRADE, PIAZZE, GIARDINI PUBBLICI, COSTRUZIONE...')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (97, 10, 1, 1, 'STRADE,CLASSIFICAZIONI,ELENCHI,AFFARI GENERALI,STA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (98, 10, 1, 2, 'VIE E PIAZZE,VIALI PORTICI E LOGGE, ATTI RELATIVI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (99, 10, 1, 3, 'STRADE COSTRUZIONI VARIANTI RIPARAZIONI STRAORDINA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (100, 10, 1, 4, 'STADE,MANUTENZIONE,GHIAIA E SELCIATI,ALBERATURA,SG')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (101, 10, 1, 5, 'STADE NAZIONALI,ATTRAVERSANTI L\'ABITATO,CONSORZIAL')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (102, 10, 1, 6, 'POLIZIA STRADALE,CONCESSIONI PRECARIE STRADALI,COD')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (103, 10, 1, 7, 'GIARDINI,PARCHI PUBBLICI,PASSEGGI,VIALI E AIUOLE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (104, 10, 1, 8, 'URBANISTICA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (105, 10, 10, NULL, 'COSTRUZIONE E RESTAURI EDIFICI COMUNALI E PRIVATI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (106, 10, 10, 1, 'EDIFICI E STABILI URBANI COMUNALI-EX CASE DEL FASC')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (107, 10, 10, 2, 'REGOLAMENTI EDILIZI:ATTI ORDINANZE CONTRAVVENZIONI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (108, 10, 10, 3, 'COMMISSIONE EDILIZIA,NOMINE,DELIBERAZIONI,PERMESSI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (109, 10, 10, 4, 'ASSOC. PROPRIETARI EDILI - SINDACATO EDILI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (110, 10, 10, 5, 'CASE POPOLARI E RURALI, COSTRUZIONE,GESTIONE,STATI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (111, 10, 10, 6, 'COOPERATIVE EDILIZIE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (112, 10, 10, 7, 'ABITAZIONI REPERITE DA DESTINARE A SFRATTATI E SEN')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (113, 10, 10, 8, 'EDIFICI SINISTRATI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (114, 10, 11, NULL, 'PORTI, SPIAGGE, FARI, MOLI,  ECC.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (115, 10, 11, 1, 'PORTI,SPIAGGE,FARI,MOLI - COSTRUZIONI, MANUTENZION')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (116, 10, 12, NULL, 'CIRCOLARI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (117, 10, 12, 1, 'CIRCOLARI, NORME RIGUARDANTI LA 10\' CAT.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (118, 10, 12, 2, 'MANIFESTI ED AVVISI AL PUBBLICO RIGUARDANTI LA 10\'')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (119, 10, 16, NULL, 'CREATA PER INSERIRE PRATICHE EDILIZIE ANTECED 1940')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (120, 10, 2, NULL, 'PONTI, GALLERIE, FOGNATURE, FRANE E LAVORI STRAORD')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (121, 10, 2, 1, 'PONTI,ATTI RELATIVI,COSTRUZIONE E MANUTENZIONI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (122, 10, 2, 2, 'GALLERIE VARIE,COSTRUZIONI MANUTENZIONI, SUSSIDI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (123, 10, 2, 3, 'FOGNATURE,LATRINE PUBBLICHE E ALTRE OPERE STRADALI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (124, 10, 2, 4, 'FRANE RIMOZIONI SUSSIDI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (125, 10, 2, 5, 'MERCATI,COSTRUZIONE,MANUTENZIONE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (126, 10, 3, NULL, 'ILLUMINAZIONE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (127, 10, 3, 1, 'ILLUMINAZIONE PUBBLICA ELETTRICA,IMPIANTI PERSONAL')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (128, 10, 3, 2, 'CONTRATTO D\' APPALTO FORNITURA ENERGIA,LAMPADE,MAT')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (129, 10, 3, 3, 'ALTRI SISTEMI D\'ILLUMINAZIONE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (130, 10, 4, NULL, 'ACQUE E FONTANE PUBBLICHE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (131, 10, 4, 1, 'ACQUE,CONCESSIONI,DERIVAZIONI,IMPIANTI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (132, 10, 4, 10, 'PROGETTI SPECIALI DI LAVORO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (133, 10, 4, 2, 'FONTANE,POZZI,LAVATOI,BAGNI PUBBLIVI,COSTRUZIONE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (134, 10, 4, 3, 'AQUEDOTTI COMUNALI,IMPIANTI MANUTENZIONE,PERSONALE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (135, 10, 4, 4, 'ACQUE PER USO PRIVATO,CONCESSIONI, CONVENZIONI, PR')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (136, 10, 4, 5, 'FIUMI TORRENTI CANONI E LAVORI ARGINATIVI, BONIFIC')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (137, 10, 4, 6, 'LAGHI NATURALI ED ARTIFICIALI,DIGHE ORIGINI,ATTI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (138, 10, 4, 7, 'IMPIANTI SOLLEVAMENTO ACQUA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (139, 10, 4, 8, 'IRRIGAZIONE CAMPI PER L\'AGRICOLTURA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (140, 10, 4, 9, 'PULIZIA CANALI IRRIGUI E ROGGE COMUNALI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (141, 10, 5, NULL, 'CONSORZI STRADALI E IDRAULICI DI BONIFICA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (142, 10, 5, 1, 'CONSORZI STRADALI,COSTITUZIONE,FUNZIONAMENTO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (143, 10, 5, 2, 'CONSORZI IDRAULICI E DI BONIFICA, COSTITUZIONE FUN')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (144, 10, 6, NULL, 'ESPROPRIAZIONI PER CAUSE DI PUBBLICA UTILITA\'')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (145, 10, 6, 1, 'ESPROPRIAZIONI ED OCCUPAZ. SUOLO PER PUBB. UTILITA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (146, 10, 7, NULL, 'POSTE, TELEGRAFI, TELEFONI, RADIO, TELEVISIONE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (147, 10, 7, 1, 'POSTE E TELEGRAFI,UFFICILOCALI,IMPIANTI,PERSONALE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (148, 10, 7, 2, 'TELEFONI, UFFICI,SPESE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (149, 10, 7, 3, 'RADIOAUDIZIONI,TELEVISIONE,RADIOTELEGRAFO,RADIOTEL')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (150, 10, 8, NULL, 'FERROVIE, TRAMVIE, AUTOVIE, FUNIVIE, NAVIGAZIONE..')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (151, 10, 8, 1, 'FERROVIE, COSTRUZIONI, CONTRIBUTI ,STAZIONI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (152, 10, 8, 2, 'TRANVIE A VAPORE O ELETTRICHE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (153, 10, 8, 3, 'AUTOSTRADE, SERVIZI DI LINEA, AUTOVIE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (154, 10, 8, 4, 'FUNIVIE, FILOVIE, TELEFONI, PALORCI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (155, 10, 8, 5, 'NAVIGAZIONE, LAGHI, FIUMI, MARE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (156, 10, 8, 6, 'SINDACATI TRASPORTI TERRESTRI E NAVIGAZIONE INTERN')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (157, 10, 8, 7, 'AEROPORTI, SERVIZI AEREI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (158, 10, 8, 8, 'OROLOGI PUBBLICI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (159, 10, 9, NULL, 'UFFICIO TECNICO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (160, 10, 9, 1, 'UFFICIO TECNICO, LOCALI MOBILI,PERSONALE-COLLEGIO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (161, 10, 9, 2, 'STATISTICHE,PROSPETTI,NORME-ATTI RELATIVI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (162, 10, 9, 3, 'REGOLAMENTO LAVORI IN ECONOMIA, NORME- ATTI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (163, 10, 9, 4, 'CANTIERI DI LAVORO E RIMBOSCHIMENTO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (164, 10, 9, 5, 'CAPITOLATO GENERALE DELLO STATO E CAPITOLATO SPECI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (165, 10, 9, 6, 'CONTABILITA\' DEI LAVORI-APPALTO LAVORI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (166, 11, NULL, NULL, 'AGRICOLTURA INDUSTRIA COMMERCIO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (167, 11, 1, NULL, 'AGRICOLTURA, CACCIA, PESCA, PASTORIZIA, PIANTE ..')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (168, 11, 1, 1, 'PROVV. PER L\'AGRICOLTURA E GLI AGRICOLTORI,ESPOSIZ')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (169, 11, 1, 10, 'CONTRIBUTI UNIFICATI IN AGRICOLTURA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (170, 11, 1, 11, 'AGRITURISMO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (171, 11, 1, 12, 'U.M.A.- UFFICIO MACCHINE AGRICOLE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (172, 11, 1, 2, 'CENSIMENTI E STATISTICHE DELL\'AGRICOLTURA,CACCIA,P')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (173, 11, 1, 3, 'ASSISTENZA MALATTIE E ASSICURAZIONI NELL\' AGRICOLT')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (174, 11, 1, 4, 'GRANO E CANAPA, DISCIPLINA DI PRODUZIONE E COMMERC')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (175, 11, 1, 5, 'APICOLTURA, BACHICOLTURA, VITICOLTURA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (176, 11, 1, 6, 'BOSCHI E FORESTE,CORPO VIGILANZA FORESTALE,PIANI E')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (177, 11, 1, 7, 'ZOOTECNIA E PASTORIZIA, ASSICURAZIONE BESTIAME, MO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (178, 11, 1, 8, 'CACCIA,PESCA,ITTIOLIGIA,PISCICULTURA,UCCELLAGIONE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (179, 11, 1, 9, 'RISAIE E COLTURE SPECIALI, CONSORZI AGRARI, RACCOL')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (180, 11, 2, NULL, 'INDUSTRIA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (181, 11, 2, 1, 'PROVV. PER L\'INDUSTRIA, ESPOSIZIONI, MOSTRE E CONC')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (182, 11, 2, 2, 'CENSIMENTI E STATISTICHE INDUSTRIALI-ASS. DEGLI IN')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (183, 11, 2, 3, 'OPIFICI, STABILIMENTI, CENTRALI ELETTRICHE, CENTRA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (184, 11, 2, 4, 'MOLINI,MACINAZIONI,FORNI,PANIFICAZIONE,ATTI RELATI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (185, 11, 2, 5, 'MINIERE,CAVE,TORBIERE - CONCESSIONI E PRIVATIVE IN')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (186, 11, 2, 6, 'COOPERATIVE E CONSORZI DI PRODUZIONE E LAVORO, DIS')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (187, 11, 2, 7, 'INDUSTRIA TURISTICA ED ALBERGHIERA, TOURING CLUB I')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (188, 11, 2, 8, 'ISTITUTI DI CREDITO CAMBIARIO,BANCHE BORSE,QUOTAZI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (189, 11, 2, 9, 'ISTITUTI DI ASSICURAZIONE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (190, 11, 3, NULL, 'COMMERCIO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (191, 11, 3, 1, 'PROVV. PER IL COMMERCIO, MOSTRE VETRINE CONCORSI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (192, 11, 3, 10, 'STATISTICHE SUI CONSUMI, PRODUZIONI,IMPORTAZIONI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (193, 11, 3, 11, 'CONTROLLO E RAZIONAMENTO CONSUMI-ANAGRAFE ANNONARI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (194, 11, 3, 12, 'PIANO DI SVILUPPO ED ADEGUAMENTO RETE DI VENDITA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (195, 11, 3, 2, 'CENSIMENTI E STATISTICHE DEL COMMERCIO-ASS. DEL CO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (196, 11, 3, 3, 'ELENCHI DEI COMMERCIANTI E NEGOZIANTI-COMMISSIONE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (197, 11, 3, 4, 'MERCURIALI,CALMIERI,LISTINI PREZZI,DISCIPLINA VIGI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (198, 11, 3, 5, 'CAMERA DI COMMERCIO, INDUSTRIA,ARTIGIANATO E AGRIC')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (199, 11, 3, 6, 'COMMERCIO AMBULANTE,NORME,COMMISSIONE,ELENCO COMME')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (200, 11, 3, 7, 'MEDIATORI E SENSALI, RUOLI, LICENZE, ATTI TARIFFE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (201, 11, 3, 8, 'IMPORTAZIONI ED ESPORTAZIONI, DITTE ESTERE, PRODOT')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (202, 11, 3, 9, 'COOP. E CONSORZI DI VENDITA E CONSUMO,ELENCHI,NORM')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (203, 11, 4, NULL, 'ARTIGIANATO, LAVORO E PREVIDENZA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (204, 11, 4, 1, 'ARTIGIANATO,NORME E DISPOSIZIONI,ELENCHI ARTIGIANI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (205, 11, 4, 10, 'PROGETTI SPECIALI DI LAVORO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (206, 11, 4, 2, 'PREVIDENZA SOCIALE-INPS-ASS.INVALIDITA\' E VECCHIAIA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (207, 11, 4, 3, 'ESRVIZIO EROGAZIONE SUSSIDI DI DISOCCUPAZIONE,ASSE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (208, 11, 4, 4, 'ISTITUTO NAZ. INFORTUNI,DENUNZIE INDENNITA\', NORME')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (209, 11, 4, 5, 'PATRONATO NAZ. DI ASSISTENZA SOCIALE-PROBLEMI SOCI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (210, 11, 4, 6, 'SINDACATI E CONFEDERAZIONI DEI LAVORATORI-UFFICI D')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (211, 11, 4, 7, 'LAVORO DELLE DONNE E DEI FANCIULLI, LAVORO NOTTURN')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (212, 11, 4, 8, 'LIBRETTI DI LAVORO, NORME,DISPOSIZIONI,ELENCHI,DOM')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (213, 11, 4, 9, 'CANTIERI DI LAVORO E DI RIMBOSCHIMENTO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (214, 11, 5, NULL, 'FIERE E MERCATI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (215, 11, 5, 1, 'FIERE ED ESPOSIZIONI, COSTITUZIONE, DISCIPINA,ATTI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (216, 11, 5, 2, 'MERCATO E FORO BOARIO,NORME,DISPOSIZIONI,REGOLAMEN')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (217, 11, 5, 3, 'COMMISSIONE MERCATI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (218, 11, 5, 4, 'COMITATO PROVINCIALE PREZZI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (219, 11, 6, NULL, 'PESI E MISURE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (220, 11, 6, 1, 'STATO UTENTI PESI E MISURE,COMPILAZIONE,VARIAZIONE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (221, 11, 6, 2, 'VERIFICHE PERIODICHE,UFFICIO E PERSONALE, SPESE OR')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (222, 11, 6, 3, 'PESE PUBBLICHE E PRIVATE, REGOLAMENTO E TARIFFE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (223, 11, 6, 4, 'UFFICIO METRICO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (224, 11, 7, NULL, 'CIRCOLARI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (225, 11, 7, 1, 'CIRCOLARI NORME E DISPOSIZIONI RIGUARDANTI LA 11\'')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (226, 11, 7, 2, 'MANIFESTI ED AVVISI AL PUBBLICO RIGUARDANTI LA 11\'')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (227, 12, NULL, NULL, 'STATO CIVILE. CENSIMENTO. STATISTICA DEMOGRAFIA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (228, 12, 1, NULL, 'STATO CIVILE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (229, 12, 1, 1, 'UFFICIO DI STATO CIVILE ED UFFICI STACCATI,NORME')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (230, 12, 1, 2, 'RICHIESTE ATTI E CERTIFICATI VARI,SITUAZIONI DI FA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (231, 12, 1, 3, 'NASCITE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (232, 12, 1, 4, 'MORTI,DENUNZIE, TRASCRIZIONI,RETTIFICHE,ATTI RELAT')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (233, 12, 1, 5, 'MATRIMONI,PUBBLICAZIONI,RICHIESTE,TRASCRIZIONI,ATT')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (234, 12, 1, 6, 'CITTADINANZA ITALIANA E STRANIERA,COGNOMI,CAMBIAME')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (235, 12, 1, 7, 'TUTELA DEI MINORENNI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (236, 12, 2, NULL, 'ANAGRAFE E TOPONOMASTICA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (237, 12, 2, 1, 'REGISTRO DI POPOLAZIONE, NORME E REGOLAMENTI,TOPON')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (238, 12, 2, 2, 'CAMBI DI RESIDENZA, ISCRIZIONI E CANCELLAZIONI,ATT')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (239, 12, 2, 3, 'MIGRAZIONI INTERNE, URBANESIMO, NORME E ATTI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (240, 12, 2, 4, 'FAMIGLIE NUMEROSE,NORME ATTI E PROVVEDIMENTI DEMOG')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (241, 12, 2, 5, 'ANAGRAFE SPECIALE ITALIANI RESIDENTI ALL\'ESTERO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (242, 12, 2, 6, 'ANAGRAFE DEI PENSIONATI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (243, 12, 2, 7, 'AUTENTIFICAZIONE DI FIRME ED AUTOCERTIFICAZIONI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (244, 12, 3, NULL, 'CENSIMENTO E STATISTICA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (245, 12, 3, 1, 'CENSIMENTI GENERALI DELLA POPOLAZIONE,ATTI RELATIV')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (246, 12, 3, 2, 'STATISTICHE DEMOGRAFICHE,ATTI , NORME')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (247, 12, 3, 3, 'STATO TRIMESTRALE DECESSI, INFORMAZIONI E RICHIEST')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (248, 12, 3, 4, 'CENTRO ELABORAZIONE DATI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (249, 12, 4, NULL, 'CIRCOLARI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (250, 12, 4, 1, 'CIRCOLARI,NORME RIGUARDANTI LA 12\' CATEGORIA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (251, 12, 4, 2, 'MANIFESTI E AVVISI AL PUBBLICO RIGUARDANTI LA 12\'')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (252, 13, NULL, NULL, 'ESTERI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (253, 13, 1, NULL, 'COMUNICAZIONI CON L\'ESTERO. STRANIERI IN ITALIA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (254, 13, 1, 1, 'CONSOLATI,RAPPRESENTANZE,AMBASCIATE,ATTI E CORRISP')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (255, 13, 1, 2, 'STATI ESTERI, COMUNICAZIONE, NORME, ATTI RICHIESTI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (256, 13, 1, 3, 'STRANIERI IN ITALIA,SOGGIORNO,NORME,SCHEDARIO DENU')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (257, 13, 1, 4, 'COMMERCIO ESTERO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (258, 13, 1, 5, 'C.E.E.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (259, 13, 2, NULL, 'EMIGRAZIONE ESTERA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (260, 13, 2, 1, 'EMIGRATI,RIMPATRIATI,NORME,PROVV. IN FAVORE EMIGRA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (261, 13, 2, 2, 'PASSAPORTI E LASCIAPASSARE,NORME,ATTI VARI,REGISTR')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (262, 13, 2, 3, 'ESPATRIO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (263, 13, 2, 4, 'COMMISSIONE PER L\'EMIGRAZIONE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (264, 13, 3, NULL, 'CIRCOLARI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (265, 13, 3, 1, 'CIRCOLARI, NORME  RELATIVE LA 13\' CATEGORIA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (266, 13, 3, 2, 'MANIFESTI E AVVISI AL PUBBLICO RIGUARDANTI LA 13\'')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (267, 14, NULL, NULL, 'OGGETTI DIVERSI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (268, 14, 1, NULL, 'OGGETTI DIVERSI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (269, 14, 1, 1, 'OGGETTI DIVERSI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (270, 14, 2, NULL, 'CIRCOLARI E NORME')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (271, 14, 2, 1, 'CIRCOLARI E NORME RIGUARDANTI LA 14\' CATEGORIA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (272, 14, 2, 2, 'MANIFESTI ED AVVISI AL PUBBLICO RIGUARDANTI LA 14\'')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (273, 15, NULL, NULL, 'PUBBLICA SICUREZZA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (274, 15, 1, NULL, 'PUBBLICA INCOLUMITA\', CALAMITA\', MANIFESTAZIONI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (275, 15, 1, 1, 'PUBBLICHE CALAMITA\',INCOLUMITA\' PUBBLICA,NORME,DISPO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (276, 15, 1, 2, 'SERVIZI DI PRONTO SOCCORSO E DI PUBBLICA NECESSITA\'')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (277, 15, 1, 3, 'GARE SPORTIVE, MANIFESTAZIONI E PROCESSIONI RELIGI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (278, 15, 1, 4, 'PROTEZIONE ANTIAEREA, PROGETTO, NORME,DISPOSIZIONI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (279, 15, 1, 5, 'CARTE D\' IDENTITA\', ELENCHI, ATTI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (280, 15, 1, 6, 'RICOVERI MENTECATTI,INDIVIDUI PERICOLOSI, NORME')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (281, 15, 1, 7, 'SOTTOSCRIZIONI PUBBLICHE, QUESTURE E COLLETTE D\'IN')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (282, 15, 2, NULL, 'POLVERI, MATERIE ESPLODENTI, ARMI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (283, 15, 2, 1, 'VENDITE, FABBRICAZIONE, TRASPORTO, DETENZIONE, MUN')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (284, 15, 2, 2, 'DISTRIBUTORI DI BENZINA, OLII MINERALI E MATERIALI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (285, 15, 2, 3, 'CALDAIE A VAPORE, NORME, DENUNZIE, LICENZE, ATTI R')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (286, 15, 2, 4, 'ARMI, FABBRICAZIONE, DETENZIONE,TRASPORTO,VENDITA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (287, 15, 2, 5, 'GAS TOSSICI E GAS COMPRESSI-LICENZE, NORME')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (288, 15, 2, 6, 'ACQUE GASSATE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (289, 15, 3, NULL, 'TEATRI E TRATTENIMENTI PUBBLICI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (290, 15, 3, 1, 'REGOLAMENTO SUI TEATRI, CINEMATOGRAFI, SALE DA BAL')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (291, 15, 3, 2, 'TRATRI,COMPAGNIE TEATRALI,PROGRAMMI, NORME,DISPOSI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (292, 15, 3, 3, 'CINEMATOGRAFI E CINEMATOGRAFIA, PROGRAMMI, NORME')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (293, 15, 3, 4, 'SALE DA BALLO, CIRCHI EQUESTRI, VEGLIONI, SALMBANC')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (294, 15, 3, 5, 'SPORT,TURISMO,SPETTACOLO,CORSE DI CAVALLI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (295, 15, 4, NULL, 'ESERCIZI PUBBLICI, ATTIVITA\' CONTROLLATE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (296, 15, 4, 1, 'ESERCIZI PUBBLICI, NORME, DISPOSIZIONI, ORARI, APE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (297, 15, 4, 10, 'PIANO COMMERCIALE PER GLI ESERCIZI PUBBLICI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (298, 15, 4, 11, 'LICENZA FRIGORIFERI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (299, 15, 4, 12, 'DENUNCIA AFFITTO O VENDITA DI FABBRICATI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (300, 15, 4, 13, 'AGENZIE PUBBLICHE - CORRIERI - INTERPRETI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (301, 15, 4, 2, 'ESERCIZI PUBBLICI, LICENZE, ELENCHI, GIOCHI LECITI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (302, 15, 4, 3, 'PERMESSI TEMPORANEI DI VENDITA PER FESTE E FIERE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (303, 15, 4, 4, 'REGISTRO MESTIERI AMBULANTI, DENUNZIE, NORME,ATTI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (304, 15, 4, 5, 'AGENTI DI PUBBLICA SICUREZZA, GUARDIE PARTICOLARI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (305, 15, 4, 6, 'AFFITTACAMERE, STALLI, RIMESSE, NORME, ATTI VARI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (306, 15, 4, 7, 'TIPOGRAFIE E FOTOGRAFIE, STAMPATI E MANIFESTI, DEN')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (307, 15, 4, 8, 'MOVIMENTO FORESTIERI, DENUNZIE, STATISTICHE VIAGGI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (308, 15, 4, 9, 'COMMISSIONE PER GLI ESERCIZI PUBBLICI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (309, 15, 5, NULL, 'MENDICITA\', PREGIUDICATI, AMMONITI, SORVEGLIATI...')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (310, 15, 5, 1, 'PROVVEDIMENTI CONTRO L\'ACCATTONAGGIO,NORME E DISPO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (311, 15, 5, 10, 'DROGATI ED INTOSSICATI DA STUPEFACENTI - LOTTA ANT')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (312, 15, 5, 2, 'PREGIUDICATI, AMMONITI, CONFINATI, SORVEGLIATI, PE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (313, 15, 5, 3, 'ESPULSI  DALL\'ESTERO NORME, ATTI, ELENCHI, INFORMA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (314, 15, 5, 4, 'FERMI E ARRESTI, MANDATI DI CATTIRA, DETENUTI EVAS')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (315, 15, 5, 5, 'SCARCERATI,REDUCI, ISTITUTI DI PENA, NORME, ELENCH')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (316, 15, 5, 6, 'RIMPATRII CON FOGLIO DI VIA OBBLIGATORIO,SPESE, RI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (317, 15, 5, 7, 'MINORENNI,DISCOLI,CORRIGENDI,RICOVERATI,ATTI,ELENC')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (318, 15, 5, 8, 'PROSTITUTE, MERETRICIO,CASE,FERMO DELLE VAGABONDE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (319, 15, 5, 9, 'MALATI PSICHICI - ORDINANZE DI RICOVERO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (320, 15, 6, NULL, 'AVVENIMENTI STRAORDINARI DI P.S.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (321, 15, 6, 1, 'TERREMOTI, INONDAZIONI, FRANE, SEGNALAZIONI E PROV')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (322, 15, 6, 2, 'SCIOPERI,TUMULTI,DISORDINI,SEGNALAZIONI E PROVVEDI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (323, 15, 6, 3, 'DISGRAZIE,OMICIDI,SUICIDI,INVESTIMENTI,SCOMPARSA P')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (324, 15, 6, 4, 'OGGETTI SMARRITI E RINVENUTI, NORME,ATTI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (325, 15, 6, 5, 'FURTI E RAPINE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (326, 15, 6, 6, 'CAROVANE ZINGARI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (327, 15, 7, NULL, 'SERVIZIO ANTI-INCENDI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (328, 15, 7, 1, 'INCENDI,ATTI,ELENCHI,NORME,PREVENZIONI,DENUNZIE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (329, 15, 7, 2, 'PERSONALE - SPESE - REGOLAMENTI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (330, 15, 7, 3, 'SERVIZIO ANTI INCENDI, NORME, CONTRIBUTI, ATTI VAR')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (331, 15, 8, NULL, 'CARABINIERI, AGENTI DI PS')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (332, 15, 8, 1, 'CARABINIERI  STAZIONE DEI CARABINIERI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (333, 15, 8, 2, 'AGENTI DI PS')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (334, 15, 9, NULL, 'CIRCOLARI E DISPOSIZIONI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (335, 15, 9, 1, 'NORME E CIRCOLARI RIGUARDANTI LA 15\' CATEGORIA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (336, 15, 9, 2, 'MANIFESTI ED AVVISI AL PUBBLICO RIGUARD. LA 15\' CA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (337, 2, NULL, NULL, 'OPERE PIE E BENFICENZA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (338, 2, 1, NULL, 'EX ECA ED ALTRE OPERE PIE - ASSISTENZA E BENEFICEN')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (339, 2, 1, 1, 'AMMINISTRAZIONE EX ECA, ATTI VARI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (340, 2, 1, 2, 'ALTRE OPERE PIE PER ASSISTENZA E BENEFICENZA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (341, 2, 1, 3, 'ANZIANI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (342, 2, 1, 4, 'MONTI DI PIETA\'')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (343, 2, 1, 5, 'LASCITI E DONAZIONI AD OPERE DI ASSISTENZA E BEN.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (344, 2, 1, 6, 'ASSISTENZA SOCIALE, ESENZIONE TICKET SANITARI ETC.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (345, 2, 1, 7, 'INVALIDI CIVILI, CIECHI E SORDOMUTI, INABILI DEL')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (346, 2, 1, 8, 'SOCCORSI INVERNALI, ELENCO ASSISTITI, SCHEDATI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (347, 2, 1, 9, 'ASSISTENZA A CITTADINI EXTRACOMUNITARI E APOLIDI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (348, 2, 2, NULL, 'RICOVERI, OSPIZI, ...')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (349, 2, 2, 1, 'OSPIZI E RICOVERI INDIGENTI, RETTE, DIMISSIONI E A')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (350, 2, 2, 2, 'SANATORI, DISPENSARI, ASSISTENZA E CURA TBC')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (351, 2, 2, 3, 'COLONIE MARINE , MONTANE, CLIMATICHE, FLUVIALI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (352, 2, 2, 4, 'ELENCO POVERI, INDIGENTI, INABILI, SOMMINISTRAZ.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (353, 2, 2, 5, 'OSPIZI E RICOVERI CIECHI E SORDOMUTI CRONICI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (354, 2, 2, 6, 'REFETTORI POVERI, CUCINE ECONOMICHE, DORMITORI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (355, 2, 2, 7, 'ASSISTENZA SANITARIA, TICKETS, NORMATIVA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (356, 2, 2, 8, 'ASSISTENZA DOMICIALIARE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (357, 2, 3, NULL, 'BREFOTROFI, ORFANATROFI, ESPOSTI, ECC...')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (358, 2, 3, 1, 'BREFOTROFI E ORFANOTROFI, RACHITICI, CONTRIBUTI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (359, 2, 3, 2, 'ESPOSTI ED ILLEGITTIMI, BALIATICO, SUSSIDI ETC.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (360, 2, 3, 3, 'ASSISTENZA GENERICA MADRI E FANCIULLI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (361, 2, 3, 4, 'CONSULTORI PEDIATRICI ED OSTETRICI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (362, 2, 3, 5, 'AFFIDAMENTO FAMILIARE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (363, 2, 4, NULL, 'SOCIETA\' DI MUTUO SOCCORSO, ISTITUTI DI INDOLE SOC')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (364, 2, 4, 1, 'SOCIETA\' OPERAIE DI MUTUO SOCCORSO E DI PUBBLICA AS')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (365, 2, 4, 2, 'CROCE ROSSA ITALIANA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (366, 2, 4, 3, 'COOPERATIVE DI ASSISTENZA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (367, 2, 4, 4, 'RACCOLTA CARTA, STRACCI, MATERIALE FERROSO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (368, 2, 4, 5, 'OBLAZIONI PER CALAMITA\' NATURALI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (369, 2, 5, NULL, 'LOTTERIE, TOMBOLE, FIERE DI BENEFICENZA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (370, 2, 5, 1, 'LOTTERIE E TOMBOLE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (371, 2, 5, 2, 'FIERE E SPETTACOLI DI BENEFICENZA, ATTI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (372, 2, 5, 3, 'CELEBRAZIONE DEL PANE, ECC.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (373, 2, 5, 4, 'BANCHI DI BENEFICENZA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (374, 2, 6, NULL, 'CIRCOLARI E NORME')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (375, 2, 6, 1, 'CIRCOLARI, NORME E DISPOSIZIONI DELLA II CAT.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (376, 2, 6, 2, 'MANIFESTI ED AVVISI AL PUBBLICO DELLA II CAT.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (377, 3, NULL, NULL, 'POLIZIA URBANA E RURALE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (378, 3, 1, NULL, 'PERSONALE GUARDIE VIGILI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (379, 3, 1, 1, 'GUARDIE E VIGILI MUNICIPALI ED URBANI, CONCORSI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (380, 3, 1, 2, 'GUARDIE BOSCHIVE E CAMPESTRI, CONCORSI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (381, 3, 1, 3, 'ACCALAPPIACANI, SPAZZINI, ECC., ATTI RELATIVI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (382, 3, 2, NULL, 'SERVIZI E REGOLAMENTI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (383, 3, 2, 1, 'REGOLAMENTO E SERVIZIO DI POLIZIA URBANA E RURALE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (384, 3, 2, 2, 'REGOLAMENTO E SERVIZIO DI NETTEZZA PUBBLICA, SPAZZ')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (385, 3, 2, 3, 'REGOLAMENTO E SERVIZIO DI AFFISSIONI E POSTEGGIO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (386, 3, 2, 4, 'VERIFICA E PUNZONATURA VEICOLI, NORME ECC.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (387, 3, 2, 5, 'PTOTEZIONE ANIMALI, VERBALI, DENUNZIE ECC.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (388, 3, 2, 6, 'OCCUPAZIONE PERMANENTE E TEMPORANEA DI AREE PUBBLI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (389, 3, 2, 7, 'BARCHE, BATTELLI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (390, 3, 3, NULL, 'CIRCOLAZIONE URBANA SEGNALAZIONI ED INDICAZIONI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (391, 3, 3, 1, 'REGOLAMENTO E SERVIZIO DI CIRCOLAZIONE URBANA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (392, 3, 3, 2, 'REGOLAMENTO E SERVIZIO DI AUTONOLEGGIO DA PIAZZA E')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (393, 3, 3, 3, 'PIANO URBANO DEL TRAFFICO, PARCHEGGI PUBBLICI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (394, 3, 4, NULL, 'CIRCOLARI E DISPOSIZIONI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (395, 3, 4, 1, 'CIRCOLARI, NORME E DISPOSIZIONI DELLA III CAT.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (396, 3, 4, 2, ' MANIFESTI ED AVVISI AL PUBBLICO DELLA III CAT.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (397, 4, NULL, NULL, 'SANITA\' ED IGIENE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (398, 4, 1, NULL, 'AUTORITA\' SANITARIE E PERSONALE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (399, 4, 1, 1, 'SERVIZIO SANITARIO NAZIONALE, NORME')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (400, 4, 1, 2, 'SERVIZIO SANITARIO REGIONALE, NORME')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (401, 4, 1, 3, 'UNITA\' SANITARIA LOCALE, AMMINISTRAZIONE E DIREZION')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (402, 4, 1, 4, 'DISTRETTO SANITARIO, COMITATO DI BASE DEL DISTRETT')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (403, 4, 1, 5, 'PERSONALE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (404, 4, 1, 6, 'SCUOLE E RIQUALIFICAZIONE DEL PERSONALE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (405, 4, 1, 7, 'ORDINI PROF. SANITARI, FARMACISTI, OSTETRICHE ..')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (406, 4, 2, NULL, 'EDIFICI E LOCALI SANITARI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (407, 4, 2, 1, 'PLESSI OSPEDALIERI, POLIAMBULATORI, AMBULATORI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (408, 4, 3, NULL, 'SERVIZI SANITARI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (409, 4, 3, 1, 'EDUCAZIONE SANITARIA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (410, 4, 3, 10, 'ASSISTENZA FARMACEUTICA E VIGILANZA SULLE FARMACIE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (411, 4, 3, 11, 'ACCERTAMENTI, CERTIFICAZI. E PRESTAZ.MEDICO-LEGAL')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (412, 4, 3, 12, 'CONSULTORI FAMILIARI, ATTIVITA\' INFORMATIVA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (413, 4, 3, 2, 'PREVENZIONE DELLE MALATTIE FISICHE  E PSICHICHE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (414, 4, 3, 3, 'PROTEZIONE SANITARIA MATERNO-INFANTILE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (415, 4, 3, 4, 'MEDICINA SCOLASTICA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (416, 4, 3, 5, 'MEDICINA DEL LAVORO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (417, 4, 3, 6, 'MEDICINA DELLO SPORT')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (418, 4, 3, 7, 'ASSISTENZA MEDICO-GENERICA, DOMICILIARE, AMBULATOR')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (419, 4, 3, 8, 'ASSISTENZA OSPEDALIERA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (420, 4, 3, 9, 'RIABILITAZIONE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (421, 4, 4, NULL, 'EPIDEMIE, MALATTIE CONTAGIOSE, EPIZOOZIE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (422, 4, 4, 1, 'EPIDEMIE, CONTAGI, ORDINANZE, NORME')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (423, 4, 4, 2, 'VACCINAZIONI, STATISTICHE, REGISTRI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (424, 4, 4, 3, 'PROFILASSI VETERINARIA, EPIZOOZIE, RAPPORTI ECC.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (425, 4, 4, 4, 'MONTICAZIONE E DEMONTICAZIONE, MIGRAZIONI, CERTIFI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (426, 4, 4, 5, 'IDROFOBIA, MORSICATURE, NORME, STATISTICA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (427, 4, 4, 6, 'AVIS')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (428, 4, 4, 7, 'DISINFEZIONI, DISINFETTANTI ED APPARECCHI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (429, 4, 5, NULL, 'SANITA\' MARITTIMA, LOCALI D\'ISOLAMENTO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (430, 4, 5, 1, 'SANITA\' MARITTIMA, IGIENE DEI PORTI, ORDINANZE ECC.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (431, 4, 5, 2, 'LAZZARETTI, LOCALI D\'ISOLAMENTO, ELENCHI, ATTI VAR')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (432, 4, 6, NULL, 'IGIENE PUBBLICA, REGOLAMENTI, MACELLI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (433, 4, 6, 1, 'REGOLAMENTO D\'IGIENE, ORDINANZE, ATTI RELATIVI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (434, 4, 6, 10, 'ACCERTAMENTI, CERTIFICAZIONI NELL\'IGIENE PUBBLICA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (435, 4, 6, 11, 'REGOLAMENTO PER ATTIVITA\' DI BARBIERE E PARRUCCHIER')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (436, 4, 6, 12, 'FABBRICHE ACQUA GASSATA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (437, 4, 6, 13, 'CELLE FRIGORIFERE, FRIGORIFERI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (438, 4, 6, 14, 'ABBEVERATOI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (439, 4, 6, 2, 'REGOLAMENTI E NORME DI POLIZIA SANITARIA  E ZOOIAT')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (440, 4, 6, 3, 'CONCIMAIE, REGOLAMENTI, ORDINANZE, STATISTICHE ECC')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (441, 4, 6, 4, 'MACELLO, PESCHERIA, BASSA MACELLERIA, REGOLAMENTI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (442, 4, 6, 5, 'BAGNI E PISCINE PUBBLICHE, FABBRICHE INSALUBRI, NO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (443, 4, 6, 6, 'AMBIENTE - ARIA - SUOLI - ECOLOGIA - DEPURAZIONE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (444, 4, 6, 7, 'IGIENE DEGLI EDIFICI SCOLASTICI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (445, 4, 6, 8, 'IGIENE NEI POSTI DI LAVORO, RUMOROSITA\'')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (446, 4, 6, 9, 'IGIENE DELLA PRODUZ. LAVORAZ... DI ALIMENTI E BEVA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (447, 4, 7, NULL, 'POLIZIA MORTUARIA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (448, 4, 7, 1, 'REGOLAMENTO CIMITERIALE, OSSARI, LAPIDI ECC.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (449, 4, 7, 2, 'PERSONALE DEI CIMITERI, NOMINE, ASSEGNI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (450, 4, 7, 3, 'CIMITERI E COLOMBARI, TOMBE, COSTRUZIONE ECC.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (451, 4, 7, 4, 'PERMESSI DI SEPPELLIMENTO E D\'ESUMAZIONE, AUTOPSIE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (452, 4, 7, 5, 'SERVIZIO TRASPORTI FUNEBRI, REGOLAMENTO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (453, 4, 7, 6, 'COMMISSIONE VIGILANZA CIMITERO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (454, 4, 8, NULL, 'CIRCOLARI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (455, 4, 8, 1, 'NORME, DISPOSIZIONI E CIRCOLARI DELLA IV CAT.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (456, 4, 8, 2, 'MANIFESTI ED AVVISI AL PUBBLICO DELLA IV CAT.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (457, 5, NULL, NULL, 'FINANZE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (458, 5, 1, NULL, 'PROPRIETA\' COMUNALI. INVENTARI BENI. DEBITI E CREDI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (459, 5, 1, 1, 'ATTI CANONI USI CENSI DONAZIONI EREDITA INVENTARI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (460, 5, 1, 10, 'TARIFFE PORTUALI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (461, 5, 1, 2, 'ACQUISTI ED ALIENAZIONI, ATTI, CONTRATTI, APPALTI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (462, 5, 1, 3, 'AFFITTANZE, CONTRATTI, APPALTI ...')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (463, 5, 1, 4, 'COSTRUZIONE E MANUTENZIONE BENI RUSTICI, ASSICUR.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (464, 5, 1, 5, 'TITOLI DI RENDITA PUBBLICA,ELENCHI, ACQUISTI,CAUZ.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (465, 5, 1, 6, 'DEBITI NON MUTUATI, NON CONSOLIDATI O FUORI BILANC')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (466, 5, 1, 8, 'VENDITA TAGLIO BOSCHI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (467, 5, 1, 9, 'VENDITA OGGETTI FUORI USO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (468, 5, 10, NULL, 'CIRCOLARI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (469, 5, 10, 1, 'CIRCOLARI, NORME, DISPOSIZIONI DELLA V CAT.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (470, 5, 10, 2, 'MANIFESTI ED AVVISI DELLA V CATEGORIA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (471, 5, 2, NULL, 'BILANCI, CONTI, CONTABILITA\'. VERIFICHE DI CASSA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (472, 5, 2, 1, 'BILANCI DI PREVISIONE, FINANZA LOCALE, STORNI ECC.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (473, 5, 2, 2, 'CONTI CONSUNTIVI, PEZZE GIUSTIFICATIVE ECC.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (474, 5, 2, 3, 'VERIFICHE DI CASSA E DI CHIUSURA DI ESERCIZIO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (475, 5, 2, 4, 'IMPOSTE E TASSE ED ALTRI TRIBUTI A CARICO DEL COMU')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (476, 5, 2, 5, 'CONTABILITA\' ARRETRATA E SPECIALE, CORTE DEI CONTI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (477, 5, 2, 6, 'PIANI FINANZIARI - PIANI ECONOMICI -')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (478, 5, 2, 7, 'ALBI BENEFICIARI PROVVIDENZE ECONOMICHE, RENDICONT')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (479, 5, 3, NULL, 'IMPOSTE E TASSE ERARIALI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (480, 5, 3, 1, 'IMPOSTA SUL REDDITO PERSONE FISICHE E GIURIDICHE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (481, 5, 3, 2, 'RUOLI, AVVISI, RICORSI, PUBBLICAZIONI, DICHIARAZ,')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (482, 5, 3, 3, 'COMMISSIONI TRIBUTARIE PROV. E REGIONALI, IMPOSTE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (483, 5, 3, 4, 'ANAGRAFE TRIBUTARIE, NORME, ATTI, CODICE FISCALE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (484, 5, 3, 5, 'CONTRIBUTI SINDACALI, NORME, RUOLI, NOTIFICHE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (485, 5, 3, 6, 'IMPOSTA SUL VALORE AGGIUNTO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (486, 5, 3, 7, 'CONCESSIONI TASSE GOVERNATIVE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (487, 5, 4, NULL, 'IMPOSTE E TASSE COMUNALI .....')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (488, 5, 4, 1, 'ICIAP, TOSAP, TARIFFE E REGOLAMENTI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (489, 5, 4, 2, 'ACCERTAMENTI, DENUNZIE, RUOLI, SGRAVI ECC.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (490, 5, 4, 3, 'IMPOSTE E TASSE PROVINCIALI, TARIFFE E REGOLAMENTI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (491, 5, 4, 4, 'CONSIGLIO TRIBUTARIO, COMMISSIONI TRIBUTARIE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (492, 5, 4, 5, 'DIRITTI DI SEGRETERIA E DI STATO CIVILE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (493, 5, 4, 6, 'CONCESSIONE TASSE COMUNALI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (494, 5, 4, 7, 'CONTRIBUTI PER ONERI DI URBANIZZAZIONE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (495, 5, 4, 8, 'SCUOLE ELEMENTARI E MEDIE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (496, 5, 5, NULL, 'DIRITTI DI MACELLAZIONE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (497, 5, 5, 1, 'DIRITTI E PROVENTI VARI DI MACELLAZIONE PROPRIA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (498, 5, 6, NULL, 'CATASTO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (499, 5, 6, 1, 'CATASTO E MAPPE, NORME, REVISIONI ECC.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (500, 5, 6, 2, 'COMMISSIONE CENSUARIA COMUNALE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (501, 5, 6, 3, 'CLASSIFICAZIONE TERRENI, IPOTECHE, ESTIMI CATASTAL')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (502, 5, 7, NULL, 'PRIVATIVE, UFFICI FINANZIARI E MONETE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (503, 5, 7, 1, 'MONOPOLI, PRIVATIVE ECC.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (504, 5, 7, 2, 'UFFICIO DEL REGISTRO E DELLE IMPOSTE, NORME')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (505, 5, 7, 3, 'DOGANE E TASSE DOGANALI, CONTRABBANDO, NORME')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (506, 5, 7, 4, 'ZECCA GOVERNATIVA, MONETE E DENARO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (507, 5, 7, 5, 'BANCHI DEL LOTTO, LOTTERIE E TOMBOLE, NORME ECC.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (508, 5, 7, 6, 'POLIZIA GIUDIZIARIA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (509, 5, 8, NULL, 'MUTUI E PRESTITI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (510, 5, 8, 1, 'MUTUI PASSIVI, NORME, ATTI, DOMANDE NON RIUSCITE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (511, 5, 8, 2, 'MUTUI CON CASSA DEPOSITO E PRESTITI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (512, 5, 8, 3, 'MUTUI CON CASSE DI RISPARMIO, BANCHE E ENTI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (513, 5, 8, 4, 'MUTUI ATTIVI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (514, 5, 8, 5, 'MUTUI DIVERSI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (515, 5, 8, 6, 'VARIAZIONI TASSI DI SCONTO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (516, 5, 8, 7, 'CONTRIBUTI AD ENTI VARI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (517, 5, 9, NULL, 'SERVIZIO DI ESATTORIA E TESORERIA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (518, 5, 9, 1, 'SERVIZIO DI TESORERIA, APPALTO, NOMINA, CONTRATTO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (519, 5, 9, 2, 'INTERESSI PER ANTICIPAZIONI DI CASSA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (520, 5, 9, 3, 'PROVENTI, INCHIESTE, SORVEGLIANZE ECC.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (521, 5, 9, 4, 'DEPOSITI CAUZIONALI DI TERZI IN CONSEGNA AL TESORI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (522, 5, 9, 5, 'TITOLI DEL COMUNE IN DEPOSITO AL TESORIERE, ELENCH')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (523, 5, 9, 6, 'CONCESSIONARIO DELLA RISCOSSIONE DELLE IMPOSTE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (524, 5, 9, 7, 'AGENTI DELLA RISCOSSIONE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (525, 6, NULL, NULL, 'GOVERNO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (526, 6, 1, NULL, 'LEGGI E DECRETI. FOGLI PERIODICI,GOVERN. GOVERNO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (527, 6, 1, 1, 'LEGGI DECRETI-GAZZETTA UFF.-BOLLETTINO UFF. REGION')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (528, 6, 1, 2, 'BOLLETTINO UFFICIALE DELLA PREFETTURA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (529, 6, 1, 3, 'CAPO DELLO STATO-MINISTRI E FUNZION.- GOVERNO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (530, 6, 1, 4, 'CIRCOLARI, MESSAGGI, MANIFESTI PROCLAMI DEL GOVENO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (531, 6, 1, 5, 'AFFARI CIVILI E  DI  GOVERNO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (532, 6, 1, 6, 'PREFETTO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (533, 6, 1, 7, 'RAPPORTI TRA STATO E REGIONE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (534, 6, 2, NULL, 'FESTE NAZIONALI, COMMEMOR, CERIMONIE,RICEVIMENTI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (535, 6, 2, 1, 'FESTE NAZIONALI,SOLENNITA\' CIVILI, BANDIERA E INNI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (536, 6, 2, 2, 'COMMEMORAZ.,CERIMONIE,VISITE DI PERSONALITA\',MANIF')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (537, 6, 3, NULL, 'ELEZIONI POLITICHE E LISTE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (538, 6, 3, 1, 'ELENCHI PREPARATORI,LISTE PERMANENTI E DI SEZIONE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (539, 6, 3, 2, 'ISCRIZIONI E CANCELLAZIONI, ATTI RELATIVI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (540, 6, 3, 3, 'SEZIONI ELETTORALI, LOCALI CABINE, URNE E ARREDI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (541, 6, 3, 4, 'SEGGI ELETTORALI, COMPONENTI,NOMINE,ATTI RELATIVI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (542, 6, 3, 5, 'COMM. ELETTORALE COMUNALE E CIRCONDARIALE,ATTI REL')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (543, 6, 3, 6, 'ESITI E STATISTICHE ELEZIONI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (544, 6, 3, 7, 'NORME  E DISPOSIZIONI, SPAZI PROPAGANDA ELETTORALE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (545, 6, 3, 8, 'REFERENDUM')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (546, 6, 3, 9, 'CAMERA DEI DEPUTATI,SENATO DELLA REPUBB.,PARLAMENT')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (547, 6, 4, NULL, 'AZIONI DI VALOR CIVILE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (548, 6, 4, 1, 'AZIONI DI VALOR CIVILE,RICOMPENSE,MEDAGLIE,BENEMER')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (549, 6, 5, NULL, 'CONCESSIONI GOVERNATIVE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (550, 6, 5, 1, 'CONCESSIONI VARIE,TITOLI NOBILIARI,ONORIFICIENZE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (551, 6, 5, 2, 'CONSULTA ARALDICA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (552, 6, 5, 3, 'PENSIONI E SUSSIDI GOVERNATIVI STRAORDINARI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (553, 6, 6, NULL, 'PARTITI E LORO ORGANIZZAZIONI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (554, 6, 6, 1, 'PARTITI E LORO ORGANIZZAZIONI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (555, 6, 6, 2, 'NORME ED ATTI GENERALI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (556, 6, 6, 3, 'ASSOCIAZIONI DIVERSE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (557, 6, 7, NULL, 'REGIONE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (558, 6, 7, 1, 'LEGGI E DECRETI REGIONALI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (559, 6, 7, 2, 'ORGANI DELLA REGIONE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (560, 6, 7, 3, 'RAPPORTO TRA REGIONE E COMUNE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (561, 6, 7, 4, 'CONTROLLO SUI COMUNI E CONSORZI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (562, 6, 7, 5, 'UFFICI REGIONALI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (563, 6, 7, 6, 'RIVISTE E PUBBLICAZIONI REGIONALI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (564, 6, 8, NULL, 'CIRCOLARI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (565, 6, 8, 1, 'CIRCOLARI,NORME E DISPOSIZIONI GENERALI DELLA 6\'')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (566, 6, 8, 2, 'MANIFESTI ED AVVISI AL PUBBLICO RIGUARDANTI LA 6\'')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (567, 7, NULL, NULL, 'GRAZIA GIUSTIZIA E CULTO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (568, 7, 1, NULL, 'CIRCOSCRIZIONE GIUDIZIARIA. PRETURA, TRIBUNALE...')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (569, 7, 1, 1, 'TRIB.DEI MINORI,GIUDICE DI PACE,PRETURA, TRIBUNALE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (570, 7, 1, 2, 'SPESE PER DETTI UFFICI, RIPARTO , VARIE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (571, 7, 1, 3, 'BANDI E NOTIFICHE GIUDIZIARIE,CERTIFICATI DI RITO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (572, 7, 1, 4, 'PROTESTI CAMBIARI ESEGUITI DAL SEGRETARIO,NORME')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (573, 7, 1, 5, 'GRATUITO PATROCINIO,NORME CERTIFICATI INTERDIZIONI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (574, 7, 1, 6, 'AMNISTIE,GRAZIE,INDULTI,PERDONI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (575, 7, 2, NULL, 'ASSESSORI. GIURATI ALLE CORTI D\'ASSISE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (576, 7, 2, 1, 'FESTE NAZIONALI, SOLENNITA\' CIVILI, BANDIERA E INN')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (577, 7, 2, 2, 'COMMEMORAZ., CERIMONIE, VISITE DI PERSONALITA\'')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (578, 7, 3, NULL, 'CARCERI MANDAMENTALI E GIUDIZIALI. PENITENZIARI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (579, 7, 3, 1, 'CASA CIRCONDARIALE E SPESE RELATIVE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (580, 7, 3, 2, 'PERSONALE,NOMINE,ASSEGNI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (581, 7, 3, 3, 'COMM. VISITATRICE E DI BENEFICIENZA AI CARCERATI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (582, 7, 3, 4, 'CARCERI GIUDIZIARIE PENITENZIARI, SPESE RELATIVE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (583, 7, 4, NULL, 'UFFICIO E GIUDICE CONCILIATORE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (584, 7, 4, 1, 'CONCILIATORE E VICE,NORME NOMINE LISTE,CANCELLIERE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (585, 7, 4, 2, 'UFFICIO DEL CONCILIATORE, REGISTRI, ATTI , UDIENZE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (586, 7, 4, 3, 'CONSIGLI DI FAMIGLIA E DI TUTELA,CONVOCAZIONI,NORM')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (587, 7, 4, 4, 'NOTIFICHE MESSO CONCILIATORE,PIGNORAMENTI,ASTE VEN')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (588, 7, 4, 5, 'DIFENSORE CIVICO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (589, 7, 5, NULL, 'ARCHIVIO NOTARILE. NOTAI E ALTRE PROFESSIONI LEGAL')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (590, 7, 5, 1, 'ARCHIVIO NOTARILE,PERSONALE RELATIVO,SPESE INERENT')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (591, 7, 5, 2, 'NOTAI,ALBO EL ELENCO DEI NOTAI, SINDACATO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (592, 7, 5, 3, 'AVVOCATI ,PROCURATORI ,ALTRE PROFF.LEGALI ,ALBI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (593, 7, 6, NULL, 'CULTO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (594, 7, 6, 1, 'EDIFICI ADDETTI AL CULTO,LEGATI DI CULTO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (595, 7, 6, 2, 'CLERO, PARROCI ,SEMINARI, ISTITUTI RELIGIOSI,ORDIN')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (596, 7, 6, 3, 'OPERE,ASS. E CORPORAZIONI LAICALI D\'INDOLE RELIGIO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (597, 7, 6, 4, 'COMITATO ANTIBLASFEMO, PROPAGANDA RELIGIOSA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (598, 7, 6, 5, 'CULTI E RELIGIONI NON CATTOLICHE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (599, 7, 7, NULL, 'CIRCOLARI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (600, 7, 7, 1, 'CIRCOLARI NORME DISPOSIZIONI D\'INDOLE DELLA 7\' CAT')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (601, 7, 7, 2, 'GIUSTIZIA AMMINISTRATIVA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (602, 7, 7, 3, 'MANIFESTI ED AVVISI AL PUBBLICO RIGUARDANTI LA 7\'')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (603, 8, NULL, NULL, 'LEVA, TRUPPE, SERVIZI MILITARI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (604, 8, 1, NULL, 'LEVA DI TERRA, DI MARE E D\'ARIA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (605, 8, 1, 1, 'ELENCHI PREPARATORI,LISTE DI LEVA,SPESE LOCALI ...')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (606, 8, 1, 2, 'VISITE D\'ARRUOLAMENTO,UFFICIO LEVA,RIFORMATI NORME')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (607, 8, 1, 3, 'RUOLI MATRICOLATI,COPIE,NORME,RICHIESTE,ATTI RELAT')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (608, 8, 1, 4, 'CHIAMATA ALLE ARMI,PER ISTRUZIONE,LICENZE,CONGEDI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (609, 8, 1, 5, 'ARRUOLAMENTI SPECIALI,VOLONTARI,CORSI ALLIEVI,NORM')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (610, 8, 1, 6, 'OBIETTORI DI COSCIENZA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (611, 8, 2, NULL, 'SERVIZI MILITARI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (612, 8, 2, 1, 'COMANDI MILITARI,DISCIPLINA DI GUERRA,PROVV.ANNONA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (613, 8, 2, 2, 'MOBILITAZIONE CIVILE,COMITATO DI RESISTENZA CIVILE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (614, 8, 2, 3, 'REQUISIZIONI QUADRUPEDI,VEICOLI E DERRATE,NORME')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (615, 8, 2, 4, 'DANNI DI GUERRA,DENUNZIE LIQUIDAZIONI,SERVITU\' MIL')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (616, 8, 2, 5, 'SUSSIDI MILITARI,COMMISSIONE COMUNALE,CONTABILITA\'')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (617, 8, 2, 6, 'UFFICIO NOTIZIE,NORME,ATTI RELATIVI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (618, 8, 2, 7, 'AFFARI MILITARI STAORDINARI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (619, 8, 3, NULL, 'TIRO A SEGNO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (620, 8, 3, 1, 'SOCIETA\' DI TIRO A SEGNO,SEZIONI SEDI CONTRIBUTI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (621, 8, 3, 2, 'POLIGONI DI TIRO,GARE,SUSSIDI,NORME,ATTI RELATIVI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (622, 8, 4, NULL, 'COMBATTENTI E LORO FAMIGLIE. PENSIONI DI GUERRA ..')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (623, 8, 4, 1, 'PENSIONI DI GUERRA,POLIZZE EX COMBATTENTI,ATTI REL')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (624, 8, 4, 2, 'COMBATTENTI,REDUCI,PARTIGIANI,PATRIOTTI,MORTI DISP')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (625, 8, 4, 3, 'ORFANI E VEDOVE,MADRE E FAMIGLIE DI CADUTI,NORME')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (626, 8, 4, 4, 'DECORATI,ONORIFICENZE,COMMEMORAZIONI, MONUMENTI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (627, 8, 5, NULL, 'CASERME ED ALLOGGI MILITARI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (628, 8, 5, 1, 'CASERME FORTEZZE OSPEDALI INFERMERIE,NORME')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (629, 8, 5, 2, 'ALLOGGI MILITARI, NORME, RUOLI OBBLIGATI, SPESE...')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (630, 8, 5, 3, 'CAMPI DI ISTRUZIONE MILITARE,PIAZZE D\'ARMI, NORME')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (631, 8, 6, NULL, 'CIRCOLARI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (632, 8, 6, 1, 'CIRCOLARI,NORME RIGUARDANTI L\'8\' CAT.')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (633, 8, 6, 2, 'MANIFESTI ED AVVISI AL PUBBLICO RIGUARDANTI L\'8\'')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (634, 9, NULL, NULL, 'ISTRUZIONE E CULTURA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (635, 9, 1, NULL, 'AUTORITA\' SCOLASTICHE. INSEGNANTI.  ISTITUZIONI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (636, 9, 1, 1, 'CENTRO CONSORTILE SCOLASTICO,COMM.VIGILANZA,AUTORI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (637, 9, 1, 2, 'INSEGNANTI SCUOLE SPECIALI,PERSONALE SUBALTERNO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (638, 9, 1, 3, 'MUTUALITA\' SCOLASTICA, BORSE DI STUDIO E SUSSIDI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (639, 9, 1, 4, 'COMM.GIOVENTU\' ITALIANA,GIOCHI DELLA GIOVENTU\'')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (640, 9, 1, 5, 'CONSIGLIO DI DISTRETTO SCOLASTICO,ASSOC. GENITORI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (641, 9, 1, 6, 'SERVIZIO MEDICO, PSICO-PEDAGOGICO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (642, 9, 2, NULL, 'ASILI D\'INFANZIA E SCUOLE ELEMENTARI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (643, 9, 2, 1, 'ASILI NIDO,SCUOLE MATERNE,PERSONALE INSEGNANTE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (644, 9, 2, 2, 'SCUOLE ELEMENTARI,EDIFICI,COSTRUZIONE MANUTENZIONE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (645, 9, 2, 3, 'SC. ELEMENTARI,ESAMI,APERTURA E CHIUSURA,')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (646, 9, 2, 4, 'CONTRIBUTI SCOLASTICI ALLO STATO E DALLO STATO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (647, 9, 2, 5, 'MONTE PENSIONI INSEGNANTI,ORFANI E PENSIONATI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (648, 9, 2, 6, 'MATERIALE SCOLASTICO,STAMPATI-RADIO-TV-NELLE SCUOL')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (649, 9, 2, 7, 'TRASPORTO ALUNNI,ASSISTENZA SCOLASTICA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (650, 9, 2, 8, 'REFEZIONE SCOLASTICA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (651, 9, 2, 9, 'ORGANI COLLEGIALI SCUOLA MATERNA ED ELEMENTARE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (652, 9, 3, NULL, 'EDUCATORI COMUNALI. ISTITUZIONI GOVERNATIVE .....')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (653, 9, 3, 1, 'EDUCATORI E COLLEGI, SCUOLE ARTIGIANE E DI AVVIAME')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (654, 9, 3, 2, 'SCUOLE MUSICALI,SERALI,CORALI E BELLE ARTI, BANDA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (655, 9, 3, 3, 'CIRCOLI ED ASSOCIAZIONI DEI CULTURA E RITROVO,TEMP')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (656, 9, 3, 4, 'SOCIETA\' SPORTIVE,PALESTRE GINNICHE,CAMPI SPORTIVI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (657, 9, 3, 5, 'ISTITUTI D\'ARTE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (658, 9, 4, NULL, 'SCUOLE MEDIE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (659, 9, 4, 1, 'GINNASI E LICEI, ISTITUZIONE,FUNZIONAMENTO,NORME')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (660, 9, 4, 2, 'CONVITTI E COLLEGI,ISTITUZIONI DI EDUCAZIONE PRIVA')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (661, 9, 4, 3, 'ISTITUTI TECNICI, INDUSTRIALI E COMMERCIALI,NORME')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (662, 9, 4, 4, 'ISTITUTI MAGISTRALI,PROFESSIONALI E COMPLEMENTARI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (663, 9, 4, 5, 'SCUOLE AGRARIE,NORME, ATTI RELATIVI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (664, 9, 4, 6, 'CONSIGLIO D\'ISTITUTO ED ALTRI ORGANI COLLEGIALI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (665, 9, 4, 7, 'TIROCINI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (666, 9, 4, 8, 'ISTITUTO COMPRENSIVO SCUOLE ELEMENTARI E MEDIE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (667, 9, 5, NULL, 'UNIVERSITA\'')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (668, 9, 5, 1, 'UNIVERSITA\',COSTITUZIONE, EDIFICI,ATTI RELATIVI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (669, 9, 5, 2, 'SCUOLE SUPERIORI,COSTITUZIONE,EDIFICI,ATTI RELATIV')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (670, 9, 5, 3, 'ACCADEMIA BELLE ARTI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (671, 9, 6, NULL, 'ISTITUTI SCIENTIFICI. BIBLIOTECHE. MUSEI...')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (672, 9, 6, 1, 'ISTITUTI SCIENTIFICI IN GENERE,NORME ED ATTI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (673, 9, 6, 2, 'BIBLIOTECHE,COSTITUZIONE REGOLAMENTI,CENTO DI LETT')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (674, 9, 6, 3, 'GALLERIE,PINACOTECHE,MUSEI,SOVRINTENDENZA BELLE AR')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (675, 9, 6, 4, 'SOCIETA\' DANTE ALIGHIERI,ISTITUTI DI CULTURA ED AN')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (676, 9, 6, 5, 'ESPOSIZIONI,MANIFESTAZIONI,CONGRESSI ATTIVITA\' CUL')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (677, 9, 6, 6, 'DIRITTO ALLO STUDIO')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (678, 9, 6, 7, 'ANTICHITA\' E BELLE ARTI,BENI CULTURALI,OGGETTI D\'A')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (679, 9, 7, NULL, 'CIRCOLARI')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (680, 9, 7, 1, 'CIRCOLARI,NORME,DISPSIZIONI RIGUARDANTI LA 9\' CATE')
;;
insert into Anagrafiche.CategorieArchivio (IDCategoriaArchivio, Categoria, Classe, Fascicolo, Descrizione) values (681, 9, 7, 2, 'MANIFESTI ED AVVISI AL PUBBLICO RIGUARDANTI LA 9\'')
;;

Anagrafiche.Relazioni

Le relazioni descrivono il ''modo'' in cui due soggetti sono collegati tra loro. Esempi potrebbero essere il Sindaco (persona) di un Comune (ente), o la filiale (azienda) della casa madre (azienda).

Informazioni sui singoli campi

IDRelazione
Identificativo univoco della relazione
Descrizione
Descrizione del sesso
...Asx
L'elemento di sinistra può essere un'azienda
...Psx
L'elemento di sinistra può essere una persona
...Esx
L'elemento di sinistra può essere un ente
...Adx
L'elemento di destra può essere un'azienda
...Pdx
L'elemento di destra può essere una persona
...Edx
L'elemento di destra può essere un ente

Generatore Anagrafiche.Gen_IDRelazione

dipende da
Script Anagrafiche
create sequence Anagrafiche.Gen_IDRelazione

Anagrafiche.Relazioni

dipende da
create table Anagrafiche.Relazioni
(
 IDRelazione smallid_t not null,
 Descrizione tinystring_t,
 Asx boolean_t default FALSE,
 Psx boolean_t default FALSE,
 Esx boolean_t default FALSE,
 Adx boolean_t default FALSE,
 Pdx boolean_t default FALSE,
 Edx boolean_t default FALSE,

 constraint PKRelazione primary key (IDRelazione)
)

Permessi di accesso

Permessi di accesso a Anagrafiche.Relazioni

dipende da
Script Anagrafiche.Relazioni
grant all privileges on  Anagrafiche.Relazioni to group amministratore
;;
grant select on Anagrafiche.Relazioni to public
;;
grant all privileges on Anagrafiche.Gen_IDRelazione to group amministratore

Dati di base

Anagrafiche.Relazioni di base

dipende da
Script Permessi di accesso a Anagrafiche.Relazioni
insert into Anagrafiche.Relazioni (IDRelazione, Descrizione, Asx, Psx, Esx, Adx, Pdx, Edx)
  values (nextval('Anagrafiche.Gen_IDRelazione'), 'relazionato con', TRUE, TRUE, TRUE, TRUE, TRUE, TRUE)
;;

Anagrafiche.RelazioniSoggetto

Tabella di collegamento delle relazioni ai soggetti.

Informazioni sui singoli campi

IDRelazioneSoggetto
Identificativo univoco dell'associazione soggetto gruppo
IDRelazione
Identificativo della relazione
IDSoggetto
Identificativo del soggetto
IDSoggettoRelazionato
Descizione del soggetto relazionato
DataNascita
Data di inizio validità della relazione
DataCessazione
Data di fine validità della relazione

Generatore Anagrafiche.Gen_IDRelazioneSoggetto

dipende da
Script Anagrafiche
create sequence Anagrafiche.Gen_IDRelazioneSoggetto

Anagrafiche.RelazioniSoggetto

dipende da
create table Anagrafiche.RelazioniSoggetto
(
 IDRelazioneSoggetto largeid_t not null,
 IDRelazione smallid_t,
 IDSoggetto largeid_t,
 IDSoggettoRelazionato largeid_t,
 DataNascita date_t,
 DataCessazione date_t,

 constraint PK_RelazioneSoggetto primary key (IDRelazioneSoggetto)
) inherits (TimeStamped)

Chiavi esterne

FK Anagrafiche.RelazioniSoggetto->Anagrafiche.Soggetti

dipende da
alter table Anagrafiche.RelazioniSoggetto
       add constraint fk_RS_IDSoggetto foreign key (IDSoggetto)
           references Anagrafiche.Soggetti (IDSoggetto)
                      on update cascade
;;
alter table Anagrafiche.RelazioniSoggetto
       add constraint fk_RS_IDSoggettoRelazionato foreign key (IDSoggettoRelazionato)
           references Anagrafiche.Soggetti (IDSoggetto)
                      on update cascade

FK Anagrafiche.RelazioniSoggetto->Anagrafiche.Relazioni

dipende da
alter table Anagrafiche.RelazioniSoggetto
       add constraint fk_RS_IDRelazione foreign key (IDRelazione)
           references Anagrafiche.Relazioni (IDRelazione)
                      on update cascade

Aggiornamento timestamp dei record

Inserimento record Anagrafiche.RelazioniSoggetto

dipende da
create function Anagrafiche.inizializza_relazionisoggetto()
returns trigger as '
begin
  if new.IDRelazioneSoggetto is NULL or new.IDRelazioneSoggetto = 0 then
    new.IDRelazioneSoggetto = nextval(''Anagrafiche.Gen_IDRelazioneSoggetto'');
  end if;
  return new;
end;
' language plpgsql;

create trigger trg_ins_init_relazionesoggetto
  before insert on Anagrafiche.RelazioniSoggetto
    for each row execute procedure Anagrafiche.inizializza_relazionisoggetto();

create trigger trg_ins_ts_a_relazionisoggetto
  before insert on Anagrafiche.RelazioniSoggetto
    for each row execute procedure inizializza_timestamp();

Aggiornamento timestamp Anagrafiche.RelazioniSoggetto

dipende da
Script Anagrafiche.RelazioniSoggetto
create trigger trg_upd_ts_a_relazionisoggetto
  before update on Anagrafiche.RelazioniSoggetto
    for each row execute procedure aggiorna_timestamp();

Permessi di accesso

Permessi di accesso a Anagrafiche.RelazioniSoggetto

dipende da
Script Anagrafiche.RelazioniSoggetto
grant all privileges on Anagrafiche.RelazioniSoggetto to group amministratore
;;
grant select,insert,update,delete on Anagrafiche.RelazioniSoggetto to group anagrafiche
;;
grant select on Anagrafiche.RelazioniSoggetto to public
;;
grant update on Anagrafiche.Gen_IDRelazioneSoggetto to group amministratore
;;
grant update on Anagrafiche.Gen_IDRelazioneSoggetto to group anagrafiche
Visibilità delle relazioni

Per ogni relazione (tizio è dipendente della tale azienda) esiste una relazione di senso opposto (la tale azienda ha tra i suoi dipendenti tizio). Tramite la vista RelazioniSoggettoB viene ottenuta una tabella con un doppio record per ogni inserimento in RelazioniSoggetto, rispettivamente con IDSoggetto e IDSoggettoRelazionato invertiti tra loro, un flag che indica la direzione, e la chiave primaria in negativo (per mantenere univocità).

In questo modo è possibile selezionare tramite IDSoggetto le relazioni di un soggetto, e sapere che direzione utilizzare per ricostruire la semantica della frase.

Vista relazioni e relazioni inverse

dipende da
Script Anagrafiche.RelazioniSoggetto
create view Anagrafiche.RelazioniSoggettoV as
  select rs.IDRelazioneSoggetto
       , rs.IDRelazione
       , rs.IDSoggetto
       , rs.IDSoggettoRelazionato
       , rs.DataNascita
       , rs.DataCessazione
       , FALSE as Invertita
       , rs.rec_creato
       , rs.rec_creato_da
       , rs.rec_modificato
       , rs.rec_modificato_da
  from anagrafiche.RelazioniSoggetto as rs
  union
  select (-rs.IDRelazioneSoggetto)
       , rs.IDRelazione
       , rs.IDSoggettoRelazionato as IDSoggetto
       , rs.IDSoggetto as IDSoggettoRelazionato
       , rs.DataNascita
       , rs.DataCessazione
       , TRUE as Invertita
       , rs.rec_creato
       , rs.rec_creato_da
       , rs.rec_modificato
       , rs.rec_modificato_da
  from anagrafiche.RelazioniSoggetto as rs
;;
create rule RelazioniSoggettoV_insert as on insert to Anagrafiche.RelazioniSoggettoV
do instead
  insert into Anagrafiche.RelazioniSoggetto (IDRelazioneSoggetto
                                           , IDRelazione
                                           , IDSoggetto
                                           , IDSoggettoRelazionato
                                           , DataNascita
                                           , DataCessazione
                                           , rec_creato
                                           , rec_creato_da
                                           , rec_modificato
                                           , rec_modificato_da
                                             )
  values (new.IDRelazioneSoggetto
        , new.IDRelazione
        , new.IDSoggetto
        , new.IDSoggettoRelazionato
        , new.DataNascita
        , new.DataCessazione
        , new.rec_creato
        , new.rec_creato_da
        , new.rec_modificato
        , new.rec_modificato_da
          )
  ;;
  create rule RelazioniSoggettoV_update as on update to Anagrafiche.RelazioniSoggettoV
  do instead
    update Anagrafiche.RelazioniSoggetto
    set IDRelazioneSoggetto = new.IDRelazioneSoggetto
      , IDRelazione = new.IDRelazione
      , IDSoggetto = new.IDSoggetto
      , IDSoggettoRelazionato = new.IDSoggettoRelazionato
      , DataNascita = new.DataNascita
      , DataCessazione = new.DataCessazione
      , rec_creato = new.rec_creato
      , rec_creato_da = new.rec_creato_da
      , rec_modificato = new.rec_modificato
      , rec_modificato_da = new.rec_modificato_da
  where
    IDRelazioneSoggetto = old.IDRelazioneSoggetto
  ;;
  create rule RelazioniSoggettoV_delete as on delete to Anagrafiche.RelazioniSoggettoV
  do instead
    delete from Anagrafiche.RelazioniSoggetto where IDRelazioneSoggetto = old.IDRelazioneSoggetto;

Permessi di accesso a Vista relazioni e relazioni inverse

dipende da
Script Vista relazioni e relazioni inverse
   grant all privileges on Anagrafiche.RelazioniSoggettoV to group amministratore
   ;;
   grant select,insert,update,delete on Anagrafiche.RelazioniSoggettoV to group anagrafiche
   ;;
   grant update on Anagrafiche.Gen_IDRelazioneSoggetto to group amministratore
   ;;
   grant update on Anagrafiche.Gen_IDRelazioneSoggetto to group anagrafiche
   ;;
   grant select on Anagrafiche.RelazioniSoggettoV to public

Anagrafiche.TitoliDiStudio

Anagrafica dei titoli di studio che un soggetto di tipo persona può avere.

Informazioni sui singoli campi

IDTitoloDiStudio
Identificativo univoco del titolo di studio
Descrizione
Descrizione breve del titolo
TitoliRientranti
Descrizione dei titoli che rientrano nella categoria definita dal titolo di studio
Bonus
Per il calcolo della progressione orizzontale

Generatore Anagrafiche.IDTitoloDiStudio

dipende da
Script Anagrafiche
create sequence Anagrafiche.Gen_IDTitoloDiStudio

Anagrafiche.TitoliDiStudio

dipende da
create table Anagrafiche.TitoliDiStudio
(
 IDTitoloDiStudio smallid_t not null,
 Descrizione longstring_t,
 TitoliRientranti remark_t,
 Bonus boolean_t,

 constraint PK_TitoliDiStudio primary key (IDTitoloDiStudio)
) inherits (TimeStamped)

Aggiornamento timestamp dei record

Inserimento record Anagrafiche.TitoliDiStudio

dipende da
Script Anagrafiche.TitoliDiStudio
create function Anagrafiche.inizializza_TitoliDiStudio()
returns trigger as '
begin
  if new.IDTitoloDiStudio is NULL or new.IDTitoloDiStudio = 0 then
    new.IDTitoloDiStudio = nextval(''Anagrafiche.Gen_IDTitoloDiStudio'');
  end if;
  return new;
end;
' language plpgsql;

create trigger trg_ins_ts_init_TitoliDiStudio
  before insert on Anagrafiche.TitoliDiStudio
    for each row execute procedure Anagrafiche.inizializza_TitoliDiStudio();

create trigger trg_ins_ts_p_TitoliDiStudio
  before insert on Anagrafiche.TitoliDiStudio
    for each row execute procedure inizializza_timestamp();

Aggiornamento timestamp Anagrafiche.TitoliDiStudio

dipende da
Script Anagrafiche.TitoliDiStudio
create trigger trg_upd_ts_p_TitoliDiStudio
  before update on Anagrafiche.TitoliDiStudio
    for each row execute procedure aggiorna_timestamp();

Permessi di accesso

Permessi di accesso a Anagrafiche.TitoliDiStudio

dipende da
Script Anagrafiche.TitoliDiStudio
grant all privileges on Anagrafiche.TitoliDiStudio to group amministratore
;;
grant select on Anagrafiche.TitoliDiStudio to public
;;
grant all privileges on Anagrafiche.Gen_IDTitoloDiStudio to group amministratore

Dati di base

Anagrafiche.TitoliDiStudio di base

dipende da
Script Permessi di accesso a Anagrafiche.TitoliDiStudio
insert into Anagrafiche.TitoliDiStudio (IDTitoloDiStudio, Descrizione, TitoliRientranti, Bonus) values (1, 'Assolvimento obbligo scolastico', 'Assolvimento scolastico; licenza elementare (in base a data conseguimento); licenza media; avviamento commerciale (in base a data conseguimento)', FALSE);
;;
insert into Anagrafiche.TitoliDiStudio (IDTitoloDiStudio, Descrizione, TitoliRientranti, Bonus) values (2, 'Attestato o diploma di qualifica professionale', 'Attestati o diplomi di qualifica professionale (di durata almeno biennale)', FALSE);
;;
insert into Anagrafiche.TitoliDiStudio (IDTitoloDiStudio, Descrizione, TitoliRientranti, Bonus) values (3, 'Diploma di maturità', '', FALSE);
;;
insert into Anagrafiche.TitoliDiStudio (IDTitoloDiStudio, Descrizione, TitoliRientranti, Bonus) values (4, 'Laurea (si tratta della laurea triennale)', '', FALSE);
;;
insert into Anagrafiche.TitoliDiStudio (IDTitoloDiStudio, Descrizione, TitoliRientranti, Bonus) values (5, 'Laurea specialistica (anche quadriennale)', '', FALSE);
;;
insert into Anagrafiche.TitoliDiStudio (IDTitoloDiStudio, Descrizione, TitoliRientranti, Bonus) values (6, 'Formazione post-laurea', '', FALSE);
;;
insert into Anagrafiche.TitoliDiStudio (IDTitoloDiStudio, Descrizione, TitoliRientranti, Bonus) values (7, 'Laurea coerente con le attività svolte', '', FALSE);
;;
insert into Anagrafiche.TitoliDiStudio (IDTitoloDiStudio, Descrizione, TitoliRientranti, Bonus) values (8, 'Laurea specialistica coerente con le attività svolte', '', FALSE);
;;
insert into Anagrafiche.TitoliDiStudio (IDTitoloDiStudio, Descrizione, TitoliRientranti, Bonus) values (9, 'Licenza elementare', '', FALSE);
;;
insert into Anagrafiche.TitoliDiStudio (IDTitoloDiStudio, Descrizione, TitoliRientranti, Bonus) values (10, 'Licenza media', '', FALSE);
;;
insert into Anagrafiche.TitoliDiStudio (IDTitoloDiStudio, Descrizione, TitoliRientranti, Bonus) values (100, 'Master I livello', '', TRUE);
;;
insert into Anagrafiche.TitoliDiStudio (IDTitoloDiStudio, Descrizione, TitoliRientranti, Bonus) values (101, 'Master II livello', '', TRUE);
;;
insert into Anagrafiche.TitoliDiStudio (IDTitoloDiStudio, Descrizione, TitoliRientranti, Bonus) values (102, 'Diploma di specializzazione', '', TRUE);
;;
insert into Anagrafiche.TitoliDiStudio (IDTitoloDiStudio, Descrizione, TitoliRientranti, Bonus) values (103, 'Dottorato di ricerca', '', TRUE);
;;
select setval('Anagrafiche.Gen_IDTitoloDiStudio', (select max(idtitolodistudio) from anagrafiche.titolidistudio)+1)

Anagrafiche.TitoliDiStudioSoggetto

Tabella di collegamento dei TitoliDiStudio posseduti da un soggetto.

Informazioni sui singoli campi

IDTitoloDiStudioSoggetto
Identificativo univoco dell'associazione soggetto TitoloDiStudio
IDTitoloDiStudio
Identificativo del TitoloDiStudio
IDSoggetto
Identificativo del soggetto
Descrizione
Descizione del collegamento
Data
Data del titolo di studio
Progressivo
Il primo titolo di studio è il primario

Generatore Anagrafiche.Gen_IDTitoloDiStudioSoggetto

dipende da
Script Anagrafiche
create sequence Anagrafiche.Gen_IDTitoloDiStudioSoggetto

Anagrafiche.TitoliDiStudioSoggetto

dipende da
create table Anagrafiche.TitoliDiStudioSoggetto
(
 IDTitoloDiStudioSoggetto largeid_t not null,
 IDTitoloDiStudio smallid_t,
 IDSoggetto largeid_t,
 Descrizione longstring_t,
 Data date_t,
 Progressivo smallint_t not null default 0,

 constraint PK_TitoliDiStudioSoggetto primary key (IDTitoloDiStudioSoggetto)
) inherits (TimeStamped)

Chiavi esterne

FK Anagrafiche.TitoliDiStudioSoggetto->Anagrafiche.Soggetti

dipende da
alter table Anagrafiche.TitoliDiStudioSoggetto
       add constraint fk_TDSS_IDSoggetto foreign key (IDSoggetto)
           references Anagrafiche.Soggetti (IDSoggetto)
                      on update cascade

FK Anagrafiche.TitoliDiStudioSoggetto->Anagrafiche.TitoliDiStudio

dipende da
alter table Anagrafiche.TitoliDiStudioSoggetto
       add constraint fk_TDSS_IDTitoloDiStudio foreign key (IDTitoloDiStudio)
           references Anagrafiche.TitoliDiStudio (IDTitoloDiStudio)
                      on update cascade

Aggiornamento timestamp dei record

Inserimento record Anagrafiche.TitoliDiStudioSoggetto

dipende da
create function Anagrafiche.inizializza_titolidistudiosoggetto()
returns trigger as '
begin
  if new.IDTitoloDiStudioSoggetto is NULL or new.IDTitoloDiStudioSoggetto = 0 then
    new.IDTitoloDiStudioSoggetto = nextval(''Anagrafiche.Gen_IDTitoloDiStudioSoggetto'');
  end if;
  return new;
end;
' language plpgsql;

create trigger trg_ins_init_titolodistudiosoggetto
  before insert on Anagrafiche.TitoliDiStudioSoggetto
    for each row execute procedure Anagrafiche.inizializza_TitoliDiStudiosoggetto();

create trigger trg_ins_ts_a_titolodistudiosoggetto
  before insert on Anagrafiche.TitoliDiStudioSoggetto
    for each row execute procedure inizializza_timestamp();

Aggiornamento timestamp Anagrafiche.TitoliDiStudioSoggetto

dipende da
Script Anagrafiche.TitoliDiStudioSoggetto
create trigger trg_upd_ts_a_titolodistudiosoggetto
  before update on Anagrafiche.TitoliDiStudioSoggetto
    for each row execute procedure aggiorna_timestamp();

Permessi di accesso

Permessi di accesso a Anagrafiche.TitoliDiStudioSoggetto

dipende da
Script Anagrafiche.TitoliDiStudioSoggetto
grant all privileges on Anagrafiche.TitoliDiStudioSoggetto to group amministratore
;;
grant select,insert,update,delete on Anagrafiche.TitoliDiStudioSoggetto to group anagrafiche
;;
grant select on Anagrafiche.TitoliDiStudioSoggetto to public
;;
grant update on Anagrafiche.Gen_IDTitoloDiStudioSoggetto to group amministratore
;;
grant update on Anagrafiche.Gen_IDTitoloDiStudioSoggetto to group anagrafiche

Anagrafiche.WebSoggetto

Contiene i le proprietà per l'accesso al web del soggetto.

Informazioni sui singoli campi

IDSoggetto
Identificativo del soggetto a cui si riferisce l'web
Abilitato
L'utente è abilitato ad accedere alle applicazioni web
Password
Password di accesso al web

Anagrafiche.WebSoggetto

dipende da
create table Anagrafiche.WebSoggetto
(
 IDSoggetto largeid_t not null,
 Abilitato boolean_t,
 Password hash_t,

 constraint PK_WebSoggetto primary key (IDSoggetto)
) inherits (TimeStamped)

Chiavi esterne

FK Anagrafiche.WebSoggetto->Anagrafiche.Soggetti

dipende da
alter table Anagrafiche.WebSoggetto
       add constraint fk_WS_IDSoggetto foreign key (IDSoggetto)
           references Anagrafiche.Soggetti (IDSoggetto)
                      on update cascade

Aggiornamento timestamp dei record

Inserimento record Anagrafiche.WebSoggetto

dipende da
Script Anagrafiche.WebSoggetto
create trigger trg_ins_ts_a_websoggetto
  before insert on Anagrafiche.WebSoggetto
    for each row execute procedure inizializza_timestamp();

Aggiornamento timestamp Anagrafiche.WebSoggetto

dipende da
Script Anagrafiche.WebSoggetto
create trigger trg_upd_ts_a_websoggetto
  before update on Anagrafiche.WebSoggetto
    for each row execute procedure aggiorna_timestamp();

Permessi di accesso

Permessi di accesso a Anagrafiche.WebSoggetto

dipende da
Script Anagrafiche.WebSoggetto
grant all privileges on Anagrafiche.WebSoggetto to group amministratore
;;
grant select,insert,update,delete on Anagrafiche.WebSoggetto to group anagrafiche

Anagrafiche.ComuniCatastali

Anagrafica dei titoli di studio che un soggetto di tipo persona può avere.

Informazioni sui singoli campi

IDComuneCatastale
Identificativo univoco del Comune catastale
Denominazione
Denominazione del Comune
Codice
Codice catastale

Generatore Anagrafiche.IDComuneCatastale

dipende da
Script Anagrafiche
create sequence Anagrafiche.Gen_IDComuneCatastale

Anagrafiche.ComuniCatastali

dipende da
create table Anagrafiche.ComuniCatastali
(
 IDComuneCatastale smallid_t not null,
 Denominazione longstring_t,
 Codice catastale_t,

 constraint PK_ComuniCatastali primary key (IDComuneCatastale)
)

Aggiornamento timestamp dei record

Inserimento record Anagrafiche.ComuniCatastali

dipende da
Script Anagrafiche.ComuniCatastali
create function Anagrafiche.inizializza_comunicatastali()
returns trigger as '
begin
  if new.IDComuneCatastale is NULL or new.IDComuneCatastale = 0 then
    new.IDComuneCatastale = nextval(''Anagrafiche.Gen_IDComuneCatastale'');
  end if;
  return new;
end;
' language plpgsql;

create trigger trg_ins_ts_init_ComuniCatastali
  before insert on Anagrafiche.ComuniCatastali
    for each row execute procedure Anagrafiche.inizializza_comunicatastali();

Permessi di accesso

Permessi di accesso a Anagrafiche.ComuniCatastali

dipende da
Script Anagrafiche.ComuniCatastali
grant all privileges on Anagrafiche.ComuniCatastali to group amministratore
;;
grant select on Anagrafiche.ComuniCatastali to public
;;
grant all privileges on Anagrafiche.Gen_IDComuneCatastale to group amministratore

Dati di base

Anagrafiche.ComuniCatastali di base

dipende da
Script Permessi di accesso a Anagrafiche.ComuniCatastali
insert into Anagrafiche.ComuniCatastali (IDComuneCatastale, Denominazione, Codice) values (nextval('Anagrafiche.Gen_IDComuneCatastale'), 'ABANO TERME', 'A001')
;;
insert into Anagrafiche.ComuniCatastali (IDComuneCatastale, Denominazione, Codice) values (nextval('Anagrafiche.Gen_IDComuneCatastale'), 'ABBADIA CERRETO', 'A004')
;;
insert into Anagrafiche.ComuniCatastali (IDComuneCatastale, Denominazione, Codice) values (nextval('Anagrafiche.Gen_IDComuneCatastale'), 'ABBADIA LARIANA', 'A005')
;;
insert into Anagrafiche.ComuniCatastali (IDComuneCatastale, Denominazione, Codice) values (nextval('Anagrafiche.Gen_IDComuneCatastale'), 'RIVA DEL GARDA', 'H330')
;;
insert into Anagrafiche.ComuniCatastali (IDComuneCatastale, Denominazione, Codice) values (nextval('Anagrafiche.Gen_IDComuneCatastale'), 'ROVERETO', 'H612')
;;

Anagrafiche.Capitoli

Anagrafica dei capitoli di spesa.

Informazioni sui singoli campi

IDCapitolo
Identificativo univoco del capitolo
IDCentroDiCosto
Identificativo del centro di costo collegato
Descrizione
Descrizione del capitolo

Generatore Anagrafiche.IDCapitolo

dipende da
Script Anagrafiche
create sequence Anagrafiche.Gen_IDCapitolo

Anagrafiche.Capitoli

dipende da
create table Anagrafiche.Capitoli
(
 IDCapitolo smallid_t not null,
 IDCentroDiCosto smallid_t,
 Descrizione longstring_t,

 constraint PK_Capitoli primary key (IDCapitolo)
)

Chiavi esterne

FK Anagrafiche.Capitoli->Anagrafiche.CentriDiCosto

dipende da
alter table Anagrafiche.Capitoli
       add constraint fk_AC_IDCentroDiCosto foreign key (IDCentroDiCosto)
           references Anagrafiche.CentriDiCosto (IDCentroDiCosto)
                      on update cascade

Permessi di accesso

Permessi di accesso a Anagrafiche.Capitoli

dipende da
Script Anagrafiche.Capitoli
grant all privileges on Anagrafiche.Capitoli to group amministratore
;;
grant select on Anagrafiche.Capitoli to public
;;
grant all privileges on Anagrafiche.Gen_IDCapitolo to group amministratore

Anagrafiche.CentriDiCosto

Anagrafica dei centri di costo.

Informazioni sui singoli campi

IDCentroDiCosto
Identificativo univoco del centro di costo collegato
Descrizione
Descrizione del centro di costo

Generatore Anagrafiche.IDCentroDiCosto

dipende da
Script Anagrafiche
create sequence Anagrafiche.Gen_IDCentroDiCosto

Anagrafiche.CentriDiCosto

dipende da
create table Anagrafiche.CentriDiCosto
(
 IDCentroDiCosto smallid_t not null,
 Descrizione longstring_t,

 constraint PK_CentriDiCosto primary key (IDCentroDiCosto)
)

Permessi di accesso

Permessi di accesso a Anagrafiche.CentriDiCosto

dipende da
Script Anagrafiche.CentriDiCosto
grant all privileges on Anagrafiche.CentriDiCosto to group amministratore
;;
grant select on Anagrafiche.CentriDiCosto to public
;;
grant all privileges on Anagrafiche.Gen_IDCentroDiCosto to group amministratore

Tabelle relative al protocollo

Le tabelle sono raggruppate nello schema protocollo:

Protocollo

create schema protocollo
;;
grant all privileges on schema protocollo to group amministratore
;;
grant usage on schema protocollo to public

Protocollo.Protocolli

La tabella centrale del protocollo, contenente tutte le registrazioni in entrata e uscita. Da notare che per mittenti si intendono sempre gli esterno, e per destinatari gli uffici, quindi con notazione corretta nel caso di protocolli in entrata, mentre inversa per quelli in uscita.

Informazioni sui singoli campi

IDProtocollo
Identificativo univoco del protocollo
IDDocumento
Numero di protocollo: composto nella forma 'yyyy0000000n' costituisce il vero e proprio numero di protocollo (id_doc)
Anno
Anno di riferimento del protocollo
IDTipologiaProtocollo
Tipo di protocollo ('E'=entrata, 'U'=uscita, 'I'=interno)
IDUfficio
L'ufficio che ha acquisito il protocollo
DataProtocollo
Data di acquisizione del protocollo
PrimoInserimentoCompleto
Il protocollo ha completato la fase di "primo inserimento", come preso in considerazione dalla normativo ad esempio in riferimento ai soggetti collegati. Questa flaggatura è application-aware, poiché l'interpretazione potrebbe essere soggettiva.
NrRicevuta
Numero di ricevuta rilasciata
DataRicevuta
Data di rilascio della ricevuta
ConvalidaParziale
Convalida parziale (congela gli uffici referenti)
DataConvalidaParziale
Data della convalida parziale
EsecutoreConvalidaParziale
Utente esecutore della convalida parziale
Convalida
Convalida (congela tutto il protocollo)
NrConvalida
Numero di convalida del protocollo
DataConvalida
Data di convalida del protocollo (rimane possibile solo collegare nuove pratiche)
EsecutoreConvalida
Utente esecutore della convalida
DataUltimaConsultazione
Data dell'ultimo accesso in consultazione
EsecutoreUltimaConsultazione
Utente esecutore dell'utlimo accesso in consultazione
DataSpedizione
??
EsecutoreSpedizione
??
RiferimentoMittente
Riferimento citato sul documento del mittente
IDTipologiaRiferimentoMittente
Il tipo di riferimento del documento mittente; ('L'=lettera, 'R'=raccomandata, 'F'=fax, 'E'=email, etc)
DataMittente
Data sul documento del mittente
NrAllegati
Numero di allegati
Note
Campo libero di note
Oggetto
Campo oggetto a descrizione libera
Scannerizzato
??
Visto
Il protocollo è stato marcato per visto
InLavorazione
??
Annullato
Protocollo annullato
Spedito
Il protocollo in uscita è già stato spedito
Riservato
Protocollo dichiarato riservato
RichiedeRisposta
Il protocollo richiede risposta (?)

Generatore Protocollo.Protocolli

dipende da
Script Protocollo
create sequence Protocollo.Gen_IDProtocollo

Generatore Protocollo.Protocolli (nr)

dipende da
Script Protocollo
create sequence Protocollo.Gen_NrProtocollo
;;
alter table Protocollo.Gen_NrProtocollo owner to protocollatore

Generatore Protocollo.Protocolli (convalide)

dipende da
Script Protocollo
create sequence Protocollo.Gen_NrConvalida
;;
alter table Protocollo.Gen_NrConvalida owner to protocollatore

Protocollo.Protocolli

dipende da
create table Protocollo.Protocolli
(
 IDProtocollo largeid_t not null,
 IDDocumento stringid_t,
 Anno smallint_t,
 IDTipologiaProtocollo flag_t,
 IDUfficio smallid_t,
 DataProtocollo timestamp_t,
 PrimoInserimentoCompleto boolean_t,
 NrRicevuta tinystring_t,
 DataRicevuta date_t,
 ConvalidaParziale boolean_t,
 DataConvalidaParziale timestamp_t,
 EsecutoreConvalidaParziale username_t,
 Convalida boolean_t,
 NrConvalida tinystring_t,
 DataConvalida timestamp_t,
 EsecutoreConvalida username_t,
 DataUltimaConsultazione date_t,
 EsecutoreUltimaConsultazione username_t,
 DataSpedizione date_t,
 EsecutoreSpedizione username_t,
 IDTipologiaRiferimentoMittente flag_t,
 RiferimentoMittente tinystring_t,
 DataMittente date_t,
 NrAllegati smallint_t,
 Note remark_t,
 Oggetto remark_t,
 Scannerizzato boolean_t,
 Visto boolean_t,
 InLavorazione boolean_t,
 Annullato boolean_t,
 Spedito boolean_t,
 Riservato boolean_t default FALSE,
 RichiedeRisposta boolean_t,

 constraint PK_Protocolli primary key (IDProtocollo),
 constraint UK_Protocolli_IDDocumento unique (IDDocumento)
) inherits(Timestamped)

Chiavi esterne

FK Protocollo.Protocolli->Anagrafiche.Uffici

dipende da
alter table Protocollo.Protocolli
       add constraint fk_PR_IDUfficio foreign key (IDUfficio)
           references Anagrafiche.Uffici (IDUfficio)
                      on update cascade

FK Protocollo.Protocolli->Protocollo.TipologieProtocollo

dipende da
alter table Protocollo.Protocolli
       add constraint fk_PR_IDTipologiaProtocollo foreign key (IDTipologiaProtocollo)
           references Protocollo.TipologieProtocollo (IDTipologiaProtocollo)
                      on update cascade

FK Protocollo.Protocolli->Protocollo.TipologieRiferimentoMittente

dipende da
alter table Protocollo.Protocolli
       add constraint fk_PR_IDTipologiaRiferimentoMittente foreign key (IDTipologiaRiferimentoMittente)
           references Protocollo.TipologieRiferimentoMittente (IDTipologiaRiferimentoMittente)
                      on update cascade

Aggiornamento timestamp dei record

Inserimento record Protocollo.Protocolli

dipende da
create function Protocollo.inizializza_protocolli()
returns trigger as '
begin
  -- utente nello sportello
  if not check_utenteinufficio(current_user, new.idufficio) then
    raise exception ''Inserimento protocollo non permesso'';
  end if;
  -- protocollo dichiarato spedito
  if new.Spedito then
    if new.IDTipologiaProtocollo = ''U'' then
      if not check_utenteflaginufficio(current_user, ''consolida'', new.idufficio)
        and not check_utenteflaginreferente(current_user, ''consolida'', new.iddocumento, TRUE) then
         raise exception ''Non hai i permessi per dichiarare il protocollo come spedito'';
      end if;
    else
      raise exception ''Solo i protocolli in uscita possono essere marcati come spediti'';
    end if;
  end if;
  if new.IDProtocollo is NULL or new.IDProtocollo = 0 then
    new.IDProtocollo = nextval(''Protocollo.Gen_IDProtocollo'');
  end if;
  new.DataProtocollo := ''now'';
  new.Anno := extract(year from new.DataProtocollo);
  if not exists(SELECT * FROM protocollo.MaxIDDocumento WHERE IDDocumento like new.Anno || ''%'') then
    ALTER SEQUENCE Protocollo.Gen_NrProtocollo RESTART WITH 1;
  end if;
  new.IDDocumento := '''' || new.Anno || substring(to_char(nextval(''Protocollo.Gen_NrProtocollo''), ''00000000'') from 2 for 8);
  new.ConvalidaParziale := FALSE;
  new.Convalida := FALSE;
  return new;
end;
' language plpgsql;

create trigger trg_ins_init_protocolli
  before insert on Protocollo.Protocolli
    for each row execute procedure Protocollo.inizializza_protocolli();

create trigger trg_ins_ts_p_protocolli
  before insert on Protocollo.Protocolli
    for each row execute procedure inizializza_timestamp();

Aggiornamento timestamp Protocollo.Protocolli

dipende da
Script Protocollo.Protocolli
create trigger trg_upd_ts_p_protocolli
  before update on Protocollo.Protocolli
    for each row execute procedure aggiorna_timestamp();

Permessi di accesso

Permessi di accesso a Protocollo.Protocolli

dipende da
Script Protocollo.Protocolli
grant all privileges on Protocollo.Protocolli to group amministratore
;;
grant all privileges on Protocollo.Gen_NrProtocollo to group amministratore
;;
grant all privileges on Protocollo.Gen_NrProtocollo to group protocollatore

Controllo permessi modifica protocollo

dipende da
create function Protocollo.verifica_permessi_aggiornamento_protocollo()
returns trigger as '
begin
  -- Il protocollo è già stato annullato
  if old.annullato = TRUE then
    raise exception ''Modifica del protocollo annullato non permessa'';
  end if;
  -- Il protocollo è già convalidato
  if old.convalida = TRUE then
    raise exception ''Modifica del protocollo convalidato non permessa'';
  end if;
  -- Non sei nello sportello o in un referente
  if not (check_utenteinufficio(current_user, new.idufficio)
          or check_utenteinreferente(current_user, new.iddocumento)) then
    raise exception ''Modifica protocollo non permessa'';
  end if;
  if new.annullato = TRUE then
    if exists (select *
               from anagrafiche.utenti ut
                 join anagrafiche.utentiufficio as uu
                   on uu.idutente = ut.idutente
                 join anagrafiche.uffici as uf
                   on uf.idufficio = uu.idufficio
                 where ut.login = current_user
                   and uf.ufficioprotocollo = TRUE) then
      -- Annullamento del protocollo permesso
      -- Scollego le pratiche e i riferimenti
      delete from protocollo.praticheprotocollo where
        iddocumento = old.iddocumento;
      delete from protocollo.riferimentiprotocollo where
        iddocumento = old.iddocumento;
      -- Inserisco nella pratica dei protocolli annullati
      insert into protocollo.praticheprotocollo (iddocumento, idpratica)
        values(new.iddocumento, cast((select valore
                                 from generale.costanti
                                 where nome = ''PRA_PROTO_ANN'')
                                 as largeid_t
                                 ));
      -- Inserisco nella tabella delle richieste di annullamento
      insert into protocollo.annullati (iddocumento)
                                values (new.iddocumento);
      return new;
    elsif check_utenteinufficio(current_user, new.idufficio) then
       -- Richiesta di annullamento
       insert into protocollo.annullati (iddocumento)
                                values (new.iddocumento);
       new.Annullato = FALSE;
    else
      raise exception ''Annullamento del protocollo non permesso'';
    end if;
  end if;
  -- Convalide
  if old.convalida = FALSE and new.convalida = TRUE then
    if (check_utenteflaginufficio(current_user, ''consolida'', new.idufficio)
       or check_utenteflaginreferente(current_user, ''consolida'', new.iddocumento, TRUE)
       or check_utenteingruppo(current_user, ''convalidatore'')) then
      if exists (SELECT * FROM protocollo.praticheprotocollo WHERE iddocumento=new.iddocumento) then
        new.dataconvalida := ''now'';
        new.esecutoreconvalida := current_user;
        if not exists (SELECT * FROM protocollo.MaxNrConvalida WHERE Anno = old.Anno) then
          ALTER SEQUENCE Protocollo.Gen_NrConvalida RESTART WITH 1;
        end if;
        new.nrconvalida := '''' || old.Anno || substring(to_char(nextval(''Protocollo.Gen_NrConvalida''), ''00000000'') from 2 for 8);
      else
        raise exception ''Il protocollo deve essere inserito in una pratica per poter essere convalidato'';
      end if;
    else
      raise exception ''Non hai i permessi per convalidare il documento'';
    end if;
  end if;
  if old.convalidaparziale = FALSE and (new.convalidaparziale = TRUE or
                                        new.convalida = TRUE) then
    if check_utenteflaginufficio(current_user, ''consolida'', new.idufficio)
       or check_utenteflaginreferente(current_user, ''consolida'', new.iddocumento, TRUE)
       or check_utenteingruppo(current_user, ''convalidatore'') then
      new.convalidaparziale := TRUE;
      new.dataconvalidaparziale := ''now'';
      new.esecutoreconvalidaparziale := current_user;
    else
      raise exception ''Non hai i permessi per convalidare gli uffici'';
    end if;
  end if;
  -- riservatezza
  if old.riservato = TRUE and new.riservato = FALSE then
    if not check_utenteingruppo(current_user, ''superutente'') then
      raise exception ''Protocollo dichiarato riservato'';
    end if;
  end if;
  -- protocollo dichiarato spedito
  if old.Spedito = FALSE and new.Spedito = TRUE then
    if new.IDTipologiaProtocollo = ''U'' then
      if not check_utenteflaginufficio(current_user, ''consolida'', new.idufficio)
         and not check_utenteflaginreferente(current_user, ''consolida'', new.iddocumento, TRUE) then
         raise exception ''Non hai i permessi per dichiarare il protocollo come spedito'';
       end if;
    else
      raise exception ''Solo i protocolli in uscita possono essere marcati come spediti'';
    end if;
  end if;
  return new;
end;
' language plpgsql;
;;
create trigger trg_permessi_upd_protocollo
  before update on Protocollo.Protocolli
    for each row execute procedure Protocollo.verifica_permessi_aggiornamento_protocollo();
Visibilità del protocollo

Per poter visualizzare le informazioni di protocollazione l'utente deve rispettare una di queste due casistiche.

  • appartenenza all'ufficio sportello che ha acquisito il protocollo
  • appartenenza ad un ufficio collegato come attribuzione referente al protocollo

Protocolli visibili agli utenti

dipende da
create view Protocollo.ProtocolliUtente as
  select p.IDProtocollo
       , p.IDDocumento
       , p.Anno
       , p.IDTipologiaProtocollo
       , p.IDUfficio
       , p.DataProtocollo
       , p.PrimoInserimentoCompleto
       , p.NrRicevuta
       , p.DataRicevuta
       , p.ConvalidaParziale
       , p.DataConvalidaParziale
       , p.EsecutoreConvalidaParziale
       , p.Convalida
       , p.NrConvalida
       , p.DataConvalida
       , p.EsecutoreConvalida
       , p.DataUltimaConsultazione
       , p.EsecutoreUltimaConsultazione
       , p.DataSpedizione
       , p.EsecutoreSpedizione
       , p.RiferimentoMittente
       , p.IDTipologiaRiferimentoMittente
       , p.DataMittente
       , p.NrAllegati
       , p.Note
       , p.Oggetto
       , p.Scannerizzato
       , p.Visto
       , p.InLavorazione
       , p.Annullato
       , p.Spedito
       , p.Riservato
       , p.RichiedeRisposta
       , p.rec_creato
       , p.rec_creato_da
       , p.rec_modificato
       , p.rec_modificato_da
  from protocollo.protocolli as p
  where check_utenteflaginufficio(current_user, 'lista', p.idufficio)
     or check_utenteflaginreferente(current_user, 'lista', p.iddocumento, FALSE)
;;
create rule ProtocolliUtente_insert as on insert to Protocollo.ProtocolliUtente
do instead
  insert into Protocollo.protocolli (IDProtocollo
                                   , IDDocumento
                                   , Anno
                                   , IDTipologiaProtocollo
                                   , IDUfficio
                                   , DataProtocollo
                                   , PrimoInserimentoCompleto
                                   , NrRicevuta
                                   , DataRicevuta
                                   , ConvalidaParziale
                                   , DataConvalidaParziale
                                   , EsecutoreConvalidaParziale
                                   , Convalida
                                   , NrConvalida
                                   , DataConvalida
                                   , EsecutoreConvalida
                                   , DataUltimaConsultazione
                                   , EsecutoreUltimaConsultazione
                                   , DataSpedizione
                                   , EsecutoreSpedizione
                                   , RiferimentoMittente
                                   , IDTipologiaRiferimentoMittente
                                   , DataMittente
                                   , NrAllegati
                                   , Note
                                   , Oggetto
                                   , Scannerizzato
                                   , Visto
                                   , InLavorazione
                                   , Annullato
                                   , Spedito
                                   , Riservato
                                   , RichiedeRisposta
                                   , rec_creato
                                   , rec_creato_da
                                   , rec_modificato
                                   , rec_modificato_da
                                     )
  values (new.IDProtocollo
        , new.IDDocumento
        , new.Anno
        , new.IDTipologiaProtocollo
        , new.IDUfficio
        , new.DataProtocollo
        , new.PrimoInserimentoCompleto
        , new.NrRicevuta
        , new.DataRicevuta
        , new.ConvalidaParziale
        , new.DataConvalidaParziale
        , new.EsecutoreConvalidaParziale
        , new.Convalida
        , new.NrConvalida
        , new.DataConvalida
        , new.EsecutoreConvalida
        , new.DataUltimaConsultazione
        , new.EsecutoreUltimaConsultazione
        , new.DataSpedizione
        , new.EsecutoreSpedizione
        , new.RiferimentoMittente
        , new.IDTipologiaRiferimentoMittente
        , new.DataMittente
        , new.NrAllegati
        , new.Note
        , new.Oggetto
        , new.Scannerizzato
        , new.Visto
        , new.InLavorazione
        , new.Annullato
        , new.Spedito
        , new.Riservato
        , new.RichiedeRisposta
        , new.rec_creato
        , new.rec_creato_da
        , new.rec_modificato
        , new.rec_modificato_da
          )
;;
create rule ProtocolliUtente_update as on update to Protocollo.ProtocolliUtente
do instead
  update Protocollo.Protocolli
  set IDProtocollo = new.IDProtocollo
    , IDDocumento = new.IDDocumento
    , Anno = new.Anno
    , IDTipologiaProtocollo = new.IDTipologiaProtocollo
    , IDUfficio = new.IDUfficio
    , DataProtocollo = new.DataProtocollo
    , PrimoInserimentoCompleto = new.PrimoInserimentoCompleto
    , NrRicevuta = new.NrRicevuta
    , DataRicevuta = new.DataRicevuta
    , ConvalidaParziale = new.ConvalidaParziale
    , DataConvalidaParziale = new.DataConvalidaParziale
    , EsecutoreConvalidaParziale = new.EsecutoreConvalidaParziale
    , Convalida = new.Convalida
    , NrConvalida = new.NrConvalida
    , DataConvalida = new.DataConvalida
    , EsecutoreConvalida = new.EsecutoreConvalida
    , DataUltimaConsultazione = new.DataUltimaConsultazione
    , EsecutoreUltimaConsultazione = new.EsecutoreUltimaConsultazione
    , DataSpedizione = new.DataSpedizione
    , EsecutoreSpedizione = new.EsecutoreSpedizione
    , RiferimentoMittente = new.RiferimentoMittente
    , IDTipologiaRiferimentoMittente = new.IDTipologiaRiferimentoMittente
    , DataMittente = new.DataMittente
    , NrAllegati = new.NrAllegati
    , Note = new.Note
    , Oggetto = new.Oggetto
    , Scannerizzato = new.Scannerizzato
    , Visto = new.Visto
    , InLavorazione = new.InLavorazione
    , Annullato = new.Annullato
    , Spedito = new.Spedito
    , Riservato = new.Riservato
    , RichiedeRisposta = new.RichiedeRisposta
    , rec_creato = new.rec_creato
    , rec_creato_da = new.rec_creato_da
    , rec_modificato = new.rec_modificato
    , rec_modificato_da = new.rec_modificato_da
  where
    IDProtocollo = old.IDProtocollo;
;;
create rule ProtocolliUtente_delete as on delete to Protocollo.ProtocolliUtente
do instead
  -- Posso annullare un protocollo solo se sono utente di un
  -- ufficio protocollo
  update Protocollo.Protocolli set Annullato = TRUE where
    IDProtocollo = old.IDProtocollo;

Permessi di accesso a Anagrafiche.ProtocolliUtente

dipende da
Script Protocolli visibili agli utenti
   grant all privileges on Protocollo.ProtocolliUtente to group amministratore
   ;;
   grant select,insert,update,delete on Protocollo.ProtocolliUtente to group protocollatore
   ;;
   grant update on Protocollo.Gen_IDProtocollo to group amministratore
   ;;
   grant update on Protocollo.Gen_IDProtocollo to group protocollatore
   ;;
   grant select on Protocollo.ProtocolliUtente to public
Vista per la verifica dell'IDDocumento e del NrConvalida

Per l'aggiornamento dell'IDDocumento l'utente protocollatore ha l'esigenza di accedere, per tramite della funzione Protocollo.inizializza_protocolli, all'ultimo IDDocumento creato.

Questo gli è permesso per mezzo della vista Protocollo.MaxIDDocumento.

Vista degli IDDocumento dei protocolli

dipende da
Script Protocollo.Protocolli
create view Protocollo.MaxIDDocumento as
  select max(p.IDDocumento) as IDDocumento
  from protocollo.protocolli as p

Permessi di accesso a Protocollo.MaxIDDocumento

dipende da
Script Vista degli IDDocumento dei protocolli
   grant all privileges on Protocollo.MaxIDDocumento to group amministratore
   ;;
   grant select on Protocollo.MaxIDDocumento to group protocollatore

Un ragionamento analogo si applica al numero di convalida (NrConvalida).

Vista dei NrConvalida dei protocolli

dipende da
Script Protocollo.Protocolli
create view Protocollo.MaxNrConvalida as
  select max(p.NrConvalida) as NrConvalida,
  Anno
  from protocollo.protocolli as p
  group by Anno

Permessi di accesso a Protocollo.MaxNrConvalida

dipende da
Script Vista dei NrConvalida dei protocolli
   grant all privileges on Protocollo.MaxNrConvalida to group amministratore
   ;;
   grant select on Protocollo.MaxNrConvalida to group protocollatore
Riferimenti

Attraverso la tabella Protocollo.RiferimentiProtocollo è possibile creare un grafo orientato di riferimenti tra protocolli. Le funzioni di questo script eseguono una scansione in profondità per ricavare degli alberi di relazioni, a partire da un protocollo, rispettivamente nei riferimenti precedenti e successivi.

Ricerca degli ancestori

dipende da
Script Protocolli visibili agli utenti
create function Protocollo.ricerca_parent(stringid_t, varchar[], int4)
returns varchar[] as '
declare
  iddocumento alias FOR $1;
  iddocs alias FOR $2;
  n alias FOR $3;
  newiddocs varchar[];
  i INT;
  r RECORD;
begin
  i := n;
  newiddocs := iddocs;
  for r in SELECT * FROM Protocollo.RiferimentiProtocollo rp
             WHERE rp.IDDocumento = iddocumento loop
    i := i + 1;
    newiddocs[i] := r.IDRiferimento;
    newiddocs := Protocollo.ricerca_parent(r.IDRiferimento, newiddocs, i);
  end loop;
  return newiddocs;
end;
' language plpgsql;
;;
create function Protocollo.ricerca_precedenti(stringid_t)
returns SETOF Protocollo.ProtocolliUtente as '
declare
  iddocumento alias FOR $1;
  iddocs VARCHAR[];
  d VARCHAR;
  r RECORD;
  i INT;
begin
  iddocs[1] := iddocumento;
  iddocs := Protocollo.ricerca_parent(iddocumento, iddocs, 1);
  i := 0;
  while true loop
    i := i+1;
    d := iddocs[i];
    if (d is null) then
      exit;
    end if;
    SELECT * INTO r FROM Protocollo.ProtocolliUtente p
           WHERE p.IDDocumento = d;
    return next r;
  end loop;
  return;
end;
' language plpgsql;
;;

create function Protocollo.ricerca_child(stringid_t, varchar[], int4)
returns varchar[] as '
declare
  iddocumento alias FOR $1;
  iddocs alias FOR $2;
  n alias FOR $3;
  newiddocs varchar[];
  i INT;
  r RECORD;
begin
  i := n;
  newiddocs := iddocs;
  for r in SELECT * FROM Protocollo.RiferimentiProtocollo rp
             WHERE rp.IDRiferimento = iddocumento loop
    i := i + 1;
    newiddocs[i] := r.IDDocumento;
    newiddocs := Protocollo.ricerca_child(r.IDDocumento, newiddocs, i);
  end loop;
  return newiddocs;
end;
' language plpgsql;
;;
create function Protocollo.ricerca_successivi(stringid_t)
returns SETOF Protocollo.ProtocolliUtente as '
declare
  iddocumento alias FOR $1;
  iddocs VARCHAR[];
  d VARCHAR;
  r RECORD;
  i INT;
begin
  iddocs[1] := iddocumento;
  iddocs := Protocollo.ricerca_child(iddocumento, iddocs, 1);
  i := 0;
  while true loop
    i := i+1;
    d := iddocs[i];
    if (d is null) then
      exit;
    end if;
    SELECT * INTO r FROM Protocollo.ProtocolliUtente p
           WHERE p.IDDocumento = d;
    return next r;
  end loop;
  return;
end;
' language plpgsql;
;;
Documenti

Quando ad un protocollo viene assegnato come referente un ufficio, gli utenti di quest'ultimo che hanno la proprietà Visualizza di UtentiUfficio possono vederlo. Gli utenti hanno anche la possibilità di "dare per letta" questa assegnazione, dichiarando in questo modo che qualcuno, all'interno dell'ufficio, si è preso carico del documento.

Il permesso di notifica di lettura avvenuta è gestito dalla proprietà DaiPerLetto, sempre di UtentiUfficio.

Se un utente appartiene a più uffici referenti per lo stesso documento, avrà una notifica "doppia", e potrà decidere per quale ufficio eventualmente notificare la lettura avvenuta.

Per la visibilità di questi protocolli riferiti agli uffici viene utilizzata la vista DocumentiUtente, basata sulla vista ProtocolliUtente.

Documenti riferiti agli uffici

dipende da
create view Protocollo.DocumentiUtente as
  select pu.IDProtocollo
       , pu.IDTipologiaProtocollo
       , pu.IDDocumento
       , pu.DataProtocollo
       , pu.Oggetto
       , rp.nrreferenti
  from Protocollo.ProtocolliUtente as pu
  join (select iddocumento, count(*) as nrreferenti
          from protocollo.referentiprotocollo
          join anagrafiche.utentiufficio as uu
            on uu.idufficio = protocollo.referentiprotocollo.idufficio
          join anagrafiche.utenti as u
            on u.idutente = uu.idutente
          where letto = FALSE
            and u.login = current_user
            and uu.lista = TRUE
          group by iddocumento)
    as rp on pu.iddocumento = rp.iddocumento
;;

Permessi di accesso Protocollo.DocumentiUtente

dipende da
Script Documenti riferiti agli uffici
grant all privileges on Protocollo.DocumentiUtente to group amministratore
;;
grant select on Protocollo.DocumentiUtente to group protocollatore
;;

Indici Protocollo.Protocolli

dipende da
Script Protocollo.Protocolli
create index idx_protocolli_iddocumento
  on protocollo.protocolli
  using btree
  (iddocumento, idtipologiaprotocollo)
;;
create index idx_protocolli_nrricevuta
  on protocollo.protocolli
  using btree
  (idtipologiaprotocollo, nrricevuta)
;;
create index idx_protocolli_scannerizzato
  on protocollo.protocolli
  using btree
  (scannerizzato)
;;
create index idx_protocolli_riservato
  on protocollo.protocolli
  using btree
  (riservato)
;;
create index idx_protocolli_dataprotocollo
  on protocollo.protocolli
  using btree
  (dataprotocollo)
;;

Protocollo.TipologieProtocollo

I protocollo possono essere in entrata, uscita, oppure interni.

Informazioni sui singoli campo

IDTipologiaProtocollo
Identificativo univoco della tipologia di protocollo
Descrizione
Descrizione della tipologia di protocollo (entrata, uscita, interno)

Protocollo.TipologieProtocollo

dipende da
create table Protocollo.TipologieProtocollo
(
 IDTipologiaProtocollo flag_t not null,
 Descrizione tinystring_t,

 constraint PKTipologieProtocollo primary key (IDTIpologiaProtocollo)
)

Permessi di accesso

Permessi di accesso a Protocollo.TipologieProtocollo

dipende da
Script Protocollo.TipologieProtocollo
grant all privileges on Protocollo.TipologieProtocollo to group amministratore
;;
grant select on Protocollo.TipologieProtocollo to public

Dati di base

Protocollo.TipologieProtocollo di base

dipende da
Script Permessi di accesso a Protocollo.TipologieProtocollo
insert into Protocollo.TipologieProtocollo (IDTipologiaProtocollo, Descrizione) values ('E', 'entrata')
;;
insert into Protocollo.TipologieProtocollo (IDTipologiaProtocollo, Descrizione) values ('I', 'interno')
;;
insert into Protocollo.TipologieProtocollo (IDTipologiaProtocollo, Descrizione) values ('U', 'uscita')
;;

Protocollo.UfficiProtocollo

Tabella di collegamento degli uffici ad un protocollo come destinatari, se il protocollo è in entrata, altrimenti come mittenti.

Informazioni sui singoli campi

IDUfficioProtocollo
Identificativo univoco della corrispondenza protocollo-ufficio
IDDocumento
Identificativo del protocollo a cui si riferisce il collegamento
IDUfficio
Identificativo dell'ufficio a cui si riferisce il collegamento

Generatore Protocollo.UfficiProtocollo

dipende da
Script Protocollo
create sequence Protocollo.Gen_IDUfficioProtocollo

Protocollo.UfficiProtocollo

dipende da
create table Protocollo.UfficiProtocollo
(
  IDUfficioProtocollo largeid_t not null,
  IDDocumento stringid_t,
  IDUfficio smallid_t,

  constraint PK_UfficiProtocollo primary key (IDUfficioProtocollo)
) inherits(Timestamped)

Chiavi esterne

FK Protocollo.UfficiProtocollo->Anagrafiche.Uffici

dipende da
alter table Protocollo.UfficiProtocollo
       add constraint fk_UP_IDUfficio foreign key (IDUfficio)
           references Anagrafiche.Uffici (IDUfficio)
                      on update cascade

FK Protocollo.UfficiProtocollo->Protocollo.Protocolli

dipende da
alter table Protocollo.UfficiProtocollo
       add constraint fk_UP_IDDocumento foreign key (IDDocumento)
           references Protocollo.Protocolli (IDDocumento)
                      on update cascade

Aggiornamento timestamp dei record

Inserimento record Protocollo.UfficiProtocollo

dipende da
create function Protocollo.inizializza_ufficiprotocollo()
returns trigger as '
begin
  if check_protocolloconvalidato(new.IDDocumento) or check_protocolloannullato(new.IDDocumento) then
    raise exception ''Impossibile aggiungere uffici ad un protocollo annullato o convalidato'';
  end if;
  if new.IDUfficioProtocollo is NULL or new.IDUfficioProtocollo = 0 then
    new.IDUfficioProtocollo = nextval(''Protocollo.Gen_IDUfficioProtocollo'');
  end if;
  return new;
end;
' language plpgsql;

create trigger trg_ins_init_ufficiprotocollo
  before insert on Protocollo.UfficiProtocollo
    for each row execute procedure Protocollo.inizializza_ufficiprotocollo();

create trigger trg_ins_ts_p_ufficiprotocollo
  before insert on Protocollo.UfficiProtocollo
    for each row execute procedure inizializza_timestamp();

Aggiornamento timestamp Protocollo.UfficiProtocollo

dipende da
Script Protocollo.UfficiProtocollo
create trigger trg_upd_ts_p_ufficiprotocollo
  before update on Protocollo.UfficiProtocollo
    for each row execute procedure aggiorna_timestamp();

Cancellazione record Protocollo.UfficiProtocollo

dipende da
Script Protocollo.UfficiProtocollo
create function Protocollo.cancella_ufficiprotocollo()
returns trigger as '
begin
  if check_protocolloconvalidato(old.IDDocumento) or check_protocolloannullato(old.IDDocumento) then
    raise exception ''Impossibile cancellare uffici di un protocollo annullato o convalidato'';
  end if;
  return old;
end;
' language plpgsql;

create trigger trg_del_ufficiprotocollo
  before delete on Protocollo.UfficiProtocollo
    for each row execute procedure Protocollo.cancella_ufficiprotocollo();

Modifica record Protocollo.UfficiProtocollo

dipende da
Script Protocollo.UfficiProtocollo
create function Protocollo.aggiorna_ufficiprotocollo()
returns trigger as '
begin
  if new.iddocumento != old.iddocumento then
    raise exception ''Impossibile modificare uffici di un protocollo annullato o convalidato'';
  end if;
  return new;
end;
' language plpgsql;

create trigger trg_upd_ufficiprotocollo
  before update on Protocollo.UfficiProtocollo
    for each row execute procedure Protocollo.aggiorna_ufficiprotocollo();

Permessi di accesso

Permessi di accesso a Protocollo.UfficiProtocollo

dipende da
Script Protocollo.UfficiProtocollo
grant all privileges on Protocollo.UfficiProtocollo to group amministratore
;;
grant select,insert,update,delete on Protocollo.UfficiProtocollo to group protocollatore
;;
grant select on Protocollo.UfficiProtocollo to public
;;
grant all privileges on Protocollo.Gen_IDUfficioProtocollo to group amministratore
;;
grant all privileges on Protocollo.Gen_IDUfficioProtocollo to group protocollatore

Indici Protocollo.UfficiProtocollo

dipende da
Script Protocollo.UfficiProtocollo
create index idx_ufficiprotocollo_iddocumento
  on protocollo.ufficiprotocollo
  using btree
  (iddocumento)
;;
create index idx_ufficiprotocollo_idufficio
  on protocollo.ufficiprotocollo
  using btree
  (idufficio)
;;

Protocollo.SoggettiProtocollo

Tabella di collegamento dei soggetti ad un protocollo come destinatari, se il protocollo è in entrata, altrimenti come mittenti.

Informazioni sui singoli campi

IDSoggettoProtocollo
Identificativo univoco della corrispondenza protocollo-soggetto
IDDocumento
Identificativo del protocollo a cui si riferisce il collegamento
IDSoggetto
Identificativo del soggetto a cui si riferisce il collegamento
IDIndirizzoSoggetto
Indirizzo attraverso cui il soggetto esterno è collegato al protocollo
IDReferente
Identificativo del soggetto referente
PrimoInserimento
Il soggetto è stato associato al protocollo nella prima fase di inserimento, ovvero quando il protocollo aveva ancora PrimoInserimentoCompleto non valorizzato a TRUE
InViaPrincipale
Il soggetto è collegato al protocollo in via principale

Corrispondenza

Notifica

Conoscenza

AbilitatoWeb
Funzionalità futura.
Riservato
Il soggetto è associato come mittente o destinatario riservato. In questo caso è visibile solo dagli utenti che posseggono l'omonimo flag in almeno uno degli uffici attribuiti.
Annullato
L'associazione del soggetto al protocollo è stata annullata; non è possibile togliere un soggetto esterno da un protocollo, ma solamente annullarne l'associazione (per normativa).
IdTitolo
Titolo a cui il soggetto è associato al protocollo
DataInizio, DataFine
Della titolarità

Generatore Protocollo.SoggettiProtocollo

dipende da
Script Protocollo
create sequence Protocollo.Gen_IDSoggettoProtocollo

Protocollo.SoggettiProtocollo

dipende da
create table Protocollo.SoggettiProtocollo
(
  IDSoggettoProtocollo largeid_t not null,
  IDDocumento stringid_t,
  IDSoggetto largeid_t,
  IDIndirizzoSoggetto largeid_t,
  IDReferente largeid_t,
  PrimoInserimento boolean_t,
  InViaPrincipale boolean_t,
  Corrispondenza boolean_t,
  Notifica boolean_t,
  Conoscenza boolean_t,
  AbilitatoWeb boolean_t,
  Riservato boolean_t,
  Annullato boolean_t,
  IDTitolo smallid_t,
  DataInizio date_t,
  DataFine date_t,

  constraint PK_SoggettiProtocollo primary key (IDSoggettoProtocollo)
) inherits(Timestamped)

Chiavi esterne

FK Protocollo.SoggettiProtocollo->Anagrafiche.Soggetti

dipende da
alter table Protocollo.SoggettiProtocollo
       add constraint fk_SP_IDSoggetto foreign key (IDSoggetto)
           references Anagrafiche.Soggetti (IDSoggetto)
                      on update cascade

FK Protocollo.SoggettiProtocollo->Anagrafiche.Soggetti (Referenti)

dipende da
alter table Protocollo.SoggettiProtocollo
       add constraint fk_SP_IDReferente foreign key (IDSoggetto)
           references Anagrafiche.Soggetti (IDSoggetto)
                      on update cascade

FK Protocollo.SoggettiProtocollo->Protocollo.Protocolli

dipende da
alter table Protocollo.SoggettiProtocollo
       add constraint fk_SP_IDDocumento foreign key (IDDocumento)
           references Protocollo.Protocolli (IDDocumento)
                      on update cascade

FK Protocollo.SoggettiProtocollo->Anagrafiche.Titoli

dipende da
alter table Protocollo.SoggettiProtocollo
       add constraint fk_SP_IDTitolo foreign key (IDTitolo)
           references Anagrafiche.Titoli (IDTitolo)
                      on update cascade

FK Protocollo.SoggettiProtocollo->Anagrafiche.IndirizziSoggetto

dipende da
alter table Protocollo.SoggettiProtocollo
       add constraint fk_SP_IDIndirizzoSoggetto foreign key (IDIndirizzoSoggetto)
           references Anagrafiche.IndirizziSoggetto (IDIndirizzoSoggetto)
                      on update cascade

Aggiornamento timestamp dei record

Inserimento record Protocollo.SoggettiProtocollo

dipende da
create function Protocollo.inizializza_soggettiprotocollo()
returns trigger as '
begin
  if check_protocolloconvalidato(new.IDDocumento) or check_protocolloannullato(new.IDDocumento) then
    raise exception ''Impossibile aggiungere soggetti ad un protocollo annullato o convalidato'';
  end if;
  if new.IDSoggettoProtocollo is NULL or new.IDSoggettoProtocollo = 0 then
    new.IDSoggettoProtocollo = nextval(''Protocollo.Gen_IDSoggettoProtocollo'');
  end if;
  new.Riservato = FALSE;
  if exists(SELECT * FROM protocollo.protocolliutente WHERE
              IDDocumento = new.IDDocumento AND
              PrimoInserimentoCompleto = TRUE) then
      new.PrimoInserimento = FALSE;
  else
      new.PrimoInserimento = TRUE;
  end if;
  if new.InViaPrincipale = TRUE then
      UPDATE Protocollo.SoggettiProtocollo SET InViaPrincipale = FALSE WHERE IDDocumento = new.IDDocumento;
  end if;
  return new;
end;
' language plpgsql;

create function Protocollo.primi_soggettiprotocollo()
returns trigger as '
begin
  if new.iddocumento = old.iddocumento then
    return new;
  else
    if exists(SELECT * FROM protocollo.protocolli WHERE
              IDDocumento = new.IDDocumento AND
              PrimoInserimentoCompleto = TRUE) then
        new.PrimoInserimento = FALSE;
    else
        new.PrimoInserimento = TRUE;
    end if;
  end if;
  return new;
end;
' language plpgsql;

create trigger trg_ins_init_soggettiprotocollo
  before insert on Protocollo.SoggettiProtocollo
    for each row execute procedure Protocollo.inizializza_soggettiprotocollo();

create trigger trg_ins_primi_soggettiprotocollo
  before update on Protocollo.SoggettiProtocollo
    for each row execute procedure Protocollo.primi_soggettiprotocollo();

create trigger trg_ins_ts_p_soggettiprotocollo
  before insert on Protocollo.SoggettiProtocollo
    for each row execute procedure inizializza_timestamp();

Cancellazione o annullamento record Protocollo.SoggettiProtocollo

dipende da
create function Protocollo.cancella_soggettiprotocollo()
returns trigger as '
begin
  if check_protocolloconvalidato(old.IDDocumento) or check_protocolloannullato(old.IDDocumento) then
    raise exception ''Impossibile cancellare soggetti di un protocollo annullato o convalidato'';
  end if;
  if old.PrimoInserimento = TRUE then
    UPDATE Protocollo.SoggettiProtocolloUtente SET Annullato = TRUE
      WHERE IDSoggettoProtocollo = old.IDSoggettoProtocollo;
    return NULL;
  end if;
  return old;
end;
' language plpgsql;

create trigger trg_del_soggettiprotocollo
  before delete on Protocollo.SoggettiProtocollo
    for each row execute procedure Protocollo.cancella_soggettiprotocollo();

Aggiornamento timestamp Protocollo.SoggettiProtocollo

dipende da
Script Protocollo.SoggettiProtocollo
create trigger trg_upd_ts_p_soggettiprotocollo
  before update on Protocollo.SoggettiProtocollo
    for each row execute procedure aggiorna_timestamp();

Modifica record Protocollo.SoggettiProtocollo

dipende da
create function Protocollo.verifica_permessi_aggiornamento_soggettoprotocollo()
returns trigger as '
begin
  if new.iddocumento != old.iddocumento then
    raise exception ''Impossibile modificare soggetti di un protocollo annullato o convalidato'';
  end if;
  if old.riservato = FALSE and new.riservato = TRUE then
    if not exists (select * from protocollo.protocolliutente where
                     iddocumento = new.iddocumento and
                     riservato = TRUE) then
      raise exception ''Impossibile allegare soggetti riservati ad un protocollo non riservato'';
    end if;
  end if;
  if new.InViaPrincipale = TRUE and old.InViaPrincipale != TRUE then
      UPDATE Protocollo.SoggettiProtocollo SET InViaPrincipale = FALSE WHERE IDDocumento = new.IDDocumento;
  end if;

  return new;
end;
' language plpgsql;
;;
create trigger trg_permessi_upd_soggettoprotocollo
  before update on Protocollo.SoggettiProtocollo
    for each row execute procedure Protocollo.verifica_permessi_aggiornamento_soggettoprotocollo();

Permessi di accesso

Permessi di accesso a Protocollo.SoggettiProtocollo

dipende da
Script Protocollo.SoggettiProtocollo
grant all privileges on Protocollo.SoggettiProtocollo to group amministratore
;;
grant all privileges on Protocollo.Gen_IDSoggettoProtocollo to group amministratore
;;
grant all privileges on Protocollo.Gen_IDSoggettoProtocollo to group protocollatore
Visibilità dei soggetti allegati al protocollo

Quando un protocollo è riservato è possibile indicare dei soggetti (mittenti o destinatari) in modo riservato. I soggetti riservati vengono visualizzati unicamente dagli utenti che appartengono con flag riservato ad almeno uno degli uffici referenti per il protocollo stesso. Questo concetto viene espresso per tramite della vista SoggettiProtocolloUtente.

Soggetti protocollo visibili agli utenti

dipende da
create view Protocollo.SoggettiProtocolloUtente as
  select sp.IDSoggettoProtocollo
       , sp.IDDocumento
       , sp.IDSoggetto
       , sp.IDIndirizzoSoggetto
       , sp.IDReferente
       , sp.PrimoInserimento
       , sp.InViaPrincipale
       , sp.Corrispondenza
       , sp.Notifica
       , sp.Conoscenza
       , sp.AbilitatoWeb
       , sp.Riservato
       , sp.Annullato
       , sp.IDTitolo
       , sp.DataInizio
       , sp.DataFine
       , sp.rec_creato
       , sp.rec_creato_da
       , sp.rec_modificato
       , sp.rec_modificato_da
  from protocollo.soggettiprotocollo as sp
  where
    sp.riservato is not TRUE
  or
    exists (select *
            from protocollo.protocolliutente pu
              where
                pu.iddocumento = sp.iddocumento and
                pu.riservato is not TRUE)
  or
      exists (select *
              from protocollo.protocolliutente pu
                 join protocollo.referentiprotocollo rp
                   on rp.iddocumento = pu.iddocumento
                 join anagrafiche.utentiufficio uu
                   on uu.idufficio = rp.idufficio and pu.iddocumento = rp.iddocumento
                 join anagrafiche.utenti ut
                   on ut.idutente = uu.idutente
               where ut.login = current_user
                 and uu.riservato is TRUE)
;;
create rule SoggettiProtocolloUtente_insert as on insert to Protocollo.SoggettiProtocolloUtente
do instead
  insert into Protocollo.SoggettiProtocollo (IDSoggettoProtocollo
                                           , IDDocumento
                                           , IDSoggetto
                                           , IDIndirizzoSoggetto
                                           , IDReferente
                                           , PrimoInserimento
                                           , InViaPrincipale
                                           , Corrispondenza
                                           , Notifica
                                           , Conoscenza
                                           , AbilitatoWeb
                                           , Riservato
                                           , Annullato
                                           , IDTitolo
                                           , DataInizio
                                           , DataFine
                                           , rec_creato
                                           , rec_creato_da
                                           , rec_modificato
                                           , rec_modificato_da
                                             )
  values (new.IDSoggettoProtocollo
        , new.IDDocumento
        , new.IDSoggetto
        , new.IDIndirizzoSoggetto
        , new.IDReferente
        , new.PrimoInserimento
        , new.InViaPrincipale
        , new.Corrispondenza
        , new.Notifica
        , new.Conoscenza
        , new.AbilitatoWeb
        , new.Riservato
        , new.Annullato
        , new.IDTitolo
        , new.DataInizio
        , new.DataFine
        , new.rec_creato
        , new.rec_creato_da
        , new.rec_modificato
        , new.rec_modificato_da
          )
;;
create rule SoggettiProtocolloUtente_update as on update to Protocollo.SoggettiProtocolloUtente
do instead
  update Protocollo.SoggettiProtocollo
  set IDSoggettoProtocollo = new.IDSoggettoProtocollo
    , IDDocumento = new.IDDocumento
    , IDSoggetto = new.IDSoggetto
    , IDIndirizzoSoggetto = new.IDIndirizzoSoggetto
    , IDReferente = new.IDReferente
    , PrimoInserimento = new.PrimoInserimento
    , InViaPrincipale = new.InViaPrincipale
    , Corrispondenza = new.Corrispondenza
    , Notifica = new.Notifica
    , Conoscenza = new.Conoscenza
    , AbilitatoWeb = new.AbilitatoWeb
    , Riservato = new.Riservato
    , Annullato = new.Annullato
    , IDTitolo = new.IDTitolo
    , DataInizio = new.DataInizio
    , DataFine = new.DataFine
    , rec_creato = new.rec_creato
    , rec_creato_da = new.rec_creato_da
    , rec_modificato = new.rec_modificato
    , rec_modificato_da = new.rec_modificato_da
  where IDSoggettoProtocollo = old.IDSoggettoProtocollo;
;;
create rule SoggettiProtocolloUtente_delete as on delete to Protocollo.SoggettiProtocolloUtente
do instead
  delete from Protocollo.SoggettiProtocollo
  where IDSoggettoProtocollo = old.IDSoggettoProtocollo;

Permessi di accesso a Protocollo.SoggettiProtocolloUtente

dipende da
Script Soggetti protocollo visibili agli utenti
grant all privileges on Protocollo.SoggettiProtocolloUtente to group amministratore
;;
grant select,insert,update,delete on Protocollo.SoggettiProtocolloUtente to group protocollatore
;;
grant update on Protocollo.Gen_IDSoggettoProtocollo to group amministratore
;;
grant update on Protocollo.Gen_IDSoggettoProtocollo to group protocollatore

Indici Protocollo.SoggettiProtocollo

dipende da
Script Protocollo.SoggettiProtocollo
create index idx_soggettiprotocollo_iddocumento
  on protocollo.soggettiprotocollo
  using btree
  (iddocumento)
;;
create index idx_soggettiprotocollo_idsoggetto
  on protocollo.soggettiprotocollo
  using btree
  (idsoggetto)
;;
create index idx_soggettiprotocollo_riservato
  on protocollo.soggettiprotocollo
  using btree
  (riservato)
;;

Protocollo.ReferentiProtocollo

Tabella di collegamento degli uffici (attribuzioni) referenti per il protocollo. Gli uffici referenti sono quelli a cui il protocollo è passato "in copia", e che devono, ad esempio, darlo per letto.

Informazione sui singoli campi

IDReferenteProtocollo
Identificativo univoco della corrispondenza protocollo-ufficio (referente)
IDDocumento
Identificativo del protocollo a cui si riferisce il collegamento
IDUfficio
Identificativo dell'ufficio a cui si riferisce il collegamento
Progressivo
Stabilisce l'ordine degli uffici referenti. Il primo ufficio è anche referente in via principale
Letto
Il protocollo è stato dato per letto da un responsabile all'interno dell'ufficio referente.
UtenteLetto
L'utente che ha dato per letto il protocollo
DataLetto
La data in cui è stato dato per letto il protocollo

Generatore Protocollo.ReferentiProtocollo

dipende da
Script Protocollo
create sequence Protocollo.Gen_IDReferenteProtocollo

Protocollo.ReferentiProtocollo

dipende da
create table Protocollo.ReferentiProtocollo
(
  IDReferenteProtocollo largeid_t not null,
  IDDocumento stringid_t,
  IDUfficio smallid_t,
  Progressivo smallint_t not null default 0,
  Letto boolean_t not null,
  UtenteLetto username_t,
  DataLetto timestamp_t,

  constraint PK_ReferentiProtocollo primary key (IDReferenteProtocollo)
) inherits(Timestamped)

Chiavi esterne

FK Protocollo.ReferentiProtocollo->Anagrafiche.Uffici

dipende da
alter table Protocollo.ReferentiProtocollo
       add constraint fk_RP_IDUfficio foreign key (IDUfficio)
           references Anagrafiche.Uffici (IDUfficio)
                      on update cascade

FK Protocollo.ReferentiProtocollo->Protocollo.Protocolli

dipende da
alter table Protocollo.ReferentiProtocollo
       add constraint fk_RP_IDDocumento foreign key (IDDocumento)
           references Protocollo.Protocolli (IDDocumento)
                      on update cascade

Aggiornamento timestamp dei record

Inserimento record Protocollo.ReferentiProtocollo

dipende da
create function Protocollo.inizializza_referentiprotocollo()
returns trigger as '
begin
  if check_protocolloconvalidato(new.IDDocumento) or check_protocolloannullato(new.IDDocumento) then
    raise exception ''Impossibile aggiungere uffici referenti ad un protocollo annullato o convalidato'';
  end if;
  if exists (select * from protocollo.protocolliutente p where
            p.iddocumento = new.iddocumento and
            p.convalidaparziale = TRUE) then
    raise exception ''Inserimento non permesso: protocollo convalidato parzialmente'';
  end if;
  if new.IDReferenteProtocollo is NULL or new.IDReferenteProtocollo = 0 then
    new.IDReferenteProtocollo = nextval(''Protocollo.Gen_IDReferenteProtocollo'');
  end if;
  if new.letto is not TRUE then
    new.letto = FALSE;
  end if;
  return new;
end;
' language plpgsql;

create trigger trg_ins_init_referentiprotocollo
  before insert on Protocollo.ReferentiProtocollo
    for each row execute procedure Protocollo.inizializza_referentiprotocollo();

create trigger trg_ins_ts_p_referentiprotocollo
  before insert on Protocollo.ReferentiProtocollo
    for each row execute procedure inizializza_timestamp();

Aggiornamento timestamp Protocollo.ReferentiProtocollo

dipende da
Script Protocollo.ReferentiProtocollo
create trigger trg_upd_ts_p_referentiprotocollo
  before update on Protocollo.ReferentiProtocollo
    for each row execute procedure aggiorna_timestamp();

Cancellazione record Protocollo.ReferentiProtocollo

dipende da
Script Protocollo.ReferentiProtocollo
create function Protocollo.cancella_referentiprotocollo()
returns trigger as '
begin
  if check_protocolloconvalidato(old.IDDocumento) or check_protocolloannullato(old.IDDocumento) then
    raise exception ''Impossibile cancellare uffici referenti di un protocollo annullato o convalidato'';
  end if;
  return old;
end;
' language plpgsql;

create trigger trg_del_referentiprotocollo
  before delete on Protocollo.ReferentiProtocollo
    for each row execute procedure Protocollo.cancella_referentiprotocollo();

Modifica record Protocollo.ReferentiProtocollo

dipende da
Script Protocollo.ReferentiProtocollo
create function Protocollo.aggiorna_referentiprotocollo()
returns trigger as '
begin
  if new.iddocumento != old.iddocumento then
    raise exception ''Impossibile modificare uffici referenti di un protocollo annullato o convalidato'';
  end if;
  return new;
end;
' language plpgsql;

create trigger trg_upd_referentiprotocollo
  before update on Protocollo.ReferentiProtocollo
    for each row execute procedure Protocollo.aggiorna_referentiprotocollo();

Permessi di accesso

Permessi di accesso a Protocollo.ReferentiProtocollo

dipende da
Script Protocollo.ReferentiProtocollo
grant all privileges on Protocollo.ReferentiProtocollo to group amministratore
;;
grant select,insert,update,delete on Protocollo.ReferentiProtocollo to group protocollatore
;;
grant select on Protocollo.ReferentiProtocollo to public
;;
grant all privileges on Protocollo.Gen_IDReferenteProtocollo to group amministratore
;;
grant all privileges on Protocollo.Gen_IDReferenteProtocollo to group protocollatore

Controllo permessi modifica referente protocollo

dipende da
Script Protocollo.ReferentiProtocollo
create function Protocollo.verifica_permessi_aggiornamento_referenteprotocollo()
returns trigger as '
begin
  if old.letto = TRUE and new.letto = FALSE then
     raise exception ''Protocollo dato per letto precedentemente'';
  end if;
  if old.letto = FALSE and new.letto = TRUE then
     if exists (select *
               from anagrafiche.utentiufficio uu
                 join anagrafiche.utenti as ut on ut.idutente = uu.idutente
               where ut.login = current_user
                 and uu.idufficio = new.idufficio
                 and uu.daiperletto = TRUE) then
        new.utenteletto := current_user;
        new.dataletto := ''now'';
     else
        raise exception ''Non puoi dare per letto il protocollo'';
     end if;
  end if;
  if new.progressivo != old.progressivo then
     if exists (select * from protocollo.protocolliutente p where
               p.iddocumento = new.iddocumento and
               p.convalidaparziale = TRUE) then
        raise exception ''Modifica non permessa: protocollo convalidato parzialmente'';
     end if;
  end if;
  return new;
end;
' language plpgsql;
;;
create trigger trg_permessi_upd_referenteprotocollo
  before update on Protocollo.ReferentiProtocollo
    for each row execute procedure Protocollo.verifica_permessi_aggiornamento_referenteprotocollo();

Controllo permessi cancellazione referente protocollo

dipende da
Script Protocollo.ReferentiProtocollo
create function Protocollo.verifica_permessi_cancellazione_referenteprotocollo()
returns trigger as '
begin
  if exists (select * from protocollo.protocolli p where
             p.iddocumento = old.iddocumento and
             p.convalidaparziale = TRUE) then
    raise exception ''Cancellazione non permessa: protocollo convalidato parzialmente'';
  end if;
  return old;
end;
' language plpgsql;
;;
create trigger trg_permessi_del_referenteprotocollo
  before delete on Protocollo.ReferentiProtocollo
    for each row execute procedure Protocollo.verifica_permessi_cancellazione_referenteprotocollo();

Indici Protocollo.ReferentiProtocollo

dipende da
Script Protocollo.ReferentiProtocollo
create index idx_referentiprotocollo_iddocumento
  on protocollo.referentiprotocollo
  using btree
  (iddocumento)
;;
create index idx_referentiprotocollo_idufficio
  on protocollo.referentiprotocollo
  using btree
  (idufficio)
;;

Protocollo.RiferimentiProtocollo

Tabella di collegamento con i protocolli che rappresentano un riferimento diretto precedente con il protocollo in esame.

Informazione sui singoli campi

IDRiferimentoProtocollo
Identificativo univoco
IDDocumento
Identificativo del protocollo a cui si riferisce il collegamento
IDRiferimento
Identificativo del protocollo che è riferimento diretto precedente

Generatore Protocollo.RiferimentiProtocollo

dipende da
Script Protocollo
create sequence Protocollo.Gen_IDRiferimentoProtocollo

Protocollo.RiferimentiProtocollo

dipende da
create table Protocollo.RiferimentiProtocollo
(
  IDRiferimentoProtocollo largeid_t not null,
  IDDocumento stringid_t,
  IDRiferimento  stringid_t,

  constraint PK_RiferimentiProtocollo primary key (IDRiferimentoProtocollo)
) inherits(Timestamped)

Chiavi esterne

FK Protocollo.RiferimentiProtocollo->Protocollo.Protocolli

dipende da
alter table Protocollo.RiferimentiProtocollo
       add constraint fk_RP_IDDocumento foreign key (IDDocumento)
           references Protocollo.Protocolli (IDDocumento)
                      on update cascade

FK Protocollo.RiferimentiProtocollo->Protocollo.Protocolli (Riferimento)

dipende da
alter table Protocollo.RiferimentiProtocollo
       add constraint fk_RP_IDRiferimento foreign key (IDRiferimento)
           references Protocollo.Protocolli (IDDocumento)
                      on update cascade

Aggiornamento timestamp dei record

Inserimento record Protocollo.RiferimentiProtocollo

dipende da
create function Protocollo.inizializza_riferimentiprotocollo()
returns trigger as '
begin
  if new.IDRiferimentoProtocollo is NULL or new.IDRiferimentoProtocollo = 0 then
    new.IDRiferimentoProtocollo = nextval(''Protocollo.Gen_IDRiferimentoProtocollo'');
  end if;
  return new;
end;
' language plpgsql;

create trigger trg_ins_init_riferimentiprotocollo
  before insert on Protocollo.RiferimentiProtocollo
    for each row execute procedure Protocollo.inizializza_riferimentiprotocollo();

create trigger trg_ins_ts_p_riferimentiprotocollo
  before insert on Protocollo.RiferimentiProtocollo
    for each row execute procedure inizializza_timestamp();

Aggiornamento timestamp Protocollo.RiferimentiProtocollo

dipende da
Script Protocollo.RiferimentiProtocollo
create trigger trg_upd_ts_p_riferimentiprotocollo
  before update on Protocollo.RiferimentiProtocollo
    for each row execute procedure aggiorna_timestamp();

Permessi di accesso

Permessi di accesso a Protocollo.RiferimentiProtocollo

dipende da
Script Protocollo.RiferimentiProtocollo
grant all privileges on Protocollo.RiferimentiProtocollo to group amministratore
;;
grant select,insert,update,delete on Protocollo.RiferimentiProtocollo to group protocollatore
;;
grant select on Protocollo.RiferimentiProtocollo to public
;;
grant all privileges on Protocollo.Gen_IDRiferimentoProtocollo to group amministratore
;;
grant all privileges on Protocollo.Gen_IDRiferimentoProtocollo to group protocollatore

Indici Protocollo.RiferimentiProtocollo

dipende da
Script Protocollo.RiferimentiProtocollo
create index idx_riferimentiprotocollo_iddocumento
  on protocollo.riferimentiprotocollo
  using btree
  (iddocumento)
;;
create index idx_riferimentiprotocollo_idriferimento
  on protocollo.riferimentiprotocollo
  using btree
  (idriferimento)
;;

Protocollo.PraticheProtocollo

Tabella di collegamento delle pratiche in cui è inserito il protocollo.

Informazioni sui singoli campi

IDPraticaProtocollo
Identificativo univoco della corrispondenza protocollo-pratica
IDDocumento
Identificativo del protocollo a cui si riferisce il collegamento
IDPratica
Identificativo della pratica collegata
IDOggetto
Oggetto con cui il protocollo è inserito nella pratica
Progressivo
Stabilisce l'ordine delle pratiche in cui è contenuto il documento. La prima è quella che contiene l'originale.
Istanza
Flag

Generatore Protocollo.PraticheProtocollo

dipende da
Script Protocollo
create sequence Protocollo.Gen_IDPraticaProtocollo

Protocollo.PraticheProtocollo

dipende da
create table Protocollo.PraticheProtocollo
(
  IDPraticaProtocollo smallid_t not null,
  IDDocumento stringid_t,
  IDPratica stringid_t,
  IDOggetto smallid_t,
  Progressivo smallint_t not null default 0,
  Istanza boolean_t,

  constraint PK_PraticheProtocollo primary key (IDPraticaProtocollo)
) inherits(Timestamped)

Chiavi esterne

FK Protocollo.PraticheProtocollo->Protocollo.Protocolli

dipende da
alter table Protocollo.PraticheProtocollo
       add constraint fk_PP_IDDocumento foreign key (IDDocumento)
           references Protocollo.Protocolli (IDDocumento)
                      on update cascade

FK Protocollo.PraticheProtocollo->Pratiche.Pratiche

dipende da
alter table Protocollo.PraticheProtocollo
       add constraint fk_PP_IDPratica foreign key (IDPratica)
           references Pratiche.Pratiche (IDPratica)
                      on update cascade

FK Protocollo.PraticheProtocollo->Protocollo.Oggetti

dipende da
alter table Protocollo.PraticheProtocollo
       add constraint fk_PP_IDOggetto foreign key (IDOggetto)
           references Protocollo.Oggetti (IDOggetto)
                      on update cascade

Aggiornamento timestamp dei record

Inserimento record Protocollo.PraticheProtocollo

dipende da
create function Protocollo.inizializza_praticheprotocollo()
returns trigger as '
begin
  if new.IDPraticaProtocollo is NULL or new.IDPraticaProtocollo = 0 then
    new.IDPraticaProtocollo = nextval(''Protocollo.Gen_IDPraticaProtocollo'');
  end if;
  return new;
end;
' language plpgsql;

create trigger trg_ins_init_praticheprotocollo
  before insert on Protocollo.PraticheProtocollo
    for each row execute procedure Protocollo.inizializza_praticheprotocollo();

create trigger trg_ins_ts_p_praticheprotocollo
  before insert on Protocollo.PraticheProtocollo
    for each row execute procedure inizializza_timestamp();

Aggiornamento timestamp Protocollo.PraticheProtocollo

dipende da
Script Protocollo.PraticheProtocollo
create trigger trg_upd_ts_p_praticheprotocollo
  before update on Protocollo.PraticheProtocollo
    for each row execute procedure aggiorna_timestamp();

Ogni protocollo deve stare in almeno una pratica

Ogni protocollo deve stare almeno in una pratica. Due trigger appositi verificano che questa condizione sia rispettata, evitando che sia cancellata o 'spostata' una pratica allegata, se questa è l'ultima.

Cancellazione record Protocollo.PraticheProtocollo

dipende da
Script Protocollo.PraticheProtocollo
create function Protocollo.cancella_praticheprotocollo()
returns trigger as '
begin
  if not exists (SELECT * FROM protocollo.praticheprotocollo WHERE iddocumento = old.iddocumento
                 AND idpratica <> old.idpratica) then
    raise exception ''Impossibile rimuovere l''''ultima pratica in cui è inserito il protocollo'';
  end if;
  return old;
end;
' language plpgsql;

create trigger trg_del_praticheprotocollo
  before delete on Protocollo.PraticheProtocollo
    for each row execute procedure Protocollo.cancella_praticheprotocollo();

Modifica record Protocollo.PraticheProtocollo

dipende da
Script Protocollo.PraticheProtocollo
create function Protocollo.aggiorna_praticheprotocollo()
returns trigger as '
begin
  if new.iddocumento != old.iddocumento then
    raise exception ''Impossibile rimuovere l''''ultima pratica in cui è inserito il protocollo'';
  end if;
  return old;
end;
' language plpgsql;

create trigger trg_upd_praticheprotocollo
  before update on Protocollo.PraticheProtocollo
    for each row execute procedure Protocollo.aggiorna_praticheprotocollo();

Permessi di accesso

Permessi di accesso a Protocollo.PraticheProtocollo

dipende da
Script Protocollo.PraticheProtocollo
grant all privileges on Protocollo.PraticheProtocollo to group amministratore
;;
grant select,insert,update,delete on Protocollo.PraticheProtocollo to group protocollatore
;;
grant select on Protocollo.PraticheProtocollo to public
;;
grant all privileges on Protocollo.Gen_IDPraticaProtocollo to group amministratore
;;
grant all privileges on Protocollo.Gen_IDPraticaProtocollo to group protocollatore
;;
Visibilità delle pratiche collegate al protocollo

Le pratiche possono essere definite con flag riservata. In questo caso l'utente può visualizzare un descrizione completa della pratica collegata, solo se possiede il flag riservato per almeno uno tra gli uffici referenti.

Questo concetto è espresso dalla vista PraticheProtocolloUtente.

Pratiche protocollo visibili agli utenti

dipende da
create view Protocollo.PraticheProtocolloUtente as
  select pp.IDPraticaProtocollo
       , pp.IDDocumento
       , pp.IDPratica
       , pp.IDOggetto
       , pp.Progressivo
       , pp.Istanza
       , pp.rec_creato
       , pp.rec_creato_da
       , pp.rec_modificato
       , pp.rec_modificato_da
  from protocollo.praticheprotocollo as pp
  join pratiche.praticheutente p on pp.idpratica = p.idpratica
  where
    p.riservata is not TRUE
  or
    (p.riservata is TRUE and check_utenteflaginreferente(current_user, 'riservato', pp.iddocumento, FALSE))
;;
create rule PraticheProtocolloUtente_insert as on insert to Protocollo.PraticheProtocolloUtente
do instead
  insert into Protocollo.PraticheProtocollo (IDPraticaProtocollo
                                           , IDDocumento
                                           , IDPratica
                                           , IDOggetto
                                           , Progressivo
                                           , Istanza
                                           , rec_creato
                                           , rec_creato_da
                                           , rec_modificato
                                           , rec_modificato_da
                                             )
  values (new.IDPraticaProtocollo
        , new.IDDocumento
        , new.IDPratica
        , new.IDOggetto
        , new.Progressivo
        , new.Istanza
        , new.rec_creato
        , new.rec_creato_da
        , new.rec_modificato
        , new.rec_modificato_da
          )
;;
create rule PraticheProtocolloUtente_update as on update to Protocollo.PraticheProtocolloUtente
do instead
  update Protocollo.PraticheProtocollo
  set IDPraticaProtocollo = new.IDPraticaProtocollo
    , IDDocumento = new.IDDocumento
    , IDPratica = new.IDPratica
    , IDOggetto = new.IDOggetto
    , Progressivo = new.Progressivo
    , Istanza = new.Istanza
    , rec_creato = new.rec_creato
    , rec_creato_da = new.rec_creato_da
    , rec_modificato = new.rec_modificato
    , rec_modificato_da = new.rec_modificato_da
  where IDPraticaProtocollo = old.IDPraticaProtocollo;
;;
create rule PraticheProtocolloUtente_delete as on delete to Protocollo.PraticheProtocolloUtente
do instead
  delete from Protocollo.PraticheProtocollo
  where IDPraticaProtocollo = old.IDPraticaProtocollo;

Permessi di accesso a Protocollo.PraticheProtocolloUtente

dipende da
Script Pratiche protocollo visibili agli utenti
grant all privileges on Protocollo.PraticheProtocolloUtente to group amministratore
;;
grant select,insert,update,delete on Protocollo.PraticheProtocolloUtente to group protocollatore
;;
grant update on Protocollo.Gen_IDPraticaProtocollo to group amministratore
;;
grant update on Protocollo.Gen_IDPraticaProtocollo to group protocollatore

Indici Protocollo.PrticheProtocollo

dipende da
Script Protocollo.PraticheProtocollo
create index idx_praticheprotocollo_iddocumento
  on protocollo.praticheprotocollo
  using btree
  (iddocumento)
;;
create index idx_praticheprotocollo_idpratica
  on protocollo.praticheprotocollo
  using btree
  (idpratica)
;;

Protocollo.Oggetti

Tabella anagrafica degli oggetti con cui i protocolli sono inseriti nelle pratiche.

Informazioni sui singoli campi

IDOggetto
Identificativo univoco dell'oggetto
Descrizione
Descrizione dell'oggetto

Generatore Protocollo.Oggetti

dipende da
Script Protocollo
create sequence Protocollo.Gen_IDOggetto

Protocollo.Oggetti

dipende da
create table Protocollo.Oggetti
(
  IDOggetto smallid_t not null,
  Descrizione longstring_t,

  constraint PK_Oggetti primary key (IDOggetto)
) inherits(Timestamped)

Aggiornamento timestamp dei record

Inserimento record Protocollo.Oggetto

dipende da
create function Protocollo.inizializza_oggetti()
returns trigger as '
begin
  if new.IDOggetto is NULL or new.IDOggetto = 0 then
    new.IDOggetto = nextval(''Protocollo.Gen_IDOggetto'');
  end if;
  return new;
end;
' language plpgsql;

create trigger trg_ins_init_oggetti
  before insert on Protocollo.Oggetti
    for each row execute procedure Protocollo.inizializza_oggetti();

create trigger trg_ins_ts_p_oggetti
  before insert on Protocollo.Oggetti
    for each row execute procedure inizializza_timestamp();

Aggiornamento timestamp Protocollo.Oggetti

dipende da
Script Protocollo.Oggetti
create trigger trg_upd_ts_p_oggetti
  before update on Protocollo.Oggetti
    for each row execute procedure aggiorna_timestamp();

Permessi di accesso

Permessi di accesso a Protocollo.Oggetti

dipende da
Script Protocollo.Protocolli
grant all privileges on Protocollo.Oggetti to group amministratore
;;
grant select,insert,update,delete on Protocollo.Oggetti to group protocollatore
;;
grant select on Protocollo.Oggetti to public
;;
grant all privileges on Protocollo.Gen_IDOggetto to group amministratore
;;
grant all privileges on Protocollo.Gen_IDOggetto to group protocollatore

Protocollo.Annullati

Contiene l'elenco dei protocolli in richiesta di annullamento e dei protocolli già annullati, arricchiti del riferimento alla motivazione dell'annullamento.

Informazioni sui singoli campi

IDAnnullato
Identificativo univoco dell'annullamento
IDDocumento
Identificativo del protocollo a cui si riferisce l'annullamento
IDMotivazioneAnnullamento
Riferimento al motivo dell'annullamento
IDEsecutoreRichiesta
L'utente che ha richiesto l'annullamento
DataRichiesta
Data in cui è avvenuta la richiesta di annullamento
IDEsecutoreAutorizzazione
L'utente che ha autorizzato (o respinto) l'annullamento
DataAutorizzazione
Data in cui è avvenuto (o è stato respinto) l'annullamento
Respinto
La richiesta di annullamento è stata respinta

Generatore Protocollo.Annullati

dipende da
Script Protocollo
create sequence Protocollo.Gen_IDAnnullato

Protocollo.Annullati

dipende da
Script Protocollo
create table Protocollo.Annullati
(
  IDAnnullato smallid_t not null,
  IDDocumento stringid_t,
  IDMotivazioneAnnullamento smallid_t,
  IDEsecutoreRichiesta smallid_t,
  DataRichiesta date_t,
  IDEsecutoreAutorizzazione smallid_t,
  DataAutorizzazione date_t,
  Respinto boolean_t,

  constraint PK_Annullati primary key (IDAnnullato)
)

Chiavi esterne

FK Protocollo.Annullati->Protocollo.Protocolli

dipende da
alter table Protocollo.Annullati
       add constraint fk_A_IDDocumento foreign key (IDDocumento)
           references Protocollo.Protocolli (IDDocumento)
                      on update cascade

FK Protocollo.Annullati->Protocollo.MotivazioniAnnullamento

dipende da
alter table Protocollo.Annullati
       add constraint fk_A_IDMotivazioneAnnullamento foreign key (IDMotivazioneAnnullamento)
           references Protocollo.MotivazioniAnnullamento (IDMotivazioneAnnullamento)
                      on update cascade

FK Protocollo.Annullati->Anagrafiche.Utenti (EsecutoreRichiesta)

dipende da
alter table Protocollo.Annullati
       add constraint fk_A_IDEsecutoreRichiesta foreign key (IDEsecutoreRichiesta)
           references Anagrafiche.Utenti (IDUtente)
                      on update cascade

FK Protocollo.Annullati->Anagrafiche.Utenti (EsecutoreAutorizzazione)

dipende da
alter table Protocollo.Annullati
       add constraint fk_A_IDEsecutoreAutorizzazione foreign key (IDEsecutoreAutorizzazione)
           references Anagrafiche.Utenti (IDUtente)
                      on update cascade

Aggiornamento dei record

Inserimento record Protocollo.Annullati

dipende da
create function Protocollo.inizializza_annullati()
returns trigger as '
begin
  if new.IDAnnullato is NULL or new.IDAnnullato = 0 then
    new.IDAnnullato = nextval(''Protocollo.Gen_IDAnnullato'');
    new.IDEsecutoreRichiesta = (select au.idutente from
                                anagrafiche.utenti au
                              where au.login = current_user);
    new.DataRichiesta = ''now'';
  end if;
  if exists (select *
             from anagrafiche.utenti ut
               join anagrafiche.utentiufficio as uu
                 on uu.idutente = ut.idutente
               join anagrafiche.uffici as uf
                 on uf.idufficio = uu.idufficio
               where ut.login = current_user
                 and uf.ufficioprotocollo = TRUE) then
    -- Annullamento autorizzato
    new.IDEsecutoreAutorizzazione = (select au.idutente from
                                     anagrafiche.utenti au
                                   where au.login = current_user);
    new.DataAutorizzazione = ''now'';
  end if;
  return new;
end;
' language plpgsql;

create trigger trg_ins_init_annullati
  before insert on Protocollo.Annullati
    for each row execute procedure Protocollo.inizializza_annullati();

Permessi di accesso

Permessi di accesso a Protocollo.Annullati

dipende da
Script Protocollo.Annullati
grant all privileges on Protocollo.Annullati to group amministratore
;;
grant select,insert,update,delete on Protocollo.Annullati to group protocollatore
;;
grant select on Protocollo.Annullati to public
;;
grant all privileges on Protocollo.Gen_IDAnnullato to group amministratore
;;
grant all privileges on Protocollo.Gen_IDAnnullato to group protocollatore

Protocollo.MotivazioniAnnullamento

Quando un protocollo viene annullato, o quando ne viene richiesto l'annullamento, è necessario fornire una motivazione scelta tra quelle contenute nella tabella MotivazioniAnnullamento.

Informazioni sui singoli campi

IDMotivazioneAnnullamento
Identificativo univoco della motivazione
Descrizione
Descrizione testuale della motivazione

Generatore Protocollo.MotivazioniAnnullamento

dipende da
Script Protocollo
create sequence Protocollo.Gen_IDMotivazioneAnnullamento

Protocollo.MotivazioniAnnullamento

dipende da
Script Protocollo
create table Protocollo.MotivazioniAnnullamento
(
  IDMotivazioneAnnullamento smallid_t not null,
  Descrizione longstring_t,

  constraint PK_MotivazioniAnnullamento primary key (IDMotivazioneAnnullamento)
)

Aggiornamento dei record

Inserimento record Protocollo.MotivazioniAnnullamento

dipende da
create function Protocollo.inizializza_motivazioniannullamento()
returns trigger as '
begin
  if new.IDMotivazioneAnnullamento is NULL or new.IDMotivazioneAnnullamento = 0 then
    new.IDMotivazioneAnnullamento = nextval(''Protocollo.Gen_IDMotivazioneAnnullamento'');
  end if;
  return new;
end;
' language plpgsql;

create trigger trg_ins_init_motivazioniannullamento
  before insert on Protocollo.MotivazioniAnnullamento
    for each row execute procedure Protocollo.inizializza_motivazioniannullamento();

Permessi di accesso

Permessi di accesso a Protocollo.MotivazioniAnnullamento

dipende da
Script Protocollo.MotivazioniAnnullamento
grant all privileges on Protocollo.MotivazioniAnnullamento to group amministratore
;;
grant select on Protocollo.MotivazioniAnnullamento to public
;;
grant all privileges on Protocollo.Gen_IDMotivazioneAnnullamento to group amministratore

Dati di base

Motivazioni di annullamento

dipende da
Script Inserimento record Protocollo.MotivazioniAnnullamento
insert into Protocollo.MotivazioniAnnullamento (Descrizione)
       values ('Protocollo duplicato')
;;
insert into Protocollo.MotivazioniAnnullamento (Descrizione)
       values ('Documento protocollato per test od esame')
;;
insert into Protocollo.MotivazioniAnnullamento (Descrizione)
       values ('Errore acquisizione mittente')
;;
insert into Protocollo.MotivazioniAnnullamento (Descrizione)
       values ('Atto ritirato')
;;
insert into Protocollo.MotivazioniAnnullamento (Descrizione)
       values ('Protocollo non corrispondente al documento')
;;
insert into Protocollo.MotivazioniAnnullamento (Descrizione)
       values ('Acquisizione erronea del numero')
;;
insert into Protocollo.MotivazioniAnnullamento (Descrizione)
       values ('Comunicazione tra uffici della stessa Area Omogenea')
;;
insert into Protocollo.MotivazioniAnnullamento (Descrizione)
       values ('Atto non emesso')
;;
insert into Protocollo.MotivazioniAnnullamento (Descrizione)
       values ('Errore materiale')
;;
insert into Protocollo.MotivazioniAnnullamento (Descrizione)
       values ('Modifica contenuto')
;;

Protocollo.AllegatiProtocollo

Tabella di collegamento tra gli allegati e un protocollo.

Informazioni sui singoli campi

IDAllegatoProtocollo
Identificativo univoco della corrispondenza protocollo-allegato
IDDocumento
Identificativo del protocollo a cui si riferisce il collegamento
IDAllegato
Identificativo dell'allegato a cui si riferisce il collegamento
IDPadre
L'allegato può essere parentato ad un altro AllegatoProtocollo
NrRevisione
L'allegato è stato revisionato, e si trova come figlio della sua revisione. Il suo numero indica il progressivo di revisione (tutte le revisioni sono figli diretti dell'ultima revisione, ovverto dell'elemento "corrente"). Quest'ultimo, per convenzione ha Revisione==0.
Progressivo
Stabilisce l'ordinamento degli allegati

Generatore Protocollo.AllegatiProtocollo

dipende da
Script Protocollo
create sequence Protocollo.Gen_IDAllegatoProtocollo

Protocollo.AllegatiProtocollo

dipende da
create table Protocollo.AllegatiProtocollo
(
  IDAllegatoProtocollo largeid_t not null,
  IDDocumento stringid_t,
  IDAllegato largeid_t,
  IDPadre largeid_t,
  NrRevisione integer_t,
  Progressivo smallint_t not null default 0,

  constraint PK_AllegatiProtocollo primary key (IDAllegatoProtocollo)
) inherits(Timestamped)

Chiavi esterne

FK Protocollo.AllegatiProtocollo->Anagrafiche.Allegati

dipende da
alter table Protocollo.AllegatiProtocollo
       add constraint fk_AP_IDAllegato foreign key (IDAllegato)
           references Anagrafiche.Allegati (IDAllegato)
                      on update cascade

FK Protocollo.AllegatiProtocollo->Protocollo.Protocolli

dipende da
alter table Protocollo.AllegatiProtocollo
       add constraint fk_UP_IDDocumento foreign key (IDDocumento)
           references Protocollo.Protocolli (IDDocumento)
                      on update cascade

Aggiornamento timestamp dei record

Inserimento record Protocollo.AllegatiProtocollo

dipende da
create function Protocollo.inizializza_allegatiprotocollo()
returns trigger as '
begin
  if check_protocolloconvalidato(new.IDDocumento) or check_protocolloannullato(new.IDDocumento) then
    raise exception ''Impossibile aggiungere allegati ad un protocollo annullato o convalidato'';
  end if;
  if new.IDAllegatoProtocollo is NULL or new.IDAllegatoProtocollo = 0 then
    new.IDAllegatoProtocollo = nextval(''Protocollo.Gen_IDAllegatoProtocollo'');
  end if;
  return new;
end;
' language plpgsql;

create trigger trg_ins_init_allegatiprotocollo
  before insert on Protocollo.AllegatiProtocollo
    for each row execute procedure Protocollo.inizializza_allegatiprotocollo();

create trigger trg_ins_ts_p_allegatiprotocollo
  before insert on Protocollo.AllegatiProtocollo
    for each row execute procedure inizializza_timestamp();

Aggiornamento timestamp Protocollo.AllegatiProtocollo

dipende da
Script Protocollo.AllegatiProtocollo
create trigger trg_upd_ts_p_allegatiprotocollo
  before update on Protocollo.AllegatiProtocollo
    for each row execute procedure aggiorna_timestamp();

Cancellazione record Protocollo.AllegatiProtocollo

dipende da
Script Protocollo.AllegatiProtocollo
create function Protocollo.cancella_allegatiprotocollo()
returns trigger as '
begin
  if check_protocolloconvalidato(old.IDDocumento) or check_protocolloannullato(old.IDDocumento) then
    raise exception ''Impossibile cancellare allegati di un protocollo annullato o convalidato'';
  end if;
  return old;
end;
' language plpgsql;

create trigger trg_del_allegatiprotocollo
  before delete on Protocollo.AllegatiProtocollo
    for each row execute procedure Protocollo.cancella_allegatiprotocollo();

Modifica record Protocollo.AllegatiProtocollo

dipende da
Script Protocollo.AllegatiProtocollo
create function Protocollo.aggiorna_allegatiprotocollo()
returns trigger as '
begin
  if new.iddocumento != old.iddocumento then
    raise exception ''Impossibile modificare allegati di un protocollo annullato o convalidato'';
  end if;
  return new;
end;
' language plpgsql;

create trigger trg_upd_allegatiprotocollo
  before update on Protocollo.AllegatiProtocollo
    for each row execute procedure Protocollo.aggiorna_allegatiprotocollo();

Permessi di accesso

Permessi di accesso a Protocollo.AllegatiProtocollo

dipende da
Script Protocollo.AllegatiProtocollo
grant all privileges on Protocollo.AllegatiProtocollo to group amministratore
;;
grant select,insert,update,delete on Protocollo.AllegatiProtocollo to group protocollatore
;;
grant select on Protocollo.AllegatiProtocollo to public
;;
grant all privileges on Protocollo.Gen_IDAllegatoProtocollo to group amministratore
;;
grant all privileges on Protocollo.Gen_IDAllegatoProtocollo to group protocollatore

Protocollo.TipologieRiferimentoMittente

I riferimenti possono essere lettera, raccomandata, fax, email, etc

Informazioni sui singoli campo

IDTipologiaRiferimentoMittente
Identificativo univoco della tipologia di riferimento
Descrizione
Descrizione della tipologia di protocollo (lettera, raccomandata, fax, email, etc)

Protocollo.TipologieRiferimentoMittente

dipende da
create table Protocollo.TipologieRiferimentoMittente
(
 IDTipologiaRiferimentoMittente flag_t not null,
 Descrizione tinystring_t,

 constraint PKTipologieRiferimentoMittente primary key (IDTIpologiaRiferimentoMittente)
)

Permessi di accesso

Permessi di accesso a Protocollo.TipologieRiferimentoMittente

dipende da
Script Protocollo.TipologieRiferimentoMittente
grant all privileges on Protocollo.TipologieRiferimentoMittente to group amministratore
;;
grant select on Protocollo.TipologieRiferimentoMittente to public

Dati di base

Protocollo.TipologieRiferimentoMittente di base

dipende da
Script Permessi di accesso a Protocollo.TipologieRiferimentoMittente
insert into Protocollo.TipologieRiferimentoMittente (IDTipologiaRiferimentoMittente, Descrizione) values ('-', '')
;;
insert into Protocollo.TipologieRiferimentoMittente (IDTipologiaRiferimentoMittente, Descrizione) values ('L', 'lettera')
;;
insert into Protocollo.TipologieRiferimentoMittente (IDTipologiaRiferimentoMittente, Descrizione) values ('R', 'raccomandata')
;;
insert into Protocollo.TipologieRiferimentoMittente (IDTipologiaRiferimentoMittente, Descrizione) values ('F', 'fax')
;;
insert into Protocollo.TipologieRiferimentoMittente (IDTipologiaRiferimentoMittente, Descrizione) values ('E', 'email')
;;

Tabelle relative alla pratiche

Le tabelle sono raggruppate nello schema pratiche:

Pratiche

create schema pratiche
;;
grant all privileges on schema pratiche to group amministratore
;;
grant usage on schema pratiche to public

Pratiche.Pratiche

Anagrafica delle pratiche.

Informazioni sui singoli campi

IDPKPratica
Chiave primaria ATTENZIONE: notazione leggermente fuori standard, per liberare il campo IDPratica che viene utilizzato come FK (al pari di Protocollo.IDDocumento)
IDPratica
Numero di pratica: composto nella forma 'yyyy0000n' costituisce il vero e proprio numero di pratica (id_doc)
Descrizione
Descrizione della pratica
IDTipologiaPratica
Tipologia della pratica
Tipo
Il "tipo" di pratica, da punto di vista della gestione tramite polymorphic identity di SQLAlchemy
Categoria
Classificazione: categoria
Classe
Classificazione: classe
Fascicolo
Classificazione: fascicolo
IDUfficio
Identificativo dell'ufficio titolare della pratica
IDUbicazione
Identificativo dell'ufficio dove sta fisicamente la pratica
IDFase
E' la fase corrente dichiarata. Non necessariamente coincide con la fase dell'iter in cui la pratica si trova sulla base della risoluzione dei vincoli (vedi iter).
Riservata
La pratica è dichiarata riservata

Generatore Pratiche.Pratiche

dipende da
Script Pratiche
create sequence Pratiche.Gen_IDPKPratica

Generatore Pratiche.Pratiche (nr)

dipende da
Script Pratiche
create sequence Pratiche.Gen_NrPratica
;;
alter table Pratiche.Gen_NrPratica owner to istruttore

Pratiche.Pratiche

dipende da
create table Pratiche.Pratiche
(
 IDPKPratica largeid_t not null,
 IDPratica stringid_t not null,
 Descrizione remark_t,
 IDTipologiaPratica smallid_t not null,
 Tipo stringid_t,

 Categoria smallid_t,
 Classe smallid_t,
 Fascicolo smallid_t,

 IDUfficio smallid_t not null,
 IDUbicazione smallid_t,
 IDFase smallid_t,

 Riservata boolean_t not null,

 --id_oggpratica integer,
 --ogg_libero character varying(250),
 --desc_ubic_fisica character varying(250),
 --id_oggetto integer,
 --n_inventario character(10),
 --anno_inv character(4),
 --stato integer,
 --ubicazione integer,
 --id_procedimento smallint,
 --id_proc_unico character(9),
 --risposte_incomplete_p smallint,
 --risposte_incomplete_a smallint,

 Scadenza date_t,
 DataChiusura date_t,
 TermineIstruttoria date_t,

 Note remark_t,

 constraint PK_Pratiche primary key (IDPKPratica),
 constraint UK_Pratiche_IDPratica unique (IDPratica)
) inherits(TimeStamped)

Chiavi esterne

FK Pratiche.Pratiche->Pratiche.TipologiePratica

dipende da
alter table Pratiche.Pratiche
       add constraint fk_P_IDTipologiaPratica foreign key (IDTipologiaPratica)
           references Pratiche.TipologiePratica (IDTipologiaPratica)
                      on update cascade

FK Pratiche.Pratiche->Anagrafiche.Uffici

dipende da
alter table Pratiche.Pratiche
       add constraint fk_P_IDUfficio foreign key (IDUfficio)
           references Anagrafiche.Uffici (IDUfficio)
                      on update cascade