|
|
|
@@ -0,0 +1,81 @@ |
|
|
|
import type { TFunction } from "i18next"; |
|
|
|
|
|
|
|
type SubstitutionResultLike = { |
|
|
|
code?: string | null; |
|
|
|
message?: string | null; |
|
|
|
} | null | undefined; |
|
|
|
|
|
|
|
/** |
|
|
|
* Maps pickOrder lot-substitution API (MessageResponse) to zh-TW via pickOrder namespace. |
|
|
|
* Handles dynamic English messages from PickOrderService.confirmLotSubstitution. |
|
|
|
*/ |
|
|
|
export function translateLotSubstitutionFailure( |
|
|
|
t: TFunction<"pickOrder">, |
|
|
|
substitutionResult: SubstitutionResultLike |
|
|
|
): string { |
|
|
|
if (!substitutionResult) { |
|
|
|
return String(t("Lot switch failed; pick line was not marked as checked.")); |
|
|
|
} |
|
|
|
|
|
|
|
const code = substitutionResult.code ?? ""; |
|
|
|
const message = (substitutionResult.message ?? "").trim(); |
|
|
|
|
|
|
|
if (code === "LOT_UNAVAILABLE") { |
|
|
|
return String( |
|
|
|
t( |
|
|
|
"The scanned lot inventory line is unavailable. Cannot switch or bind; pick line was not updated." |
|
|
|
) |
|
|
|
); |
|
|
|
} |
|
|
|
|
|
|
|
if (!message) { |
|
|
|
return String(t("Lot switch failed; pick line was not marked as checked.")); |
|
|
|
} |
|
|
|
|
|
|
|
let m = message.match(/^Pick order line (\d+) not found$/); |
|
|
|
if (m) { |
|
|
|
return String(t("Pick order line {{id}} not found", { id: m[1] })); |
|
|
|
} |
|
|
|
|
|
|
|
m = message.match(/^SuggestedPickLot not found for pickOrderLineId=(\d+)$/); |
|
|
|
if (m) { |
|
|
|
return String( |
|
|
|
t("SuggestedPickLot not found for pickOrderLineId {{polId}}", { polId: m[1] }) |
|
|
|
); |
|
|
|
} |
|
|
|
|
|
|
|
m = message.match(/^SuggestedPickLot qty is invalid: (.+)$/); |
|
|
|
if (m) { |
|
|
|
return String(t("SuggestedPickLot qty is invalid: {{qty}}", { qty: m[1].trim() })); |
|
|
|
} |
|
|
|
|
|
|
|
m = message.match(/^Reject switch lot: available=(.+) < required=(.+)$/); |
|
|
|
if (m) { |
|
|
|
return String( |
|
|
|
t("Reject switch lot: available {{available}} less than required {{required}}", { |
|
|
|
available: m[1].trim(), |
|
|
|
required: m[2].trim(), |
|
|
|
}) |
|
|
|
); |
|
|
|
} |
|
|
|
|
|
|
|
m = message.match(/^Reject switch lot: picked=(.+) already >= required=(.+)$/); |
|
|
|
if (m) { |
|
|
|
return String( |
|
|
|
t( |
|
|
|
"Reject switch lot: picked {{picked}} already greater or equal required {{required}}", |
|
|
|
{ |
|
|
|
picked: m[1].trim(), |
|
|
|
required: m[2].trim(), |
|
|
|
} |
|
|
|
) |
|
|
|
); |
|
|
|
} |
|
|
|
|
|
|
|
const viaKey = t(message, { defaultValue: message }); |
|
|
|
if (viaKey !== message) { |
|
|
|
return String(viaKey); |
|
|
|
} |
|
|
|
|
|
|
|
return message; |
|
|
|
} |