Configure Maven repository for unionflow-server-api dependency

This commit is contained in:
dahoud
2025-12-10 01:12:54 +00:00
commit 2910809949
1173 changed files with 435718 additions and 0 deletions

View File

@@ -0,0 +1,115 @@
<!DOCTYPE html>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
template="/templates/main-template.xhtml">
<ui:param name="page" value="#{adhesionsBean}"/>
<ui:define name="title">Demande d'Adhésion - UnionFlow</ui:define>
<ui:define name="content">
<!-- En-tête -->
<ui:include src="/templates/components/layout/page-header.xhtml">
<ui:param name="icon" value="pi pi-user-plus text-green-500" />
<ui:param name="title" value="Demande d'Adhésion" />
<ui:param name="description" value="Formulaire de demande d'adhésion à une organisation" />
</ui:include>
<!-- Formulaire de demande -->
<div class="card">
<h:form id="formDemande">
<h5>Nouvelle Demande d'Adhésion</h5>
<ui:include src="/templates/components/forms/form-section.xhtml">
<ui:param name="title" value="Informations du Membre" />
<ui:define name="content">
<div class="grid">
<div class="col-12 md:col-6">
<div class="field">
<p:outputLabel for="membreId" value="Membre" />
<p:selectOneMenu id="membreId"
value="#{adhesionsBean.nouvelleAdhesion.membreId}"
required="true"
requiredMessage="Veuillez sélectionner un membre"
filter="true"
filterMatchMode="contains"
styleClass="w-full">
<f:selectItems value="#{adhesionsBean.membresSelectItems}" />
</p:selectOneMenu>
<p:message for="membreId" />
</div>
</div>
<div class="col-12 md:col-6">
<div class="field">
<p:outputLabel for="organisationId" value="Organisation" />
<p:selectOneMenu id="organisationId"
value="#{adhesionsBean.nouvelleAdhesion.organisationId}"
required="true"
requiredMessage="Veuillez sélectionner une organisation"
filter="true"
filterMatchMode="contains"
styleClass="w-full">
<f:selectItems value="#{adhesionsBean.associationsSelectItems}" />
</p:selectOneMenu>
<p:message for="organisationId" />
</div>
</div>
</div>
</ui:define>
</ui:include>
<ui:include src="/templates/components/forms/form-section.xhtml">
<ui:param name="title" value="Frais d'Adhésion" />
<ui:define name="content">
<div class="grid">
<div class="col-12 md:col-6">
<div class="field">
<p:outputLabel for="fraisAdhesion" value="Frais d'adhésion (FCFA)" />
<p:inputNumber id="fraisAdhesion"
value="#{adhesionsBean.nouvelleAdhesion.fraisAdhesion}"
symbol=""
minValue="0"
styleClass="w-full" />
</div>
</div>
</div>
</ui:define>
</ui:include>
<ui:include src="/templates/components/forms/form-section.xhtml">
<ui:param name="title" value="Observations" />
<ui:define name="content">
<div class="grid">
<div class="col-12">
<ui:include src="/templates/components/forms/form-field-textarea.xhtml">
<ui:param name="id" value="observations" />
<ui:param name="label" value="Observations (optionnel)" />
<ui:param name="value" value="#{adhesionsBean.nouvelleAdhesion.observations}" />
<ui:param name="rows" value="4" />
</ui:include>
</div>
</div>
</ui:define>
</ui:include>
<div class="flex justify-content-end gap-2 mt-3">
<ui:include src="/templates/components/buttons/button-secondary.xhtml">
<ui:param name="value" value="Annuler" />
<ui:param name="icon" value="pi pi-times" />
<ui:param name="action" value="#{navigationBean.goToDashboard}" />
<ui:param name="outlined" value="true" />
</ui:include>
<ui:include src="/templates/components/buttons/button-primary.xhtml">
<ui:param name="value" value="Soumettre la demande" />
<ui:param name="icon" value="pi pi-send" />
<ui:param name="action" value="#{adhesionsBean.enregistrerAdhesion}" />
<ui:param name="update" value="@form" />
</ui:include>
</div>
</h:form>
</div>
</ui:define>
</ui:composition>

View File

@@ -0,0 +1,259 @@
<!DOCTYPE html>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
template="/templates/main-template.xhtml">
<ui:param name="page" value="#{adhesionsBean}"/>
<ui:define name="title">Historique des Adhésions - UnionFlow</ui:define>
<ui:define name="content">
<!-- En-tête -->
<ui:include src="/templates/components/layout/page-header.xhtml">
<ui:param name="icon" value="pi pi-history text-blue-500" />
<ui:param name="title" value="Historique des Adhésions" />
<ui:param name="description" value="Consultation de l'historique complet des adhésions" />
<ui:define name="actions">
<h:form id="formActionsHistory">
<div class="flex gap-2">
<ui:include src="/templates/components/buttons/button-secondary.xhtml">
<ui:param name="value" value="Exporter" />
<ui:param name="icon" value="pi pi-download" />
<ui:param name="outlined" value="true" />
</ui:include>
<ui:include src="/templates/components/buttons/button-icon.xhtml">
<ui:param name="icon" value="pi pi-refresh" />
<ui:param name="action" value="#{adhesionsBean.actualiser}" />
<ui:param name="update" value="@form" />
<ui:param name="title" value="Actualiser" />
<ui:param name="rounded" value="true" />
<ui:param name="text" value="false" />
<ui:param name="styleClass" value="ui-button-outlined ui-button-secondary" />
</ui:include>
</div>
</h:form>
</ui:define>
</ui:include>
<!-- Filtres d'historique -->
<div class="card">
<h:form id="formFiltresHistory">
<h5>Filtres de Recherche</h5>
<div class="grid">
<div class="col-12 md:col-3">
<ui:include src="/templates/components/forms/form-field-calendar.xhtml">
<ui:param name="id" value="dateDebut" />
<ui:param name="label" value="Date début" />
<ui:param name="value" value="#{adhesionsBean.filtres.dateDebut}" />
</ui:include>
</div>
<div class="col-12 md:col-3">
<ui:include src="/templates/components/forms/form-field-calendar.xhtml">
<ui:param name="id" value="dateFin" />
<ui:param name="label" value="Date fin" />
<ui:param name="value" value="#{adhesionsBean.filtres.dateFin}" />
</ui:include>
</div>
<div class="col-12 md:col-3">
<ui:include src="/templates/components/forms/form-field-select.xhtml">
<ui:param name="id" value="statutHistory" />
<ui:param name="label" value="Statut" />
<ui:param name="value" value="#{adhesionsBean.filtres.statut}" />
<ui:define name="items">
<f:selectItem itemLabel="Tous" itemValue="" />
<f:selectItem itemLabel="En attente" itemValue="EN_ATTENTE" />
<f:selectItem itemLabel="Approuvée" itemValue="APPROUVEE" />
<f:selectItem itemLabel="Rejetée" itemValue="REJETEE" />
<f:selectItem itemLabel="Payée" itemValue="PAYEE" />
<f:selectItem itemLabel="En paiement" itemValue="EN_PAIEMENT" />
<f:selectItem itemLabel="Annulée" itemValue="ANNULEE" />
</ui:define>
</ui:include>
</div>
<div class="col-12 md:col-3">
<div class="field">
<p:outputLabel />
<div class="flex gap-2">
<ui:include src="/templates/components/buttons/button-primary.xhtml">
<ui:param name="value" value="Rechercher" />
<ui:param name="icon" value="pi pi-search" />
<ui:param name="action" value="#{adhesionsBean.rechercher}" />
<ui:param name="update" value=":formHistory" />
</ui:include>
<ui:include src="/templates/components/buttons/button-secondary.xhtml">
<ui:param name="value" value="Réinitialiser" />
<ui:param name="icon" value="pi pi-times" />
<ui:param name="action" value="#{adhesionsBean.reinitialiserFiltres}" />
<ui:param name="update" value="@form :formHistory" />
<ui:param name="outlined" value="true" />
</ui:include>
</div>
</div>
</div>
</div>
</h:form>
</div>
<!-- Tableau d'historique -->
<div class="card">
<h:form id="formHistory">
<h5>Historique des Adhésions</h5>
<p:dataTable id="dtHistory"
value="#{adhesionsBean.adhesionsFiltrees}"
var="adhesion"
paginator="true"
rows="20"
rowsPerPageTemplate="10,20,50,100"
sortMode="multiple"
emptyMessage="Aucune adhésion trouvée">
<f:facet name="header">
<div class="flex align-items-center justify-content-between">
<span>Historique (#{adhesionsBean.adhesionsFiltrees.size()} adhésion(s))</span>
</div>
</f:facet>
<p:column headerText="Date" sortBy="#{adhesion.dateDemande}" style="width:120px">
<h:outputText value="#{adhesion.dateDemandeFormatee}" />
</p:column>
<p:column headerText="Référence" sortBy="#{adhesion.numeroReference}" style="width:150px">
<h:outputText value="#{adhesion.numeroReference}" />
</p:column>
<p:column headerText="Membre" sortBy="#{adhesion.nomMembre}">
<div>
<div class="font-medium">#{adhesion.nomMembre}</div>
<div class="text-600 text-sm">#{adhesion.numeroMembre}</div>
</div>
</p:column>
<p:column headerText="Organisation" sortBy="#{adhesion.nomOrganisation}">
<h:outputText value="#{adhesion.nomOrganisation}" />
</p:column>
<p:column headerText="Frais" sortBy="#{adhesion.fraisAdhesion}" style="width:120px">
<h:outputText value="#{adhesion.fraisAdhesionFormatte}" styleClass="font-bold" />
</p:column>
<p:column headerText="Statut" sortBy="#{adhesion.statut}" style="width:150px">
<p:tag value="#{adhesion.statutLibelle}"
severity="#{adhesion.statutSeverity}"
icon="#{adhesion.statutIcon}" />
</p:column>
<p:column headerText="Date Approbation" sortBy="#{adhesion.dateApprobation}" style="width:150px">
<h:outputText value="#{adhesion.dateApprobationFormatee}" />
</p:column>
<p:column headerText="Date Paiement" sortBy="#{adhesion.datePaiement}" style="width:150px">
<h:outputText value="#{adhesion.datePaiementFormatee}" />
</p:column>
<p:column headerText="Actions" style="width:100px">
<p:commandButton icon="pi pi-eye"
title="Voir les détails"
styleClass="p-button-rounded p-button-text p-button-info"
action="#{adhesionsBean.selectionnerAdhesion(adhesion)}"
update=":formDetailsAdhesion"
oncomplete="PF('dlgDetailsAdhesion').show();" />
</p:column>
</p:dataTable>
</h:form>
</div>
<!-- Dialog Détails Adhésion -->
<p:dialog header="Détails de l'Adhésion" widgetVar="dlgDetailsAdhesion" modal="true" width="600" resizable="false">
<h:form id="formDetailsAdhesion">
<div class="ui-fluid">
<div class="grid">
<div class="col-12 md:col-6">
<div class="field">
<label class="font-medium">Référence</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.numeroReference}</p>
</div>
</div>
<div class="col-12 md:col-6">
<div class="field">
<label class="font-medium">Statut</label>
<p:tag value="#{adhesionsBean.adhesionSelectionnee.statutLibelle}"
severity="#{adhesionsBean.adhesionSelectionnee.statutSeverity}" />
</div>
</div>
<div class="col-12">
<div class="field">
<label class="font-medium">Membre</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.nomMembre}</p>
<p class="text-500 text-sm">N° #{adhesionsBean.adhesionSelectionnee.numeroMembre}</p>
</div>
</div>
<div class="col-12">
<div class="field">
<label class="font-medium">Organisation</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.nomOrganisation}</p>
</div>
</div>
<div class="col-12 md:col-6">
<div class="field">
<label class="font-medium">Date de demande</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.dateDemandeFormatee}</p>
</div>
</div>
<div class="col-12 md:col-6">
<div class="field">
<label class="font-medium">Frais d'adhésion</label>
<p class="text-600 font-bold">#{adhesionsBean.adhesionSelectionnee.fraisAdhesionFormatte}</p>
</div>
</div>
<div class="col-12 md:col-4">
<div class="field">
<label class="font-medium">Montant payé</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.montantPayeFormatte}</p>
</div>
</div>
<div class="col-12 md:col-4">
<div class="field">
<label class="font-medium">Montant restant</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.montantRestantFormatte}</p>
</div>
</div>
<div class="col-12 md:col-4">
<div class="field">
<label class="font-medium">Date d'approbation</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.dateApprobationFormatee}</p>
</div>
</div>
<div class="col-12 md:col-6">
<div class="field">
<label class="font-medium">Date de paiement</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.datePaiementFormatee}</p>
</div>
</div>
<div class="col-12 md:col-6">
<div class="field">
<label class="font-medium">Méthode de paiement</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.methodePaiementLibelle}</p>
</div>
</div>
<div class="col-12" rendered="#{adhesionsBean.adhesionSelectionnee.observations != null}">
<div class="field">
<label class="font-medium">Observations</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.observations}</p>
</div>
</div>
<div class="col-12" rendered="#{adhesionsBean.adhesionSelectionnee.motifRejet != null}">
<div class="field">
<label class="font-medium">Motif de rejet</label>
<p class="text-600 text-red-500">#{adhesionsBean.adhesionSelectionnee.motifRejet}</p>
</div>
</div>
</div>
</div>
</h:form>
</p:dialog>
</ui:define>
</ui:composition>

View File

@@ -0,0 +1,417 @@
<!DOCTYPE html>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
template="/templates/main-template.xhtml">
<ui:param name="page" value="#{adhesionsBean}"/>
<ui:define name="title">Liste des Adhésions - UnionFlow</ui:define>
<ui:define name="content">
<!-- En-tête -->
<ui:include src="/templates/components/layout/page-header.xhtml">
<ui:param name="icon" value="pi pi-users text-blue-500" />
<ui:param name="title" value="Liste des Adhésions" />
<ui:param name="description" value="Gestion complète des demandes d'adhésion" />
<ui:define name="actions">
<h:form id="formActionsListe">
<div class="flex gap-2">
<ui:include src="/templates/components/buttons/button-primary.xhtml">
<ui:param name="value" value="Nouvelle adhésion" />
<ui:param name="icon" value="pi pi-plus" />
<ui:param name="onclick" value="PF('dlgNouvelleAdhesion').show();" />
</ui:include>
<ui:include src="/templates/components/buttons/button-icon.xhtml">
<ui:param name="icon" value="pi pi-refresh" />
<ui:param name="action" value="#{adhesionsBean.actualiser}" />
<ui:param name="update" value="@form" />
<ui:param name="title" value="Actualiser" />
<ui:param name="rounded" value="true" />
<ui:param name="text" value="false" />
<ui:param name="styleClass" value="ui-button-outlined ui-button-secondary" />
</ui:include>
</div>
</h:form>
</ui:define>
</ui:include>
<!-- Statistiques -->
<div class="grid">
<ui:include src="/templates/components/cards/stat-card.xhtml">
<ui:param name="value" value="#{adhesionsBean.statistiques.totalAdhesions}" />
<ui:param name="label" value="Total Adhésions" />
<ui:param name="icon" value="pi pi-users" />
<ui:param name="bgColor" value="blue" />
</ui:include>
<ui:include src="/templates/components/cards/stat-card.xhtml">
<ui:param name="value" value="#{adhesionsBean.statistiques.adhesionsEnAttente}" />
<ui:param name="label" value="En Attente" />
<ui:param name="icon" value="pi pi-clock" />
<ui:param name="bgColor" value="orange" />
</ui:include>
<ui:include src="/templates/components/cards/stat-card.xhtml">
<ui:param name="value" value="#{adhesionsBean.statistiques.adhesionsApprouvees}" />
<ui:param name="label" value="Approuvées" />
<ui:param name="icon" value="pi pi-check-circle" />
<ui:param name="bgColor" value="green" />
</ui:include>
<ui:include src="/templates/components/cards/stat-card.xhtml">
<ui:param name="value" value="#{adhesionsBean.statistiques.tauxApprobationInt}%" />
<ui:param name="label" value="Taux d'Approbation" />
<ui:param name="icon" value="pi pi-percentage" />
<ui:param name="bgColor" value="purple" />
</ui:include>
</div>
<!-- Filtres -->
<div class="card">
<h:form id="formFiltres">
<h5>Filtres de Recherche</h5>
<div class="grid">
<div class="col-12 md:col-3">
<ui:include src="/templates/components/forms/form-field-select.xhtml">
<ui:param name="id" value="filtreStatut" />
<ui:param name="label" value="Statut" />
<ui:param name="value" value="#{adhesionsBean.filtres.statut}" />
<ui:define name="items">
<f:selectItem itemLabel="Tous" itemValue="" />
<f:selectItem itemLabel="En attente" itemValue="EN_ATTENTE" />
<f:selectItem itemLabel="Approuvée" itemValue="APPROUVEE" />
<f:selectItem itemLabel="Rejetée" itemValue="REJETEE" />
<f:selectItem itemLabel="Payée" itemValue="PAYEE" />
<f:selectItem itemLabel="En paiement" itemValue="EN_PAIEMENT" />
</ui:define>
</ui:include>
</div>
<div class="col-12 md:col-3">
<ui:include src="/templates/components/forms/form-field-text.xhtml">
<ui:param name="id" value="filtreNomMembre" />
<ui:param name="label" value="Nom du membre" />
<ui:param name="value" value="#{adhesionsBean.filtres.nomMembre}" />
<ui:param name="placeholder" value="Rechercher par nom..." />
</ui:include>
</div>
<div class="col-12 md:col-3">
<ui:include src="/templates/components/forms/form-field-calendar.xhtml">
<ui:param name="id" value="filtreDateDebut" />
<ui:param name="label" value="Date début" />
<ui:param name="value" value="#{adhesionsBean.filtres.dateDebut}" />
</ui:include>
</div>
<div class="col-12 md:col-3">
<div class="field">
<p:outputLabel />
<div class="flex gap-2">
<ui:include src="/templates/components/buttons/button-primary.xhtml">
<ui:param name="value" value="Rechercher" />
<ui:param name="icon" value="pi pi-search" />
<ui:param name="action" value="#{adhesionsBean.rechercher}" />
<ui:param name="update" value=":formListe" />
</ui:include>
<ui:include src="/templates/components/buttons/button-secondary.xhtml">
<ui:param name="value" value="Réinitialiser" />
<ui:param name="icon" value="pi pi-times" />
<ui:param name="action" value="#{adhesionsBean.reinitialiserFiltres}" />
<ui:param name="update" value="@form :formListe" />
<ui:param name="outlined" value="true" />
</ui:include>
</div>
</div>
</div>
</div>
</h:form>
</div>
<!-- Liste des adhésions -->
<div class="card">
<h:form id="formListe">
<h5>Adhésions</h5>
<p:dataTable id="dtAdhesions"
value="#{adhesionsBean.adhesionsFiltrees}"
var="adhesion"
paginator="true"
rows="20"
rowsPerPageTemplate="10,20,50,100"
sortMode="multiple"
emptyMessage="Aucune adhésion trouvée"
selection="#{adhesionsBean.adhesionsSelectionnees}"
selectionMode="multiple">
<f:facet name="header">
<div class="flex align-items-center justify-content-between">
<span>Liste des adhésions (#{adhesionsBean.adhesionsFiltrees.size()} adhésion(s))</span>
</div>
</f:facet>
<p:column selectionMode="multiple" style="width:50px" />
<p:column headerText="Référence" sortBy="#{adhesion.numeroReference}" style="width:150px">
<h:outputText value="#{adhesion.numeroReference}" />
</p:column>
<p:column headerText="Membre" sortBy="#{adhesion.nomMembre}">
<div>
<div class="font-medium">#{adhesion.nomMembre}</div>
<div class="text-600 text-sm">#{adhesion.numeroMembre}</div>
</div>
</p:column>
<p:column headerText="Organisation" sortBy="#{adhesion.nomOrganisation}">
<h:outputText value="#{adhesion.nomOrganisation}" />
</p:column>
<p:column headerText="Date Demande" sortBy="#{adhesion.dateDemande}" style="width:120px">
<h:outputText value="#{adhesion.dateDemandeFormatee}" />
</p:column>
<p:column headerText="Frais" sortBy="#{adhesion.fraisAdhesion}" style="width:120px">
<h:outputText value="#{adhesion.fraisAdhesionFormatte}" styleClass="font-bold" />
</p:column>
<p:column headerText="Statut" sortBy="#{adhesion.statut}" style="width:150px">
<p:tag value="#{adhesion.statutLibelle}"
severity="#{adhesion.statutSeverity}"
icon="#{adhesion.statutIcon}" />
</p:column>
<p:column headerText="Actions" style="width:200px">
<div class="flex gap-1">
<p:commandButton icon="pi pi-eye"
title="Voir les détails"
styleClass="p-button-rounded p-button-text p-button-info"
action="#{adhesionsBean.selectionnerAdhesion(adhesion)}"
update=":formDetailsAdhesion"
oncomplete="PF('dlgDetailsAdhesion').show();" />
<p:commandButton icon="pi pi-check"
title="Approuver"
styleClass="p-button-rounded p-button-text p-button-success"
rendered="#{'EN_ATTENTE' == adhesion.statut}"
action="#{adhesionsBean.selectionnerAdhesion(adhesion)}"
update=":formApprobation"
oncomplete="PF('dlgApprobation').show();" />
<p:commandButton icon="pi pi-times"
title="Rejeter"
styleClass="p-button-rounded p-button-text p-button-danger"
rendered="#{'EN_ATTENTE' == adhesion.statut}"
action="#{adhesionsBean.selectionnerAdhesion(adhesion)}"
update=":formRejet"
oncomplete="PF('dlgRejet').show();" />
</div>
</p:column>
</p:dataTable>
</h:form>
</div>
<!-- Dialog Nouvelle Adhésion -->
<p:dialog header="Nouvelle Adhésion" widgetVar="dlgNouvelleAdhesion" modal="true" width="600" resizable="false">
<h:form id="formNouvelleAdhesion">
<div class="ui-fluid">
<div class="field">
<p:outputLabel for="membreId" value="Membre" />
<p:selectOneMenu id="membreId"
value="#{adhesionsBean.nouvelleAdhesion.membreId}"
required="true"
requiredMessage="Veuillez sélectionner un membre"
filter="true"
filterMatchMode="contains"
styleClass="w-full">
<f:selectItems value="#{adhesionsBean.membresSelectItems}" />
</p:selectOneMenu>
<p:message for="membreId" />
</div>
<div class="field">
<p:outputLabel for="organisationId" value="Organisation" />
<p:selectOneMenu id="organisationId"
value="#{adhesionsBean.nouvelleAdhesion.organisationId}"
required="true"
requiredMessage="Veuillez sélectionner une organisation"
filter="true"
filterMatchMode="contains"
styleClass="w-full">
<f:selectItems value="#{adhesionsBean.associationsSelectItems}" />
</p:selectOneMenu>
<p:message for="organisationId" />
</div>
<div class="field">
<p:outputLabel for="fraisAdhesion" value="Frais d'adhésion (FCFA)" />
<p:inputNumber id="fraisAdhesion"
value="#{adhesionsBean.nouvelleAdhesion.fraisAdhesion}"
symbol=""
minValue="0"
styleClass="w-full" />
</div>
<ui:include src="/templates/components/forms/form-field-textarea.xhtml">
<ui:param name="id" value="observations" />
<ui:param name="label" value="Observations" />
<ui:param name="value" value="#{adhesionsBean.nouvelleAdhesion.observations}" />
<ui:param name="rows" value="3" />
</ui:include>
</div>
<div class="flex justify-content-end gap-2 mt-3">
<ui:include src="/templates/components/buttons/button-secondary.xhtml">
<ui:param name="value" value="Annuler" />
<ui:param name="icon" value="pi pi-times" />
<ui:param name="onclick" value="PF('dlgNouvelleAdhesion').hide();" />
<ui:param name="outlined" value="true" />
</ui:include>
<ui:include src="/templates/components/buttons/button-primary.xhtml">
<ui:param name="value" value="Créer" />
<ui:param name="icon" value="pi pi-check" />
<ui:param name="action" value="#{adhesionsBean.enregistrerAdhesion}" />
<ui:param name="update" value="@form :formListe" />
<ui:param name="oncomplete" value="PF('dlgNouvelleAdhesion').hide();" />
</ui:include>
</div>
</h:form>
</p:dialog>
<!-- Dialog Détails Adhésion -->
<p:dialog header="Détails de l'Adhésion" widgetVar="dlgDetailsAdhesion" modal="true" width="600" resizable="false">
<h:form id="formDetailsAdhesion">
<div class="ui-fluid">
<div class="grid">
<div class="col-12 md:col-6">
<div class="field">
<label class="font-medium">Référence</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.numeroReference}</p>
</div>
</div>
<div class="col-12 md:col-6">
<div class="field">
<label class="font-medium">Statut</label>
<p:tag value="#{adhesionsBean.adhesionSelectionnee.statutLibelle}"
severity="#{adhesionsBean.adhesionSelectionnee.statutSeverity}" />
</div>
</div>
<div class="col-12">
<div class="field">
<label class="font-medium">Membre</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.nomMembre}</p>
<p class="text-500 text-sm">N° #{adhesionsBean.adhesionSelectionnee.numeroMembre}</p>
</div>
</div>
<div class="col-12">
<div class="field">
<label class="font-medium">Organisation</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.nomOrganisation}</p>
</div>
</div>
<div class="col-12 md:col-6">
<div class="field">
<label class="font-medium">Date de demande</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.dateDemandeFormatee}</p>
</div>
</div>
<div class="col-12 md:col-6">
<div class="field">
<label class="font-medium">Frais d'adhésion</label>
<p class="text-600 font-bold">#{adhesionsBean.adhesionSelectionnee.fraisAdhesionFormatte}</p>
</div>
</div>
<div class="col-12 md:col-6">
<div class="field">
<label class="font-medium">Montant payé</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.montantPayeFormatte}</p>
</div>
</div>
<div class="col-12 md:col-6">
<div class="field">
<label class="font-medium">Montant restant</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.montantRestantFormatte}</p>
</div>
</div>
<div class="col-12" rendered="#{adhesionsBean.adhesionSelectionnee.dateApprobation != null}">
<div class="field">
<label class="font-medium">Date d'approbation</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.dateApprobationFormatee}</p>
</div>
</div>
<div class="col-12" rendered="#{adhesionsBean.adhesionSelectionnee.observations != null}">
<div class="field">
<label class="font-medium">Observations</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.observations}</p>
</div>
</div>
</div>
</div>
</h:form>
</p:dialog>
<!-- Dialog Approbation -->
<p:dialog header="Approuver l'Adhésion" widgetVar="dlgApprobation" modal="true" width="500" resizable="false">
<h:form id="formApprobation">
<div class="ui-fluid">
<div class="field">
<label class="font-medium">Adhésion</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.numeroReference} - #{adhesionsBean.adhesionSelectionnee.nomMembre}</p>
<p class="text-500 text-sm">Frais: #{adhesionsBean.adhesionSelectionnee.fraisAdhesionFormatte}</p>
</div>
<p:message id="msgApprobation" />
</div>
<div class="flex justify-content-end gap-2 mt-3">
<ui:include src="/templates/components/buttons/button-secondary.xhtml">
<ui:param name="value" value="Annuler" />
<ui:param name="icon" value="pi pi-times" />
<ui:param name="onclick" value="PF('dlgApprobation').hide();" />
<ui:param name="outlined" value="true" />
</ui:include>
<ui:include src="/templates/components/buttons/button-success.xhtml">
<ui:param name="value" value="Approuver" />
<ui:param name="icon" value="pi pi-check" />
<ui:param name="action" value="#{adhesionsBean.approuverAdhesion}" />
<ui:param name="update" value="@form :formListe" />
<ui:param name="oncomplete" value="PF('dlgApprobation').hide();" />
</ui:include>
</div>
</h:form>
</p:dialog>
<!-- Dialog Rejet -->
<p:dialog header="Rejeter l'Adhésion" widgetVar="dlgRejet" modal="true" width="500" resizable="false">
<h:form id="formRejet">
<div class="ui-fluid">
<div class="field">
<label class="font-medium">Adhésion</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.numeroReference} - #{adhesionsBean.adhesionSelectionnee.nomMembre}</p>
</div>
<ui:include src="/templates/components/forms/form-field-textarea.xhtml">
<ui:param name="id" value="motifRejet" />
<ui:param name="label" value="Motif du rejet" />
<ui:param name="value" value="#{adhesionsBean.adhesionSelectionnee.motifRejet}" />
<ui:param name="required" value="true" />
<ui:param name="rows" value="4" />
</ui:include>
</div>
<div class="flex justify-content-end gap-2 mt-3">
<ui:include src="/templates/components/buttons/button-secondary.xhtml">
<ui:param name="value" value="Annuler" />
<ui:param name="icon" value="pi pi-times" />
<ui:param name="onclick" value="PF('dlgRejet').hide();" />
<ui:param name="outlined" value="true" />
</ui:include>
<p:commandButton value="Rejeter"
icon="pi pi-times"
styleClass="p-button-danger"
action="#{adhesionsBean.rejeterAdhesion(adhesionsBean.adhesionSelectionnee.motifRejet)}"
update="@form :formListe"
oncomplete="PF('dlgRejet').hide();" />
</div>
</h:form>
</p:dialog>
</ui:define>
</ui:composition>

View File

@@ -0,0 +1,115 @@
<!DOCTYPE html>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
template="/templates/main-template.xhtml">
<ui:param name="page" value="#{adhesionsBean}"/>
<ui:define name="title">Nouvelle Adhésion - UnionFlow</ui:define>
<ui:define name="content">
<!-- En-tête -->
<ui:include src="/templates/components/layout/page-header.xhtml">
<ui:param name="icon" value="pi pi-user-plus text-green-500" />
<ui:param name="title" value="Nouvelle Adhésion" />
<ui:param name="description" value="Création d'une nouvelle demande d'adhésion" />
</ui:include>
<!-- Formulaire de nouvelle adhésion -->
<div class="card">
<h:form id="formNouvelleAdhesion">
<h5>Créer une Nouvelle Adhésion</h5>
<ui:include src="/templates/components/forms/form-section.xhtml">
<ui:param name="title" value="Informations du Membre" />
<ui:define name="content">
<div class="grid">
<div class="col-12 md:col-6">
<div class="field">
<p:outputLabel for="membreId" value="Membre" />
<p:selectOneMenu id="membreId"
value="#{adhesionsBean.nouvelleAdhesion.membreId}"
required="true"
requiredMessage="Veuillez sélectionner un membre"
filter="true"
filterMatchMode="contains"
styleClass="w-full">
<f:selectItems value="#{adhesionsBean.membresSelectItems}" />
</p:selectOneMenu>
<p:message for="membreId" />
</div>
</div>
<div class="col-12 md:col-6">
<div class="field">
<p:outputLabel for="organisationId" value="Organisation" />
<p:selectOneMenu id="organisationId"
value="#{adhesionsBean.nouvelleAdhesion.organisationId}"
required="true"
requiredMessage="Veuillez sélectionner une organisation"
filter="true"
filterMatchMode="contains"
styleClass="w-full">
<f:selectItems value="#{adhesionsBean.associationsSelectItems}" />
</p:selectOneMenu>
<p:message for="organisationId" />
</div>
</div>
</div>
</ui:define>
</ui:include>
<ui:include src="/templates/components/forms/form-section.xhtml">
<ui:param name="title" value="Frais d'Adhésion" />
<ui:define name="content">
<div class="grid">
<div class="col-12 md:col-6">
<div class="field">
<p:outputLabel for="fraisAdhesion" value="Frais d'adhésion (FCFA)" />
<p:inputNumber id="fraisAdhesion"
value="#{adhesionsBean.nouvelleAdhesion.fraisAdhesion}"
symbol=""
minValue="0"
styleClass="w-full" />
</div>
</div>
</div>
</ui:define>
</ui:include>
<ui:include src="/templates/components/forms/form-section.xhtml">
<ui:param name="title" value="Observations" />
<ui:define name="content">
<div class="grid">
<div class="col-12">
<ui:include src="/templates/components/forms/form-field-textarea.xhtml">
<ui:param name="id" value="observations" />
<ui:param name="label" value="Observations (optionnel)" />
<ui:param name="value" value="#{adhesionsBean.nouvelleAdhesion.observations}" />
<ui:param name="rows" value="4" />
</ui:include>
</div>
</div>
</ui:define>
</ui:include>
<div class="flex justify-content-end gap-2 mt-3">
<ui:include src="/templates/components/buttons/button-secondary.xhtml">
<ui:param name="value" value="Annuler" />
<ui:param name="icon" value="pi pi-times" />
<ui:param name="action" value="#{navigationBean.goToDashboard}" />
<ui:param name="outlined" value="true" />
</ui:include>
<ui:include src="/templates/components/buttons/button-primary.xhtml">
<ui:param name="value" value="Créer l'adhésion" />
<ui:param name="icon" value="pi pi-check" />
<ui:param name="action" value="#{adhesionsBean.enregistrerAdhesion}" />
<ui:param name="update" value="@form" />
</ui:include>
</div>
</h:form>
</div>
</ui:define>
</ui:composition>

View File

@@ -0,0 +1,261 @@
<!DOCTYPE html>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
template="/templates/main-template.xhtml">
<ui:param name="page" value="#{adhesionsBean}"/>
<ui:define name="title">Paiement des Adhésions - UnionFlow</ui:define>
<ui:define name="content">
<!-- En-tête -->
<ui:include src="/templates/components/layout/page-header.xhtml">
<ui:param name="icon" value="pi pi-credit-card text-green-500" />
<ui:param name="title" value="Paiement des Adhésions" />
<ui:param name="description" value="Enregistrement et suivi des paiements d'adhésion" />
<ui:define name="actions">
<h:form id="formActionsPaiement">
<div class="flex gap-2">
<ui:include src="/templates/components/buttons/button-icon.xhtml">
<ui:param name="icon" value="pi pi-refresh" />
<ui:param name="action" value="#{adhesionsBean.actualiser}" />
<ui:param name="update" value="@form" />
<ui:param name="title" value="Actualiser" />
<ui:param name="rounded" value="true" />
<ui:param name="text" value="false" />
<ui:param name="styleClass" value="ui-button-outlined ui-button-secondary" />
</ui:include>
</div>
</h:form>
</ui:define>
</ui:include>
<!-- Statistiques de paiement -->
<div class="grid">
<ui:include src="/templates/components/cards/stat-card.xhtml">
<ui:param name="value" value="#{adhesionsBean.statistiques.totalCollecteFormatte}" />
<ui:param name="label" value="Total Collecté" />
<ui:param name="icon" value="pi pi-wallet" />
<ui:param name="bgColor" value="green" />
</ui:include>
<ui:include src="/templates/components/cards/stat-card.xhtml">
<ui:param name="value" value="#{adhesionsBean.statistiques.adhesionsPayees}" />
<ui:param name="label" value="Adhésions Payées" />
<ui:param name="icon" value="pi pi-check-circle" />
<ui:param name="bgColor" value="blue" />
</ui:include>
<ui:include src="/templates/components/cards/stat-card.xhtml">
<ui:param name="value" value="#{adhesionsBean.statistiques.tauxPaiementInt}%" />
<ui:param name="label" value="Taux de Paiement" />
<ui:param name="icon" value="pi pi-percentage" />
<ui:param name="bgColor" value="orange" />
</ui:include>
<ui:include src="/templates/components/cards/stat-card.xhtml">
<ui:param name="value" value="#{adhesionsBean.statistiques.adhesionsApprouvees - adhesionsBean.statistiques.adhesionsPayees}" />
<ui:param name="label" value="En Attente de Paiement" />
<ui:param name="icon" value="pi pi-clock" />
<ui:param name="bgColor" value="purple" />
</ui:include>
</div>
<!-- Adhésions approuvées en attente de paiement -->
<div class="card">
<h:form id="formPaiements">
<h5>Adhésions Approuvées en Attente de Paiement</h5>
<p:dataTable id="dtPaiements"
value="#{adhesionsBean.adhesionsFiltrees}"
var="adhesion"
filteredValue="#{adhesionsBean.adhesionsFiltrees}"
paginator="true"
rows="20"
emptyMessage="Aucune adhésion en attente de paiement"
selection="#{adhesionsBean.adhesionSelectionnee}"
selectionMode="single">
<f:facet name="header">
<div class="flex align-items-center justify-content-between">
<span>Adhésions à payer</span>
<p:selectOneMenu value="#{adhesionsBean.filtres.statut}" styleClass="w-12rem">
<f:selectItem itemLabel="Tous" itemValue="" />
<f:selectItem itemLabel="Approuvée" itemValue="APPROUVEE" />
<f:selectItem itemLabel="En paiement" itemValue="EN_PAIEMENT" />
<p:ajax update="dtPaiements" />
</p:selectOneMenu>
</div>
</f:facet>
<p:column headerText="Membre" sortBy="#{adhesion.nomMembre}">
<div>
<div class="font-medium">#{adhesion.nomMembre}</div>
<div class="text-600 text-sm">#{adhesion.numeroMembre}</div>
</div>
</p:column>
<p:column headerText="Organisation" sortBy="#{adhesion.nomOrganisation}">
<h:outputText value="#{adhesion.nomOrganisation}" />
</p:column>
<p:column headerText="Frais" sortBy="#{adhesion.fraisAdhesion}" style="width:120px">
<h:outputText value="#{adhesion.fraisAdhesionFormatte}" styleClass="font-bold" />
</p:column>
<p:column headerText="Montant Payé" sortBy="#{adhesion.montantPaye}" style="width:120px">
<h:outputText value="#{adhesion.montantPayeFormatte}" />
</p:column>
<p:column headerText="Restant" style="width:120px">
<h:outputText value="#{adhesion.montantRestantFormatte}"
styleClass="#{adhesion.montantRestant.compareTo(java.math.BigDecimal.ZERO) > 0 ? 'text-orange-500 font-bold' : 'text-green-500'}" />
</p:column>
<p:column headerText="Date Approbation" sortBy="#{adhesion.dateApprobation}" style="width:150px">
<h:outputText value="#{adhesion.dateApprobationFormatee}" />
</p:column>
<p:column headerText="Actions" style="width:200px">
<div class="flex gap-1">
<p:commandButton value="Payer"
icon="pi pi-check"
styleClass="p-button-success p-button-sm"
action="#{adhesionsBean.selectionnerAdhesion(adhesion)}"
update=":formPaiement"
oncomplete="PF('dlgPaiement').show();" />
<p:commandButton value="Partiel"
icon="pi pi-minus"
styleClass="p-button-info p-button-sm"
action="#{adhesionsBean.selectionnerAdhesion(adhesion)}"
update=":formPaiementPartiel"
oncomplete="PF('dlgPaiementPartiel').show();" />
</div>
</p:column>
</p:dataTable>
</h:form>
</div>
<!-- Dialog Paiement Complet -->
<p:dialog header="Enregistrer un Paiement" widgetVar="dlgPaiement" modal="true" width="500" resizable="false">
<h:form id="formPaiement">
<div class="ui-fluid">
<div class="field">
<label class="font-medium">Adhésion</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.numeroReference} - #{adhesionsBean.adhesionSelectionnee.nomMembre}</p>
<p class="text-500 text-sm">Frais d'adhésion: #{adhesionsBean.adhesionSelectionnee.fraisAdhesionFormatte}</p>
</div>
<ui:include src="/templates/components/forms/form-field-select.xhtml">
<ui:param name="id" value="methodePaiement" />
<ui:param name="label" value="Méthode de paiement" />
<ui:param name="value" value="#{adhesionsBean.adhesionSelectionnee.methodePaiement}" />
<ui:param name="required" value="true" />
<ui:define name="items">
<f:selectItem itemLabel="Wave Money" itemValue="WAVE_MONEY" />
<f:selectItem itemLabel="Espèces" itemValue="ESPECES" />
<f:selectItem itemLabel="Virement bancaire" itemValue="VIREMENT" />
<f:selectItem itemLabel="Chèque" itemValue="CHEQUE" />
<f:selectItem itemLabel="Orange Money" itemValue="ORANGE_MONEY" />
<f:selectItem itemLabel="Free Money" itemValue="FREE_MONEY" />
<f:selectItem itemLabel="Carte bancaire" itemValue="CARTE_BANCAIRE" />
</ui:define>
</ui:include>
<ui:include src="/templates/components/forms/form-field-text.xhtml">
<ui:param name="id" value="referencePaiement" />
<ui:param name="label" value="Référence de paiement" />
<ui:param name="value" value="#{adhesionsBean.adhesionSelectionnee.referencePaiement}" />
<ui:param name="placeholder" value="Ex: WAVE-123456789" />
</ui:include>
<ui:include src="/templates/components/forms/form-field-textarea.xhtml">
<ui:param name="id" value="observationsPaiement" />
<ui:param name="label" value="Observations" />
<ui:param name="value" value="#{adhesionsBean.adhesionSelectionnee.observations}" />
<ui:param name="rows" value="3" />
</ui:include>
</div>
<div class="flex justify-content-end gap-2 mt-3">
<ui:include src="/templates/components/buttons/button-secondary.xhtml">
<ui:param name="value" value="Annuler" />
<ui:param name="icon" value="pi pi-times" />
<ui:param name="onclick" value="PF('dlgPaiement').hide();" />
<ui:param name="outlined" value="true" />
</ui:include>
<ui:include src="/templates/components/buttons/button-success.xhtml">
<ui:param name="value" value="Enregistrer" />
<ui:param name="icon" value="pi pi-check" />
<ui:param name="action" value="#{adhesionsBean.enregistrerPaiement(adhesionsBean.adhesionSelectionnee.fraisAdhesion, adhesionsBean.adhesionSelectionnee.methodePaiement, adhesionsBean.adhesionSelectionnee.referencePaiement)}" />
<ui:param name="update" value="@form :formPaiements" />
<ui:param name="oncomplete" value="PF('dlgPaiement').hide();" />
</ui:include>
</div>
</h:form>
</p:dialog>
<!-- Dialog Paiement Partiel -->
<p:dialog header="Enregistrer un Paiement Partiel" widgetVar="dlgPaiementPartiel" modal="true" width="500" resizable="false">
<h:form id="formPaiementPartiel">
<div class="ui-fluid">
<div class="field">
<label class="font-medium">Adhésion</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.numeroReference} - #{adhesionsBean.adhesionSelectionnee.nomMembre}</p>
<p class="text-500 text-sm">Frais d'adhésion: #{adhesionsBean.adhesionSelectionnee.fraisAdhesionFormatte}</p>
<p class="text-500 text-sm">Montant restant: #{adhesionsBean.adhesionSelectionnee.montantRestantFormatte}</p>
</div>
<div class="field">
<p:outputLabel for="montantPaye" value="Montant à payer (FCFA)" />
<p:inputNumber id="montantPaye"
value="#{adhesionsBean.adhesionSelectionnee.montantPaye}"
symbol=""
minValue="0"
maxValue="#{adhesionsBean.adhesionSelectionnee.fraisAdhesion}"
styleClass="w-full" />
</div>
<ui:include src="/templates/components/forms/form-field-select.xhtml">
<ui:param name="id" value="methodePaiementPartiel" />
<ui:param name="label" value="Méthode de paiement" />
<ui:param name="value" value="#{adhesionsBean.adhesionSelectionnee.methodePaiement}" />
<ui:param name="required" value="true" />
<ui:define name="items">
<f:selectItem itemLabel="Wave Money" itemValue="WAVE_MONEY" />
<f:selectItem itemLabel="Espèces" itemValue="ESPECES" />
<f:selectItem itemLabel="Virement bancaire" itemValue="VIREMENT" />
<f:selectItem itemLabel="Chèque" itemValue="CHEQUE" />
</ui:define>
</ui:include>
<ui:include src="/templates/components/forms/form-field-text.xhtml">
<ui:param name="id" value="referencePaiementPartiel" />
<ui:param name="label" value="Référence de paiement" />
<ui:param name="value" value="#{adhesionsBean.adhesionSelectionnee.referencePaiement}" />
</ui:include>
</div>
<div class="flex justify-content-end gap-2 mt-3">
<ui:include src="/templates/components/buttons/button-secondary.xhtml">
<ui:param name="value" value="Annuler" />
<ui:param name="icon" value="pi pi-times" />
<ui:param name="onclick" value="PF('dlgPaiementPartiel').hide();" />
<ui:param name="outlined" value="true" />
</ui:include>
<ui:include src="/templates/components/buttons/button-success.xhtml">
<ui:param name="value" value="Enregistrer" />
<ui:param name="icon" value="pi pi-check" />
<ui:param name="action" value="#{adhesionsBean.enregistrerPaiement(adhesionsBean.adhesionSelectionnee.montantPaye, adhesionsBean.adhesionSelectionnee.methodePaiement, adhesionsBean.adhesionSelectionnee.referencePaiement)}" />
<ui:param name="update" value="@form :formPaiements" />
<ui:param name="oncomplete" value="PF('dlgPaiementPartiel').hide();" />
</ui:include>
</div>
</h:form>
</p:dialog>
</ui:define>
</ui:composition>

View File

@@ -0,0 +1,257 @@
<!DOCTYPE html>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
template="/templates/main-template.xhtml">
<ui:param name="page" value="#{adhesionsBean}"/>
<ui:define name="title">Adhésions en Attente - UnionFlow</ui:define>
<ui:define name="content">
<!-- En-tête -->
<ui:include src="/templates/components/layout/page-header.xhtml">
<ui:param name="icon" value="pi pi-clock text-orange-500" />
<ui:param name="title" value="Adhésions en Attente" />
<ui:param name="description" value="Validation et traitement des demandes d'adhésion en attente" />
<ui:define name="actions">
<h:form id="formActionsPending">
<div class="flex gap-2">
<ui:include src="/templates/components/buttons/button-icon.xhtml">
<ui:param name="icon" value="pi pi-refresh" />
<ui:param name="action" value="#{adhesionsBean.chargerAdhesionsEnAttente}" />
<ui:param name="update" value="@form" />
<ui:param name="title" value="Actualiser" />
<ui:param name="rounded" value="true" />
<ui:param name="text" value="false" />
<ui:param name="styleClass" value="ui-button-outlined ui-button-secondary" />
</ui:include>
</div>
</h:form>
</ui:define>
</ui:include>
<!-- Statistiques -->
<div class="grid">
<ui:include src="/templates/components/cards/stat-card.xhtml">
<ui:param name="value" value="#{adhesionsBean.statistiques.adhesionsEnAttente}" />
<ui:param name="label" value="En Attente" />
<ui:param name="icon" value="pi pi-clock" />
<ui:param name="bgColor" value="orange" />
</ui:include>
<ui:include src="/templates/components/cards/stat-card.xhtml">
<ui:param name="value" value="#{adhesionsBean.statistiques.adhesionsApprouvees}" />
<ui:param name="label" value="Approuvées" />
<ui:param name="icon" value="pi pi-check-circle" />
<ui:param name="bgColor" value="green" />
</ui:include>
<ui:include src="/templates/components/cards/stat-card.xhtml">
<ui:param name="value" value="#{adhesionsBean.statistiques.tauxApprobationInt}%" />
<ui:param name="label" value="Taux d'Approbation" />
<ui:param name="icon" value="pi pi-percentage" />
<ui:param name="bgColor" value="blue" />
</ui:include>
<ui:include src="/templates/components/cards/stat-card.xhtml">
<ui:param name="value" value="#{adhesionsBean.statistiques.totalCollecteFormatte}" />
<ui:param name="label" value="Total Collecté" />
<ui:param name="icon" value="pi pi-wallet" />
<ui:param name="bgColor" value="purple" />
</ui:include>
</div>
<!-- Liste des adhésions en attente -->
<div class="card">
<h:form id="formPending">
<h5>Adhésions en Attente de Validation</h5>
<p:dataTable id="dtPending"
value="#{adhesionsBean.adhesionsFiltrees}"
var="adhesion"
paginator="true"
rows="20"
emptyMessage="Aucune adhésion en attente">
<f:facet name="header">
<div class="flex align-items-center justify-content-between">
<span>Demandes en attente d'approbation</span>
</div>
</f:facet>
<p:column headerText="Référence" sortBy="#{adhesion.numeroReference}" style="width:150px">
<h:outputText value="#{adhesion.numeroReference}" />
</p:column>
<p:column headerText="Membre" sortBy="#{adhesion.nomMembre}">
<div>
<div class="font-medium">#{adhesion.nomMembre}</div>
<div class="text-600 text-sm">#{adhesion.numeroMembre}</div>
<div class="text-500 text-xs">#{adhesion.emailMembre}</div>
</div>
</p:column>
<p:column headerText="Organisation" sortBy="#{adhesion.nomOrganisation}">
<h:outputText value="#{adhesion.nomOrganisation}" />
</p:column>
<p:column headerText="Date Demande" sortBy="#{adhesion.dateDemande}" style="width:120px">
<h:outputText value="#{adhesion.dateDemandeFormatee}" />
</p:column>
<p:column headerText="Jours" style="width:80px">
<h:outputText value="#{adhesion.joursDepuisDemande} jour(s)" />
</p:column>
<p:column headerText="Frais" sortBy="#{adhesion.fraisAdhesion}" style="width:120px">
<h:outputText value="#{adhesion.fraisAdhesionFormatte}" styleClass="font-bold" />
</p:column>
<p:column headerText="Actions" style="width:200px">
<div class="flex gap-1">
<p:commandButton icon="pi pi-check"
title="Approuver"
styleClass="p-button-rounded p-button-text p-button-success"
action="#{adhesionsBean.selectionnerAdhesion(adhesion)}"
update=":formApprobation"
oncomplete="PF('dlgApprobation').show();" />
<p:commandButton icon="pi pi-times"
title="Rejeter"
styleClass="p-button-rounded p-button-text p-button-danger"
action="#{adhesionsBean.selectionnerAdhesion(adhesion)}"
update=":formRejet"
oncomplete="PF('dlgRejet').show();" />
<p:commandButton icon="pi pi-eye"
title="Voir les détails"
styleClass="p-button-rounded p-button-text p-button-info"
action="#{adhesionsBean.selectionnerAdhesion(adhesion)}"
update=":formDetailsAdhesion"
oncomplete="PF('dlgDetailsAdhesion').show();" />
</div>
</p:column>
</p:dataTable>
</h:form>
</div>
<!-- Dialog Approbation -->
<p:dialog header="Approuver l'Adhésion" widgetVar="dlgApprobation" modal="true" width="500" resizable="false">
<h:form id="formApprobation">
<div class="ui-fluid">
<div class="field">
<label class="font-medium">Adhésion</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.numeroReference} - #{adhesionsBean.adhesionSelectionnee.nomMembre}</p>
<p class="text-500 text-sm">Frais: #{adhesionsBean.adhesionSelectionnee.fraisAdhesionFormatte}</p>
</div>
</div>
<div class="flex justify-content-end gap-2 mt-3">
<ui:include src="/templates/components/buttons/button-secondary.xhtml">
<ui:param name="value" value="Annuler" />
<ui:param name="icon" value="pi pi-times" />
<ui:param name="onclick" value="PF('dlgApprobation').hide();" />
<ui:param name="outlined" value="true" />
</ui:include>
<ui:include src="/templates/components/buttons/button-success.xhtml">
<ui:param name="value" value="Approuver" />
<ui:param name="icon" value="pi pi-check" />
<ui:param name="action" value="#{adhesionsBean.approuverAdhesion}" />
<ui:param name="update" value="@form :formPending" />
<ui:param name="oncomplete" value="PF('dlgApprobation').hide();" />
</ui:include>
</div>
</h:form>
</p:dialog>
<!-- Dialog Rejet -->
<p:dialog header="Rejeter l'Adhésion" widgetVar="dlgRejet" modal="true" width="500" resizable="false">
<h:form id="formRejet">
<div class="ui-fluid">
<div class="field">
<label class="font-medium">Adhésion</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.numeroReference} - #{adhesionsBean.adhesionSelectionnee.nomMembre}</p>
</div>
<ui:include src="/templates/components/forms/form-field-textarea.xhtml">
<ui:param name="id" value="motifRejet" />
<ui:param name="label" value="Motif du rejet" />
<ui:param name="value" value="#{adhesionsBean.adhesionSelectionnee.motifRejet}" />
<ui:param name="required" value="true" />
<ui:param name="rows" value="4" />
</ui:include>
</div>
<div class="flex justify-content-end gap-2 mt-3">
<ui:include src="/templates/components/buttons/button-secondary.xhtml">
<ui:param name="value" value="Annuler" />
<ui:param name="icon" value="pi pi-times" />
<ui:param name="onclick" value="PF('dlgRejet').hide();" />
<ui:param name="outlined" value="true" />
</ui:include>
<p:commandButton value="Rejeter"
icon="pi pi-times"
styleClass="p-button-danger"
action="#{adhesionsBean.rejeterAdhesion(adhesionsBean.adhesionSelectionnee.motifRejet)}"
update="@form :formPending"
oncomplete="PF('dlgRejet').hide();" />
</div>
</h:form>
</p:dialog>
<!-- Dialog Détails Adhésion -->
<p:dialog header="Détails de l'Adhésion" widgetVar="dlgDetailsAdhesion" modal="true" width="600" resizable="false">
<h:form id="formDetailsAdhesion">
<div class="ui-fluid">
<div class="grid">
<div class="col-12 md:col-6">
<div class="field">
<label class="font-medium">Référence</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.numeroReference}</p>
</div>
</div>
<div class="col-12 md:col-6">
<div class="field">
<label class="font-medium">Statut</label>
<p:tag value="#{adhesionsBean.adhesionSelectionnee.statutLibelle}"
severity="#{adhesionsBean.adhesionSelectionnee.statutSeverity}" />
</div>
</div>
<div class="col-12">
<div class="field">
<label class="font-medium">Membre</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.nomMembre}</p>
<p class="text-500 text-sm">N° #{adhesionsBean.adhesionSelectionnee.numeroMembre} - #{adhesionsBean.adhesionSelectionnee.emailMembre}</p>
</div>
</div>
<div class="col-12">
<div class="field">
<label class="font-medium">Organisation</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.nomOrganisation}</p>
</div>
</div>
<div class="col-12 md:col-6">
<div class="field">
<label class="font-medium">Date de demande</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.dateDemandeFormatee}</p>
</div>
</div>
<div class="col-12 md:col-6">
<div class="field">
<label class="font-medium">Frais d'adhésion</label>
<p class="text-600 font-bold">#{adhesionsBean.adhesionSelectionnee.fraisAdhesionFormatte}</p>
</div>
</div>
<div class="col-12" rendered="#{adhesionsBean.adhesionSelectionnee.observations != null}">
<div class="field">
<label class="font-medium">Observations</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.observations}</p>
</div>
</div>
</div>
</div>
</h:form>
</p:dialog>
</ui:define>
</ui:composition>

View File

@@ -0,0 +1,167 @@
<!DOCTYPE html>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
template="/templates/main-template.xhtml">
<ui:param name="page" value="#{adhesionsBean}"/>
<ui:define name="title">Renouvellement d'Adhésion - UnionFlow</ui:define>
<ui:define name="content">
<!-- En-tête -->
<ui:include src="/templates/components/layout/page-header.xhtml">
<ui:param name="icon" value="pi pi-refresh text-blue-500" />
<ui:param name="title" value="Renouvellement d'Adhésion" />
<ui:param name="description" value="Gestion des renouvellements d'adhésion" />
<ui:define name="actions">
<h:form id="formActionsRenouvellement">
<div class="flex gap-2">
<ui:include src="/templates/components/buttons/button-icon.xhtml">
<ui:param name="icon" value="pi pi-refresh" />
<ui:param name="action" value="#{adhesionsBean.actualiser}" />
<ui:param name="update" value="@form" />
<ui:param name="title" value="Actualiser" />
<ui:param name="rounded" value="true" />
<ui:param name="text" value="false" />
<ui:param name="styleClass" value="ui-button-outlined ui-button-secondary" />
</ui:include>
</div>
</h:form>
</ui:define>
</ui:include>
<!-- Statistiques -->
<div class="grid">
<ui:include src="/templates/components/cards/stat-card.xhtml">
<ui:param name="value" value="#{adhesionsBean.statistiques.adhesionsPayees}" />
<ui:param name="label" value="Adhésions Actives" />
<ui:param name="icon" value="pi pi-check-circle" />
<ui:param name="bgColor" value="green" />
</ui:include>
<ui:include src="/templates/components/cards/stat-card.xhtml">
<ui:param name="value" value="0" />
<ui:param name="label" value="À Renouveler (ce mois)" />
<ui:param name="icon" value="pi pi-clock" />
<ui:param name="bgColor" value="orange" />
</ui:include>
<ui:include src="/templates/components/cards/stat-card.xhtml">
<ui:param name="value" value="0" />
<ui:param name="label" value="Renouvelées (ce mois)" />
<ui:param name="icon" value="pi pi-refresh" />
<ui:param name="bgColor" value="blue" />
</ui:include>
<ui:include src="/templates/components/cards/stat-card.xhtml">
<ui:param name="value" value="#{adhesionsBean.statistiques.totalAdhesions}" />
<ui:param name="label" value="Total Adhésions" />
<ui:param name="icon" value="pi pi-users" />
<ui:param name="bgColor" value="purple" />
</ui:include>
</div>
<!-- Liste des adhésions à renouveler -->
<div class="card">
<h:form id="formRenouvellement">
<h5>Adhésions à Renouveler</h5>
<p:dataTable id="dtRenouvellement"
value="#{adhesionsBean.adhesionsFiltrees}"
var="adhesion"
paginator="true"
rows="20"
emptyMessage="Aucune adhésion à renouveler">
<f:facet name="header">
<div class="flex align-items-center justify-content-between">
<span>Adhésions nécessitant un renouvellement</span>
</div>
</f:facet>
<p:column headerText="Membre" sortBy="#{adhesion.nomMembre}">
<div>
<div class="font-medium">#{adhesion.nomMembre}</div>
<div class="text-600 text-sm">#{adhesion.numeroMembre}</div>
</div>
</p:column>
<p:column headerText="Organisation" sortBy="#{adhesion.nomOrganisation}">
<h:outputText value="#{adhesion.nomOrganisation}" />
</p:column>
<p:column headerText="Date Approbation" sortBy="#{adhesion.dateApprobation}" style="width:150px">
<h:outputText value="#{adhesion.dateApprobationFormatee}" />
</p:column>
<p:column headerText="Frais" sortBy="#{adhesion.fraisAdhesion}" style="width:120px">
<h:outputText value="#{adhesion.fraisAdhesionFormatte}" styleClass="font-bold" />
</p:column>
<p:column headerText="Statut" style="width:150px">
<p:tag value="#{adhesion.statutLibelle}"
severity="#{adhesion.statutSeverity}"
icon="#{adhesion.statutIcon}" />
</p:column>
<p:column headerText="Actions" style="width:150px">
<ui:include src="/templates/components/buttons/button-primary.xhtml">
<ui:param name="value" value="Renouveler" />
<ui:param name="icon" value="pi pi-refresh" />
<ui:param name="onclick" value="PF('dlgRenouvellement').show(); adhesionsBean.selectionnerAdhesion(adhesion);" />
<ui:param name="styleClass" value="p-button-sm" />
</ui:include>
</p:column>
</p:dataTable>
</h:form>
</div>
<!-- Dialog Renouvellement -->
<p:dialog header="Renouveler l'Adhésion" widgetVar="dlgRenouvellement" modal="true" width="500" resizable="false">
<h:form id="formRenouvellement">
<div class="ui-fluid">
<div class="field">
<label class="font-medium">Adhésion actuelle</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.numeroReference} - #{adhesionsBean.adhesionSelectionnee.nomMembre}</p>
<p class="text-500 text-sm">Frais actuel: #{adhesionsBean.adhesionSelectionnee.fraisAdhesionFormatte}</p>
</div>
<div class="field">
<p:outputLabel for="nouveauxFrais" value="Nouveaux frais d'adhésion (FCFA)" />
<p:inputNumber id="nouveauxFrais"
value="#{adhesionsBean.nouvelleAdhesion.fraisAdhesion}"
symbol=""
minValue="0"
styleClass="w-full" />
</div>
<ui:include src="/templates/components/forms/form-field-textarea.xhtml">
<ui:param name="id" value="observationsRenouvellement" />
<ui:param name="label" value="Observations" />
<ui:param name="value" value="#{adhesionsBean.nouvelleAdhesion.observations}" />
<ui:param name="rows" value="3" />
</ui:include>
</div>
<div class="flex justify-content-end gap-2 mt-3">
<ui:include src="/templates/components/buttons/button-secondary.xhtml">
<ui:param name="value" value="Annuler" />
<ui:param name="icon" value="pi pi-times" />
<ui:param name="onclick" value="PF('dlgRenouvellement').hide();" />
<ui:param name="outlined" value="true" />
</ui:include>
<ui:include src="/templates/components/buttons/button-primary.xhtml">
<ui:param name="value" value="Créer le renouvellement" />
<ui:param name="icon" value="pi pi-check" />
<ui:param name="action" value="#{adhesionsBean.enregistrerAdhesion}" />
<ui:param name="update" value="@form :formRenouvellement" />
<ui:param name="oncomplete" value="PF('dlgRenouvellement').hide();" />
</ui:include>
</div>
</h:form>
</p:dialog>
</ui:define>
</ui:composition>

View File

@@ -0,0 +1,254 @@
<!DOCTYPE html>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
template="/templates/main-template.xhtml">
<ui:param name="page" value="#{adhesionsBean}"/>
<ui:define name="title">Validation des Adhésions - UnionFlow</ui:define>
<ui:define name="content">
<!-- En-tête -->
<ui:include src="/templates/components/layout/page-header.xhtml">
<ui:param name="icon" value="pi pi-check-circle text-green-500" />
<ui:param name="title" value="Validation des Adhésions" />
<ui:param name="description" value="Approbation et rejet des demandes d'adhésion" />
<ui:define name="actions">
<h:form id="formActionsValidation">
<div class="flex gap-2">
<ui:include src="/templates/components/buttons/button-icon.xhtml">
<ui:param name="icon" value="pi pi-refresh" />
<ui:param name="action" value="#{adhesionsBean.chargerAdhesionsEnAttente}" />
<ui:param name="update" value="@form" />
<ui:param name="title" value="Actualiser" />
<ui:param name="rounded" value="true" />
<ui:param name="text" value="false" />
<ui:param name="styleClass" value="ui-button-outlined ui-button-secondary" />
</ui:include>
</div>
</h:form>
</ui:define>
</ui:include>
<!-- Statistiques -->
<div class="grid">
<ui:include src="/templates/components/cards/stat-card.xhtml">
<ui:param name="value" value="#{adhesionsBean.statistiques.adhesionsEnAttente}" />
<ui:param name="label" value="En Attente" />
<ui:param name="icon" value="pi pi-clock" />
<ui:param name="bgColor" value="orange" />
</ui:include>
<ui:include src="/templates/components/cards/stat-card.xhtml">
<ui:param name="value" value="#{adhesionsBean.statistiques.adhesionsApprouvees}" />
<ui:param name="label" value="Approuvées" />
<ui:param name="icon" value="pi pi-check-circle" />
<ui:param name="bgColor" value="green" />
</ui:include>
<ui:include src="/templates/components/cards/stat-card.xhtml">
<ui:param name="value" value="#{adhesionsBean.statistiques.tauxApprobationInt}%" />
<ui:param name="label" value="Taux d'Approbation" />
<ui:param name="icon" value="pi pi-percentage" />
<ui:param name="bgColor" value="blue" />
</ui:include>
<ui:include src="/templates/components/cards/stat-card.xhtml">
<ui:param name="value" value="#{adhesionsBean.statistiques.totalAdhesions}" />
<ui:param name="label" value="Total" />
<ui:param name="icon" value="pi pi-users" />
<ui:param name="bgColor" value="purple" />
</ui:include>
</div>
<!-- Liste des adhésions en attente -->
<div class="card">
<h:form id="formValidation">
<h5>Adhésions en Attente de Validation</h5>
<p:dataTable id="dtValidation"
value="#{adhesionsBean.adhesionsFiltrees}"
var="adhesion"
paginator="true"
rows="20"
emptyMessage="Aucune adhésion en attente">
<f:facet name="header">
<div class="flex align-items-center justify-content-between">
<span>Demandes nécessitant une validation</span>
</div>
</f:facet>
<p:column headerText="Référence" sortBy="#{adhesion.numeroReference}" style="width:150px">
<h:outputText value="#{adhesion.numeroReference}" />
</p:column>
<p:column headerText="Membre" sortBy="#{adhesion.nomMembre}">
<div>
<div class="font-medium">#{adhesion.nomMembre}</div>
<div class="text-600 text-sm">#{adhesion.numeroMembre}</div>
</div>
</p:column>
<p:column headerText="Organisation" sortBy="#{adhesion.nomOrganisation}">
<h:outputText value="#{adhesion.nomOrganisation}" />
</p:column>
<p:column headerText="Date Demande" sortBy="#{adhesion.dateDemande}" style="width:120px">
<h:outputText value="#{adhesion.dateDemandeFormatee}" />
</p:column>
<p:column headerText="Frais" sortBy="#{adhesion.fraisAdhesion}" style="width:120px">
<h:outputText value="#{adhesion.fraisAdhesionFormatte}" styleClass="font-bold" />
</p:column>
<p:column headerText="Actions" style="width:250px">
<div class="flex gap-1">
<ui:include src="/templates/components/buttons/button-success.xhtml">
<ui:param name="value" value="Approuver" />
<ui:param name="icon" value="pi pi-check" />
<ui:param name="action" value="#{adhesionsBean.selectionnerAdhesion(adhesion)}" />
<ui:param name="update" value=":formApprobation" />
<ui:param name="oncomplete" value="PF('dlgApprobation').show();" />
<ui:param name="styleClass" value="p-button-sm" />
</ui:include>
<p:commandButton value="Rejeter"
icon="pi pi-times"
styleClass="p-button-danger p-button-sm"
action="#{adhesionsBean.selectionnerAdhesion(adhesion)}"
update=":formRejet"
oncomplete="PF('dlgRejet').show();" />
<p:commandButton icon="pi pi-eye"
title="Voir les détails"
styleClass="p-button-rounded p-button-text p-button-info p-button-sm"
action="#{adhesionsBean.selectionnerAdhesion(adhesion)}"
update=":formDetailsAdhesion"
oncomplete="PF('dlgDetailsAdhesion').show();" />
</div>
</p:column>
</p:dataTable>
</h:form>
</div>
<!-- Dialog Approbation -->
<p:dialog header="Approuver l'Adhésion" widgetVar="dlgApprobation" modal="true" width="500" resizable="false">
<h:form id="formApprobation">
<div class="ui-fluid">
<div class="field">
<label class="font-medium">Adhésion</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.numeroReference} - #{adhesionsBean.adhesionSelectionnee.nomMembre}</p>
<p class="text-500 text-sm">Frais: #{adhesionsBean.adhesionSelectionnee.fraisAdhesionFormatte}</p>
</div>
</div>
<div class="flex justify-content-end gap-2 mt-3">
<ui:include src="/templates/components/buttons/button-secondary.xhtml">
<ui:param name="value" value="Annuler" />
<ui:param name="icon" value="pi pi-times" />
<ui:param name="onclick" value="PF('dlgApprobation').hide();" />
<ui:param name="outlined" value="true" />
</ui:include>
<ui:include src="/templates/components/buttons/button-success.xhtml">
<ui:param name="value" value="Approuver" />
<ui:param name="icon" value="pi pi-check" />
<ui:param name="action" value="#{adhesionsBean.approuverAdhesion}" />
<ui:param name="update" value="@form :formValidation" />
<ui:param name="oncomplete" value="PF('dlgApprobation').hide();" />
</ui:include>
</div>
</h:form>
</p:dialog>
<!-- Dialog Rejet -->
<p:dialog header="Rejeter l'Adhésion" widgetVar="dlgRejet" modal="true" width="500" resizable="false">
<h:form id="formRejet">
<div class="ui-fluid">
<div class="field">
<label class="font-medium">Adhésion</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.numeroReference} - #{adhesionsBean.adhesionSelectionnee.nomMembre}</p>
</div>
<ui:include src="/templates/components/forms/form-field-textarea.xhtml">
<ui:param name="id" value="motifRejet" />
<ui:param name="label" value="Motif du rejet" />
<ui:param name="value" value="#{adhesionsBean.adhesionSelectionnee.motifRejet}" />
<ui:param name="required" value="true" />
<ui:param name="rows" value="4" />
</ui:include>
</div>
<div class="flex justify-content-end gap-2 mt-3">
<ui:include src="/templates/components/buttons/button-secondary.xhtml">
<ui:param name="value" value="Annuler" />
<ui:param name="icon" value="pi pi-times" />
<ui:param name="onclick" value="PF('dlgRejet').hide();" />
<ui:param name="outlined" value="true" />
</ui:include>
<p:commandButton value="Rejeter"
icon="pi pi-times"
styleClass="p-button-danger"
action="#{adhesionsBean.rejeterAdhesion(adhesionsBean.adhesionSelectionnee.motifRejet)}"
update="@form :formValidation"
oncomplete="PF('dlgRejet').hide();" />
</div>
</h:form>
</p:dialog>
<!-- Dialog Détails Adhésion -->
<p:dialog header="Détails de l'Adhésion" widgetVar="dlgDetailsAdhesion" modal="true" width="600" resizable="false">
<h:form id="formDetailsAdhesion">
<div class="ui-fluid">
<div class="grid">
<div class="col-12 md:col-6">
<div class="field">
<label class="font-medium">Référence</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.numeroReference}</p>
</div>
</div>
<div class="col-12 md:col-6">
<div class="field">
<label class="font-medium">Statut</label>
<p:tag value="#{adhesionsBean.adhesionSelectionnee.statutLibelle}"
severity="#{adhesionsBean.adhesionSelectionnee.statutSeverity}" />
</div>
</div>
<div class="col-12">
<div class="field">
<label class="font-medium">Membre</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.nomMembre}</p>
<p class="text-500 text-sm">N° #{adhesionsBean.adhesionSelectionnee.numeroMembre}</p>
</div>
</div>
<div class="col-12">
<div class="field">
<label class="font-medium">Organisation</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.nomOrganisation}</p>
</div>
</div>
<div class="col-12 md:col-6">
<div class="field">
<label class="font-medium">Date de demande</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.dateDemandeFormatee}</p>
</div>
</div>
<div class="col-12 md:col-6">
<div class="field">
<label class="font-medium">Frais d'adhésion</label>
<p class="text-600 font-bold">#{adhesionsBean.adhesionSelectionnee.fraisAdhesionFormatte}</p>
</div>
</div>
<div class="col-12" rendered="#{adhesionsBean.adhesionSelectionnee.observations != null}">
<div class="field">
<label class="font-medium">Observations</label>
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.observations}</p>
</div>
</div>
</div>
</div>
</h:form>
</p:dialog>
</ui:define>
</ui:composition>