pour prod

This commit is contained in:
Loic Masi
2026-08-07 16:13:43 +02:00
commit 5fbf76868f
157 changed files with 24085 additions and 0 deletions

133
app/Views/partials/pta.php Normal file
View File

@@ -0,0 +1,133 @@
<section class="page-content pta-page">
<section class="card">
<div class="section-heading">
<div>
<h2>PTA annuel de lagent</h2>
<p class="section-subtitle">Synthèse de lannée civile, répartition des 1 607 heures proratisées et contrôles métier. Un même agent peut intervenir en périscolaire et en extrascolaire.</p>
</div>
</div>
<div class="selection-grid overview-filters">
<label class="field">
<span>Agent soumis au PTA</span>
<select id="pta-agent">
<option value="">Choisir un agent</option>
<?php foreach ($agents as $agent): ?>
<option value="<?= (int) $agent['id_agent'] ?>">
<?= htmlspecialchars($agent['prenom'] . ' ' . $agent['nom'] . ' — ' . ($agent['poste_libelle'] ?? 'Poste non renseigné')) ?>
</option>
<?php endforeach; ?>
</select>
</label>
<label class="field">
<span>Date de référence</span>
<input id="pta-reference-date" type="date" value="<?= htmlspecialchars(date('Y-m-d')) ?>">
</label>
<div class="overview-filter-actions">
<button id="load-pta" type="button" class="button button-primary filter-button">Afficher le PTA</button>
</div>
</div>
<div id="pta-message" class="message" role="status" aria-live="polite"></div>
</section>
<section id="pta-content" hidden>
<section class="card">
<div class="section-heading">
<div>
<h2 id="pta-agent-name">Synthèse</h2>
<p id="pta-agent-meta" class="section-subtitle"></p>
</div>
<div class="button-group">
<a id="pta-open-planning" class="button button-secondary" href="planning.php">Ouvrir le planning</a>
<a id="pta-open-agent-view" class="button button-secondary" href="agents.php">Vue mensuelle</a>
</div>
</div>
<div id="pta-summary-cards" class="summary-grid"></div>
</section>
<section class="card">
<div class="section-heading">
<div>
<h2>Répartition du temps</h2>
<p class="section-subtitle">Les congés annuels et les JNT restent visibles, même lorsquils ne décomptent pas le quota.</p>
</div>
</div>
<div class="table-scroll">
<table class="planning-table">
<thead><tr><th>Catégorie</th><th>Durée</th><th>Jours concernés</th></tr></thead>
<tbody id="pta-category-body"></tbody>
</table>
</div>
</section>
<section class="card">
<div class="section-heading">
<div>
<h2>Contrôles du PTA</h2>
<p class="section-subtitle">Les alertes signalent les incohérences à contrôler ; elles ne remplacent pas la validation RH ou réglementaire.</p>
</div>
</div>
<div id="pta-controls" class="control-list"></div>
</section>
<div class="admin-grid">
<section class="card admin-card">
<div class="section-heading">
<div>
<h2>Contraintes prioritaires</h2>
<p class="section-subtitle">Préconisation médicale ou temps partiel thérapeutique applicable sur une période.</p>
</div>
</div>
<form id="pta-constraint-form" class="admin-form">
<div class="admin-form-grid">
<label class="field">
<span>Type</span>
<select id="pta-constraint-type" required>
<option value="MEDICALE">Préconisation médicale</option>
<option value="TEMPS_PARTIEL_THERAPEUTIQUE">Temps partiel thérapeutique</option>
</select>
</label>
<label class="field"><span>Début</span><input id="pta-constraint-start" type="date" required></label>
<label class="field"><span>Fin</span><input id="pta-constraint-end" type="date"></label>
<label class="field"><span>Quotité temporaire (%)</span><input id="pta-constraint-rate" type="number" min="1" max="100" step="0.01"></label>
<label class="field"><span>Maximum par jour (h)</span><input id="pta-constraint-day-max" type="number" min="0.25" step="0.25"></label>
<label class="field"><span>Maximum par semaine (h)</span><input id="pta-constraint-week-max" type="number" min="0.25" step="0.25"></label>
<label class="check-field"><input id="pta-forbid-morning" type="checkbox"> <span>Interdit le matin</span></label>
<label class="check-field"><input id="pta-forbid-midday" type="checkbox"> <span>Interdit le midi</span></label>
<label class="check-field"><input id="pta-forbid-evening" type="checkbox"> <span>Interdit le soir</span></label>
<label class="field admin-field-wide"><span>Commentaire prioritaire</span><textarea id="pta-constraint-comment" rows="3" maxlength="1000" required></textarea></label>
</div>
<div class="admin-form-actions"><button class="button button-primary" type="submit">Enregistrer la contrainte</button></div>
</form>
<div id="pta-constraint-list" class="stack-list"></div>
</section>
<section class="card admin-card">
<div class="section-heading">
<div>
<h2>Préférences et interdictions de lieu</h2>
<p class="section-subtitle">Ces informations orientent la composition des équipes après les contraintes prioritaires.</p>
</div>
</div>
<form id="pta-wish-form" class="admin-form">
<div class="admin-form-grid">
<label class="field">
<span>Lieu</span>
<select id="pta-wish-structure" required>
<option value="">Choisir un lieu</option>
<?php foreach ($structures as $structure): ?>
<option value="<?= (int) $structure['id_structure'] ?>"><?= htmlspecialchars($structure['nom']) ?></option>
<?php endforeach; ?>
</select>
</label>
<label class="field"><span>Choix</span><select id="pta-wish-type"><option value="PREFERENCE">Préférence</option><option value="INTERDICTION">Interdiction</option></select></label>
<label class="field"><span>Priorité</span><input id="pta-wish-priority" type="number" min="1" max="5" value="1"></label>
<label class="field"><span>Distance domicile-lieu (km)</span><input id="pta-wish-distance" type="number" min="0" step="0.1"></label>
<label class="field admin-field-wide"><span>Commentaire</span><textarea id="pta-wish-comment" rows="3" maxlength="500"></textarea></label>
</div>
<div class="admin-form-actions"><button class="button button-primary" type="submit">Enregistrer le choix</button></div>
</form>
<div id="pta-wish-list" class="stack-list"></div>
</section>
</div>
</section>
</section>