Checkpoint: Chargement dynamique des listes de services et ventilations comptables depuis la base de données dans le formulaire d'édition de facture. Les valeurs personnalisées ajoutées dans "Administration des listes" apparaissent maintenant dans les menus déroulants.

This commit is contained in:
Manus
2026-02-11 08:56:34 -05:00
parent d02961343a
commit b93c31619f
2 changed files with 13 additions and 10 deletions

View File

@@ -16,6 +16,8 @@ export default function InvoiceDetail() {
const invoiceId = parseInt(id || "0");
const { data: invoice, isLoading } = trpc.invoices.getById.useQuery({ id: invoiceId });
const { data: departments } = trpc.departments.getByUser.useQuery();
const { data: allocations } = trpc.accountingAllocations.getByUser.useQuery();
const utils = trpc.useUtils();
const [isEditing, setIsEditing] = useState(false);
@@ -344,15 +346,14 @@ export default function InvoiceDetail() {
<Label htmlFor="serviceConcerne">Service concerné</Label>
{isEditing ? (
<select
id="serviceConcerne"
value={formData.serviceConcerne}
onChange={(e) => setFormData({ ...formData, serviceConcerne: e.target.value })}
className="w-full px-3 py-2 border rounded-md"
>
<option value="">Sélectionner...</option>
<option value="DSI">DSI</option>
<option value="TRAVAUX">TRAVAUX</option>
<option value="AUTRE">AUTRE</option>
{departments?.map((dept) => (
<option key={dept.id} value={dept.name}>{dept.name}</option>
))}
</select>
) : (
<div className="text-sm mt-1">{invoice.serviceConcerne || "-"}</div>
@@ -381,17 +382,14 @@ export default function InvoiceDetail() {
<Label htmlFor="ventilationComptable">Ventilation comptable</Label>
{isEditing ? (
<select
id="ventilationComptable"
value={formData.ventilationComptable}
onChange={(e) => setFormData({ ...formData, ventilationComptable: e.target.value })}
className="w-full px-3 py-2 border rounded-md"
>
<option value="">Sélectionner...</option>
<option value="TOUS">TOUS</option>
<option value="PA">PA</option>
<option value="HEP">HEP</option>
<option value="SANITAIRE">SANITAIRE</option>
<option value="AUTRE">AUTRE</option>
{allocations?.map((alloc) => (
<option key={alloc.id} value={alloc.name}>{alloc.name}</option>
))}
</select>
) : (
<div className="text-sm mt-1">{invoice.ventilationComptable || "-"}</div>

View File

@@ -210,3 +210,8 @@
## Bug : Erreur lors de l'ajout d'un service
- [x] Corriger la fonction initializeDefaultLists pour éviter les erreurs de duplication
- [x] Vérifier que l'ajout de services et ventilations fonctionne correctement
## Chargement dynamique des listes dans le formulaire
- [x] Modifier InvoiceDetail.tsx pour charger les listes depuis la base de données
- [x] Remplacer les valeurs codées en dur par des appels tRPC
- [x] Tester que les valeurs personnalisées apparaissent dans les menus déroulants