> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nexdev.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Management dashboard

> /dealershipmgmt is the in-game dashboard for owned dealerships. It's where owners and managers handle stock, employees, display cars, settings, and review sales.

`/dealershipmgmt` is the in-game dashboard for **owned** dealerships. It's where owners and managers handle stock, employees, display cars, settings, and review sales.

## Who can open it

Anyone who matches **any** of:

* Is the player owner set via `/dealershipadmin` → **Set Owner**
* Holds the dealership's `Owner = 'jobName'` (and meets the grade if `{ 'jobName', minGrade }` is used)
* Has the management ace (`Config.Management.AcePermission`, default `nex_dealerships.manage`) — admins are blanket-included via this

If you own multiple lots, you're shown a picker on open. Admins opening via `/dealershipadmin` → **Manage** are jumped straight to the lot they clicked.

Public lots (`Owner` unset in `shared/locations.lua`) never appear here.

## Dashboard tab

At-a-glance numbers for the selected lot:

* Bank balance
* Sales count / revenue (today / week / month / all-time)
* Pending restock orders
* Active loans on vehicles sold here
* Total stocked SKUs

## Vehicles tab

The lot's catalog **slice** — every catalog vehicle whose category matches one of the lot's `Categories`. From here you can:

* **Show / hide** specific models from this lot (hidden models are persisted in `nex_dealership_settings.hidden_models`).
* **Override price** per model for this lot.
* See stock on hand and the low-stock warning badge (configured via `Config.Stock.LowStockWarn`).

## Display Vehicles tab

Manage the cars parked in the showroom for visual flavour. Add as many as you like.

1. Click **Place vehicle**.
2. The vehicle spawns and follows your camera — use the in-world placer to position it.
3. Click again to drop. The entry is saved to `nex_dealership_dispveh` and immediately broadcast to all clients.
4. Pick a paint colour from the swatch picker (vanilla index or custom RGB).

Edits and removals update in-world without a restart — the client re-spawns the display row when the dataset changes.

You can also pre-seed display cars in `shared/locations.lua` via the `DisplayVehicles = { ... }` field — see [Dealership lots](/nex_dealerships/dealerships#display-vehicles).

## Stock tab

The dealership's on-hand stock per model, plus a per-model price override slot.

* **Public lots** with `Config.Stock.EnforceOnPublic = false` (default) ignore stock entirely — the column is informational.
* **Owned lots** with `Config.Stock.EnforceOnOwned = true` (default) can't sell at zero stock.

## Orders tab

Restock orders awaiting delivery — and the form to place one.

1. Pick a model.
2. Pick a quantity.
3. The form computes the cost (`listed price × Config.Stock.Restock.CostPercent / 100 × quantity`) and the delivery ETA (`MinDeliverySecs + quantity × SecsPerUnit`, capped at `MaxDeliverySecs`).
4. Click **Place order**. If `Config.Stock.Restock.PaidFromBalance = true`, the dealership bank is debited; otherwise the placing player's account is.
5. When the timer elapses, stock is incremented and the order is marked `fulfilled`.

Cancel an order to refund 100 % to the dealership balance.

## Sales tab

Paginated history of every sale at this lot (`Config.Management.PageSize` per page, default 25). Shows player name, model, price, payment kind, and links to the loan row for financed sales.

For active loans, click through to see payment history and (with appropriate permissions) cancel the loan early.

## Employees tab

Hire, fire, and promote staff for this dealership.

| Action             | Requires                                               |
| ------------------ | ------------------------------------------------------ |
| **Hire**           | Role with `hire = true` (default: `manager`, `owner`). |
| **Fire**           | Same.                                                  |
| **Change role**    | Same.                                                  |
| **Set commission** | Role with `setCommission = true`.                      |

Roles ship as `manager` and `employee` plus the implicit `owner`. Add more in `Config.Employees.Roles` and set their permissions in `Config.Employees.Permissions`.

If `Config.Employees.SyncFrameworkJob = true`, hiring also sets the player's framework job and grade (per `Config.Employees.RoleGrades`), and firing reverts them to `Config.Employees.FiredJob`/`FiredGrade`. This lets employees pass job-gated selling checks without you having to manage two systems.

<Info>
  The owner is the player whose identifier is in `nex_dealership_settings.owner_identifier`. They're always treated as `owner` role for permission checks — they don't need a row in the employees table.
</Info>

## Settings tab

Per-lot toggles persisted in `nex_dealership_settings.settings` (JSON blob). These override the global defaults for this lot — useful for, say, disabling buybacks at a luxury showroom while keeping them on at the truck lot.

Withdrawals from the dealership bank balance happen here, gated by `Config.Employees.Permissions[role].withdraw`.
