Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions web/e2e/admin/admin-checks-real.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
4 changes: 2 additions & 2 deletions web/messages/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": {
Expand Down
4 changes: 2 additions & 2 deletions web/messages/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": {
Expand Down
4 changes: 2 additions & 2 deletions web/messages/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": {
Expand Down
4 changes: 2 additions & 2 deletions web/messages/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": {
Expand Down
4 changes: 2 additions & 2 deletions web/messages/hu.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": {
Expand Down
4 changes: 2 additions & 2 deletions web/messages/it.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": {
Expand Down
4 changes: 2 additions & 2 deletions web/messages/nl.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": {
Expand Down
4 changes: 2 additions & 2 deletions web/messages/pt.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": {
Expand Down
4 changes: 2 additions & 2 deletions web/messages/ru.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": {
Expand Down
4 changes: 2 additions & 2 deletions web/messages/vec.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": {
Expand Down
12 changes: 12 additions & 0 deletions web/src/components/admin/pages/AdminTableDetailPage.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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(<AdminTableDetailPage tableId="t1" />);
expect(await screen.findByTestId("check-card")).toBeInTheDocument();
expect(screen.queryByTestId("add-order")).toBeNull();
expect(screen.getByTestId("add-items-blocked")).toHaveTextContent("tableDetail.checkOpenAddItemsBlocked");
fireEvent.click(screen.getByTestId("blocked-settle"));
expect(await screen.findByTestId("settle-confirm")).toBeInTheDocument();
fireEvent.click(screen.getByTestId("blocked-void"));
expect(await screen.findByTestId("void-confirm")).toBeInTheDocument();
});
});
6 changes: 5 additions & 1 deletion web/src/components/admin/pages/AdminTableDetailPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,11 @@ function SessionCard({
{t("tableDetail.addItems")}
</button>
) : (
<span className="text-xs text-amber-700 bg-amber-50 rounded-lg px-3 py-1.5">{t("tableDetail.checkOpenOrderBlocked")}</span>
<div className="flex flex-wrap items-center gap-2" data-testid="add-items-blocked">
<span className="text-xs text-amber-700 bg-amber-50 rounded-lg px-3 py-1.5">{t("tableDetail.checkOpenAddItemsBlocked")}</span>
<button type="button" onClick={() => setConfirming("settle")} data-testid="blocked-settle" className="px-3 py-1.5 rounded-lg bg-green-600 text-white text-xs font-semibold">{t("tableDetail.paid")}</button>
<button type="button" onClick={() => setConfirming("void")} data-testid="blocked-void" className="px-3 py-1.5 rounded-lg border border-red-200 text-red-600 text-xs font-semibold">{t("tableDetail.void")}</button>
</div>
)}
{!hasCheck && (
<button
Expand Down
Loading