## Purpose

Lets employees see how much a lunch dish costs before ordering it, and lets admins total up how much each employee owes for lunch over a period so leaders can collect payment.

## ADDED Requirements

### Requirement: Lunch items carry a price
The system SHALL support an optional price on a lunch item. The price is not required on creation or update, including when a new item is created as a side effect of adding a "custom item" to a menu.

#### Scenario: Admin creates an item with a price
- **WHEN** an admin creates a lunch item and supplies a price
- **THEN** the item is created and its price is stored and returned in the item's data

#### Scenario: Admin creates an item without a price
- **WHEN** an admin creates a lunch item and does not supply a price
- **THEN** the item is created successfully with no price set

#### Scenario: Admin sets a price on a custom item added while creating a menu
- **WHEN** an admin creates a menu and includes a custom (not-yet-existing) item with a name and a price
- **THEN** a new lunch item is created with that name and price and is attached to the menu

#### Scenario: A custom item's name matches an existing, unpriced item
- **WHEN** an admin creates a menu with a custom item whose name matches an existing lunch item that has no price, and supplies a price for it
- **THEN** the existing item is attached to the menu and its price is set to the supplied price

#### Scenario: A custom item's name matches an existing item that already has a price
- **WHEN** an admin creates a menu with a custom item whose name matches an existing lunch item that already has a price, regardless of what price is supplied for the custom item
- **THEN** the existing item is attached to the menu and its existing price is left unchanged

#### Scenario: Item price is visible when browsing items and menus
- **WHEN** an employee or admin retrieves lunch item data (item list/detail, a menu's item list, a menu's order report, or an order's item)
- **THEN** the response includes the item's price

### Requirement: Orders snapshot the item's price at order time
When an order is created for an item, or an existing order's item is changed, the system SHALL record the price of that item at that moment on the order itself. Later changes to a lunch item's price SHALL NOT change the price already recorded on an existing order.

#### Scenario: Employee places an order
- **WHEN** an employee orders an item that currently has a price of 32,000
- **THEN** the created order has a recorded price of 32,000

#### Scenario: Item price changes after an order was placed
- **WHEN** an item's price is later changed
- **THEN** orders already placed for that item keep the price they were created with

#### Scenario: Employee changes their ordered item
- **WHEN** an employee updates their order to a different item
- **THEN** the order's recorded price is updated to the new item's current price

### Requirement: Admin can see a per-employee total amount for a period
The admin order report SHALL provide, for each employee within the requested date range, the total amount owed, computed as the sum of the recorded prices of that employee's active orders in the range.

#### Scenario: Leader requests the monthly report
- **WHEN** an admin requests the order report for a given date range (default: current month)
- **THEN** each employee in the result includes a total amount equal to the sum of their active orders' recorded prices within that range
