u
This commit is contained in:
@@ -30,7 +30,7 @@ import WarehouseIcon from '@mui/icons-material/Warehouse';
|
||||
import AddIcon from '@mui/icons-material/Add';
|
||||
import { enqueueSnackbar } from 'notistack';
|
||||
import { notifyError } from '../../utils/notify';
|
||||
import { formatDate } from './manifestConfig';
|
||||
import { formatDate, resolveLineSkus } from './manifestConfig';
|
||||
import {
|
||||
fetchDeliveryLedgerSummary,
|
||||
bookDeliveryLines,
|
||||
@@ -45,66 +45,6 @@ import {
|
||||
SURFACE_RAISED,
|
||||
} from '../../colors';
|
||||
|
||||
function resolveLineSkus(line, delivery, supplierArticlesMap = {}) {
|
||||
const rawSku = line?.sku ? String(line.sku).trim() : '';
|
||||
const supplierId = delivery?.supplierId ?? delivery?.partyId;
|
||||
|
||||
// 1. Direct line properties if available
|
||||
let supplierSku =
|
||||
line?.supplierSku ||
|
||||
line?.supplier_sku ||
|
||||
line?.supplierArticle?.sku ||
|
||||
'';
|
||||
let ownSku =
|
||||
line?.articleSku ||
|
||||
line?.article_sku ||
|
||||
line?.article?.sku ||
|
||||
line?.supplierArticle?.article?.sku ||
|
||||
'';
|
||||
|
||||
// 2. Check supplierArticlesMap
|
||||
const sa = rawSku
|
||||
? (supplierArticlesMap[rawSku] || supplierArticlesMap[rawSku.toLowerCase()])
|
||||
: null;
|
||||
|
||||
if (sa) {
|
||||
if (!supplierSku && sa.sku) supplierSku = sa.sku;
|
||||
if (!ownSku && sa.article?.sku) ownSku = sa.article.sku;
|
||||
}
|
||||
|
||||
// 3. Check loaded article details
|
||||
const cachedArticle =
|
||||
line?.article ||
|
||||
(ownSku ? getArticle(ownSku) : null) ||
|
||||
(rawSku ? getArticle(rawSku) : null);
|
||||
|
||||
if (cachedArticle) {
|
||||
if (!ownSku && cachedArticle.sku) {
|
||||
ownSku = cachedArticle.sku;
|
||||
}
|
||||
const sup =
|
||||
(supplierId && cachedArticle.suppliers?.find((s) => s.entityId === supplierId)) ||
|
||||
cachedArticle.suppliers?.[0];
|
||||
if (!supplierSku && sup?.sku) {
|
||||
supplierSku = sup.sku;
|
||||
}
|
||||
}
|
||||
|
||||
// 4. Fallback heuristics if one is still missing
|
||||
if (!supplierSku && !ownSku) {
|
||||
ownSku = rawSku;
|
||||
} else if (!supplierSku && rawSku && rawSku !== ownSku) {
|
||||
supplierSku = rawSku;
|
||||
} else if (!ownSku && rawSku && rawSku !== supplierSku) {
|
||||
ownSku = rawSku;
|
||||
}
|
||||
|
||||
return {
|
||||
supplierSku: supplierSku || '–',
|
||||
ownSku: ownSku || '–',
|
||||
};
|
||||
}
|
||||
|
||||
export default class BookDeliveryDialog extends PureComponent {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
|
||||
@@ -707,3 +707,67 @@ export function manifestConfig(cfgOrKind) {
|
||||
}
|
||||
throw new Error(`Unknown manifest kind: ${kind}`);
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolves supplier SKU and own SKU for a manifest line.
|
||||
*/
|
||||
export function resolveLineSkus(line, delivery, supplierArticlesMap = {}) {
|
||||
const rawSku = line?.sku ? String(line.sku).trim() : '';
|
||||
const supplierId = delivery?.supplierId ?? delivery?.partyId;
|
||||
|
||||
// 1. Direct line properties if available
|
||||
let supplierSku =
|
||||
line?.supplierSku ||
|
||||
line?.supplier_sku ||
|
||||
line?.supplierArticle?.sku ||
|
||||
'';
|
||||
let ownSku =
|
||||
line?.articleSku ||
|
||||
line?.article_sku ||
|
||||
line?.article?.sku ||
|
||||
line?.supplierArticle?.article?.sku ||
|
||||
'';
|
||||
|
||||
// 2. Check supplierArticlesMap
|
||||
const sa = rawSku
|
||||
? (supplierArticlesMap[rawSku] || supplierArticlesMap[rawSku.toLowerCase()])
|
||||
: null;
|
||||
|
||||
if (sa) {
|
||||
if (!supplierSku && sa.sku) supplierSku = sa.sku;
|
||||
if (!ownSku && sa.article?.sku) ownSku = sa.article.sku;
|
||||
}
|
||||
|
||||
// 3. Check loaded article details
|
||||
const cachedArticle =
|
||||
line?.article ||
|
||||
(ownSku ? getArticle(ownSku) : null) ||
|
||||
(rawSku ? getArticle(rawSku) : null);
|
||||
|
||||
if (cachedArticle) {
|
||||
if (!ownSku && cachedArticle.sku) {
|
||||
ownSku = cachedArticle.sku;
|
||||
}
|
||||
const sup =
|
||||
(supplierId && cachedArticle.suppliers?.find((s) => s.entityId === supplierId)) ||
|
||||
cachedArticle.suppliers?.[0];
|
||||
if (!supplierSku && sup?.sku) {
|
||||
supplierSku = sup.sku;
|
||||
}
|
||||
}
|
||||
|
||||
// 4. Fallback heuristics if one is still missing
|
||||
if (!supplierSku && !ownSku) {
|
||||
ownSku = rawSku;
|
||||
} else if (!supplierSku && rawSku && rawSku !== ownSku) {
|
||||
supplierSku = rawSku;
|
||||
} else if (!ownSku && rawSku && rawSku !== supplierSku) {
|
||||
ownSku = rawSku;
|
||||
}
|
||||
|
||||
return {
|
||||
supplierSku: supplierSku || '–',
|
||||
ownSku: ownSku || '–',
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user