feat: Add 'ready_for_pickup' status to OrdersTab and implement corresponding translations across multiple locales

This commit is contained in:
sebseb7
2026-03-24 06:15:34 +01:00
parent a9bf1aee5f
commit e6f3fb7c18
24 changed files with 262 additions and 22 deletions

View File

@@ -25,6 +25,7 @@ import SearchIcon from "@mui/icons-material/Search";
import CancelIcon from "@mui/icons-material/Cancel";
import OrderDetailsDialog from "./OrderDetailsDialog.js";
import WireOrderGirocode from "./WireOrderGirocode.js";
import ReadyForPickupNotice from "./ReadyForPickupNotice.js";
import {
isWireGirocodeEligible,
hasPendingWirePaymentOrder,
@@ -42,6 +43,7 @@ const getStatusTranslation = (status, t) => {
shipped: t ? t('orders.status.shipped') : "Verschickt",
delivered: t ? t('orders.status.delivered') : "Geliefert",
awaiting_tracking: t ? t('orders.status.awaiting_tracking') : "Wird gepackt",
ready_for_pickup: t ? t('orders.status.ready_for_pickup') : "Abholbereit",
};
return statusMap[status] || status;
};
@@ -55,6 +57,7 @@ const statusEmojis = {
shipped: "🚚",
delivered: "✅",
awaiting_tracking: "📦",
ready_for_pickup: "🏪",
};
const statusColors = {
@@ -66,6 +69,7 @@ const statusColors = {
shipped: "#2e7d32", // green
delivered: "#2e7d32", // green
awaiting_tracking: "#1565c0", // blue — packing / pre-ship
ready_for_pickup: "#2e7d32", // green — ready at store
};
const currencyFormatter = new Intl.NumberFormat("de-DE", {
@@ -334,6 +338,22 @@ const OrdersTab = ({ orderIdFromHash, t }) => {
</TableCell>
</TableRow>
)}
{order.status === "ready_for_pickup" && (
<TableRow>
<TableCell
colSpan={6}
sx={{
py: 2,
px: { xs: 1, sm: 2 },
verticalAlign: "top",
bgcolor: "action.hover",
borderTop: (theme) => `1px solid ${theme.palette.divider}`,
}}
>
<ReadyForPickupNotice order={order} t={t} />
</TableCell>
</TableRow>
)}
</Fragment>
);
})}

View File

@@ -0,0 +1,44 @@
import React from "react";
import { Box, Typography } from "@mui/material";
/**
* Store pickup instructions when order status is ready_for_pickup.
*/
const ReadyForPickupNotice = ({ order, t }) => {
return (
<Box
sx={{
p: 1.5,
borderRadius: 1,
bgcolor: (theme) =>
theme.palette.mode === "dark"
? "rgba(46, 125, 50, 0.18)"
: "rgba(46, 125, 50, 0.08)",
border: "1px solid",
borderColor: "success.main",
}}
>
<Typography variant="body2" sx={{ mb: 1, lineHeight: 1.5 }}>
{t
? t("orders.readyForPickup.line1", { orderId: order.orderId })
: `Deine Bestellung ${order.orderId} ist gepackt und wartet auf dich.`}
</Typography>
<Typography variant="body2" sx={{ mb: 1, lineHeight: 1.5 }}>
{t
? t("orders.readyForPickup.line2")
: "Du kannst sie ab sofort bei uns im Store abholen:"}
</Typography>
<Typography variant="body2" fontWeight="bold">
{t ? t("orders.readyForPickup.storeName") : "Growheads"}
</Typography>
<Typography variant="body2">
{t ? t("orders.readyForPickup.addressLine1") : "Trachenberger Straße 14"}
</Typography>
<Typography variant="body2">
{t ? t("orders.readyForPickup.addressLine2") : "01129 Dresden"}
</Typography>
</Box>
);
};
export default ReadyForPickupNotice;

View File

@@ -10,7 +10,8 @@ export default {
"return": "إرجاع",
"partialReturn": "إرجاع جزئي",
"partialDelivered": "تم التوصيل جزئياً",
"awaiting_tracking": "جاري التعبئة"
"awaiting_tracking": "جاري التعبئة",
"ready_for_pickup": "جاهز للاستلام من المتجر"
},
"table": {
"orderNumber": "رقم الطلب",
@@ -39,6 +40,13 @@ export default {
"amount": "المبلغ: {{amount}}",
"purpose": "المرجع: {{orderId}}"
},
"readyForPickup": {
"line1": "طلبك {{orderId}} جاهز معبأ وينتظرك.",
"line2": "يمكنك استلامه الآن من متجرنا:",
"storeName": "Growheads",
"addressLine1": "Trachenberger Straße 14",
"addressLine2": "01129 Dresden"
},
"details": {
"title": "تفاصيل الطلب: {{orderId}}",
"deliveryAddress": "عنوان التوصيل",

View File

@@ -10,7 +10,8 @@ export default {
"return": "Връщане",
"partialReturn": "Частично връщане",
"partialDelivered": "Частично доставено",
"awaiting_tracking": "Опакова се"
"awaiting_tracking": "Опакова се",
"ready_for_pickup": "Готова за вземане"
},
"table": {
"orderNumber": "Номер на поръчка",
@@ -39,6 +40,13 @@ export default {
"amount": "Сума: {{amount}}",
"purpose": "Основание: {{orderId}}"
},
"readyForPickup": {
"line1": "Вашата поръчка {{orderId}} е опакована и ви очаква.",
"line2": "Можете да я вземете от нашия магазин:",
"storeName": "Growheads",
"addressLine1": "Trachenberger Straße 14",
"addressLine2": "01129 Dresden"
},
"details": {
"title": "Подробности за поръчка: {{orderId}}",
"deliveryAddress": "Адрес за доставка",

View File

@@ -10,7 +10,8 @@ export default {
"return": "Vrácení",
"partialReturn": "Částečné vrácení",
"partialDelivered": "Částečně doručeno",
"awaiting_tracking": "Balí se"
"awaiting_tracking": "Balí se",
"ready_for_pickup": "Připraveno k vyzvednutí"
},
"table": {
"orderNumber": "Číslo objednávky",
@@ -39,6 +40,13 @@ export default {
"amount": "Částka: {{amount}}",
"purpose": "Zpráva pro příjemce: {{orderId}}"
},
"readyForPickup": {
"line1": "Vaše objednávka {{orderId}} je zabalená a čeká na vás.",
"line2": "Můžete si ji hned vyzvednout v našem obchodě:",
"storeName": "Growheads",
"addressLine1": "Trachenberger Straße 14",
"addressLine2": "01129 Dresden"
},
"details": {
"title": "Detaily objednávky: {{orderId}}",
"deliveryAddress": "Dodací adresa",

View File

@@ -10,7 +10,8 @@ export default {
"return": "Retoure",
"partialReturn": "Teil Retoure",
"partialDelivered": "Teil geliefert",
"awaiting_tracking": "Wird gepackt"
"awaiting_tracking": "Wird gepackt",
"ready_for_pickup": "Abholbereit"
},
"table": {
"orderNumber": "Bestellnummer",
@@ -39,6 +40,13 @@ export default {
"amount": "Betrag: {{amount}}",
"purpose": "Verwendungszweck: {{orderId}}"
},
"readyForPickup": {
"line1": "Deine Bestellung {{orderId}} ist gepackt und wartet auf dich.",
"line2": "Du kannst sie ab sofort bei uns im Store abholen:",
"storeName": "Growheads",
"addressLine1": "Trachenberger Straße 14",
"addressLine2": "01129 Dresden"
},
"details": {
"title": "Bestelldetails: {{orderId}}",
"deliveryAddress": "Lieferadresse",

View File

@@ -10,7 +10,8 @@ export default {
"return": "Επιστροφή",
"partialReturn": "Μερική επιστροφή",
"partialDelivered": "Μερικώς παραδόθηκε",
"awaiting_tracking": "Σε συσκευασία"
"awaiting_tracking": "Σε συσκευασία",
"ready_for_pickup": "Έτοιμο για παραλαβή"
},
"table": {
"orderNumber": "Αριθμός παραγγελίας",
@@ -39,6 +40,13 @@ export default {
"amount": "Ποσό: {{amount}}",
"purpose": "Αιτιολογία: {{orderId}}"
},
"readyForPickup": {
"line1": "Η παραγγελία σας {{orderId}} είναι συσκευασμένη και σας περιμένει.",
"line2": "Μπορείτε να την παραλάβετε τώρα από το κατάστημά μας:",
"storeName": "Growheads",
"addressLine1": "Trachenberger Straße 14",
"addressLine2": "01129 Dresden"
},
"details": {
"title": "Λεπτομέρειες παραγγελίας: {{orderId}}",
"deliveryAddress": "Διεύθυνση παράδοσης",

View File

@@ -10,7 +10,8 @@ export default {
"return": "Return", // Retoure
"partialReturn": "Partial return", // Teil Retoure
"partialDelivered": "Partially delivered", // Teil geliefert
"awaiting_tracking": "Being packed" // Wird gepackt
"awaiting_tracking": "Being packed", // Wird gepackt
"ready_for_pickup": "Ready for pickup" // Abholbereit
},
"table": {
"orderNumber": "Order number", // Bestellnummer
@@ -39,6 +40,13 @@ export default {
"amount": "Amount: {{amount}}", // Betrag
"purpose": "Payment reference: {{orderId}}" // Verwendungszweck
},
"readyForPickup": {
"line1": "Your order {{orderId}} is packed and waiting for you.",
"line2": "You can pick it up at our store now:",
"storeName": "Growheads",
"addressLine1": "Trachenberger Straße 14",
"addressLine2": "01129 Dresden"
},
"details": {
"title": "Order details: {{orderId}}", // Bestelldetails: {{orderId}}
"deliveryAddress": "Delivery address", // Lieferadresse

View File

@@ -10,7 +10,8 @@ export default {
"return": "Devolución",
"partialReturn": "Devolución parcial",
"partialDelivered": "Entregado parcialmente",
"awaiting_tracking": "En preparación"
"awaiting_tracking": "En preparación",
"ready_for_pickup": "Listo para recoger"
},
"table": {
"orderNumber": "Número de pedido",
@@ -39,6 +40,13 @@ export default {
"amount": "Importe: {{amount}}",
"purpose": "Concepto: {{orderId}}"
},
"readyForPickup": {
"line1": "Tu pedido {{orderId}} está empaquetado y te espera.",
"line2": "Puedes recogerlo ahora en nuestra tienda:",
"storeName": "Growheads",
"addressLine1": "Trachenberger Straße 14",
"addressLine2": "01129 Dresden"
},
"details": {
"title": "Detalles del pedido: {{orderId}}",
"deliveryAddress": "Dirección de entrega",

View File

@@ -10,7 +10,8 @@ export default {
"return": "Retour",
"partialReturn": "Retour partiel",
"partialDelivered": "Partiellement livré",
"awaiting_tracking": "En cours d'emballage"
"awaiting_tracking": "En cours d'emballage",
"ready_for_pickup": "Prêt à être retiré"
},
"table": {
"orderNumber": "Numéro de commande",
@@ -39,6 +40,13 @@ export default {
"amount": "Montant : {{amount}}",
"purpose": "Libellé : {{orderId}}"
},
"readyForPickup": {
"line1": "Votre commande {{orderId}} est emballée et vous attend.",
"line2": "Vous pouvez la retirer dès maintenant dans notre magasin :",
"storeName": "Growheads",
"addressLine1": "Trachenberger Straße 14",
"addressLine2": "01129 Dresden"
},
"details": {
"title": "Détails de la commande : {{orderId}}",
"deliveryAddress": "Adresse de livraison",

View File

@@ -10,7 +10,8 @@ export default {
"return": "Povrat",
"partialReturn": "Djelomični povrat",
"partialDelivered": "Djelomično isporučeno",
"awaiting_tracking": "U pripremi"
"awaiting_tracking": "U pripremi",
"ready_for_pickup": "Spremno za preuzimanje"
},
"table": {
"orderNumber": "Broj narudžbe",
@@ -39,6 +40,13 @@ export default {
"amount": "Iznos: {{amount}}",
"purpose": "Svrha plaćanja: {{orderId}}"
},
"readyForPickup": {
"line1": "Vaša narudžba {{orderId}} je spakirana i čeka vas.",
"line2": "Možete je odmah preuzeti u našoj trgovini:",
"storeName": "Growheads",
"addressLine1": "Trachenberger Straße 14",
"addressLine2": "01129 Dresden"
},
"details": {
"title": "Detalji narudžbe: {{orderId}}",
"deliveryAddress": "Adresa dostave",

View File

@@ -10,7 +10,8 @@ export default {
"return": "Visszaküldés",
"partialReturn": "Részleges visszaküldés",
"partialDelivered": "Részben kiszállítva",
"awaiting_tracking": "Csomagolás alatt"
"awaiting_tracking": "Csomagolás alatt",
"ready_for_pickup": "Átvehető az üzletben"
},
"table": {
"orderNumber": "Rendelésszám",
@@ -39,6 +40,13 @@ export default {
"amount": "Összeg: {{amount}}",
"purpose": "Közlemény: {{orderId}}"
},
"readyForPickup": {
"line1": "A(z) {{orderId}} rendelésed becsomagolva vár rád.",
"line2": "Most már átveheted üzletünkben:",
"storeName": "Growheads",
"addressLine1": "Trachenberger Straße 14",
"addressLine2": "01129 Dresden"
},
"details": {
"title": "Rendelés részletei: {{orderId}}",
"deliveryAddress": "Szállítási cím",

View File

@@ -10,7 +10,8 @@ export default {
"return": "Reso",
"partialReturn": "Reso parziale",
"partialDelivered": "Parzialmente consegnato",
"awaiting_tracking": "In preparazione"
"awaiting_tracking": "In preparazione",
"ready_for_pickup": "Pronto per il ritiro"
},
"table": {
"orderNumber": "Numero ordine",
@@ -39,6 +40,13 @@ export default {
"amount": "Importo: {{amount}}",
"purpose": "Causale: {{orderId}}"
},
"readyForPickup": {
"line1": "Il tuo ordine {{orderId}} è imballato e ti aspetta.",
"line2": "Puoi ritirarlo subito nel nostro store:",
"storeName": "Growheads",
"addressLine1": "Trachenberger Straße 14",
"addressLine2": "01129 Dresden"
},
"details": {
"title": "Dettagli ordine: {{orderId}}",
"deliveryAddress": "Indirizzo di consegna",

View File

@@ -10,7 +10,8 @@ export default {
"return": "Zwrot",
"partialReturn": "Częściowy zwrot",
"partialDelivered": "Częściowo dostarczone",
"awaiting_tracking": "W trakcie pakowania"
"awaiting_tracking": "W trakcie pakowania",
"ready_for_pickup": "Gotowe do odbioru"
},
"table": {
"orderNumber": "Numer zamówienia",
@@ -39,6 +40,13 @@ export default {
"amount": "Kwota: {{amount}}",
"purpose": "Tytuł: {{orderId}}"
},
"readyForPickup": {
"line1": "Twoje zamówienie {{orderId}} jest spakowane i czeka na Ciebie.",
"line2": "Możesz je odebrać od razu w naszym sklepie:",
"storeName": "Growheads",
"addressLine1": "Trachenberger Straße 14",
"addressLine2": "01129 Dresden"
},
"details": {
"title": "Szczegóły zamówienia: {{orderId}}",
"deliveryAddress": "Adres dostawy",

View File

@@ -10,7 +10,8 @@ export default {
"return": "Returnare",
"partialReturn": "Returnare parțială",
"partialDelivered": "Livrat parțial",
"awaiting_tracking": "Se ambalează"
"awaiting_tracking": "Se ambalează",
"ready_for_pickup": "Gata pentru ridicare"
},
"table": {
"orderNumber": "Număr comandă",
@@ -39,6 +40,13 @@ export default {
"amount": "Sumă: {{amount}}",
"purpose": "Detalii plată: {{orderId}}"
},
"readyForPickup": {
"line1": "Comanda ta {{orderId}} este ambalată și te așteaptă.",
"line2": "O poți ridica acum din magazinul nostru:",
"storeName": "Growheads",
"addressLine1": "Trachenberger Straße 14",
"addressLine2": "01129 Dresden"
},
"details": {
"title": "Detalii comandă: {{orderId}}",
"deliveryAddress": "Adresa de livrare",

View File

@@ -10,7 +10,8 @@ export default {
"return": "Возврат",
"partialReturn": "Частичный возврат",
"partialDelivered": "Частично доставлено",
"awaiting_tracking": "Упаковывается"
"awaiting_tracking": "Упаковывается",
"ready_for_pickup": "Готово к выдаче"
},
"table": {
"orderNumber": "Номер заказа",
@@ -39,6 +40,13 @@ export default {
"amount": "Сумма: {{amount}}",
"purpose": "Назначение платежа: {{orderId}}"
},
"readyForPickup": {
"line1": "Ваш заказ {{orderId}} упакован и ждёт вас.",
"line2": "Вы можете забрать его в нашем магазине:",
"storeName": "Growheads",
"addressLine1": "Trachenberger Straße 14",
"addressLine2": "01129 Dresden"
},
"details": {
"title": "Детали заказа: {{orderId}}",
"deliveryAddress": "Адрес доставки",

View File

@@ -10,7 +10,8 @@ export default {
"return": "Vrátenie",
"partialReturn": "Čiastočné vrátenie",
"partialDelivered": "Čiastočne doručené",
"awaiting_tracking": "Balí sa"
"awaiting_tracking": "Balí sa",
"ready_for_pickup": "Pripravené na vyzdvihnutie"
},
"table": {
"orderNumber": "Číslo objednávky",
@@ -39,6 +40,13 @@ export default {
"amount": "Suma: {{amount}}",
"purpose": "Správa pre príjemcu: {{orderId}}"
},
"readyForPickup": {
"line1": "Vaša objednávka {{orderId}} je zabalená a čaká na vás.",
"line2": "Môžete si ju hneď vyzdvihnúť v našom obchode:",
"storeName": "Growheads",
"addressLine1": "Trachenberger Straße 14",
"addressLine2": "01129 Dresden"
},
"details": {
"title": "Detaily objednávky: {{orderId}}",
"deliveryAddress": "Dodacia adresa",

View File

@@ -10,7 +10,8 @@ export default {
"return": "Vrnitev",
"partialReturn": "Delna vrnitev",
"partialDelivered": "Delno dostavljeno",
"awaiting_tracking": "V pripravi"
"awaiting_tracking": "V pripravi",
"ready_for_pickup": "Pripravljeno za prevzem"
},
"table": {
"orderNumber": "Številka naročila",
@@ -39,6 +40,13 @@ export default {
"amount": "Znesek: {{amount}}",
"purpose": "Namen plačila: {{orderId}}"
},
"readyForPickup": {
"line1": "Vaše naročilo {{orderId}} je zapakirano in vas čaka.",
"line2": "Prevzamete ga lahko takoj v naši trgovini:",
"storeName": "Growheads",
"addressLine1": "Trachenberger Straße 14",
"addressLine2": "01129 Dresden"
},
"details": {
"title": "Podrobnosti naročila: {{orderId}}",
"deliveryAddress": "Naslov za dostavo",

View File

@@ -10,7 +10,8 @@ export default {
"return": "Kthim",
"partialReturn": "Kthim i pjesshëm",
"partialDelivered": "Dorëzuar pjesërisht",
"awaiting_tracking": "Po përgatitet"
"awaiting_tracking": "Po përgatitet",
"ready_for_pickup": "Gati për marrje"
},
"table": {
"orderNumber": "Numri i porosisë",
@@ -39,6 +40,13 @@ export default {
"amount": "Shuma: {{amount}}",
"purpose": "Qëllimi i pagesës: {{orderId}}"
},
"readyForPickup": {
"line1": "Porosia juaj {{orderId}} është paketuar dhe ju pret.",
"line2": "Mund ta merrni tani në dyqanin tonë:",
"storeName": "Growheads",
"addressLine1": "Trachenberger Straße 14",
"addressLine2": "01129 Dresden"
},
"details": {
"title": "Detajet e porosisë: {{orderId}}",
"deliveryAddress": "Adresa e dorëzimit",

View File

@@ -10,7 +10,8 @@ export default {
"return": "Povrat",
"partialReturn": "Delimični povrat",
"partialDelivered": "Delimično isporučeno",
"awaiting_tracking": "U pripremi"
"awaiting_tracking": "U pripremi",
"ready_for_pickup": "Spremno za preuzimanje"
},
"table": {
"orderNumber": "Broj porudžbine",
@@ -39,6 +40,13 @@ export default {
"amount": "Iznos: {{amount}}",
"purpose": "Svrha uplate: {{orderId}}"
},
"readyForPickup": {
"line1": "Vaša porudžbina {{orderId}} je spakovana i čeka vas.",
"line2": "Možete je odmah preuzeti u našoj prodavnici:",
"storeName": "Growheads",
"addressLine1": "Trachenberger Straße 14",
"addressLine2": "01129 Dresden"
},
"details": {
"title": "Detalji porudžbine: {{orderId}}",
"deliveryAddress": "Adresa za isporuku",

View File

@@ -10,7 +10,8 @@ export default {
"return": "Retur",
"partialReturn": "Delvis retur",
"partialDelivered": "Delvis levererad",
"awaiting_tracking": "Packas"
"awaiting_tracking": "Packas",
"ready_for_pickup": "Redo för upphämtning"
},
"table": {
"orderNumber": "Ordernummer",
@@ -39,6 +40,13 @@ export default {
"amount": "Belopp: {{amount}}",
"purpose": "Meddelande: {{orderId}}"
},
"readyForPickup": {
"line1": "Din beställning {{orderId}} är packad och väntar på dig.",
"line2": "Du kan hämta den nu i vår butik:",
"storeName": "Growheads",
"addressLine1": "Trachenberger Straße 14",
"addressLine2": "01129 Dresden"
},
"details": {
"title": "Orderdetaljer: {{orderId}}",
"deliveryAddress": "Leveransadress",

View File

@@ -10,7 +10,8 @@ export default {
"return": "İade",
"partialReturn": "Kısmi iade",
"partialDelivered": "Kısmen teslim edildi",
"awaiting_tracking": "Paketleniyor"
"awaiting_tracking": "Paketleniyor",
"ready_for_pickup": "Mağazadan teslim alınabilir"
},
"table": {
"orderNumber": "Sipariş numarası",
@@ -39,6 +40,13 @@ export default {
"amount": "Tutar: {{amount}}",
"purpose": "Açıklama: {{orderId}}"
},
"readyForPickup": {
"line1": "{{orderId}} numaralı siparişiniz paketlendi ve sizi bekliyor.",
"line2": "Şimdi mağazamızdan teslim alabilirsiniz:",
"storeName": "Growheads",
"addressLine1": "Trachenberger Straße 14",
"addressLine2": "01129 Dresden"
},
"details": {
"title": "Sipariş detayları: {{orderId}}",
"deliveryAddress": "Teslimat adresi",

View File

@@ -10,7 +10,8 @@ export default {
"return": "Повернення",
"partialReturn": "Часткове повернення",
"partialDelivered": "Частково доставлено",
"awaiting_tracking": "Упаковується"
"awaiting_tracking": "Упаковується",
"ready_for_pickup": "Готово до видачі"
},
"table": {
"orderNumber": "Номер замовлення",
@@ -39,6 +40,13 @@ export default {
"amount": "Сума: {{amount}}",
"purpose": "Призначення платежу: {{orderId}}"
},
"readyForPickup": {
"line1": "Ваше замовлення {{orderId}} упаковане і чекає на вас.",
"line2": "Забрати його можна в нашому магазині:",
"storeName": "Growheads",
"addressLine1": "Trachenberger Straße 14",
"addressLine2": "01129 Dresden"
},
"details": {
"title": "Деталі замовлення: {{orderId}}",
"deliveryAddress": "Адреса доставки",

View File

@@ -10,7 +10,8 @@ export default {
"return": "退货",
"partialReturn": "部分退货",
"partialDelivered": "部分送达",
"awaiting_tracking": "打包中"
"awaiting_tracking": "打包中",
"ready_for_pickup": "可到店取货"
},
"table": {
"orderNumber": "订单号",
@@ -39,6 +40,13 @@ export default {
"amount": "金额:{{amount}}",
"purpose": "备注/用途:{{orderId}}"
},
"readyForPickup": {
"line1": "您的订单 {{orderId}} 已备好,等待您来取。",
"line2": "您现在可以到我们门店取货:",
"storeName": "Growheads",
"addressLine1": "Trachenberger Straße 14",
"addressLine2": "01129 Dresden"
},
"details": {
"title": "订单详情: {{orderId}}",
"deliveryAddress": "收货地址",