summaryrefslogtreecommitdiff
path: root/lib/soap
diff options
context:
space:
mode:
Diffstat (limited to 'lib/soap')
-rw-r--r--lib/soap/ecc/mapper/po-mapper.ts26
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++;