diff --git a/web/e2e/admin/admin-checks-real.spec.ts b/web/e2e/admin/admin-checks-real.spec.ts
index f2bbc21..b9ae4b3 100644
--- a/web/e2e/admin/admin-checks-real.spec.ts
+++ b/web/e2e/admin/admin-checks-real.spec.ts
@@ -53,6 +53,8 @@ test.describe.serial("Checks (conto) — real backend", () => {
await page.getByTestId("create-check").click();
await createRes;
await expect(page.getByTestId("check-card")).toBeVisible();
+ await expect(page.getByTestId("add-items-blocked")).toContainText(/paga o annulla|settle or void/i);
+ await expect(page.getByTestId("add-order")).toHaveCount(0);
await expect(page.getByTestId("check-total")).toHaveText(/15,00/);
// Apply a 10% discount; total updates to 13,50.
diff --git a/web/messages/de.json b/web/messages/de.json
index 4056337..bf621f7 100644
--- a/web/messages/de.json
+++ b/web/messages/de.json
@@ -657,11 +657,11 @@
"tableDetail.startOrder": "Bestellung starten",
"tableDetail.addOrder": "Bestellung hinzufügen",
"tableDetail.submitOrder": "Bestellung senden",
- "tableDetail.checkOpenOrderBlocked": "Offene Rechnung: erst bezahlen oder stornieren",
"tableDetail.addItems": "Artikel hinzufügen",
"tableDetail.searchItems": "Alle verfügbaren Artikel suchen",
"tableDetail.noAvailableItems": "Keine verfügbaren Artikel gefunden.",
- "tableDetail.submitItems": "Artikel hinzufügen"
+ "tableDetail.submitItems": "Artikel hinzufügen",
+ "tableDetail.checkOpenAddItemsBlocked": "Begleiche oder storniere die offene Rechnung, bevor du weitere Artikel hinzufügst."
},
"outOfStock": "AUSVERKAUFT",
"staff": {
diff --git a/web/messages/en.json b/web/messages/en.json
index 23d5233..7fa0e53 100644
--- a/web/messages/en.json
+++ b/web/messages/en.json
@@ -657,11 +657,11 @@
"tableDetail.startOrder": "Start order",
"tableDetail.addOrder": "Add order",
"tableDetail.submitOrder": "Send order",
- "tableDetail.checkOpenOrderBlocked": "Open check: settle or void it before adding orders",
"tableDetail.addItems": "Add items",
"tableDetail.searchItems": "Search all available items",
"tableDetail.noAvailableItems": "No available items found.",
- "tableDetail.submitItems": "Add items"
+ "tableDetail.submitItems": "Add items",
+ "tableDetail.checkOpenAddItemsBlocked": "Settle or void the open check before adding more items."
},
"outOfStock": "OUT OF STOCK",
"staff": {
diff --git a/web/messages/es.json b/web/messages/es.json
index 1442d61..dcf9832 100644
--- a/web/messages/es.json
+++ b/web/messages/es.json
@@ -657,11 +657,11 @@
"tableDetail.startOrder": "Iniciar pedido",
"tableDetail.addOrder": "Añadir pedido",
"tableDetail.submitOrder": "Enviar pedido",
- "tableDetail.checkOpenOrderBlocked": "Cuenta abierta: cobra o anula antes de añadir pedidos",
"tableDetail.addItems": "Añadir artículos",
"tableDetail.searchItems": "Buscar artículos disponibles",
"tableDetail.noAvailableItems": "No se encontraron artículos disponibles.",
- "tableDetail.submitItems": "Añadir artículos"
+ "tableDetail.submitItems": "Añadir artículos",
+ "tableDetail.checkOpenAddItemsBlocked": "Cobra o anula la cuenta abierta antes de añadir más artículos."
},
"outOfStock": "AGOTADO",
"staff": {
diff --git a/web/messages/fr.json b/web/messages/fr.json
index 02c66b2..f9f2e99 100644
--- a/web/messages/fr.json
+++ b/web/messages/fr.json
@@ -657,11 +657,11 @@
"tableDetail.startOrder": "Démarrer une commande",
"tableDetail.addOrder": "Ajouter une commande",
"tableDetail.submitOrder": "Envoyer la commande",
- "tableDetail.checkOpenOrderBlocked": "Addition ouverte : encaissez ou annulez avant d’ajouter des commandes",
"tableDetail.addItems": "Ajouter des articles",
"tableDetail.searchItems": "Rechercher les articles disponibles",
"tableDetail.noAvailableItems": "Aucun article disponible trouvé.",
- "tableDetail.submitItems": "Ajouter des articles"
+ "tableDetail.submitItems": "Ajouter des articles",
+ "tableDetail.checkOpenAddItemsBlocked": "Encaissez ou annulez l’addition ouverte avant d’ajouter d’autres articles."
},
"outOfStock": "ÉPUISÉ",
"staff": {
diff --git a/web/messages/hu.json b/web/messages/hu.json
index a29cf50..9630fe5 100644
--- a/web/messages/hu.json
+++ b/web/messages/hu.json
@@ -657,11 +657,11 @@
"tableDetail.startOrder": "Rendelés indítása",
"tableDetail.addOrder": "Rendelés hozzáadása",
"tableDetail.submitOrder": "Rendelés küldése",
- "tableDetail.checkOpenOrderBlocked": "Nyitott számla: fizetés vagy törlés után adható hozzá rendelés",
"tableDetail.addItems": "Tételek hozzáadása",
"tableDetail.searchItems": "Elérhető tételek keresése",
"tableDetail.noAvailableItems": "Nem található elérhető tétel.",
- "tableDetail.submitItems": "Tételek hozzáadása"
+ "tableDetail.submitItems": "Tételek hozzáadása",
+ "tableDetail.checkOpenAddItemsBlocked": "Rendezze vagy érvénytelenítse a nyitott számlát, mielőtt új tételeket ad hozzá."
},
"outOfStock": "OUT OF STOCK",
"staff": {
diff --git a/web/messages/it.json b/web/messages/it.json
index fb7438b..b755a65 100644
--- a/web/messages/it.json
+++ b/web/messages/it.json
@@ -657,11 +657,11 @@
"tableDetail.startOrder": "Apri ordine",
"tableDetail.addOrder": "Aggiungi ordine",
"tableDetail.submitOrder": "Invia ordine",
- "tableDetail.checkOpenOrderBlocked": "Conto aperto: pagalo o annullalo prima di aggiungere ordini",
"tableDetail.addItems": "Aggiungi articoli",
"tableDetail.searchItems": "Cerca tutti gli articoli disponibili",
"tableDetail.noAvailableItems": "Nessun articolo disponibile trovato.",
- "tableDetail.submitItems": "Aggiungi articoli"
+ "tableDetail.submitItems": "Aggiungi articoli",
+ "tableDetail.checkOpenAddItemsBlocked": "Paga o annulla il conto aperto prima di aggiungere altri articoli."
},
"outOfStock": "ESAURITO",
"staff": {
diff --git a/web/messages/nl.json b/web/messages/nl.json
index cf21a59..aebd3b5 100644
--- a/web/messages/nl.json
+++ b/web/messages/nl.json
@@ -657,11 +657,11 @@
"tableDetail.startOrder": "Bestelling starten",
"tableDetail.addOrder": "Bestelling toevoegen",
"tableDetail.submitOrder": "Bestelling versturen",
- "tableDetail.checkOpenOrderBlocked": "Open rekening: betaal of annuleer vóór nieuwe bestellingen",
"tableDetail.addItems": "Items toevoegen",
"tableDetail.searchItems": "Zoek beschikbare items",
"tableDetail.noAvailableItems": "Geen beschikbare items gevonden.",
- "tableDetail.submitItems": "Items toevoegen"
+ "tableDetail.submitItems": "Items toevoegen",
+ "tableDetail.checkOpenAddItemsBlocked": "Reken de open bon af of annuleer deze voordat je meer items toevoegt."
},
"outOfStock": "UITVERKOCHT",
"staff": {
diff --git a/web/messages/pt.json b/web/messages/pt.json
index ce9c766..381a1ad 100644
--- a/web/messages/pt.json
+++ b/web/messages/pt.json
@@ -657,11 +657,11 @@
"tableDetail.startOrder": "Iniciar pedido",
"tableDetail.addOrder": "Adicionar pedido",
"tableDetail.submitOrder": "Enviar pedido",
- "tableDetail.checkOpenOrderBlocked": "Conta aberta: pague ou anule antes de adicionar pedidos",
"tableDetail.addItems": "Adicionar itens",
"tableDetail.searchItems": "Pesquisar itens disponíveis",
"tableDetail.noAvailableItems": "Nenhum item disponível encontrado.",
- "tableDetail.submitItems": "Adicionar itens"
+ "tableDetail.submitItems": "Adicionar itens",
+ "tableDetail.checkOpenAddItemsBlocked": "Liquide ou anule a conta aberta antes de adicionar mais itens."
},
"outOfStock": "ESGOTADO",
"staff": {
diff --git a/web/messages/ru.json b/web/messages/ru.json
index 0e44db1..d0924dc 100644
--- a/web/messages/ru.json
+++ b/web/messages/ru.json
@@ -657,11 +657,11 @@
"tableDetail.startOrder": "Начать заказ",
"tableDetail.addOrder": "Добавить заказ",
"tableDetail.submitOrder": "Отправить заказ",
- "tableDetail.checkOpenOrderBlocked": "Счёт открыт: сначала оплатите или отмените его",
"tableDetail.addItems": "Добавить позиции",
"tableDetail.searchItems": "Поиск доступных позиций",
"tableDetail.noAvailableItems": "Доступные позиции не найдены.",
- "tableDetail.submitItems": "Добавить позиции"
+ "tableDetail.submitItems": "Добавить позиции",
+ "tableDetail.checkOpenAddItemsBlocked": "Оплатите или аннулируйте открытый счёт перед добавлением новых позиций."
},
"outOfStock": "НЕТ В НАЛИЧИИ",
"staff": {
diff --git a/web/messages/vec.json b/web/messages/vec.json
index 5db465e..2474d0a 100644
--- a/web/messages/vec.json
+++ b/web/messages/vec.json
@@ -657,11 +657,11 @@
"tableDetail.startOrder": "Scominsia ordine",
"tableDetail.addOrder": "Zonta ordine",
"tableDetail.submitOrder": "Manda ordine",
- "tableDetail.checkOpenOrderBlocked": "Conto verto: paga o anula prima de zontar ordini",
"tableDetail.addItems": "Zonta voci",
"tableDetail.searchItems": "Serca tute łe voci disponìbiłi",
"tableDetail.noAvailableItems": "Nisuna vose disponìbiłe catada.",
- "tableDetail.submitItems": "Zonta voci"
+ "tableDetail.submitItems": "Zonta voci",
+ "tableDetail.checkOpenAddItemsBlocked": "Paga o anuła el conto verto prima de zontar altre voci."
},
"outOfStock": "FINIO",
"staff": {
diff --git a/web/src/components/admin/pages/AdminTableDetailPage.test.tsx b/web/src/components/admin/pages/AdminTableDetailPage.test.tsx
index be8ae7f..e51b159 100644
--- a/web/src/components/admin/pages/AdminTableDetailPage.test.tsx
+++ b/web/src/components/admin/pages/AdminTableDetailPage.test.tsx
@@ -122,4 +122,16 @@ describe("AdminTableDetailPage", () => {
fireEvent.click(screen.getByTestId("submit-admin-order"));
await waitFor(() => expect(apiMocks.createAdminSessionOrder).toHaveBeenCalledWith("s1", [{ entryId: "bruschetta", quantity: 1 }]));
});
+
+ it("blocks adding items while a check is open and offers check actions", async () => {
+ apiMocks.fetchAdminTableDetail.mockResolvedValue({ ...sessionNoCheck, currentSession: { ...sessionNoCheck.currentSession, check: openCheck } });
+ render(