# S.A.T.T - Système de Facturation et Gestion des Transits

## Description
ERP de facturation complet pour la Société d'Assistance Transit et Transport (S.A.T.T).
Conversion automatique des formules Excel en logique métier PHP.

## Stack Technique
- **Backend**: PHP 8.2+, CodeIgniter 4.5+
- **Frontend**: Bootstrap 5, DataTables, Chart.js, SweetAlert2
- **Database**: MySQL/MariaDB
- **PDF**: DomPDF 3.0
- **Excel**: PhpSpreadsheet 2.0

## Installation Rapide

### 1. Prérequis
- PHP 8.2+ avec extensions: mysqli, gd, mbstring, xml, zip
- MySQL 5.7+ ou MariaDB 10.3+
- Composer 2.x

### 2. Installation
```bash
# Cloner ou extraire le projet
cd satt-invoice

# Installer les dépendances
composer install --no-dev

# Configurer l'environnement
cp .env.example .env
# Éditer .env avec vos paramètres DB

# Créer la base de données
mysql -u root -p -e "CREATE DATABASE satt_invoice;"

# Exécuter les migrations et seeders
php spark migrate
php spark db:seed App\Database\Seeds\DemoSeeder

# Configurer les permissions
chmod -R 775 writable/
chmod -R 775 public/uploads/
```

### 3. Configuration Apache (.htaccess)
```apache
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
```

### 4. Configuration Nginx
```nginx
server {
    listen 80;
    server_name facture.satt.tn;
    root /var/www/satt-invoice/public;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}
```

## Connexion par défaut
- **Email**: admin@satt.tn
- **Mot de passe**: admin123

## Formules Excel supportées
| Excel | PHP | Description |
|-------|-----|-------------|
| `=SUM(G17:I41)` | `calculateDisbursements()` | Total des débours |
| `=B44*A44` | `calculateVat()` | Calcul TVA |
| `=SUM(K42:L46)` | `calculateTotal()` | Total facture |
| `=K47-K48` | `calculateNetPayable()` | Net à payer |

## Structure des dossiers
```
satt-invoice/
├── app/
│   ├── Config/          # Configuration
│   ├── Controllers/     # Contrôleurs MVC
│   ├── Models/          # Modèles de données
│   ├── Services/        # Logique métier (Excel -> PHP)
│   ├── Entities/        # Entités
│   ├── Filters/         # Filtres auth/CSRF
│   └── Views/           # Templates Bootstrap
├── database/
│   ├── Migrations/      # Schéma SQL complet
│   └── Seeds/           # Données de démo
├── public/              # Point d'entrée
├── writable/            # Logs, cache, uploads
└── .env                 # Configuration
```

## Sécurité
- Protection CSRF sur tous les formulaires
- Hashage bcrypt des mots de passe
- Protection brute force (5 tentatives = 30min lock)
- Sessions sécurisées en base de données
- Validation backend stricte
- Soft delete pour conservation des données

## Licence
Propriétaire - S.A.T.T
