Files
Starseed/frontend/modules/commercial/composables/useSuppliersRepository.ts
T
tristan 79d389834b
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 2m6s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m10s
feat(front) : page Répertoire fournisseurs (/suppliers) + datatable + filtres + export (ERP-93)
2026-06-09 22:05:56 +02:00

55 lines
2.0 KiB
TypeScript

import { usePaginatedList } from '~/shared/composables/usePaginatedList'
/**
* Site Starseed rattache a une adresse du fournisseur, tel qu'embarque en LISTE
* (groupe site:read) pour la colonne « Site » du Repertoire (badges colores).
* Agrege des adresses cote back via Supplier::getSites() (cf. spec-back M2).
*/
export interface SupplierSite {
id: number
name: string
color: string
}
/**
* Categorie (type FOURNISSEUR) rattachee au fournisseur, embarquee en LISTE
* (groupe category:read). La colonne « Catégories » affiche le `name` (et non le
* `code` comme au M1 clients — decision spec-front M2 § Datatable).
*/
export interface SupplierCategory {
code: string
name: string
}
/**
* Vue MINIMALE d'un fournisseur pour le Repertoire (datatable). Volontairement
* partielle : seuls les champs des colonnes + l'id (navigation) sont types ici.
* Le detail complet (onglets) est hors perimetre de cet ecran (ERP-93).
*/
export interface Supplier {
id: number
companyName: string
categories: SupplierCategory[]
sites: SupplierSite[]
/** Date ISO de derniere modification (default:read) — colonne « Dernière activité ». */
updatedAt: string | null
isArchived: boolean
}
/**
* Repertoire fournisseurs (ERP-93) — simple enveloppe de `usePaginatedList<Supplier>`
* sur la ressource `/suppliers` (RG-13 : pagination serveur obligatoire ; jamais
* de chargement integral en memoire). Miroir de `useClientsRepository` (M1).
*
* Les filtres (recherche, categories, sites, inclusion des archives) sont pilotes
* par la page via `setFilters` du composable partage — la remise en page 1 est
* garantie.
*
* Volontairement PAR INSTANCE (pas de singleton module-level) : l'etat tableau
* est propre a l'ecran Repertoire et meurt avec lui, comme tout consommateur de
* `usePaginatedList`. Aucun reset au logout a gerer.
*/
export function useSuppliersRepository() {
return usePaginatedList<Supplier>({ url: '/suppliers' })
}