02 Arrivages
Nouvel arrivage
Saisis le lot reçu — le total se calcule automatiquement, ligne par ligne.
Lignes d'arrivage
TR = QR × RU
{{ fmtMoney(trLigne(l)) }}
{{ lignes.length }} ligne{{ lignes.length > 1 ? 's' : '' }} · TR = QR × RU
Arrivages enregistrés
Historique des lots saisis
| N° | Date | Fournisseur | Total |
|---|---|---|---|
| {{ a.numero_arr || a.numero || a.id || '—' }} | {{ fmtDate(a.date) }} | {{ a.fournisseur }} | {{ fmtMoney(a.total_arr) }} |
|
API injoignable
Démarre le backend sur localhost:8001 pour charger les arrivages.
Aucun arrivage enregistré
Les lots validés apparaîtront ici.
|
|||
03 Stock
Parc des motos
Recherche instantanée par marque, modèle ou numéro de série.
{{ totalMotos }}
Motos en stock · quantité totale
{{ stock.rows.length }}
Références actives
Séries suivies dans le parc
Filtres
La recherche se met à jour à la saisie
Inventaire
État du parc par série
| Série / Châssis | Marque | Modèle | Prix vente | Qté | Statut |
|---|---|---|---|---|---|
| {{ v.serie }} | {{ v.marque }} | {{ v.modele }} | {{ fmtMoney(v.prix_vente) }} | {{ v.nb }} | SORTI EN STOCK |
|
API injoignable
Démarre le backend sur localhost:8001 pour charger le stock.
Aucun véhicule trouvé
Élargis ou vide les filtres pour voir le parc.
|
|||||
04 Vente
Vendre une moto
Le contrôle PMINI protège ta marge — aucun prix sous le seuil ne passe.
Retrouver le véhicule
Par numéro de série ou châssis
Véhicule trouvé
Informations de référence
Série
{{ vente.vehicule.serie }}
Marque
{{ vente.vehicule.marque }}
Modèle
{{ vente.vehicule.modele }}
Prix vente de référence
{{ fmtMoney(vente.vehicule.prix_vente) }}
En stock
{{ vente.vehicule.nb ?? '—' }} unité(s)
{{ regleInfo }}
Prix bas — PVM < PMINI
{{ vente.resultat.detail }}
{{ fmtMoney(vente.pvm) }} contre {{ fmtMoney(vente.pmini) }} minimum
Vente enregistrée
Marge (MU) : {{ fmtMoney(vente.resultat.marge) }}
{{ vente.resultat.type === 'network' ? 'API injoignable' : 'Vente refusée' }}
{{ vente.resultat.type === 'network' ? 'Démarre le backend sur localhost:8001 pour continuer.' : vente.resultat.msg }}
Aucun véhicule trouvé
{{ vente.resultat.msg }}
01 Dashboard
Vue d'ensemble
Indicateurs clés du parc : stock, sorties, valeur et tendances d'arrivages.
API injoignable
Démarre le backend sur localhost:8001 pour charger les statistiques.
Chargement des statistiques…
Aucune donnée disponible
Enregistre un arrivage pour voir les statistiques apparaître ici.
Motos en stock
{{ fmtInt(d.total_en_stock) }}
{{ fmtInt(d.total_motos) }} au total · références suivies
Sorties
{{ fmtInt(d.total_sorties) }}
motos vendues / sorties du parc
Valeur du stock
{{ fmtMoney(d.valeur_stock) }}
coût d'achat (TR cumulé)
Marge potentielle
{{ fmtMoney(d.marge_potentielle) }}
sur {{ fmtMoney(d.valeur_vente_potentielle) }} de vente potentielle
Bibliothèque de graphiques indisponible
Chart.js n'a pas pu être chargé depuis le CDN — vérifie la connexion internet.
Top marques
Quantité en stock par marque
Graphique indisponible
Statut du parc
En stock vs sorti
Graphique indisponible
Arrivages par mois
Valeur des lots reçus (F CFA)
Graphique indisponible
Top modèles
Références les plus présentes
Graphique indisponible
06 Paramètres
Utilisateurs & accès
Gère les comptes de l'équipe — rôles, suspension et suppression. Réservé à l'administrateur.
Utilisateurs
Comptes ayant accès à UBE SaaS
| Nom | Rôle | Statut | Actions | |
|---|---|---|---|---|
| {{ u.email }} | {{ u.nom || '—' }} | {{ roleLabel(u.role) }} | ACTIF SUSPENDU |
|
|
Aucun utilisateur
Les comptes créés apparaîtront ici.
|
||||
07 Journal d'activité
Journal d'activité
Historique en lecture seule (append-only) : connexions, arrivages, ventes, imports et gestion des comptes.
Filtres
Affine le journal, puis applique
Journal
Append-only — aucune action de modification ou suppression possible
| Quand | Qui | Action | Entité | Détails |
|---|---|---|---|---|
| {{ fmtDateTime(l.created_at) }} | {{ l.user_email || '—' }} | {{ actionLabel(l.action) }} | {{ l.entite || '—' }} #{{ l.entite_id }} | {{ fmtDetails(l.details) }} |
|
Aucune entrée de journal
Essaie d'élargir ou de réinitialiser les filtres.
|
||||
{{ logsItems.length === 0 ? 'Aucun résultat' : 'Affichage ' + (logsOffset + 1) + '–' + (logsOffset + logsItems.length) + ' sur ' }}
{{ logsTotal }}