espace-paie-odentas/lib/demo-data.ts

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
}