feat(admin): bind booking documents and truck containers
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
const letterValues = [10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 37, 38]
|
||||
|
||||
export function normalizeIso6346ContainerNumber(value: string | null | undefined) {
|
||||
return value?.replace(/[\s\u00a0\u3000]+/g, '').toUpperCase() || ''
|
||||
}
|
||||
|
||||
export function isIso6346ContainerNumber(value: string | null | undefined) {
|
||||
const normalized = normalizeIso6346ContainerNumber(value)
|
||||
if (!/^[A-Z]{3}[UJZ][0-9]{7}$/.test(normalized)) return false
|
||||
let sum = 0
|
||||
for (let index = 0; index < 10; index += 1) {
|
||||
const current = normalized[index]!
|
||||
const number = /[0-9]/.test(current) ? Number(current) : letterValues[current.charCodeAt(0) - 65]!
|
||||
sum += number * (2 ** index)
|
||||
}
|
||||
return Number(normalized[10]) === (sum % 11) % 10
|
||||
}
|
||||
Reference in New Issue
Block a user