<?php
$formatMoney = static fn($value): string => number_format((float)$value, 2, ',', ' ') . ' DH';
?>

<div class="d-flex justify-content-between align-items-center mb-4">
    <div>
        <h1 class="darlink-title mb-1">Créer un avoir</h1>
        <p class="text-muted mb-0">Depuis la facture <?= htmlspecialchars($facture['numero']) ?> — <?= htmlspecialchars($facture['client_nom']) ?></p>
    </div>
    <a href="index.php?page=documents_show&id=<?= (int)$facture['id'] ?>" class="btn btn-outline-secondary">Retour facture</a>
</div>

<form method="post" action="index.php?page=avoirs_store" id="avoirForm">
    <input type="hidden" name="facture_id" value="<?= (int)$facture['id'] ?>">

    <div class="darlink-card p-4 mb-4">
        <div class="row g-3">
            <div class="col-md-3">
                <label class="form-label">Numéro</label>
                <input type="text" class="form-control" value="<?= htmlspecialchars($numero) ?>" readonly>
            </div>
            <div class="col-md-3">
                <label class="form-label">Date</label>
                <input type="text" class="form-control" value="<?= date('d/m/Y') ?>" readonly>
            </div>
            <div class="col-md-6">
                <label class="form-label">Type d'avoir</label>
                <select name="avoir_type" class="form-select" required>
                    <option value="COMMERCIAL">Avoir commercial — ne modifie pas le stock</option>
                    <option value="RETOUR">Retour marchandises — réintègre le stock</option>
                </select>
            </div>
            <div class="col-md-6">
                <label class="form-label">Motif</label>
                <select name="motif" class="form-select" required>
                    <option value="Geste commercial">Geste commercial</option>
                    <option value="Erreur de facturation">Erreur de facturation</option>
                    <option value="Retour marchandises">Retour marchandises</option>
                    <option value="Produit défectueux">Produit défectueux</option>
                    <option value="Autre">Autre</option>
                </select>
            </div>
            <div class="col-md-6">
                <label class="form-label">Observations</label>
                <input type="text" name="observations" class="form-control" placeholder="Commentaire facultatif">
            </div>
        </div>
    </div>

    <div class="darlink-card p-4 mb-4">
        <h5 class="darlink-section-title">Lignes à reprendre</h5>
        <p class="text-muted small mb-3">Saisissez une quantité supérieure à 0 uniquement sur les lignes concernées par l'avoir.</p>
        <div class="table-responsive">
            <table class="table table-hover align-middle darlink-table">
                <thead>
                <tr>
                    <th>Réf.</th>
                    <th>Désignation</th>
                    <th class="text-end">Qté facturée</th>
                    <th class="text-end">Qté avoir</th>
                    <th class="text-end">PU HT</th>
                    <th class="text-end">TVA</th>
                    <th class="text-end">Total avoir HT</th>
                </tr>
                </thead>
                <tbody>
                <?php foreach ($lines as $line): ?>
                    <tr>
                        <td><?= htmlspecialchars((string)($line['reference'] ?? '')) ?></td>
                        <td><?= htmlspecialchars($line['designation']) ?></td>
                        <td class="text-end"><?= number_format((float)$line['quantite'], 0, ',', ' ') ?> <?= htmlspecialchars((string)($line['unite'] ?? '')) ?></td>
                        <td style="width:140px;">
                            <input type="number" class="form-control form-control-sm text-end avoir-qte"
                                   name="lignes[<?= (int)$line['id'] ?>][quantite]"
                                   value="0" min="0" max="<?= htmlspecialchars((string)$line['quantite']) ?>" step="0.01"
                                   data-price="<?= htmlspecialchars((string)$line['prix_vente_ht']) ?>"
                                   data-remise="<?= htmlspecialchars((string)$line['remise']) ?>">
                        </td>
                        <td class="text-end"><?= $formatMoney($line['prix_vente_ht']) ?></td>
                        <td class="text-end"><?= number_format((float)$line['taux_tva'], 2, ',', ' ') ?> %</td>
                        <td class="text-end line-avoir-total">0,00 DH</td>
                    </tr>
                <?php endforeach; ?>
                </tbody>
            </table>
        </div>
    </div>

    <div class="darlink-card p-4 mb-4">
        <div class="d-flex justify-content-between fs-5">
            <strong>Total avoir HT estimé</strong>
            <strong id="avoirTotalHt">0,00 DH</strong>
        </div>
        <div class="text-muted small mt-2">Le total définitif sera recalculé côté serveur à l'enregistrement.</div>
    </div>

    <div class="d-flex justify-content-end gap-2">
        <a href="index.php?page=documents_show&id=<?= (int)$facture['id'] ?>" class="btn btn-outline-secondary">Annuler</a>
        <button type="submit" class="btn darlink-btn-primary">Créer l'avoir</button>
    </div>
</form>

<script>
(function(){
    const money = value => (Number(value)||0).toLocaleString('fr-FR',{minimumFractionDigits:2,maximumFractionDigits:2}) + ' DH';
    function calc(){
        let total = 0;
        document.querySelectorAll('.avoir-qte').forEach(input => {
            const qte = Number(String(input.value||'0').replace(',', '.')) || 0;
            const price = Number(input.dataset.price || 0) || 0;
            const remise = Number(input.dataset.remise || 0) || 0;
            const ht = qte * price * (1 - remise / 100);
            total += ht;
            input.closest('tr').querySelector('.line-avoir-total').innerText = money(ht);
        });
        document.getElementById('avoirTotalHt').innerText = money(total);
    }
    document.querySelectorAll('.avoir-qte').forEach(input => input.addEventListener('input', calc));
    document.getElementById('avoirForm').addEventListener('submit', function(e){
        let hasLine = false;
        document.querySelectorAll('.avoir-qte').forEach(input => { if ((Number(input.value)||0) > 0) hasLine = true; });
        if (!hasLine) {
            e.preventDefault();
            alert('Veuillez saisir au moins une quantité à reprendre.');
        }
    });
})();
</script>
