{# Dashboard shell: Drupal renders the page (nav, auth, permissions). dashboard.js (Vue 3) fetches JSON:API and renders a spreadsheet-like table of every ligne comptable, with filters and month/year grouping, client-side. "Ajouter une ligne" opens the real Drupal node form in a modal (core/drupal.dialog.ajax) -- no form logic duplicated in JS. #} {% verbatim %}
Erreur : {{ typeUpdateError }}
Chargement des données…
Erreur de chargement : {{ error }}
| Date | Client | Type | Libellé / Détail | Montant HT | Montant TTC | {{ c }} | Écart | ||
|---|---|---|---|---|---|---|---|---|---|
| Chargement des mois précédents… | |||||||||
| {{ item.label }} ({{ item.count }} lignes) | |||||||||
| {{ formatDate(item.date) }} | {{ item.client || '—' }} | {{ typeLabel(item.type) }} | {{ item.libelle }} {{ reconciliationByEntree.get(item.id).count }} sortie{{ reconciliationByEntree.get(item.id).count > 1 ? 's' : '' }} liée{{ reconciliationByEntree.get(item.id).count > 1 ? 's' : '' }} · reste {{ formatEur(reconciliationByEntree.get(item.id).resteAVerser) }} · sur-versé {{ formatEur(reconciliationByEntree.get(item.id).surVerse) }} ⚠ écart clôture {{ item.date.slice(0, 4) - 1 }} ({{ ouvertureEcart(item).comptes }} compte{{ ouvertureEcart(item).comptes > 1 ? 's' : '' }}) {{ linkStatus(item).kind === 'ok' ? '' : '⚠ ' }}{{ linkStatusLabel(linkStatus(item).kind) }} | {{ formatEur(item.montant_ht) }} | {{ formatEur(item.montant_ttc) }} | {{ item.parCompte[c] !== undefined ? formatEur(item.parCompte[c]) : '' }} | {{ item.hasError ? formatEur(item.ecart) : '' }} | ||
| Chargement des mois suivants… | |||||||||
| Solde {{ currentYear || '…' }} (créditeur / débiteur) chargement… | {{ currentYearTotals ? formatEur(currentYearTotals.montant_ht) : '' }} | {{ currentYearTotals ? formatEur(currentYearTotals.montant_ttc) : '' }} | {{ currentYearTotals && currentYearTotals.par_compte[c] !== undefined ? formatEur(currentYearTotals.par_compte[c]) : '' }} | {{ currentYearTotals ? formatEur(currentYearTotals.ecart) : '' }} | |||||
| Date | Client | Type | Libellé / Détail | Montant HT | Montant TTC | {{ c }} | Écart | |
|---|---|---|---|---|---|---|---|---|
| {{ formatDate(item.date) }} | {{ item.client || '—' }} | {{ typeLabel(item.type) }} | {{ item.libelle }} {{ reconciliationByEntree.get(item.id).count }} sortie{{ reconciliationByEntree.get(item.id).count > 1 ? 's' : '' }} liée{{ reconciliationByEntree.get(item.id).count > 1 ? 's' : '' }} · reste {{ formatEur(reconciliationByEntree.get(item.id).resteAVerser) }} · sur-versé {{ formatEur(reconciliationByEntree.get(item.id).surVerse) }} {{ linkStatus(item).kind === 'ok' ? '' : '⚠ ' }}{{ linkStatusLabel(linkStatus(item).kind) }} | {{ formatEur(item.montant_ht) }} | {{ formatEur(item.montant_ttc) }} | {{ item.parCompte[c] !== undefined ? formatEur(item.parCompte[c]) : '' }} | {{ item.hasError ? formatEur(item.ecart) : '' }} | |
| Solde entrées et sorties liées (créditeur / débiteur) | {{ drilldownTotals ? formatEur(drilldownTotals.montant_ht) : '' }} | {{ drilldownTotals ? formatEur(drilldownTotals.montant_ttc) : '' }} | {{ drilldownTotals && drilldownTotals.par_compte[c] !== undefined ? formatEur(drilldownTotals.par_compte[c]) : '' }} | {{ drilldownTotals ? formatEur(drilldownTotals.ecart) : '' }} | ||||