<?php
$formatMoney = static fn($value): string => number_format((float)$value, 2, ',', ' ') . ' DH';
$formatQty = static fn($value): string => number_format((float)$value, 0, ',', ' ');
$statusClass = static fn($statut): string => match ((string)$statut) {
    'validée' => 'bg-success',
    'partiellement_reçue' => 'bg-warning text-dark',
    'reçue' => 'bg-info text-dark',
    'annulée' => 'bg-danger',
    default => 'bg-secondary',
};
$statusLabel = static fn($statut): string => match ((string)$statut) {
    'validée' => 'Validée',
    'partiellement_reçue' => 'Partiellement reçue',
    'reçue' => 'Reçue',
    'annulée' => 'Annulée',
    default => 'Brouillon',
};
$archiveFilter = (string)($filters['archive'] ?? 'actives');
?>

<div class="d-flex justify-content-between align-items-center mb-4">
    <div>
        <h1 class="darlink-title mb-1">Commandes fournisseurs</h1>
        <p class="text-muted mb-0">Suivi des commandes, des quantités reçues et des reliquats.</p>
    </div>
    <div class="d-flex gap-2">
        <a href="index.php?page=commandes_fournisseurs_historique" class="btn btn-outline-primary">Historique achats</a>
        <a href="index.php?page=commandes_fournisseurs_create" class="btn darlink-btn-primary">+ Nouvelle commande</a>
    </div>
</div>

<div class="darlink-card p-4 mb-4">
    <form method="get" class="row g-3 align-items-end">
        <input type="hidden" name="page" value="commandes_fournisseurs">
        <div class="col-lg-4">
            <label class="form-label">Recherche</label>
            <input type="text" name="q" class="form-control darlink-search" value="<?= htmlspecialchars($filters['q'] ?? '') ?>" placeholder="Numéro, fournisseur, référence...">
        </div>
        <div class="col-md-3 col-lg-2">
            <label class="form-label">Statut</label>
            <select name="statut" class="form-select">
                <option value="">Tous les statuts</option>
                <?php foreach (['brouillon' => 'Brouillon', 'validée' => 'Validée', 'partiellement_reçue' => 'Partiellement reçue', 'reçue' => 'Reçue', 'annulée' => 'Annulée'] as $value => $label): ?>
                    <option value="<?= htmlspecialchars($value) ?>" <?= (string)($filters['statut'] ?? '') === $value ? 'selected' : '' ?>><?= htmlspecialchars($label) ?></option>
                <?php endforeach; ?>
            </select>
        </div>
        <div class="col-md-3 col-lg-2">
            <label class="form-label">Affichage</label>
            <select name="archive" class="form-select">
                <option value="actives" <?= $archiveFilter === 'actives' ? 'selected' : '' ?>>Actives</option>
                <option value="archivees" <?= $archiveFilter === 'archivees' ? 'selected' : '' ?>>Archivées</option>
                <option value="toutes" <?= $archiveFilter === 'toutes' ? 'selected' : '' ?>>Toutes</option>
            </select>
        </div>
        <div class="col-lg-4">
            <button type="submit" class="btn darlink-btn-primary">Filtrer</button>
            <a href="index.php?page=commandes_fournisseurs" class="btn btn-outline-secondary">Réinitialiser</a>
        </div>
    </form>
</div>

<div class="darlink-card p-4">
    <div class="table-responsive">
        <table class="table table-hover align-middle darlink-table">
            <thead>
            <tr>
                <th>Numéro</th>
                <th>Fournisseur</th>
                <th>Date</th>
                <th>Livraison prévue</th>
                <th>Statut</th>
                <th class="text-end">Commandé</th>
                <th class="text-end">Reçu</th>
                <th class="text-end">Reste</th>
                <th class="text-end">Total TTC</th>
                <th class="text-end">Actions</th>
            </tr>
            </thead>
            <tbody>
            <?php if (empty($commandes)): ?>
                <tr><td colspan="10" class="text-center text-muted py-5">Aucune commande fournisseur pour ces critères.</td></tr>
            <?php endif; ?>
            <?php foreach ($commandes as $commande): ?>
                <?php
                $statutCommande = (string)($commande['statut'] ?? '');
                $active = (int)($commande['actif'] ?? 1) === 1;
                $receptionnee = in_array($statutCommande, ['partiellement_reçue', 'reçue'], true)
                    || (float)($commande['quantite_recue'] ?? 0) > 0;
                $peutReceptionner = $active
                    && in_array($statutCommande, ['validée', 'partiellement_reçue'], true)
                    && (float)($commande['quantite_restante'] ?? 0) > 0;
                ?>
                <tr class="<?= $active ? '' : 'table-secondary' ?>">
                    <td><strong><?= htmlspecialchars($commande['numero']) ?></strong></td>
                    <td>
                        <?= htmlspecialchars($commande['fournisseur_nom']) ?>
                        <div class="small text-muted"><?= htmlspecialchars($commande['code_fournisseur'] ?? '') ?></div>
                    </td>
                    <td data-sort-value="<?= htmlspecialchars((string)$commande['date_commande']) ?>"><?= htmlspecialchars(date('d/m/Y', strtotime((string)$commande['date_commande']))) ?></td>
                    <td data-sort-value="<?= htmlspecialchars((string)($commande['date_livraison_prevue'] ?? '')) ?>"><?= !empty($commande['date_livraison_prevue']) ? htmlspecialchars(date('d/m/Y', strtotime((string)$commande['date_livraison_prevue']))) : '-' ?></td>
                    <td><span class="badge <?= htmlspecialchars($statusClass($statutCommande)) ?>"><?= htmlspecialchars($statusLabel($statutCommande)) ?></span></td>
                    <td class="text-end" data-sort-value="<?= (float)($commande['quantite_commandee'] ?? 0) ?>"><?= $formatQty($commande['quantite_commandee'] ?? 0) ?></td>
                    <td class="text-end" data-sort-value="<?= (float)($commande['quantite_recue'] ?? 0) ?>"><?= $formatQty($commande['quantite_recue'] ?? 0) ?></td>
                    <td class="text-end" data-sort-value="<?= (float)($commande['quantite_restante'] ?? 0) ?>"><strong><?= $formatQty($commande['quantite_restante'] ?? 0) ?></strong></td>
                    <td class="text-end" data-sort-value="<?= (float)$commande['total_ttc'] ?>"><strong><?= $formatMoney($commande['total_ttc']) ?></strong></td>
                    <td class="text-end darlink-actions">
                        <a class="btn btn-sm btn-outline-primary" href="index.php?page=commandes_fournisseurs_show&id=<?= (int)$commande['id'] ?>">Voir</a>
                        <?php if ($active && !$receptionnee): ?>
                            <a class="btn btn-sm btn-outline-secondary" href="index.php?page=commandes_fournisseurs_edit&id=<?= (int)$commande['id'] ?>">Modifier</a>
                        <?php endif; ?>
                        <?php if ($peutReceptionner): ?>
                            <a class="btn btn-sm btn-success" href="index.php?page=commandes_fournisseurs_receive&id=<?= (int)$commande['id'] ?>">Réceptionner</a>
                        <?php endif; ?>
                        <?php if ($active): ?>
                            <form method="post" action="index.php?page=commandes_fournisseurs_deactivate" class="d-inline" onsubmit="return confirm('Archiver cette commande fournisseur ?');">
                                <input type="hidden" name="id" value="<?= (int)$commande['id'] ?>">
                                <button class="btn btn-sm btn-outline-danger" type="submit">Archiver</button>
                            </form>
                        <?php else: ?>
                            <form method="post" action="index.php?page=commandes_fournisseurs_activate" class="d-inline" onsubmit="return confirm('Réactiver cette commande fournisseur ?');">
                                <input type="hidden" name="id" value="<?= (int)$commande['id'] ?>">
                                <button class="btn btn-sm btn-outline-success" type="submit">Réactiver</button>
                            </form>
                        <?php endif; ?>
                    </td>
                </tr>
            <?php endforeach; ?>
            </tbody>
        </table>
    </div>
</div>
