fix: treat missing return records as empty results
This commit is contained in:
@@ -4,6 +4,11 @@ const BASE = '/pda/v1/last-leg/return-inventory'
|
||||
const encoded = (value) => encodeURIComponent(String(value || '').trim())
|
||||
const count = (value) => Number.isFinite(Number(value)) ? Math.max(0, Number(value)) : 0
|
||||
|
||||
function isNotFound(error) {
|
||||
const code = String(error?.code || '').toUpperCase()
|
||||
return code === 'A0404' || code === '404'
|
||||
}
|
||||
|
||||
function normalizeItems(items) {
|
||||
return Array.isArray(items) ? items.map((item) => ({
|
||||
skuCode: String(item.skuCode || ''), productNameZh: String(item.productNameZh || ''),
|
||||
@@ -34,7 +39,12 @@ export function normalizeReturnLabel(value = {}) {
|
||||
|
||||
export async function findPackingOrders(returnNo = '') {
|
||||
const query = String(returnNo || '').trim()
|
||||
return normalizePackingPreview(await overseasRequest('GET', `${BASE}/packing/orders${query ? `?returnNo=${encoded(query)}` : ''}`))
|
||||
try {
|
||||
return normalizePackingPreview(await overseasRequest('GET', `${BASE}/packing/orders${query ? `?returnNo=${encoded(query)}` : ''}`))
|
||||
} catch (error) {
|
||||
if (isNotFound(error)) return normalizePackingPreview()
|
||||
throw error
|
||||
}
|
||||
}
|
||||
|
||||
export async function mergeReturnCartons(request) {
|
||||
|
||||
@@ -16,6 +16,11 @@ function normalizeItem(item = {}) {
|
||||
}
|
||||
}
|
||||
|
||||
function isNotFound(error) {
|
||||
const code = String(error?.code || '').toUpperCase()
|
||||
return code === 'A0404' || code === '404'
|
||||
}
|
||||
|
||||
export function normalizeReturnReceiptStart(value = {}) {
|
||||
return {
|
||||
returnNo: String(value.returnNo || ''),
|
||||
@@ -54,11 +59,22 @@ export function normalizeReturnReceiptResult(value = {}) {
|
||||
}
|
||||
|
||||
export async function startReturnReceipt(returnNo) {
|
||||
return normalizeReturnReceiptStart(await overseasRequest('POST', `${BASE}/start`, { returnNo: String(returnNo || '').trim() }))
|
||||
try {
|
||||
return normalizeReturnReceiptStart(await overseasRequest('POST', `${BASE}/start`, { returnNo: String(returnNo || '').trim() }))
|
||||
} catch (error) {
|
||||
if (isNotFound(error)) return null
|
||||
throw error
|
||||
}
|
||||
}
|
||||
|
||||
export async function findReturnSkuCandidates(skuCode) {
|
||||
return normalizeReturnSkuCandidates(await overseasRequest('POST', `${BASE}/sku-candidates`, { skuCode: String(skuCode || '').trim() }))
|
||||
const normalizedSkuCode = String(skuCode || '').trim()
|
||||
try {
|
||||
return normalizeReturnSkuCandidates(await overseasRequest('POST', `${BASE}/sku-candidates`, { skuCode: normalizedSkuCode }))
|
||||
} catch (error) {
|
||||
if (isNotFound(error)) return normalizeReturnSkuCandidates({ skuCode: normalizedSkuCode, candidates: [] })
|
||||
throw error
|
||||
}
|
||||
}
|
||||
|
||||
export async function confirmReturnReceipt(request) {
|
||||
|
||||
Reference in New Issue
Block a user