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 {
|
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!;
|
|
||||||
|
|
||||||
// 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 commandeId = commandeResult.insertId!;
|
||||||
|
|
||||||
// 4. Mettre à jour le stock
|
// 3. Créer les détails de commande avec remises
|
||||||
await db.query(
|
for (final detail in details) {
|
||||||
'UPDATE products SET stock = stock - ? WHERE id = ?',
|
final detailMap = detail.toMap();
|
||||||
[detail.quantite, detail.produitId],
|
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)
|
// 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…
Reference in New Issue
Block a user