Commit graph

3 commits

Author SHA1 Message Date
Claude
501404ed7f
Add bidirectional FX rate entry
Replace the fixed-convention exchange rate label with an inline expression:
[amount] <currency> per {other}, where the currency dropdown lets users
pick which side of the rate to enter. Covers both "35 THB per USD" and
"0.028 USD per THB" without requiring mental inversion.

Formula: price_local = per * rate when local currency is in numerator,
         price_local = per / rate when foreign currency is in numerator.

rcur is persisted to localStorage and included in the PDF note.

https://claude.ai/code/session_0151QtsUhzXmgzEhSvXG2SDt
2026-06-01 17:56:18 +00:00
Claude
8cdb4bd72b
Fix FX rate convention to match market-standard quoting
Users were confused by the "X foreign = 1 local" convention, which is the
inverse of how exchange rates are normally quoted (e.g. "1 USD = 35 THB").
Flip to the market-standard "1 foreign = X local" direction, updating the
rate label, the price calculation (per * rate instead of per / rate), and
the PDF note.

Note: existing localStorage data using the old convention will produce
incorrect prices until users re-enter their exchange rates.

https://claude.ai/code/session_0151QtsUhzXmgzEhSvXG2SDt
2026-06-01 17:51:52 +00:00
Claude
d0c5249bcb
Add user, admin, dev documentation and CLAUDE.md
docs/user-guide.md  — end-user guide covering the full invoice workflow
docs/admin-guide.md — config.yml reference for setting up the app
docs/dev-guide.md   — codebase guide: architecture, state, functions,
                      localStorage, i18n, FX convention, PDF generation
CLAUDE.md           — project briefing for Claude Code sessions
2026-05-24 18:25:19 +00:00