Currency & Tax#
Multi-currency and multi-jurisdiction tax are cross-cutting — every module that touches money asks the currency / tax helpers to resolve rate and tax.
Currency#
- Functional currency (FC) — the reporting currency of the tenant. Everything eventually rolls up here.
- Foreign currency (FC transaction) — a document (PO, SO, AP invoice) may be denominated in a currency different from the FC. It is stored in both currencies with a historic rate.
- Historic rates —
FcHistoryHelperandFcUsedHelperpreserve the rate used at document creation. Reports use the historic rate for the transaction and revalue open items at period-end.
Helpers:
| Helper | Purpose |
|---|---|
FunctionalCurrencyHelper | Tenant FC config. |
ForeignCurrencyHelper | Non-FC currency setup and current rates. |
FCSettingsHelper | Additional FC posting settings. |
FcHistoryHelper / FcUsedHelper | Historic rate lookups per document. |
FStartDispHelper | FC start / display config. |
Tax#
Sales tax is jurisdiction-driven and applied at ship time by ShipTaxHelper. Freight tax is separate (PlFreightTaxHelper).
TaxSetup— jurisdictions, rates, effective dates.- Different products can be exempt in different jurisdictions — the setup carries per-part / per-class exemption rules.
Business rules#
- Currency conversion uses the historic rate captured with the document — never the current rate — for original posting.
- Period-end revaluation of open FC items writes an unrealised gain / loss journal.
- Tax on a Ship Bill is computed based on ship-to jurisdiction, not bill-to.
- Freight and product tax post to different GL accounts.
Where it lives#
| Layer | File |
|---|---|
| Controller | CurrencyController, FunctionalCurrencyController, FCSettingsController, TaxSetUpController |
| Helper | FunctionalCurrencyHelper.cs, ForeignCurrencyHelper.cs, FCSettingsHelper.cs, FcHistoryHelper.cs, FcUsedHelper.cs, FStartDispHelper.cs, ShipTaxHelper.cs, PlFreightTaxHelper.cs, PlPriceTaxHelper.cs |
| Related | Ship Bills, Packing List, GL |