diff options
Diffstat (limited to 'lib/soap/ecc')
| -rw-r--r-- | lib/soap/ecc/send/create-po.ts | 49 |
1 files changed, 7 insertions, 42 deletions
diff --git a/lib/soap/ecc/send/create-po.ts b/lib/soap/ecc/send/create-po.ts index 0984a208..1e21d39c 100644 --- a/lib/soap/ecc/send/create-po.ts +++ b/lib/soap/ecc/send/create-po.ts @@ -44,23 +44,11 @@ export interface POItemData { EBELP?: string; // Series PO Item Seq } -// PR 반환 데이터 타입 -export interface PRReturnData { - ANFNR: string; // PR Request Number (M) - ANFPS: string; // Item Number of PR Request (M) - EBELN: string; // Purchase Requisition Number (M) - EBELP: string; // Item Number of Purchase Requisition (M) - MSGTY: string; // Message Type (M) - MSGTXT?: string; // Message Text -} - // PO 생성 요청 데이터 타입 +// 참고: T_PR_RETURN, EV_ERDAT, EV_ERZET는 응답용 필드이므로 요청에 포함하지 않음 export interface POCreateRequest { T_Bidding_HEADER: POHeaderData[]; T_Bidding_ITEM: POItemData[]; - T_PR_RETURN: PRReturnData[]; - EV_ERDAT?: string; // Extract Date - EV_ERZET?: string; // Extract Time } @@ -72,10 +60,8 @@ function createPOSoapBodyContent(poData: POCreateRequest): Record<string, unknow return { 'p1:MT_P2MM3015_S': { // WSDL에서 사용하는 p1 접두사 적용 'T_Bidding_HEADER': poData.T_Bidding_HEADER, - 'T_Bidding_ITEM': poData.T_Bidding_ITEM, - 'T_PR_RETURN': poData.T_PR_RETURN, - ...(poData.EV_ERDAT && { 'EV_ERDAT': poData.EV_ERDAT }), - ...(poData.EV_ERZET && { 'EV_ERZET': poData.EV_ERZET }) + 'T_Bidding_ITEM': poData.T_Bidding_ITEM + // T_PR_RETURN, EV_ERDAT, EV_ERZET는 응답용 필드이므로 요청에 포함하지 않음 } }; } @@ -112,19 +98,7 @@ function validatePOData(poData: POCreateRequest): { isValid: boolean; errors: st }); } - // PR 반환 데이터 검증 - if (!poData.T_PR_RETURN || poData.T_PR_RETURN.length === 0) { - errors.push('T_PR_RETURN은 필수입니다.'); - } else { - poData.T_PR_RETURN.forEach((prReturn, index) => { - const requiredFields = ['ANFNR', 'ANFPS', 'EBELN', 'EBELP', 'MSGTY']; - requiredFields.forEach(field => { - if (!prReturn[field as keyof PRReturnData]) { - errors.push(`T_PR_RETURN[${index}].${field}는 필수입니다.`); - } - }); - }); - } + // T_PR_RETURN은 응답용 필드이므로 검증하지 않음 return { isValid: errors.length === 0, @@ -165,7 +139,7 @@ async function sendPOToECC(poData: POCreateRequest): Promise<SoapSendResult> { }; console.log(`📤 PO 생성 요청 전송 시작 - ANFNR: ${poData.T_Bidding_HEADER[0]?.ANFNR}`); - console.log(`🔍 헤더 ${poData.T_Bidding_HEADER.length}개, 아이템 ${poData.T_Bidding_ITEM.length}개, PR 반환 ${poData.T_PR_RETURN.length}개`); + console.log(`🔍 헤더 ${poData.T_Bidding_HEADER.length}개, 아이템 ${poData.T_Bidding_ITEM.length}개`); // SOAP XML 전송 const result = await sendSoapXml(config, logInfo); @@ -341,17 +315,8 @@ export async function createTestPurchaseOrder(): Promise<{ LFDAT: getCurrentSAPDate(), ZCON_NO_PO: 'CON001', EBELP: '00001' - }], - T_PR_RETURN: [{ - ANFNR: 'TEST001', - ANFPS: '00001', - EBELN: 'PR001', - EBELP: '00001', - MSGTY: 'S', - MSGTXT: 'Test message' - }], - EV_ERDAT: getCurrentSAPDate(), - EV_ERZET: getCurrentSAPTime() + }] + // T_PR_RETURN, EV_ERDAT, EV_ERZET는 응답용 필드이므로 요청에 포함하지 않음 }; const result = await sendPOToECC(testPOData); |
