Feature #705
openPOS: let a cashier sell to an employee by name search alone, no card required
0%
Description
Employee sales at the POS were hard-wired to a tapped meal card end-to-end -- SaleService.GuardCardNumber refused any employee sale with no CardNumber, and EmployeeCardResolver only resolved subsidy eligibility by looking up a MealCard row. Picking an employee from name search with no card on file just showed a refusal and left the cart priced as a visitor.
Navya cannot hand out physical cards right now, so this blocked selling to those employees entirely.
Fix: added EmployeeCardResolver.ResolveByEmployeeIdAsync (same employee/subsidy-rule lookup, skipping the MealCard lookup), a new GET /api/canteen/employee-meals/employees/{employeeId}/resolve endpoint, and EmployeeId as an alternative to CardNumber on SaleQuoteRequest/CreateSaleRequest. POS now resolves and prices immediately when an employee is picked by name, with or without a card; the "No card" badge and blocking refusal message are removed. Card-tap keeps working unchanged for employees who do have one.
Verified live: searched an employee with no card (Anjali Das, Nursing, 50% subsidy), cart priced correctly (Gross 25, Subsidy -12.50, Net 12.50), Collect completed and produced a real receipt (bill S/2627/000021).
No data to display