Files
unionflow-client-quarkus-pr…/target/classes/META-INF/resources/pages/secure/adhesion/renouvellement.xhtml

168 lines
8.9 KiB
HTML

<!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>