Skip to main content

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.

ColonneTypeDescription
ID_REFERENCEINT PKIdentifiant unique
CODE_MACHINEVARCHARCode produit principal
DESIGNATIONVARCHARDescription du produit
REF_ACTIFTINYINT1 = actif, 0 = inactif
DATE_CREATIONDATETIMEDate de création
ID_MARQUEINT FKACTEURS.ID_ACTEUR
ID_CATEGORIEINT FKCATEGORIES.ID_CATEGORIE
ID_QUALITEINT FKQUALITE.ID_QUALITE

REFERENCES_FOURNISSEURS

Liaison entre une référence et un fournisseur, avec la référence externe.

ColonneTypeDescription
ID_REF_FOURNISSEURINT PKIdentifiant
ID_REFERENCEINT FKREFERENCES
ID_FOURNISSEURINT FKFOURNISSEURS
REF_EXTERNEVARCHARRéférence chez le fournisseur
ID_PLATEFORMEINT FKPLATEFORMES
ACTIFTINYINTStatut de la relation

PRIX_ACHAT

Historique des prix d'achat par référence fournisseur.

ColonneTypeDescription
ID_PRIXINT PKIdentifiant
ID_REF_FOURNISSEURINT FKREFERENCES_FOURNISSEURS
PRIX_UNITAIRE_NETDECIMALPrix unitaire net
UNITE_DE_VENTEVARCHARUnité (ex: pièce, lot…)
MOQINTQuantité minimale de commande
DATE_FINDATEDate de fin de validité (NULL = actif)

REFERENCES_CONCURRENTS

Références équivalentes chez les concurrents.

ColonneTypeDescription
ID_REF_CONCURRENTINT PKIdentifiant
ID_REFERENCEINT FKREFERENCES
REF_EQUIVALENTEVARCHARRéférence équivalente concurrent
REF_REMPLACEMENTVARCHARRéférence de remplacement
CONCURRENTINT FKACTEURS.ID_ACTEUR
MARQUEINT FKACTEURS.ID_ACTEUR
ACTIFTINYINTStatut

CONTRATS_PRIX

Liaison entre un contrat et les références avec leurs prix contractuels.

ColonneTypeDescription
ID_CONTRAT_PRIXINT PKIdentifiant
ID_CONTRATINT FKCONTRATS
ID_REFERENCEINT FKREFERENCES

Tables de référentiel

TableDescription
CATEGORIESCatégories et sous-catégories, champ ACTIF
PLATEFORMESPlateformes de distribution, champ ACTIF
QUALITENiveaux de qualité, champ ORDRE_AFFICHAGE
ACTEURSMarques, constructeurs, fournisseurs, champ ACTIF
FOURNISSEURSFournisseurs avec trigramme, champ ACTIF (VARCHAR '1'/'0')
CONTRATSContrats 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 / .xls lors de l'import et du matching client
  • La génération des fichiers Excel en export (via le namespace \PhpOffice\PhpSpreadsheet\)