<% layout('layouts/main') %>
<% const adminBase = typeof adminBaseUrl !== 'undefined' ? adminBaseUrl : '/admin'; %>
<% const fmt = (value) => Number(value || 0).toFixed(2); %>
<% const year = typeof selectedYear !== 'undefined' ? selectedYear : new Date().getFullYear(); %>
<% const payrollValidation = typeof validation !== 'undefined' ? validation : { score: 0, warnings: [] }; %>
<% const absenceRows = typeof absences !== 'undefined' ? absences : []; %>
<% const sourceTaxRows = typeof sourceTaxRates !== 'undefined' ? sourceTaxRates : []; %>
<% const annualRows = typeof annualSummary !== 'undefined' ? annualSummary : []; %>
<% const absenceLabels = { vacation: 'Vacances', sickness: 'Maladie', accident: 'Accident', unpaid: 'Sans solde', maternity: 'Maternité', paternity: 'Paternité', military: 'Service / protection civile', care: 'Proche aidant', training: 'Formation', remote: 'Télétravail / administratif', other: 'Autre' }; %>
<% const absenceStatus = { requested: 'Demandée', approved: 'Approuvée', rejected: 'Refusée', cancelled: 'Annulée' }; %>
<div class="app-shell">
  <%- partial('partials/admin-nav') %>
  <section class="content payroll-page payroll-suite-page">
    <div class="page-head">
      <div>
        <p class="eyebrow">RH & paie suisse</p>
        <h1>Salaires</h1>
        <p class="muted">Cycles mensuels, fiches PDF, pain.001, CAMT, impôt source et validation fiduciaire.</p>
      </div>
      <div class="actions">
        <a class="button secondary" href="<%= adminBase %>/rh">Centre RH</a>
        <a class="button secondary" href="<%= adminBase %>/employes">Équipe</a>
        <a class="button secondary" href="<%= adminBase %>/comptabilite/transactions">Transactions CAMT</a>
      </div>
    </div>

    <section class="stat-grid">
      <article class="stat"><strong><%= employees.length %></strong><span>Collaborateurs</span></article>
      <article class="stat"><strong><%= employees.filter((employee) => employee.payrollReady.ready).length %></strong><span>Profils prêts</span></article>
      <article class="stat"><strong><%= runs.length %></strong><span>Cycles générés</span></article>
      <article class="stat"><strong><%= payrollValidation.score %>%</strong><span>Contrôle fiduciaire</span></article>
    </section>

    <section class="payroll-layout payroll-command-grid">
      <form method="post" action="<%= adminBase %>/salaires/runs" class="panel form-grid">
        <div>
          <p class="eyebrow">Cycle mensuel</p>
          <h2>Nouveau cycle de paie</h2>
          <p class="muted">Les absences, barèmes et profils sociaux sont appliqués au calcul.</p>
        </div>
        <input type="hidden" name="_csrf" value="<%= csrfToken %>">
        <div class="form-grid two">
          <label>Période<input type="month" name="period_month" value="<%= nextPeriod %>" required></label>
          <label>Date de paiement<input type="date" name="payment_date"></label>
        </div>
        <label>Note interne<textarea name="notes" placeholder="Référence de paiement, contrôle RH, particularités du mois"></textarea></label>
        <button>Générer les fiches</button>
      </form>

      <section class="panel">
        <div class="compact-heading">
          <div>
            <p class="eyebrow">Cycles</p>
            <h2>Historique récent</h2>
          </div>
          <span class="badge"><%= runs.length %></span>
        </div>
        <div class="compact-list">
          <% if (!runs.length) { %>
            <p class="muted">Aucun cycle généré pour le moment.</p>
          <% } %>
          <% runs.forEach((run) => { %>
            <a class="line-card" href="<%= adminBase %>/salaires/runs/<%= run.id %>">
              <span><%= run.period_month %> · <%= ui.label(run.status) %></span>
              <strong><%= ui.money(run.total_net) %></strong>
              <b><%= ui.money(run.camt_matched_amount || 0) %> CAMT</b>
            </a>
          <% }) %>
        </div>
      </section>
    </section>

    <details id="fiche-manuelle" class="panel manual-payslip-panel payroll-section-drawer">
      <summary class="premium-drawer-summary">
        <span>
          <strong>Fiche manuelle RH</strong>
          <small>Entrée/sortie en cours de mois, correction validée ou bulletin isolé.</small>
        </span>
        <span class="badge">PDF + cycle</span>
      </summary>
      <form method="post" action="<%= adminBase %>/salaires/fiches-manuelles" class="form-grid">
        <input type="hidden" name="_csrf" value="<%= csrfToken %>">
        <div class="form-grid four">
          <label>Collaborateur<select name="user_id" required>
            <option value="">Sélectionner</option>
            <% employees.filter((employee) => employee.status === 'active').forEach((employee) => { %>
              <option value="<%= employee.user_id %>"><%= employee.first_name %> <%= employee.last_name %></option>
            <% }) %>
          </select></label>
          <label>Période<input type="month" name="period_month" value="<%= nextPeriod %>" required></label>
          <label>Date de paiement<input type="date" name="payment_date"></label>
          <label>Type de salaire<select name="salary_type">
            <option value="monthly">Mensuel</option>
            <option value="hourly">Horaire</option>
          </select></label>
        </div>
        <div class="form-grid four">
          <label>Salaire de base<input type="number" step="0.01" name="base_salary" placeholder="Reprendre le profil"></label>
          <label>Taux horaire<input type="number" step="0.01" name="hourly_rate" placeholder="Profil"></label>
          <label>Heures travaillées<input type="number" step="0.01" name="hours_worked" placeholder="Profil"></label>
          <label>Vacances %<input type="number" step="0.01" name="vacation_pay_rate" placeholder="Profil"></label>
        </div>
        <div class="form-grid four">
          <label>Prime / bonus<input type="number" step="0.01" name="bonus" value="0"></label>
          <label>Allocations soumises<input type="number" step="0.01" name="allowances" value="0"></label>
          <label>Remboursement frais<input type="number" step="0.01" name="expenses_reimbursement" value="0"></label>
          <label>Correction absence<input type="number" step="0.01" name="absence_deduction" value="0"></label>
        </div>
        <div class="form-grid three">
          <label>Impôt source % manuel<input type="number" step="0.01" name="source_tax_rate" placeholder="Profil"></label>
          <label>Impôt source montant<input type="number" step="0.01" name="source_tax_amount" placeholder="Profil"></label>
          <label class="check premium-check"><input type="checkbox" name="apply_source_tax_lookup"><span><strong>Rechercher le barème importé</strong><small>Utilise canton, barème, enfants et tranche de revenu.</small></span></label>
        </div>
        <label>Note du cycle<input name="notes" placeholder="Correction RH, départ, entrée, rattrapage ou validation interne"></label>
        <div class="actions">
          <button>Créer la fiche PDF</button>
          <span class="field-help">Si un cycle brouillon existe pour cette période, la fiche du collaborateur est remplacée et les totaux sont recalculés.</span>
        </div>
      </form>
    </details>

    <details id="validation-paie" class="panel payroll-section-drawer">
      <summary class="premium-drawer-summary">
        <span>
          <strong>Validation fiduciaire et certificats</strong>
          <small>Pré-contrôle annuel, export ELM et certificats de salaire.</small>
        </span>
        <span class="badge"><%= payrollValidation.score %>%</span>
      </summary>
      <section class="payroll-layout payroll-drawer-grid">
      <section class="panel fiduciary-panel">
        <div class="compact-heading">
          <div>
            <p class="eyebrow">Validation</p>
            <h2>Pré-contrôle fiduciaire <%= year %></h2>
          </div>
          <span class="badge"><%= payrollValidation.score %>%</span>
        </div>
        <form method="get" action="<%= adminBase %>/salaires" class="form-grid inline-date-action">
          <label>Année de contrôle<input type="number" name="year" min="2020" max="2100" value="<%= year %>"></label>
          <button class="secondary">Actualiser</button>
        </form>
        <div class="validation-list">
          <% if (!payrollValidation.warnings.length) { %>
            <p class="empty-state"><strong>Contrôle propre</strong><span>Aucun point bloquant détecté sur l’année sélectionnée.</span></p>
          <% } %>
          <% payrollValidation.warnings.slice(0, 10).forEach((warning) => { %>
            <p class="validation-item <%= warning.level %>"><strong><%= warning.level %></strong><span><%= warning.label %></span></p>
          <% }) %>
          <% if (payrollValidation.warnings.length > 10) { %><p class="muted">+ <%= payrollValidation.warnings.length - 10 %> point(s) supplémentaire(s).</p><% } %>
        </div>
        <div class="actions">
          <a class="button secondary" href="<%= adminBase %>/salaires/exports/swissdec/<%= year %>">Exporter pré-contrôle ELM</a>
        </div>
        <p class="field-help">Le fichier ELM généré est un pré-contrôle interne à remettre à la fiduciaire. La transmission Swissdec officielle nécessite une certification logicielle Swissdec.</p>
      </section>

      <section class="panel">
        <div class="compact-heading">
          <div>
            <p class="eyebrow">Certificats</p>
            <h2>Certificats de salaire annuels</h2>
          </div>
          <span class="badge"><%= annualRows.length %></span>
        </div>
        <div class="compact-list certificate-list">
          <% if (!annualRows.length) { %>
            <p class="muted">Aucune fiche de salaire disponible pour <%= year %>.</p>
          <% } %>
          <% annualRows.forEach((item) => { %>
            <a class="line-card" href="<%= adminBase %>/salaires/certificats/<%= year %>/<%= item.user_id %>/pdf" target="_blank" rel="noopener">
              <span><%= item.first_name %> <%= item.last_name %></span>
              <strong><%= ui.money(item.gross) %></strong>
              <b>PDF</b>
            </a>
          <% }) %>
        </div>
      </section>
      </section>
    </details>

    <details id="absences" class="panel payroll-section-drawer">
      <summary class="premium-drawer-summary">
        <span>
          <strong>Absences</strong>
          <small>Vacances, maladie, accident, certificats et paie.</small>
        </span>
        <span class="badge"><%= absenceRows.length %></span>
      </summary>
      <div class="drawer-actions"><a class="button secondary" href="<%= adminBase %>/rh">Ouvrir le planning RH</a></div>
      <form method="post" action="<%= adminBase %>/salaires/absences" enctype="multipart/form-data" class="form-grid absence-form">
        <input type="hidden" name="_csrf" value="<%= csrfToken %>">
        <div class="form-grid four">
          <label>Collaborateur<select name="user_id" required>
            <option value="">Sélectionner</option>
            <% employees.forEach((employee) => { %><option value="<%= employee.user_id %>"><%= employee.first_name %> <%= employee.last_name %></option><% }) %>
          </select></label>
          <label>Type<select name="type">
            <% Object.entries(absenceLabels).forEach(([key, label]) => { %><option value="<%= key %>"><%= label %></option><% }) %>
          </select></label>
          <label>Début<input type="date" name="starts_on" required></label>
          <label>Fin<input type="date" name="ends_on" required></label>
        </div>
        <div class="form-grid four">
          <label>Heures concernées<input type="number" step="0.01" name="hours" value="0"></label>
          <label>Pourcentage payé<input type="number" step="0.01" name="paid_percent" value="100"></label>
          <label>Statut<select name="status">
            <option value="approved">Approuvée</option>
            <option value="requested">Demandée</option>
          </select></label>
          <label>Note<input name="note" placeholder="Certificat, accord, remarque RH"></label>
        </div>
        <label>Certificat médical / justificatif<input type="file" name="certificate" accept=".pdf,image/jpeg,image/png,image/webp,application/pdf"></label>
        <button>Enregistrer l’absence</button>
      </form>
      <div class="table-wrap">
        <table>
          <thead><tr><th>Collaborateur</th><th>Type</th><th>Période</th><th>Payé</th><th>Statut</th><th></th></tr></thead>
          <tbody>
            <% absenceRows.forEach((absence) => { %>
              <tr>
                <td><strong><%= absence.first_name %> <%= absence.last_name %></strong><br><span class="muted"><%= absence.note || '' %></span></td>
                <td><%= absenceLabels[absence.type] || absence.type %></td>
                <td><%= ui.date(absence.starts_on) %> - <%= ui.date(absence.ends_on) %></td>
                <td><%= fmt(absence.paid_percent) %>%</td>
                <td><span class="badge"><%= absenceStatus[absence.status] || absence.status %></span><% if (absence.certificate_file_path) { %><br><a class="text-link certificate-link" href="<%= adminBase %>/salaires/absences/<%= absence.id %>/certificat" target="_blank" rel="noopener">Certificat</a><% } %></td>
                <td>
                  <% if (absence.status === 'requested') { %>
                    <form method="post" action="<%= adminBase %>/salaires/absences/<%= absence.id %>/statut" class="inline-form">
                      <input type="hidden" name="_csrf" value="<%= csrfToken %>">
                      <input type="hidden" name="status" value="approved">
                      <button class="secondary small">Approuver</button>
                    </form>
                  <% } %>
                </td>
              </tr>
            <% }) %>
            <% if (!absenceRows.length) { %><tr><td colspan="6">Aucune absence enregistrée.</td></tr><% } %>
          </tbody>
        </table>
      </div>
    </details>

    <details id="impot-source" class="panel payroll-section-drawer">
      <summary class="premium-drawer-summary">
        <span>
          <strong>Impôt source</strong>
          <small>Barèmes par canton, tranches et import CSV/TSV.</small>
        </span>
        <span class="badge"><%= sourceTaxRows.length %> ligne(s)</span>
      </summary>
      <form method="post" action="<%= adminBase %>/salaires/impot-source" class="form-grid">
        <input type="hidden" name="_csrf" value="<%= csrfToken %>">
        <input type="hidden" name="tax_year" value="<%= year %>">
        <div class="form-grid four">
          <label>Canton<input name="canton" maxlength="8" placeholder="VD"></label>
          <label>Barème<input name="tariff_code" placeholder="A0N"></label>
          <label>Enfants<input type="number" min="0" name="children_count" value="0"></label>
          <label>Taux %<input type="number" step="0.0001" name="rate" value="0"></label>
        </div>
        <div class="form-grid four">
          <label>Revenu dès<input type="number" step="0.01" name="monthly_income_from" value="0"></label>
          <label>Revenu jusqu’à<input type="number" step="0.01" name="monthly_income_to" value="999999"></label>
          <label>Montant fixe<input type="number" step="0.01" name="fixed_amount" value="0"></label>
          <label class="check premium-check"><input type="checkbox" name="church_tax"><span><strong>Impôt ecclésiastique</strong><small>Barème avec code confessionnel.</small></span></label>
        </div>
        <label>Import CSV/TSV<textarea name="bulk_rates" placeholder="canton;barème;enfants;eglise;revenu_de;revenu_a;taux;montant_fixe&#10;VD;A0N;0;0;0;4500;5.20;0"></textarea></label>
        <button>Enregistrer les barèmes</button>
      </form>
      <div class="table-wrap">
        <table>
          <thead><tr><th>Canton</th><th>Barème</th><th>Enfants</th><th>Revenu</th><th>Taux</th><th>Fixe</th></tr></thead>
          <tbody>
            <% sourceTaxRows.slice(0, 80).forEach((rate) => { %>
              <tr>
                <td><%= rate.canton %></td>
                <td><%= rate.tariff_code %><%= rate.church_tax ? ' · église' : '' %></td>
                <td><%= rate.children_count %></td>
                <td><%= ui.money(rate.monthly_income_from) %> - <%= ui.money(rate.monthly_income_to) %></td>
                <td><%= Number(rate.rate || 0).toFixed(4) %>%</td>
                <td><%= ui.money(rate.fixed_amount) %></td>
              </tr>
            <% }) %>
            <% if (!sourceTaxRows.length) { %><tr><td colspan="6">Aucun barème importé pour <%= year %>.</td></tr><% } %>
          </tbody>
        </table>
      </div>
    </details>

    <details id="reglages" class="panel form-grid payroll-settings-drawer">
      <summary><span><strong>Paramètres sociaux et ISO 20022</strong><small>AVS/AI/APG, AC, LPP, LAA, IJM, pain.001 et pied de fiche</small></span><span class="badge">Suisse</span></summary>
      <form method="post" action="<%= adminBase %>/salaires/reglages" class="form-grid">
        <input type="hidden" name="_csrf" value="<%= csrfToken %>">
        <div class="form-grid four">
          <label>AVS/AI/APG employé %<input type="number" step="0.01" name="ahv_ai_apg_employee_rate" value="<%= payrollSettings.ahv_ai_apg_employee_rate %>"></label>
          <label>AVS/AI/APG employeur %<input type="number" step="0.01" name="ahv_ai_apg_employer_rate" value="<%= payrollSettings.ahv_ai_apg_employer_rate %>"></label>
          <label>AC employé %<input type="number" step="0.01" name="alv_employee_rate" value="<%= payrollSettings.alv_employee_rate %>"></label>
          <label>AC employeur %<input type="number" step="0.01" name="alv_employer_rate" value="<%= payrollSettings.alv_employer_rate %>"></label>
        </div>
        <div class="form-grid four">
          <label>Plafond AC annuel<input type="number" step="0.01" name="alv_ceiling_annual" value="<%= payrollSettings.alv_ceiling_annual %>"></label>
          <label>Plafond LAA annuel<input type="number" step="0.01" name="laa_salary_ceiling_annual" value="<%= payrollSettings.laa_salary_ceiling_annual %>"></label>
          <label>Allocations familiales %<input type="number" step="0.01" name="family_allowance_employer_rate" value="<%= payrollSettings.family_allowance_employer_rate %>"></label>
          <label>Frais caisse %<input type="number" step="0.01" name="admin_fee_employer_rate" value="<%= payrollSettings.admin_fee_employer_rate %>"></label>
        </div>
        <div class="form-grid four">
          <label>Seuil LPP annuel<input type="number" step="0.01" name="lpp_entry_threshold_annual" value="<%= payrollSettings.lpp_entry_threshold_annual %>"></label>
          <label>Déduction coordination<input type="number" step="0.01" name="lpp_coordination_deduction_annual" value="<%= payrollSettings.lpp_coordination_deduction_annual %>"></label>
          <label>Salaire max LPP<input type="number" step="0.01" name="lpp_max_insured_salary_annual" value="<%= payrollSettings.lpp_max_insured_salary_annual %>"></label>
          <label>Salaire coordonné min<input type="number" step="0.01" name="lpp_min_coordinated_salary_annual" value="<%= payrollSettings.lpp_min_coordinated_salary_annual %>"></label>
        </div>
        <div class="form-grid four">
          <label>LPP employé défaut %<input type="number" step="0.01" name="default_lpp_employee_rate" value="<%= payrollSettings.default_lpp_employee_rate %>"></label>
          <label>LPP employeur défaut %<input type="number" step="0.01" name="default_lpp_employer_rate" value="<%= payrollSettings.default_lpp_employer_rate %>"></label>
          <label>LAA non-prof. employé %<input type="number" step="0.01" name="default_laa_nbu_employee_rate" value="<%= payrollSettings.default_laa_nbu_employee_rate %>"></label>
          <label>LAA prof. employeur %<input type="number" step="0.01" name="default_laa_bu_employer_rate" value="<%= payrollSettings.default_laa_bu_employer_rate %>"></label>
        </div>
        <div class="form-grid four">
          <label>IJM employé défaut %<input type="number" step="0.01" name="default_ijm_employee_rate" value="<%= payrollSettings.default_ijm_employee_rate %>"></label>
          <label>IJM employeur défaut %<input type="number" step="0.01" name="default_ijm_employer_rate" value="<%= payrollSettings.default_ijm_employer_rate %>"></label>
          <label>Namespace pain.001<input name="pain001_namespace" value="<%= payrollSettings.pain001_namespace || '' %>"></label>
          <label>Charge bearer<input name="pain001_charge_bearer" value="<%= payrollSettings.pain001_charge_bearer || 'SLEV' %>"></label>
        </div>
        <label>Texte de pied de fiche<textarea name="payslip_footer"><%= payrollSettings.payslip_footer || '' %></textarea></label>
        <button>Enregistrer les paramètres</button>
      </form>
    </details>

    <section class="payroll-profiles">
      <div class="compact-heading">
        <div>
          <p class="eyebrow">Collaborateurs</p>
          <h2>Données salariales</h2>
        </div>
      </div>
      <% if (!employees.length) { %>
        <section class="panel"><p class="muted">Ajoutez d’abord des employés dans l’équipe.</p></section>
      <% } %>
      <% employees.forEach((employee) => { %>
        <details id="employe-<%= employee.user_id %>" class="payroll-profile-card">
          <summary>
            <span>
              <strong><%= employee.first_name %> <%= employee.last_name %></strong>
              <small><%= employee.email %></small>
            </span>
            <span class="badge"><%= employee.payrollReady.ready ? 'Profil prêt' : `${employee.payrollReady.percent}% complet` %></span>
          </summary>
          <% if (employee.payrollReady.missing.length) { %>
            <p class="muted">À compléter: <%= employee.payrollReady.missing.join(', ') %>.</p>
          <% } %>
          <form method="post" action="<%= adminBase %>/salaires/employes/<%= employee.user_id %>" class="form-grid">
            <input type="hidden" name="_csrf" value="<%= csrfToken %>">
            <div class="form-grid four">
              <label>N AVS<input name="ahv_number" value="<%= employee.ahv_number || '' %>" placeholder="756.xxxx.xxxx.xx"></label>
              <label>Date de naissance<input type="date" name="date_of_birth" value="<%= ui.dateInput(employee.date_of_birth) %>"></label>
              <label>Nationalité<input name="nationality" value="<%= employee.nationality || '' %>"></label>
              <label>Canton<input name="canton" value="<%= employee.canton || '' %>" maxlength="8" placeholder="VD, GE, FR"></label>
            </div>
            <div class="form-grid four">
              <label>Commune fiscale<input name="municipality" value="<%= employee.municipality || '' %>"></label>
              <label>Permis<input name="permit_type" value="<%= employee.permit_type || '' %>" placeholder="B, C, G, L"></label>
              <label>État civil<input name="marital_status" value="<%= employee.marital_status || '' %>"></label>
              <label>Enfants<input type="number" min="0" name="children_count" value="<%= employee.children_count || 0 %>"></label>
            </div>
            <div class="form-grid four">
              <label>Début contrat<input type="date" name="employment_start" value="<%= ui.dateInput(employee.employment_start) %>"></label>
              <label>Fin contrat<input type="date" name="employment_end" value="<%= ui.dateInput(employee.employment_end) %>"></label>
              <label>Type de salaire<select name="salary_type">
                <option value="monthly" <%= employee.salary_type !== 'hourly' ? 'selected' : '' %>>Mensuel</option>
                <option value="hourly" <%= employee.salary_type === 'hourly' ? 'selected' : '' %>>Horaire</option>
              </select></label>
              <label>Taux activité %<input type="number" step="0.01" name="working_percentage" value="<%= fmt(employee.working_percentage || 100) %>"></label>
            </div>
            <div class="form-grid four">
              <label>Salaire mensuel<input type="number" step="0.01" name="monthly_salary" value="<%= fmt(employee.monthly_salary) %>"></label>
              <label>Taux horaire<input type="number" step="0.01" name="hourly_rate" value="<%= fmt(employee.hourly_rate || employee.internal_hourly_rate) %>"></label>
              <label>Heures mensuelles<input type="number" step="0.01" name="monthly_hours" value="<%= fmt(employee.monthly_hours) %>"></label>
              <label>Heures hebdomadaires<input type="number" step="0.01" name="weekly_hours" value="<%= fmt(employee.weekly_hours || 42) %>"></label>
            </div>
            <div class="form-grid four">
              <label>Vacances %<input type="number" step="0.01" name="vacation_pay_rate" value="<%= fmt(employee.vacation_pay_rate) %>"></label>
              <label>Droit vacances annuel (jours)<input type="number" step="0.5" min="0" name="vacation_entitlement_days" value="<%= fmt(employee.vacation_entitlement_days || 20) %>"></label>
              <label>LPP employé %<input type="number" step="0.01" name="lpp_employee_rate" value="<%= employee.lpp_employee_rate === null || typeof employee.lpp_employee_rate === 'undefined' ? '' : fmt(employee.lpp_employee_rate) %>"></label>
              <label>LPP employeur %<input type="number" step="0.01" name="lpp_employer_rate" value="<%= employee.lpp_employer_rate === null || typeof employee.lpp_employer_rate === 'undefined' ? '' : fmt(employee.lpp_employer_rate) %>"></label>
            </div>
            <div class="form-grid four">
              <label>Barème IS<input name="source_tax_tariff" value="<%= employee.source_tax_tariff || '' %>" placeholder="A0N"></label>
              <label>LAA non-prof. %<input type="number" step="0.01" name="laa_nbu_employee_rate" value="<%= employee.laa_nbu_employee_rate === null || typeof employee.laa_nbu_employee_rate === 'undefined' ? '' : fmt(employee.laa_nbu_employee_rate) %>"></label>
              <label>LAA prof. %<input type="number" step="0.01" name="laa_bu_employer_rate" value="<%= employee.laa_bu_employer_rate === null || typeof employee.laa_bu_employer_rate === 'undefined' ? '' : fmt(employee.laa_bu_employer_rate) %>"></label>
              <label>IJM employé %<input type="number" step="0.01" name="ijm_employee_rate" value="<%= employee.ijm_employee_rate === null || typeof employee.ijm_employee_rate === 'undefined' ? '' : fmt(employee.ijm_employee_rate) %>"></label>
              <label>IJM employeur %<input type="number" step="0.01" name="ijm_employer_rate" value="<%= employee.ijm_employer_rate === null || typeof employee.ijm_employer_rate === 'undefined' ? '' : fmt(employee.ijm_employer_rate) %>"></label>
            </div>
            <div class="form-grid three">
              <label>Impôt source % manuel<input type="number" step="0.01" name="source_tax_rate" value="<%= fmt(employee.source_tax_rate) %>"></label>
              <label>Impôt source montant<input type="number" step="0.01" name="source_tax_amount" value="<%= fmt(employee.source_tax_amount) %>"></label>
              <label>Autre retenue mensuelle<input type="number" step="0.01" name="other_monthly_deduction" value="<%= fmt(employee.other_monthly_deduction) %>"></label>
            </div>
            <label>IBAN salaire<input name="bank_iban" value="<%= employee.bank_iban || '' %>"></label>
            <div class="payroll-switches">
              <label><input type="checkbox" name="thirteenth_enabled" <%= Number(employee.thirteenth_enabled || 0) === 1 ? 'checked' : '' %>> 13e salaire</label>
              <label><input type="checkbox" name="lpp_enabled" <%= employee.payroll_profile_id ? (Number(employee.lpp_enabled) === 1 ? 'checked' : '') : 'checked' %>> Soumis LPP</label>
              <label><input type="checkbox" name="source_tax_subject" <%= Number(employee.source_tax_subject || 0) === 1 ? 'checked' : '' %>> Soumis impôt source</label>
              <label><input type="checkbox" name="church_tax" <%= Number(employee.church_tax || 0) === 1 ? 'checked' : '' %>> Impôt ecclésiastique</label>
            </div>
            <label>Note RH<textarea name="payroll_note"><%= employee.payroll_note || '' %></textarea></label>
            <button>Enregistrer le profil salarial</button>
          </form>
        </details>
      <% }) %>
    </section>
    <script>
      (() => {
        const openFromHash = () => {
          const id = decodeURIComponent(window.location.hash || '').replace('#', '');
          if (!id) return;
          const panel = document.getElementById(id);
          if (panel && panel.tagName === 'DETAILS') panel.open = true;
        };
        window.addEventListener('hashchange', openFromHash);
        openFromHash();
      })();
    </script>
  </section>
</div>
