Download the PHP package banelsems/lara-sgmef-qr without Composer
On this page you can find all versions of the php package banelsems/lara-sgmef-qr. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download banelsems/lara-sgmef-qr
More information about banelsems/lara-sgmef-qr
Files in banelsems/lara-sgmef-qr
Package lara-sgmef-qr
Short Description Universal Laravel package for Benin electronic invoicing (SGMEF API) - Works immediately without authentication dependencies. Clean Code architecture with modern web interface.
License MIT
Homepage https://github.com/banelsems/lara-sgmef-qr
Informations about the package lara-sgmef-qr
🧾 LaraSgmefQR - Package Laravel pour la Facturation Électronique Béninoise
LaraSgmefQR est un package Laravel moderne et robuste qui simplifie l'intégration avec l'API SyGM-eMCF (Système de Gestion Modernisé des Finances Publiques - electronic Mechanism for Centralized Invoicing) pour la génération de factures électroniques conformes aux exigences fiscales du Bénin.
🌟 Nouvelle Version 2.1.0 - Totalement Indépendant de l'Authentification !
✅ Fonctionne immédiatement après installation
✅ Aucun système d'authentification requis
✅ Compatible avec Laravel UI, Breeze, Jetstream, Fortify ou aucun système d'auth
✅ Concept d'opérateur pour remplacer la dépendance aux utilisateurs connectés
✨ Fonctionnalités
🚀 API Client Moderne
- Client HTTP robuste avec gestion d'erreurs avancée
- Support des timeouts et retry automatique
- Logging complet des requêtes/réponses
- Validation stricte des données
🎯 Architecture Clean Code
- SOLID Principles : Respect strict des principes de développement
- DTOs (Data Transfer Objects) : Typage fort des données
- Interfaces & Contracts : Découplage et testabilité maximale
- Dependency Injection : Inversion de contrôle complète
🖥️ Interface Web Intuitive
- Dashboard moderne avec statistiques en temps réel
- Formulaires de création de factures interactifs
- Gestion complète du cycle de vie des factures
- Interface responsive (mobile-friendly)
- Aucune authentification requise - Fonctionne immédiatement
🔓 Indépendance Totale de l'Authentification
- Concept d'Opérateur : Remplace la notion d'utilisateur connecté
- Configuration par défaut : Opérateur automatiquement défini
- Compatibilité universelle : Fonctionne avec ou sans système d'auth
- Installation immédiate : Aucune configuration d'authentification nécessaire
📄 Système de Templates Avancé
- Templates multi-formats (A4, A5, Letter)
- Génération PDF automatique
- QR Codes intégrés pour la sécurité
- Personnalisation complète du design
🔒 Sécurité & Conformité
- Chiffrement des données sensibles
- Validation stricte des IFU
- Audit trail complet
- Conformité aux normes fiscales béninoises
🧪 Tests Automatisés
- Couverture de tests > 95%
- Tests unitaires et fonctionnels
- Mocking des API externes
- CI/CD ready
🔧 Exigences
- PHP >= 8.1 (compatible 8.1, 8.2, 8.3)
- Laravel >= 10.0 (compatible 10.x, 11.x, 12.x)
- Extensions PHP :
json,curl,mbstring - Base de données : MySQL 8.0+ / PostgreSQL 13+ / SQLite 3.35+
🚀 Installation
1. Installation via Composer
2. Publication des Assets
3. Migration de la Base de Données
4. Configuration Environnement
Ajoutez ces variables à votre fichier .env :
🔒 Sécurité
IMPORTANT : Par défaut, l'interface web du package est accessible publiquement. Pour des raisons de sécurité, il est fortement recommandé de protéger son accès en production.
Comment Sécuriser l'Interface Web ?
La méthode la plus simple est d'ajouter un middleware d'authentification dans le fichier de configuration du package.
-
Publiez la configuration si ce n'est pas déjà fait :
- Modifiez le fichier
config/lara_sgmef_qr.phppour y ajouter votre middleware d'authentification (par exemple,auth):
En faisant cela, seules les personnes authentifiées sur votre application pourront accéder à l'interface de facturation.
🎯 Utilisation Basique
Créer une Facture
Confirmer une Facture
🖥️ Interface Web
Accédez à l'interface web via : http://your-app.com/sgmef
Pages Disponibles :
- Dashboard :
/sgmef- Vue d'ensemble et statistiques - Factures :
/sgmef/invoices- Gestion des factures - Configuration :
/sgmef/config- Paramètres du package
🔗 Intégration dans une Application Existante (Ex: Gestion de Vente)
L'un des points forts de LaraSgmefQR est sa capacité à s'intégrer de manière transparente dans votre application existante, sans que vos utilisateurs aient à ressaisir les informations.
Scénario : Automatiser la facturation après une vente
Imaginons que vous ayez une application de gestion de ventes avec les modèles Order, OrderItem, Product et Customer. Vous voulez générer la facture e-MECeF automatiquement lorsqu'une commande est validée.
Étape 1 : Mapper vos données vers les DTOs du package
Dans votre OrderController, après avoir créé la commande, vous pouvez utiliser ses données pour construire la facture.
📊 Récupérer et Utiliser les Données de LaraSgmefQR
Votre application peut aussi avoir besoin de lire les informations des factures stockées par le package. Le modèle Invoice est disponible pour cela.
Exemple : Afficher les détails d'une facture sur la page d'une commande
Dans votre vue orders/show.blade.php, vous pouvez afficher les détails de la facture associée.
🔒 Sécurisation des Routes (Optionnel)
Important : Par défaut, le package fonctionne sans authentification pour une compatibilité maximale. Si votre application utilise un système d'authentification et que vous souhaitez protéger l'interface web, voici comment procéder :
Option 1 : Middleware Global dans RouteServiceProvider
Option 2 : Configuration via Middleware
Option 3 : Protection Personnalisée
Recommandations de Sécurité
- Environnement de production : Toujours protéger l'interface web
- Environnement de développement : Peut rester ouvert pour faciliter les tests
- API endpoints : Considérer l'ajout d'une authentification API si exposés publiquement
🧪 Tests
Exécution des Tests
🔧 Configuration Avancée
Cache des Données API
🚨 Gestion d'Erreurs
Exceptions Personnalisées
🤝 Contribution
Développement Local
📚 Guide de Référence Complet
🗄️ Modèle de Données (Invoice Model)
Le modèle principal Banelsems\LaraSgmefQr\Models\Invoice représente une facture électronique dans votre base de données.
Attributs du Modèle
| Attribut | Type | Description |
|---|---|---|
id |
bigint |
Identifiant unique auto-incrémenté |
uid |
string |
Identifiant unique fourni par l'API SyGM-eMCF |
ifu |
string |
IFU de l'entreprise émettrice (13 chiffres) |
type |
string |
Type de facture (FV, FA, EV, EA) |
status |
enum |
Statut de la facture (voir InvoiceStatusEnum) |
client_name |
string |
Nom du client |
customer_ifu |
string |
IFU du client (optionnel) |
operator_name |
string |
Nom de l'opérateur qui a créé la facture |
operator_id |
string |
ID de l'opérateur |
total_amount |
decimal |
Montant total TTC de la facture |
total_tax_amount |
decimal |
Montant total des taxes |
total_aib_amount |
decimal |
Montant total de l'AIB |
items |
json |
Articles de la facture (format JSON) |
payment |
json |
Modes de paiement (format JSON) |
raw_request |
json |
Données brutes envoyées à l'API |
raw_response |
json |
Réponse brute de l'API |
qr_code_data |
text |
Données du QR Code (après confirmation) |
mecf_code |
string |
Code MECeF officiel (après confirmation) |
confirmed_at |
timestamp |
Date de confirmation |
cancelled_at |
timestamp |
Date d'annulation |
created_at |
timestamp |
Date de création |
updated_at |
timestamp |
Date de dernière modification |
Énumération InvoiceStatusEnum
Méthodes utilitaires :
isPending(): Vérifie si la facture est en attenteisConfirmed(): Vérifie si la facture est confirméeisCancelled(): Vérifie si la facture est annuléehasError(): Vérifie si la facture a une erreur
⚙️ Configuration Complète (config/lara_sgmef_qr.php)
Section API
Section Entreprise
Section Opérateur par Défaut
Section Interface Web
Section Cache
Section Logging
🔧 Services et Contrats
InvoiceManagerInterface
Le service principal pour la gestion des factures.
SgmefApiClientInterface
Client HTTP pour l'API SyGM-eMCF.
📋 Référence des DTOs (Data Transfer Objects)
InvoiceRequestDto
ClientDto
OperatorDto
InvoiceItemDto
PaymentDto
InvoiceResponseDto
🎯 Événements (Events)
Le package déclenche plusieurs événements Laravel pour permettre l'intégration avec votre application.
InvoiceCreated
InvoiceConfirmed
InvoiceCancelled
InvoiceCreationFailed
Écouter les Événements
🌐 Interface Web - Référence des Routes
| Méthode | URL | Nom de Route | Description |
|---|---|---|---|
GET |
/sgmef |
sgmef.dashboard |
Tableau de bord principal |
GET |
/sgmef/invoices |
sgmef.invoices.index |
Liste des factures |
GET |
/sgmef/invoices/create |
sgmef.invoices.create |
Formulaire de création |
POST |
/sgmef/invoices |
sgmef.invoices.store |
Créer une facture |
GET |
/sgmef/invoices/{uid} |
sgmef.invoices.show |
Détails d'une facture |
POST |
/sgmef/invoices/{uid}/confirm |
sgmef.invoices.confirm |
Confirmer une facture |
POST |
/sgmef/invoices/{uid}/cancel |
sgmef.invoices.cancel |
Annuler une facture |
GET |
/sgmef/invoices/{uid}/sync |
sgmef.invoices.sync |
Synchroniser avec l'API |
GET |
/sgmef/invoices/{uid}/pdf |
sgmef.invoices.pdf |
Télécharger PDF |
GET |
/sgmef/invoices/{uid}/print |
sgmef.invoices.print |
Version imprimable |
POST |
/sgmef/invoices/preview |
sgmef.invoices.preview |
Prévisualiser (AJAX) |
GET |
/sgmef/config |
sgmef.config.index |
Configuration du package |
POST |
/sgmef/config |
sgmef.config.store |
Sauvegarder la config |
GET |
/sgmef/config/test |
sgmef.config.test |
Tester la connexion API |
🔍 Helpers et Utilitaires
Helpers Statiques
Validation IFU
Groupes de Taxes
🚨 Gestion d'Erreurs et Exceptions
Exceptions Personnalisées
Codes d'Erreur API
📊 Monitoring et Métriques
Logs Disponibles
sgmef.requests: Requêtes vers l'APIsgmef.responses: Réponses de l'APIsgmef.errors: Erreurs et exceptionssgmef.performance: Métriques de performance
Métriques Collectées
- Nombre de factures créées/confirmées/annulées
- Temps de réponse de l'API
- Taux d'erreur par type
- Utilisation du cache
📝 Changelog
Version 2.1.0 (Actuelle) - Indépendance Totale de l'Authentification
- 🚀 BREAKING IMPROVEMENT : Suppression de toute dépendance d'authentification
- ✅ Concept d'opérateur configurable remplaçant les utilisateurs connectés
- ✅ Interface web accessible sans authentification (sécurisation optionnelle)
- ✅ Configuration par défaut pour installation immédiate
- ✅ Tests d'indépendance d'authentification complets
- ✅ Documentation de migration et guides détaillés
- ✅ Compatibilité universelle avec tous projets Laravel
Version 2.0.0 - Refactorisation Clean Code
- ✅ Refactorisation complète selon les principes Clean Code
- ✅ Architecture SOLID avec DTOs et Interfaces
- ✅ Interface web moderne et responsive
- ✅ Système de templates multi-formats
- ✅ Tests automatisés complets
- ✅ Documentation exhaustive
📄 Licence
Ce package est distribué sous licence MIT. Voir le fichier LICENSE pour plus de détails.
Développé avec ❤️ au Bénin 🇧🇯
LaraSgmefQR - Simplifiez votre facturation électronique !
All versions of lara-sgmef-qr with dependencies
ext-curl Version *
ext-json Version *
barryvdh/laravel-dompdf Version ^3.1
guzzlehttp/guzzle Version ^7.0
laravel/framework Version ^10.0|^11.0|^12.0
spatie/browsershot Version ^5.0
spatie/laravel-data Version ^4.0