// vvj-data.jsx — Verdens Viktigste Jobb (VVJ): midlertidige ansatte
// Mock-data: ansatte, kontrakter, timer, NyBy-oppdrag, forskudd

// "I dag" i prototypen
const VVJ_TODAY = '2026-05-21';

// ─────────────────────────────────────────────────────────────────
// ANSATTE — midlertidige ansatte under VVJ-prosjektet
// ─────────────────────────────────────────────────────────────────
// status: utkast | onboarding | aktiv | pause | sluttet
// onboarding-steg: kontrakt, skattekort, bankkonto, IT-konto, HMS, opplæring, oppfølgingsplan
const VVJ_ANSATTE = [
  {
    id: 'a-mh', initials: 'MH', name: 'Maria Halvorsen',
    role: 'Bistro-medarbeider', avd: 'OK:bistro', veileder: 'IH',
    contractType: '6 mnd · tilkalling', contractStart: '2026-02-01', contractEnd: '2026-08-01',
    hourRate: 218, weeklyHours: 24,
    status: 'aktiv',
    onboarding: { kontrakt: 'done', skattekort: 'done', bankkonto: 'done', it: 'done', hms: 'done', opplaring: 'done', oppfolging: 'done' },
    color: '#f2545c',
    accruedKr: 6840, paidAdvanceKr: 3500,
    weekHours: 22.5, monthHours: 86,
  },
  {
    id: 'a-sj', initials: 'SJ', name: 'Sara Jensen',
    role: 'Sykkelmekaniker', avd: 'OK:sykkel', veileder: 'RB',
    contractType: '4 mnd · midlertidig', contractStart: '2026-03-15', contractEnd: '2026-07-15',
    hourRate: 235, weeklyHours: 30,
    status: 'aktiv',
    onboarding: { kontrakt: 'done', skattekort: 'done', bankkonto: 'done', it: 'done', hms: 'done', opplaring: 'done', oppfolging: 'in_progress' },
    color: '#586ba4',
    accruedKr: 11260, paidAdvanceKr: 6000,
    weekHours: 28, monthHours: 112,
  },
  {
    id: 'a-ya', initials: 'YA', name: 'Yusuf Ali',
    role: 'IT-tekniker (refurb)', avd: 'OK:data', veileder: 'HE',
    contractType: '3 mnd · prøveperiode', contractStart: '2026-04-01', contractEnd: '2026-07-01',
    hourRate: 245, weeklyHours: 30,
    status: 'aktiv',
    onboarding: { kontrakt: 'done', skattekort: 'done', bankkonto: 'done', it: 'done', hms: 'done', opplaring: 'in_progress', oppfolging: 'open' },
    color: '#08605f',
    accruedKr: 8420, paidAdvanceKr: 0,
    weekHours: 25, monthHours: 88,
  },
  {
    id: 'a-mn', initials: 'MN', name: 'Mina Nordvik',
    role: 'Bistro-medarbeider', avd: 'OK:bistro', veileder: 'IH',
    contractType: '6 mnd · tilkalling', contractStart: '2026-05-01', contractEnd: '2026-11-01',
    hourRate: 218, weeklyHours: 20,
    status: 'aktiv',
    onboarding: { kontrakt: 'done', skattekort: 'done', bankkonto: 'done', it: 'done', hms: 'done', opplaring: 'done', oppfolging: 'open' },
    color: '#11183d',
    accruedKr: 4360, paidAdvanceKr: 2200,
    weekHours: 18, monthHours: 64,
  },
  {
    id: 'a-tk', initials: 'TK', name: 'Theo Kvam',
    role: 'Sykkelmekaniker · lærling', avd: 'OK:sykkel', veileder: 'RB',
    contractType: '12 mnd · lærling', contractStart: '2025-11-01', contractEnd: '2026-10-31',
    hourRate: 198, weeklyHours: 30,
    status: 'aktiv',
    onboarding: { kontrakt: 'done', skattekort: 'done', bankkonto: 'done', it: 'done', hms: 'done', opplaring: 'done', oppfolging: 'done' },
    color: '#f2cc8f',
    accruedKr: 12420, paidAdvanceKr: 8000,
    weekHours: 30, monthHours: 124,
  },
  {
    id: 'a-am', initials: 'AM', name: 'Amir Malik',
    role: 'IT-tekniker (refurb)', avd: 'OK:data', veileder: 'HE',
    contractType: '6 mnd · midlertidig', contractStart: '2026-01-15', contractEnd: '2026-07-15',
    hourRate: 245, weeklyHours: 30,
    status: 'aktiv',
    onboarding: { kontrakt: 'done', skattekort: 'done', bankkonto: 'done', it: 'done', hms: 'done', opplaring: 'done', oppfolging: 'done' },
    color: '#fcddde',
    accruedKr: 9180, paidAdvanceKr: 4500,
    weekHours: 28, monthHours: 102,
  },
  {
    id: 'a-li', initials: 'LI', name: 'Liv Indrebø',
    role: 'Kantine-assistent', avd: 'OK:bistro', veileder: 'IH',
    contractType: '3 mnd · sommer', contractStart: '2026-06-01', contractEnd: '2026-08-31',
    hourRate: 218, weeklyHours: 30,
    status: 'onboarding',
    onboarding: { kontrakt: 'done', skattekort: 'done', bankkonto: 'in_progress', it: 'open', hms: 'open', opplaring: 'open', oppfolging: 'open' },
    color: '#cedfdf',
    accruedKr: 0, paidAdvanceKr: 0,
    weekHours: 0, monthHours: 0,
  },
  {
    id: 'a-jp', initials: 'JP', name: 'Jonas Pedersen',
    role: 'Aktivitetsleder sommer', avd: 'Aktivitetspark Skullerud', veileder: 'AN',
    contractType: '2 mnd · sommer', contractStart: '2026-06-15', contractEnd: '2026-08-15',
    hourRate: 225, weeklyHours: 37.5,
    status: 'onboarding',
    onboarding: { kontrakt: 'done', skattekort: 'open', bankkonto: 'open', it: 'open', hms: 'open', opplaring: 'open', oppfolging: 'open' },
    color: '#bbe8ff',
    accruedKr: 0, paidAdvanceKr: 0,
    weekHours: 0, monthHours: 0,
  },
  {
    id: 'a-ek', initials: 'EK', name: 'Eline Karlsen',
    role: 'Aktivitetsleder sommer', avd: 'Aktivitetspark Skullerud', veileder: 'AN',
    contractType: '2 mnd · sommer', contractStart: '2026-06-15', contractEnd: '2026-08-15',
    hourRate: 225, weeklyHours: 37.5,
    status: 'utkast',
    onboarding: { kontrakt: 'in_progress', skattekort: 'open', bankkonto: 'open', it: 'open', hms: 'open', opplaring: 'open', oppfolging: 'open' },
    color: '#dee1ed',
    accruedKr: 0, paidAdvanceKr: 0,
    weekHours: 0, monthHours: 0,
  },
  {
    id: 'a-ds', initials: 'DS', name: 'David Steen',
    role: 'Sykkelmekaniker', avd: 'OK:sykkel', veileder: 'RB',
    contractType: '4 mnd · midlertidig', contractStart: '2026-02-15', contractEnd: '2026-06-15',
    hourRate: 235, weeklyHours: 28,
    status: 'aktiv',
    onboarding: { kontrakt: 'done', skattekort: 'done', bankkonto: 'done', it: 'done', hms: 'done', opplaring: 'done', oppfolging: 'done' },
    color: '#faebd2',
    accruedKr: 7820, paidAdvanceKr: 5500,
    weekHours: 26, monthHours: 96,
  },
  {
    id: 'a-rh', initials: 'RH', name: 'Reidun Hagen',
    role: 'Bistro · catering', avd: 'OK:bistro', veileder: 'IH',
    contractType: '5 mnd · midlertidig', contractStart: '2026-01-08', contractEnd: '2026-06-08',
    hourRate: 220, weeklyHours: 18,
    status: 'aktiv',
    onboarding: { kontrakt: 'done', skattekort: 'done', bankkonto: 'done', it: 'done', hms: 'done', opplaring: 'done', oppfolging: 'done' },
    color: '#bbe8ff',
    accruedKr: 3560, paidAdvanceKr: 1800,
    weekHours: 17, monthHours: 70,
  },
  {
    id: 'a-no', initials: 'NO', name: 'Nora Olsen',
    role: 'IT-tekniker (refurb)', avd: 'OK:data', veileder: 'HE',
    contractType: '6 mnd · midlertidig', contractStart: '2025-12-01', contractEnd: '2026-05-31',
    hourRate: 245, weeklyHours: 30,
    status: 'aktiv',
    onboarding: { kontrakt: 'done', skattekort: 'done', bankkonto: 'done', it: 'done', hms: 'done', opplaring: 'done', oppfolging: 'done' },
    color: '#f2cc8f',
    accruedKr: 5460, paidAdvanceKr: 3000,
    weekHours: 22, monthHours: 78,
  },
  {
    id: 'a-bs', initials: 'BS', name: 'Birk Sandvik',
    role: 'Bistro-medarbeider', avd: 'OK:bistro', veileder: 'IH',
    contractType: '3 mnd · tilkalling', contractStart: '2026-03-20', contractEnd: '2026-06-20',
    hourRate: 218, weeklyHours: 14,
    status: 'pause',
    onboarding: { kontrakt: 'done', skattekort: 'done', bankkonto: 'done', it: 'done', hms: 'done', opplaring: 'done', oppfolging: 'in_progress' },
    color: '#fcddde',
    accruedKr: 1240, paidAdvanceKr: 1240,
    weekHours: 0, monthHours: 28,
  },
  {
    id: 'a-fk', initials: 'FK', name: 'Fatima Khalil',
    role: 'Sykkelmekaniker', avd: 'OK:sykkel', veileder: 'RB',
    contractType: '6 mnd · midlertidig', contractStart: '2026-04-15', contractEnd: '2026-10-15',
    hourRate: 235, weeklyHours: 30,
    status: 'aktiv',
    onboarding: { kontrakt: 'done', skattekort: 'done', bankkonto: 'done', it: 'done', hms: 'done', opplaring: 'in_progress', oppfolging: 'open' },
    color: '#586ba4',
    accruedKr: 7240, paidAdvanceKr: 2500,
    weekHours: 29, monthHours: 88,
  },
  {
    id: 'a-os', initials: 'OS', name: 'Oda Strand',
    role: 'Aktivitetsleder sommer', avd: 'Aktivitetspark Skullerud', veileder: 'AN',
    contractType: '2 mnd · sommer', contractStart: '2026-06-15', contractEnd: '2026-08-15',
    hourRate: 225, weeklyHours: 37.5,
    status: 'utkast',
    onboarding: { kontrakt: 'in_progress', skattekort: 'open', bankkonto: 'open', it: 'open', hms: 'open', opplaring: 'open', oppfolging: 'open' },
    color: '#08605f',
    accruedKr: 0, paidAdvanceKr: 0,
    weekHours: 0, monthHours: 0,
  },
  {
    id: 'a-pl', initials: 'PL', name: 'Peder Lid',
    role: 'Bistro-medarbeider', avd: 'OK:bistro', veileder: 'IH',
    contractType: '4 mnd · midlertidig', contractStart: '2026-01-12', contractEnd: '2026-05-12',
    hourRate: 218, weeklyHours: 20,
    status: 'sluttet',
    onboarding: { kontrakt: 'done', skattekort: 'done', bankkonto: 'done', it: 'done', hms: 'done', opplaring: 'done', oppfolging: 'done' },
    color: '#D0D1DC',
    accruedKr: 0, paidAdvanceKr: 0,
    weekHours: 0, monthHours: 0,
    sluttDato: '2026-05-12', sluttGrunn: 'Kontraktslutt — over i fast stilling hos Espresso House',
  },
];

// ─────────────────────────────────────────────────────────────────
// KONTRAKTER — kontraktsmaler + status pr. ansatt
// ─────────────────────────────────────────────────────────────────
const VVJ_MALER = [
  { id: 'm-tilk', name: 'Tilkalling · bistro', basis: 'Tilkallingsavtale', timer: 'inntil 20/uke', kr: '218,–/t', clauses: 14, sist: '2026-04-12' },
  { id: 'm-midl', name: 'Midlertidig · faglært', basis: 'Midlertidig ansettelse §14-9 (1)b', timer: '28–30/uke', kr: '235–245,–/t', clauses: 18, sist: '2026-03-02' },
  { id: 'm-lar', name: 'Lærling · sykkel', basis: 'Lærekontrakt', timer: '30/uke', kr: '198,–/t', clauses: 22, sist: '2025-10-15' },
  { id: 'm-som', name: 'Sommerhjelp · aktivitetspark', basis: 'Midlertidig §14-9 (1)b · sommer', timer: '37,5/uke', kr: '225,–/t', clauses: 12, sist: '2026-05-04' },
];

const VVJ_KONTRAKTER = [
  // Utkast / under signering
  { id: 'k-os', ansattId: 'a-os', mal: 'm-som', status: 'utkast', created: '2026-05-19', sentDigSig: null, signed: null, eier: 'AN', desc: 'Klar for review — venter på Astrid' },
  { id: 'k-ek', ansattId: 'a-ek', mal: 'm-som', status: 'utkast', created: '2026-05-20', sentDigSig: null, signed: null, eier: 'AN', desc: 'Lønnsnivå må bekreftes' },
  { id: 'k-jp', ansattId: 'a-jp', mal: 'm-som', status: 'signering', created: '2026-05-15', sentDigSig: '2026-05-18', signed: null, eier: 'AN', desc: 'Sendt til BankID-signering 18/5' },
  { id: 'k-li', ansattId: 'a-li', mal: 'm-tilk', status: 'signering', created: '2026-05-14', sentDigSig: '2026-05-16', signed: null, eier: 'IH', desc: 'Sendt til BankID-signering 16/5' },
  // Signert / aktive
  { id: 'k-mh', ansattId: 'a-mh', mal: 'm-tilk', status: 'aktiv', created: '2026-01-22', sentDigSig: '2026-01-25', signed: '2026-01-28', eier: 'IH' },
  { id: 'k-sj', ansattId: 'a-sj', mal: 'm-midl', status: 'aktiv', created: '2026-03-04', sentDigSig: '2026-03-08', signed: '2026-03-10', eier: 'RB' },
  { id: 'k-ya', ansattId: 'a-ya', mal: 'm-midl', status: 'aktiv', created: '2026-03-22', sentDigSig: '2026-03-25', signed: '2026-03-28', eier: 'HE' },
  { id: 'k-tk', ansattId: 'a-tk', mal: 'm-lar', status: 'aktiv', created: '2025-10-15', sentDigSig: '2025-10-18', signed: '2025-10-22', eier: 'RB' },
  { id: 'k-am', ansattId: 'a-am', mal: 'm-midl', status: 'aktiv', created: '2026-01-04', sentDigSig: '2026-01-07', signed: '2026-01-10', eier: 'HE' },
  { id: 'k-mn', ansattId: 'a-mn', mal: 'm-tilk', status: 'aktiv', created: '2026-04-20', sentDigSig: '2026-04-22', signed: '2026-04-26', eier: 'IH' },
  // Utløper snart — forlenging
  { id: 'k-no', ansattId: 'a-no', mal: 'm-midl', status: 'utløper', created: '2025-11-22', sentDigSig: '2025-11-25', signed: '2025-11-28', eier: 'HE', desc: 'Utløper 31/5 — Håkon må bestemme forlenging' },
  { id: 'k-ds', ansattId: 'a-ds', mal: 'm-midl', status: 'utløper', created: '2026-02-04', sentDigSig: '2026-02-06', signed: '2026-02-10', eier: 'RB', desc: 'Utløper 15/6 — sannsynlig forlenging' },
  { id: 'k-rh', ansattId: 'a-rh', mal: 'm-tilk', status: 'utløper', created: '2025-12-22', sentDigSig: '2025-12-28', signed: '2026-01-02', eier: 'IH', desc: 'Utløper 8/6 — kontraktslutt avtalt' },
];

// ─────────────────────────────────────────────────────────────────
// TIMER — uke 21 (denne uka, t.o.m. tor 21/5)
// Hver entry: dag (0=man), timer, prosjekt/sted, godkjent
// ─────────────────────────────────────────────────────────────────
const VVJ_TIMER = [
  // Maria Halvorsen — OK:bistro
  { id: 't1',  ansattId: 'a-mh', date: '2026-05-18', hours: 6,   kontext: 'OK:bistro Lambertseter', kilde: 'manuelt', status: 'godkjent' },
  { id: 't2',  ansattId: 'a-mh', date: '2026-05-19', hours: 5.5, kontext: 'OK:bistro Lambertseter', kilde: 'manuelt', status: 'godkjent' },
  { id: 't3',  ansattId: 'a-mh', date: '2026-05-20', hours: 4,   kontext: 'OK:bistro Lambertseter', kilde: 'manuelt', status: 'godkjent' },
  { id: 't4',  ansattId: 'a-mh', date: '2026-05-21', hours: 4,   kontext: 'OK:bistro Lambertseter', kilde: 'manuelt', status: 'ventende' },
  { id: 't5',  ansattId: 'a-mh', date: '2026-05-17', hours: 3,   kontext: 'NyBy · Bydel Nordstrand', kilde: 'NyBy-API', status: 'godkjent', nybyOppdrag: 'ny-203' },
  // Sara Jensen — OK:sykkel
  { id: 't10', ansattId: 'a-sj', date: '2026-05-18', hours: 7,   kontext: 'OK:sykkel Vulkan', kilde: 'manuelt', status: 'godkjent' },
  { id: 't11', ansattId: 'a-sj', date: '2026-05-19', hours: 7,   kontext: 'OK:sykkel Vulkan', kilde: 'manuelt', status: 'godkjent' },
  { id: 't12', ansattId: 'a-sj', date: '2026-05-20', hours: 7,   kontext: 'OK:sykkel Vulkan', kilde: 'manuelt', status: 'godkjent' },
  { id: 't13', ansattId: 'a-sj', date: '2026-05-21', hours: 7,   kontext: 'OK:sykkel Vulkan', kilde: 'manuelt', status: 'ventende' },
  { id: 't14', ansattId: 'a-sj', date: '2026-05-16', hours: 2.5, kontext: 'NyBy · Bydel Sagene', kilde: 'NyBy-API', status: 'godkjent', nybyOppdrag: 'ny-198' },
  // Yusuf Ali — OK:data
  { id: 't20', ansattId: 'a-ya', date: '2026-05-18', hours: 6,   kontext: 'OK:data Vulkan', kilde: 'manuelt', status: 'godkjent' },
  { id: 't21', ansattId: 'a-ya', date: '2026-05-19', hours: 6.5, kontext: 'OK:data Vulkan', kilde: 'manuelt', status: 'godkjent' },
  { id: 't22', ansattId: 'a-ya', date: '2026-05-20', hours: 6,   kontext: 'OK:data Vulkan', kilde: 'manuelt', status: 'godkjent' },
  { id: 't23', ansattId: 'a-ya', date: '2026-05-21', hours: 6.5, kontext: 'OK:data Vulkan', kilde: 'manuelt', status: 'ventende' },
  // Mina Nordvik — OK:bistro
  { id: 't30', ansattId: 'a-mn', date: '2026-05-19', hours: 5,   kontext: 'OK:bistro Lambertseter', kilde: 'manuelt', status: 'godkjent' },
  { id: 't31', ansattId: 'a-mn', date: '2026-05-20', hours: 4,   kontext: 'OK:bistro Lambertseter', kilde: 'manuelt', status: 'godkjent' },
  { id: 't32', ansattId: 'a-mn', date: '2026-05-21', hours: 4,   kontext: 'OK:bistro Lambertseter', kilde: 'manuelt', status: 'ventende' },
  { id: 't33', ansattId: 'a-mn', date: '2026-05-18', hours: 5,   kontext: 'NyBy · Eldreomsorg Holmlia', kilde: 'NyBy-API', status: 'godkjent', nybyOppdrag: 'ny-201' },
  // Theo Kvam — OK:sykkel lærling
  { id: 't40', ansattId: 'a-tk', date: '2026-05-18', hours: 7.5, kontext: 'OK:sykkel Vulkan', kilde: 'manuelt', status: 'godkjent' },
  { id: 't41', ansattId: 'a-tk', date: '2026-05-19', hours: 7.5, kontext: 'OK:sykkel Vulkan', kilde: 'manuelt', status: 'godkjent' },
  { id: 't42', ansattId: 'a-tk', date: '2026-05-20', hours: 7.5, kontext: 'OK:sykkel Vulkan', kilde: 'manuelt', status: 'godkjent' },
  { id: 't43', ansattId: 'a-tk', date: '2026-05-21', hours: 7.5, kontext: 'OK:sykkel Vulkan', kilde: 'manuelt', status: 'ventende' },
  // Amir Malik — OK:data
  { id: 't50', ansattId: 'a-am', date: '2026-05-18', hours: 7,   kontext: 'OK:data Vulkan', kilde: 'manuelt', status: 'godkjent' },
  { id: 't51', ansattId: 'a-am', date: '2026-05-19', hours: 7,   kontext: 'OK:data Vulkan', kilde: 'manuelt', status: 'godkjent' },
  { id: 't52', ansattId: 'a-am', date: '2026-05-20', hours: 7,   kontext: 'OK:data Vulkan', kilde: 'manuelt', status: 'avvist', avvistGrunn: 'Mangler oppdragskode' },
  { id: 't53', ansattId: 'a-am', date: '2026-05-21', hours: 7,   kontext: 'OK:data Vulkan', kilde: 'manuelt', status: 'ventende' },
  // David Steen — OK:sykkel
  { id: 't60', ansattId: 'a-ds', date: '2026-05-18', hours: 6.5, kontext: 'OK:sykkel Vulkan', kilde: 'manuelt', status: 'godkjent' },
  { id: 't61', ansattId: 'a-ds', date: '2026-05-19', hours: 6.5, kontext: 'OK:sykkel Vulkan', kilde: 'manuelt', status: 'godkjent' },
  { id: 't62', ansattId: 'a-ds', date: '2026-05-20', hours: 6,   kontext: 'OK:sykkel Vulkan', kilde: 'manuelt', status: 'godkjent' },
  { id: 't63', ansattId: 'a-ds', date: '2026-05-21', hours: 7,   kontext: 'OK:sykkel Vulkan', kilde: 'manuelt', status: 'ventende' },
  // Reidun Hagen — OK:bistro catering
  { id: 't70', ansattId: 'a-rh', date: '2026-05-19', hours: 5,   kontext: 'OK:bistro catering', kilde: 'manuelt', status: 'godkjent' },
  { id: 't71', ansattId: 'a-rh', date: '2026-05-20', hours: 4,   kontext: 'OK:bistro catering', kilde: 'manuelt', status: 'godkjent' },
  { id: 't72', ansattId: 'a-rh', date: '2026-05-21', hours: 4,   kontext: 'OK:bistro catering', kilde: 'manuelt', status: 'ventende' },
  // Nora Olsen — OK:data
  { id: 't80', ansattId: 'a-no', date: '2026-05-19', hours: 6,   kontext: 'OK:data Vulkan', kilde: 'manuelt', status: 'godkjent' },
  { id: 't81', ansattId: 'a-no', date: '2026-05-20', hours: 6,   kontext: 'OK:data Vulkan', kilde: 'manuelt', status: 'godkjent' },
  { id: 't82', ansattId: 'a-no', date: '2026-05-21', hours: 5,   kontext: 'OK:data Vulkan', kilde: 'manuelt', status: 'ventende' },
  // Fatima Khalil — OK:sykkel
  { id: 't90', ansattId: 'a-fk', date: '2026-05-18', hours: 7,   kontext: 'OK:sykkel Vulkan', kilde: 'manuelt', status: 'godkjent' },
  { id: 't91', ansattId: 'a-fk', date: '2026-05-19', hours: 7,   kontext: 'OK:sykkel Vulkan', kilde: 'manuelt', status: 'godkjent' },
  { id: 't92', ansattId: 'a-fk', date: '2026-05-20', hours: 7.5, kontext: 'OK:sykkel Vulkan', kilde: 'manuelt', status: 'godkjent' },
  { id: 't93', ansattId: 'a-fk', date: '2026-05-21', hours: 7.5, kontext: 'OK:sykkel Vulkan', kilde: 'manuelt', status: 'ventende' },
  { id: 't94', ansattId: 'a-fk', date: '2026-05-17', hours: 3,   kontext: 'NyBy · Bydel Sagene', kilde: 'NyBy-API', status: 'godkjent', nybyOppdrag: 'ny-199' },
];

// ─────────────────────────────────────────────────────────────────
// NyBy — eksterne ekstrajobber tilgjengelig via API
// status: tilgjengelig | påtatt | fullført | avlyst
// ─────────────────────────────────────────────────────────────────
const VVJ_NYBY_OPPDRAG = [
  { id: 'ny-203', tittel: 'Hjelpe til på sommerfest', oppdragsgiver: 'Bydel Nordstrand · Frivilligsentralen', sted: 'Holmlia', dato: '2026-05-17', timer: 3, sats: 240, type: 'Aktivitet', status: 'fullført', ansattId: 'a-mh', tags: ['kveld', 'sosial'] },
  { id: 'ny-198', tittel: 'Sykkelreparasjoner — Sykkelfestivalen', oppdragsgiver: 'Bydel Sagene', sted: 'Sagene', dato: '2026-05-16', timer: 2.5, sats: 260, type: 'Mekanikk', status: 'fullført', ansattId: 'a-sj', tags: ['fag', 'helg'] },
  { id: 'ny-199', tittel: 'Sykkelreparasjoner — Sykkelfestivalen', oppdragsgiver: 'Bydel Sagene', sted: 'Sagene', dato: '2026-05-17', timer: 3, sats: 260, type: 'Mekanikk', status: 'fullført', ansattId: 'a-fk', tags: ['fag', 'helg'] },
  { id: 'ny-201', tittel: 'Matservering · seniortreff', oppdragsgiver: 'Holmlia eldresenter', sted: 'Holmlia', dato: '2026-05-18', timer: 5, sats: 235, type: 'Servering', status: 'fullført', ansattId: 'a-mn', tags: ['dag', 'mat'] },
  // Påtatte — kommer
  { id: 'ny-220', tittel: 'Hjelp til 17. mai-arrangement Bjerke', oppdragsgiver: 'Bydel Bjerke', sted: 'Bjerke', dato: '2026-05-24', timer: 6, sats: 250, type: 'Aktivitet', status: 'påtatt', ansattId: 'a-tk', tags: ['helg', 'sosial'] },
  { id: 'ny-221', tittel: 'Sykkelrydding etter loppemarked', oppdragsgiver: 'Bydel Grünerløkka', sted: 'Grünerløkka', dato: '2026-05-25', timer: 4, sats: 245, type: 'Mekanikk', status: 'påtatt', ansattId: 'a-sj', tags: ['helg', 'fag'] },
  { id: 'ny-222', tittel: 'Kveldsvakt — kafé Aktivitetshuset', oppdragsgiver: 'Bydel Søndre Nordstrand', sted: 'Holmlia', dato: '2026-05-26', timer: 4, sats: 235, type: 'Servering', status: 'påtatt', ansattId: 'a-mh', tags: ['kveld', 'mat'] },
  // Tilgjengelige — nyimportert fra NyBy
  { id: 'ny-230', tittel: 'PC-oppsett · 12 stk for seniorsenter', oppdragsgiver: 'Bydel St. Hanshaugen', sted: 'St. Hanshaugen', dato: '2026-05-27', timer: 5, sats: 270, type: 'IT', status: 'tilgjengelig', tags: ['dag', 'fag'] },
  { id: 'ny-231', tittel: 'Sykkelmekaniker · pop-up bydelsdag', oppdragsgiver: 'Bydel Gamle Oslo', sted: 'Gamle Oslo', dato: '2026-05-30', timer: 6, sats: 265, type: 'Mekanikk', status: 'tilgjengelig', tags: ['helg', 'fag'] },
  { id: 'ny-232', tittel: 'Servering · sommerfest barnehage', oppdragsgiver: 'Vahl skole FAU', sted: 'Grønland', dato: '2026-06-04', timer: 4, sats: 230, type: 'Servering', status: 'tilgjengelig', tags: ['kveld', 'mat'] },
  { id: 'ny-233', tittel: 'Sykkelopplæring barn (4 økter)', oppdragsgiver: 'Bydel Frogner', sted: 'Frogner', dato: '2026-06-08', timer: 8, sats: 280, type: 'Mekanikk', status: 'tilgjengelig', tags: ['dag', 'fag'] },
  { id: 'ny-234', tittel: 'Catering · jubileum 80 personer', oppdragsgiver: 'Privat (verifisert)', sted: 'Holmlia', dato: '2026-06-13', timer: 7, sats: 250, type: 'Servering', status: 'tilgjengelig', tags: ['kveld', 'mat'] },
];

// ─────────────────────────────────────────────────────────────────
// LØNN & FORSKUDD
// Lønnskjøring, forskudd-historikk, lønnsperiode (uke 19-21)
// ─────────────────────────────────────────────────────────────────
const VVJ_LONNSPERIODE = {
  label: 'Mai 2026',
  start: '2026-05-01', slutt: '2026-05-31',
  lonningsDato: '2026-06-12', // ordinær utbetaling
  vismaStatus: 'utkast', // utkast | klar | eksportert | utbetalt
  forskudd_takPct: 60, // makskvote forskudd som % av opptjent
  forskudd_gebyr: 0,   // kr — ingen gebyr for ansatt
};

const VVJ_FORSKUDD = [
  // Utbetalte forskudd denne perioden (mai)
  { id: 'f1', ansattId: 'a-mh', dato: '2026-05-08', belop: 1500, status: 'utbetalt', forfall: '2026-06-12', ref: 'F-2026-238' },
  { id: 'f2', ansattId: 'a-mh', dato: '2026-05-15', belop: 2000, status: 'utbetalt', forfall: '2026-06-12', ref: 'F-2026-245' },
  { id: 'f3', ansattId: 'a-sj', dato: '2026-05-05', belop: 3000, status: 'utbetalt', forfall: '2026-06-12', ref: 'F-2026-231' },
  { id: 'f4', ansattId: 'a-sj', dato: '2026-05-19', belop: 3000, status: 'utbetalt', forfall: '2026-06-12', ref: 'F-2026-252' },
  { id: 'f5', ansattId: 'a-mn', dato: '2026-05-14', belop: 2200, status: 'utbetalt', forfall: '2026-06-12', ref: 'F-2026-243' },
  { id: 'f6', ansattId: 'a-tk', dato: '2026-05-08', belop: 4000, status: 'utbetalt', forfall: '2026-06-12', ref: 'F-2026-237' },
  { id: 'f7', ansattId: 'a-tk', dato: '2026-05-20', belop: 4000, status: 'utbetalt', forfall: '2026-06-12', ref: 'F-2026-254' },
  { id: 'f8', ansattId: 'a-am', dato: '2026-05-12', belop: 4500, status: 'utbetalt', forfall: '2026-06-12', ref: 'F-2026-241' },
  { id: 'f9', ansattId: 'a-ds', dato: '2026-05-07', belop: 2500, status: 'utbetalt', forfall: '2026-06-12', ref: 'F-2026-235' },
  { id: 'f10', ansattId: 'a-ds', dato: '2026-05-18', belop: 3000, status: 'utbetalt', forfall: '2026-06-12', ref: 'F-2026-250' },
  { id: 'f11', ansattId: 'a-rh', dato: '2026-05-13', belop: 1800, status: 'utbetalt', forfall: '2026-06-12', ref: 'F-2026-242' },
  { id: 'f12', ansattId: 'a-no', dato: '2026-05-11', belop: 3000, status: 'utbetalt', forfall: '2026-06-12', ref: 'F-2026-240' },
  { id: 'f13', ansattId: 'a-bs', dato: '2026-05-04', belop: 1240, status: 'utbetalt', forfall: '2026-06-12', ref: 'F-2026-228' },
  { id: 'f14', ansattId: 'a-fk', dato: '2026-05-15', belop: 2500, status: 'utbetalt', forfall: '2026-06-12', ref: 'F-2026-246' },
  // Ventende — kom inn i dag
  { id: 'f15', ansattId: 'a-mh', dato: '2026-05-21', belop: 1340, status: 'ventende', forfall: '2026-06-12', ref: 'F-2026-260' },
  { id: 'f16', ansattId: 'a-fk', dato: '2026-05-21', belop: 2000, status: 'ventende', forfall: '2026-06-12', ref: 'F-2026-261' },
];

// Visma-eksport historikk
const VVJ_VISMA_EKSPORT = [
  { id: 'v-apr', periode: 'April 2026', dato: '2026-05-08', ansatte: 14, brutto: 412_840, forskudd: 178_400, netto: 234_440, status: 'utbetalt', filnavn: 'oslokollega_vvj_lonn_2026-04.xml' },
  { id: 'v-mar', periode: 'Mars 2026', dato: '2026-04-08', ansatte: 11, brutto: 358_220, forskudd: 142_000, netto: 216_220, status: 'utbetalt', filnavn: 'oslokollega_vvj_lonn_2026-03.xml' },
  { id: 'v-feb', periode: 'Februar 2026', dato: '2026-03-08', ansatte: 9, brutto: 268_120, forskudd: 96_000, netto: 172_120, status: 'utbetalt', filnavn: 'oslokollega_vvj_lonn_2026-02.xml' },
];

// ─────────────────────────────────────────────────────────────────
// AKTIVITETS-LOGG (vises i Oversikt)
// ─────────────────────────────────────────────────────────────────
const VVJ_ACTIVITY = [
  { id: 'l1', tid: 'for 6 min', type: 'forskudd', ikon: 'kr', tekst: 'Fatima Khalil ba om forskudd · 2 000 kr', avsender: 'Ansattportal', accent: 'coral' },
  { id: 'l2', tid: 'for 24 min', type: 'forskudd', ikon: 'kr', tekst: 'Maria Halvorsen ba om forskudd · 1 340 kr', avsender: 'Ansattportal', accent: 'coral' },
  { id: 'l3', tid: 'i dag 09:14', type: 'nyby', ikon: 'nyby', tekst: 'NyBy-import: 6 nye tilgjengelige oppdrag', avsender: 'NyBy-API', accent: 'green' },
  { id: 'l4', tid: 'i dag 08:02', type: 'timer', ikon: 'clock', tekst: 'Time avvist: Amir Malik · 20/5 · "Mangler oppdragskode"', avsender: 'Håkon E.', accent: 'warn' },
  { id: 'l5', tid: 'i går 16:45', type: 'kontrakt', ikon: 'doc', tekst: 'Kontrakt signert · Mina Nordvik (OK:bistro)', avsender: 'BankID', accent: 'success' },
  { id: 'l6', tid: 'i går 11:22', type: 'onboarding', ikon: 'check', tekst: 'Liv Indrebø fullførte 4/7 onboarding-steg', avsender: 'Selv', accent: 'info' },
  { id: 'l7', tid: '19. mai 14:08', type: 'kontrakt', ikon: 'doc', tekst: 'Kontrakt-utkast opprettet · Oda Strand (sommer)', avsender: 'Astrid N.', accent: 'info' },
  { id: 'l8', tid: '19. mai 09:30', type: 'visma', ikon: 'export', tekst: 'Lønnskjøring april eksportert til Visma', avsender: 'Øystein S.', accent: 'success' },
];

Object.assign(window, {
  VVJ_TODAY, VVJ_ANSATTE, VVJ_MALER, VVJ_KONTRAKTER, VVJ_TIMER,
  VVJ_NYBY_OPPDRAG, VVJ_LONNSPERIODE, VVJ_FORSKUDD, VVJ_VISMA_EKSPORT, VVJ_ACTIVITY,
});
