import 'package:flutter/material.dart'; import '../models/purchase_order.dart'; import '../models/fournisseur.dart'; import '../services/purchase_order_service.dart'; import '../services/fournisseur_service.dart'; class AchatsProvider extends ChangeNotifier { List _orders = []; List _fournisseurs = []; bool _isLoading = false; String? _error; List get orders => _orders; List get fournisseurs => _fournisseurs; bool get isLoading => _isLoading; String? get error => _error; Future load() async { _isLoading = true; _error = null; notifyListeners(); try { final results = await Future.wait([ PurchaseOrderService.fetchAll(), FournisseurService.fetchAll(), ]); _orders = results[0] as List; _fournisseurs = results[1] as List; } catch (_) { _error = 'Impossible de charger les commandes achats.'; } finally { _isLoading = false; notifyListeners(); } } Future createOrder(PurchaseOrder order) async { try { final created = await PurchaseOrderService.create(order); _orders.insert(0, created); notifyListeners(); return null; } catch (_) { return 'Erreur lors de la création de la commande'; } } Future receive(int orderId, List lignes) async { try { final payload = { 'dateReception': DateTime.now().toIso8601String().substring(0, 10), 'lignes': lignes.map((l) => { 'purchaseOrderLine': {'id': l.id}, 'article': {'id': l.article!.id}, 'quantiteRecue': l.quantiteCommandee, }).toList(), }; await PurchaseOrderService.receive(orderId, payload); await load(); return null; } catch (_) { return 'Erreur lors de la réception'; } } }