diff --git a/src/components/article/ArticleSearch.jsx b/src/components/article/ArticleSearch.jsx
index 3fd0f41..a483158 100644
--- a/src/components/article/ArticleSearch.jsx
+++ b/src/components/article/ArticleSearch.jsx
@@ -228,7 +228,9 @@ class SearchResultRow extends PureComponent {
{' · '}
>
)}
- {article.sku}
+
+ {article.sku}
+
{article.stock != null && (
<>
{' · '}
@@ -781,16 +783,17 @@ export default class ArticleSearch extends PureComponent {
-
+
{article.name || '–'}
diff --git a/src/components/article/ArticleStockAdjustDialog.jsx b/src/components/article/ArticleStockAdjustDialog.jsx
index 058ac4f..2674994 100644
--- a/src/components/article/ArticleStockAdjustDialog.jsx
+++ b/src/components/article/ArticleStockAdjustDialog.jsx
@@ -358,7 +358,7 @@ export default class ArticleStockAdjustDialog extends PureComponent {
}}
>
- Artikel ({article?.sku})
+ Artikel ({article?.sku})
{article?.name || '–'}
diff --git a/src/components/article/boxes/ArticleViewEANs.jsx b/src/components/article/boxes/ArticleViewEANs.jsx
index c757db9..38b2c74 100644
--- a/src/components/article/boxes/ArticleViewEANs.jsx
+++ b/src/components/article/boxes/ArticleViewEANs.jsx
@@ -152,7 +152,7 @@ export default class ArticleViewEANs extends PureComponent {
return (
{articleData.sku}}
wide={1}
minHeight={SECOND_ROW_MIN_HEIGHT}
color={BORDER}
diff --git a/src/components/article/boxes/ArticleViewLists.jsx b/src/components/article/boxes/ArticleViewLists.jsx
index d031047..df6316c 100644
--- a/src/components/article/boxes/ArticleViewLists.jsx
+++ b/src/components/article/boxes/ArticleViewLists.jsx
@@ -875,6 +875,7 @@ export default class ArticleViewLists extends PureComponent {
to={artikelDetailPath(item.sku)}
sx={{
fontSize: '0.72rem',
+ fontFamily: 'monospace',
color: 'text.secondary',
textDecoration: 'none',
'&:hover': { textDecoration: 'underline' },
@@ -1085,6 +1086,7 @@ export default class ArticleViewLists extends PureComponent {
to={artikelDetailPath(opt.sku)}
sx={{
fontSize: '0.72rem',
+ fontFamily: 'monospace',
color: 'text.secondary',
textDecoration: 'none',
'&:hover': { textDecoration: 'underline' },
diff --git a/src/components/kunde/Kunde.jsx b/src/components/kunde/Kunde.jsx
index 0ad991f..147a203 100644
--- a/src/components/kunde/Kunde.jsx
+++ b/src/components/kunde/Kunde.jsx
@@ -165,6 +165,7 @@ class Kunde extends PureComponent {
height: 24,
fontSize: '0.75rem',
fontWeight: 600,
+ fontFamily: 'monospace',
fontVariantNumeric: 'tabular-nums',
bgcolor: 'action.hover',
color: 'text.primary',
diff --git a/src/components/manifest/ArticleSearchDialog.jsx b/src/components/manifest/ArticleSearchDialog.jsx
index bee3308..d3f1fea 100644
--- a/src/components/manifest/ArticleSearchDialog.jsx
+++ b/src/components/manifest/ArticleSearchDialog.jsx
@@ -130,7 +130,7 @@ export default class ArticleSearchDialog extends PureComponent {
{line ? (
<>
- {isDelivery ? 'Lieferanten-ArtNr' : 'ArtNr'}: {rawSku || '–'}
+ {isDelivery ? 'Lieferanten-ArtNr' : 'ArtNr'}: {rawSku || '–'}
{line?.name ? ` · ${line.name}` : ''}
>
) : isDelivery ? (
diff --git a/src/components/manifest/BookDeliveryDialog.jsx b/src/components/manifest/BookDeliveryDialog.jsx
index 0a3df24..b886fd4 100644
--- a/src/components/manifest/BookDeliveryDialog.jsx
+++ b/src/components/manifest/BookDeliveryDialog.jsx
@@ -780,7 +780,16 @@ export default class BookDeliveryDialog extends PureComponent {
{prefillLine && (
Vorausgewählt zum Verbuchen: Position{' '}
- {prefillLine.sku ? `ArtNr ${prefillLine.sku}` : prefillLine.name} ({amountsToBook[prefillLine.id] || 0} Stk.). Andere Positionen stehen auf 0.
+ {prefillLine.sku ? (
+ <>
+ {'ArtNr '}
+
+ {prefillLine.sku}
+
+ >
+ ) : (
+ {prefillLine.name}
+ )} ({amountsToBook[prefillLine.id] || 0} Stk.). Andere Positionen stehen auf 0.
)}
{this.renderLinesTable()}
diff --git a/src/components/manifest/DeliveryList.jsx b/src/components/manifest/DeliveryList.jsx
index da63c59..d1452df 100644
--- a/src/components/manifest/DeliveryList.jsx
+++ b/src/components/manifest/DeliveryList.jsx
@@ -122,8 +122,8 @@ function renderInvisibleDummyRow(dummy) {
return (
<>
- {d.number}
- {d.externalNumber || 'Nr. / Ref.'}
+ {d.number}
+ {d.externalNumber || 'Nr. / Ref.'}
{d.date ? formatDate(d.date) : '–'}
@@ -241,10 +241,10 @@ class DeliveryRow extends Component {
{renderInvisibleDummyRow(dummy)}
-
+
{delivery.number}
-
+
{numberDisplay(delivery.externalNumber)}
diff --git a/src/components/manifest/ManifestFormLine.jsx b/src/components/manifest/ManifestFormLine.jsx
index fba22cc..4ec9bda 100644
--- a/src/components/manifest/ManifestFormLine.jsx
+++ b/src/components/manifest/ManifestFormLine.jsx
@@ -392,7 +392,7 @@ class ManifestFormLine extends PureComponent {
slotProps={{
htmlInput: {
inputMode: type === 'number' ? 'decimal' : 'text',
- style: { textAlign: align },
+ style: { textAlign: align, ...(id === 'sku' ? { fontFamily: 'monospace' } : {}) },
autoComplete: 'off',
step: type === 'number' ? 'any' : undefined,
},
@@ -544,6 +544,7 @@ class ManifestFormLine extends PureComponent {
fontSize: '0.875rem',
lineHeight: '20px',
fontWeight: id === 'sku' ? 600 : 400,
+ fontFamily: id === 'sku' ? 'monospace' : 'inherit',
color: isError
? 'error.main'
: hasValue
@@ -751,6 +752,7 @@ class ManifestFormLine extends PureComponent {
height: 20,
fontSize: '0.7rem',
fontWeight: 600,
+ fontFamily: 'monospace',
bgcolor: 'primary.50',
color: 'primary.dark',
border: '1px solid',
@@ -1108,6 +1110,7 @@ class ManifestFormLine extends PureComponent {
height: 20,
fontSize: '0.7rem',
fontWeight: 600,
+ fontFamily: 'monospace',
bgcolor: 'primary.50',
color: 'primary.dark',
border: '1px solid',
@@ -1150,7 +1153,7 @@ class ManifestFormLine extends PureComponent {
{/* Supplier SKU if distinct */}
{supplierArticle.sku && supplierArticle.sku !== rawSku && supplierArticle.sku !== article.sku && (
- (Lief.-ArtNr: {supplierArticle.sku})
+ (Lief.-ArtNr: {supplierArticle.sku})
)}
diff --git a/src/components/manifest/ManifestHeader.jsx b/src/components/manifest/ManifestHeader.jsx
index d55602c..0127a23 100644
--- a/src/components/manifest/ManifestHeader.jsx
+++ b/src/components/manifest/ManifestHeader.jsx
@@ -479,9 +479,13 @@ class ManifestHeader extends PureComponent {
sx={{
flex: { xs: '1 1 100%', sm: '1 1 120px' },
minWidth: { sm: 100 },
+ '& .MuiInputBase-input': {
+ fontFamily: 'monospace',
+ },
...(!number && previewNumber && {
'& .MuiInputBase-input.Mui-disabled': {
fontStyle: 'italic',
+ fontFamily: 'monospace',
},
}),
}}
@@ -496,6 +500,9 @@ class ManifestHeader extends PureComponent {
sx={{
flex: { xs: '1 1 100%', sm: '1 1 120px' },
minWidth: { sm: 100 },
+ '& .MuiInputBase-input': {
+ fontFamily: 'monospace',
+ },
...(dirtyFields?.externalNumber && {
'& .MuiOutlinedInput-notchedOutline': {
borderColor: 'warning.main',
diff --git a/src/components/manifest/ManifestList.jsx b/src/components/manifest/ManifestList.jsx
index ba610cb..6d85e9b 100644
--- a/src/components/manifest/ManifestList.jsx
+++ b/src/components/manifest/ManifestList.jsx
@@ -131,11 +131,12 @@ class ManifestList extends PureComponent {
const cfg = this.cfg;
const partyField = cfg.partyField;
- const columns = [{ key: 'number', label: 'Nummer' }];
+ const columns = [{ key: 'number', label: 'Nummer', mono: true }];
if (cfg.externalNumber) {
columns.push({
key: 'externalNumber',
label: 'Referenz',
+ mono: true,
render: (row) => numberDisplay(row.externalNumber),
});
}
diff --git a/src/components/manifest/OrderDocumentsTiles.jsx b/src/components/manifest/OrderDocumentsTiles.jsx
index be8477d..a36e75a 100644
--- a/src/components/manifest/OrderDocumentsTiles.jsx
+++ b/src/components/manifest/OrderDocumentsTiles.jsx
@@ -109,7 +109,7 @@ export class OrderDocumentsTiles extends PureComponent {
}}
>
-
+
{sh.number}
@@ -134,7 +134,7 @@ export class OrderDocumentsTiles extends PureComponent {
{sh.externalNumber ? (
- Ref: {sh.externalNumber}
+ Ref: {sh.externalNumber}
) : null}
diff --git a/src/components/manifest/OrderList.jsx b/src/components/manifest/OrderList.jsx
index e73630d..58a65cd 100644
--- a/src/components/manifest/OrderList.jsx
+++ b/src/components/manifest/OrderList.jsx
@@ -103,8 +103,8 @@ function renderInvisibleDummyRow(dummy) {
return (
<>
- {d.number}
- {d.externalNumber || 'Nr. / Ref.'}
+ {d.number}
+ {d.externalNumber || 'Nr. / Ref.'}
{d.date ? formatDate(d.date) : '–'}
@@ -200,10 +200,10 @@ class OrderRow extends PureComponent {
{renderInvisibleDummyRow(dummy)}
-
+
{order.number}
-
+
{numberDisplay(order.externalNumber)}
diff --git a/src/components/manifest/OrderPaymentList.jsx b/src/components/manifest/OrderPaymentList.jsx
index bdcf321..ab41267 100644
--- a/src/components/manifest/OrderPaymentList.jsx
+++ b/src/components/manifest/OrderPaymentList.jsx
@@ -99,7 +99,7 @@ class PaymentTableRow extends PureComponent {
onNavigateOrder?.(payment.orderId)}>
{/* Payment ID from payment table */}
-
+
{/* Amount */}
@@ -126,7 +126,7 @@ class PaymentTableRow extends PureComponent {
{/* Linked Manifest (Auftrag) */}
-
+
{payment.orderNumber}
diff --git a/src/components/manifest/OrderShipmentDialog.jsx b/src/components/manifest/OrderShipmentDialog.jsx
index 2b1bec4..dec27e2 100644
--- a/src/components/manifest/OrderShipmentDialog.jsx
+++ b/src/components/manifest/OrderShipmentDialog.jsx
@@ -435,7 +435,7 @@ export default class OrderShipmentDialog extends PureComponent {
{orderNumber ? (
- Zu: {orderNumber}
+ Zu: {orderNumber}
) : null}
@@ -486,7 +486,7 @@ export default class OrderShipmentDialog extends PureComponent {
readOnly: true,
},
}}
- sx={{ minWidth: 190 }}
+ sx={{ minWidth: 190, '& .MuiInputBase-input': { fontFamily: 'monospace' } }}
/>
this.setState({ externalNumber: e.target.value })}
fullWidth
+ slotProps={{ input: { sx: { fontFamily: 'monospace' } } }}
/>
@@ -549,7 +550,7 @@ export default class OrderShipmentDialog extends PureComponent {
onChange={() => this.handleToggleItem(item.itemKey, item.remaining)}
/>
- {item.sku || '–'}
+ {item.sku || '–'}
{item.name || '–'}
diff --git a/src/components/manifest/PartyFilterPanel.jsx b/src/components/manifest/PartyFilterPanel.jsx
index aa85ba2..0c5c73b 100644
--- a/src/components/manifest/PartyFilterPanel.jsx
+++ b/src/components/manifest/PartyFilterPanel.jsx
@@ -279,6 +279,7 @@ export default class PartyFilterPanel extends PureComponent {
sx: {
color: isSelected ? 'inherit' : 'text.secondary',
opacity: isSelected ? 0.8 : 1,
+ fontFamily: 'monospace',
},
},
}}
diff --git a/src/components/manifest/QuoteList.jsx b/src/components/manifest/QuoteList.jsx
index 8392a2b..e25c7dd 100644
--- a/src/components/manifest/QuoteList.jsx
+++ b/src/components/manifest/QuoteList.jsx
@@ -117,7 +117,7 @@ function renderInvisibleDummyRow(dummy) {
return (
<>
- {d.number}
+ {d.number}
{d.date ? formatDate(d.date) : '–'}
@@ -209,7 +209,7 @@ class QuoteRow extends PureComponent {
{renderInvisibleDummyRow(dummy)}
-
+
{quote.number}
diff --git a/src/components/manifest/ShipmentDetailDialog.jsx b/src/components/manifest/ShipmentDetailDialog.jsx
index 5e78b85..73309c1 100644
--- a/src/components/manifest/ShipmentDetailDialog.jsx
+++ b/src/components/manifest/ShipmentDetailDialog.jsx
@@ -429,12 +429,19 @@ export default class ShipmentDetailDialog extends PureComponent {
-
+
{shipment.number || 'Lieferschein'}
{shipment.date ? `Datum: ${formatDate(shipment.date)}` : ''}
- {shipment.externalNumber ? ` • Ref: ${shipment.externalNumber}` : ''}
+ {shipment.externalNumber ? (
+ <>
+ {' • Ref: '}
+
+ {shipment.externalNumber}
+
+ >
+ ) : ''}
@@ -476,7 +483,7 @@ export default class ShipmentDetailDialog extends PureComponent {
) : (
shLines.map((line, idx) => (
- {line.sku}
+ {line.sku}
{line.name || '–'}
{line.amount}
diff --git a/src/components/manifest/ShipmentList.jsx b/src/components/manifest/ShipmentList.jsx
index d44222f..706e557 100644
--- a/src/components/manifest/ShipmentList.jsx
+++ b/src/components/manifest/ShipmentList.jsx
@@ -247,7 +247,7 @@ class NewShipmentModal extends PureComponent {
size="small"
value={getNextShipmentNumber(currentOrder.number, currentOrder.shipments)}
disabled
- slotProps={{ input: { readOnly: true } }}
+ slotProps={{ input: { readOnly: true, sx: { fontFamily: 'monospace' } } }}
sx={{ width: 190 }}
/>
) : null}
@@ -256,6 +256,7 @@ class NewShipmentModal extends PureComponent {
size="small"
value={externalNumber}
onChange={(e) => this.setState({ externalNumber: e.target.value })}
+ slotProps={{ input: { sx: { fontFamily: 'monospace' } } }}
sx={{ flex: 1 }}
/>
@@ -264,7 +265,7 @@ class NewShipmentModal extends PureComponent {
{currentOrder && (
- Lieferbare Positionen für Auftrag {currentOrder.number}:
+ Lieferbare Positionen für Auftrag {currentOrder.number}:
{lines.map((line, idx) => {
@@ -488,14 +489,14 @@ function renderInvisibleDummyRow(dummy) {
return (
<>
- {d.number}
- {d.externalNumber || 'Nr. / Ref.'}
+ {d.number}
+ {d.externalNumber || 'Nr. / Ref.'}
{d.date ? formatDate(d.date) : '–'}
- {d.orderNumber}
+ {d.orderNumber}
{d.customerName}
@@ -594,10 +595,10 @@ class ShipmentRow extends PureComponent {
{/* 1. Lieferschein-Nr & Ref */}
-
+
{shipment.number}
-
+
{numberDisplay(shipment.externalNumber)}
@@ -612,7 +613,7 @@ class ShipmentRow extends PureComponent {
{/* 3. Bezugsauftrag */}
{shipment.orderNumber ? (
-
+
{shipment.orderNumber}
) : (
diff --git a/src/components/settings/NumberSettingsPanel.jsx b/src/components/settings/NumberSettingsPanel.jsx
index 6cac791..252d21a 100644
--- a/src/components/settings/NumberSettingsPanel.jsx
+++ b/src/components/settings/NumberSettingsPanel.jsx
@@ -217,6 +217,7 @@ export default class NumberSettingsPanel extends Component {
value={draft.prefix}
disabled={draft.busy}
onChange={(e) => this.handleChange(row.id, 'prefix', e.target.value)}
+ sx={{ input: { fontFamily: 'monospace' } }}
/>
@@ -227,6 +228,7 @@ export default class NumberSettingsPanel extends Component {
disabled={draft.busy}
slotProps={{ htmlInput: { min: 1, step: 1 } }}
onChange={(e) => this.handleChange(row.id, 'padding', e.target.value)}
+ sx={{ input: { fontFamily: 'monospace' } }}
/>
@@ -237,6 +239,7 @@ export default class NumberSettingsPanel extends Component {
disabled={draft.busy}
slotProps={{ htmlInput: { min: 0, step: 1 } }}
onChange={(e) => this.handleChange(row.id, 'next', e.target.value)}
+ sx={{ input: { fontFamily: 'monospace' } }}
/>
diff --git a/src/components/tiles/ArticleTile.jsx b/src/components/tiles/ArticleTile.jsx
index 9735534..89e666e 100644
--- a/src/components/tiles/ArticleTile.jsx
+++ b/src/components/tiles/ArticleTile.jsx
@@ -309,7 +309,12 @@ export class ArticleTile extends Tile {
/>
) : null}
{sku ? (
-
+
{sku}
) : null}
@@ -497,6 +502,7 @@ export class ArticleTile extends Tile {
height: '1.2em',
overflow: 'hidden',
textOverflow: 'ellipsis',
+ fontFamily: 'monospace',
}}
>
{sku || '\u00A0'}
diff --git a/src/index.css b/src/index.css
index fdc338c..9c2bb14 100644
--- a/src/index.css
+++ b/src/index.css
@@ -102,4 +102,16 @@ html.df-dialog-open #root {
box-shadow: var(--df-shadow-drag, 0 8px 20px rgba(15, 23, 42, 0.28));
cursor: grabbing !important;
user-select: none !important;
+}
+
+/* ────────────────────────────────────────────────────────────────────────────
+ * NUMBER SCHEME MONOSPACE FONT
+ *
+ * All numbers originating from a number scheme (SKUs, customer numbers,
+ * delivery/quote/order/shipment document numbers) must be monospaced with tabular numbers.
+ * ──────────────────────────────────────────────────────────────────────────── */
+.df-mono,
+.df-number-scheme {
+ font-family: ui-monospace, 'SFMono-Regular', Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace !important;
+ font-variant-numeric: tabular-nums;
}
\ No newline at end of file
diff --git a/src/routes/artikel.jsx b/src/routes/artikel.jsx
index 18ab604..6c9a568 100644
--- a/src/routes/artikel.jsx
+++ b/src/routes/artikel.jsx
@@ -156,7 +156,7 @@ class ResultRow extends Component {
{row.sku}
diff --git a/src/routes/kunde/_entityId.jsx b/src/routes/kunde/_entityId.jsx
index f01d2b7..e9bef8e 100644
--- a/src/routes/kunde/_entityId.jsx
+++ b/src/routes/kunde/_entityId.jsx
@@ -2,6 +2,7 @@ import { PureComponent } from 'react';
import Box from '@mui/material/Box';
import Button from '@mui/material/Button';
import CircularProgress from '@mui/material/CircularProgress';
+import Chip from '@mui/material/Chip';
import Divider from '@mui/material/Divider';
import IconButton from '@mui/material/IconButton';
import Stack from '@mui/material/Stack';
@@ -559,11 +560,25 @@ class KundeEditPage extends PureComponent {
- {groupName != null ? (
-
- Gruppe: {groupName}
-
- ) : null}
+
+ {entity?.number ? (
+
+ ) : null}
+ {groupName != null ? (
+
+ Gruppe: {groupName}
+
+ ) : null}
+