420 lines
No EOL
10 KiB
TypeScript
420 lines
No EOL
10 KiB
TypeScript
// lib/demo-data.ts
|
|
/**
|
|
* Système de données de démo pour l'espace paie CDDU
|
|
*
|
|
* Ce fichier contient toutes les données fictives réalistes
|
|
* pour démontrer les fonctionnalités de l'application
|
|
*/
|
|
|
|
export interface DemoUser {
|
|
id: string;
|
|
email: string;
|
|
display_name: string;
|
|
first_name: string;
|
|
}
|
|
|
|
export interface DemoOrganization {
|
|
id: string;
|
|
name: string;
|
|
api_name: string;
|
|
siret?: string;
|
|
address?: string;
|
|
}
|
|
|
|
export interface DemoEmployee {
|
|
id: string;
|
|
nom: string;
|
|
prenom: string;
|
|
email: string;
|
|
telephone?: string;
|
|
date_naissance?: string;
|
|
securite_sociale?: string;
|
|
adresse?: string;
|
|
}
|
|
|
|
export interface DemoContract {
|
|
id: string;
|
|
reference: string;
|
|
salarie_nom: string;
|
|
salarie_id: string;
|
|
production: string;
|
|
profession: string;
|
|
date_debut: string;
|
|
date_fin: string;
|
|
etat: "pre-demande" | "Reçue" | "envoye" | "signe" | "modification" | "traitee" | "en_cours";
|
|
is_multi_mois?: boolean;
|
|
regime: "CDDU_MONO" | "CDDU_MULTI" | "RG";
|
|
salaire_brut?: number;
|
|
heures_semaine?: number;
|
|
}
|
|
|
|
export interface DemoPayslip {
|
|
id: string;
|
|
contrat_id: string;
|
|
salarie_nom: string;
|
|
periode: string; // "2024-01"
|
|
salaire_brut: number;
|
|
salaire_net: number;
|
|
charges_sociales: number;
|
|
heures_travaillees: number;
|
|
statut: "en_cours" | "valide" | "paye";
|
|
}
|
|
|
|
// Données de démo
|
|
export const DEMO_USER: DemoUser = {
|
|
id: "demo-user-001",
|
|
email: "demo@odentas.fr",
|
|
display_name: "Utilisateur Démo",
|
|
first_name: "Utilisateur"
|
|
};
|
|
|
|
export const DEMO_ORGANIZATION: DemoOrganization = {
|
|
id: "demo-org-001",
|
|
name: "Compagnie Théâtrale Demo",
|
|
api_name: "compagnie-theatrale-demo",
|
|
siret: "12345678901234",
|
|
address: "123 Rue de la Scène, 75001 Paris"
|
|
};
|
|
|
|
export const DEMO_EMPLOYEES: DemoEmployee[] = [
|
|
{
|
|
id: "emp-001",
|
|
nom: "MARTIN",
|
|
prenom: "Alice",
|
|
email: "alice.martin@example.com",
|
|
telephone: "0123456789",
|
|
date_naissance: "1992-05-15",
|
|
securite_sociale: "1920515123456",
|
|
adresse: "45 Rue des Artistes, 75018 Paris"
|
|
},
|
|
{
|
|
id: "emp-002",
|
|
nom: "DUBOIS",
|
|
prenom: "Pierre",
|
|
email: "pierre.dubois@example.com",
|
|
telephone: "0987654321",
|
|
date_naissance: "1988-11-23",
|
|
securite_sociale: "1881123654321",
|
|
adresse: "67 Avenue du Spectacle, 69001 Lyon"
|
|
},
|
|
{
|
|
id: "emp-003",
|
|
nom: "LEROY",
|
|
prenom: "Sophie",
|
|
email: "sophie.leroy@example.com",
|
|
telephone: "0145678932",
|
|
date_naissance: "1995-03-08",
|
|
securite_sociale: "2950308789123",
|
|
adresse: "89 Boulevard des Comédiens, 13001 Marseille"
|
|
},
|
|
{
|
|
id: "emp-004",
|
|
nom: "BERNARD",
|
|
prenom: "Julien",
|
|
email: "julien.bernard@example.com",
|
|
telephone: "0567891234",
|
|
date_naissance: "1990-07-12",
|
|
securite_sociale: "1900712456789",
|
|
adresse: "12 Impasse de la Danse, 31000 Toulouse"
|
|
},
|
|
{
|
|
id: "emp-005",
|
|
nom: "PETIT",
|
|
prenom: "Marie",
|
|
email: "marie.petit@example.com",
|
|
telephone: "0234567891",
|
|
date_naissance: "1993-12-03",
|
|
securite_sociale: "2931203567891",
|
|
adresse: "34 Rue de la Musique, 44000 Nantes"
|
|
}
|
|
];
|
|
|
|
export const DEMO_CONTRACTS: DemoContract[] = [
|
|
{
|
|
id: "demo-cont-001",
|
|
reference: "CDDU-2024-001",
|
|
salarie_nom: "MARTIN Alice",
|
|
salarie_id: "emp-001",
|
|
production: "Les Misérables - Tournée 2024",
|
|
profession: "04201 - Comédien",
|
|
date_debut: "2024-01-15",
|
|
date_fin: "2024-06-30",
|
|
etat: "en_cours",
|
|
regime: "CDDU_MULTI",
|
|
is_multi_mois: true,
|
|
salaire_brut: 3200,
|
|
heures_semaine: 39
|
|
},
|
|
{
|
|
id: "demo-cont-002",
|
|
reference: "CDDU-2024-002",
|
|
salarie_nom: "DUBOIS Pierre",
|
|
salarie_id: "emp-002",
|
|
production: "Le Cid - Avignon 2024",
|
|
profession: "04202 - Metteur en scène",
|
|
date_debut: "2024-07-05",
|
|
date_fin: "2024-07-28",
|
|
etat: "signe",
|
|
regime: "CDDU_MONO",
|
|
salaire_brut: 4500,
|
|
heures_semaine: 45
|
|
},
|
|
{
|
|
id: "demo-cont-003",
|
|
reference: "CDDU-2024-003",
|
|
salarie_nom: "LEROY Sophie",
|
|
salarie_id: "emp-003",
|
|
production: "Ballet Moderne - Saison 2024",
|
|
profession: "04301 - Danseur",
|
|
date_debut: "2024-09-01",
|
|
date_fin: "2024-12-20",
|
|
etat: "en_cours",
|
|
regime: "CDDU_MULTI",
|
|
is_multi_mois: true,
|
|
salaire_brut: 2800,
|
|
heures_semaine: 35
|
|
},
|
|
{
|
|
id: "demo-cont-004",
|
|
reference: "CDDU-2024-004",
|
|
salarie_nom: "BERNARD Julien",
|
|
salarie_id: "emp-004",
|
|
production: "Concert Jazz Festival",
|
|
profession: "04401 - Musicien",
|
|
date_debut: "2024-06-15",
|
|
date_fin: "2024-06-17",
|
|
etat: "traitee",
|
|
regime: "CDDU_MONO",
|
|
salaire_brut: 1200,
|
|
heures_semaine: 20
|
|
},
|
|
{
|
|
id: "demo-cont-005",
|
|
reference: "CDDU-2024-005",
|
|
salarie_nom: "PETIT Marie",
|
|
salarie_id: "emp-005",
|
|
production: "Opéra Carmen - Tournée",
|
|
profession: "04501 - Choriste",
|
|
date_debut: "2024-03-01",
|
|
date_fin: "2024-05-31",
|
|
etat: "en_cours",
|
|
regime: "CDDU_MULTI",
|
|
is_multi_mois: true,
|
|
salaire_brut: 2400,
|
|
heures_semaine: 32
|
|
},
|
|
{
|
|
id: "demo-cont-006",
|
|
reference: "CDDU-2024-006",
|
|
salarie_nom: "MARTIN Alice",
|
|
salarie_id: "emp-001",
|
|
production: "Atelier Théâtre Jeunesse",
|
|
profession: "04203 - Animateur culturel",
|
|
date_debut: "2024-10-01",
|
|
date_fin: "2024-10-15",
|
|
etat: "envoye",
|
|
regime: "CDDU_MONO",
|
|
salaire_brut: 1800,
|
|
heures_semaine: 25
|
|
},
|
|
{
|
|
id: "demo-cont-007",
|
|
reference: "CDDU-2024-007",
|
|
salarie_nom: "DUBOIS Pierre",
|
|
salarie_id: "emp-002",
|
|
production: "Film Documentaire Art",
|
|
profession: "04204 - Réalisateur",
|
|
date_debut: "2024-11-15",
|
|
date_fin: "2024-12-15",
|
|
etat: "pre-demande",
|
|
regime: "CDDU_MONO",
|
|
salaire_brut: 5000,
|
|
heures_semaine: 40
|
|
}
|
|
];
|
|
|
|
export const DEMO_PAYSLIPS: DemoPayslip[] = [
|
|
// MARTIN Alice - Les Misérables
|
|
{
|
|
id: "pay-001",
|
|
contrat_id: "demo-cont-001",
|
|
salarie_nom: "MARTIN Alice",
|
|
periode: "2024-01",
|
|
salaire_brut: 3200,
|
|
salaire_net: 2496,
|
|
charges_sociales: 704,
|
|
heures_travaillees: 169,
|
|
statut: "paye"
|
|
},
|
|
{
|
|
id: "pay-002",
|
|
contrat_id: "demo-cont-001",
|
|
salarie_nom: "MARTIN Alice",
|
|
periode: "2024-02",
|
|
salaire_brut: 3200,
|
|
salaire_net: 2496,
|
|
charges_sociales: 704,
|
|
heures_travaillees: 161,
|
|
statut: "paye"
|
|
},
|
|
{
|
|
id: "pay-003",
|
|
contrat_id: "demo-cont-001",
|
|
salarie_nom: "MARTIN Alice",
|
|
periode: "2024-03",
|
|
salaire_brut: 3200,
|
|
salaire_net: 2496,
|
|
charges_sociales: 704,
|
|
heures_travaillees: 172,
|
|
statut: "paye"
|
|
},
|
|
// DUBOIS Pierre - Le Cid
|
|
{
|
|
id: "pay-004",
|
|
contrat_id: "demo-cont-002",
|
|
salarie_nom: "DUBOIS Pierre",
|
|
periode: "2024-07",
|
|
salaire_brut: 4500,
|
|
salaire_net: 3510,
|
|
charges_sociales: 990,
|
|
heures_travaillees: 180,
|
|
statut: "paye"
|
|
},
|
|
// LEROY Sophie - Ballet
|
|
{
|
|
id: "pay-005",
|
|
contrat_id: "demo-cont-003",
|
|
salarie_nom: "LEROY Sophie",
|
|
periode: "2024-09",
|
|
salaire_brut: 2800,
|
|
salaire_net: 2184,
|
|
charges_sociales: 616,
|
|
heures_travaillees: 151,
|
|
statut: "paye"
|
|
},
|
|
{
|
|
id: "pay-006",
|
|
contrat_id: "demo-cont-003",
|
|
salarie_nom: "LEROY Sophie",
|
|
periode: "2024-10",
|
|
salaire_brut: 2800,
|
|
salaire_net: 2184,
|
|
charges_sociales: 616,
|
|
heures_travaillees: 156,
|
|
statut: "valide"
|
|
},
|
|
// BERNARD Julien - Jazz Festival
|
|
{
|
|
id: "pay-007",
|
|
contrat_id: "demo-cont-004",
|
|
salarie_nom: "BERNARD Julien",
|
|
periode: "2024-06",
|
|
salaire_brut: 1200,
|
|
salaire_net: 936,
|
|
charges_sociales: 264,
|
|
heures_travaillees: 60,
|
|
statut: "paye"
|
|
},
|
|
// PETIT Marie - Opéra Carmen
|
|
{
|
|
id: "pay-008",
|
|
contrat_id: "demo-cont-005",
|
|
salarie_nom: "PETIT Marie",
|
|
periode: "2024-03",
|
|
salaire_brut: 2400,
|
|
salaire_net: 1872,
|
|
charges_sociales: 528,
|
|
heures_travaillees: 138,
|
|
statut: "paye"
|
|
},
|
|
{
|
|
id: "pay-009",
|
|
contrat_id: "demo-cont-005",
|
|
salarie_nom: "PETIT Marie",
|
|
periode: "2024-04",
|
|
salaire_brut: 2400,
|
|
salaire_net: 1872,
|
|
charges_sociales: 528,
|
|
heures_travaillees: 142,
|
|
statut: "paye"
|
|
},
|
|
{
|
|
id: "pay-010",
|
|
contrat_id: "demo-cont-005",
|
|
salarie_nom: "PETIT Marie",
|
|
periode: "2024-05",
|
|
salaire_brut: 2400,
|
|
salaire_net: 1872,
|
|
charges_sociales: 528,
|
|
heures_travaillees: 145,
|
|
statut: "en_cours"
|
|
}
|
|
];
|
|
|
|
/**
|
|
* Recherche dans les données de démo
|
|
*/
|
|
export function searchDemoData(query: string): Array<{
|
|
type: 'contract' | 'employee' | 'payslip';
|
|
id: string;
|
|
title: string;
|
|
subtitle: string;
|
|
}> {
|
|
const results: Array<{
|
|
type: 'contract' | 'employee' | 'payslip';
|
|
id: string;
|
|
title: string;
|
|
subtitle: string;
|
|
}> = [];
|
|
|
|
const searchTerm = query.toLowerCase();
|
|
|
|
// Recherche dans les contrats
|
|
DEMO_CONTRACTS.forEach(contract => {
|
|
if (
|
|
contract.reference.toLowerCase().includes(searchTerm) ||
|
|
contract.salarie_nom.toLowerCase().includes(searchTerm) ||
|
|
contract.production.toLowerCase().includes(searchTerm) ||
|
|
contract.profession.toLowerCase().includes(searchTerm)
|
|
) {
|
|
results.push({
|
|
type: 'contract',
|
|
id: contract.id,
|
|
title: `${contract.reference} - ${contract.salarie_nom}`,
|
|
subtitle: contract.production
|
|
});
|
|
}
|
|
});
|
|
|
|
// Recherche dans les employés
|
|
DEMO_EMPLOYEES.forEach(employee => {
|
|
if (
|
|
`${employee.nom} ${employee.prenom}`.toLowerCase().includes(searchTerm) ||
|
|
employee.email.toLowerCase().includes(searchTerm)
|
|
) {
|
|
results.push({
|
|
type: 'employee',
|
|
id: employee.id,
|
|
title: `${employee.nom} ${employee.prenom}`,
|
|
subtitle: employee.email
|
|
});
|
|
}
|
|
});
|
|
|
|
// Recherche dans les bulletins
|
|
DEMO_PAYSLIPS.forEach(payslip => {
|
|
if (
|
|
payslip.salarie_nom.toLowerCase().includes(searchTerm) ||
|
|
payslip.periode.includes(searchTerm)
|
|
) {
|
|
results.push({
|
|
type: 'payslip',
|
|
id: payslip.id,
|
|
title: `Bulletin ${payslip.periode} - ${payslip.salarie_nom}`,
|
|
subtitle: `${payslip.salaire_net}€ net`
|
|
});
|
|
}
|
|
});
|
|
|
|
return results.slice(0, 10); // Limiter à 10 résultats
|
|
} |