requete pour retourner point de vente
This commit is contained in:
parent
5ad019d35e
commit
99d570bd3a
@ -806,12 +806,24 @@ class AppDatabase {
|
||||
|
||||
Future<List<Commande>> getCommandes() async {
|
||||
final db = await database;
|
||||
|
||||
final result = await db.query('''
|
||||
SELECT c.*, cl.nom as clientNom, cl.prenom as clientPrenom, cl.email as clientEmail
|
||||
FROM commandes c
|
||||
LEFT JOIN clients cl ON c.clientId = cl.id
|
||||
ORDER BY c.dateCommande DESC
|
||||
''');
|
||||
SELECT
|
||||
c.*,
|
||||
cl.nom as clientNom,
|
||||
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();
|
||||
}
|
||||
|
||||
@ -1447,61 +1459,62 @@ class AppDatabase {
|
||||
// --- TRANSACTIONS COMPLEXES ---
|
||||
|
||||
// Méthode pour créer une commande complète avec remises
|
||||
Future<int> createCommandeComplete(
|
||||
Client client, Commande commande, List<DetailCommande> details) async {
|
||||
final db = await database;
|
||||
Future<int> createCommandeComplete(
|
||||
Client client, Commande commande, List<DetailCommande> details) async {
|
||||
final db = await database;
|
||||
|
||||
try {
|
||||
await db.query('START TRANSACTION');
|
||||
try {
|
||||
await db.query('START TRANSACTION');
|
||||
|
||||
// 1. Créer ou récupérer le client
|
||||
final existingOrNewClient = await createOrGetClient(client);
|
||||
final clientId = existingOrNewClient.id!;
|
||||
// 1. Créer ou récupérer le client
|
||||
final existingOrNewClient = await createOrGetClient(client);
|
||||
final clientId = existingOrNewClient.id!;
|
||||
|
||||
// 2. Créer la commande
|
||||
final commandeMap = commande.toMap();
|
||||
commandeMap.remove('id');
|
||||
commandeMap['clientId'] = clientId;
|
||||
// 2. Créer la commande
|
||||
final commandeMap = commande.toMap();
|
||||
commandeMap.remove('id');
|
||||
commandeMap['clientId'] = clientId;
|
||||
|
||||
final commandeFields = commandeMap.keys.join(', ');
|
||||
final commandePlaceholders = List.filled(commandeMap.length, '?').join(', ');
|
||||
final commandeFields = commandeMap.keys.join(', ');
|
||||
final commandePlaceholders =
|
||||
List.filled(commandeMap.length, '?').join(', ');
|
||||
|
||||
final commandeResult = await db.query(
|
||||
'INSERT INTO commandes ($commandeFields) VALUES ($commandePlaceholders)',
|
||||
commandeMap.values.toList(),
|
||||
);
|
||||
final commandeId = commandeResult.insertId!;
|
||||
|
||||
// 3. Créer les détails de commande avec remises
|
||||
for (final detail in details) {
|
||||
final detailMap = detail.toMap();
|
||||
detailMap.remove('id');
|
||||
detailMap['commandeId'] = commandeId;
|
||||
|
||||
final detailFields = detailMap.keys.join(', ');
|
||||
final detailPlaceholders = List.filled(detailMap.length, '?').join(', ');
|
||||
|
||||
await db.query(
|
||||
'INSERT INTO details_commandes ($detailFields) VALUES ($detailPlaceholders)',
|
||||
detailMap.values.toList(),
|
||||
final commandeResult = await db.query(
|
||||
'INSERT INTO commandes ($commandeFields) VALUES ($commandePlaceholders)',
|
||||
commandeMap.values.toList(),
|
||||
);
|
||||
final commandeId = commandeResult.insertId!;
|
||||
|
||||
// 4. Mettre à jour le stock
|
||||
await db.query(
|
||||
'UPDATE products SET stock = stock - ? WHERE id = ?',
|
||||
[detail.quantite, detail.produitId],
|
||||
);
|
||||
// 3. Créer les détails de commande avec remises
|
||||
for (final detail in details) {
|
||||
final detailMap = detail.toMap();
|
||||
detailMap.remove('id');
|
||||
detailMap['commandeId'] = commandeId;
|
||||
|
||||
final detailFields = detailMap.keys.join(', ');
|
||||
final detailPlaceholders =
|
||||
List.filled(detailMap.length, '?').join(', ');
|
||||
|
||||
await db.query(
|
||||
'INSERT INTO details_commandes ($detailFields) VALUES ($detailPlaceholders)',
|
||||
detailMap.values.toList(),
|
||||
);
|
||||
|
||||
// 4. Mettre à jour le stock
|
||||
await db.query(
|
||||
'UPDATE products SET stock = stock - ? WHERE id = ?',
|
||||
[detail.quantite, detail.produitId],
|
||||
);
|
||||
}
|
||||
|
||||
await db.query('COMMIT');
|
||||
return commandeId;
|
||||
} catch (e) {
|
||||
await db.query('ROLLBACK');
|
||||
print("Erreur lors de la création de la commande complète: $e");
|
||||
rethrow;
|
||||
}
|
||||
|
||||
await db.query('COMMIT');
|
||||
return commandeId;
|
||||
} catch (e) {
|
||||
await db.query('ROLLBACK');
|
||||
print("Erreur lors de la création de la commande complète: $e");
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Méthode pour mettre à jour un détail de commande (utile pour modifier les remises)
|
||||
Future<int> updateDetailCommande(DetailCommande detail) async {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user