# Struttura Database ContrattoSEI

## 1. Gestione Patrimoniale

### 1.1 Patrimonio Cliente
```sql
CREATE TABLE PatrimonioCliente (
    ID INT PRIMARY KEY,
    IDCliente VARCHAR(50),
    DataRilevazione DATE,
    TotalePatrimonio DECIMAL(18,2),
    PatrimonioGestito DECIMAL(18,2),
    PatrimonioAmministrato DECIMAL(18,2),
    PatrimonioAssicurativo DECIMAL(18,2),
    ContiCorrenti DECIMAL(18,2)
);
```

### 1.2 Risorse Finanziarie
```sql
CREATE TABLE RisorseFinanziarie (
    ID INT PRIMARY KEY,
    IDCliente VARCHAR(50),
    TipoRisorsa VARCHAR(50),
    Importo DECIMAL(18,2),
    DataValuta DATE,
    Allocata BIT,
    CategoriaProdotto VARCHAR(100)
);
```

### 1.3 Prodotti ESG
```sql
CREATE TABLE ProdottiESG (
    ID INT PRIMARY KEY,
    CodiceProdotto VARCHAR(50),
    NomeProdotto VARCHAR(200),
    CategoriaESG VARCHAR(50),
    RatingESG VARCHAR(10),
    ScoreAmbientale DECIMAL(5,2),
    ScoreSociale DECIMAL(5,2),
    ScoreGovernance DECIMAL(5,2)
);
```

## 2. Gestione Contratti

### 2.1 Contratti
```sql
CREATE TABLE Contratti (
    ID INT PRIMARY KEY,
    NumeroContratto VARCHAR(50),
    IDCliente VARCHAR(50),
    TipoContratto VARCHAR(100),
    DataStipula DATE,
    DataScadenza DATE,
    Stato VARCHAR(20)
);
```

### 2.2 DocumentiContrattuali
```sql
CREATE TABLE DocumentiContrattuali (
    ID INT PRIMARY KEY,
    IDContratto INT,
    TipoDocumento VARCHAR(100),
    PathDocumento VARCHAR(500),
    DataCreazione DATETIME,
    DataInvio DATETIME,
    StatoInvio VARCHAR(20)
);
```

## 3. Reporting Trimestrale

### 3.1 ReportTrimestrali
```sql
CREATE TABLE ReportTrimestrali (
    ID INT PRIMARY KEY,
    IDCliente VARCHAR(50),
    Trimestre INT,
    Anno INT,
    DataGenerazione DATETIME,
    PathReport VARCHAR(500),
    StatoInvio VARCHAR(20)
);
```

### 3.2 AnalisiPortafoglio
```sql
CREATE TABLE AnalisiPortafoglio (
    ID INT PRIMARY KEY,
    IDReport INT,
    TipoAnalisi VARCHAR(100),
    ValoreIniziale DECIMAL(18,2),
    ValoreFinale DECIMAL(18,2),
    Variazione DECIMAL(18,2),
    VariazionePercentuale DECIMAL(5,2)
);
```

## 4. Anagrafica

### 4.1 Clienti
```sql
CREATE TABLE Clienti (
    IDCliente VARCHAR(50) PRIMARY KEY,
    Nome VARCHAR(100),
    Cognome VARCHAR(100),
    CodiceFiscale VARCHAR(16),
    Email VARCHAR(200),
    Telefono VARCHAR(20),
    IndirizzoResidenza VARCHAR(500)
);
```

### 4.2 Consulenti
```sql
CREATE TABLE Consulenti (
    IDConsulente VARCHAR(50) PRIMARY KEY,
    Nome VARCHAR(100),
    Cognome VARCHAR(100),
    Email VARCHAR(200),
    AreaTerritoriale VARCHAR(100)
);
```

## 5. Configurazione Sistema

### 5.1 ConfigurazioniPDF
```sql
CREATE TABLE ConfigurazioniPDF (
    ID INT PRIMARY KEY,
    TipoDocumento VARCHAR(100),
    Template VARCHAR(200),
    ParametriConfigurazione TEXT,
    Attivo BIT
);
```

### 5.2 LogOperazioni
```sql
CREATE TABLE LogOperazioni (
    ID INT PRIMARY KEY IDENTITY(1,1),
    DataOperazione DATETIME,
    TipoOperazione VARCHAR(100),
    Descrizione TEXT,
    Utente VARCHAR(50),
    StatoOperazione VARCHAR(20)
);
```

## Relazioni Chiave
- Clienti -> PatrimonioCliente (1:N)
- Clienti -> Contratti (1:N)
- Contratti -> DocumentiContrattuali (1:N)
- Clienti -> ReportTrimestrali (1:N)
- ReportTrimestrali -> AnalisiPortafoglio (1:N)
- Consulenti -> Clienti (1:N)

## Note Tecniche
1. Tutti gli importi sono memorizzati con precisione a 2 decimali
2. Le date includono sempre il timestamp per tracciabilità
3. I path dei documenti sono memorizzati come percorsi relativi
4. Gli stati sono gestiti tramite enumerazioni predefinite
5. I log operazioni mantengono traccia di tutte le modifiche