export async function initFiscal(state, utils){
  // Chamadas HTTP padronizadas com apiRequest (injeção automática de Authorization e x-tenant-id)

  const elAut = document.querySelector('#kpiFiscalAut div:nth-child(2)');
  const elRej = document.querySelector('#kpiFiscalRej div:nth-child(2)');
  const elCanc = document.querySelector('#kpiFiscalCanc div:nth-child(2)');
  const elLast = document.getElementById('kpiFiscalLast');
  const elErr = document.getElementById('kpiFiscalErr');

  function fmtDateTime(ts){
    if (!ts) return 'Última emissão: —';
    try {
      const d = new Date(ts);
      const dd = String(d.getDate()).padStart(2,'0');
      const mm = String(d.getMonth()+1).padStart(2,'0');
      const yyyy = d.getFullYear();
      return 'Última emissão: ' + `${dd}-${mm}-${yyyy}`;
    } catch(e){ return 'Última emissão: ' + String(ts); }
  }

  const { start, end } = state.filters || {};
  const params = new URLSearchParams();
  if (start) params.set('from', start);
  if (end) params.set('to', end);

  try {
    // Status consolidado (última emissão)
    const stRes = await window.apiRequest('/api/fiscal/status', { method: 'GET' });
    const stData = stRes.ok ? (await stRes.json()).data || {} : {};
    const nfceSt = stData.nfce || {};
    const lastTs = nfceSt.last_ts || null;
    if (elLast) elLast.textContent = fmtDateTime(lastTs);

    // Métricas por período
    const mtRes = await window.apiRequest('/api/fiscal/metrics' + (params.toString() ? ('?' + params.toString()) : ''), { method: 'GET' });
    const mtJson = mtRes.ok ? await mtRes.json() : { data: {} };
    const nfceMetrics = (mtJson.data && mtJson.data.nfce) ? mtJson.data.nfce : [];

    const totals = nfceMetrics.reduce((acc, row) => {
      const s = String(row.status || '').toLowerCase();
      const c = Number(row.c || 0);
      acc[s] = (acc[s] || 0) + c;
      return acc;
    }, {});

    const aut = totals['authorized'] || totals['autorizado'] || 0;
    const rej = totals['rejected'] || totals['rejeitado'] || 0;
    const canc = totals['canceled'] || totals['cancelado'] || 0;

    if (elAut) elAut.textContent = String(aut);
    if (elRej) elRej.textContent = String(rej);
    if (elCanc) elCanc.textContent = String(canc);

    if (elErr) {
      const errors = [];
      if (mtJson.data && mtJson.data.nfce_error) errors.push(mtJson.data.nfce_error);
      if (stData && stData.nfce_error) errors.push(stData.nfce_error);
      elErr.textContent = errors.length ? ('Erros: ' + errors.join('; ')) : '—';
    }
  } catch (e) {
    if (elErr) elErr.textContent = 'Falha ao carregar KPIs fiscais';
  }
}