import 'package:flutter/material.dart'; import 'package:youmazgestion/Models/client.dart'; import 'package:youmazgestion/Services/stock_managementDatabase.dart'; class CommandeDetails extends StatelessWidget { final Commande commande; const CommandeDetails({required this.commande}); Widget _buildTableHeader(String text) { return Padding( padding: const EdgeInsets.all(8.0), child: Text( text, style: const TextStyle( fontWeight: FontWeight.bold, fontSize: 14, ), textAlign: TextAlign.center, ), ); } Widget _buildTableCell(String text) { return Padding( padding: const EdgeInsets.all(8.0), child: Text( text, style: const TextStyle(fontSize: 13), textAlign: TextAlign.center, ), ); } @override Widget build(BuildContext context) { return FutureBuilder>( future: AppDatabase.instance.getDetailsCommande(commande.id!), builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.waiting) { return const Center(child: CircularProgressIndicator()); } if (!snapshot.hasData || snapshot.data!.isEmpty) { return const Text('Aucun détail disponible'); } final details = snapshot.data!; return Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ Container( padding: const EdgeInsets.all(12), decoration: BoxDecoration( color: Colors.blue.shade50, borderRadius: BorderRadius.circular(8), ), child: const Text( 'Détails de la commande', style: TextStyle( fontWeight: FontWeight.bold, fontSize: 16, color: Colors.black87, ), ), ), const SizedBox(height: 12), Container( decoration: BoxDecoration( border: Border.all(color: Colors.grey.shade300), borderRadius: BorderRadius.circular(8), ), child: Table( children: [ TableRow( decoration: BoxDecoration( color: Colors.grey.shade100, ), children: [ _buildTableHeader('Produit'), _buildTableHeader('Qté'), _buildTableHeader('Prix unit.'), _buildTableHeader('Total'), ], ), ...details.map((detail) => TableRow( children: [ _buildTableCell( detail.estCadeau == true ? '${detail.produitNom ?? 'Produit inconnu'} (CADEAU)' : detail.produitNom ?? 'Produit inconnu' ), _buildTableCell('${detail.quantite}'), _buildTableCell(detail.estCadeau == true ? 'OFFERT' : '${detail.prixUnitaire.toStringAsFixed(2)} MGA'), _buildTableCell(detail.estCadeau == true ? 'OFFERT' : '${detail.sousTotal.toStringAsFixed(2)} MGA'), ], )), ], ), ), const SizedBox(height: 12), Container( padding: const EdgeInsets.all(12), decoration: BoxDecoration( color: Colors.green.shade50, borderRadius: BorderRadius.circular(8), border: Border.all(color: Colors.green.shade200), ), child: Column( children: [ if (commande.montantApresRemise != null) ...[ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ const Text( 'Sous-total:', style: TextStyle(fontSize: 14), ), Text( '${commande.montantTotal.toStringAsFixed(2)} MGA', style: const TextStyle(fontSize: 14), ), ], ), const SizedBox(height: 5), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ const Text( 'Remise:', style: TextStyle(fontSize: 14), ), Text( '-${(commande.montantTotal - commande.montantApresRemise!).toStringAsFixed(2)} MGA', style: const TextStyle( fontSize: 14, color: Colors.red, ), ), ], ), const Divider(), ], Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ const Text( 'Total de la commande:', style: TextStyle( fontWeight: FontWeight.bold, fontSize: 16, ), ), Text( '${(commande.montantApresRemise ?? commande.montantTotal).toStringAsFixed(2)} MGA', style: TextStyle( fontWeight: FontWeight.bold, fontSize: 18, color: Colors.green.shade700, ), ), ], ), ], ), ), ], ); }, ); } }