# MOTORBiKE

Application web de gestion commerciale pour une entreprise de vente et maintenance de motos, developpee avec CodeIgniter 4.

## Fonctionnalites

- **Gestion des ventes / commandes** - creation, modification, suivi et impression de bons de livraison
- **Avances** - gestion des acomptes clients avec conversion automatique en commande et alertes d'echeance
- **Recouvrement** - suivi des paiements et creances
- **Caisse / Sortie caisse** - gestion des encaissements et decaissements avec export Excel/CSV
- **Produits** - catalogue avec attributs, categories, marques, images et import depuis Excel
- **Stocks** - affectation des produits par magasin/point de vente
- **Mecaniciens** - suivi des performances des techniciens
- **Utilisateurs & Groupes** - gestion des acces par roles et groupes de permissions
- **Magasins** - gestion multi-points de vente
- **Statistiques & Rapports** - tableaux de bord, rapports de ventes, de stock et de performances
- **Historique** - traçabilite des actions avec export
- **Notifications** - alertes en temps reel (echeances, etc.)
- **QR Code** - generation de QR codes produits
- **Securite** - validation de securite avec historique

## Stack technique

- **Framework** : CodeIgniter 4 (PHP 8.2+)
- **Base de donnees** : MySQL (via MySQLi)
- **Authentification** : JWT (`firebase/php-jwt`)
- **Export** : PhpSpreadsheet (`phpoffice/phpspreadsheet`)
- **Tests** : PHPUnit 9

## Prerequis

- PHP >= 8.2 avec les extensions : `curl`, `intl`, `json`, `mbstring`, `mysqli`
- MySQL >= 5.7 / MariaDB
- Composer

## Installation

```bash
# Cloner le depot
git clone <url-du-depot> motorbike
cd motorbike

# Installer les dependances
composer install

# Configurer l'environnement
cp .env.example .env
# Editer .env avec vos parametres de base de donnees et URL

# Executer les migrations
php spark migrate

# Lancer le serveur de developpement
php spark serve
```

## Configuration (.env)

```ini
CI_ENVIRONMENT = development

app.baseURL = 'http://localhost:8080/'

database.default.hostname = localhost
database.default.database = motorbike
database.default.username = <votre_utilisateur>
database.default.password = <votre_mot_de_passe>
database.default.DBDriver = MySQLi
database.default.port = 3306
```

## Structure du projet

```
app/
  Config/        - Configuration (routes, filtres, base de donnees...)
  Controllers/   - Controleurs de l'application
  Database/      - Migrations et seeds
  Filters/       - Filtres d'authentification (auth, loggedIn, publicCheck)
  Models/        - Modeles de donnees
  Views/         - Templates (dashboard, commandes, produits, rapports...)
public/
  assets/        - CSS, JS, images
```

## Routes principales

| Chemin | Description |
|--------|-------------|
| `/` | Tableau de bord |
| `/login` | Authentification |
| `/orders` | Commandes / Ventes |
| `/avances` | Gestion des avances |
| `/products` | Catalogue produits |
| `/stores` | Magasins |
| `/recouvrement` | Recouvrement |
| `/sortieCaisse` | Sortie de caisse |
| `/reports` | Rapports |
| `/statistic` | Statistiques |
| `/users` | Utilisateurs |
| `/groups` | Groupes / Roles |
| `/brands` | Marques |
| `/category` | Categories |
| `/mecanicien` | Mecaniciens |
| `/historique` | Historique |

## Tests

```bash
composer test
# ou
php spark test
```

## Licence

MIT
