<%- include('partials/header') %>
<% const eur = (n) => n == null ? '—' : n.toLocaleString('fr-FR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }); %>
<div class="page-head">
  <h1>Prix</h1>
  <div>
    <a class="btn btn-ghost" href="<%= base %>/prices/export.csv?<%= new URLSearchParams(Object.entries(q).filter(([k, v]) => v && k !== 'page')).toString() %>">Exporter CSV</a>
  </div>
</div>

<p class="muted">
  TVA de calcul : <%= settings.tax_rate %> % · Arrondi : <%= ROUNDING_MODES[settings.rounding] %> · Plusieurs fournisseurs : <%= settings.strategy === 'cheapest' ? 'le moins cher' : 'par priorité' %> ·
  Prix d’achat PrestaShop <%= settings.update_wholesale === '1' ? 'mis à jour' : 'non modifié' %> — <a href="<%= base %>/settings">modifier</a>
</p>

<form class="toolbar" method="get">
  <select name="status">
    <% Object.entries(STATUS).forEach(([k, v]) => { %><option value="<%= k %>" <%= q.status === k ? 'selected' : '' %>><%= v %></option><% }) %>
  </select>
  <select name="supplier">
    <option value="">Tous fournisseurs</option>
    <% suppliers.forEach(s => { %><option value="<%= s.id %>" <%= String(q.supplier) === String(s.id) ? 'selected' : '' %>><%= s.name %></option><% }) %>
  </select>
  <select name="combos">
    <option value="">Produits + déclinaisons</option>
    <option value="no" <%= q.combos === 'no' ? 'selected' : '' %>>Produits seulement</option>
  </select>
  <select name="sort">
    <% [['id', 'Tri : ID'], ['ref', 'Tri : référence'], ['name', 'Tri : nom'], ['diff', 'Tri : plus gros écart'], ['margin', 'Tri : marge la plus faible']].forEach(([k, v]) => { %>
      <option value="<%= k %>" <%= q.sort === k ? 'selected' : '' %>><%= v %></option>
    <% }) %>
  </select>
  <input name="q" value="<%= q.q || '' %>" placeholder="Rechercher…">
  <button class="btn">Filtrer</button>
  <span class="muted"><%= total %> ligne(s)</span>
  <% if (q.status === 'unmatched' && suppliers.length) { %><span class="small">Rien ne se rapproche ? <a href="<%= base %>/suppliers/<%= suppliers[0].id %>/diagnostic">Ouvrir le diagnostic</a></span><% } %>
</form>

<form method="post" action="<%= base %>/sync/push" id="push-form" data-confirm-push>
  <input type="hidden" name="_csrf" value="<%= csrf %>">
  <div class="card">
  <div class="bulkbar">
    <label class="check"><input type="checkbox" id="check-all"> Tout cocher (page)</label>
    <button class="btn btn-sm" name="dry_run" value="1" data-needs-selection>Simuler la sélection</button>
    <button class="btn btn-sm btn-primary" name="dry_run" value="0" data-needs-selection data-confirm="Envoyer les prix sélectionnés vers PrestaShop ?">Envoyer la sélection</button>
    <span class="muted small" id="sel-count"></span>
  </div>
  <div class="scroll-x">
  <table class="table prices">
    <thead>
      <tr>
        <th></th><th>ID</th><th>Référence</th><th>Produit</th><th>Fournisseur</th>
        <th class="num">Achat HT</th><th class="num">Marge<br><span class="muted">forcer</span></th>
        <th class="num">Actuel HT<br><span class="muted">TTC</span></th>
        <th class="num">Nouveau HT<br><span class="muted">TTC</span></th>
        <th class="num">Écart</th><th class="num" title="(vente HT − achat HT) / vente HT">Marge réelle</th><th>Exclure</th>
      </tr>
    </thead>
    <tbody>
    <% rows.forEach(r => { %>
      <tr class="<%= r.excluded ? 'dim' : '' %> <%= r.active === 0 ? 'inactive' : '' %>" data-idp="<%= r.id_product %>" data-ida="<%= r.id_product_attribute %>">
        <td><% if (r.changed) { %><input type="checkbox" name="keys" value="<%= r.key %>" class="row-check"><% } %></td>
        <td class="small"><%= r.id_product %><%= r.is_combo ? '/' + r.id_product_attribute : '' %></td>
        <td><%= r.reference %><% if (r.ean13) { %><br><span class="muted small"><%= r.ean13 %></span><% } %></td>
        <td class="name"><%= r.name %><%= r.active === 0 ? ' (inactif)' : '' %></td>
        <td class="small"><% if (r.matched) { %><%= r.supplier_name %><br><span class="muted"><%= r.supplier_ref %></span><%= r.candidates > 1 ? ` (+${r.candidates - 1})` : '' %><% } else { %><span class="muted">—</span><% } %></td>
        <td class="num"><%= r.matched ? eur(r.purchase) : '—' %></td>
        <td class="num">
          <% if (r.matched) { %>
          <span class="small margin-label" title="Source : <%= r.coef_source %>"><%= r.margin_label %></span><br>
          <input class="coef-input" value="<%= r.override && r.override.coefficient ? String(r.override.coefficient).replace('.', ',') : '' %>" placeholder="<%= String(r.margin_value).replace('.', ',') %>" title="Valeur propre à ce produit, dans le type de calcul du fournisseur (<%= r.margin_label %>). Laisser vide pour reprendre la marge du fournisseur." inputmode="decimal">
          <% } %>
        </td>
        <td class="num"><%= eur(r.current_price) %><br><span class="muted"><%= eur(r.current_ttc) %></span></td>
        <td class="num <%= r.changed ? 'strong' : '' %>"><%= r.matched ? eur(r.new_price) : '—' %><br><span class="muted"><%= r.matched ? eur(r.new_ttc) : '' %></span></td>
        <td class="num <%= r.diff_pct > 0 ? 'up' : (r.diff_pct < 0 ? 'down' : '') %>"><%= r.diff_pct == null ? '—' : (r.diff_pct > 0 ? '+' : '') + r.diff_pct + ' %' %></td>
        <td class="num <%= r.margin_pct != null && r.margin_pct < 15 ? 'down' : '' %>"><%= r.margin_pct == null ? '—' : r.margin_pct + ' %' %></td>
        <td><input type="checkbox" class="exclude-input" <%= r.excluded ? 'checked' : '' %> title="Ne jamais mettre à jour ce prix"></td>
      </tr>
    <% }) %>
    <% if (!rows.length) { %><tr><td colspan="12" class="muted">Aucune ligne pour ces filtres.</td></tr><% } %>
    </tbody>
  </table>
  </div>
  <%- include('partials/pager', { query: q }) %>
  </div>
</form>
<p class="small muted">La marge de chaque fournisseur se règle dans <a href="<%= base %>/suppliers">Fournisseurs</a> et s’applique à tous ses produits. Forcer une valeur ici ne concerne que la ligne, dans le même type de calcul que le fournisseur. Modifier une marge forcée ou une exclusion enregistre immédiatement ; rechargez la page pour recalculer la liste. Marge réelle = (vente HT − achat HT) / vente HT, après arrondi.</p>
<%- include('partials/footer') %>
