Conversation
The invoice recipient report was PDF only, so the figures could not be filtered, corrected or re-summed without retyping them. A format dropdown in the export form now offers Excel alongside the PDF. The workbook mirrors the PDF layout with one worksheet per recipient, but writes amounts as real numbers and every totals row as a SUM formula. Each formula also carries its computed result as a cached value: tools that do not evaluate formulas, such as pandas reading via openpyxl, otherwise see those cells as empty. Recipient names are user-controlled, so worksheet names are sanitised against exceljs's rules: forbidden characters, the 31-char cap, case-insensitive collisions, the reserved name "History", and edge quotes exceljs rejects. Non-finite amounts are written as empty cells rather than NaN, which Excel would otherwise report as a corrupt workbook. Data loading and recipient grouping move to InvoicesReportData, which both report formats extend, so the two always show the same rows in the same order. InvoicesReport.spec.ts is unchanged and covers the refactor. Generation failures now propagate instead of being swallowed: the saga clears the in-progress flag in a finally block (fixing the same gap in the pre-existing PDF path), so a failed report cannot leave the form stuck disabled with nothing shown. exceljs is reached through a dynamic import kept in its own module, so its ~1MB bundle lands in a separate chunk that is only fetched when a report is generated, and is excluded from the service worker's precache manifest so it isn't downloaded on install either. InvoicesExcelReport.ts is at 100% statement/branch/function/line coverage; the wiring in InvoicesReportData.collect(), the saga's format branching, and the format parameter's round trip through the container and form are each covered directly rather than simulated.
The export page section was labelled "Rechnungsberichte herunterladen (PDF)" / "Download invoice reports (PDF)", which became inaccurate once the report form gained an Excel option alongside PDF.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.