refactor(intake): extract first quality helpers
This commit is contained in:
parent
8faa646bb0
commit
d5b5668154
@ -551,6 +551,13 @@ import {
|
||||
type ProductFinishedSampleShipmentDisplayRow,
|
||||
type ProductSampleMeasurementDisplayRow,
|
||||
} from "./sampleWorkflowHelpers";
|
||||
import {
|
||||
buildFirstQualityRows,
|
||||
hasFirstQualityRowContent,
|
||||
isFirstQualityRowComplete,
|
||||
normalizeFirstQualityRowsForPayload,
|
||||
type ProductFirstQualityDisplayRow,
|
||||
} from "./firstQualityHelpers";
|
||||
import {
|
||||
MATERIAL_TYPE_OPTIONS,
|
||||
PLANNING_LAYOUT_AUDIENCE_OPTIONS,
|
||||
@ -4276,86 +4283,6 @@ function buildNoModificationFinishedSampleShipmentRows(
|
||||
}));
|
||||
}
|
||||
|
||||
type ProductFirstQualityDisplayRow = NonIntegratedFirstQualityRow & {
|
||||
image: string;
|
||||
model: string;
|
||||
skuCode: string;
|
||||
barcode: string;
|
||||
setCount: string;
|
||||
specName: string;
|
||||
size: string;
|
||||
color: string;
|
||||
material: string;
|
||||
supplierName: string;
|
||||
batchNo: number;
|
||||
};
|
||||
|
||||
function createFirstQualityRowFromSku(
|
||||
sku: NonIntegratedSkuItem,
|
||||
existingRow?: NonIntegratedFirstQualityRow,
|
||||
): ProductFirstQualityDisplayRow {
|
||||
return {
|
||||
skuId: sku.id,
|
||||
image: sku.image.trim(),
|
||||
model: sku.model.trim(),
|
||||
skuCode: sku.skuCode.trim(),
|
||||
barcode: sku.barcode.trim(),
|
||||
setCount: sku.setCount.trim() || "1",
|
||||
specName: sku.specName.trim(),
|
||||
size: sku.size.trim(),
|
||||
color: sku.color.trim(),
|
||||
material: sku.material.trim(),
|
||||
supplierName: sku.manufacturer.trim(),
|
||||
batchNo: sku.batchNo || 1,
|
||||
qualityBatch: existingRow?.qualityBatch?.trim() ?? "",
|
||||
conclusion: existingRow?.conclusion?.trim() || "待检",
|
||||
detail: existingRow?.detail?.trim() ?? "",
|
||||
};
|
||||
}
|
||||
|
||||
function buildFirstQualityRows(
|
||||
skuItems: NonIntegratedSkuItem[],
|
||||
savedRows: NonIntegratedFirstQualityRow[],
|
||||
): ProductFirstQualityDisplayRow[] {
|
||||
const rowBySkuId = new Map(savedRows.map((row) => [row.skuId, row]));
|
||||
|
||||
return skuItems.map((sku) =>
|
||||
createFirstQualityRowFromSku(sku, rowBySkuId.get(sku.id)),
|
||||
);
|
||||
}
|
||||
|
||||
function normalizeFirstQualityRowsForPayload(
|
||||
rows: NonIntegratedFirstQualityRow[],
|
||||
): NonIntegratedFirstQualityRow[] {
|
||||
return rows
|
||||
.map((row) => ({
|
||||
skuId: row.skuId,
|
||||
qualityBatch: row.qualityBatch.trim(),
|
||||
conclusion: row.conclusion.trim(),
|
||||
detail: row.detail.trim(),
|
||||
}))
|
||||
.filter(
|
||||
(row) =>
|
||||
row.skuId &&
|
||||
hasFirstQualityRowContent(row),
|
||||
);
|
||||
}
|
||||
|
||||
function isFirstQualityRowComplete(row: NonIntegratedFirstQualityRow) {
|
||||
return [row.qualityBatch, row.conclusion, row.detail].every((value) =>
|
||||
value.trim(),
|
||||
);
|
||||
}
|
||||
|
||||
function hasFirstQualityRowContent(row: NonIntegratedFirstQualityRow) {
|
||||
const conclusion = row.conclusion.trim();
|
||||
return Boolean(
|
||||
row.qualityBatch.trim() ||
|
||||
row.detail.trim() ||
|
||||
(conclusion && conclusion !== "待检"),
|
||||
);
|
||||
}
|
||||
|
||||
function createFormValuesFromProduct(
|
||||
product: NonIntegratedProductRecord | null,
|
||||
): FormValues {
|
||||
|
||||
@ -0,0 +1,84 @@
|
||||
import type {
|
||||
NonIntegratedFirstQualityRow,
|
||||
NonIntegratedSkuItem,
|
||||
} from "./nonIntegratedStorage";
|
||||
|
||||
export type ProductFirstQualityDisplayRow = NonIntegratedFirstQualityRow & {
|
||||
image: string;
|
||||
model: string;
|
||||
skuCode: string;
|
||||
barcode: string;
|
||||
setCount: string;
|
||||
specName: string;
|
||||
size: string;
|
||||
color: string;
|
||||
material: string;
|
||||
supplierName: string;
|
||||
batchNo: number;
|
||||
};
|
||||
|
||||
export function createFirstQualityRowFromSku(
|
||||
sku: NonIntegratedSkuItem,
|
||||
existingRow?: NonIntegratedFirstQualityRow,
|
||||
): ProductFirstQualityDisplayRow {
|
||||
return {
|
||||
skuId: sku.id,
|
||||
image: sku.image.trim(),
|
||||
model: sku.model.trim(),
|
||||
skuCode: sku.skuCode.trim(),
|
||||
barcode: sku.barcode.trim(),
|
||||
setCount: sku.setCount.trim() || "1",
|
||||
specName: sku.specName.trim(),
|
||||
size: sku.size.trim(),
|
||||
color: sku.color.trim(),
|
||||
material: sku.material.trim(),
|
||||
supplierName: sku.manufacturer.trim(),
|
||||
batchNo: sku.batchNo || 1,
|
||||
qualityBatch: existingRow?.qualityBatch?.trim() ?? "",
|
||||
conclusion: existingRow?.conclusion?.trim() || "待检",
|
||||
detail: existingRow?.detail?.trim() ?? "",
|
||||
};
|
||||
}
|
||||
|
||||
export function buildFirstQualityRows(
|
||||
skuItems: NonIntegratedSkuItem[],
|
||||
savedRows: NonIntegratedFirstQualityRow[],
|
||||
): ProductFirstQualityDisplayRow[] {
|
||||
const rowBySkuId = new Map(savedRows.map((row) => [row.skuId, row]));
|
||||
|
||||
return skuItems.map((sku) =>
|
||||
createFirstQualityRowFromSku(sku, rowBySkuId.get(sku.id)),
|
||||
);
|
||||
}
|
||||
|
||||
export function normalizeFirstQualityRowsForPayload(
|
||||
rows: NonIntegratedFirstQualityRow[],
|
||||
): NonIntegratedFirstQualityRow[] {
|
||||
return rows
|
||||
.map((row) => ({
|
||||
skuId: row.skuId,
|
||||
qualityBatch: row.qualityBatch.trim(),
|
||||
conclusion: row.conclusion.trim(),
|
||||
detail: row.detail.trim(),
|
||||
}))
|
||||
.filter(
|
||||
(row) =>
|
||||
row.skuId &&
|
||||
hasFirstQualityRowContent(row),
|
||||
);
|
||||
}
|
||||
|
||||
export function isFirstQualityRowComplete(row: NonIntegratedFirstQualityRow) {
|
||||
return [row.qualityBatch, row.conclusion, row.detail].every((value) =>
|
||||
value.trim(),
|
||||
);
|
||||
}
|
||||
|
||||
export function hasFirstQualityRowContent(row: NonIntegratedFirstQualityRow) {
|
||||
const conclusion = row.conclusion.trim();
|
||||
return Boolean(
|
||||
row.qualityBatch.trim() ||
|
||||
row.detail.trim() ||
|
||||
(conclusion && conclusion !== "待检"),
|
||||
);
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user