- {{ 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' }}
{{ fmtDueLabel(d.date) }}
{{ a.name }} · {{ a.shift }}
{{ r.name }} · {{ r.shift }}
+ {{ ab.name }} · {{ ab.op === 'set' ? (ab.type || 'Congé') : 'congé retiré' }}
@@ -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))