Initial commit
This commit is contained in:
561
types/btp-extended.ts
Normal file
561
types/btp-extended.ts
Normal file
@@ -0,0 +1,561 @@
|
||||
/**
|
||||
* Types TypeScript étendus pour les entités BTP
|
||||
* Version complète avec toutes les nouvelles fonctionnalités
|
||||
*/
|
||||
|
||||
// Énumérations communes
|
||||
export type TypeFournisseur = 'MATERIEL' | 'SERVICE' | 'SOUS_TRAITANT' | 'LOCATION' | 'TRANSPORT' | 'CONSOMMABLE';
|
||||
export type StatutCommande = 'BROUILLON' | 'ENVOYEE' | 'CONFIRMEE' | 'PARTIELLEMENT_LIVREE' | 'LIVREE' | 'FACTUREE' | 'ANNULEE';
|
||||
export type StatutLivraison = 'PROGRAMMEE' | 'EN_COURS' | 'LIVREE' | 'RECEPTIONNEE' | 'REFUSEE';
|
||||
export type StatutPhase = 'PLANIFIEE' | 'EN_ATTENTE' | 'EN_COURS' | 'EN_PAUSE' | 'TERMINEE' | 'ANNULEE' | 'EN_RETARD';
|
||||
export type StatutSituation = 'BROUILLON' | 'ETABLIE' | 'ENVOYEE' | 'VALIDEE' | 'FACTUREE' | 'PAYEE' | 'CONTESTEE' | 'ANNULEE';
|
||||
export type TypeDocument = 'PLAN' | 'PERMIS' | 'DEVIS' | 'FACTURE' | 'CONTRAT' | 'PHOTO_CHANTIER' | 'RAPPORT_VISITE' | 'PV_RECEPTION' | 'FICHE_TECHNIQUE' | 'CERTIFICAT' | 'ASSURANCE' | 'MANUEL' | 'GARANTIE' | 'COMPTE_RENDU' | 'EMAIL' | 'COURRIER' | 'BON_LIVRAISON' | 'BON_COMMANDE' | 'AUTRE';
|
||||
export type TypeMouvement = 'ENTREE_ACHAT' | 'ENTREE_RETOUR' | 'ENTREE_CORRECTION' | 'ENTREE_TRANSFERT' | 'SORTIE_CHANTIER' | 'SORTIE_VENTE' | 'SORTIE_PERTE' | 'SORTIE_CORRECTION' | 'SORTIE_TRANSFERT' | 'INVENTAIRE';
|
||||
export type TypeAlerte = 'STOCK_MINIMUM' | 'STOCK_ZERO' | 'STOCK_NEGATIF' | 'PEREMPTION_PROCHE' | 'PEREMPTION_DEPASSEE' | 'CONSOMMATION_ANORMALE' | 'IMMOBILISATION_LONGUE';
|
||||
export type NiveauSeverite = 'INFO' | 'WARNING' | 'CRITICAL' | 'URGENT';
|
||||
export type TypeJalon = 'DEBUT_PHASE' | 'FIN_PHASE' | 'LIVRAISON' | 'VALIDATION_CLIENT' | 'CONTROLE_QUALITE' | 'RECEPTION_TRAVAUX' | 'PAIEMENT' | 'AUTORISATION' | 'FORMATION' | 'AUTRE';
|
||||
export type StatutJalon = 'PLANIFIE' | 'EN_COURS' | 'ATTEINT' | 'EN_RETARD' | 'REPORTE' | 'ANNULE';
|
||||
export type TypePointage = 'TRAVAIL' | 'DEPLACEMENT' | 'FORMATION' | 'REUNION' | 'MAINTENANCE' | 'ARRET_TECHNIQUE' | 'INTEMPERIES' | 'AUTRE';
|
||||
|
||||
// Interfaces pour la gestion des fournisseurs
|
||||
export interface Fournisseur {
|
||||
id?: number;
|
||||
nom: string;
|
||||
siret?: string;
|
||||
numeroTva?: string;
|
||||
email?: string;
|
||||
telephone?: string;
|
||||
fax?: string;
|
||||
adresse?: string;
|
||||
codePostal?: string;
|
||||
ville?: string;
|
||||
pays?: string;
|
||||
contactPrincipal?: string;
|
||||
type: TypeFournisseur;
|
||||
notes?: string;
|
||||
actif?: boolean;
|
||||
delaiPaiementJours?: number;
|
||||
conditionsPaiement?: string;
|
||||
dateCreation?: Date;
|
||||
dateModification?: Date;
|
||||
nombreCommandes?: number;
|
||||
nombreArticlesCatalogue?: number;
|
||||
}
|
||||
|
||||
export interface CommandeFournisseur {
|
||||
id?: number;
|
||||
numeroCommande: string;
|
||||
fournisseur: Fournisseur;
|
||||
chantier?: any; // Import du type Chantier existant
|
||||
dateCommande: Date;
|
||||
dateLivraisonPrevue?: Date;
|
||||
dateLivraisonReelle?: Date;
|
||||
statut: StatutCommande;
|
||||
montantHT: number;
|
||||
montantTVA: number;
|
||||
montantTTC: number;
|
||||
adresseLivraison?: string;
|
||||
notes?: string;
|
||||
referenceFournisseur?: string;
|
||||
dateCreation?: Date;
|
||||
dateModification?: Date;
|
||||
lignes?: LigneCommandeFournisseur[];
|
||||
livraisons?: LivraisonFournisseur[];
|
||||
}
|
||||
|
||||
export interface LigneCommandeFournisseur {
|
||||
id?: number;
|
||||
commandeFournisseur: CommandeFournisseur;
|
||||
materiel?: any; // Import du type Materiel existant
|
||||
designation: string;
|
||||
reference?: string;
|
||||
quantite: number;
|
||||
unite: string;
|
||||
prixUnitaireHT: number;
|
||||
tauxTVA: number;
|
||||
quantiteLivree?: number;
|
||||
notes?: string;
|
||||
montantHT?: number;
|
||||
montantTVA?: number;
|
||||
montantTTC?: number;
|
||||
}
|
||||
|
||||
export interface LivraisonFournisseur {
|
||||
id?: number;
|
||||
numeroLivraison: string;
|
||||
commandeFournisseur: CommandeFournisseur;
|
||||
dateLivraison: Date;
|
||||
nomLivreur?: string;
|
||||
numeroBonLivraison?: string;
|
||||
adresseLivraison?: string;
|
||||
statut: StatutLivraison;
|
||||
notes?: string;
|
||||
receptionneePar?: string;
|
||||
dateReception?: Date;
|
||||
conforme?: boolean;
|
||||
notesReception?: string;
|
||||
dateCreation?: Date;
|
||||
dateModification?: Date;
|
||||
lignes?: LigneLivraisonFournisseur[];
|
||||
}
|
||||
|
||||
export interface LigneLivraisonFournisseur {
|
||||
id?: number;
|
||||
livraisonFournisseur: LivraisonFournisseur;
|
||||
ligneCommande: LigneCommandeFournisseur;
|
||||
quantiteLivree: number;
|
||||
quantiteAcceptee?: number;
|
||||
quantiteRefusee?: number;
|
||||
motifRefus?: string;
|
||||
notes?: string;
|
||||
}
|
||||
|
||||
export interface CatalogueItem {
|
||||
id?: number;
|
||||
fournisseur: Fournisseur;
|
||||
materiel?: any; // Import du type Materiel existant
|
||||
designation: string;
|
||||
referenceFournisseur?: string;
|
||||
codeEAN?: string;
|
||||
description?: string;
|
||||
unite: string;
|
||||
prixUnitaireHT?: number;
|
||||
tauxTVA?: number;
|
||||
delaiLivraisonJours?: number;
|
||||
quantiteMinimumCommande?: number;
|
||||
conditionnement?: number;
|
||||
marque?: string;
|
||||
modele?: string;
|
||||
urlFicheTechnique?: string;
|
||||
actif?: boolean;
|
||||
derniereMiseAJourPrix?: Date;
|
||||
dateCreation?: Date;
|
||||
dateModification?: Date;
|
||||
categories?: string[];
|
||||
}
|
||||
|
||||
// Interfaces pour la gestion des phases de chantier
|
||||
export interface PhaseChantier {
|
||||
id?: string;
|
||||
nom: string;
|
||||
description?: string;
|
||||
chantier?: any; // Import du type Chantier existant
|
||||
chantierId?: string;
|
||||
phaseParent?: string; // ID de la phase parent
|
||||
sousPhases?: PhaseChantier[];
|
||||
ordreExecution: number;
|
||||
dateDebutPrevue: string; // ISO string format
|
||||
dateFinPrevue: string; // ISO string format
|
||||
dateDebutReelle?: string;
|
||||
dateFinReelle?: string;
|
||||
statut: StatutPhase;
|
||||
pourcentageAvancement?: number;
|
||||
budgetPrevu?: number;
|
||||
coutReel?: number;
|
||||
responsable?: any; // Import du type Employe existant
|
||||
equipes?: any[]; // Import du type Equipe existant
|
||||
prerequis?: string;
|
||||
livrables?: string;
|
||||
risques?: string;
|
||||
notes?: string;
|
||||
critique?: boolean;
|
||||
dateCreation?: string; // ISO string format
|
||||
dateModification?: string; // ISO string format
|
||||
actif?: boolean;
|
||||
// Propriétés étendues pour la création de phases
|
||||
dureeEstimeeHeures?: number;
|
||||
priorite?: string; // ou enum selon votre système
|
||||
prerequisPhases?: string[]; // Liste des IDs des phases prérequises
|
||||
competencesRequises?: string[];
|
||||
materielsNecessaires?: string[];
|
||||
fournisseursRecommandes?: string[];
|
||||
jalons?: JalonPhase[];
|
||||
pointages?: PointagePhase[];
|
||||
// Nouveaux champs pour la gestion avancée des coûts et matériels
|
||||
materielsRequis?: MaterielPhase[];
|
||||
fournisseursAssocies?: FournisseurPhase[];
|
||||
coutMateriau?: number;
|
||||
coutMainOeuvre?: number;
|
||||
coutSousTraitance?: number;
|
||||
coutAutres?: number;
|
||||
margePrevieweBrute?: number;
|
||||
margePrevueNette?: number;
|
||||
margeReelle?: number;
|
||||
tauxMarge?: number;
|
||||
prixVenteUnitaire?: number;
|
||||
quantitePrevue?: number;
|
||||
quantiteReelle?: number;
|
||||
unite?: string;
|
||||
}
|
||||
|
||||
export interface JalonPhase {
|
||||
id?: number;
|
||||
nom: string;
|
||||
description?: string;
|
||||
phase: PhaseChantier;
|
||||
typeJalon: TypeJalon;
|
||||
datePrevue: Date;
|
||||
dateReelle?: Date;
|
||||
statut: StatutJalon;
|
||||
critique?: boolean;
|
||||
responsable?: string;
|
||||
livrablesRequis?: string;
|
||||
criteresValidation?: string;
|
||||
notesValidation?: string;
|
||||
validePar?: string;
|
||||
dateValidation?: Date;
|
||||
notes?: string;
|
||||
dateCreation?: Date;
|
||||
dateModification?: Date;
|
||||
}
|
||||
|
||||
export interface PointagePhase {
|
||||
id?: number;
|
||||
phase: PhaseChantier;
|
||||
employe: any; // Import du type Employe existant
|
||||
date: Date;
|
||||
heureDebut?: string;
|
||||
heureFin?: string;
|
||||
heuresTravaillees?: number;
|
||||
heuresSupplementaires?: number;
|
||||
typePointage: TypePointage;
|
||||
description?: string;
|
||||
tauxHoraire?: number;
|
||||
coutTotal?: number;
|
||||
valide?: boolean;
|
||||
validePar?: string;
|
||||
dateValidation?: Date;
|
||||
facture?: boolean;
|
||||
factureAssociee?: any; // Import du type Facture existant
|
||||
notes?: string;
|
||||
dateCreation?: Date;
|
||||
}
|
||||
|
||||
// Interfaces pour la gestion avancée des matériels et fournisseurs de phases
|
||||
export interface MaterielPhase {
|
||||
id?: number;
|
||||
phase: PhaseChantier;
|
||||
materiel?: any; // Import du type Materiel existant
|
||||
designation: string;
|
||||
reference?: string;
|
||||
quantitePrevue: number;
|
||||
quantiteUtilisee?: number;
|
||||
unite: string;
|
||||
prixUnitaireCatalogue?: number;
|
||||
prixUnitaireNegocie?: number;
|
||||
coutTotal?: number;
|
||||
fournisseurPrincipal?: Fournisseur;
|
||||
fournisseursAlternatifs?: FournisseurPhase[];
|
||||
delaiLivraison?: number;
|
||||
enStock?: boolean;
|
||||
quantiteStock?: number;
|
||||
seuilCritique?: number;
|
||||
categorie?: string;
|
||||
specifications?: string;
|
||||
dateCreation?: Date;
|
||||
dateModification?: Date;
|
||||
}
|
||||
|
||||
export interface FournisseurPhase {
|
||||
id?: number;
|
||||
phase: PhaseChantier;
|
||||
fournisseur: Fournisseur;
|
||||
materielPhase?: MaterielPhase;
|
||||
typeContribution: 'MATERIEL' | 'SERVICE' | 'SOUS_TRAITANCE' | 'LOCATION' | 'TRANSPORT';
|
||||
prixCatalogue?: number;
|
||||
prixNegocie?: number;
|
||||
remise?: number;
|
||||
tauxRemise?: number;
|
||||
delaiLivraison?: number;
|
||||
conditionsPaiement?: string;
|
||||
garantie?: string;
|
||||
notes?: string;
|
||||
priorite?: number; // 1 = principal, 2 = alternatif, etc.
|
||||
valide?: boolean;
|
||||
dateNegociation?: Date;
|
||||
validePar?: string;
|
||||
dateCreation?: Date;
|
||||
dateModification?: Date;
|
||||
}
|
||||
|
||||
export interface AnalysePrixPhase {
|
||||
id?: number;
|
||||
phase: PhaseChantier;
|
||||
coutMateriauxTotal: number;
|
||||
coutMainOeuvreTotal: number;
|
||||
coutSousTraitanceTotal: number;
|
||||
coutAutresTotal: number;
|
||||
coutTotalDirect: number;
|
||||
fraisGeneraux?: number;
|
||||
tauxFraisGeneraux?: number;
|
||||
coutTotalAvecFrais: number;
|
||||
margeObjectif?: number;
|
||||
tauxMargeObjectif?: number;
|
||||
prixVenteCalcule: number;
|
||||
prixVentePropose?: number;
|
||||
prixVenteAccepte?: number;
|
||||
rentabilitePrevisionnelle?: number;
|
||||
rentabiliteReelle?: number;
|
||||
dateAnalyse?: Date;
|
||||
analysePar?: string;
|
||||
validee?: boolean;
|
||||
dateValidation?: Date;
|
||||
validePar?: string;
|
||||
commentaires?: string;
|
||||
}
|
||||
|
||||
// Interfaces pour la gestion financière avancée
|
||||
export interface SituationTravaux {
|
||||
id?: number;
|
||||
numeroSituation: string;
|
||||
chantier: any; // Import du type Chantier existant
|
||||
periodeDebut: Date;
|
||||
periodeFin: Date;
|
||||
dateEtablissement: Date;
|
||||
dateEnvoi?: Date;
|
||||
dateValidationClient?: Date;
|
||||
statut: StatutSituation;
|
||||
montantHTTravaux?: number;
|
||||
montantRevisions?: number;
|
||||
montantAvenants?: number;
|
||||
montantTotalHT?: number;
|
||||
montantTVA?: number;
|
||||
montantTTC?: number;
|
||||
tauxRetenueGarantie?: number;
|
||||
montantRetenueGarantie?: number;
|
||||
montantAcomptesPrecedents?: number;
|
||||
montantNetAPayer?: number;
|
||||
pourcentageAvancement?: number;
|
||||
observations?: string;
|
||||
etabliPar?: string;
|
||||
valideParClient?: string;
|
||||
delaiPaiementJours?: number;
|
||||
dateEcheancePaiement?: Date;
|
||||
dateCreation?: Date;
|
||||
dateModification?: Date;
|
||||
lignes?: LigneSituationTravaux[];
|
||||
factureGeneree?: any; // Import du type Facture existant
|
||||
}
|
||||
|
||||
export interface LigneSituationTravaux {
|
||||
id?: number;
|
||||
situationTravaux: SituationTravaux;
|
||||
ligneDevis?: any; // Import du type LigneDevis existant
|
||||
designation: string;
|
||||
quantitePrevue?: number;
|
||||
quantiteRealisee?: number;
|
||||
quantitePrecedente?: number;
|
||||
quantitePeriode?: number;
|
||||
unite: string;
|
||||
prixUnitaireHT: number;
|
||||
tauxTVA: number;
|
||||
pourcentageAvancement?: number;
|
||||
observations?: string;
|
||||
montantHT?: number;
|
||||
montantTVA?: number;
|
||||
montantTTC?: number;
|
||||
montantHTPrecedent?: number;
|
||||
montantHTPeriode?: number;
|
||||
}
|
||||
|
||||
// Interfaces pour la gestion du stock avancée
|
||||
export interface MouvementStock {
|
||||
id?: number;
|
||||
materiel: any; // Import du type Materiel existant
|
||||
typeMouvement: TypeMouvement;
|
||||
quantite: number;
|
||||
prixUnitaire?: number;
|
||||
chantier?: any; // Import du type Chantier existant
|
||||
employe?: any; // Import du type Employe existant
|
||||
fournisseur?: Fournisseur;
|
||||
commandeFournisseur?: CommandeFournisseur;
|
||||
referenceDocument?: string;
|
||||
emplacement?: string;
|
||||
motif?: string;
|
||||
utilisateur: string;
|
||||
stockAvant?: number;
|
||||
stockApres?: number;
|
||||
valeurMouvement?: number;
|
||||
dateMouvement?: Date;
|
||||
annule?: boolean;
|
||||
dateAnnulation?: Date;
|
||||
annulePar?: string;
|
||||
motifAnnulation?: string;
|
||||
}
|
||||
|
||||
export interface AlerteStock {
|
||||
id?: number;
|
||||
materiel: any; // Import du type Materiel existant
|
||||
typeAlerte: TypeAlerte;
|
||||
niveauSeverite: NiveauSeverite;
|
||||
message: string;
|
||||
quantiteActuelle?: number;
|
||||
seuil?: number;
|
||||
active?: boolean;
|
||||
acquittee?: boolean;
|
||||
dateAcquittement?: Date;
|
||||
acquitteePar?: string;
|
||||
actionsEntreprises?: string;
|
||||
dateCreation?: Date;
|
||||
dateModification?: Date;
|
||||
dateDerniereNotification?: Date;
|
||||
nombreNotifications?: number;
|
||||
}
|
||||
|
||||
// Interfaces pour la gestion documentaire
|
||||
export interface Document {
|
||||
id?: number;
|
||||
nom: string;
|
||||
description?: string;
|
||||
typeDocument: TypeDocument;
|
||||
cheminFichier: string;
|
||||
nomFichier: string;
|
||||
typeMime?: string;
|
||||
tailleFichier?: number;
|
||||
version?: number;
|
||||
numeroVersion?: string;
|
||||
estVersionCourante?: boolean;
|
||||
chantier?: any; // Import du type Chantier existant
|
||||
client?: any; // Import du type Client existant
|
||||
fournisseur?: Fournisseur;
|
||||
employe?: any; // Import du type Employe existant
|
||||
documentParent?: Document;
|
||||
versions?: Document[];
|
||||
confidentiel?: boolean;
|
||||
dateExpiration?: Date;
|
||||
motsCles?: string;
|
||||
checksum?: string;
|
||||
dateCreation?: Date;
|
||||
dateModification?: Date;
|
||||
creePar?: string;
|
||||
modifiePar?: string;
|
||||
}
|
||||
|
||||
// Interfaces pour les libellés et options
|
||||
export interface TypeFournisseurOption {
|
||||
value: TypeFournisseur;
|
||||
label: string;
|
||||
}
|
||||
|
||||
export interface StatutOption {
|
||||
value: string;
|
||||
label: string;
|
||||
color?: string;
|
||||
}
|
||||
|
||||
// Constantes pour les libellés
|
||||
export const TYPE_FOURNISSEUR_LABELS: Record<TypeFournisseur, string> = {
|
||||
MATERIEL: 'Matériel',
|
||||
SERVICE: 'Service',
|
||||
SOUS_TRAITANT: 'Sous-traitant',
|
||||
LOCATION: 'Location',
|
||||
TRANSPORT: 'Transport',
|
||||
CONSOMMABLE: 'Consommable'
|
||||
};
|
||||
|
||||
export const STATUT_COMMANDE_LABELS: Record<StatutCommande, string> = {
|
||||
BROUILLON: 'Brouillon',
|
||||
ENVOYEE: 'Envoyée',
|
||||
CONFIRMEE: 'Confirmée',
|
||||
PARTIELLEMENT_LIVREE: 'Partiellement livrée',
|
||||
LIVREE: 'Livrée',
|
||||
FACTUREE: 'Facturée',
|
||||
ANNULEE: 'Annulée'
|
||||
};
|
||||
|
||||
export const STATUT_PHASE_LABELS: Record<StatutPhase, string> = {
|
||||
PLANIFIEE: 'Planifiée',
|
||||
EN_ATTENTE: 'En attente',
|
||||
EN_COURS: 'En cours',
|
||||
EN_PAUSE: 'En pause',
|
||||
TERMINEE: 'Terminée',
|
||||
ANNULEE: 'Annulée',
|
||||
EN_RETARD: 'En retard'
|
||||
};
|
||||
|
||||
export const NIVEAU_SEVERITE_LABELS: Record<NiveauSeverite, string> = {
|
||||
INFO: 'Information',
|
||||
WARNING: 'Attention',
|
||||
CRITICAL: 'Critique',
|
||||
URGENT: 'Urgent'
|
||||
};
|
||||
|
||||
export const NIVEAU_SEVERITE_COLORS: Record<NiveauSeverite, string> = {
|
||||
INFO: '#17a2b8',
|
||||
WARNING: '#ffc107',
|
||||
CRITICAL: '#dc3545',
|
||||
URGENT: '#dc3545'
|
||||
};
|
||||
|
||||
// Types pour les réponses API
|
||||
export interface ApiResponse<T> {
|
||||
data: T;
|
||||
message?: string;
|
||||
errors?: string[];
|
||||
}
|
||||
|
||||
export interface PaginatedResponse<T> {
|
||||
data: T[];
|
||||
total: number;
|
||||
page: number;
|
||||
size: number;
|
||||
totalPages: number;
|
||||
}
|
||||
|
||||
// Types pour les formulaires
|
||||
export interface FournisseurFormData extends Omit<Fournisseur, 'id' | 'dateCreation' | 'dateModification' | 'nombreCommandes' | 'nombreArticlesCatalogue'> {}
|
||||
|
||||
export interface CommandeFournisseurFormData extends Omit<CommandeFournisseur, 'id' | 'numeroCommande' | 'dateCreation' | 'dateModification' | 'lignes' | 'livraisons'> {}
|
||||
|
||||
export interface PhaseChantierFormData extends Omit<PhaseChantier, 'id' | 'dateCreation' | 'dateModification' | 'jalons' | 'pointages' | 'sousPhases'> {
|
||||
chantierId?: string;
|
||||
phaseParentId?: string;
|
||||
}
|
||||
|
||||
// Alias for compatibility
|
||||
export interface PhaseFormData extends PhaseChantierFormData {}
|
||||
|
||||
// Types pour les filtres et recherches
|
||||
export interface FournisseurFilters {
|
||||
nom?: string;
|
||||
type?: TypeFournisseur;
|
||||
ville?: string;
|
||||
actif?: boolean;
|
||||
}
|
||||
|
||||
export interface CommandeFilters {
|
||||
numeroCommande?: string;
|
||||
fournisseurId?: number;
|
||||
chantierId?: number;
|
||||
statut?: StatutCommande;
|
||||
dateDebutCommande?: Date;
|
||||
dateFinCommande?: Date;
|
||||
}
|
||||
|
||||
export interface PhaseFilters {
|
||||
chantierId?: number;
|
||||
statut?: StatutPhase;
|
||||
responsableId?: number;
|
||||
critique?: boolean;
|
||||
enRetard?: boolean;
|
||||
}
|
||||
|
||||
// Types pour les statistiques et tableaux de bord
|
||||
export interface StatistiquesFournisseur {
|
||||
totalFournisseurs: number;
|
||||
fournisseursActifs: number;
|
||||
repartitionParType: Record<TypeFournisseur, number>;
|
||||
totalCommandes: number;
|
||||
montantTotalCommandes: number;
|
||||
}
|
||||
|
||||
export interface StatistiquesChantier {
|
||||
totalPhases: number;
|
||||
phasesEnCours: number;
|
||||
phasesEnRetard: number;
|
||||
phasesTerminees: number;
|
||||
avancementMoyen: number;
|
||||
budgetTotal: number;
|
||||
coutReel: number;
|
||||
ecartBudget: number;
|
||||
}
|
||||
Reference in New Issue
Block a user