diff options
Diffstat (limited to 'lib/soap/ecc')
| -rw-r--r-- | lib/soap/ecc/mapper/po-mapper.ts | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/lib/soap/ecc/mapper/po-mapper.ts b/lib/soap/ecc/mapper/po-mapper.ts index 847ffdc0..4f8b8034 100644 --- a/lib/soap/ecc/mapper/po-mapper.ts +++ b/lib/soap/ecc/mapper/po-mapper.ts @@ -402,16 +402,30 @@ export async function mapAndSaveECCPOData( const contractItemsData: ContractItemData[] = []; for (const detail of details) { + // LOEKZ(삭제지시자)가 null이 아니면 스킵 + if (detail.LOEKZ !== null && detail.LOEKZ !== undefined && detail.LOEKZ !== '') { + debugLog('삭제 지시된 아이템 스킵', { + ebeln: detail.EBELN, + ebelp: detail.EBELP, + loekz: detail.LOEKZ + }); + continue; + } + const itemData = await mapECCPODetailToBusiness(detail, contractId); contractItemsData.push(itemData); } - // 일괄 삽입 - await tx.insert(contractItems).values(contractItemsData); - debugLog('계약 아이템 저장 완료', { - contractId, - itemCount: contractItemsData.length - }); + // 일괄 삽입 (유효한 아이템이 있을 때만) + if (contractItemsData.length > 0) { + await tx.insert(contractItems).values(contractItemsData); + debugLog('계약 아이템 저장 완료', { + contractId, + itemCount: contractItemsData.length + }); + } else { + debugLog('저장할 유효한 계약 아이템 없음', { contractId }); + } } processedCount++; |
