mirror of
https://github.com/R0m1k3/LogiFlow.git
synced 2026-10-11 17:27:31 +02:00
Improve error handling and logging for Excel export functionality
Enhance the error handling and logging for the Excel export route, including detailed console logs for request parameters, user information, and potential errors during XLSX module import and workbook creation. Also adds conditional error stack tracing for development environments. Replit-Commit-Author: Agent Replit-Commit-Session-Id: 1e4433b5-47ab-464c-b663-fea2e53367dd Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Event-Id: c050afd1-ec0c-4486-a949-a2b54ef8f939 Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/1e4433b5-47ab-464c-b663-fea2e53367dd/GjEDOGr
This commit is contained in:
1 parent
a9de7d7951
commit
1edeac6e15
3 files changed
+225
-2
No files matched your search
+18
-2
@@ -503,18 +503,25 @@ export async function registerRoutes(app: Express): Promise<Server> {
|
||||
// Route pour exporter l'échéancier vers Excel
|
||||
app.post('/api/payment-schedule/export', isAuthenticated, async (req: any, res) => {
|
||||
try {
|
||||
console.log('📊 [EXPORT] Début de l\'export Excel');
|
||||
|
||||
const userId = req.user?.claims?.sub || req.user?.id;
|
||||
if (!userId) {
|
||||
console.error('❌ [EXPORT] Utilisateur non authentifié');
|
||||
return res.status(401).json({ error: 'Utilisateur non authentifié' });
|
||||
}
|
||||
|
||||
const user = await storage.getUser(userId);
|
||||
console.log(`🔍 [EXPORT] Utilisateur: ${user?.username} (${user?.role})`);
|
||||
|
||||
if (!user || (user.role !== 'admin' && user.role !== 'directeur')) {
|
||||
console.error('❌ [EXPORT] Accès refusé');
|
||||
return res.status(403).json({ error: 'Accès refusé - Admin ou Directeur uniquement' });
|
||||
}
|
||||
|
||||
// Récupérer les paramètres d'export
|
||||
const { groupId, month, paymentMethods, includeHT, includeTTC } = req.body;
|
||||
console.log('📋 [EXPORT] Paramètres:', { groupId, month, paymentMethods, includeHT, includeTTC });
|
||||
|
||||
// Validation
|
||||
const groupIdSchema = z.coerce.number().int().positive();
|
||||
@@ -583,8 +590,11 @@ export async function registerRoutes(app: Express): Promise<Server> {
|
||||
.sort((a: any, b: any) => a.dueDate.getTime() - b.dueDate.getTime());
|
||||
|
||||
// Générer le fichier Excel
|
||||
console.log('📦 [EXPORT] Import du module xlsx...');
|
||||
const XLSX = await import('xlsx');
|
||||
console.log('✅ [EXPORT] Module xlsx importé avec succès');
|
||||
const workbook = XLSX.utils.book_new();
|
||||
console.log('📄 [EXPORT] Workbook créé');
|
||||
|
||||
// Préparer les données pour Excel
|
||||
const headers = ['Date d\'échéance', 'Fournisseur', 'Facture', 'Mode de paiement'];
|
||||
@@ -644,8 +654,14 @@ export async function registerRoutes(app: Express): Promise<Server> {
|
||||
console.log(`📊 Export Excel généré: ${schedules.length} échéances pour ${group.name}`);
|
||||
|
||||
} catch (error: any) {
|
||||
console.error('❌ Erreur export Excel:', error);
|
||||
res.status(500).json({ error: 'Erreur lors de l\'export', details: error.message });
|
||||
console.error('❌ [EXPORT] Erreur export Excel:', error);
|
||||
console.error('❌ [EXPORT] Message:', error.message);
|
||||
console.error('❌ [EXPORT] Stack:', error.stack);
|
||||
res.status(500).json({
|
||||
error: 'Erreur lors de l\'export',
|
||||
details: error.message,
|
||||
stack: process.env.NODE_ENV === 'development' ? error.stack : undefined
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in new issue
Block a user