<%- include('../partials/header') %>
<% const pct = (n, d) => d ? Math.round((n / d) * 100) + ' %' : '—'; %>
<div class="page-head">
  <h1>Diagnostic — <%= s.name %></h1>
  <div>
    <a class="btn btn-ghost" href="<%= base %>/suppliers/<%= s.id %>/items">Tarifs</a>
    <a class="btn btn-ghost" href="<%= base %>/suppliers/<%= s.id %>">Fiche fournisseur</a>
  </div>
</div>

<% if (s.match_mode === 'ean13' && !eanColumnMapped && counts.items) { %>
  <div class="alert alert-error">
    <strong>Aucune colonne EAN n’a été choisie lors du dernier import</strong> de ce fournisseur, alors que le rapprochement se fait par EAN.
    <a href="<%= base %>/suppliers/<%= s.id %>#import">Réimportez le fichier</a> en indiquant la colonne « EAN / code-barres »<%= counts.eanFromReference ? ` (en attendant, ${counts.eanFromReference} référence(s) qui ressemblent à des codes-barres sont utilisées)` : '' %>.
  </div>
<% } %>
<% if (!counts.ps) { %>
  <div class="alert alert-warning">Le catalogue PrestaShop n’a pas encore été récupéré. Lancez-le depuis <a href="<%= base %>/sync">Synchronisation</a>, sinon aucun rapprochement n’est possible.</div>
<% } else if (current.matched === 0) { %>
  <div class="alert alert-error">
    <strong>Aucun article rapproché</strong> avec le mode actuel (<%= current.label %>).
    <% if (best.matched > 0) { %> Le mode « <%= best.label %> » en trouverait <strong><%= best.matched %></strong> : voir le tableau ci-dessous.<% } %>
  </div>
<% } else if (current.matched < current.withKey / 2) { %>
  <div class="alert alert-warning">Seulement <%= current.matched %> article(s) rapproché(s) sur <%= current.withKey %>.</div>
<% } else { %>
  <div class="alert alert-success"><%= current.matched %> article(s) rapproché(s) sur <%= current.withKey %> (<%= pct(current.matched, current.withKey) %>).</div>
<% } %>

<section class="card">
  <h2>Quel mode de rapprochement fonctionne le mieux ?</h2>
  <table class="table">
    <thead><tr><th>Mode</th><th class="num">Articles fournisseur avec un code</th><th class="num">Produits PrestaShop avec un code</th><th class="num">Rapprochés</th><th></th></tr></thead>
    <tbody>
    <% modes.forEach(m => { %>
      <tr class="<%= m.mode === s.match_mode ? 'row-current' : '' %>">
        <td><%= m.label %><%= m.mode === s.match_mode ? ' (actuel)' : '' %></td>
        <td class="num"><%= m.withKey %> / <%= counts.items %></td>
        <td class="num"><%= m.psWithKey %> / <%= counts.ps %></td>
        <td class="num strong <%= m.matched ? 'up' : 'down' %>"><%= m.matched %></td>
        <td class="actions">
          <% if (m.mode !== s.match_mode) { %>
          <form method="post" action="<%= base %>/suppliers/<%= s.id %>/match-mode">
            <input type="hidden" name="_csrf" value="<%= csrf %>">
            <input type="hidden" name="match_mode" value="<%= m.mode %>">
            <button class="btn btn-sm">Utiliser ce mode</button>
          </form>
          <% } %>
        </td>
      </tr>
    <% }) %>
    </tbody>
  </table>
</section>

<div class="grid2">
<section class="card">
  <h2>Codes-barres du fichier fournisseur</h2>
  <table class="table">
    <tr><td>Articles importés</td><td class="num"><%= counts.items %></td></tr>
    <tr><td>Avec une colonne EAN renseignée</td><td class="num"><%= counts.withEan %></td></tr>
    <tr class="<%= counts.noEan && !counts.eanFromReference ? 'warn-row' : '' %>"><td>Sans EAN</td><td class="num"><%= counts.noEan %></td></tr>
    <tr class="<%= counts.scientific ? 'warn-row' : '' %>"><td>EAN en notation scientifique (3,7E+12)</td><td class="num"><%= counts.scientific %></td></tr>
    <tr><td>EAN non trouvés dans PrestaShop</td><td class="num"><%= counts.unmatchedEan %></td></tr>
    <tr class="<%= counts.badChecksum ? 'warn-row' : '' %>"><td>… dont clé de contrôle invalide (code altéré ou erroné)</td><td class="num"><%= counts.badChecksum %></td></tr>
    <tr><td>Produits PrestaShop avec un EAN13 ou UPC</td><td class="num"><%= counts.psWithEan %> / <%= counts.ps %></td></tr>
  </table>

  <% if (counts.noEan && counts.eanFromReference) { %>
    <p class="small">La colonne EAN est vide pour <%= counts.noEan %> article(s), mais la colonne « Référence » contient des chiffres : ils sont utilisés comme code-barres de secours (<%= counts.eanFromReference %> article(s)).</p>
  <% } %>
  <% if (counts.scientific || counts.badChecksum) { %>
    <div class="alert alert-warning">
      <strong>Les codes-barres semblent altérés par Excel.</strong>
      Quand la colonne est au format « Nombre », Excel remplace <code>3011420300012</code> par <code>3,01142E+12</code> : les derniers chiffres sont perdus dans le fichier lui-même, aucune correction n’est possible côté application.
      <br>Solution : demandez le fichier en <strong>CSV</strong>, ou dans Excel mettez la colonne au format <strong>Texte</strong> avant de saisir/coller les codes, puis réenregistrez et réimportez.
      Sinon, utilisez le rapprochement par référence.
    </div>
    <% if (badSamples.length) { %>
      <p class="small muted">Exemples de codes invalides : <%= badSamples.map(b => `${b.reference} → ${b.ean || '(vide)'}`).join(' · ') %></p>
    <% } %>
  <% } %>
</section>

<section class="card">
  <h2>Comparaison des codes (10 premiers)</h2>
  <p class="small muted">« Code comparé » est la valeur réellement utilisée : chiffres seuls, sans zéro de tête pour les EAN, sans espaces ni minuscules pour les références.</p>
  <div class="scroll-x">
  <table class="table">
    <thead><tr><th>Fichier fournisseur</th><th>Code comparé</th><th>PrestaShop</th><th>Code comparé</th><th>Produit</th></tr></thead>
    <tbody>
    <% samples.forEach(r => { %>
      <tr>
        <td class="small"><%= r.supplier_raw || '—' %></td>
        <td class="small strong"><%= r.supplier_key || '—' %></td>
        <td class="small"><%= r.ps_raw || '—' %></td>
        <td class="small strong"><%= r.ps_key || '—' %></td>
        <td class="small muted"><%= r.ps_name %></td>
      </tr>
    <% }) %>
    </tbody>
  </table>
  </div>
  <p class="small">Les deux colonnes « Code comparé » doivent avoir le <strong>même format</strong> (même longueur, même type). Un EAN à 13 chiffres d’un côté et une référence interne de l’autre ne se rapprocheront jamais.</p>
</section>
</div>
<%- include('../partials/footer') %>
