<?php
$isEdit = (bool)($isEdit ?? false);
$encaissement = $encaissement ?? null;
$formAction = $isEdit ? 'encaissements_update' : 'encaissements_store';
$pageTitle = $isEdit ? 'Modifier un encaissement' : 'Nouvel encaissement';
$pageSubtitle = $isEdit ? 'Corriger la date, le mode, le montant ou les informations du règlement' : 'Enregistrer un règlement total ou partiel';
$selectedFactureId = (int)($factureId ?? 0);
$dateValue = $isEdit ? (string)$encaissement['date_encaissement'] : date('Y-m-d');
$modeValue = $isEdit ? (string)$encaissement['mode_reglement'] : '';
$referenceValue = $isEdit ? (string)($encaissement['reference_reglement'] ?? '') : '';
$montantValue = $isEdit ? number_format((float)$encaissement['montant'], 2, '.', '') : '';
$observationsValue = $isEdit ? (string)($encaissement['observations'] ?? '') : '';
$maxEdit = $isEdit ? round((float)$encaissement['reste_du'] + (float)$encaissement['montant'], 2) : null;
?>
<div class="d-flex justify-content-between align-items-center mb-4">
    <div>
        <h1 class="darlink-title mb-1"><?= htmlspecialchars($pageTitle) ?></h1>
        <p class="text-muted mb-0"><?= htmlspecialchars($pageSubtitle) ?></p>
    </div>
    <a href="<?= $isEdit ? 'index.php?page=factures_show&id=' . (int)$encaissement['facture_id'] : 'index.php?page=encaissements' ?>" class="btn btn-outline-secondary">Retour</a>
</div>

<div class="darlink-card p-4">
    <form method="post" action="index.php?page=<?= $formAction ?>" class="row g-3">
        <?php if ($isEdit): ?>
            <input type="hidden" name="id" value="<?= (int)$encaissement['id'] ?>">
            <input type="hidden" name="facture_id" value="<?= (int)$encaissement['facture_id'] ?>">
            <div class="col-md-12">
                <label class="form-label">Facture concernée</label>
                <input type="text" class="form-control" value="<?= htmlspecialchars((string)$encaissement['facture_numero']) ?> — <?= htmlspecialchars((string)$encaissement['client_nom']) ?>" disabled>
            </div>
        <?php else: ?>
            <div class="col-md-12">
                <label class="form-label">Facture à régler *</label>
                <select name="facture_id" class="form-select" required id="factureSelect">
                    <option value="">Sélectionner une facture</option>
                    <?php foreach ($factures as $facture): ?>
                        <option value="<?= (int)$facture['id'] ?>" data-reste="<?= htmlspecialchars((string)$facture['reste_du']) ?>" <?= ($selectedFactureId === (int)$facture['id']) ? 'selected' : '' ?>>
                            <?= htmlspecialchars($facture['numero']) ?> — <?= htmlspecialchars($facture['client_nom']) ?> — Reste dû : <?= number_format((float)$facture['reste_du'], 2, ',', ' ') ?> MAD
                        </option>
                    <?php endforeach; ?>
                </select>
            </div>
        <?php endif; ?>

        <div class="col-md-4">
            <label class="form-label">Date encaissement *</label>
            <input type="date" name="date_encaissement" class="form-control" value="<?= htmlspecialchars($dateValue) ?>" required>
        </div>
        <div class="col-md-4">
            <label class="form-label">Mode de règlement *</label>
            <select name="mode_reglement" class="form-select" required>
                <option value="">Sélectionner un mode</option>
                <?php foreach (($modesReglement ?? []) as $mode): ?>
                    <?php $libelle = (string)$mode['libelle']; ?>
                    <option value="<?= htmlspecialchars($libelle) ?>" <?= $modeValue === $libelle ? 'selected' : '' ?>>
                        <?= htmlspecialchars($libelle) ?>
                    </option>
                <?php endforeach; ?>
            </select>
        </div>
        <div class="col-md-4">
            <label class="form-label">Référence règlement</label>
            <input type="text" name="reference_reglement" class="form-control" value="<?= htmlspecialchars($referenceValue) ?>" placeholder="N° chèque, référence virement...">
        </div>

        <div class="col-md-4">
            <label class="form-label">Montant encaissé *</label>
            <div class="input-group">
                <input type="number" step="0.01" min="0.01" name="montant" id="montantInput" class="form-control" value="<?= htmlspecialchars($montantValue) ?>" <?= $isEdit ? 'max="' . htmlspecialchars(number_format((float)$maxEdit, 2, '.', '')) . '"' : '' ?> required>
                <span class="input-group-text">MAD</span>
            </div>
            <div class="form-text">
                <?= $isEdit ? 'Montant maximal autorisé : ' . number_format((float)$maxEdit, 2, ',', ' ') . ' MAD.' : 'Par défaut, le reste dû est proposé automatiquement.' ?>
            </div>
        </div>

        <div class="col-md-8">
            <label class="form-label">Observations</label>
            <input type="text" name="observations" class="form-control" value="<?= htmlspecialchars($observationsValue) ?>" placeholder="Commentaire interne facultatif">
        </div>

        <div class="col-12 d-flex justify-content-end gap-2 mt-4">
            <a href="<?= $isEdit ? 'index.php?page=factures_show&id=' . (int)$encaissement['facture_id'] : 'index.php?page=encaissements' ?>" class="btn btn-outline-secondary">Annuler</a>
            <button type="submit" class="btn darlink-btn-primary"><?= $isEdit ? 'Enregistrer les modifications' : 'Enregistrer l’encaissement' ?></button>
        </div>
    </form>
</div>

<?php if (!$isEdit): ?>
<script>
function fillRemainingAmount(){
 const select=document.getElementById('factureSelect');
 const input=document.getElementById('montantInput');
 const option=select?.selectedOptions?.[0];
 if(option && input && option.dataset.reste){
   input.value=parseFloat(option.dataset.reste || '0').toFixed(2);
   input.max=option.dataset.reste;
 }
}
document.getElementById('factureSelect')?.addEventListener('change',fillRemainingAmount);
fillRemainingAmount();
</script>
<?php endif; ?>
