diff --git a/app/(main)/factures/page.tsx b/app/(main)/factures/page.tsx index a8503a4..d473fd0 100644 --- a/app/(main)/factures/page.tsx +++ b/app/(main)/factures/page.tsx @@ -255,8 +255,7 @@ const FacturesPage = () => { const editFacture = (facture: Facture) => { setFacture({ - ...facture, - client: facture.client?.id || null + ...facture }); setFactureDialog(true); }; @@ -390,7 +389,7 @@ const FacturesPage = () => { /> { toast.current?.show({ @@ -402,10 +401,12 @@ const FacturesPage = () => { }} /> editFacture(rowData)} + tooltip="Modifier" + onClick={() => editFacture(rowData)} /> confirmDeleteFacture(rowData)} + tooltip="Supprimer" + onClick={() => confirmDeleteFacture(rowData)} /> ); @@ -456,9 +457,9 @@ const FacturesPage = () => { }; return ( - ); }; @@ -526,6 +527,7 @@ const FacturesPage = () => { value={factures} selection={selectedFactures} onSelectionChange={(e) => setSelectedFactures(e.value)} + selectionMode="checkbox" dataKey="id" paginator rows={10} @@ -575,12 +577,12 @@ const FacturesPage = () => {
- - onDropdownChange(e, 'type')} + + onDropdownChange(e, 'typeFacture')} placeholder="Sélectionnez un type" />
@@ -636,35 +638,35 @@ const FacturesPage = () => {
- onDateChange(e, 'dateEmission')} - dateFormat="dd/mm/yy" - showIcon + onDateChange(e, 'dateEmission')} + dateFormat="dd/mm/yy" + showIcon />
- onDateChange(e, 'dateEcheance')} - dateFormat="dd/mm/yy" - showIcon - minDate={facture.dateEmission} + onDateChange(e, 'dateEcheance')} + dateFormat="dd/mm/yy" + showIcon + minDate={facture.dateEmission ? new Date(facture.dateEmission) : undefined} />
- onDateChange(e, 'datePaiement')} - dateFormat="dd/mm/yy" - showIcon + onDateChange(e, 'datePaiement')} + dateFormat="dd/mm/yy" + showIcon />
diff --git a/app/(main)/factures/payees/page.tsx b/app/(main)/factures/payees/page.tsx index 073fd0c..77fc317 100644 --- a/app/(main)/factures/payees/page.tsx +++ b/app/(main)/factures/payees/page.tsx @@ -488,6 +488,7 @@ RECOMMANDATIONS: value={factures} selection={selectedFactures} onSelectionChange={(e) => setSelectedFactures(e.value)} + selectionMode="checkbox" dataKey="id" paginator rows={10} diff --git a/app/(main)/factures/relances/[id]/page.tsx b/app/(main)/factures/relances/[id]/page.tsx index 6917bc8..e067bd8 100644 --- a/app/(main)/factures/relances/[id]/page.tsx +++ b/app/(main)/factures/relances/[id]/page.tsx @@ -20,6 +20,7 @@ import { Checkbox } from 'primereact/checkbox'; import { factureService } from '../../../../../services/api'; import { formatDate, formatCurrency } from '../../../../../utils/formatters'; import type { Facture } from '../../../../../types/btp'; +import { StatutFacture } from '../../../../../types/btp'; interface Relance { id: string; @@ -85,7 +86,7 @@ const FactureRelancePage = () => { // Charger la facture const factureResponse = await factureService.getById(factureId); - setFacture(factureResponse.data); + setFacture(factureResponse); // TODO: Charger les relances et templates depuis l'API // const relancesResponse = await factureService.getRelances(factureId); @@ -142,8 +143,8 @@ const FactureRelancePage = () => { setTemplates(mockTemplates); // Pré-remplir le destinataire - if (factureResponse.data.client) { - const client = factureResponse.data.client; + if (factureResponse.client) { + const client = factureResponse.client; setNouvelleRelance(prev => ({ ...prev, destinataire: typeof client === 'string' ? client : client.email || client.nom @@ -309,9 +310,9 @@ const FactureRelancePage = () => {

Relances - Facture #{facture.numero}

{facture.objet}

-
diff --git a/app/(main)/factures/relances/page.tsx b/app/(main)/factures/relances/page.tsx index f45e0f5..365bd2e 100644 --- a/app/(main)/factures/relances/page.tsx +++ b/app/(main)/factures/relances/page.tsx @@ -314,7 +314,7 @@ BTP Express` return ; } - let severity = 'warning'; + let severity: "warning" | "danger" = 'warning'; if (rowData.joursRetard > 60) severity = 'danger'; else if (rowData.joursRetard > 30) severity = 'warning'; @@ -340,7 +340,7 @@ BTP Express` }; const risqueBodyTemplate = (rowData: any) => { - const config = { + const config: Record = { 'FAIBLE': { color: 'success', icon: 'pi-check-circle' }, 'MOYEN': { color: 'warning', icon: 'pi-exclamation-triangle' }, 'FORT': { color: 'danger', icon: 'pi-times-circle' } @@ -360,20 +360,22 @@ BTP Express` ouvrirRelance(rowData)} disabled={rowData.joursRetard <= 0} /> - + {}} /> {}} /> ); diff --git a/app/(main)/factures/retard/page.tsx b/app/(main)/factures/retard/page.tsx index 99cd79e..3b96879 100644 --- a/app/(main)/factures/retard/page.tsx +++ b/app/(main)/factures/retard/page.tsx @@ -18,6 +18,7 @@ import { ProgressBar } from 'primereact/progressbar'; import { factureService } from '../../../../services/api'; import { formatDate, formatCurrency } from '../../../../utils/formatters'; import type { Facture } from '../../../../types/btp'; +import { StatutFacture } from '../../../../types/btp'; import factureActionsService from '../../../../services/factureActionsService'; const FacturesRetardPage = () => { @@ -66,12 +67,12 @@ const FacturesRetardPage = () => { try { setLoading(true); const data = await factureService.getAll(); - // Filtrer les factures en retard (échéance dépassée + statut EN_RETARD) + // Filtrer les factures en retard (échéance dépassée + statut ECHUE) const facturesEnRetard = data.filter(facture => { const today = new Date(); const echeanceDate = new Date(facture.dateEcheance); - return (facture.statut === 'EN_RETARD' || - (echeanceDate < today && facture.statut !== 'PAYEE' && !facture.datePaiement)); + return (facture.statut === StatutFacture.ECHUE || + (echeanceDate < today && facture.statut !== StatutFacture.PAYEE && !facture.datePaiement)); }); setFactures(facturesEnRetard); } catch (error) { @@ -155,11 +156,12 @@ const FacturesRetardPage = () => { break; case 'legal_notice': + const delaiJours = Math.ceil((legalNoticeData.deadline.getTime() - Date.now()) / (1000 * 60 * 60 * 24)); await factureActionsService.sendMiseEnDemeure({ factureId: selectedFacture.id, - delaiPaiement: legalNoticeData.delai, - mentionsLegales: legalNoticeData.mentions, - fraisDossier: legalNoticeData.frais + delaiPaiement: delaiJours, + mentionsLegales: legalNoticeData.content, + fraisDossier: 0 }); message = 'Mise en demeure émise avec succès'; break; @@ -535,6 +537,7 @@ ACTIONS RECOMMANDÉES: value={factures} selection={selectedFactures} onSelectionChange={(e) => setSelectedFactures(e.value)} + selectionMode="checkbox" dataKey="id" paginator rows={10} diff --git a/app/(main)/factures/templates/page.tsx b/app/(main)/factures/templates/page.tsx index 4078c90..4fd624b 100644 --- a/app/(main)/factures/templates/page.tsx +++ b/app/(main)/factures/templates/page.tsx @@ -315,9 +315,9 @@ const FactureTemplatesPage = () => { ); const typeBodyTemplate = (rowData: FactureTemplate) => ( - ); diff --git a/app/(main)/gestionnaire/dashboard/page.tsx b/app/(main)/gestionnaire/dashboard/page.tsx index 657d92b..ab6b0df 100644 --- a/app/(main)/gestionnaire/dashboard/page.tsx +++ b/app/(main)/gestionnaire/dashboard/page.tsx @@ -37,7 +37,7 @@ const GestionnaireDashboard = () => { const { user: currentUser } = useAuth(); // Vérifier que l'utilisateur est connecté et est un gestionnaire - if (!currentUser || currentUser.role !== 'GESTIONNAIRE_PROJET') { + if (!currentUser || !currentUser.roles?.includes('GESTIONNAIRE_PROJET')) { return (
@@ -200,7 +200,7 @@ const GestionnaireDashboard = () => {

Dashboard Gestionnaire

- Bienvenue {currentUser.prenom} {currentUser.nom} + Bienvenue {currentUser.fullName || currentUser.username}

diff --git a/app/(main)/maintenance/page.tsx b/app/(main)/maintenance/page.tsx index fced7c0..9b706ad 100644 --- a/app/(main)/maintenance/page.tsx +++ b/app/(main)/maintenance/page.tsx @@ -439,6 +439,7 @@ const MaintenancePage = () => { header={header} selection={selectedMaintenances} onSelectionChange={(e) => setSelectedMaintenances(e.value)} + selectionMode="checkbox" responsiveLayout="scroll" > diff --git a/app/(main)/maintenance/pieces/page.tsx b/app/(main)/maintenance/pieces/page.tsx index d362252..5a12fdd 100644 --- a/app/(main)/maintenance/pieces/page.tsx +++ b/app/(main)/maintenance/pieces/page.tsx @@ -439,9 +439,9 @@ const PiecesDetacheesPage = () => { filterDisplay="menu" globalFilterFields={['nom', 'reference', 'description', 'fournisseur']} header={header} - subHeader={renderHeader()} selection={selectedPieces} onSelectionChange={(e) => setSelectedPieces(e.value)} + selectionMode="checkbox" responsiveLayout="scroll" > diff --git a/app/(main)/maintenance/planification/page.tsx b/app/(main)/maintenance/planification/page.tsx index 8bc6434..a662396 100644 --- a/app/(main)/maintenance/planification/page.tsx +++ b/app/(main)/maintenance/planification/page.tsx @@ -432,6 +432,7 @@ const PlanificationMaintenancePage = () => { header={header} selection={selectedMateriels} onSelectionChange={(e) => setSelectedMateriels(e.value)} + selectionMode="checkbox" responsiveLayout="scroll" > diff --git a/app/(main)/maintenance/urgente/page.tsx b/app/(main)/maintenance/urgente/page.tsx index 9f3f413..90031da 100644 --- a/app/(main)/maintenance/urgente/page.tsx +++ b/app/(main)/maintenance/urgente/page.tsx @@ -528,7 +528,6 @@ const MaintenanceUrgentePage = () => { showTime showIcon dateFormat="dd/mm/yy" - timeFormat="24" placeholder="Sélectionner date et heure" />
diff --git a/app/(main)/maintenances/en-cours/page.tsx b/app/(main)/maintenances/en-cours/page.tsx index 5499f65..ccd2d54 100644 --- a/app/(main)/maintenances/en-cours/page.tsx +++ b/app/(main)/maintenances/en-cours/page.tsx @@ -281,6 +281,7 @@ const MaintenancesEnCoursPage = () => { value={maintenances} selection={selectedMaintenances} onSelectionChange={(e) => setSelectedMaintenances(e.value)} + selectionMode="checkbox" dataKey="id" paginator rows={10} diff --git a/app/(main)/maintenances/nouvelle/page.tsx b/app/(main)/maintenances/nouvelle/page.tsx index 8b17467..6d9ca2f 100644 --- a/app/(main)/maintenances/nouvelle/page.tsx +++ b/app/(main)/maintenances/nouvelle/page.tsx @@ -75,7 +75,12 @@ const NouvelleMaintenancePage = () => { if (maintenance.description?.trim() && maintenance.materiel) { try { setSaving(true); - const savedMaintenance = await maintenanceService.create(maintenance); + const maintenanceData = { + ...maintenance, + datePrevue: maintenance.datePrevue.toISOString(), + dateRealisee: maintenance.dateRealisee?.toISOString() || null + }; + const savedMaintenance = await maintenanceService.create(maintenanceData); toast.current?.show({ severity: 'success', diff --git a/app/(main)/maintenances/page.tsx b/app/(main)/maintenances/page.tsx index 0865829..66235bd 100644 --- a/app/(main)/maintenances/page.tsx +++ b/app/(main)/maintenances/page.tsx @@ -72,7 +72,7 @@ const MaintenancesPage = () => { setMaintenance({ type: TypeMaintenance.PREVENTIVE, statut: StatutMaintenance.PLANIFIEE, - datePrevue: new Date(), + datePrevue: new Date().toISOString(), cout: 0 }); setSubmitted(false); @@ -223,7 +223,7 @@ const MaintenancesPage = () => { }; const dateRealisationBodyTemplate = (rowData: MaintenanceMateriel) => { - return formatDate(rowData.dateRealisation); + return formatDate(rowData.dateRealisee); }; const actionBodyTemplate = (rowData: MaintenanceMateriel) => { @@ -250,10 +250,12 @@ const MaintenancesPage = () => { return 'success'; case TypeMaintenance.CORRECTIVE: return 'danger'; - case TypeMaintenance.PREDICTIVE: + case TypeMaintenance.REVISION: return 'info'; - case TypeMaintenance.CURATIVE: + case TypeMaintenance.CONTROLE_TECHNIQUE: return 'warning'; + case TypeMaintenance.NETTOYAGE: + return 'secondary'; default: return undefined; } @@ -366,6 +368,7 @@ const MaintenancesPage = () => { value={maintenances} selection={selectedMaintenances} onSelectionChange={(e) => setSelectedMaintenances(e.value)} + selectionMode="checkbox" dataKey="id" paginator rows={10} @@ -450,11 +453,11 @@ const MaintenancesPage = () => {
- + onDateChange(e, 'dateRealisation')} + id="dateRealisee" + value={maintenance.dateRealisee ? new Date(maintenance.dateRealisee) : null} + onChange={(e) => onDateChange(e, 'dateRealisee')} dateFormat="dd/mm/yy" showIcon /> diff --git a/app/(main)/maintenances/planifiees/page.tsx b/app/(main)/maintenances/planifiees/page.tsx index 4a82d03..f540ca2 100644 --- a/app/(main)/maintenances/planifiees/page.tsx +++ b/app/(main)/maintenances/planifiees/page.tsx @@ -92,7 +92,7 @@ const MaintenancesPlanifieesPage = () => { const updatedMaintenance = { ...maintenance, - datePrevue: nouvelleDate, + datePrevue: nouvelleDate.toISOString(), notes: `${maintenance.notes || ''}\nReportée le ${formatDate(new Date())}` }; @@ -311,7 +311,7 @@ const MaintenancesPlanifieesPage = () => {
{m.materiel?.nom}
{m.description}
- +
) })); @@ -394,6 +394,7 @@ const MaintenancesPlanifieesPage = () => { value={maintenances} selection={selectedMaintenances} onSelectionChange={(e) => setSelectedMaintenances(e.value)} + selectionMode="checkbox" dataKey="id" paginator rows={10} diff --git a/app/(main)/materiels/disponibles/page.tsx b/app/(main)/materiels/disponibles/page.tsx index 98c73f6..31f7042 100644 --- a/app/(main)/materiels/disponibles/page.tsx +++ b/app/(main)/materiels/disponibles/page.tsx @@ -142,14 +142,18 @@ const MaterielsDisponiblesPage = () => { switch (type) { case TypeMateriel.ENGIN_CHANTIER: return 'danger'; - case TypeMateriel.OUTILLAGE: + case TypeMateriel.OUTIL_ELECTRIQUE: + case TypeMateriel.OUTIL_MANUEL: return 'warning'; case TypeMateriel.EQUIPEMENT_SECURITE: return 'success'; case TypeMateriel.VEHICULE: return 'info'; + case TypeMateriel.GRUE: + case TypeMateriel.BETONIERE: + return 'danger'; default: - return undefined; + return 'secondary'; } }; @@ -295,6 +299,7 @@ const MaterielsDisponiblesPage = () => { value={materiels} selection={selectedMateriels} onSelectionChange={(e) => setSelectedMateriels(e.value)} + selectionMode="checkbox" dataKey="id" paginator rows={10} diff --git a/app/(main)/materiels/maintenance-prevue/page.tsx b/app/(main)/materiels/maintenance-prevue/page.tsx index b5a0be4..6eb1db8 100644 --- a/app/(main)/materiels/maintenance-prevue/page.tsx +++ b/app/(main)/materiels/maintenance-prevue/page.tsx @@ -52,7 +52,7 @@ const MaintenancePrevuePage = () => { materiel: materiel, type: TypeMaintenance.PREVENTIVE, description: `Maintenance préventive programmée pour ${materiel.nom}`, - datePrevue: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000) // Dans 7 jours + datePrevue: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString() // Dans 7 jours }; await maintenanceService.create(maintenanceData); @@ -98,7 +98,7 @@ const MaintenancePrevuePage = () => { } const daysSinceLastMaintenance = Math.floor( - (Date.now() - new Date(derniereMaintenance.dateRealisation || derniereMaintenance.datePrevue).getTime()) / (1000 * 60 * 60 * 24) + (Date.now() - new Date(derniereMaintenance.dateRealisee || derniereMaintenance.datePrevue).getTime()) / (1000 * 60 * 60 * 24) ); if (daysSinceLastMaintenance > 90) { @@ -115,7 +115,7 @@ const MaintenancePrevuePage = () => { if (!derniereMaintenance) { return Aucune; } - return formatDate(derniereMaintenance.dateRealisation || derniereMaintenance.datePrevue); + return formatDate(derniereMaintenance.dateRealisee || derniereMaintenance.datePrevue); }; const actionBodyTemplate = (rowData: Materiel) => { @@ -146,7 +146,7 @@ const MaintenancePrevuePage = () => { materiel: materiel, type: TypeMaintenance.CORRECTIVE, description: `Panne signalée sur ${materiel.nom}`, - datePrevue: new Date() // Immédiatement + datePrevue: new Date().toISOString() // Immédiatement }; await maintenanceService.create(maintenanceData); @@ -171,14 +171,18 @@ const MaintenancePrevuePage = () => { switch (type) { case TypeMateriel.ENGIN_CHANTIER: return 'danger'; - case TypeMateriel.OUTILLAGE: + case TypeMateriel.OUTIL_ELECTRIQUE: + case TypeMateriel.OUTIL_MANUEL: return 'warning'; case TypeMateriel.EQUIPEMENT_SECURITE: return 'success'; case TypeMateriel.VEHICULE: return 'info'; + case TypeMateriel.GRUE: + case TypeMateriel.BETONIERE: + return 'danger'; default: - return undefined; + return 'secondary'; } }; @@ -237,7 +241,7 @@ const MaintenancePrevuePage = () => { const derniereMaintenance = m.maintenances?.[0]; if (!derniereMaintenance) return true; const daysSince = Math.floor( - (Date.now() - new Date(derniereMaintenance.dateRealisation || derniereMaintenance.datePrevue).getTime()) / (1000 * 60 * 60 * 24) + (Date.now() - new Date(derniereMaintenance.dateRealisee || derniereMaintenance.datePrevue).getTime()) / (1000 * 60 * 60 * 24) ); return daysSince > 60; }).length; @@ -246,7 +250,7 @@ const MaintenancePrevuePage = () => { const derniereMaintenance = m.maintenances?.[0]; if (!derniereMaintenance) return true; const daysSince = Math.floor( - (Date.now() - new Date(derniereMaintenance.dateRealisation || derniereMaintenance.datePrevue).getTime()) / (1000 * 60 * 60 * 24) + (Date.now() - new Date(derniereMaintenance.dateRealisee || derniereMaintenance.datePrevue).getTime()) / (1000 * 60 * 60 * 24) ); return daysSince > 90; }).length; @@ -311,6 +315,7 @@ const MaintenancePrevuePage = () => { value={materiels} selection={selectedMateriels} onSelectionChange={(e) => setSelectedMateriels(e.value)} + selectionMode="checkbox" dataKey="id" paginator rows={10} diff --git a/app/(main)/materiels/page.tsx b/app/(main)/materiels/page.tsx index 8152751..1245213 100644 --- a/app/(main)/materiels/page.tsx +++ b/app/(main)/materiels/page.tsx @@ -65,9 +65,7 @@ const MaterielsPage = () => { const openNew = () => { setMateriel({ statut: StatutMateriel.DISPONIBLE, - actif: true, - quantiteStock: 0, - seuilMinimum: 0 + actif: true }); setSubmitted(false); setMaterielDialog(true); @@ -234,14 +232,18 @@ const MaterielsPage = () => { switch (type) { case TypeMateriel.ENGIN_CHANTIER: return 'danger'; - case TypeMateriel.OUTILLAGE: + case TypeMateriel.OUTIL_ELECTRIQUE: + case TypeMateriel.OUTIL_MANUEL: return 'warning'; case TypeMateriel.EQUIPEMENT_SECURITE: return 'success'; case TypeMateriel.VEHICULE: return 'info'; + case TypeMateriel.GRUE: + case TypeMateriel.BETONIERE: + return 'danger'; default: - return undefined; + return 'secondary'; } }; @@ -249,12 +251,15 @@ const MaterielsPage = () => { switch (statut) { case StatutMateriel.DISPONIBLE: return 'success'; - case StatutMateriel.EN_UTILISATION: + case StatutMateriel.UTILISE: return 'warning'; - case StatutMateriel.EN_MAINTENANCE: + case StatutMateriel.MAINTENANCE: + case StatutMateriel.EN_REPARATION: return 'info'; case StatutMateriel.HORS_SERVICE: return 'danger'; + case StatutMateriel.RESERVE: + return 'secondary'; default: return undefined; } @@ -347,6 +352,7 @@ const MaterielsPage = () => { value={materiels} selection={selectedMateriels} onSelectionChange={(e) => setSelectedMateriels(e.value)} + selectionMode="checkbox" dataKey="id" paginator rows={10} @@ -505,17 +511,6 @@ const MaterielsPage = () => { />
-
- - onInputNumberChange(e.value, 'quantiteStock')} - min={0} - showButtons - /> -
-
{ const currentYear = new Date().getFullYear(); maintenances.forEach(maintenance => { - const date = new Date(maintenance.dateRealisation || maintenance.datePrevue); + const date = new Date(maintenance.dateRealisee || maintenance.datePrevue); if (date.getFullYear() === currentYear) { monthlyMaintenance[date.getMonth()]++; } @@ -173,14 +173,18 @@ const MaterielsStatsPage = () => { switch (type) { case TypeMateriel.ENGIN_CHANTIER: return 'danger'; - case TypeMateriel.OUTILLAGE: + case TypeMateriel.OUTIL_ELECTRIQUE: + case TypeMateriel.OUTIL_MANUEL: return 'warning'; case TypeMateriel.EQUIPEMENT_SECURITE: return 'success'; case TypeMateriel.VEHICULE: return 'info'; + case TypeMateriel.GRUE: + case TypeMateriel.BETONIERE: + return 'danger'; default: - return undefined; + return 'secondary'; } }; @@ -194,12 +198,12 @@ const MaterielsStatsPage = () => { ? (materiels.filter(m => m.statut === StatutMateriel.DISPONIBLE).length / materiels.length) * 100 : 0; - const tauxMaintenance = materiels.length > 0 - ? (materiels.filter(m => m.statut === StatutMateriel.EN_MAINTENANCE).length / materiels.length) * 100 + const tauxMaintenance = materiels.length > 0 + ? (materiels.filter(m => m.statut === StatutMateriel.MAINTENANCE || m.statut === StatutMateriel.EN_REPARATION).length / materiels.length) * 100 : 0; - const tauxUtilisation = materiels.length > 0 - ? (materiels.filter(m => m.statut === StatutMateriel.EN_UTILISATION).length / materiels.length) * 100 + const tauxUtilisation = materiels.length > 0 + ? (materiels.filter(m => m.statut === StatutMateriel.UTILISE).length / materiels.length) * 100 : 0; return ( @@ -302,7 +306,7 @@ const MaterielsStatsPage = () => {
- {materiels.filter(m => m.statut === StatutMateriel.EN_UTILISATION).length} / {materiels.length} en utilisation + {materiels.filter(m => m.statut === StatutMateriel.UTILISE).length} / {materiels.length} en utilisation
@@ -316,7 +320,7 @@ const MaterielsStatsPage = () => {
- {materiels.filter(m => m.statut === StatutMateriel.EN_MAINTENANCE).length} / {materiels.length} en maintenance + {materiels.filter(m => m.statut === StatutMateriel.MAINTENANCE || m.statut === StatutMateriel.EN_REPARATION).length} / {materiels.length} en maintenance
diff --git a/app/(main)/notifications/page.tsx b/app/(main)/notifications/page.tsx index b53425c..1da6d7e 100644 --- a/app/(main)/notifications/page.tsx +++ b/app/(main)/notifications/page.tsx @@ -233,6 +233,7 @@ const NotificationsPage = () => { value={notifications} selection={selectedNotifications} onSelectionChange={(e) => setSelectedNotifications(e.value)} + selectionMode="checkbox" dataKey="id" paginator rows={10} diff --git a/app/(main)/page.tsx b/app/(main)/page.tsx index cc2b85e..b4fcfed 100644 --- a/app/(main)/page.tsx +++ b/app/(main)/page.tsx @@ -514,7 +514,7 @@ const LandingPage: Page = () => { /> BTPXpress
- +
diff --git a/app/(main)/phases-chantier/page.tsx b/app/(main)/phases-chantier/page.tsx index 286c31c..311fb7f 100644 --- a/app/(main)/phases-chantier/page.tsx +++ b/app/(main)/phases-chantier/page.tsx @@ -59,7 +59,8 @@ const PhasesChantierPage: Page = () => { budgetPrevu: 0, statut: 'PLANIFIEE' as StatutPhase, critique: false, - notes: '' + notes: '', + ordreExecution: 1 }); const statutOptions = [ @@ -106,7 +107,8 @@ const PhasesChantierPage: Page = () => { budgetPrevu: 0, statut: 'PLANIFIEE', critique: false, - notes: '' + notes: '', + ordreExecution: 1 }); setSubmitted(false); setPhaseDialog(true); @@ -122,7 +124,8 @@ const PhasesChantierPage: Page = () => { budgetPrevu: phase.budgetPrevu || 0, statut: phase.statut, critique: phase.critique || false, - notes: phase.notes || '' + notes: phase.notes || '', + ordreExecution: phase.ordreExecution || 1 }); setSubmitted(false); setPhaseDialog(true); @@ -136,7 +139,7 @@ const PhasesChantierPage: Page = () => { const deletePhase = async () => { try { if (currentPhase?.id) { - await phaseChantierService.delete(currentPhase.id); + await phaseChantierService.delete(Number(currentPhase.id)); await loadPhases(); toast.current?.show({ severity: 'success', @@ -175,11 +178,12 @@ const PhasesChantierPage: Page = () => { ...formData, dateDebutPrevue: formData.dateDebutPrevue?.toISOString(), dateFinPrevue: formData.dateFinPrevue?.toISOString(), - chantierId: 1 // ID exemple - en production, viendrait du contexte + chantierId: '1', // ID exemple - en production, viendrait du contexte + ordreExecution: formData.ordreExecution || 1 }; if (currentPhase?.id) { - await phaseChantierService.update(currentPhase.id, phaseData); + await phaseChantierService.update(Number(currentPhase.id), phaseData); } else { await phaseChantierService.create(phaseData); } @@ -224,7 +228,7 @@ const PhasesChantierPage: Page = () => { const startPhase = async (phase: PhaseChantier) => { try { if (phase.id) { - await phaseChantierService.start(phase.id); + await phaseChantierService.start(Number(phase.id)); await loadPhases(); toast.current?.show({ severity: 'success', @@ -246,7 +250,7 @@ const PhasesChantierPage: Page = () => { const completePhase = async (phase: PhaseChantier) => { try { if (phase.id) { - await phaseChantierService.complete(phase.id); + await phaseChantierService.complete(Number(phase.id)); await loadPhases(); toast.current?.show({ severity: 'success', @@ -268,7 +272,7 @@ const PhasesChantierPage: Page = () => { const suspendPhase = async (phase: PhaseChantier) => { try { if (phase.id) { - await phaseChantierService.suspend(phase.id); + await phaseChantierService.suspend(Number(phase.id)); await loadPhases(); toast.current?.show({ severity: 'success', @@ -371,10 +375,9 @@ const PhasesChantierPage: Page = () => { const retard = phaseChantierService.calculateRetard(rowData); return ( - ); }; @@ -492,6 +495,7 @@ const PhasesChantierPage: Page = () => { value={phases} selection={selectedPhases} onSelectionChange={(e) => setSelectedPhases(e.value as PhaseChantier[])} + selectionMode="checkbox" dataKey="id" paginator rows={10}