import 'package:flutter/material.dart'; import '../models/sales_order.dart'; import '../models/client.dart'; import '../services/sales_order_service.dart'; import '../services/client_service.dart'; class VentesProvider extends ChangeNotifier { List _orders = []; List _clients = []; bool _isLoading = false; String? _error; List get orders => _orders; List get clients => _clients; bool get isLoading => _isLoading; String? get error => _error; Future load() async { _isLoading = true; _error = null; notifyListeners(); try { final results = await Future.wait([ SalesOrderService.fetchAll(), ClientService.fetchAll(), ]); _orders = results[0] as List; _clients = results[1] as List; } catch (_) { _error = 'Impossible de charger les commandes.'; } finally { _isLoading = false; notifyListeners(); } } Future createOrder(SalesOrder order) async { try { final created = await SalesOrderService.create(order); _orders.insert(0, created); notifyListeners(); return null; } catch (e) { return e.toString().contains('Stock insuffisant') ? 'Stock insuffisant pour un ou plusieurs articles' : 'Erreur lors de la création de la commande'; } } Future deliver(int orderId, List lignes) async { try { final payload = { 'dateLivraison': DateTime.now().toIso8601String().substring(0, 10), 'lignes': lignes.map((l) => { 'salesOrderLine': {'id': l.id}, 'article': {'id': l.article!.id}, 'quantiteLivree': l.quantiteCommandee, }).toList(), }; await SalesOrderService.deliver(orderId, payload); await load(); return null; } catch (e) { return 'Erreur lors de la livraison'; } } }