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 ratesFcHistoryHelper and FcUsedHelper preserve the rate used at document creation. Reports use the historic rate for the transaction and revalue open items at period-end.

Helpers:

HelperPurpose
FunctionalCurrencyHelperTenant FC config.
ForeignCurrencyHelperNon-FC currency setup and current rates.
FCSettingsHelperAdditional FC posting settings.
FcHistoryHelper / FcUsedHelperHistoric rate lookups per document.
FStartDispHelperFC 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#

LayerFile
ControllerCurrencyController, FunctionalCurrencyController, FCSettingsController, TaxSetUpController
HelperFunctionalCurrencyHelper.cs, ForeignCurrencyHelper.cs, FCSettingsHelper.cs, FcHistoryHelper.cs, FcUsedHelper.cs, FStartDispHelper.cs, ShipTaxHelper.cs, PlFreightTaxHelper.cs, PlPriceTaxHelper.cs
RelatedShip Bills, Packing List, GL