github securo-finance/securo v0.15.0

3 hours ago

In this release we added an invoicing ledger to workspaces that track work: you can write an invoice, issue it with a number, render it as a document and a PDF, share it through a link anyone can open, and settle it against the money that actually landed in an account. Alongside it, the dashboard's category widget now counts pending spend the same way its drill-down does, Enable Banking no longer imports the same transactions over and over when a provider paginates in a loop, and Securo speaks Slovak and handles Turkish lira and Azerbaijani manat.

securo-invoices-en

Features

  • An invoicing ledger. Workspaces that track work get a receivables side: draft an invoice from line items, issue it to assign a number, and follow it through open, partly paid, paid, overdue and uncollectible. The list carries an aging breakdown, filters by state and fiscal year, and totals what is outstanding, overdue and received this month (#718)
  • Invoices render as a document and a PDF. Issuer block, client block, line items, payment details and a footer note, drawn from a snapshot frozen when the invoice was issued so a later settings change never rewrites a document already sent. The PDF is drawn with ReportLab, which needs no native libraries in the image (#718)
  • A share link for an invoice. One link, revocable, that shows the document and offers the PDF without asking whoever opens it to sign in (#718)
  • Payments are matched against real transactions. Settling an invoice means picking the entry that paid it, in full or in part, so the ledger and the account never drift apart (#718)
  • Slovak. A full translation of the interface. By @ZEDce (#737) πŸŽ‰
  • Turkish lira. By @aryahassibi (#788) πŸŽ‰
  • Azerbaijani manat, with the date and amount formats and the VΓ–EN validation rules that go with it. Closes #650, by @turkelali (#722) πŸŽ‰

Fixes

  • Enable Banking imported the same transactions up to fifty times. A provider that keeps returning the same continuation key sent the sync round the same page forever; pagination now stops when a page repeats itself. Closes #717, by @jfrcom (#761) πŸŽ‰
  • The dashboard's category widget disagreed with its own drill-down. The widget counted only settled spend while the list behind it also counted pending rows and recurring projections; both read the same figure now. This is the half of #567 the income and expense cards did not cover. Reported by @Luis2EMP and @john-frandsen, by @panga (#742) πŸŽ‰
  • A shared connection imported transactions as the wrong user. They are attributed to the connection's owner now. By @panga (#750) πŸŽ‰
  • The agents' suggestion chips reshuffled on every render instead of holding still long enough to be clicked (#707)
  • The Slovak locale was missing the az_voen key added with the Azerbaijani jurisdiction (#782)

Under the hood

Migrations 077 through 084 run automatically on upgrade, adding the invoice, allocation, attachment and settings tables, the share token and logo, and composite indexes for the dashboard's transaction scans Β· the dashboard's balance figures are gathered in fewer round-trips, by @panga (#748) πŸŽ‰ Β· the frontend moved to TypeScript 7 and Vite 8, by @panga (#743) πŸŽ‰ Β· React Testing Library now covers the login and registration paths and asserts that every page and component module still evaluates and exports what it claims (#793) Β· four tests that failed on the 31st of a month, on a month boundary, or when a second workspace was present were made deterministic, by @rhuanbello (#749) and (#777, #786, #799) Β· a .venv symlink is ignored the same way a .venv directory is (#783) Β· actions/github-script was updated to v9 (#772)

Thanks @panga, @ZEDce, @aryahassibi, @turkelali, @jfrcom and @rhuanbello for the code and the reviews, and @Luis2EMP, @john-frandsen, @mckusck and @AlbertoKarakoutev for the reports πŸ’œ

Full Changelog: v0.14.5...v0.15.0

Don't miss a new securo release

NewReleases is sending notifications on new releases.