Browse Source

requete pour retourner point de vente

28062025_02
Stephane 4 months ago
parent
commit
99d570bd3a
  1. 111
      lib/Services/stock_managementDatabase.dart

111
lib/Services/stock_managementDatabase.dart

@ -806,12 +806,24 @@ class AppDatabase {
Future<List<Commande>> getCommandes() async { Future<List<Commande>> getCommandes() async {
final db = await database; final db = await database;
final result = await db.query(''' final result = await db.query('''
SELECT c.*, cl.nom as clientNom, cl.prenom as clientPrenom, cl.email as clientEmail SELECT
FROM commandes c c.*,
LEFT JOIN clients cl ON c.clientId = cl.id cl.nom as clientNom,
ORDER BY c.dateCommande DESC cl.prenom as clientPrenom,
'''); cl.email as clientEmail,
u.nom as commandeurNom,
u.prenom as commandeurPrenom,
pdv.nom as pointDeVenteNom,
pdv.id as pointDeVenteId
FROM commandes c
LEFT JOIN clients cl ON c.clientId = cl.id
LEFT JOIN users u ON c.commandeurId = u.id
LEFT JOIN points_de_vente pdv ON u.point_de_vente_id = pdv.id
ORDER BY c.dateCommande DESC
''');
return result.map((row) => Commande.fromMap(row.fields)).toList(); return result.map((row) => Commande.fromMap(row.fields)).toList();
} }
@ -1447,61 +1459,62 @@ class AppDatabase {
// --- TRANSACTIONS COMPLEXES --- // --- TRANSACTIONS COMPLEXES ---
// Méthode pour créer une commande complète avec remises // Méthode pour créer une commande complète avec remises
Future<int> createCommandeComplete( Future<int> createCommandeComplete(
Client client, Commande commande, List<DetailCommande> details) async { Client client, Commande commande, List<DetailCommande> details) async {
final db = await database; final db = await database;
try { try {
await db.query('START TRANSACTION'); await db.query('START TRANSACTION');
// 1. Créer ou récupérer le client // 1. Créer ou récupérer le client
final existingOrNewClient = await createOrGetClient(client); final existingOrNewClient = await createOrGetClient(client);
final clientId = existingOrNewClient.id!; final clientId = existingOrNewClient.id!;
// 2. Créer la commande // 2. Créer la commande
final commandeMap = commande.toMap(); final commandeMap = commande.toMap();
commandeMap.remove('id'); commandeMap.remove('id');
commandeMap['clientId'] = clientId; commandeMap['clientId'] = clientId;
final commandeFields = commandeMap.keys.join(', '); final commandeFields = commandeMap.keys.join(', ');
final commandePlaceholders = List.filled(commandeMap.length, '?').join(', '); final commandePlaceholders =
List.filled(commandeMap.length, '?').join(', ');
final commandeResult = await db.query( final commandeResult = await db.query(
'INSERT INTO commandes ($commandeFields) VALUES ($commandePlaceholders)', 'INSERT INTO commandes ($commandeFields) VALUES ($commandePlaceholders)',
commandeMap.values.toList(), commandeMap.values.toList(),
); );
final commandeId = commandeResult.insertId!; final commandeId = commandeResult.insertId!;
// 3. Créer les détails de commande avec remises // 3. Créer les détails de commande avec remises
for (final detail in details) { for (final detail in details) {
final detailMap = detail.toMap(); final detailMap = detail.toMap();
detailMap.remove('id'); detailMap.remove('id');
detailMap['commandeId'] = commandeId; detailMap['commandeId'] = commandeId;
final detailFields = detailMap.keys.join(', '); final detailFields = detailMap.keys.join(', ');
final detailPlaceholders = List.filled(detailMap.length, '?').join(', '); final detailPlaceholders =
List.filled(detailMap.length, '?').join(', ');
await db.query( await db.query(
'INSERT INTO details_commandes ($detailFields) VALUES ($detailPlaceholders)', 'INSERT INTO details_commandes ($detailFields) VALUES ($detailPlaceholders)',
detailMap.values.toList(), detailMap.values.toList(),
); );
// 4. Mettre à jour le stock // 4. Mettre à jour le stock
await db.query( await db.query(
'UPDATE products SET stock = stock - ? WHERE id = ?', 'UPDATE products SET stock = stock - ? WHERE id = ?',
[detail.quantite, detail.produitId], [detail.quantite, detail.produitId],
); );
} }
await db.query('COMMIT'); await db.query('COMMIT');
return commandeId; return commandeId;
} catch (e) { } catch (e) {
await db.query('ROLLBACK'); await db.query('ROLLBACK');
print("Erreur lors de la création de la commande complète: $e"); print("Erreur lors de la création de la commande complète: $e");
rethrow; rethrow;
}
} }
}
// Méthode pour mettre à jour un détail de commande (utile pour modifier les remises) // Méthode pour mettre à jour un détail de commande (utile pour modifier les remises)
Future<int> updateDetailCommande(DetailCommande detail) async { Future<int> updateDetailCommande(DetailCommande detail) async {

Loading…
Cancel
Save