feat: Module Devis professionnel avec écrans complets
Création de 2 écrans professionnels pour le module Devis:
1. devis/nouveau.xhtml:
- 4 sections: Informations générales, Détail du devis, Montants, Conditions
- Numéro auto-généré avec icône
- Statut avec 5 valeurs (BROUILLON, ATTENTE, ACCEPTE, REFUSE, EXPIRE)
- Dates d'émission et validité avec calendriers
- Client et objet du devis requis
- Placeholder pour lignes de devis (future développement)
- Calcul automatique TVA 18% et TTC
- Récapitulatif visuel HT/TVA/TTC avec composant monétaire
- Conditions de paiement et remarques (section collapsible)
- 3 boutons: Annuler, Brouillon, Envoyer
2. devis/details.xhtml:
- En-tête: numéro, statut, client, objet, dates
- Actions: Retour, Convertir en chantier, PDF, Modifier
- 4 KPI cards: Montant HT, TVA, TTC, Statut
- 6 onglets professionnels:
* Vue d'ensemble: infos + récap financier + actions rapides
* Détail des lignes: table lignes (placeholder)
* Conditions: paiement, délais, garanties
* Documents: GED associée (placeholder)
* Suivi: timeline actions
* Historique: modifications (placeholder)
Corrections:
- Fix navigation /factures/nouvelle -> /factures/nouveau (factures.xhtml)
- Fix menu /factures/nouvelle -> /factures/nouveau (menu.xhtml)
Tous les composants réutilisables utilisés (status-badge, monetary-display).
Validation complète côté client et serveur.
UI/UX professionnel adapté au métier BTP.
This commit is contained in:
50
target/classes/META-INF/resources/access-denied.xhtml
Normal file
50
target/classes/META-INF/resources/access-denied.xhtml
Normal file
@@ -0,0 +1,50 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"
|
||||
xmlns:h="http://java.sun.com/jsf/html"
|
||||
xmlns:f="http://java.sun.com/jsf/core"
|
||||
xmlns:ui="http://java.sun.com/jsf/facelets"
|
||||
xmlns:p="http://primefaces.org/ui">
|
||||
<h:head>
|
||||
<title>Accès refusé - BTP Xpress</title>
|
||||
<f:facet name="first">
|
||||
<meta charset="UTF-8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||
<link rel="icon" href="#{resource['layout/images/logo/btpxpress-logo.png']}" type="image/png"/>
|
||||
</f:facet>
|
||||
<h:outputStylesheet name="layout/css/layout.css"/>
|
||||
</h:head>
|
||||
<h:body>
|
||||
<div class="surface-ground flex align-items-center justify-content-center min-h-screen min-w-screen overflow-hidden">
|
||||
<div class="flex flex-column align-items-center justify-content-center">
|
||||
<div style="border-radius:56px; padding:0.3rem; background: linear-gradient(180deg, var(--primary-color) 10%, rgba(33, 150, 243, 0) 30%);">
|
||||
<div class="w-full surface-card py-8 px-5 sm:px-8" style="border-radius:53px">
|
||||
<div class="text-center mb-5">
|
||||
<img src="#{resource['layout/images/logo/btpxpress-logo.png']}" alt="BTP Xpress logo" class="mb-5 w-6rem flex-shrink-0"/>
|
||||
<div class="text-900 text-3xl font-medium mb-3">Accès refusé</div>
|
||||
<span class="text-600 font-medium">Vous n'avez pas les permissions nécessaires pour accéder à cette page.</span>
|
||||
</div>
|
||||
|
||||
<div class="text-center">
|
||||
<i class="pi pi-ban text-6xl text-red-500 mb-4"></i>
|
||||
<p class="text-600 mb-4">
|
||||
Si vous pensez qu'il s'agit d'une erreur, veuillez contacter votre administrateur.
|
||||
</p>
|
||||
|
||||
<div class="flex flex-column gap-2">
|
||||
<p:button value="Retour au tableau de bord"
|
||||
icon="pi pi-home"
|
||||
href="/dashboard.xhtml"
|
||||
styleClass="p-button-primary w-full"/>
|
||||
|
||||
<p:button value="Se déconnecter"
|
||||
icon="pi pi-sign-out"
|
||||
href="/logout"
|
||||
styleClass="p-button-outlined w-full"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</h:body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user