Commit graph

20 commits

Author SHA1 Message Date
1c7ba7f416 PR D: per-scope repository cache
Add a Scoped RepositoryCache that memoizes deserialized XML lists,
keyed by absolute file path. Each XML file is loaded at most once per
SignalR circuit; Save invalidates the corresponding entry so
subsequent reads reload from disk.

BaseRepository gains a LoadList<T>(fileName) helper; each of the seven
repositories now defines Get*List() as a one-liner over that helper
and takes RepositoryCache via the constructor.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-02 20:52:24 +02:00
8961bb234c PR C: mechanical cleanup (typos, packages, formatting, culture)
- Consolidate decimal.ToFormattedString into Schaad.Accounting.Formatting
- Rename EnsureFileExisits -> EnsureFileExists and
  SplitPredefiniton* -> SplitPredefinition* (class, interface, files, DI reg)
- AccountRepository: single-save year-rollover start-balance seed
- Drop legacy .NET Standard packages redundant on net9.0 and the stale
  Interfaces\Extensions\ folder entry
- Set culture via RequestLocalizationOptions middleware
- Plan: item 9 (unit of work) split off into a dedicated PR D

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-02 20:46:55 +02:00
9f11f6490b PR A: correctness fixes and improvement plan
- Add IMPROVEMENT_PLAN.md with phased plan for follow-up work
- Consolidate DI registrations into a single AddAccounting() extension;
  drop the duplicate service registrations and the PdfParsingService
  self-registration
- TrySetYear: capture this.year before overwriting so rollback actually
  restores the previous value
- DummyFxService: check toCurrency (was checking fromCurrency twice)
- TransactionRepository.GetTransaction: return a copy instead of mutating
  the loaded entity, and guard against unknown ids
- ViewService.GetTransactionViewList(accountId): flip the sign on a copy
  rather than mutating the entity returned by the repository
- FileService.GetTransactionListCsv: same treatment; use a local
  signedValue instead of mutating trx.Value
- ProfitLossReport: use ClassIds.Income/Expenses instead of magic 3/4
- CLAUDE.md: correct the ClassIds documentation (1/2/3/4, not
  1000/2000/3000/4000)

SettingsService lifetime is intentionally left as Singleton for now;
making it Scoped requires persisting year/mandator selection across
page reloads first (tracked in the plan).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-02 20:37:03 +02:00
Claudio Schaad
a16aedcfd8
Display transactions and balances in account currency
- Transaction amounts, totals, and sidebar badges in the Transactions page now show in the account's native currency (EUR, USD, etc.) instead of always CHF
- Fixed FX conversion in SaveTransaction/GetTransaction to fire when either the origin or target account is a foreign-currency account, not only the origin side

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 16:08:01 +02:00
2b1eb0dbb7 Add fx rate for transaction in UI 2025-09-27 21:32:10 +02:00
Claudio Schaad
37d568cbc2
Merge pull request #3
* Make line readonly after save

* Cleanup CSS

* Reorder columns
2025-06-28 11:26:34 +02:00
b88d3059e9 Hardly reload 2025-06-07 18:24:47 +02:00
496408aa70 Reload page after save 2025-06-07 18:00:47 +02:00
a45495c296 Add autocomplete for account 2025-05-15 22:01:48 +02:00
c86edfdde2 Add transaction split dialog 2025-05-14 21:45:52 +02:00
e76644a122 Add empty account 2025-05-13 21:15:04 +02:00
ff2ef4aba0 Footer css 2025-05-10 22:42:47 +02:00
0c537f8816 Show bankpayment matching 2025-05-10 22:33:35 +02:00
0828dd7691 Add bank transaction import 2025-05-07 21:50:01 +02:00
e2802dd797 Set CH culture 2025-05-06 19:19:02 +02:00
ece9618f09 Add transaction dialog and enhance transaction view 2025-05-05 22:49:09 +02:00
d21c49d486 Add mandator dropdown 2025-05-05 22:49:02 +02:00
38a1fb65c5 Add year and mandator dropdown 2025-05-05 22:48:52 +02:00
3c04220437 Delete appsettings 2025-05-04 20:42:52 +02:00
ad75c47709 Add new blazor app 2025-05-04 20:00:42 +02:00