67 lines
2.3 KiB
JavaScript
67 lines
2.3 KiB
JavaScript
import { overseasRequest } from './overseas.js'
|
|||
|
|
|
||
|
|
const BASE = '/pda/v1/last-leg/return-receipts'
|
||
|
|
|
||
|
|
function count(value) {
|
||
|
|
const result = Number(value || 0)
|
||
|
|
return Number.isFinite(result) ? Math.max(0, result) : 0
|
||
|
|
}
|
||
|
|
|
||
|
|
function normalizeItem(item = {}) {
|
||
|
|
return {
|
||
|
|
skuCode: String(item.skuCode || ''),
|
||
|
|
productNameZh: String(item.productNameZh || ''),
|
||
|
|
expectedQuantity: count(item.expectedQuantity),
|
||
|
|
receivedQuantity: count(item.receivedQuantity)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
export function normalizeReturnReceiptStart(value = {}) {
|
||
|
|
return {
|
||
|
|
returnNo: String(value.returnNo || ''),
|
||
|
|
status: String(value.status || ''),
|
||
|
|
expectedItems: Array.isArray(value.expectedItems) ? value.expectedItems.map(normalizeItem) : []
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
export function normalizeReturnSkuCandidates(value = {}) {
|
||
|
|
return {
|
||
|
|
skuCode: String(value.skuCode || ''),
|
||
|
|
candidates: Array.isArray(value.candidates) ? value.candidates.map((item) => ({
|
||
|
|
returnNo: String(item.returnNo || ''),
|
||
|
|
customerReferenceNo: String(item.customerReferenceNo || ''),
|
||
|
|
status: String(item.status || ''),
|
||
|
|
skuExpectedQuantity: count(item.skuExpectedQuantity),
|
||
|
|
skuReceivedQuantity: count(item.skuReceivedQuantity),
|
||
|
|
orderExpectedQuantity: count(item.orderExpectedQuantity),
|
||
|
|
orderReceivedQuantity: count(item.orderReceivedQuantity)
|
||
|
|
})) : []
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
export function normalizeReturnReceiptResult(value = {}) {
|
||
|
|
return {
|
||
|
|
returnNo: String(value.returnNo || ''),
|
||
|
|
receiptNo: String(value.receiptNo || ''),
|
||
|
|
receiptBatchNo: String(value.receiptBatchNo || ''),
|
||
|
|
cartonMark: String(value.cartonMark || ''),
|
||
|
|
orderStatus: String(value.orderStatus || ''),
|
||
|
|
fullyMatched: Boolean(value.fullyMatched),
|
||
|
|
expectedQuantity: count(value.expectedQuantity),
|
||
|
|
receivedQuantity: count(value.receivedQuantity),
|
||
|
|
signedAt: value.signedAt || null
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
export async function startReturnReceipt(returnNo) {
|
||
|
|
return normalizeReturnReceiptStart(await overseasRequest('POST', `${BASE}/start`, { returnNo: String(returnNo || '').trim() }))
|
||
|
|
}
|
||
|
|
|
||
|
|
export async function findReturnSkuCandidates(skuCode) {
|
||
|
|
return normalizeReturnSkuCandidates(await overseasRequest('POST', `${BASE}/sku-candidates`, { skuCode: String(skuCode || '').trim() }))
|
||
|
|
}
|
||
|
|
|
||
|
|
export async function confirmReturnReceipt(request) {
|
||
|
|
return normalizeReturnReceiptResult(await overseasRequest('POST', `${BASE}/confirm`, request))
|
||
|
|
}
|