595 lines
35 KiB
HTML
595 lines
35 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:define name="title">Gestion des Aides - UnionFlow</ui:define>
|
|
|
|
<ui:define name="content">
|
|
<!-- En-tête -->
|
|
<div class="grid">
|
|
<div class="col-12">
|
|
<div class="card">
|
|
<div class="flex align-items-center justify-content-between">
|
|
<div>
|
|
<h3 class="mb-2">
|
|
<i class="pi pi-heart text-pink-500 mr-2"></i>
|
|
Gestion des Aides
|
|
</h3>
|
|
<p class="text-600 m-0">#{aideBean.totalAides} aides • #{aideBean.montantDistribue} distribués • #{aideBean.budgetDisponible} disponible</p>
|
|
</div>
|
|
<h:form id="formActionsAides">
|
|
<div class="flex gap-2">
|
|
<p:commandButton value="Nouvelle aide"
|
|
icon="pi pi-plus"
|
|
styleClass="ui-button-success"
|
|
onclick="PF('dlgNouvelleAide').show();" />
|
|
<p:commandButton value="Campagne d'aide"
|
|
icon="pi pi-megaphone"
|
|
styleClass="ui-button-outlined ui-button-info"
|
|
action="#{aideBean.nouvelleCampagne}" />
|
|
<p:commandButton value="Budget & Critères"
|
|
icon="pi pi-cog"
|
|
styleClass="ui-button-outlined ui-button-secondary"
|
|
action="#{aideBean.gestionBudget}" />
|
|
</div>
|
|
</h:form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Statistiques -->
|
|
<div class="grid">
|
|
<div class="col-12 md:col-3">
|
|
<div class="card bg-pink-100 border-left-3 border-pink-500">
|
|
<div class="flex justify-content-between">
|
|
<div>
|
|
<div class="text-pink-900 font-bold text-2xl">#{aideBean.aidesActives}</div>
|
|
<div class="text-pink-700">Aides Actives</div>
|
|
</div>
|
|
<div class="bg-pink-500 text-white border-round text-center"
|
|
style="width: 3rem; height: 3rem; line-height: 3rem;">
|
|
<i class="pi pi-heart text-xl"></i>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-12 md:col-3">
|
|
<div class="card bg-green-100 border-left-3 border-green-500">
|
|
<div class="flex justify-content-between">
|
|
<div>
|
|
<div class="text-green-900 font-bold text-2xl">#{aideBean.montantDistribue}</div>
|
|
<div class="text-green-700">Montant Distribué</div>
|
|
</div>
|
|
<div class="bg-green-500 text-white border-round text-center"
|
|
style="width: 3rem; height: 3rem; line-height: 3rem;">
|
|
<i class="pi pi-dollar text-xl"></i>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-12 md:col-3">
|
|
<div class="card bg-blue-100 border-left-3 border-blue-500">
|
|
<div class="flex justify-content-between">
|
|
<div>
|
|
<div class="text-blue-900 font-bold text-2xl">#{aideBean.beneficiaires}</div>
|
|
<div class="text-blue-700">Bénéficiaires</div>
|
|
</div>
|
|
<div class="bg-blue-500 text-white border-round text-center"
|
|
style="width: 3rem; height: 3rem; line-height: 3rem;">
|
|
<i class="pi pi-users text-xl"></i>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-12 md:col-3">
|
|
<div class="card bg-orange-100 border-left-3 border-orange-500">
|
|
<div class="flex justify-content-between">
|
|
<div>
|
|
<div class="text-orange-900 font-bold text-2xl">#{aideBean.enAttente}</div>
|
|
<div class="text-orange-700">En Attente</div>
|
|
</div>
|
|
<div class="bg-orange-500 text-white border-round text-center"
|
|
style="width: 3rem; height: 3rem; line-height: 3rem;">
|
|
<i class="pi pi-clock text-xl"></i>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Budget et critères -->
|
|
<div class="grid">
|
|
<div class="col-12 md:col-8">
|
|
<div class="card">
|
|
<h5>Budget des Aides</h5>
|
|
<div class="grid">
|
|
<div class="col-12 md:col-4">
|
|
<div class="text-center p-3 surface-50 border-round">
|
|
<div class="text-2xl font-bold text-primary mb-2">#{aideBean.budgetTotal}</div>
|
|
<div class="text-600">Budget Total</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-12 md:col-4">
|
|
<div class="text-center p-3 surface-50 border-round">
|
|
<div class="text-2xl font-bold text-green-500 mb-2">#{aideBean.budgetUtilise}</div>
|
|
<div class="text-600">Utilisé</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-12 md:col-4">
|
|
<div class="text-center p-3 surface-50 border-round">
|
|
<div class="text-2xl font-bold text-blue-500 mb-2">#{aideBean.budgetDisponible}</div>
|
|
<div class="text-600">Disponible</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<p:progressBar value="#{aideBean.tauxUtilisationBudget}"
|
|
labelTemplate="#{aideBean.tauxUtilisationBudget}% du budget utilisé"
|
|
styleClass="mt-3" />
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-12 md:col-4">
|
|
<div class="card">
|
|
<h5>Prochaines Échéances</h5>
|
|
<ui:repeat value="#{aideBean.prochainesEcheances}" var="aide" varStatus="status">
|
|
<div class="flex align-items-center justify-content-between p-2 mb-2 border-round"
|
|
style="background: var(--surface-50);">
|
|
<div>
|
|
<div class="font-medium text-sm">#{aide.beneficiaire}</div>
|
|
<small class="text-600">#{aide.typeAide}</small>
|
|
</div>
|
|
<div class="text-right">
|
|
<div class="font-bold text-sm">#{aide.prochainVersement}</div>
|
|
<small class="text-orange-500">#{aide.dateEcheance}</small>
|
|
</div>
|
|
</div>
|
|
</ui:repeat>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Graphiques -->
|
|
<div class="grid">
|
|
<div class="col-12 md:col-8">
|
|
<div class="card">
|
|
<h5>Évolution des Aides (12 derniers mois)</h5>
|
|
<div class="grid">
|
|
<div class="col-2">
|
|
<div class="text-center p-2">
|
|
<div class="text-sm font-medium text-blue-500">15</div>
|
|
<div class="text-xs text-600">Jan</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-2">
|
|
<div class="text-center p-2">
|
|
<div class="text-sm font-medium text-green-500">22</div>
|
|
<div class="text-xs text-600">Fév</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-2">
|
|
<div class="text-center p-2">
|
|
<div class="text-sm font-medium text-purple-500">18</div>
|
|
<div class="text-xs text-600">Mar</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-2">
|
|
<div class="text-center p-2">
|
|
<div class="text-sm font-medium text-orange-500">25</div>
|
|
<div class="text-xs text-600">Avr</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-2">
|
|
<div class="text-center p-2">
|
|
<div class="text-sm font-medium text-red-500">12</div>
|
|
<div class="text-xs text-600">Mai</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-2">
|
|
<div class="text-center p-2">
|
|
<div class="text-sm font-medium text-cyan-500">28</div>
|
|
<div class="text-xs text-600">Juin</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="surface-50 p-3 border-round mt-3 text-center">
|
|
<div class="text-2xl font-bold text-primary">235</div>
|
|
<div class="text-600">Total aides accordées cette année</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-12 md:col-4">
|
|
<div class="card">
|
|
<h5>Répartition par Type</h5>
|
|
<div class="grid">
|
|
<div class="col-12">
|
|
<div class="flex align-items-center justify-content-between p-2 surface-50 border-round mb-2">
|
|
<span class="text-600">🏥 Médicale</span>
|
|
<span class="font-bold text-blue-500">45%</span>
|
|
</div>
|
|
</div>
|
|
<div class="col-12">
|
|
<div class="flex align-items-center justify-content-between p-2 surface-50 border-round mb-2">
|
|
<span class="text-600">👥 Sociale</span>
|
|
<span class="font-bold text-green-500">30%</span>
|
|
</div>
|
|
</div>
|
|
<div class="col-12">
|
|
<div class="flex align-items-center justify-content-between p-2 surface-50 border-round mb-2">
|
|
<span class="text-600">🎓 Scolaire</span>
|
|
<span class="font-bold text-purple-500">15%</span>
|
|
</div>
|
|
</div>
|
|
<div class="col-12">
|
|
<div class="flex align-items-center justify-content-between p-2 surface-50 border-round mb-2">
|
|
<span class="text-600">🚨 Urgence</span>
|
|
<span class="font-bold text-red-500">10%</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Liste des aides -->
|
|
<div class="card">
|
|
<h:form id="formAides">
|
|
<h5>Gestion des Aides</h5>
|
|
|
|
<!-- Filtres -->
|
|
<p:toolbar>
|
|
<p:toolbarGroup>
|
|
<div class="flex align-items-center gap-2">
|
|
<span class="p-input-icon-left">
|
|
<i class="pi pi-search"></i>
|
|
<p:inputText placeholder="Rechercher..."
|
|
value="#{aideBean.searchFilter}">
|
|
<p:ajax event="keyup" update="dtAides" />
|
|
</p:inputText>
|
|
</span>
|
|
|
|
<p:selectOneMenu value="#{aideBean.statutFilter}">
|
|
<f:selectItem itemLabel="Tous les statuts" itemValue="" />
|
|
<f:selectItem itemLabel="Active" itemValue="ACTIVE" />
|
|
<f:selectItem itemLabel="En attente" itemValue="EN_ATTENTE" />
|
|
<f:selectItem itemLabel="Suspendue" itemValue="SUSPENDUE" />
|
|
<f:selectItem itemLabel="Terminée" itemValue="TERMINEE" />
|
|
<f:selectItem itemLabel="Annulée" itemValue="ANNULEE" />
|
|
<p:ajax update="dtAides" />
|
|
</p:selectOneMenu>
|
|
|
|
<p:selectOneMenu value="#{aideBean.typeFilter}">
|
|
<f:selectItem itemLabel="Tous les types" itemValue="" />
|
|
<f:selectItem itemLabel="Aide médicale" itemValue="MEDICALE" />
|
|
<f:selectItem itemLabel="Aide funéraire" itemValue="FUNERAIRE" />
|
|
<f:selectItem itemLabel="Aide sociale" itemValue="SOCIALE" />
|
|
<f:selectItem itemLabel="Aide scolaire" itemValue="SCOLAIRE" />
|
|
<f:selectItem itemLabel="Aide d'urgence" itemValue="URGENCE" />
|
|
<f:selectItem itemLabel="Autre" itemValue="AUTRE" />
|
|
<p:ajax update="dtAides" />
|
|
</p:selectOneMenu>
|
|
|
|
<p:selectOneMenu value="#{aideBean.frequenceFilter}">
|
|
<f:selectItem itemLabel="Toutes fréquences" itemValue="" />
|
|
<f:selectItem itemLabel="Ponctuelle" itemValue="PONCTUELLE" />
|
|
<f:selectItem itemLabel="Mensuelle" itemValue="MENSUELLE" />
|
|
<f:selectItem itemLabel="Trimestrielle" itemValue="TRIMESTRIELLE" />
|
|
<f:selectItem itemLabel="Annuelle" itemValue="ANNUELLE" />
|
|
<p:ajax update="dtAides" />
|
|
</p:selectOneMenu>
|
|
</div>
|
|
</p:toolbarGroup>
|
|
|
|
<p:toolbarGroup align="right">
|
|
<p:commandButton value="Versements groupés"
|
|
icon="pi pi-send"
|
|
styleClass="ui-button-outlined ui-button-success mr-2"
|
|
action="#{aideBean.versementsGroupes}" />
|
|
<p:commandButton icon="pi pi-refresh"
|
|
styleClass="ui-button-outlined ui-button-secondary"
|
|
action="#{aideBean.actualiser}"
|
|
update="@form"
|
|
title="Actualiser" />
|
|
</p:toolbarGroup>
|
|
</p:toolbar>
|
|
|
|
<!-- DataTable -->
|
|
<p:dataTable id="dtAides"
|
|
var="aide"
|
|
value="#{aideBean.aides}"
|
|
paginator="true"
|
|
rows="10"
|
|
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
|
|
rowsPerPageTemplate="5,10,25,50"
|
|
currentPageReportTemplate="Affichage {startRecord}-{endRecord} sur {totalRecords}"
|
|
selection="#{aideBean.selectedAides}"
|
|
rowKey="#{aide.id}"
|
|
selectionMode="multiple"
|
|
styleClass="mt-3">
|
|
|
|
<p:column selectionMode="multiple" style="width:50px" />
|
|
|
|
<p:column headerText="Référence" sortBy="#{aide.reference}" style="width:120px">
|
|
<h:outputText value="#{aide.reference}" styleClass="font-mono font-bold" />
|
|
</p:column>
|
|
|
|
<p:column headerText="Bénéficiaire" sortBy="#{aide.nomBeneficiaire}">
|
|
<div class="flex align-items-center">
|
|
<div class="border-circle overflow-hidden mr-3"
|
|
style="width: 40px; height: 40px;">
|
|
<h:graphicImage value="#{aide.photoBeneficiaire}"
|
|
style="width: 100%; height: 100%; object-fit: cover;"
|
|
rendered="#{aide.photoBeneficiaire != null}" />
|
|
<div class="bg-primary text-white flex align-items-center justify-content-center w-full h-full"
|
|
rendered="#{aide.photoBeneficiaire == null}">
|
|
<span style="font-size: 0.9rem;">#{aide.initialesBeneficiaire}</span>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div class="font-medium text-900">#{aide.nomCompletBeneficiaire}</div>
|
|
<div class="text-600 text-sm">
|
|
<span>#{aide.numeroMembre}</span>
|
|
<span class="mx-2">•</span>
|
|
<span>#{aide.telephoneBeneficiaire}</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</p:column>
|
|
|
|
<p:column headerText="Type" sortBy="#{aide.type}" style="width:140px">
|
|
<div class="flex align-items-center">
|
|
<div class="border-round p-2 mr-2 #{aide.typeColorClass}">
|
|
<i class="pi #{aide.typeIcon} text-white text-sm"></i>
|
|
</div>
|
|
<span>#{aide.type}</span>
|
|
</div>
|
|
</p:column>
|
|
|
|
<p:column headerText="Motif" sortBy="#{aide.motif}">
|
|
<h:outputText value="#{aide.motif}" />
|
|
</p:column>
|
|
|
|
<p:column headerText="Montant" sortBy="#{aide.montant}" style="width:120px">
|
|
<div class="text-center">
|
|
<div class="font-bold text-green-500">#{aide.montantTotal}</div>
|
|
<small class="text-600">#{aide.frequence}</small>
|
|
</div>
|
|
</p:column>
|
|
|
|
<p:column headerText="Versé" sortBy="#{aide.montantVerse}" style="width:120px">
|
|
<div class="text-center">
|
|
<div class="font-bold text-blue-500">#{aide.montantVerse}</div>
|
|
<p:progressBar value="#{aide.pourcentageVerse}"
|
|
labelTemplate=""
|
|
styleClass="h-1rem mt-1" />
|
|
</div>
|
|
</p:column>
|
|
|
|
<p:column headerText="Statut" sortBy="#{aide.statut}" style="width:120px">
|
|
<p:tag value="#{aide.statut}"
|
|
severity="#{aide.statutSeverity}"
|
|
icon="pi #{aide.statutIcon}" />
|
|
</p:column>
|
|
|
|
<p:column headerText="Début" sortBy="#{aide.dateDebut}" style="width:100px">
|
|
<h:outputText value="#{aide.dateDebut}">
|
|
<f:convertDateTime pattern="dd/MM/yyyy" type="localDate" />
|
|
</h:outputText>
|
|
</p:column>
|
|
|
|
<p:column headerText="Fin prévue" sortBy="#{aide.dateFinPrevue}" style="width:100px">
|
|
<h:outputText value="#{aide.dateFinPrevue}"
|
|
styleClass="#{aide.finPrevueClass}">
|
|
<f:convertDateTime pattern="dd/MM/yyyy" type="localDate" />
|
|
</h:outputText>
|
|
</p:column>
|
|
|
|
<p:column headerText="Prochain versement" style="width:130px">
|
|
<div class="text-center" rendered="#{aide.prochainVersement != null}">
|
|
<div class="font-medium">#{aide.prochainVersementMontant}</div>
|
|
<small class="text-600">#{aide.prochainVersementDate}</small>
|
|
</div>
|
|
<span class="text-400" rendered="#{aide.prochainVersement == null}">-</span>
|
|
</p:column>
|
|
|
|
<p:column headerText="Actions" style="width:220px">
|
|
<div class="flex gap-1">
|
|
<p:commandButton icon="pi pi-eye"
|
|
styleClass="ui-button-rounded ui-button-text ui-button-info"
|
|
action="#{aideBean.voirAide(aide)}"
|
|
title="Voir détails" />
|
|
<p:commandButton icon="pi pi-dollar"
|
|
styleClass="ui-button-rounded ui-button-text ui-button-success"
|
|
action="#{aideBean.effectuerVersement(aide)}"
|
|
title="Verser"
|
|
rendered="#{aide.statut == 'ACTIVE' and aide.prochainVersement != null}" />
|
|
<p:commandButton icon="pi pi-history"
|
|
styleClass="ui-button-rounded ui-button-text ui-button-secondary"
|
|
action="#{aideBean.voirHistorique(aide)}"
|
|
title="Historique" />
|
|
<p:commandButton icon="pi pi-pencil"
|
|
styleClass="ui-button-rounded ui-button-text ui-button-warning"
|
|
action="#{aideBean.modifierAide(aide)}"
|
|
title="Modifier" />
|
|
<p:commandButton icon="pi pi-pause"
|
|
styleClass="ui-button-rounded ui-button-text ui-button-secondary"
|
|
action="#{aideBean.suspendreAide(aide)}"
|
|
title="Suspendre"
|
|
rendered="#{aide.statut == 'ACTIVE'}" />
|
|
<p:commandButton icon="pi pi-play"
|
|
styleClass="ui-button-rounded ui-button-text ui-button-success"
|
|
action="#{aideBean.reactiverAide(aide)}"
|
|
title="Réactiver"
|
|
rendered="#{aide.statut == 'SUSPENDUE'}" />
|
|
<p:commandButton icon="pi pi-times"
|
|
styleClass="ui-button-rounded ui-button-text ui-button-danger"
|
|
action="#{aideBean.annulerAide(aide)}"
|
|
onclick="return confirm('Êtes-vous sûr de vouloir annuler cette aide ?');"
|
|
title="Annuler"
|
|
rendered="#{aide.statut != 'TERMINEE' and aide.statut != 'ANNULEE'}" />
|
|
</div>
|
|
</p:column>
|
|
</p:dataTable>
|
|
|
|
<!-- Actions groupées -->
|
|
<div class="mt-3 flex justify-content-between align-items-center">
|
|
<div>
|
|
<span class="text-600">#{aideBean.selectedAides.size()} aide(s) sélectionnée(s)</span>
|
|
</div>
|
|
<div class="flex gap-2">
|
|
<p:commandButton value="Verser sélection"
|
|
icon="pi pi-send"
|
|
styleClass="ui-button-outlined ui-button-success"
|
|
action="#{aideBean.verserSelection}"
|
|
disabled="#{empty aideBean.selectedAides}" />
|
|
<p:commandButton value="Suspendre sélection"
|
|
icon="pi pi-pause"
|
|
styleClass="ui-button-outlined ui-button-warning"
|
|
action="#{aideBean.suspendreSelection}"
|
|
disabled="#{empty aideBean.selectedAides}" />
|
|
<p:commandButton value="Exporter sélection"
|
|
icon="pi pi-file-excel"
|
|
styleClass="ui-button-outlined ui-button-secondary"
|
|
action="#{aideBean.exporterSelection}"
|
|
disabled="#{empty aideBean.selectedAides}" />
|
|
</div>
|
|
</div>
|
|
</h:form>
|
|
</div>
|
|
|
|
<!-- Dialog Nouvelle Aide -->
|
|
<p:dialog header="Nouvelle Aide" widgetVar="dlgNouvelleAide" modal="true" width="800">
|
|
<h:form id="formNouvelleAide">
|
|
<div class="ui-fluid">
|
|
<div class="grid">
|
|
<div class="col-12 md:col-6">
|
|
<div class="field">
|
|
<p:outputLabel for="beneficiaireSelect" value="Bénéficiaire" />
|
|
<p:autoComplete id="beneficiaireSelect"
|
|
value="#{aideBean.membreBeneficiaire}"
|
|
completeMethod="#{aideBean.rechercherMembres}"
|
|
var="membre" itemLabel="#{membre.nomComplet}" itemValue="#{membre}"
|
|
converter="membreConverter"
|
|
placeholder="Rechercher un membre..."
|
|
required="true">
|
|
<p:column>
|
|
<div class="flex align-items-center">
|
|
<div class="border-circle bg-primary text-white flex align-items-center justify-content-center mr-2"
|
|
style="width: 30px; height: 30px;">
|
|
<span style="font-size: 0.8rem;">#{membre.initiales}</span>
|
|
</div>
|
|
<div>
|
|
<div class="font-medium">#{membre.nomComplet}</div>
|
|
<small class="text-600">#{membre.numeroMembre}</small>
|
|
</div>
|
|
</div>
|
|
</p:column>
|
|
</p:autoComplete>
|
|
</div>
|
|
|
|
<div class="field">
|
|
<p:outputLabel for="typeAide" value="Type d'aide" />
|
|
<p:selectOneMenu id="typeAide" value="#{aideBean.nouvelleAide.type}" required="true">
|
|
<f:selectItem itemLabel="Sélectionner..." itemValue="" />
|
|
<f:selectItem itemLabel="🏥 Aide médicale" itemValue="MEDICALE" />
|
|
<f:selectItem itemLabel="⚰️ Aide funéraire" itemValue="FUNERAIRE" />
|
|
<f:selectItem itemLabel="👥 Aide sociale" itemValue="SOCIALE" />
|
|
<f:selectItem itemLabel="🎓 Aide scolaire" itemValue="SCOLAIRE" />
|
|
<f:selectItem itemLabel="🚨 Aide d'urgence" itemValue="URGENCE" />
|
|
<f:selectItem itemLabel="🔧 Autre" itemValue="AUTRE" />
|
|
</p:selectOneMenu>
|
|
</div>
|
|
|
|
<div class="field">
|
|
<p:outputLabel for="montantAide" value="Montant" />
|
|
<p:inputNumber id="montantAide" value="#{aideBean.nouvelleAide.montant}"
|
|
symbol=" FCFA" symbolPosition="s" required="true" />
|
|
</div>
|
|
|
|
<div class="field">
|
|
<p:outputLabel for="frequenceAide" value="Fréquence" />
|
|
<p:selectOneMenu id="frequenceAide" value="#{aideBean.nouvelleAide.frequence}">
|
|
<f:selectItem itemLabel="Ponctuelle" itemValue="PONCTUELLE" />
|
|
<f:selectItem itemLabel="Mensuelle" itemValue="MENSUELLE" />
|
|
<f:selectItem itemLabel="Trimestrielle" itemValue="TRIMESTRIELLE" />
|
|
<f:selectItem itemLabel="Annuelle" itemValue="ANNUELLE" />
|
|
</p:selectOneMenu>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-12 md:col-6">
|
|
<div class="field">
|
|
<p:outputLabel for="motifAide" value="Motif" />
|
|
<p:inputText id="motifAide" value="#{aideBean.nouvelleAide.motif}"
|
|
required="true" placeholder="Raison de l'aide" />
|
|
</div>
|
|
|
|
<div class="field">
|
|
<p:outputLabel for="dateDebutAide" value="Date de début" />
|
|
<p:calendar id="dateDebutAide" value="#{aideBean.nouvelleAide.dateDebut}"
|
|
pattern="dd/MM/yyyy" showIcon="true" required="true" />
|
|
</div>
|
|
|
|
<div class="field">
|
|
<p:outputLabel for="dateFinAide" value="Date de fin (optionnelle)" />
|
|
<p:calendar id="dateFinAide" value="#{aideBean.nouvelleAide.dateFin}"
|
|
pattern="dd/MM/yyyy" showIcon="true" />
|
|
</div>
|
|
|
|
<div class="field">
|
|
<p:outputLabel for="modePaiementAide" value="Mode de paiement" />
|
|
<p:selectOneMenu id="modePaiementAide" value="#{aideBean.nouvelleAide.modePaiement}">
|
|
<f:selectItem itemLabel="💰 Espèces" itemValue="ESPECES" />
|
|
<f:selectItem itemLabel="📱 Wave Money" itemValue="WAVE" />
|
|
<f:selectItem itemLabel="🏦 Virement bancaire" itemValue="VIREMENT" />
|
|
<f:selectItem itemLabel="💳 Chèque" itemValue="CHEQUE" />
|
|
</p:selectOneMenu>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-12">
|
|
<div class="field">
|
|
<p:outputLabel for="descriptionAide" value="Description détaillée" />
|
|
<p:inputTextarea id="descriptionAide" value="#{aideBean.nouvelleAide.description}"
|
|
rows="3" placeholder="Détails sur la situation et l'aide accordée..." />
|
|
</div>
|
|
|
|
<div class="field">
|
|
<p:selectBooleanCheckbox id="versementImmediat" value="#{aideBean.versementImmediat}" />
|
|
<p:outputLabel for="versementImmediat" value=" Effectuer le premier versement immédiatement" />
|
|
</div>
|
|
|
|
<div class="field">
|
|
<p:outputLabel for="justificatifs" value="Justificatifs" />
|
|
<p:fileUpload id="justificatifs" mode="advanced"
|
|
multiple="true" dragDropSupport="true"
|
|
uploadLabel="Télécharger" cancelLabel="Annuler" chooseLabel="Sélectionner"
|
|
sizeLimit="5000000" fileLimit="10" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="flex gap-2 mt-3">
|
|
<p:commandButton value="Créer l'aide" icon="pi pi-check"
|
|
styleClass="ui-button-success"
|
|
action="#{aideBean.creerAide}"
|
|
update="@form :formAides"
|
|
oncomplete="if(!args.validationFailed) PF('dlgNouvelleAide').hide();" />
|
|
<p:commandButton value="Annuler" icon="pi pi-times"
|
|
styleClass="ui-button-secondary"
|
|
onclick="PF('dlgNouvelleAide').hide();" type="button" />
|
|
</div>
|
|
</h:form>
|
|
</p:dialog>
|
|
</ui:define>
|
|
|
|
</ui:composition> |