diff --git a/apps/ops/src/pages/PlanificationPage.vue b/apps/ops/src/pages/PlanificationPage.vue index e1481a3..a167c4e 100644 --- a/apps/ops/src/pages/PlanificationPage.vue +++ b/apps/ops/src/pages/PlanificationPage.vue @@ -1338,12 +1338,13 @@ -
{{ pubSummary.added }} ajout(s) · {{ pubSummary.removed }} retrait(s) · {{ notifySms ? pubSummary.added + ' SMS aux techs' : 'sans SMS' }}
+
{{ pubSummary.added }} quart(s) · {{ pubSummary.absAdded }} congé(s) · {{ pubSummary.absRemoved }} congé(s) retiré(s) · {{ notifySms ? pubSummary.added + ' SMS aux techs' : 'sans SMS' }}
@@ -4003,11 +4004,20 @@ const pubConfirm = ref(false) const pubSummary = computed(() => { const nameOf = id => { const t = (techs.value || []).find(x => x.id === id); return (t && t.name) || id } const byDate = {} + const bucket = date => (byDate[date] = byDate[date] || { date, add: [], rem: [], abs: [] }) for (const a of unpublished.value) { - const d = (byDate[a.date] = byDate[a.date] || { date: a.date, add: [], rem: [] }) - d.add.push({ tech: a.tech, date: a.date, shift: a.shift_name || a.shift, name: nameOf(a.tech), status: a.status }) + bucket(a.date).add.push({ tech: a.tech, date: a.date, shift: a.shift_name || a.shift, name: nameOf(a.tech), status: a.status }) } - return { added: unpublished.value.length, removed: 0, days: Object.values(byDate).sort((x, y) => String(x.date).localeCompare(String(y.date))) } + // CONGÉS / ABSENCES en attente (pendingAbs) : ils comptent dans « non publié » et sont bien envoyés au Publier + // (flushPendingAbsences) — donc ils DOIVENT figurer dans le résumé (sinon un congé indéfini reste invisible, ex. Josée-Anne). + let absAdded = 0; let absRemoved = 0 + for (const [k, v] of Object.entries(pendingAbs.value || {})) { + const [tid, iso] = k.split('|') + const set = v && v.op === 'set' + bucket(iso).abs.push({ tech: tid, date: iso, name: nameOf(tid), type: set ? (v.type || 'Congé') : null, op: set ? 'set' : 'remove' }) + if (set) absAdded++; else absRemoved++ + } + return { added: unpublished.value.length, removed: 0, absAdded, absRemoved, days: Object.values(byDate).sort((x, y) => String(x.date).localeCompare(String(y.date))) } }) const holSet = computed(() => new Set(holidays.value))