Architecture & Base de données
Structure du projet
/
index.php # Page principale (Import + Consultation + Export)
config/
database.php # Connexion PDO (getDB())
pages/
admin.php # Page d'administration
admin_referentiels.php # CRUD référentiels
client.php # Commande client / matching
import/
upload.php # Traitement de l'upload Excel
export/
full.php # Export Excel complet
simple.php # Export colonnes essentielles
client.php # Export résultats matching client
templates/
generate_template.php # Template import standard
generate_template_client.php # Template commande client
assets/
css/
main.css
crud.css
admin.css
import.css
js/
main.js
crud.js
admin.js
client.js
api/ # Endpoints API internes
vendor/ # Dépendances Composer (PhpSpreadsheet)
composer.json
VERSION # Numéro de version SemVer
CHANGELOG.md # Historique des versions
Schéma de base de données
Tables principales
REFERENCES
Table centrale du système PIM.
| Colonne | Type | Description |
|---|---|---|
ID_REFERENCE | INT PK | Identifiant unique |
CODE_MACHINE | VARCHAR | Code produit principal |
DESIGNATION | VARCHAR | Description du produit |
REF_ACTIF | TINYINT | 1 = actif, 0 = inactif |
DATE_CREATION | DATETIME | Date de création |
ID_MARQUE | INT FK | → ACTEURS.ID_ACTEUR |
ID_CATEGORIE | INT FK | → CATEGORIES.ID_CATEGORIE |
ID_QUALITE | INT FK | → QUALITE.ID_QUALITE |
REFERENCES_FOURNISSEURS
Liaison entre une référence et un fournisseur, avec la référence externe.
| Colonne | Type | Description |
|---|---|---|
ID_REF_FOURNISSEUR | INT PK | Identifiant |
ID_REFERENCE | INT FK | → REFERENCES |
ID_FOURNISSEUR | INT FK | → FOURNISSEURS |
REF_EXTERNE | VARCHAR | Référence chez le fournisseur |
ID_PLATEFORME | INT FK | → PLATEFORMES |
ACTIF | TINYINT | Statut de la relation |
PRIX_ACHAT
Historique des prix d'achat par référence fournisseur.
| Colonne | Type | Description |
|---|---|---|
ID_PRIX | INT PK | Identifiant |
ID_REF_FOURNISSEUR | INT FK | → REFERENCES_FOURNISSEURS |
PRIX_UNITAIRE_NET | DECIMAL | Prix unitaire net |
UNITE_DE_VENTE | VARCHAR | Unité (ex: pièce, lot…) |
MOQ | INT | Quantité minimale de commande |
DATE_FIN | DATE | Date de fin de validité (NULL = actif) |
REFERENCES_CONCURRENTS
Références équivalentes chez les concurrents.
| Colonne | Type | Description |
|---|---|---|
ID_REF_CONCURRENT | INT PK | Identifiant |
ID_REFERENCE | INT FK | → REFERENCES |
REF_EQUIVALENTE | VARCHAR | Référence équivalente concurrent |
REF_REMPLACEMENT | VARCHAR | Référence de remplacement |
CONCURRENT | INT FK | → ACTEURS.ID_ACTEUR |
MARQUE | INT FK | → ACTEURS.ID_ACTEUR |
ACTIF | TINYINT | Statut |
CONTRATS_PRIX
Liaison entre un contrat et les références avec leurs prix contractuels.
| Colonne | Type | Description |
|---|---|---|
ID_CONTRAT_PRIX | INT PK | Identifiant |
ID_CONTRAT | INT FK | → CONTRATS |
ID_REFERENCE | INT FK | → REFERENCES |
Tables de référentiel
| Table | Description |
|---|---|
CATEGORIES | Catégories et sous-catégories, champ ACTIF |
PLATEFORMES | Plateformes de distribution, champ ACTIF |
QUALITE | Niveaux de qualité, champ ORDRE_AFFICHAGE |
ACTEURS | Marques, constructeurs, fournisseurs, champ ACTIF |
FOURNISSEURS | Fournisseurs avec trigramme, champ ACTIF (VARCHAR '1'/'0') |
CONTRATS | Contrats clients, champ STATUT (1/0) |
Connexion base de données
La connexion est initialisée via la fonction getDB() définie dans /config/database.php. Elle retourne une instance PDO. En cas d'erreur, la fonction handleDatabaseError($e, $file) est appelée.
require_once 'config/database.php';
try {
$pdo = getDB();
} catch (Exception $e) {
handleDatabaseError($e, 'index.php');
}
Dépendances
{
"require": {
"phpoffice/phpspreadsheet": "^4.4"
}
}
PhpSpreadsheet est utilisé pour :
- La lecture des fichiers
.xlsx/.xlslors de l'import et du matching client - La génération des fichiers Excel en export (via le namespace
\PhpOffice\PhpSpreadsheet\)