| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Redeem confirmed holdings end to end with exact decimal semantics:
submission freezes position units (reserved_units) after an
available-units check without touching cash, confirmation settles at
the trade-date NAV with evidence and deferral rules identical to
subscriptions, credits the fund with proceeds net of the stated fee,
and writes off position cost pro rata (full redemption removes the
position row). Cash conservation holds at every step: frozen shares
and receivable cash never appear as available cash before settlement.
Domain gains RedemptionPolicy (request validation plus proceeds/fee/
cost-release computation) with unit tests. Persistence adds
redemption_orders, idempotency tables, reserved_units on positions
and Create/Confirm repository members; the API exposes
POST/GET /funds/{id}/redemptions and POST .../confirm. The frontend
adds a 06/REDEEM panel (submit, confirm, pending reasons, confirmed
proceeds/cost display), frozen-share display on the holdings panel,
and refresh wiring. Browser QA gains a K-series covering freeze,
settlement, cash accounting, replay and over-redemption rejection.
|
| |
|
|
|
|
|
|
|
|
|
| |
Giraffe 6's default Newtonsoft serializer wrapped F# Some values as
Value/IsSome/IsNone objects, breaking the confirmation and positions
response contract (amounts must be exact decimal strings, absent
fields null, quote object-or-null). Add OptionJsonConverter plus a
shared serializer registration applied to both the Kestrel host and
the in-process test fixture, and cover confirmation/positions over
real HTTP including pending, conflict, cross-fund and Kestrel
restart-replay regressions.
|