{{ formatNumber(stats.today?.count || 0) }}
{{ formatNumber(stats.today?.total || 0) }} DA
Aujourd'hui
{{ Math.abs(todayTrend.pct) }}% vs hier
{{ formatNumber(stats.week?.count || 0) }}
{{ formatNumber(stats.week?.total || 0) }} DA
Cette semaine
{{ formatShortDate(stats.week.start) }} → {{ formatShortDate(stats.week.end) }}
{{ formatNumber(stats.month?.count || 0) }}
{{ formatNumber(stats.month?.total || 0) }} DA
Ce mois
{{ formatNumber(stats.open_bordereaux?.mont_total || 0) }} DA
{{ stats.open_bordereaux?.count || 0 }} bordereau(x) ouvert(s)
Montant Bordereaux Ouverts
7 derniers jours
{{ formatNumber(dailyTotal) }} DA
{{ d.total > 0 ? compactDA(d.total) : '' }}
{{ dayLabel(d.date) }}
Factures du jour
Aucune facture aujourd'hui
| N° Facture | Patient | Centre | Montant |
|---|---|---|---|
| {{ f.num_fact }} | {{ f.nom }} {{ f.prenom }} | {{ f.code_centre }} | {{ formatNumber(f.mont_fact) }} DA |
{{ f.nom }} {{ f.prenom }}
{{ f.num_fact }}
{{ f.code_centre }}
{{ formatNumber(f.mont_fact) }} DA
Factures {{ formatNumber(factureTotal) }}
| N° Facture | Patient | Centre | Date | Montant | Assuré |
|---|---|---|---|---|---|
| {{ f.num_fact }} | {{ f.nom }} {{ f.prenom }} | {{ f.code_centre }} | {{ formatBordDate(f.date_fact) }} | {{ formatNumber(f.mont_fact) }} DA | {{ formatNumber(f.mont_as) }} DA |
| Aucune facture trouvée | |||||
{{ f.nom }} {{ f.prenom }}
{{ f.num_fact }} • {{ formatBordDate(f.date_fact) }}
{{ f.code_centre }}
Assuré {{ formatNumber(f.mont_as) }} DA
{{ formatNumber(f.mont_fact) }} DA
Aucune facture trouvée
…
/ {{ facturePages }}
Bénéficiaires {{ formatNumber(benefTotal) }}
| N° Assuré | Nom | Prénom | Rang | Centre |
|---|---|---|---|---|
| {{ b.num_assure }} | {{ b.nom }} | {{ b.prenom }} | {{ b.rang_ad === '00' ? 'Assuré' : 'ADroit' }} | {{ b.code_centre || '—' }} |
| Aucun bénéficiaire trouvé | ||||
{{ b.nom }} {{ b.prenom }}
{{ b.num_assure }}
{{ b.rang_ad === '00' ? 'Ass.' : 'ADrt' }}
{{ b.code_centre }}
Aucun bénéficiaire trouvé
…
/ {{ benefPages }}
Médicaments {{ formatNumber(medTotal) }}
| Code | Désignation | DCI | Dosage | Cond. | Tarif |
|---|---|---|---|---|---|
| {{ m.num_enr }} | {{ m.nom_com }} | {{ m.nom_dci }} | {{ m.dosage }} {{ m.unite || '' }} | {{ m.conditionnement || '—' }} | {{ formatNumber(m.tarif_ref) }} DA |
| Aucun médicament trouvé | |||||
{{ m.nom_com }}
{{ m.num_enr }} • {{ m.nom_dci || '—' }}
{{ m.dosage }} {{ m.unite || '' }} • {{ m.conditionnement }}
{{ formatNumber(m.tarif_ref) }} DA
Aucun médicament trouvé
…
/ {{ medPages }}
{{ bordPipeline.open.count }}
Ouverts
{{ formatNumber(bordPipeline.open.amt) }} DA
{{ bordPipeline.sent.count }}
Envoyés
{{ formatNumber(bordPipeline.sent.amt) }} DA · dont {{ bordPipeline.sent.pending }} en attente
{{ bordPipeline.paid.count }}
Payés
{{ formatNumber(bordPipeline.paid.amt) }} DA
Suivi CNAS
{{ suiviSummary.retard }}En retard
{{ suiviSummary.cnasEnCours }}CNAS en cours
{{ suiviSummary.cnasPaye }}CNAS payés
{{ suiviLoaded ? 'Aucun bordereau à suivre' : 'Chargement du suivi…' }}
| N° Bordereau | Centre | État | Montant | Factures | Période | Âge | État CNAS |
|---|---|---|---|---|---|---|---|
| {{ it.num_bord }} | {{ it.code_centre }} | {{ bordStage(it).label }} |
{{ formatNumber(it.mont_total) }} DA
viré {{ formatNumber(it.mont_vire) }} DA
|
{{ it.nb_factures }} | {{ it.date_min_fact ? formatShortDate(it.date_min_fact) : '—' }} → {{ formatShortDate(it.date_max_fact) }} |
{{ it.jours }} j
{{ it.jours_type === 'envoi' ? 'depuis envoi' : 'd\'accumulation' }}
—
Pas encore payé
|
en attente
injoignable
{{ cnasGroup3(it.cnas).label }}
|
Bordereaux ({{ bordereaux.length }})
| N° Bordereau | Date | Montant | Payé | État CNAS | Centre |
|---|---|---|---|---|---|
| {{ b.num_bord }} {{ bordStage(b).label }} | {{ formatBordDate(b.date_envoi) }}{{ daysSince(b.date_envoi) }} j | {{ formatNumber(b.mont_total) }} DA | ✅ {{ formatNumber(b.mont_vire) }} DA ❌ Non payé | Vérifier {{ cnasGroup3(cnasStates[b.num_bord]).label }} Réessayer | {{ b.code_centre || '—' }} |
| Aucun bordereau trouvé | |||||
{{ b.num_bord }}
{{ formatBordDate(b.date_envoi) }} • {{ b.code_centre }}
{{ bordStage(b).label }}
{{ cnasGroup3(cnasStates[b.num_bord]).label }}
CNAS
{{ formatNumber(b.mont_total) }} DA
✅ {{ formatNumber(b.mont_vire) }} DA viré
❌ Non payé
Aucun bordereau trouvé
…
/ {{ bordPages }}
Bordereaux Ouverts
{{ openBordCount }}
Bordereaux ouverts
{{ formatNumber(openBordMontTotal) }} DA
Montant total
{{ formatNumber(openBordMontOff) }} DA
Part Pharmacie
{{ formatNumber(openBordMontAs) }} DA
Part Assuré
{{ formatNumber(openBordMajLocal) }} DA
Majoration Locale
{{ formatNumber(openBordMajSub) }} DA
Majoration Sub.
{{ formatNumber(openBordMedCount) }}
Médicaments distincts
Analyse des Marges
{{ formatNumber(totalProfitAll) }} DA
{{ formatNumber(substanceTotalProfit) }} DA
Bénéfice Total (Majorations)
{{ avgProfitRate }}%
{{ substanceAvgProfitRate }}%
Marge Moyenne
{{ majorations.length }}
{{ substances.length }}
Médicaments avec marge
Substances avec marge
{{ topProfitDrug }}
{{ topProfitSubstance }}
Meilleure marge (DA)
Meilleure substance (DA)
| Code | Médicament | Qté | Ventes (DA) | Bénéfice (DA) | Marge % | Par Ordonnance | Ordonnances |
|---|---|---|---|---|---|---|---|
| {{ m.num_enr }} | {{ m.nom_com }} {{ m.nom_dci || '—' }} |
{{ formatNumber(m.total_qty || 0) }} | {{ formatNumber(m.total_montant || 0) }} DA | {{ formatNumber(m.total_profit || 0) }} DA | {{ profitRate(m) }}% | {{ formatNumber(m.profit_per_prescription || 0) }} DA | {{ formatNumber(m.prescription_count || 0) }} |
| Aucun médicament avec marge trouvé{{ searchMajoration ? ' pour "' + searchMajoration + '"' : '' }} | |||||||
{{ m.nom_com }}
{{ m.num_enr }} • {{ m.nom_dci || '—' }}
{{ profitRate(m) }}%
{{ formatNumber(m.total_profit || 0) }} DA
{{ formatNumber(m.total_montant || 0) }} DA
{{ formatNumber(m.prescription_count || 0) }} rx
Aucun médicament avec marge trouvé{{ searchMajoration ? ' pour "' + searchMajoration + '"' : '' }}
| Substance (DCI) | Variants | Ventes (DA) | Prescriptions | Bénéfice (DA) | Marge % | Bénéfice/Rx | Meilleur Médicament |
|---|---|---|---|---|---|---|---|
| {{ s.nom_dci || '—' }} | {{ s.medication_count }} | {{ formatNumber(s.total_sales || 0) }} DA | {{ formatNumber(s.total_prescriptions || 0) }} | {{ formatNumber((s.total_maj_local||0) + (s.total_maj_sub||0)) }} DA | {{ substanceProfitRate(s) }}% | {{ substanceMajorationRate(s) }} DA |
{{ s.best_nom_com || '—' }}
{{ s.best_num_enr }}
{{ formatNumber(s.best_maj_local || 0) }} DA
|
| Aucune substance trouvée{{ searchMajoration ? ' pour "' + searchMajoration + '"' : '' }} | |||||||
{{ s.nom_dci || 'Substance inconnue' }}
{{ s.medication_count }} variant(s) · {{ formatNumber(s.total_prescriptions || 0) }} Rx · {{ formatNumber(s.total_sales || 0) }} DA
{{ formatNumber((s.total_maj_local||0) + (s.total_maj_sub||0)) }} DA
{{ substanceProfitRate(s) }}%
{{ substanceMajorationRate(s) }} DA/Rx
Meilleur: {{ s.best_nom_com || '—' }} · {{ formatNumber(s.best_maj_local || 0) }} DA
Aucune substance trouvée{{ searchMajoration ? ' pour "' + searchMajoration + '"' : '' }}
Centres {{ centres.length }}
| Code | Nom |
|---|---|
| {{ c.code_centre }} | {{ c.nom && c.nom !== c.code_centre ? c.nom : '—' }} |
Nom des centres non renseigné dans la base (identique au code).
À propos
Version
5.8.0
Base de données
PostgreSQL
Framework
Vue.js 3 + Express
{{ toast.message }}