Actions
Feature #669
open
NP
HR owns subsidy rules; Canteen employee-meals + settings become read-only
Feature #669:
HR owns subsidy rules; Canteen employee-meals + settings become read-only
Status:
Resolved
Priority:
Normal
Assignee:
-
Target version:
-
Start date:
10/29/2026
Due date:
% Done:
0%
Estimated time:
Resolved By:
Description
Moved subsidy-rule ownership from Canteen to HR per product decision (navigate: HR > People > Subsidy rules):
- HR: new People section page, full CRUD (SubsidyRule entity, service, controller, internal cross-module controller for canteen to read, portal page/modal/queries/nav item, 21 new backend tests).
- One-time data copy: 8 existing canteen.subsidy_rules rows copied into hr.subsidy_rules (tagged migration:canteen-subsidy-rules-2026-10-29), canteen table then dropped -- copy-then-retire, per explicit decision.
- shared-kernel: IHrServiceContract gains GetSubsidyRulesAsync (default-bodied for additivity, matches GetTrainingSessionsForEmployeeAsync precedent).
- Canteen: Employee-meals subsidy panel and Settings > Subsidy tab become read-only, sourced from a cached HrSubsidyRuleDirectory (5-min TTL, tenant-qualified key) instead of local writes; EmployeeCardResolver rewired off the cached directory; local SaveSubsidyRuleAsync/ArchiveSubsidyRuleAsync removed.
Live-pricing-critical path: POS resolves a subsidy rule per employee sale, synchronously, unlocked, multiple times per transaction -- resolve-once-trust-for-the-sale semantics preserved across the rewiring.
Actions