优化
This commit is contained in:
@@ -7,7 +7,15 @@ export interface DiscardDocument extends DiscardCandidate {
|
||||
/** 下拉按来源单据和操作仓汇总;原始库存身份保留给选箱与提交。 */
|
||||
export function groupDiscardDocuments(candidates: DiscardCandidate[]): DiscardDocument[] {
|
||||
const groups = new Map<string, DiscardDocument>()
|
||||
const identities = new Set<string>()
|
||||
for (const candidate of candidates) {
|
||||
const available = Number(candidate.availablePackages)
|
||||
if (candidate.availablePackages == null || !Number.isFinite(available) || available <= 0) continue
|
||||
// 按真实来源身份去重;缺身份的旧接口行仍独立保留,不合并不同库存。
|
||||
const identity = candidate.sourceType === 'RETURN_CARTON' ? candidate.returnCartonId : candidate.inventoryPositionId || candidate.orderId
|
||||
const sourceKey = identity ? JSON.stringify([candidate.overseasWarehouseId, candidate.sourceType, identity]) : null
|
||||
if (sourceKey && identities.has(sourceKey)) continue
|
||||
if (sourceKey) identities.add(sourceKey)
|
||||
const documentNo = candidate.inboundOrderNo || candidate.inboundCode
|
||||
const key = JSON.stringify([candidate.overseasWarehouseId, candidate.sourceType, documentNo || candidate.orderId])
|
||||
let document = groups.get(key)
|
||||
@@ -27,7 +35,9 @@ export function groupDiscardDocuments(candidates: DiscardCandidate[]): DiscardDo
|
||||
} else if (source.cartonSelectionSupported && source.cartons?.length) {
|
||||
for (const box of source.cartons) boxes.add(`${source.sourceType}:${box.cartonId}`)
|
||||
} else {
|
||||
untrackedPackages += source.availablePackages
|
||||
// Long 序列化可能返回字符串,必须先转数值再汇总,避免拼成 005010097。
|
||||
const packages = Number(source.availablePackages)
|
||||
untrackedPackages += Number.isFinite(packages) && packages > 0 ? packages : 0
|
||||
}
|
||||
}
|
||||
document.availablePackages = boxes.size + untrackedPackages
|
||||
|
||||
Reference in New Issue
Block a user