// ═══════════════════════════════════════════════════════════════════════════ // LandveX Finance — Journal View // ═══════════════════════════════════════════════════════════════════════════ export const Journal = { async render(app) { app.render(`
Fel: ${e.message}
`; } }, renderJournal(data, app) { if (!data.ok || !data.entries) return; document.getElementById('journal-content').innerHTML = `| Nr | Datum | Beskrivning | Belopp | Status |
|---|---|---|---|---|
| #${e.entry_number || '—'} | ${e.entry_date?.split('T')[0] || ''} | ${e.description} | ${this.fmt(e.total_amount || 0)} | ${e.status} |
Visar 50 av ${data.entries.length} verifikationer
` : ''} `; // Click handlers document.querySelectorAll('#journal-content tbody tr').forEach(tr => { tr.addEventListener('click', () => { const id = tr.dataset.id; this.showEntryDetail(id, app); }); }); }, showEntryForm(app) { document.getElementById('journal-content').innerHTML = ` `; document.getElementById('btn-cancel').addEventListener('click', () => { this.render(app); }); document.getElementById('entry-form').addEventListener('submit', async (e) => { e.preventDefault(); const form = e.target; const lines = []; form.querySelectorAll('.line-row').forEach(row => { const account = row.querySelector('[name="account"]').value; const debit = parseFloat(row.querySelector('[name="debit"]').value) || 0; const credit = parseFloat(row.querySelector('[name="credit"]').value) || 0; if (account && (debit || credit)) { lines.push({ account_number: account, debit, credit, description: '' }); } }); const payload = { entry_date: form.entry_date.value, description: form.description.value, reference: form.reference.value, lines }; try { await app.api.post('/journal', payload); alert('Verifikation sparad!'); this.render(app); } catch (err) { alert('Fel: ' + (err.data?.error || err.message)); } }); }, async showEntryDetail(id, app) { try { const data = await app.api.get(`/journal/${id}`); if (!data.ok) return; const e = data.entry; document.getElementById('journal-content').innerHTML = `${e.description}
| Konto | Debet | Kredit |
|---|---|---|
| ${l.account_number} ${l.description || ''} | ${l.debit ? this.fmt(l.debit) : ''} | ${l.credit ? this.fmt(l.credit) : ''} |