// ═══════════════════════════════════════════════════════════════════════════ // LandveX Finance — Reports View // ═══════════════════════════════════════════════════════════════════════════ export const Reports = { async render(app) { app.render(`

Rapporter

`); document.querySelectorAll('[data-report]').forEach(btn => { btn.addEventListener('click', () => { const report = btn.dataset.report; if (report === 'trial-balance') this.showTrialBalance(app); else if (report === 'sie4') this.showSie4Export(app); else if (report === 'reconciliation') this.showReconciliation(app); }); }); }, async showTrialBalance(app) { document.getElementById('report-content').innerHTML = `

Balansrapport 2026-06

`; try { const data = await app.api.get('/trial-balance?fiscal_year=2026&period=2026-06'); if (!data.ok) return; document.getElementById('tb-content').innerHTML = `
${data.accounts.map(a => ` `).join('')}
Konto Debet Kredit Saldo
${a.account_number} ${a.account_name} ${this.fmt(a.total_debit)} ${this.fmt(a.total_credit)} ${this.fmt(a.balance)}
Totalt ${this.fmt(data.totals.debit)} ${this.fmt(data.totals.credit)} ${data.totals.balanced ? '✓ Balanserad' : '✗ Obalanserad'}
`; } catch (e) { document.getElementById('tb-content').innerHTML = `

Fel: ${e.message}

`; } }, async showSie4Export(app) { document.getElementById('report-content').innerHTML = `

SIE4-export

Exportera bokföringsdata till SIE4-format för import i externa program.

`; document.getElementById('btn-export').addEventListener('click', async () => { const year = document.getElementById('sie4-year').value; window.open(`/api/ledger/export/sie4?fiscal_year=${year}`, '_blank'); }); document.getElementById('btn-preview').addEventListener('click', async () => { const year = document.getElementById('sie4-year').value; try { const data = await app.api.get(`/export/sie4/preview?fiscal_year=${year}`); document.getElementById('sie4-output').style.display = 'block'; document.getElementById('sie4-output').textContent = data.content || 'Ingen data'; } catch (e) { alert('Fel: ' + e.message); } }); }, async showReconciliation(app) { document.getElementById('report-content').innerHTML = `

Bankavstämning

Välj konto och period för avstämning.

`; document.getElementById('btn-rec').addEventListener('click', async () => { const account = document.getElementById('rec-account').value; const period = document.getElementById('rec-period').value; try { const data = await app.api.post('/reconciliation/sessions', { account_number: account, period, fiscal_year: 2026, bank_balance: 0 }); if (data.ok) { document.getElementById('rec-result').innerHTML = `
Avstämning skapad!
Session: ${data.session.id}
Bank: ${data.session.bank_balance}
Ledger: ${data.session.ledger_balance}
Diff: ${data.session.difference}
`; } } catch (e) { document.getElementById('rec-result').innerHTML = `

Fel: ${e.data?.error || e.message}

`; } }); }, fmt(n) { return new Intl.NumberFormat('sv-SE', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(n); } };