diff options
| author | joonhoekim <26rote@gmail.com> | 2025-06-27 01:25:48 +0000 |
|---|---|---|
| committer | joonhoekim <26rote@gmail.com> | 2025-06-27 01:25:48 +0000 |
| commit | 15b2d4ff61d0339385edd8cc67bf7579fcc2af08 (patch) | |
| tree | f0c36724855abccf705a9cdcae6fa3efd54d996d | |
| parent | e9897d416b3e7327bbd4d4aef887eee37751ae82 (diff) | |
(김준회) MDG SOAP 수신 유틸리티 및 API 엔드포인트, 스키마
34 files changed, 7302 insertions, 2948 deletions
diff --git a/.env.development b/.env.development index 7956a626..8d5b04b8 100644 --- a/.env.development +++ b/.env.development @@ -11,9 +11,9 @@ Email_From_Address=dujin.kim@dtsolution.co.kr NEXT_PUBLIC_MUI_KEY=da30586e1f20b93856a9783012fc9258Tz04ODI0MyxFPTE3NDQ0NTM2NzgwMDAsUz1wcmVtaXVtLExNPXN1YnNjcmlwdGlvbixLVj0y - NEXT_PUBLIC_URL=http://43.203.251.114:3000 - NEXT_PUBLIC_BASE_URL=http://43.203.251.114:3001 - NEXTAUTH_URL=http://43.203.251.114:3000 +NEXT_PUBLIC_URL=http://43.203.251.114:3000 +NEXT_PUBLIC_BASE_URL=http://43.203.251.114:3001 +NEXTAUTH_URL=http://43.203.251.114:3000 # PDFTRON KEYS @@ -113,4 +113,8 @@ JhfSaP92jIx0QQ+W1IrSKAiBxv+WtItsaWFLgYGIYNvrX8+qOnd+rDBvKDP9kk9Z qs1mHF2CbPRmao7/iEfhTb92hCgpFqsj/zU7nV3a8RbyifEMKSXTNanOEK2nTxAj ld/csXQayHSaaqoH/lVySK0Qp6A2d2u2gEj/TAQ+Bhe7BsexNs2s5u5rykJqeROq J7n0UsGgLd+uUDeo2nLqq5KeaXNcmACVcy2AASog78dzKwQmmGuC9Rp3zIoKOGdo -QwIDAQAB"
\ No newline at end of file +QwIDAQAB" + +# === SOAP 인터페이스 설정 === +SOAP_LOG_MAX_RECORDS=500 +# === SOAP 인터페이스 설정 ===
\ No newline at end of file diff --git a/.env.production b/.env.production index 69f133ac..47f80e16 100644 --- a/.env.production +++ b/.env.production @@ -62,6 +62,18 @@ DOLCE_DOC_DETAIL_API_URL=http://60.100.99.217:1111/Services/VDCSWebService.svc/D DOLCE_FILE_INFO_API_URL=http://60.100.99.217:1111/Services/VDCSWebService.svc/FileInfoList +### S-GIPS ### +S_GIPS_URL="http://qa.shi-api.com/evcp/Common/verifySgipsUser" +S_GIPS_TOKEN="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJrZXlhdXRoLWV2Y3AiLCJuYmYiOjE3NDg2MTcyMDAsImV4cCI6MTc1NjYyNzIwMH0.RBI7mPXNel6T_c4qDiD4QALHnS6scZLZqQKiv4V_KAw" +S_GIPS_RSA_KEY="MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtHC28Gw0U8taUwI8oJtG +1H2JWGJtcsDw8w1oZbs759/Rag7zCF/bBilRtvlOz92wt02RCONetWK9VMgR2cqT +JhfSaP92jIx0QQ+W1IrSKAiBxv+WtItsaWFLgYGIYNvrX8+qOnd+rDBvKDP9kk9Z +qs1mHF2CbPRmao7/iEfhTb92hCgpFqsj/zU7nV3a8RbyifEMKSXTNanOEK2nTxAj +ld/csXQayHSaaqoH/lVySK0Qp6A2d2u2gEj/TAQ+Bhe7BsexNs2s5u5rykJqeROq +J7n0UsGgLd+uUDeo2nLqq5KeaXNcmACVcy2AASog78dzKwQmmGuC9Rp3zIoKOGdo +QwIDAQAB" +### S-GIPS ### + OCR_SECRET_KEY=QVZzbkFtVFV1UWl2THNCY01lYVVGUUxpWmdyUkxHYVA= @@ -109,4 +121,8 @@ JhfSaP92jIx0QQ+W1IrSKAiBxv+WtItsaWFLgYGIYNvrX8+qOnd+rDBvKDP9kk9Z qs1mHF2CbPRmao7/iEfhTb92hCgpFqsj/zU7nV3a8RbyifEMKSXTNanOEK2nTxAj ld/csXQayHSaaqoH/lVySK0Qp6A2d2u2gEj/TAQ+Bhe7BsexNs2s5u5rykJqeROq J7n0UsGgLd+uUDeo2nLqq5KeaXNcmACVcy2AASog78dzKwQmmGuC9Rp3zIoKOGdo -QwIDAQAB"
\ No newline at end of file +QwIDAQAB" + +# === SOAP 인터페이스 설정 === +SOAP_LOG_MAX_RECORDS=500 +# === SOAP 인터페이스 설정 ===
\ No newline at end of file diff --git a/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_CUSTOMER_MASTER/route.ts b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_CUSTOMER_MASTER/route.ts new file mode 100644 index 00000000..2c9df21d --- /dev/null +++ b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_CUSTOMER_MASTER/route.ts @@ -0,0 +1,344 @@ +import { NextRequest } from "next/server"; +import db from "@/db/db"; +import { + CUSTOMER_MASTER_BP_HEADER, + CUSTOMER_MASTER_BP_HEADER_ADDRESS, + CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_EMAIL, + CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_FAX, + CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_POSTAL, + CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_TEL, + CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_URL, + CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN, + CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZCOMPANY, + CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZSALES, + CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZSALES_ZCPFN, + CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZTAXIND, + CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZVATREG, + CUSTOMER_MASTER_BP_HEADER_BP_TAXNUM +} from "@/db/schema/MDG/mdg"; +import { + ToXMLFields, + serveWsdl, + createXMLParser, + extractRequestData, + convertXMLToDBData, + processNestedArray, + createErrorResponse, + createSuccessResponse, + replaceSubTableData, + withSoapLogging +} from "../utils"; + +// 스키마에서 직접 타입 추론 +type BpHeaderData = typeof CUSTOMER_MASTER_BP_HEADER.$inferInsert; +type AddressData = typeof CUSTOMER_MASTER_BP_HEADER_ADDRESS.$inferInsert; +type AdEmailData = typeof CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_EMAIL.$inferInsert; +type AdFaxData = typeof CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_FAX.$inferInsert; +type AdPostalData = typeof CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_POSTAL.$inferInsert; +type AdTelData = typeof CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_TEL.$inferInsert; +type AdUrlData = typeof CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_URL.$inferInsert; +type BpCusgenData = typeof CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN.$inferInsert; +type ZcompanyData = typeof CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZCOMPANY.$inferInsert; +type ZsalesData = typeof CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZSALES.$inferInsert; +type ZcpfnData = typeof CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZSALES_ZCPFN.$inferInsert; +type ZtaxindData = typeof CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZTAXIND.$inferInsert; +type ZvatregData = typeof CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZVATREG.$inferInsert; +type BpTaxnumData = typeof CUSTOMER_MASTER_BP_HEADER_BP_TAXNUM.$inferInsert; + +// XML 구조 타입 +type BpHeaderXML = ToXMLFields<Omit<BpHeaderData, 'id' | 'createdAt' | 'updatedAt'>> & { + ADDRESS?: AddressXML[]; + BP_TAXNUM?: BpTaxnumXML[]; + BP_CUSGEN?: BpCusgenXML[]; +}; + +type AddressXML = ToXMLFields<Omit<AddressData, 'id' | 'createdAt' | 'updatedAt' | 'BP_HEADER'>> & { + AD_EMAIL?: AdEmailXML[]; + AD_FAX?: AdFaxXML[]; + AD_POSTAL?: AdPostalXML[]; + AD_TEL?: AdTelXML[]; + AD_URL?: AdUrlXML[]; +}; + +type AdEmailXML = ToXMLFields<Omit<AdEmailData, 'id' | 'createdAt' | 'updatedAt' | 'BP_HEADER'>>; +type AdFaxXML = ToXMLFields<Omit<AdFaxData, 'id' | 'createdAt' | 'updatedAt' | 'BP_HEADER'>>; +type AdPostalXML = ToXMLFields<Omit<AdPostalData, 'id' | 'createdAt' | 'updatedAt' | 'BP_HEADER'>>; +type AdTelXML = ToXMLFields<Omit<AdTelData, 'id' | 'createdAt' | 'updatedAt' | 'BP_HEADER'>>; +type AdUrlXML = ToXMLFields<Omit<AdUrlData, 'id' | 'createdAt' | 'updatedAt' | 'BP_HEADER'>>; + +type BpCusgenXML = ToXMLFields<Omit<BpCusgenData, 'id' | 'createdAt' | 'updatedAt' | 'BP_HEADER'>> & { + ZVATREG?: ZvatregXML[]; + ZTAXIND?: ZtaxindXML[]; + ZCOMPANY?: ZcompanyXML[]; + ZSALES?: ZsalesXML[]; +}; + +type ZvatregXML = ToXMLFields<Omit<ZvatregData, 'id' | 'createdAt' | 'updatedAt' | 'BP_HEADER'>>; +type ZtaxindXML = ToXMLFields<Omit<ZtaxindData, 'id' | 'createdAt' | 'updatedAt' | 'BP_HEADER'>>; +type ZcompanyXML = ToXMLFields<Omit<ZcompanyData, 'id' | 'createdAt' | 'updatedAt' | 'BP_HEADER'>>; + +type ZsalesXML = ToXMLFields<Omit<ZsalesData, 'id' | 'createdAt' | 'updatedAt' | 'BP_HEADER'>> & { + ZCPFN?: ZcpfnXML[]; +}; + +type ZcpfnXML = ToXMLFields<Omit<ZcpfnData, 'id' | 'createdAt' | 'updatedAt' | 'BP_HEADER'>>; +type BpTaxnumXML = ToXMLFields<Omit<BpTaxnumData, 'id' | 'createdAt' | 'updatedAt' | 'BP_HEADER'>>; + +// 처리된 데이터 구조 +interface ProcessedCustomerData { + bpHeader: BpHeaderData; + addresses: AddressData[]; + adEmails: AdEmailData[]; + adFaxes: AdFaxData[]; + adPostals: AdPostalData[]; + adTels: AdTelData[]; + adUrls: AdUrlData[]; + bpCusgens: BpCusgenData[]; + zvatregs: ZvatregData[]; + ztaxinds: ZtaxindData[]; + zcompanies: ZcompanyData[]; + zsales: ZsalesData[]; + zcpfns: ZcpfnData[]; + bpTaxnums: BpTaxnumData[]; +} + +export async function GET(request: NextRequest) { + const url = new URL(request.url); + if (url.searchParams.has('wsdl')) { + return serveWsdl('IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl'); + } + + return new Response('Method Not Allowed', { status: 405 }); +} + +export async function POST(request: NextRequest) { + const url = new URL(request.url); + if (url.searchParams.has('wsdl')) { + return serveWsdl('IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl'); + } + + const body = await request.text(); + + // SOAP 로깅 래퍼 함수 사용 + return withSoapLogging( + 'INBOUND', + 'S-ERP', + 'IF_MDZ_EVCP_CUSTOMER_MASTER', + body, + async () => { + console.log('🚀 CUSTOMER_MASTER 수신 시작, 데이터 길이:', body.length); + + const parser = createXMLParser([ + 'BP_HEADER', 'ADDRESS', 'AD_EMAIL', 'AD_FAX', 'AD_POSTAL', 'AD_TEL', 'AD_URL', + 'BP_CUSGEN', 'ZVATREG', 'ZTAXIND', 'ZCOMPANY', 'ZSALES', 'ZCPFN', 'BP_TAXNUM' + ]); + + const parsedData = parser.parse(body); + console.log('XML root keys:', Object.keys(parsedData)); + + const requestData = extractRequestData(parsedData, 'IF_MDZ_EVCP_CUSTOMER_MASTERReq'); + + if (!requestData) { + console.error('Could not find valid request data in the received payload'); + console.error('Received XML structure:', JSON.stringify(parsedData, null, 2)); + throw new Error('Missing request data - could not find IF_MDZ_EVCP_CUSTOMER_MASTERReq or BP_HEADER data'); + } + + console.log('Validating request data structure:', + `BP_HEADER: ${requestData.BP_HEADER ? 'found' : 'not found'}` + ); + + if (requestData.BP_HEADER && Array.isArray(requestData.BP_HEADER) && requestData.BP_HEADER.length > 0) { + console.log('First BP_HEADER sample:', JSON.stringify(requestData.BP_HEADER[0], null, 2)); + } + + // XML 데이터를 DB 삽입 가능한 형태로 변환 + const processedCustomers = transformCustomerData(requestData.BP_HEADER as BpHeaderXML[] || []); + + // 필수 필드 검증 + for (const customerData of processedCustomers) { + if (!customerData.bpHeader.BP_HEADER) { + throw new Error('Missing required field: BP_HEADER in customer'); + } + } + + // 데이터베이스 저장 + await saveToDatabase(processedCustomers); + + console.log(`🎉 처리 완료: ${processedCustomers.length}개 고객 데이터`); + + return createSuccessResponse('http://60.101.108.100/api/IF_MDZ_EVCP_CUSTOMER_MASTER/'); + } + ).catch(error => { + // withSoapLogging에서 이미 에러 로그를 처리하므로, 여기서는 응답만 생성 + return createErrorResponse(error); + }); +} + +// XML 데이터를 DB 삽입 가능한 형태로 변환 +function transformCustomerData(bpHeaderData: BpHeaderXML[]): ProcessedCustomerData[] { + if (!bpHeaderData || !Array.isArray(bpHeaderData)) { + return []; + } + + return bpHeaderData.map(bpHeader => { + const bpHeaderKey = bpHeader.BP_HEADER || ''; + const fkData = { BP_HEADER: bpHeaderKey }; + + // 1단계: BP_HEADER (루트) + const bpHeaderConverted = convertXMLToDBData<BpHeaderData>( + bpHeader as Record<string, string | undefined>, + ['BP_HEADER'], + fkData + ); + + // 2단계: ADDRESS와 직속 하위들 + const addresses = processNestedArray( + bpHeader.ADDRESS, + (addr) => convertXMLToDBData<AddressData>(addr as Record<string, string | undefined>, ['ADDRNO'], fkData), + fkData + ); + + // ADDRESS의 하위 테이블들 (3단계) + const adEmails = bpHeader.ADDRESS?.flatMap(addr => + processNestedArray(addr.AD_EMAIL, (item) => + convertXMLToDBData<AdEmailData>(item as Record<string, string | undefined>, ['CONSNUMBER', 'DATE_FROM'], fkData), fkData) + ) || []; + + const adFaxes = bpHeader.ADDRESS?.flatMap(addr => + processNestedArray(addr.AD_FAX, (item) => + convertXMLToDBData<AdFaxData>(item as Record<string, string | undefined>, ['CONSNUMBER', 'DATE_FROM'], fkData), fkData) + ) || []; + + const adPostals = bpHeader.ADDRESS?.flatMap(addr => + processNestedArray(addr.AD_POSTAL, (item) => + convertXMLToDBData<AdPostalData>(item as Record<string, string | undefined>, ['NATION'], fkData), fkData) + ) || []; + + const adTels = bpHeader.ADDRESS?.flatMap(addr => + processNestedArray(addr.AD_TEL, (item) => + convertXMLToDBData<AdTelData>(item as Record<string, string | undefined>, ['CONSNUMBER', 'DATE_FROM'], fkData), fkData) + ) || []; + + const adUrls = bpHeader.ADDRESS?.flatMap(addr => + processNestedArray(addr.AD_URL, (item) => + convertXMLToDBData<AdUrlData>(item as Record<string, string | undefined>, ['CONSNUMBER', 'DATE_FROM'], fkData), fkData) + ) || []; + + // 2단계: BP_TAXNUM + const bpTaxnums = processNestedArray( + bpHeader.BP_TAXNUM, + (item) => convertXMLToDBData<BpTaxnumData>(item as Record<string, string | undefined>, ['TAXTYPE'], fkData), + fkData + ); + + // 2단계: BP_CUSGEN과 하위들 + const bpCusgens = processNestedArray( + bpHeader.BP_CUSGEN, + (cusgen) => convertXMLToDBData<BpCusgenData>(cusgen as Record<string, string | undefined>, ['KUNNR'], fkData), + fkData + ); + + // BP_CUSGEN의 하위 테이블들 (3단계) + const zvatregs = bpHeader.BP_CUSGEN?.flatMap(cusgen => + processNestedArray(cusgen.ZVATREG, (item) => + convertXMLToDBData<ZvatregData>(item as Record<string, string | undefined>, ['LAND1'], fkData), fkData) + ) || []; + + const ztaxinds = bpHeader.BP_CUSGEN?.flatMap(cusgen => + processNestedArray(cusgen.ZTAXIND, (item) => + convertXMLToDBData<ZtaxindData>(item as Record<string, string | undefined>, ['ALAND', 'TATYP'], fkData), fkData) + ) || []; + + const zcompanies = bpHeader.BP_CUSGEN?.flatMap(cusgen => + processNestedArray(cusgen.ZCOMPANY, (item) => + convertXMLToDBData<ZcompanyData>(item as Record<string, string | undefined>, ['BUKRS'], fkData), fkData) + ) || []; + + const zsales = bpHeader.BP_CUSGEN?.flatMap(cusgen => + processNestedArray(cusgen.ZSALES, (item) => + convertXMLToDBData<ZsalesData>(item as Record<string, string | undefined>, ['VKORG', 'VTWEG', 'SPART'], fkData), fkData) + ) || []; + + // ZSALES의 하위 테이블 (4단계) + const zcpfns = bpHeader.BP_CUSGEN?.flatMap(cusgen => + cusgen.ZSALES?.flatMap(sales => + processNestedArray(sales.ZCPFN, (item) => + convertXMLToDBData<ZcpfnData>(item as Record<string, string | undefined>, ['PARVW', 'PARZA'], fkData), fkData) + ) || [] + ) || []; + + return { + bpHeader: bpHeaderConverted, + addresses, + adEmails, + adFaxes, + adPostals, + adTels, + adUrls, + bpCusgens, + zvatregs, + ztaxinds, + zcompanies, + zsales, + zcpfns, + bpTaxnums + }; + }); +} + +// 데이터베이스 저장 함수 +async function saveToDatabase(processedCustomers: ProcessedCustomerData[]) { + console.log(`데이터베이스 저장 시작: ${processedCustomers.length}개 고객 데이터`); + + try { + await db.transaction(async (tx) => { + for (const customerData of processedCustomers) { + const { bpHeader, addresses, adEmails, adFaxes, adPostals, adTels, adUrls, + bpCusgens, zvatregs, ztaxinds, zcompanies, zsales, zcpfns, bpTaxnums } = customerData; + + if (!bpHeader.BP_HEADER) { + console.warn('BP_HEADER가 없는 항목 발견, 건너뜁니다.'); + continue; + } + + // 1. BP_HEADER 테이블 Upsert (최상위 테이블) + await tx.insert(CUSTOMER_MASTER_BP_HEADER) + .values(bpHeader) + .onConflictDoUpdate({ + target: CUSTOMER_MASTER_BP_HEADER.BP_HEADER, + set: { + ...bpHeader, + updatedAt: new Date(), + } + }); + + // 2. 하위 테이블들 처리 - FK 기준으로 전체 삭제 후 재삽입 + await Promise.all([ + // 2단계 테이블들 + replaceSubTableData(tx, CUSTOMER_MASTER_BP_HEADER_ADDRESS, addresses, 'BP_HEADER', bpHeader.BP_HEADER), + replaceSubTableData(tx, CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN, bpCusgens, 'BP_HEADER', bpHeader.BP_HEADER), + replaceSubTableData(tx, CUSTOMER_MASTER_BP_HEADER_BP_TAXNUM, bpTaxnums, 'BP_HEADER', bpHeader.BP_HEADER), + + // 3-4단계 테이블들 + replaceSubTableData(tx, CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_EMAIL, adEmails, 'BP_HEADER', bpHeader.BP_HEADER), + replaceSubTableData(tx, CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_FAX, adFaxes, 'BP_HEADER', bpHeader.BP_HEADER), + replaceSubTableData(tx, CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_POSTAL, adPostals, 'BP_HEADER', bpHeader.BP_HEADER), + replaceSubTableData(tx, CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_TEL, adTels, 'BP_HEADER', bpHeader.BP_HEADER), + replaceSubTableData(tx, CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_URL, adUrls, 'BP_HEADER', bpHeader.BP_HEADER), + replaceSubTableData(tx, CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZVATREG, zvatregs, 'BP_HEADER', bpHeader.BP_HEADER), + replaceSubTableData(tx, CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZTAXIND, ztaxinds, 'BP_HEADER', bpHeader.BP_HEADER), + replaceSubTableData(tx, CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZCOMPANY, zcompanies, 'BP_HEADER', bpHeader.BP_HEADER), + replaceSubTableData(tx, CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZSALES, zsales, 'BP_HEADER', bpHeader.BP_HEADER), + replaceSubTableData(tx, CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZSALES_ZCPFN, zcpfns, 'BP_HEADER', bpHeader.BP_HEADER), + ]); + } + }); + + console.log(`✅ 데이터베이스 저장 완료: ${processedCustomers.length}개 고객`); + return true; + } catch (error) { + console.error('❌ 데이터베이스 저장 중 오류 발생:', error); + throw error; + } +} diff --git a/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_DEPARTMENT_CODE/route.ts b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_DEPARTMENT_CODE/route.ts new file mode 100644 index 00000000..5d407e1f --- /dev/null +++ b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_DEPARTMENT_CODE/route.ts @@ -0,0 +1,235 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import { NextRequest } from "next/server"; +import db from "@/db/db"; +import { + DEPARTMENT_CODE_CMCTB_DEPT_MDG, + DEPARTMENT_CODE_CMCTB_DEPT_MDG_COMPNM, + DEPARTMENT_CODE_CMCTB_DEPT_MDG_CORPNM, + DEPARTMENT_CODE_CMCTB_DEPT_MDG_DEPTNM +} from "@/db/schema/MDG/mdg"; +import { + ToXMLFields, + serveWsdl, + createXMLParser, + extractRequestData, + convertXMLToDBData, + processNestedArray, + createErrorResponse, + createSuccessResponse, + replaceSubTableData, + withSoapLogging +} from "../utils"; + +// 스키마에서 직접 타입 추론 +type DeptData = typeof DEPARTMENT_CODE_CMCTB_DEPT_MDG.$inferInsert; +type CompnmData = typeof DEPARTMENT_CODE_CMCTB_DEPT_MDG_COMPNM.$inferInsert; +type CorpnmData = typeof DEPARTMENT_CODE_CMCTB_DEPT_MDG_CORPNM.$inferInsert; +type DeptnmData = typeof DEPARTMENT_CODE_CMCTB_DEPT_MDG_DEPTNM.$inferInsert; + +// XML에서 받는 데이터 구조 +type DeptXML = ToXMLFields<Omit<DeptData, 'id' | 'createdAt' | 'updatedAt'>> & { + DEPTNM?: DeptnmXML[]; + COMPNM?: CompnmXML[]; + CORPNM?: CorpnmXML[]; +}; + +type DeptnmXML = ToXMLFields<Omit<DeptnmData, 'id' | 'createdAt' | 'updatedAt'>>; +type CompnmXML = ToXMLFields<Omit<CompnmData, 'id' | 'createdAt' | 'updatedAt'>>; +type CorpnmXML = ToXMLFields<Omit<CorpnmData, 'id' | 'createdAt' | 'updatedAt'>>; + +// 처리된 데이터 구조 +interface ProcessedDepartmentData { + dept: DeptData; + deptnms: DeptnmData[]; + compnms: CompnmData[]; + corpnms: CorpnmData[]; +} + +export async function GET(request: NextRequest) { + const url = new URL(request.url); + if (url.searchParams.has('wsdl')) { + return serveWsdl('IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl'); + } + + return new Response('Method Not Allowed', { status: 405 }); +} + +export async function POST(request: NextRequest) { + const url = new URL(request.url); + if (url.searchParams.has('wsdl')) { + return serveWsdl('IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl'); + } + + const body = await request.text(); + + return withSoapLogging( + 'INBOUND', + 'S-ERP', + 'IF_MDZ_EVCP_DEPARTMENT_CODE', + body, + async () => { + console.log('Request Body 일부:', body.substring(0, 200) + (body.length > 200 ? '...' : '')); + + const parser = createXMLParser(['CMCTB_DEPT_MDG', 'DEPTNM', 'COMPNM', 'CORPNM']); + const parsedData = parser.parse(body); + console.log('XML root keys:', Object.keys(parsedData)); + + const requestData = extractRequestData(parsedData, 'IF_MDZ_EVCP_DEPARTMENT_CODEReq'); + + if (!requestData) { + console.error('Could not find valid request data in the received payload'); + console.error('Received XML structure:', JSON.stringify(parsedData, null, 2)); + throw new Error('Missing request data - could not find IF_MDZ_EVCP_DEPARTMENT_CODEReq or CMCTB_DEPT_MDG data'); + } + + console.log('Validating request data structure:', + `CMCTB_DEPT_MDG: ${requestData.CMCTB_DEPT_MDG ? 'found' : 'not found'}` + ); + + if (requestData.CMCTB_DEPT_MDG && Array.isArray(requestData.CMCTB_DEPT_MDG) && requestData.CMCTB_DEPT_MDG.length > 0) { + console.log('First CMCTB_DEPT_MDG sample:', JSON.stringify(requestData.CMCTB_DEPT_MDG[0], null, 2)); + } + + // XML 데이터를 DB 삽입 가능한 형태로 변환 + const processedDepts = transformDepartmentData(requestData.CMCTB_DEPT_MDG as DeptXML[] || []); + + // 필수 필드 검증 + for (const deptData of processedDepts) { + if (!deptData.dept.DEPTCD) { + throw new Error('Missing required field: DEPTCD in department'); + } + if (!deptData.dept.CORPCD) { + throw new Error('Missing required field: CORPCD in department'); + } + } + + // 데이터베이스 저장 + await saveToDatabase(processedDepts); + + console.log(`Processed ${processedDepts.length} departments`); + + return createSuccessResponse('http://60.101.108.100/api/IF_MDZ_EVCP_DEPARTMENT_CODE/'); + } + ).catch(error => { + return createErrorResponse(error); + }); +} + +// XML 데이터를 DB 삽입 가능한 형태로 변환 +function transformDepartmentData(deptData: DeptXML[]): ProcessedDepartmentData[] { + if (!deptData || !Array.isArray(deptData)) { + return []; + } + + return deptData.map(dept => { + // 메인 Department 데이터 변환 + const deptRecord = convertXMLToDBData<DeptData>( + dept as Record<string, string | undefined>, + ['DEPTCD', 'CORPCD'] + ); + + // 필수 필드 보정 + if (!deptRecord.DEPTCD) { + deptRecord.DEPTCD = ''; + } + if (!deptRecord.CORPCD) { + deptRecord.CORPCD = ''; + } + + // FK 데이터 준비 + const fkData = { DEPTCD: dept.DEPTCD || '' }; + + // DEPTNM 데이터 변환 + const deptnms = processNestedArray( + dept.DEPTNM, + (deptnm) => convertXMLToDBData<DeptnmData>(deptnm, ['SPRAS'], fkData), + fkData + ); + + // COMPNM 데이터 변환 + const compnms = processNestedArray( + dept.COMPNM, + (compnm) => convertXMLToDBData<CompnmData>(compnm, ['SPRAS'], fkData), + fkData + ); + + // CORPNM 데이터 변환 + const corpnms = processNestedArray( + dept.CORPNM, + (corpnm) => convertXMLToDBData<CorpnmData>(corpnm, ['SPRAS'], fkData), + fkData + ); + + return { + dept: deptRecord, + deptnms, + compnms, + corpnms + }; + }); +} + +// 데이터베이스 저장 함수 +async function saveToDatabase(processedDepts: ProcessedDepartmentData[]) { + console.log(`데이터베이스 저장 함수가 호출됨. ${processedDepts.length}개의 부서 데이터 수신.`); + + try { + await db.transaction(async (tx) => { + for (const deptData of processedDepts) { + const { dept, deptnms, compnms, corpnms } = deptData; + + if (!dept.DEPTCD) { + console.warn('부서코드(DEPTCD)가 없는 항목 발견, 건너뜁니다.'); + continue; + } + + // 1. Department 테이블 Upsert (최상위 테이블) + await tx.insert(DEPARTMENT_CODE_CMCTB_DEPT_MDG) + .values(dept) + .onConflictDoUpdate({ + target: DEPARTMENT_CODE_CMCTB_DEPT_MDG.DEPTCD, + set: { + ...dept, + updatedAt: new Date(), + } + }); + + // 2. 하위 테이블 데이터 처리 - FK 기준으로 전체 삭제 후 재삽입 + await Promise.all([ + // DEPTNM 테이블 처리 + replaceSubTableData( + tx, + DEPARTMENT_CODE_CMCTB_DEPT_MDG_DEPTNM, + deptnms, + 'DEPTCD', + dept.DEPTCD + ), + + // COMPNM 테이블 처리 + replaceSubTableData( + tx, + DEPARTMENT_CODE_CMCTB_DEPT_MDG_COMPNM, + compnms, + 'DEPTCD', + dept.DEPTCD + ), + + // CORPNM 테이블 처리 + replaceSubTableData( + tx, + DEPARTMENT_CODE_CMCTB_DEPT_MDG_CORPNM, + corpnms, + 'DEPTCD', + dept.DEPTCD + ) + ]); + } + }); + + console.log(`${processedDepts.length}개의 부서 데이터 처리 완료.`); + return true; + } catch (error) { + console.error('데이터베이스 저장 중 오류 발생:', error); + throw error; + } +} diff --git a/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_EMPLOYEE_MASTER/route.ts b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_EMPLOYEE_MASTER/route.ts new file mode 100644 index 00000000..39e9aa2f --- /dev/null +++ b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_EMPLOYEE_MASTER/route.ts @@ -0,0 +1,346 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +// EMPLOYEE_MASTER +import { NextRequest } from "next/server"; +import db from "@/db/db"; +import { + EMPLOYEE_MASTER_CMCTB_EMP_MDG, + EMPLOYEE_MASTER_CMCTB_EMP_MDG_BANM, + EMPLOYEE_MASTER_CMCTB_EMP_MDG_BINM, + EMPLOYEE_MASTER_CMCTB_EMP_MDG_COMPNM, + EMPLOYEE_MASTER_CMCTB_EMP_MDG_CORPNM, + EMPLOYEE_MASTER_CMCTB_EMP_MDG_COUNTRYNM, + EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTCODE, + EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTCODE_PCCDNM, + EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTNM, + EMPLOYEE_MASTER_CMCTB_EMP_MDG_DHJOBGDNM, + EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBDUTYNM, + EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBGRDNM, + EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBGRDTYPE, + EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBNM, + EMPLOYEE_MASTER_CMCTB_EMP_MDG_GNNM, + EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBDUTYNM, + EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBGRDNM, + EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBNM, + EMPLOYEE_MASTER_CMCTB_EMP_MDG_KTLNM, + EMPLOYEE_MASTER_CMCTB_EMP_MDG_OKTLNM, + EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGBICDNM, + EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGCOMPNM, + EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGCORPNM, + EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGDEPTNM, + EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGPDEPNM, + EMPLOYEE_MASTER_CMCTB_EMP_MDG_PDEPTNM +} from "@/db/schema/MDG/mdg"; +import { + ToXMLFields, + serveWsdl, + createXMLParser, + extractRequestData, + convertXMLToDBData, + processNestedArray, + createErrorResponse, + createSuccessResponse, + replaceSubTableData, + withSoapLogging +} from "../utils"; + +// 스키마에서 직접 타입 추론 +type EmpMdgData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG.$inferInsert; +type EmpBanmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_BANM.$inferInsert; +type EmpBinmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_BINM.$inferInsert; +type EmpCompnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_COMPNM.$inferInsert; +type EmpCorpnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_CORPNM.$inferInsert; +type EmpCountrynmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_COUNTRYNM.$inferInsert; +type EmpDeptcodeData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTCODE.$inferInsert; +type EmpDeptcodePccdnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTCODE_PCCDNM.$inferInsert; +type EmpDeptnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTNM.$inferInsert; +type EmpDhjobgdnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_DHJOBGDNM.$inferInsert; +type EmpGjobdutynmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBDUTYNM.$inferInsert; +type EmpGjobgrdnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBGRDNM.$inferInsert; +type EmpGjobgrdtypeData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBGRDTYPE.$inferInsert; +type EmpGjobnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBNM.$inferInsert; +type EmpGnnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_GNNM.$inferInsert; +type EmpJobdutynmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBDUTYNM.$inferInsert; +type EmpJobgrdnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBGRDNM.$inferInsert; +type EmpJobnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBNM.$inferInsert; +type EmpKtlnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_KTLNM.$inferInsert; +type EmpOktlnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_OKTLNM.$inferInsert; +type EmpOrgbicdnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGBICDNM.$inferInsert; +type EmpOrgcompnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGCOMPNM.$inferInsert; +type EmpOrgcorpnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGCORPNM.$inferInsert; +type EmpOrgdeptnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGDEPTNM.$inferInsert; +type EmpOrgpdepnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGPDEPNM.$inferInsert; +type EmpPdeptnmData = typeof EMPLOYEE_MASTER_CMCTB_EMP_MDG_PDEPTNM.$inferInsert; + +// XML 구조 타입 +type EmpMdgXML = ToXMLFields<Omit<EmpMdgData, 'id' | 'createdAt' | 'updatedAt'>> & { + BANM?: ToXMLFields<Omit<EmpBanmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[]; + BINM?: ToXMLFields<Omit<EmpBinmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[]; + COMPNM?: ToXMLFields<Omit<EmpCompnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[]; + CORPNM?: ToXMLFields<Omit<EmpCorpnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[]; + COUNTRYNM?: ToXMLFields<Omit<EmpCountrynmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[]; + DEPTCODE?: ToXMLFields<Omit<EmpDeptcodeData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[]; + DEPTCODE_PCCDNM?: ToXMLFields<Omit<EmpDeptcodePccdnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[]; + DEPTNM?: ToXMLFields<Omit<EmpDeptnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[]; + DHJOBGDNM?: ToXMLFields<Omit<EmpDhjobgdnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[]; + GJOBDUTYNM?: ToXMLFields<Omit<EmpGjobdutynmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[]; + GJOBGRDNM?: ToXMLFields<Omit<EmpGjobgrdnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[]; + GJOBGRDTYPE?: ToXMLFields<Omit<EmpGjobgrdtypeData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[]; + GJOBNM?: ToXMLFields<Omit<EmpGjobnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[]; + GNNM?: ToXMLFields<Omit<EmpGnnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[]; + JOBDUTYNM?: ToXMLFields<Omit<EmpJobdutynmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[]; + JOBGRDNM?: ToXMLFields<Omit<EmpJobgrdnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[]; + JOBNM?: ToXMLFields<Omit<EmpJobnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[]; + KTLNM?: ToXMLFields<Omit<EmpKtlnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[]; + OKTLNM?: ToXMLFields<Omit<EmpOktlnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[]; + ORGBICDNM?: ToXMLFields<Omit<EmpOrgbicdnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[]; + ORGCOMPNM?: ToXMLFields<Omit<EmpOrgcompnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[]; + ORGCORPNM?: ToXMLFields<Omit<EmpOrgcorpnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[]; + ORGDEPTNM?: ToXMLFields<Omit<EmpOrgdeptnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[]; + ORGPDEPNM?: ToXMLFields<Omit<EmpOrgpdepnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[]; + PDEPTNM?: ToXMLFields<Omit<EmpPdeptnmData, 'id' | 'createdAt' | 'updatedAt' | 'EMPID'>>[]; +}; + +// 처리된 데이터 구조 +interface ProcessedEmployeeData { + employee: EmpMdgData; + banm: EmpBanmData[]; + binm: EmpBinmData[]; + compnm: EmpCompnmData[]; + corpnm: EmpCorpnmData[]; + countrynm: EmpCountrynmData[]; + deptcode: EmpDeptcodeData[]; + deptcodePccdnm: EmpDeptcodePccdnmData[]; + deptnm: EmpDeptnmData[]; + dhjobgdnm: EmpDhjobgdnmData[]; + gjobdutynm: EmpGjobdutynmData[]; + gjobgrdnm: EmpGjobgrdnmData[]; + gjobgrdtype: EmpGjobgrdtypeData[]; + gjobnm: EmpGjobnmData[]; + gnnm: EmpGnnmData[]; + jobdutynm: EmpJobdutynmData[]; + jobgrdnm: EmpJobgrdnmData[]; + jobnm: EmpJobnmData[]; + ktlnm: EmpKtlnmData[]; + oktlnm: EmpOktlnmData[]; + orgbicdnm: EmpOrgbicdnmData[]; + orgcompnm: EmpOrgcompnmData[]; + orgcorpnm: EmpOrgcorpnmData[]; + orgdeptnm: EmpOrgdeptnmData[]; + orgpdepnm: EmpOrgpdepnmData[]; + pdeptnm: EmpPdeptnmData[]; +} + +export async function GET(request: NextRequest) { + const url = new URL(request.url); + if (url.searchParams.has('wsdl')) { + return serveWsdl('IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl'); + } + + return new Response('Method Not Allowed', { status: 405 }); +} + +export async function POST(request: NextRequest) { + const url = new URL(request.url); + if (url.searchParams.has('wsdl')) { + return serveWsdl('IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl'); + } + + const body = await request.text(); + + return withSoapLogging( + 'INBOUND', + 'S-ERP', + 'IF_MDZ_EVCP_EMPLOYEE_MASTER', + body, + async () => { + console.log('🚀 EMPLOYEE_MASTER 수신 시작, 데이터 길이:', body.length); + + const parser = createXMLParser([ + 'CMCTB_EMP_MDG', 'BANM', 'BINM', 'COMPNM', 'CORPNM', 'COUNTRYNM', 'DEPTCODE', + 'DEPTCODE_PCCDNM', 'DEPTNM', 'DHJOBGDNM', 'GJOBDUTYNM', 'GJOBGRDNM', 'GJOBGRDTYPE', + 'GJOBNM', 'GNNM', 'JOBDUTYNM', 'JOBGRDNM', 'JOBNM', 'KTLNM', 'OKTLNM', 'ORGBICDNM', + 'ORGCOMPNM', 'ORGCORPNM', 'ORGDEPTNM', 'ORGPDEPNM', 'PDEPTNM' + ]); + + const parsedData = parser.parse(body); + console.log('XML root keys:', Object.keys(parsedData)); + + const requestData = extractRequestData(parsedData, 'IF_MDZ_EVCP_EMPLOYEE_MASTERReq'); + + if (!requestData) { + console.error('Could not find valid request data in the received payload'); + console.error('Received XML structure:', JSON.stringify(parsedData, null, 2)); + throw new Error('Missing request data - could not find IF_MDZ_EVCP_EMPLOYEE_MASTERReq or CMCTB_EMP_MDG data'); + } + + console.log('Validating request data structure:', + `CMCTB_EMP_MDG: ${requestData.CMCTB_EMP_MDG ? 'found' : 'not found'}` + ); + + if (requestData.CMCTB_EMP_MDG && Array.isArray(requestData.CMCTB_EMP_MDG) && requestData.CMCTB_EMP_MDG.length > 0) { + console.log('First CMCTB_EMP_MDG sample:', JSON.stringify(requestData.CMCTB_EMP_MDG[0], null, 2)); + } + + // XML 데이터를 DB 삽입 가능한 형태로 변환 + const processedEmployees = transformEmployeeData(requestData.CMCTB_EMP_MDG as EmpMdgXML[] || []); + + // 필수 필드 검증 + for (const employeeData of processedEmployees) { + if (!employeeData.employee.EMPID) { + throw new Error('Missing required field: EMPID in employee'); + } + } + + // 데이터베이스 저장 + await saveToDatabase(processedEmployees); + + console.log(`🎉 처리 완료: ${processedEmployees.length}개 사원 데이터`); + + return createSuccessResponse('http://60.101.108.100/api/IF_MDZ_EVCP_EMPLOYEE_MASTER/'); + } + ).catch(error => { + return createErrorResponse(error); + }); +} + +// XML 데이터를 DB 삽입 가능한 형태로 변환 +function transformEmployeeData(empData: EmpMdgXML[]): ProcessedEmployeeData[] { + if (!empData || !Array.isArray(empData)) { + return []; + } + + return empData.map(emp => { + const empId = emp.EMPID || ''; + const fkData = { EMPID: empId }; + + // 메인 Employee 데이터 변환 + const employee = convertXMLToDBData<EmpMdgData>( + emp as Record<string, string | undefined>, + ['EMPID'], + fkData + ); + + // 하위 테이블 데이터 변환 + const banm = processNestedArray(emp.BANM, (item) => convertXMLToDBData<EmpBanmData>(item, ['SPRAS'], fkData), fkData); + const binm = processNestedArray(emp.BINM, (item) => convertXMLToDBData<EmpBinmData>(item, ['SPRAS'], fkData), fkData); + const compnm = processNestedArray(emp.COMPNM, (item) => convertXMLToDBData<EmpCompnmData>(item, ['SPRAS'], fkData), fkData); + const corpnm = processNestedArray(emp.CORPNM, (item) => convertXMLToDBData<EmpCorpnmData>(item, ['SPRAS'], fkData), fkData); + const countrynm = processNestedArray(emp.COUNTRYNM, (item) => convertXMLToDBData<EmpCountrynmData>(item, ['SPRAS'], fkData), fkData); + const deptcode = processNestedArray(emp.DEPTCODE, (item) => convertXMLToDBData<EmpDeptcodeData>(item, [], fkData), fkData); + const deptcodePccdnm = processNestedArray(emp.DEPTCODE_PCCDNM, (item) => convertXMLToDBData<EmpDeptcodePccdnmData>(item, [], fkData), fkData); + const deptnm = processNestedArray(emp.DEPTNM, (item) => convertXMLToDBData<EmpDeptnmData>(item, ['SPRAS'], fkData), fkData); + const dhjobgdnm = processNestedArray(emp.DHJOBGDNM, (item) => convertXMLToDBData<EmpDhjobgdnmData>(item, ['SPRAS'], fkData), fkData); + const gjobdutynm = processNestedArray(emp.GJOBDUTYNM, (item) => convertXMLToDBData<EmpGjobdutynmData>(item, ['SPRAS'], fkData), fkData); + const gjobgrdnm = processNestedArray(emp.GJOBGRDNM, (item) => convertXMLToDBData<EmpGjobgrdnmData>(item, ['SPRAS'], fkData), fkData); + const gjobgrdtype = processNestedArray(emp.GJOBGRDTYPE, (item) => convertXMLToDBData<EmpGjobgrdtypeData>(item, [], fkData), fkData); + const gjobnm = processNestedArray(emp.GJOBNM, (item) => convertXMLToDBData<EmpGjobnmData>(item, ['SPRAS'], fkData), fkData); + const gnnm = processNestedArray(emp.GNNM, (item) => convertXMLToDBData<EmpGnnmData>(item, ['SPRAS'], fkData), fkData); + const jobdutynm = processNestedArray(emp.JOBDUTYNM, (item) => convertXMLToDBData<EmpJobdutynmData>(item, ['SPRAS'], fkData), fkData); + const jobgrdnm = processNestedArray(emp.JOBGRDNM, (item) => convertXMLToDBData<EmpJobgrdnmData>(item, ['SPRAS'], fkData), fkData); + const jobnm = processNestedArray(emp.JOBNM, (item) => convertXMLToDBData<EmpJobnmData>(item, ['SPRAS'], fkData), fkData); + const ktlnm = processNestedArray(emp.KTLNM, (item) => convertXMLToDBData<EmpKtlnmData>(item, ['SPRAS'], fkData), fkData); + const oktlnm = processNestedArray(emp.OKTLNM, (item) => convertXMLToDBData<EmpOktlnmData>(item, ['SPRAS'], fkData), fkData); + const orgbicdnm = processNestedArray(emp.ORGBICDNM, (item) => convertXMLToDBData<EmpOrgbicdnmData>(item, ['SPRAS'], fkData), fkData); + const orgcompnm = processNestedArray(emp.ORGCOMPNM, (item) => convertXMLToDBData<EmpOrgcompnmData>(item, ['SPRAS'], fkData), fkData); + const orgcorpnm = processNestedArray(emp.ORGCORPNM, (item) => convertXMLToDBData<EmpOrgcorpnmData>(item, ['SPRAS'], fkData), fkData); + const orgdeptnm = processNestedArray(emp.ORGDEPTNM, (item) => convertXMLToDBData<EmpOrgdeptnmData>(item, ['SPRAS'], fkData), fkData); + const orgpdepnm = processNestedArray(emp.ORGPDEPNM, (item) => convertXMLToDBData<EmpOrgpdepnmData>(item, ['SPRAS'], fkData), fkData); + const pdeptnm = processNestedArray(emp.PDEPTNM, (item) => convertXMLToDBData<EmpPdeptnmData>(item, [], fkData), fkData); + + return { + employee, + banm, + binm, + compnm, + corpnm, + countrynm, + deptcode, + deptcodePccdnm, + deptnm, + dhjobgdnm, + gjobdutynm, + gjobgrdnm, + gjobgrdtype, + gjobnm, + gnnm, + jobdutynm, + jobgrdnm, + jobnm, + ktlnm, + oktlnm, + orgbicdnm, + orgcompnm, + orgcorpnm, + orgdeptnm, + orgpdepnm, + pdeptnm + }; + }); +} + +// 데이터베이스 저장 함수 +async function saveToDatabase(processedEmployees: ProcessedEmployeeData[]) { + console.log(`데이터베이스 저장 시작: ${processedEmployees.length}개 사원 데이터`); + + try { + await db.transaction(async (tx) => { + for (const employeeData of processedEmployees) { + const { employee, banm, binm, compnm, corpnm, countrynm, deptcode, deptcodePccdnm, + deptnm, dhjobgdnm, gjobdutynm, gjobgrdnm, gjobgrdtype, gjobnm, gnnm, + jobdutynm, jobgrdnm, jobnm, ktlnm, oktlnm, orgbicdnm, orgcompnm, + orgcorpnm, orgdeptnm, orgpdepnm, pdeptnm } = employeeData; + + if (!employee.EMPID) { + console.warn('사원번호(EMPID)가 없는 항목 발견, 건너뜁니다.'); + continue; + } + + // 1. CMCTB_EMP_MDG 테이블 Upsert (최상위 테이블) + await tx.insert(EMPLOYEE_MASTER_CMCTB_EMP_MDG) + .values(employee) + .onConflictDoUpdate({ + target: EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID, + set: { + ...employee, + updatedAt: new Date(), + } + }); + + // 2. 하위 테이블들 처리 - FK 기준으로 전체 삭제 후 재삽입 + await Promise.all([ + replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_BANM, banm, 'EMPID', employee.EMPID), + replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_BINM, binm, 'EMPID', employee.EMPID), + replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_COMPNM, compnm, 'EMPID', employee.EMPID), + replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_CORPNM, corpnm, 'EMPID', employee.EMPID), + replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_COUNTRYNM, countrynm, 'EMPID', employee.EMPID), + replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTCODE, deptcode, 'EMPID', employee.EMPID), + replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTCODE_PCCDNM, deptcodePccdnm, 'EMPID', employee.EMPID), + replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTNM, deptnm, 'EMPID', employee.EMPID), + replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_DHJOBGDNM, dhjobgdnm, 'EMPID', employee.EMPID), + replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBDUTYNM, gjobdutynm, 'EMPID', employee.EMPID), + replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBGRDNM, gjobgrdnm, 'EMPID', employee.EMPID), + replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBGRDTYPE, gjobgrdtype, 'EMPID', employee.EMPID), + replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBNM, gjobnm, 'EMPID', employee.EMPID), + replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_GNNM, gnnm, 'EMPID', employee.EMPID), + replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBDUTYNM, jobdutynm, 'EMPID', employee.EMPID), + replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBGRDNM, jobgrdnm, 'EMPID', employee.EMPID), + replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBNM, jobnm, 'EMPID', employee.EMPID), + replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_KTLNM, ktlnm, 'EMPID', employee.EMPID), + replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_OKTLNM, oktlnm, 'EMPID', employee.EMPID), + replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGBICDNM, orgbicdnm, 'EMPID', employee.EMPID), + replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGCOMPNM, orgcompnm, 'EMPID', employee.EMPID), + replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGCORPNM, orgcorpnm, 'EMPID', employee.EMPID), + replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGDEPTNM, orgdeptnm, 'EMPID', employee.EMPID), + replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGPDEPNM, orgpdepnm, 'EMPID', employee.EMPID), + replaceSubTableData(tx, EMPLOYEE_MASTER_CMCTB_EMP_MDG_PDEPTNM, pdeptnm, 'EMPID', employee.EMPID) + ]); + } + }); + + console.log(`✅ 데이터베이스 저장 완료: ${processedEmployees.length}개 사원`); + return true; + } catch (error) { + console.error('❌ 데이터베이스 저장 중 오류 발생:', error); + throw error; + } +}
\ No newline at end of file diff --git a/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER/route.ts b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER/route.ts new file mode 100644 index 00000000..a265fea2 --- /dev/null +++ b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER/route.ts @@ -0,0 +1,182 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import { NextRequest } from "next/server"; +import db from "@/db/db"; +import { + EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF, + EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF_NAME +} from "@/db/schema/MDG/mdg"; +import { + ToXMLFields, + serveWsdl, + createXMLParser, + extractRequestData, + convertXMLToDBData, + processNestedArray, + createErrorResponse, + createSuccessResponse, + replaceSubTableData, + withSoapLogging +} from "../utils"; + +// 스키마에서 직접 타입 추론 +type EmpRefData = typeof EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF.$inferInsert; +type EmpRefNameData = typeof EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF_NAME.$inferInsert; + +// XML에서 받는 데이터 구조 +type EmpRefXML = ToXMLFields<Omit<EmpRefData, 'id' | 'createdAt' | 'updatedAt'>> & { + NAME?: NameXML[]; +}; + +type NameXML = ToXMLFields<Omit<EmpRefNameData, 'id' | 'createdAt' | 'updatedAt'>>; + +// 처리된 데이터 구조 +interface ProcessedEmployeeReferenceData { + empRef: EmpRefData; + names: EmpRefNameData[]; +} + +export async function GET(request: NextRequest) { + const url = new URL(request.url); + if (url.searchParams.has('wsdl')) { + return serveWsdl('IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl'); + } + + return new Response('Method Not Allowed', { status: 405 }); +} + +export async function POST(request: NextRequest) { + const url = new URL(request.url); + if (url.searchParams.has('wsdl')) { + return serveWsdl('IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl'); + } + + const body = await request.text(); + + return withSoapLogging( + 'INBOUND', + 'S-ERP', + 'IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER', + body, + async () => { + console.log('Request Body 일부:', body.substring(0, 200) + (body.length > 200 ? '...' : '')); + + const parser = createXMLParser(['CMCTB_EMP_REF_MDG_IF', 'NAME']); + const parsedData = parser.parse(body); + console.log('XML root keys:', Object.keys(parsedData)); + + const requestData = extractRequestData(parsedData, 'IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTERReq'); + + if (!requestData) { + console.error('Could not find valid request data in the received payload'); + console.error('Received XML structure:', JSON.stringify(parsedData, null, 2)); + throw new Error('Missing request data - could not find IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTERReq or CMCTB_EMP_REF_MDG_IF data'); + } + + console.log('Validating request data structure:', + `CMCTB_EMP_REF_MDG_IF: ${requestData.CMCTB_EMP_REF_MDG_IF ? 'found' : 'not found'}` + ); + + if (requestData.CMCTB_EMP_REF_MDG_IF && Array.isArray(requestData.CMCTB_EMP_REF_MDG_IF) && requestData.CMCTB_EMP_REF_MDG_IF.length > 0) { + console.log('First CMCTB_EMP_REF_MDG_IF sample:', JSON.stringify(requestData.CMCTB_EMP_REF_MDG_IF[0], null, 2)); + } + + // XML 데이터를 DB 삽입 가능한 형태로 변환 + const processedEmpRefs = transformEmpRefData(requestData.CMCTB_EMP_REF_MDG_IF as EmpRefXML[] || []); + + // 필수 필드 검증 + for (const empRefData of processedEmpRefs) { + if (!empRefData.empRef.GRPCD) { + throw new Error('Missing required field: GRPCD in employee reference'); + } + } + + // 데이터베이스 저장 + await saveToDatabase(processedEmpRefs); + + console.log(`Processed ${processedEmpRefs.length} employee references`); + + return createSuccessResponse('http://60.101.108.100/api/IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER/'); + } + ).catch(error => { + return createErrorResponse(error); + }); +} + +// XML 데이터를 DB 삽입 가능한 형태로 변환 +function transformEmpRefData(empRefData: EmpRefXML[]): ProcessedEmployeeReferenceData[] { + if (!empRefData || !Array.isArray(empRefData)) { + return []; + } + + return empRefData.map(empRef => { + // 메인 Employee Reference 데이터 변환 + const empRefRecord = convertXMLToDBData<EmpRefData>( + empRef as Record<string, string | undefined>, + ['GRPCD', 'CORPCD', 'MAINCD'] + ); + + // 필수 필드 보정 + if (!empRefRecord.GRPCD) { + empRefRecord.GRPCD = ''; + } + + // FK 데이터 준비 + const fkData = { GRPCD: empRef.GRPCD || '' }; + + // Name 데이터 변환 + const names = processNestedArray( + empRef.NAME, + (name) => convertXMLToDBData<EmpRefNameData>(name, ['SPRAS'], fkData), + fkData + ); + + return { + empRef: empRefRecord, + names + }; + }); +} + +// 데이터베이스 저장 함수 +async function saveToDatabase(processedEmpRefs: ProcessedEmployeeReferenceData[]) { + console.log(`데이터베이스 저장 함수가 호출됨. ${processedEmpRefs.length}개의 직원 참조 데이터 수신.`); + + try { + await db.transaction(async (tx) => { + for (const empRefData of processedEmpRefs) { + const { empRef, names } = empRefData; + + if (!empRef.GRPCD) { + console.warn('그룹코드(GRPCD)가 없는 항목 발견, 건너뜁니다.'); + continue; + } + + // 1. Employee Reference 테이블 Upsert (최상위 테이블) + await tx.insert(EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF) + .values(empRef) + .onConflictDoUpdate({ + target: EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF.GRPCD, + set: { + ...empRef, + updatedAt: new Date(), + } + }); + + // 2. NAME 테이블 처리 - FK 기준으로 전체 삭제 후 재삽입 + await replaceSubTableData( + tx, + EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF_NAME, + names, + 'GRPCD', + empRef.GRPCD + ); + } + }); + + console.log(`${processedEmpRefs.length}개의 직원 참조 데이터 처리 완료.`); + return true; + } catch (error) { + console.error('데이터베이스 저장 중 오류 발생:', error); + throw error; + } +}
\ No newline at end of file diff --git a/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_EQUP_MASTER/route.ts b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_EQUP_MASTER/route.ts new file mode 100644 index 00000000..358e9c62 --- /dev/null +++ b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_EQUP_MASTER/route.ts @@ -0,0 +1,271 @@ +//equp_master +import { NextRequest } from "next/server"; +import db from "@/db/db"; +import { + EQUP_MASTER_MATL, + EQUP_MASTER_MATL_DESC, + EQUP_MASTER_MATL_PLNT, + EQUP_MASTER_MATL_UNIT, + EQUP_MASTER_MATL_CLASSASGN, + EQUP_MASTER_MATL_CHARASGN +} from "@/db/schema/MDG/mdg"; +import { + ToXMLFields, + serveWsdl, + createXMLParser, + extractRequestData, + convertXMLToDBData, + processNestedArray, + createErrorResponse, + createSuccessResponse, + replaceSubTableData, + withSoapLogging +} from "../utils"; + +// 스키마에서 직접 타입 추론 (Insert와 XML을 통합) +type MatlData = typeof EQUP_MASTER_MATL.$inferInsert; +type MatlDescData = typeof EQUP_MASTER_MATL_DESC.$inferInsert; +type MatlPlntData = typeof EQUP_MASTER_MATL_PLNT.$inferInsert; +type MatlUnitData = typeof EQUP_MASTER_MATL_UNIT.$inferInsert; +type MatlClassAsgnData = typeof EQUP_MASTER_MATL_CLASSASGN.$inferInsert; +type MatlCharAsgnData = typeof EQUP_MASTER_MATL_CHARASGN.$inferInsert; + +// XML에서 받는 데이터 구조 (스키마와 동일한 구조, string 타입) +type MatlXML = ToXMLFields<Omit<MatlData, 'id' | 'createdAt' | 'updatedAt'>> & { + DESC?: DescXML[]; + PLNT?: PlntXML[]; + UNIT?: UnitXML[]; + CLASSASGN?: ClassAsgnXML[]; + CHARASGN?: CharAsgnXML[]; +}; + +type DescXML = ToXMLFields<Omit<MatlDescData, 'id' | 'createdAt' | 'updatedAt'>>; +type PlntXML = ToXMLFields<Omit<MatlPlntData, 'id' | 'createdAt' | 'updatedAt'>>; +type UnitXML = ToXMLFields<Omit<MatlUnitData, 'id' | 'createdAt' | 'updatedAt'>>; +type ClassAsgnXML = ToXMLFields<Omit<MatlClassAsgnData, 'id' | 'createdAt' | 'updatedAt'>>; +type CharAsgnXML = ToXMLFields<Omit<MatlCharAsgnData, 'id' | 'createdAt' | 'updatedAt'>>; + +// 처리된 데이터 구조 (Insert와 동일) +interface ProcessedMaterialData { + material: MatlData; + descriptions: MatlDescData[]; + plants: MatlPlntData[]; + units: MatlUnitData[]; + classAssignments: MatlClassAsgnData[]; + characteristicAssignments: MatlCharAsgnData[]; +} + +export async function GET(request: NextRequest) { + const url = new URL(request.url); + if (url.searchParams.has('wsdl')) { + return serveWsdl('IF_MDZ_EVCP_EQUP_MASTER.wsdl'); + } + + return new Response('Method Not Allowed', { status: 405 }); +} + +export async function POST(request: NextRequest) { + const url = new URL(request.url); + if (url.searchParams.has('wsdl')) { + return serveWsdl('IF_MDZ_EVCP_EQUP_MASTER.wsdl'); + } + + const body = await request.text(); + + return withSoapLogging( + 'INBOUND', + 'S-ERP', + 'IF_MDZ_EVCP_EQUP_MASTER', + body, + async () => { + console.log('🚀 EQUP_MASTER 수신 시작, 데이터 길이:', body.length); + + const parser = createXMLParser(['MATL', 'DESC', 'PLNT', 'UNIT', 'CLASSASGN', 'CHARASGN']); + const parsedData = parser.parse(body); + console.log('XML root keys:', Object.keys(parsedData)); + + const requestData = extractRequestData(parsedData, 'IF_MDZ_EVCP_EQUP_MASTERReq'); + + if (!requestData) { + console.error('Could not find valid request data in the received payload'); + console.error('Received XML structure:', JSON.stringify(parsedData, null, 2)); + throw new Error('Missing request data - could not find IF_MDZ_EVCP_EQUP_MASTERReq or MATL data'); + } + + console.log('Validating request data structure:', + `MATL: ${requestData.MATL ? 'found' : 'not found'}` + ); + + if (requestData.MATL && Array.isArray(requestData.MATL) && requestData.MATL.length > 0) { + console.log('First MATL sample:', JSON.stringify(requestData.MATL[0], null, 2)); + } + + // XML 데이터를 DB 삽입 가능한 형태로 변환 + const processedMaterials = transformMatlData(requestData.MATL as MatlXML[] || []); + + // 필수 필드 검증 + for (const materialData of processedMaterials) { + if (!materialData.material.MATNR) { + throw new Error('Missing required field: MATNR in material'); + } + } + + // 데이터베이스 저장 + await saveToDatabase(processedMaterials); + + console.log(`🎉 처리 완료: ${processedMaterials.length}개 장비 자재 데이터`); + + return createSuccessResponse('http://60.101.108.100/api/IF_MDZ_EVCP_EQUP_MASTER/'); + } + ).catch(error => { + return createErrorResponse(error); + }); +} + +// XML 데이터를 DB 삽입 가능한 형태로 변환 +function transformMatlData(matlData: MatlXML[]): ProcessedMaterialData[] { + if (!matlData || !Array.isArray(matlData)) { + return []; + } + + return matlData.map(matl => { + // 메인 Material 데이터 변환 (자동) + const material = convertXMLToDBData<MatlData>( + matl as Record<string, string | undefined>, + ['MATNR'] + ); + + // 필수 필드 보정 (MATNR이 빈 문자열이면 안됨) + if (!material.MATNR) { + material.MATNR = ''; + } + + // FK 데이터 준비 + const fkData = { MATNR: matl.MATNR || '' }; + + // Description 데이터 변환 (자동) + const descriptions = processNestedArray( + matl.DESC, + (desc) => convertXMLToDBData<MatlDescData>(desc, ['MATNR'], fkData), + fkData + ); + + // Plant 데이터 변환 (자동) + const plants = processNestedArray( + matl.PLNT, + (plnt) => convertXMLToDBData<MatlPlntData>(plnt, ['MATNR'], fkData), + fkData + ); + + // Unit 데이터 변환 (자동) + const units = processNestedArray( + matl.UNIT, + (unit) => convertXMLToDBData<MatlUnitData>(unit, ['MATNR'], fkData), + fkData + ); + + // Class Assignment 데이터 변환 (자동) + const classAssignments = processNestedArray( + matl.CLASSASGN, + (cls) => convertXMLToDBData<MatlClassAsgnData>(cls, ['MATNR'], fkData), + fkData + ); + + // Characteristic Assignment 데이터 변환 (자동) + const characteristicAssignments = processNestedArray( + matl.CHARASGN, + (char) => convertXMLToDBData<MatlCharAsgnData>(char, ['MATNR'], fkData), + fkData + ); + + return { + material, + descriptions, + plants, + units, + classAssignments, + characteristicAssignments + }; + }); +} + +// 데이터베이스 저장 함수 +async function saveToDatabase(processedMaterials: ProcessedMaterialData[]) { + console.log(`Starting database save for ${processedMaterials.length} equipment materials`); + + await db.transaction(async (tx) => { + for (const materialData of processedMaterials) { + const { material, descriptions, plants, units, classAssignments, characteristicAssignments } = materialData; + + if (!material.MATNR) { + console.warn('Skipping material without MATNR'); + continue; + } + + console.log(`Processing MATNR: ${material.MATNR}`); + + // 1. MATL 테이블 Upsert (최상위 테이블) + await tx.insert(EQUP_MASTER_MATL) + .values(material) + .onConflictDoUpdate({ + target: EQUP_MASTER_MATL.MATNR, + set: { + ...material, + updatedAt: new Date(), + } + }); + + // 2. 하위 테이블 데이터 처리 - FK 기준으로 전체 삭제 후 재삽입 (병렬 처리) + await Promise.all([ + // DESC 테이블 처리 + replaceSubTableData( + tx, + EQUP_MASTER_MATL_DESC, + descriptions, + 'MATNR', + material.MATNR + ), + + // PLNT 테이블 처리 + replaceSubTableData( + tx, + EQUP_MASTER_MATL_PLNT, + plants, + 'MATNR', + material.MATNR + ), + + // UNIT 테이블 처리 + replaceSubTableData( + tx, + EQUP_MASTER_MATL_UNIT, + units, + 'MATNR', + material.MATNR + ), + + // CLASSASGN 테이블 처리 + replaceSubTableData( + tx, + EQUP_MASTER_MATL_CLASSASGN, + classAssignments, + 'MATNR', + material.MATNR + ), + + // CHARASGN 테이블 처리 + replaceSubTableData( + tx, + EQUP_MASTER_MATL_CHARASGN, + characteristicAssignments, + 'MATNR', + material.MATNR + ) + ]); + + console.log(`Successfully processed MATNR: ${material.MATNR}`); + } + }); + + console.log(`Database save completed for ${processedMaterials.length} equipment materials`); +}
\ No newline at end of file diff --git a/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_MATERIAL_MASTER_PART/route.ts b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_MATERIAL_MASTER_PART/route.ts new file mode 100644 index 00000000..3992d788 --- /dev/null +++ b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_MATERIAL_MASTER_PART/route.ts @@ -0,0 +1,274 @@ +import { NextRequest } from "next/server"; +import db from "@/db/db"; +import { + MATERIAL_MASTER_PART_MATL, + MATERIAL_MASTER_PART_MATL_DESC, + MATERIAL_MASTER_PART_MATL_PLNT, + MATERIAL_MASTER_PART_MATL_UNIT, + MATERIAL_MASTER_PART_MATL_CLASSASGN, + MATERIAL_MASTER_PART_MATL_CHARASGN +} from "@/db/schema/MDG/mdg"; + +import { + ToXMLFields, + SoapBodyData, + serveWsdl, + createXMLParser, + extractRequestData, + convertXMLToDBData, + processNestedArray, + createErrorResponse, + createSuccessResponse, + replaceSubTableData, + withSoapLogging +} from "../utils"; + +// 스키마에서 직접 타입 추론 (Insert와 XML을 통합) +type MatlData = typeof MATERIAL_MASTER_PART_MATL.$inferInsert; +type MatlDescData = typeof MATERIAL_MASTER_PART_MATL_DESC.$inferInsert; +type MatlPlntData = typeof MATERIAL_MASTER_PART_MATL_PLNT.$inferInsert; +type MatlUnitData = typeof MATERIAL_MASTER_PART_MATL_UNIT.$inferInsert; +type MatlClassAsgnData = typeof MATERIAL_MASTER_PART_MATL_CLASSASGN.$inferInsert; +type MatlCharAsgnData = typeof MATERIAL_MASTER_PART_MATL_CHARASGN.$inferInsert; + +// XML에서 받는 데이터 구조 (스키마와 동일한 구조, string 타입) +type MatlXML = ToXMLFields<Omit<MatlData, 'id' | 'createdAt' | 'updatedAt'>> & { + DESC?: DescXML[]; + PLNT?: PlntXML[]; + UNIT?: UnitXML[]; + CLASSASGN?: ClassAsgnXML[]; + CHARASGN?: CharAsgnXML[]; +}; + +type DescXML = ToXMLFields<Omit<MatlDescData, 'id' | 'createdAt' | 'updatedAt'>>; +type PlntXML = ToXMLFields<Omit<MatlPlntData, 'id' | 'createdAt' | 'updatedAt'>>; +type UnitXML = ToXMLFields<Omit<MatlUnitData, 'id' | 'createdAt' | 'updatedAt'>>; +type ClassAsgnXML = ToXMLFields<Omit<MatlClassAsgnData, 'id' | 'createdAt' | 'updatedAt'>>; +type CharAsgnXML = ToXMLFields<Omit<MatlCharAsgnData, 'id' | 'createdAt' | 'updatedAt'>>; + +// 처리된 데이터 구조 (Insert와 동일) +interface ProcessedMaterialData { + material: MatlData; + descriptions: MatlDescData[]; + plants: MatlPlntData[]; + units: MatlUnitData[]; + classAssignments: MatlClassAsgnData[]; + characteristicAssignments: MatlCharAsgnData[]; +} + +export async function GET(request: NextRequest) { + const url = new URL(request.url); + if (url.searchParams.has('wsdl')) { + return serveWsdl('IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl'); + } + + return new Response('Method Not Allowed', { status: 405 }); +} + +export async function POST(request: NextRequest) { + const url = new URL(request.url); + if (url.searchParams.has('wsdl')) { + return serveWsdl('IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl'); + } + + const body = await request.text(); + + return withSoapLogging( + 'INBOUND', + 'S-ERP', + 'IF_MDZ_EVCP_MATERIAL_MASTER_PART', + body, + async () => { + console.log('Request Body 일부:', body.substring(0, 200) + (body.length > 200 ? '...' : '')); + + const parser = createXMLParser(['MATL', 'DESC', 'PLNT', 'UNIT', 'CLASSASGN', 'CHARASGN']); + const parsedData = parser.parse(body); + console.log('XML root keys:', Object.keys(parsedData)); + + const requestData = extractRequestData(parsedData, 'IF_MDZ_EVCP_MATERIAL_MASTER_PARTReq'); + + if (!requestData) { + console.error('Could not find valid request data in the received payload'); + console.error('Received XML structure:', JSON.stringify(parsedData, null, 2)); + throw new Error('Missing request data - could not find IF_MDZ_EVCP_MATERIAL_MASTER_PARTReq or MATL data'); + } + + console.log('Validating request data structure:', + `MATL: ${requestData.MATL ? 'found' : 'not found'}` + ); + + if (requestData.MATL && Array.isArray(requestData.MATL) && requestData.MATL.length > 0) { + console.log('First MATL sample:', JSON.stringify(requestData.MATL[0], null, 2)); + } + + // XML 데이터를 DB 삽입 가능한 형태로 변환 + const processedMaterials = transformMatlData(requestData.MATL as MatlXML[] || []); + + // 필수 필드 검증 + for (const materialData of processedMaterials) { + if (!materialData.material.MATNR) { + throw new Error('Missing required field: MATNR in material'); + } + } + + // 데이터베이스 저장 + await saveToDatabase(processedMaterials); + + console.log(`Processed ${processedMaterials.length} materials`); + + return createSuccessResponse('http://60.101.108.100/api/IF_MDZ_EVCP_MATERIAL_MASTER_PART/'); + } + ).catch(error => { + return createErrorResponse(error); + }); +} + +// XML 데이터를 DB 삽입 가능한 형태로 변환 +function transformMatlData(matlData: MatlXML[]): ProcessedMaterialData[] { + if (!matlData || !Array.isArray(matlData)) { + return []; + } + + return matlData.map(matl => { + // 메인 Material 데이터 변환 (자동) + const material = convertXMLToDBData<MatlData>( + matl as Record<string, string | undefined>, + ['MATNR'] + ); + + // 필수 필드 보정 (MATNR이 빈 문자열이면 안됨) + if (!material.MATNR) { + material.MATNR = ''; + } + + // FK 데이터 준비 + const fkData = { MATNR: matl.MATNR || '' }; + + // Description 데이터 변환 (자동) + const descriptions = processNestedArray( + matl.DESC, + (desc) => convertXMLToDBData<MatlDescData>(desc, ['MATNR'], fkData), + fkData + ); + + // Plant 데이터 변환 (자동) + const plants = processNestedArray( + matl.PLNT, + (plnt) => convertXMLToDBData<MatlPlntData>(plnt, ['MATNR'], fkData), + fkData + ); + + // Unit 데이터 변환 (자동) + const units = processNestedArray( + matl.UNIT, + (unit) => convertXMLToDBData<MatlUnitData>(unit, ['MATNR'], fkData), + fkData + ); + + // Class Assignment 데이터 변환 (자동) + const classAssignments = processNestedArray( + matl.CLASSASGN, + (cls) => convertXMLToDBData<MatlClassAsgnData>(cls, ['MATNR'], fkData), + fkData + ); + + // Characteristic Assignment 데이터 변환 (자동) + const characteristicAssignments = processNestedArray( + matl.CHARASGN, + (char) => convertXMLToDBData<MatlCharAsgnData>(char, ['MATNR'], fkData), + fkData + ); + + return { + material, + descriptions, + plants, + units, + classAssignments, + characteristicAssignments + }; + }); +} + +// 데이터베이스 저장 함수 +async function saveToDatabase(processedMaterials: ProcessedMaterialData[]) { + console.log(`데이터베이스 저장 함수가 호출됨. ${processedMaterials.length}개의 자재 데이터 수신.`); + + try { + await db.transaction(async (tx) => { + for (const materialData of processedMaterials) { + const { material, descriptions, plants, units, classAssignments, characteristicAssignments } = materialData; + + if (!material.MATNR) { + console.warn('자재번호(MATNR)가 없는 항목 발견, 건너뜁니다.'); + continue; + } + + // 1. MATL 테이블 Upsert (최상위 테이블) + await tx.insert(MATERIAL_MASTER_PART_MATL) + .values(material) + .onConflictDoUpdate({ + target: MATERIAL_MASTER_PART_MATL.MATNR, + set: { + ...material, + updatedAt: new Date(), + } + }); + + // 2. 하위 테이블 데이터 처리 - FK 기준으로 전체 삭제 후 재삽입 + await Promise.all([ + // DESC 테이블 처리 + replaceSubTableData( + tx, + MATERIAL_MASTER_PART_MATL_DESC, + descriptions, + 'MATNR', + material.MATNR + ), + + // PLNT 테이블 처리 + replaceSubTableData( + tx, + MATERIAL_MASTER_PART_MATL_PLNT, + plants, + 'MATNR', + material.MATNR + ), + + // UNIT 테이블 처리 + replaceSubTableData( + tx, + MATERIAL_MASTER_PART_MATL_UNIT, + units, + 'MATNR', + material.MATNR + ), + + // CLASSASGN 테이블 처리 + replaceSubTableData( + tx, + MATERIAL_MASTER_PART_MATL_CLASSASGN, + classAssignments, + 'MATNR', + material.MATNR + ), + + // CHARASGN 테이블 처리 + replaceSubTableData( + tx, + MATERIAL_MASTER_PART_MATL_CHARASGN, + characteristicAssignments, + 'MATNR', + material.MATNR + ) + ]); + } + }); + + console.log(`${processedMaterials.length}개의 자재 데이터 처리 완료.`); + return true; + } catch (error) { + console.error('데이터베이스 저장 중 오류 발생:', error); + throw error; + } +} diff --git a/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN/route.ts b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN/route.ts new file mode 100644 index 00000000..ecbc23bc --- /dev/null +++ b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN/route.ts @@ -0,0 +1,150 @@ +import { NextRequest } from "next/server"; +import db from "@/db/db"; +import { MATERIAL_MASTER_PART_RETURN_CMCTB_MAT_BSE } from "@/db/schema/MDG/mdg"; +import { + serveWsdl, + createXMLParser, + extractRequestData, + convertXMLToDBData, + createErrorResponse, + createSuccessResponse, + ToXMLFields, + withSoapLogging, +} from "../utils"; + +// 스키마에서 직접 타입 추론 +type CMCTBMatBseData = typeof MATERIAL_MASTER_PART_RETURN_CMCTB_MAT_BSE.$inferInsert; + +// XML에서 받는 데이터 구조 +type CMCTBMatBseXML = ToXMLFields<Omit<CMCTBMatBseData, 'id' | 'createdAt' | 'updatedAt'>>; + +// 처리된 데이터 구조 +interface ProcessedMaterialData { + materialData: CMCTBMatBseData; +} + +export async function GET(request: NextRequest) { + const url = new URL(request.url); + if (url.searchParams.has('wsdl')) { + return serveWsdl('IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl'); + } + + return new Response('Method Not Allowed', { status: 405 }); +} + +export async function POST(request: NextRequest) { + const url = new URL(request.url); + if (url.searchParams.has('wsdl')) { + return serveWsdl('IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl'); + } + + const body = await request.text(); + + return withSoapLogging( + 'INBOUND', + 'S-ERP', + 'IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN', + body, + async () => { + console.log('🚀 MATERIAL_MASTER_PART_RETURN 수신 시작, 데이터 길이:', body.length); + + const parser = createXMLParser(['CMCTB_MAT_BSE']); + const parsedData = parser.parse(body); + console.log('XML root keys:', Object.keys(parsedData)); + + const requestData = extractRequestData(parsedData, 'IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURNReq'); + + if (!requestData) { + console.error('Could not find valid request data in the received payload'); + console.error('Received XML structure:', JSON.stringify(parsedData, null, 2)); + throw new Error('Missing request data - could not find IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURNReq or CMCTB_MAT_BSE data'); + } + + console.log('Validating request data structure:', + `CMCTB_MAT_BSE: ${requestData.CMCTB_MAT_BSE ? 'found' : 'not found'}` + ); + + if (requestData.CMCTB_MAT_BSE && Array.isArray(requestData.CMCTB_MAT_BSE) && requestData.CMCTB_MAT_BSE.length > 0) { + console.log('First CMCTB_MAT_BSE sample:', JSON.stringify(requestData.CMCTB_MAT_BSE[0], null, 2)); + } + + // XML 데이터를 DB 삽입 가능한 형태로 변환 + const processedMaterials = transformMaterialData(requestData.CMCTB_MAT_BSE as CMCTBMatBseXML[] || []); + + // 필수 필드 검증 + for (const materialData of processedMaterials) { + if (!materialData.materialData.MAT_CD) { + throw new Error('Missing required field: MAT_CD in material'); + } + } + + // 데이터베이스 저장 + await saveToDatabase(processedMaterials); + + console.log(`🎉 처리 완료: ${processedMaterials.length}개 자재 데이터`); + + return createSuccessResponse('http://60.101.108.100/api/IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN/'); + } + ).catch(error => { + return createErrorResponse(error); + }); +} + +// XML 데이터를 DB 삽입 가능한 형태로 변환 +function transformMaterialData(materialData: CMCTBMatBseXML[]): ProcessedMaterialData[] { + if (!materialData || !Array.isArray(materialData)) { + return []; + } + + return materialData.map(material => { + // 메인 Material 데이터 변환 + const materialConverted = convertXMLToDBData<CMCTBMatBseData>( + material as Record<string, string | undefined>, + ['MAT_CD'] + ); + + // 필수 필드 보정 + if (!materialConverted.MAT_CD) { + materialConverted.MAT_CD = ''; + } + + return { + materialData: materialConverted + }; + }); +} + +// 데이터베이스 저장 함수 +async function saveToDatabase(processedMaterials: ProcessedMaterialData[]) { + console.log(`데이터베이스 저장 시작: ${processedMaterials.length}개 자재 데이터`); + + try { + await db.transaction(async (tx) => { + for (const materialData of processedMaterials) { + const { materialData: material } = materialData; + + if (!material.MAT_CD) { + console.warn('자재코드(MAT_CD)가 없는 항목 발견, 건너뜁니다.'); + continue; + } + + // MATERIAL_MASTER_PART_RETURN_CMCTB_MAT_BSE 테이블 Upsert + await tx.insert(MATERIAL_MASTER_PART_RETURN_CMCTB_MAT_BSE) + .values(material) + .onConflictDoUpdate({ + target: MATERIAL_MASTER_PART_RETURN_CMCTB_MAT_BSE.MAT_CD, + set: { + ...material, + updatedAt: new Date(), + } + }); + } + }); + + console.log(`✅ 데이터베이스 저장 완료: ${processedMaterials.length}개 자료`); + return true; + } catch (error) { + console.error('❌ 데이터베이스 저장 중 오류 발생:', error); + throw error; + } +} diff --git a/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_MODEL_MASTER/route.ts b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_MODEL_MASTER/route.ts index 6c73cf08..cb8de491 100644 --- a/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_MODEL_MASTER/route.ts +++ b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_MODEL_MASTER/route.ts @@ -1,927 +1,272 @@ -import { XMLParser } from "fast-xml-parser"; -import { readFileSync } from "fs"; -import { NextRequest, NextResponse } from "next/server"; -import { join } from "path"; +import { NextRequest } from "next/server"; import db from "@/db/db"; -import { MATL, DESC, PLNT, UNIT, CLASSASGN, CHARASGN } from "@/db/schema/MDG/modelMaster"; -import { eq } from "drizzle-orm"; - -// 요청 데이터 인터페이스 정의 -interface RequestData { - materials: Material[]; -} - -// 애플리케이션 내부 데이터 모델 (XML 필드와 1:1 매핑) -interface Material { - matnr?: string; // Material Number - mbrsh?: string; // Industry Sector - mtart?: string; // Material Type - lvorm?: string; // Deletion flag - meins?: string; // Base Unit of Measure - matkl?: string; // Material Group - bismt?: string; // Old Material Number - spart?: string; // Division - prdha?: string; // Product Hierarchy - mstae?: string; // Cross-plant Material Status - mstde?: string; // Cross-distribution-chain Material Status - brgew?: string; // Gross Weight - gewei?: string; // Weight Unit - ntgew?: string; // Net Weight - volum?: string; // Volume - voleh?: string; // Volume Unit - groes?: string; // Size/dimensions - laeng?: string; // Length - breit?: string; // Width - hoehe?: string; // Height - meabm?: string; // Unit of Dimension - magrv?: string; // Material Group: Packaging Materials - vhart?: string; // Packaging Material Type - zzname?: string; // Material Name (Custom) - zzspec?: string; // Material Specification (Custom) - zzdesc?: string; // Material Description (Custom) - zzmmtyp?: string; // Material Type (Custom) - zzregdt?: string; // Registration Date (Custom) - zzregtm?: string; // Registration Time (Custom) - zzregus?: string; // Registration User (Custom) - zzappdt?: string; // Approval Date (Custom) - zzapptm?: string; // Approval Time (Custom) - zzappus?: string; // Approval User (Custom) - zzlamdt?: string; // Last Modified Date (Custom) - zzlamtm?: string; // Last Modified Time (Custom) - zzlamus?: string; // Last Modified User (Custom) - zzprflg?: string; // Process Flag (Custom) - zzdokar?: string; // Document Type (Custom) - zzdoknr?: string; // Document Number (Custom) - zzdoktl?: string; // Document Part (Custom) - zzdokvr?: string; // Document Version (Custom) - descriptions?: Description[]; - plants?: Plant[]; - units?: Unit[]; - classAssignments?: ClassAssignment[]; - characteristicAssignments?: CharacteristicAssignment[]; -} - -interface Description { - matnr?: string; // Material Number - spras?: string; // Language Key - maktx?: string; // Material Description -} - -interface Plant { - matnr?: string; // Material Number - werks?: string; // Plant - lvorm?: string; // Deletion Flag - mmsta?: string; // Plant-specific Material Status - mmstd?: string; // Plant-specific Material Status Valid From - zzmtarp?: string; // Custom Field - zzregdt?: string; // Registration Date (Custom) - zzregtm?: string; // Registration Time (Custom) - zzregus?: string; // Registration User (Custom) - zzlamdt?: string; // Last Modified Date (Custom) - zzlamtm?: string; // Last Modified Time (Custom) - zzlamus?: string; // Last Modified User (Custom) - zzprflg?: string; // Process Flag (Custom) -} - -interface Unit { - matnr?: string; // Material Number - meinh?: string; // Unit of Measure - umrez?: string; // Numerator for Conversion to Base UoM - umren?: string; // Denominator for Conversion to Base UoM - laeng?: string; // Length - breit?: string; // Width - hoehe?: string; // Height - meabm?: string; // Unit of Dimension - volum?: string; // Volume - voleh?: string; // Volume Unit - brgew?: string; // Gross Weight - gewei?: string; // Weight Unit -} - -interface ClassAssignment { - matnr?: string; // Material Number - class?: string; // Class - klart?: string; // Class Type -} - -interface CharacteristicAssignment { - matnr?: string; // Material Number - class?: string; // Class - klart?: string; // Class Type - atnam?: string; // Characteristic Name - atwrt?: string; // Characteristic Value - atflv?: string; // Value From - atawe?: string; // Value To - atflb?: string; // Description - ataw1?: string; // Additional Value - atbez?: string; // Characteristic Description - atwtb?: string; // Characteristic Value Description -} - -// SOAP XML 데이터 구조 인터페이스 -// XML 기준 대문자 필드명 사용 -interface MatlXML { - MATNR?: string; - MBRSH?: string; - MTART?: string; - LVORM?: string; - MEINS?: string; - MATKL?: string; - BISMT?: string; - SPART?: string; - PRDHA?: string; - MSTAE?: string; - MSTDE?: string; - BRGEW?: string; - GEWEI?: string; - NTGEW?: string; - VOLUM?: string; - VOLEH?: string; - GROES?: string; - LAENG?: string; - BREIT?: string; - HOEHE?: string; - MEABM?: string; - MAGRV?: string; - VHART?: string; - ZZNAME?: string; - ZZSPEC?: string; - ZZDESC?: string; - ZZMMTYP?: string; - ZZREGDT?: string; - ZZREGTM?: string; - ZZREGUS?: string; - ZZAPPDT?: string; - ZZAPPTM?: string; - ZZAPPUS?: string; - ZZLAMDT?: string; - ZZLAMTM?: string; - ZZLAMUS?: string; - ZZPRFLG?: string; - ZZDOKAR?: string; - ZZDOKNR?: string; - ZZDOKTL?: string; - ZZDOKVR?: string; +import { + MODEL_MASTER_MATL, + MODEL_MASTER_MATL_DESC, + MODEL_MASTER_MATL_PLNT, + MODEL_MASTER_MATL_UNIT, + MODEL_MASTER_MATL_CLASSASGN, + MODEL_MASTER_MATL_CHARASGN +} from "@/db/schema/MDG/mdg"; +import { + ToXMLFields, + serveWsdl, + createXMLParser, + extractRequestData, + convertXMLToDBData, + processNestedArray, + createErrorResponse, + createSuccessResponse, + replaceSubTableData, + withSoapLogging +} from "../utils"; + +// 스키마에서 직접 타입 추론 (Insert와 XML을 통합) +type MatlData = typeof MODEL_MASTER_MATL.$inferInsert; +type MatlDescData = typeof MODEL_MASTER_MATL_DESC.$inferInsert; +type MatlPlntData = typeof MODEL_MASTER_MATL_PLNT.$inferInsert; +type MatlUnitData = typeof MODEL_MASTER_MATL_UNIT.$inferInsert; +type MatlClassAsgnData = typeof MODEL_MASTER_MATL_CLASSASGN.$inferInsert; +type MatlCharAsgnData = typeof MODEL_MASTER_MATL_CHARASGN.$inferInsert; + +// XML에서 받는 데이터 구조 (스키마와 동일한 구조, string 타입) +type MatlXML = ToXMLFields<Omit<MatlData, 'id' | 'createdAt' | 'updatedAt'>> & { DESC?: DescXML[]; PLNT?: PlntXML[]; UNIT?: UnitXML[]; CLASSASGN?: ClassAsgnXML[]; CHARASGN?: CharAsgnXML[]; -} - -interface DescXML { - MATNR?: string; - SPRAS?: string; - MAKTX?: string; -} - -interface PlntXML { - MATNR?: string; - WERKS?: string; - LVORM?: string; - MMSTA?: string; - MMSTD?: string; - ZZMTARP?: string; - ZZREGDT?: string; - ZZREGTM?: string; - ZZREGUS?: string; - ZZLAMDT?: string; - ZZLAMTM?: string; - ZZLAMUS?: string; - ZZPRFLG?: string; -} - -interface UnitXML { - MATNR?: string; - MEINH?: string; - UMREZ?: string; - UMREN?: string; - LAENG?: string; - BREIT?: string; - HOEHE?: string; - MEABM?: string; - VOLUM?: string; - VOLEH?: string; - BRGEW?: string; - GEWEI?: string; -} - -interface ClassAsgnXML { - MATNR?: string; - CLASS?: string; - KLART?: string; -} - -interface CharAsgnXML { - MATNR?: string; - CLASS?: string; - KLART?: string; - ATNAM?: string; - ATWRT?: string; - ATFLV?: string; - ATAWE?: string; - ATFLB?: string; - ATAW1?: string; - ATBEZ?: string; - ATWTB?: string; -} - -// SOAP Body에 대한 데이터 타입 정의 -interface SoapBodyData { - [key: string]: unknown; - IF_MDZ_EVCP_MODEL_MASTERReq?: Record<string, unknown>; - 'tns:IF_MDZ_EVCP_MODEL_MASTERReq'?: Record<string, unknown>; - 'ns1:IF_MDZ_EVCP_MODEL_MASTERReq'?: Record<string, unknown>; - 'p0:IF_MDZ_EVCP_MODEL_MASTERReq'?: Record<string, unknown>; - MATL?: MatlXML[]; -} - -function serveWsdl() { - try { - const wsdlPath = join(process.cwd(), 'public', 'wsdl', 'IF_MDZ_EVCP_MODEL_MASTER.wsdl'); - const wsdlContent = readFileSync(wsdlPath, 'utf-8'); - - return new NextResponse(wsdlContent, { - headers: { - 'Content-Type': 'text/xml; charset=utf-8', - }, - }); - } catch (error) { - console.error('Failed to read WSDL file:', error); - return new NextResponse('WSDL file not found', { status: 404 }); - } +}; + +type DescXML = ToXMLFields<Omit<MatlDescData, 'id' | 'createdAt' | 'updatedAt'>>; +type PlntXML = ToXMLFields<Omit<MatlPlntData, 'id' | 'createdAt' | 'updatedAt'>>; +type UnitXML = ToXMLFields<Omit<MatlUnitData, 'id' | 'createdAt' | 'updatedAt'>>; +type ClassAsgnXML = ToXMLFields<Omit<MatlClassAsgnData, 'id' | 'createdAt' | 'updatedAt'>>; +type CharAsgnXML = ToXMLFields<Omit<MatlCharAsgnData, 'id' | 'createdAt' | 'updatedAt'>>; + +// 처리된 데이터 구조 (Insert와 동일) +interface ProcessedMaterialData { + material: MatlData; + descriptions: MatlDescData[]; + plants: MatlPlntData[]; + units: MatlUnitData[]; + classAssignments: MatlClassAsgnData[]; + characteristicAssignments: MatlCharAsgnData[]; } export async function GET(request: NextRequest) { - const url = new URL(request.url); - if (url.searchParams.has('wsdl')) { - return serveWsdl(); - } - - return new NextResponse('Method Not Allowed', { status: 405 }); + const url = new URL(request.url); + if (url.searchParams.has('wsdl')) { + return serveWsdl('IF_MDZ_EVCP_MODEL_MASTER.wsdl'); + } + + return new Response('Method Not Allowed', { status: 405 }); } -// WSDL 기반의 SOAP 요청 (데이터 전송건) 처리하기 (HTTP) export async function POST(request: NextRequest) { - const url = new URL(request.url); - if (url.searchParams.has('wsdl')) { - return serveWsdl(); - } - - try { - // 요청 본문 (MDZ 데이터)를 가져오기 - const body = await request.text(); - - // 요청 로깅 - console.log('Request Body 일부:', body.substring(0, 200) + (body.length > 200 ? '...' : '')); - - // XML 파서 설정하기 - const parser = new XMLParser({ - ignoreAttributes: false, - attributeNamePrefix: '@_', - parseAttributeValue: false, // 값 조작 방지 - trimValues: true, - isArray: (name: string) => { - return ['MATL', 'DESC', 'PLNT', 'UNIT', 'CLASSASGN', 'CHARASGN'].includes(name); - }, - parseTagValue: false, // 값 조작 방지 - allowBooleanAttributes: true, - }); - - // XML 파싱하기 - const parsedData = parser.parse(body); - - // 디버깅용 - 최상위 구조 확인 - console.log('XML root keys:', Object.keys(parsedData)); - - // 재할당 가능한 변수 선언 - let requestData = null; - - // 가능한 경로 확인 - if (parsedData?.['soap:Envelope']?.['soap:Body']) { - const soapBody = parsedData['soap:Envelope']['soap:Body']; - requestData = extractRequestData(soapBody); - } else if (parsedData?.['SOAP:Envelope']?.['SOAP:Body']) { - const soapBody = parsedData['SOAP:Envelope']['SOAP:Body']; - requestData = extractRequestData(soapBody); - } else if (parsedData?.['Envelope']?.['Body']) { - const soapBody = parsedData['Envelope']['Body']; - requestData = extractRequestData(soapBody); - } else if (parsedData?.['soapenv:Envelope']?.['soapenv:Body']) { - const soapBody = parsedData['soapenv:Envelope']['soapenv:Body']; - requestData = extractRequestData(soapBody); - } else if (parsedData?.['IF_MDZ_EVCP_MODEL_MASTERReq']) { - requestData = parsedData['IF_MDZ_EVCP_MODEL_MASTERReq']; - console.log('Found direct IF_MDZ_EVCP_MODEL_MASTERReq data'); - } else if (parsedData?.['ns1:IF_MDZ_EVCP_MODEL_MASTERReq']) { - requestData = parsedData['ns1:IF_MDZ_EVCP_MODEL_MASTERReq']; - console.log('Found direct ns1:IF_MDZ_EVCP_MODEL_MASTERReq data'); - } else if (parsedData?.['p0:IF_MDZ_EVCP_MODEL_MASTERReq']) { - requestData = parsedData['p0:IF_MDZ_EVCP_MODEL_MASTERReq']; - console.log('Found direct p0:IF_MDZ_EVCP_MODEL_MASTERReq data'); - } else { - // 루트 레벨에서 MATL을 직접 찾기 - if (parsedData?.MATL) { - requestData = parsedData; - console.log('Found MATL data at root level'); - } else { - // 다른 모든 키에 대해 확인 - for (const key of Object.keys(parsedData)) { - const value = parsedData[key]; - // 데이터 구조가 맞는지 확인 (MATL이 있는지) - if (value && value.MATL) { - requestData = value; - console.log(`Found data in root key: ${key}`); - break; - } - - // 키 이름에 IF_MDZ_EVCP_MODEL_MASTERReq가 포함되어 있는지 확인 - if (key.includes('IF_MDZ_EVCP_MODEL_MASTERReq')) { - requestData = value; - console.log(`Found data in root key with matching name: ${key}`); - break; - } - } - } - } - - if (!requestData) { - console.error('Could not find valid request data in the received payload'); - console.error('Received XML structure:', JSON.stringify(parsedData, null, 2)); - throw new Error('Missing request data - could not find IF_MDZ_EVCP_MODEL_MASTERReq or MATL data'); + const url = new URL(request.url); + if (url.searchParams.has('wsdl')) { + return serveWsdl('IF_MDZ_EVCP_MODEL_MASTER.wsdl'); + } + + const body = await request.text(); + + return withSoapLogging( + 'INBOUND', + 'S-ERP', + 'IF_MDZ_EVCP_MODEL_MASTER', + body, + async () => { + console.log('Request Body 일부:', body.substring(0, 200) + (body.length > 200 ? '...' : '')); + + const parser = createXMLParser(['MATL', 'DESC', 'PLNT', 'UNIT', 'CLASSASGN', 'CHARASGN']); + const parsedData = parser.parse(body); + console.log('XML root keys:', Object.keys(parsedData)); + + const requestData = extractRequestData(parsedData, 'IF_MDZ_EVCP_MODEL_MASTERReq'); + + if (!requestData) { + console.error('Could not find valid request data in the received payload'); + console.error('Received XML structure:', JSON.stringify(parsedData, null, 2)); + throw new Error('Missing request data - could not find IF_MDZ_EVCP_MODEL_MASTERReq or MATL data'); + } + + console.log('Validating request data structure:', + `MATL: ${requestData.MATL ? 'found' : 'not found'}` + ); + + if (requestData.MATL && Array.isArray(requestData.MATL) && requestData.MATL.length > 0) { + console.log('First MATL sample:', JSON.stringify(requestData.MATL[0], null, 2)); + } + + // XML 데이터를 DB 삽입 가능한 형태로 변환 + const processedMaterials = transformMatlData(requestData.MATL as MatlXML[] || []); + + // 필수 필드 검증 + for (const materialData of processedMaterials) { + if (!materialData.material.MATNR) { + throw new Error('Missing required field: MATNR in material'); } - - // 데이터 유효성 검증 - console.log('Validating request data structure:', - `MATL: ${requestData.MATL ? 'found' : 'not found'}` - ); - - // 샘플 데이터 로깅 - if (requestData.MATL && Array.isArray(requestData.MATL) && requestData.MATL.length > 0) { - console.log('First MATL sample:', JSON.stringify(requestData.MATL[0], null, 2)); - } - - // 데이터 구조 정규화 - MDZ 데이터를 우리 애플리케이션 모델로 변환 - const normalizedData: RequestData = { - materials: transformMatlData(requestData.MATL) - }; - - // 기본 유효성 검사 - 필수 필드 확인 - for (const material of normalizedData.materials) { - if (!material.matnr) { - throw new Error('Missing required field: matnr in material'); - } - } - - // 데이터베이스 저장 - await saveToDatabase(normalizedData); - - console.log(`Processed ${normalizedData.materials.length} materials`); - - // XML 응답 생성 - const xmlResponse = `<?xml version="1.0" encoding="UTF-8"?> -<soap:Envelope - xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" - xmlns:tns="http://60.101.108.100/api/IF_MDZ_EVCP_MODEL_MASTER/"> - <soap:Body> - </soap:Body> -</soap:Envelope>`; - - return new NextResponse(xmlResponse, { - headers: { - 'Content-Type': 'text/xml; charset=utf-8', - }, - }); - } catch (error: unknown) { - console.error('API Error:', error); - - // XML 에러 응답 - const errorResponse = `<?xml version="1.0" encoding="UTF-8"?> -<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> - <soap:Body> - <soap:Fault> - <faultcode>soap:Server</faultcode> - <faultstring>${error instanceof Error ? ('[from eVCP]: ' + error.message) : 'Unknown error'}</faultstring> - </soap:Fault> - </soap:Body> -</soap:Envelope>`; - - return new NextResponse(errorResponse, { - status: 500, - headers: { - 'Content-Type': 'text/xml; charset=utf-8', - }, - }); + } + + // 데이터베이스 저장 + await saveToDatabase(processedMaterials); + + console.log(`Processed ${processedMaterials.length} materials`); + + return createSuccessResponse('http://60.101.108.100/api/IF_MDZ_EVCP_MODEL_MASTER/'); } + ).catch(error => { + return createErrorResponse(error); + }); } -// SOAP Body나 루트에서 요청 데이터 추출하는 헬퍼 함수 -function extractRequestData(data: SoapBodyData): Record<string, unknown> | null { - if (!data) return null; +// XML 데이터를 DB 삽입 가능한 형태로 변환 +function transformMatlData(matlData: MatlXML[]): ProcessedMaterialData[] { + if (!matlData || !Array.isArray(matlData)) { + return []; + } + + return matlData.map(matl => { + // 메인 Material 데이터 변환 (자동) + const material = convertXMLToDBData<MatlData>( + matl as Record<string, string | undefined>, + ['MATNR'] + ); - if (data['IF_MDZ_EVCP_MODEL_MASTERReq']) { - return data['IF_MDZ_EVCP_MODEL_MASTERReq'] as Record<string, unknown>; - } else if (data['tns:IF_MDZ_EVCP_MODEL_MASTERReq']) { - return data['tns:IF_MDZ_EVCP_MODEL_MASTERReq'] as Record<string, unknown>; - } else if (data['ns1:IF_MDZ_EVCP_MODEL_MASTERReq']) { - return data['ns1:IF_MDZ_EVCP_MODEL_MASTERReq'] as Record<string, unknown>; - } else if (data['p0:IF_MDZ_EVCP_MODEL_MASTERReq']) { - return data['p0:IF_MDZ_EVCP_MODEL_MASTERReq'] as Record<string, unknown>; + // 필수 필드 보정 (MATNR이 빈 문자열이면 안됨) + if (!material.MATNR) { + material.MATNR = ''; } - // 다른 키 검색 - for (const key of Object.keys(data)) { - if (key.includes('IF_MDZ_EVCP_MODEL_MASTERReq')) { - return data[key] as Record<string, unknown>; - } - } + // FK 데이터 준비 + const fkData = { MATNR: matl.MATNR || '' }; - // MATL이 직접 있는 경우 - if (data.MATL && Array.isArray(data.MATL)) { - return data; - } + // Description 데이터 변환 (자동) + const descriptions = processNestedArray( + matl.DESC, + (desc) => convertXMLToDBData<MatlDescData>(desc, ['MATNR'], fkData), + fkData + ); - return null; -} - -// XML MATL 데이터를 내부 Material 형식으로 변환하는 함수 -function transformMatlData(matlData: MatlXML[]): Material[] { - if (!matlData || !Array.isArray(matlData)) { - return []; - } + // Plant 데이터 변환 (자동) + const plants = processNestedArray( + matl.PLNT, + (plnt) => convertXMLToDBData<MatlPlntData>(plnt, ['MATNR'], fkData), + fkData + ); - return matlData.map(matl => { - const material: Material = { - matnr: matl.MATNR, - mbrsh: matl.MBRSH, - mtart: matl.MTART, - lvorm: matl.LVORM, - meins: matl.MEINS, - matkl: matl.MATKL, - bismt: matl.BISMT, - spart: matl.SPART, - prdha: matl.PRDHA, - mstae: matl.MSTAE, - mstde: matl.MSTDE, - brgew: matl.BRGEW, - gewei: matl.GEWEI, - ntgew: matl.NTGEW, - volum: matl.VOLUM, - voleh: matl.VOLEH, - groes: matl.GROES, - laeng: matl.LAENG, - breit: matl.BREIT, - hoehe: matl.HOEHE, - meabm: matl.MEABM, - magrv: matl.MAGRV, - vhart: matl.VHART, - zzname: matl.ZZNAME, - zzspec: matl.ZZSPEC, - zzdesc: matl.ZZDESC, - zzmmtyp: matl.ZZMMTYP, - zzregdt: matl.ZZREGDT, - zzregtm: matl.ZZREGTM, - zzregus: matl.ZZREGUS, - zzappdt: matl.ZZAPPDT, - zzapptm: matl.ZZAPPTM, - zzappus: matl.ZZAPPUS, - zzlamdt: matl.ZZLAMDT, - zzlamtm: matl.ZZLAMTM, - zzlamus: matl.ZZLAMUS, - zzprflg: matl.ZZPRFLG, - zzdokar: matl.ZZDOKAR, - zzdoknr: matl.ZZDOKNR, - zzdoktl: matl.ZZDOKTL, - zzdokvr: matl.ZZDOKVR, - }; - - // DESC 항목 처리 - if (matl.DESC && Array.isArray(matl.DESC)) { - material.descriptions = matl.DESC.map((desc: DescXML) => ({ - matnr: desc.MATNR, - spras: desc.SPRAS, - maktx: desc.MAKTX - })); - } - - // PLNT 항목 처리 - if (matl.PLNT && Array.isArray(matl.PLNT)) { - - material.plants = matl.PLNT.map((plnt: PlntXML) => ({ - matnr: plnt.MATNR, - werks: plnt.WERKS, - lvorm: plnt.LVORM, - mmsta: plnt.MMSTA, - mmstd: plnt.MMSTD, - zzmtarp: plnt.ZZMTARP, - zzregdt: plnt.ZZREGDT, - zzregtm: plnt.ZZREGTM, - zzregus: plnt.ZZREGUS, - zzlamdt: plnt.ZZLAMDT, - zzlamtm: plnt.ZZLAMTM, - zzlamus: plnt.ZZLAMUS, - zzprflg: plnt.ZZPRFLG - })); - } - - // UNIT 항목 처리 - if (matl.UNIT && Array.isArray(matl.UNIT)) { - material.units = matl.UNIT.map((unit: UnitXML) => ({ - matnr: unit.MATNR, - meinh: unit.MEINH, - umrez: unit.UMREZ, - umren: unit.UMREN, - laeng: unit.LAENG, - breit: unit.BREIT, - hoehe: unit.HOEHE, - meabm: unit.MEABM, - volum: unit.VOLUM, - voleh: unit.VOLEH, - brgew: unit.BRGEW, - gewei: unit.GEWEI - })); - } - - // CLASSASGN 항목 처리 - if (matl.CLASSASGN && Array.isArray(matl.CLASSASGN)) { - material.classAssignments = matl.CLASSASGN.map((cls: ClassAsgnXML) => ({ - matnr: cls.MATNR, - class: cls.CLASS, - klart: cls.KLART - })); - } - - // CHARASGN 항목 처리 - if (matl.CHARASGN && Array.isArray(matl.CHARASGN)) { - material.characteristicAssignments = matl.CHARASGN.map((char: CharAsgnXML) => ({ - matnr: char.MATNR, - class: char.CLASS, - klart: char.KLART, - atnam: char.ATNAM, - atwrt: char.ATWRT, - atflv: char.ATFLV, - atawe: char.ATAWE, - atflb: char.ATFLB, - ataw1: char.ATAW1, - atbez: char.ATBEZ, - atwtb: char.ATWTB - })); - } - - return material; - }); + // Unit 데이터 변환 (자동) + const units = processNestedArray( + matl.UNIT, + (unit) => convertXMLToDBData<MatlUnitData>(unit, ['MATNR'], fkData), + fkData + ); + + // Class Assignment 데이터 변환 (자동) + const classAssignments = processNestedArray( + matl.CLASSASGN, + (cls) => convertXMLToDBData<MatlClassAsgnData>(cls, ['MATNR'], fkData), + fkData + ); + + // Characteristic Assignment 데이터 변환 (자동) + const characteristicAssignments = processNestedArray( + matl.CHARASGN, + (char) => convertXMLToDBData<MatlCharAsgnData>(char, ['MATNR'], fkData), + fkData + ); + + return { + material, + descriptions, + plants, + units, + classAssignments, + characteristicAssignments + }; + }); } // 데이터베이스 저장 함수 -async function saveToDatabase(data: RequestData) { - console.log(`데이터베이스 저장 함수가 호출됨. ${data.materials.length}개의 자재 데이터 수신.`); - - try { - // 트랜잭션으로 모든 데이터 처리 - await db.transaction(async (tx) => { - for (const material of data.materials) { - if (!material.matnr) { - console.warn('자재번호(MATNR)가 없는 항목 발견, 건너뜁니다.'); - continue; - } - - // 1. MATL 테이블 Upsert - await tx.insert(MATL) - .values({ - MATNR: material.matnr, - MBRSH: material.mbrsh || null, - MTART: material.mtart || null, - LVORM: material.lvorm || null, - MEINS: material.meins || null, - MATKL: material.matkl || null, - BISMT: material.bismt || null, - SPART: material.spart || null, - PRDHA: material.prdha || null, - MSTAE: material.mstae || null, - MSTDE: material.mstde || null, - BRGEW: material.brgew || null, - GEWEI: material.gewei || null, - NTGEW: material.ntgew || null, - VOLUM: material.volum || null, - VOLEH: material.voleh || null, - GROES: material.groes || null, - LAENG: material.laeng || null, - BREIT: material.breit || null, - HOEHE: material.hoehe || null, - MEABM: material.meabm || null, - MAGRV: material.magrv || null, - VHART: material.vhart || null, - ZZNAME: material.zzname || null, - ZZSPEC: material.zzspec || null, - ZZDESC: material.zzdesc || null, - ZZMMTYP: material.zzmmtyp || null, - ZZREGDT: material.zzregdt || null, - ZZREGTM: material.zzregtm || null, - ZZREGUS: material.zzregus || null, - ZZAPPDT: material.zzappdt || null, - ZZAPPTM: material.zzapptm || null, - ZZAPPUS: material.zzappus || null, - ZZLAMDT: material.zzlamdt || null, - ZZLAMTM: material.zzlamtm || null, - ZZLAMUS: material.zzlamus || null, - ZZPRFLG: material.zzprflg || null, - ZZDOKAR: material.zzdokar || null, - ZZDOKNR: material.zzdoknr || null, - ZZDOKTL: material.zzdoktl || null, - ZZDOKVR: material.zzdokvr || null, - }) - .onConflictDoUpdate({ - target: MATL.MATNR, - set: { - MBRSH: material.mbrsh || null, - MTART: material.mtart || null, - LVORM: material.lvorm || null, - MEINS: material.meins || null, - MATKL: material.matkl || null, - BISMT: material.bismt || null, - SPART: material.spart || null, - PRDHA: material.prdha || null, - MSTAE: material.mstae || null, - MSTDE: material.mstde || null, - BRGEW: material.brgew || null, - GEWEI: material.gewei || null, - NTGEW: material.ntgew || null, - VOLUM: material.volum || null, - VOLEH: material.voleh || null, - GROES: material.groes || null, - LAENG: material.laeng || null, - BREIT: material.breit || null, - HOEHE: material.hoehe || null, - MEABM: material.meabm || null, - MAGRV: material.magrv || null, - VHART: material.vhart || null, - ZZNAME: material.zzname || null, - ZZSPEC: material.zzspec || null, - ZZDESC: material.zzdesc || null, - ZZMMTYP: material.zzmmtyp || null, - ZZREGDT: material.zzregdt || null, - ZZREGTM: material.zzregtm || null, - ZZREGUS: material.zzregus || null, - ZZAPPDT: material.zzappdt || null, - ZZAPPTM: material.zzapptm || null, - ZZAPPUS: material.zzappus || null, - ZZLAMDT: material.zzlamdt || null, - ZZLAMTM: material.zzlamtm || null, - ZZLAMUS: material.zzlamus || null, - ZZPRFLG: material.zzprflg || null, - ZZDOKAR: material.zzdokar || null, - ZZDOKNR: material.zzdoknr || null, - ZZDOKTL: material.zzdoktl || null, - ZZDOKVR: material.zzdokvr || null, - updatedAt: new Date(), - } - }); - - // 2. 하위 테이블 데이터 처리 (Upsert) - // DESC 테이블 데이터 처리 - if (material.descriptions && material.descriptions.length > 0) { - // 기존 데이터 조회 (해당 자재의 모든 설명) - const existingDescs = await tx.select().from(DESC) - .where(eq(DESC.MATNR, material.matnr)); - - // 설명 데이터 매핑 - const existingDescsMap = new Map( - existingDescs.map(desc => [`${desc.MATNR}-${desc.SPRAS}`, desc]) - ); - - for (const desc of material.descriptions) { - if (!desc.matnr && !material.matnr) continue; // 자재번호 필수 - - const matnr = desc.matnr || material.matnr; - const spras = desc.spras || ''; - const key = `${matnr}-${spras}`; - - if (existingDescsMap.has(key)) { - // 기존 데이터 업데이트 - await tx.update(DESC) - .set({ - MAKTX: desc.maktx || null, - updatedAt: new Date() - }) - .where(eq(DESC.id, existingDescsMap.get(key)!.id)); - } else { - // 신규 데이터 삽입 - await tx.insert(DESC).values({ - MATNR: matnr, - SPRAS: desc.spras || null, - MAKTX: desc.maktx || null, - }); - } - } - } - - // PLNT 테이블 데이터 처리 - if (material.plants && material.plants.length > 0) { - // 기존 데이터 조회 - const existingPlants = await tx.select().from(PLNT) - .where(eq(PLNT.MATNR, material.matnr)); - - // 플랜트 데이터 매핑 - const existingPlantsMap = new Map( - existingPlants.map(plant => [`${plant.MATNR}-${plant.WERKS}`, plant]) - ); - - for (const plant of material.plants) { - if (!plant.matnr && !material.matnr) continue; // 자재번호 필수 - if (!plant.werks) continue; // 플랜트 코드 필수 - - const matnr = plant.matnr || material.matnr; - const werks = plant.werks; - const key = `${matnr}-${werks}`; - - if (existingPlantsMap.has(key)) { - // 기존 데이터 업데이트 - await tx.update(PLNT) - .set({ - LVORM: plant.lvorm || null, - MMSTA: plant.mmsta || null, - MMSTD: plant.mmstd || null, - ZZMTARP: plant.zzmtarp || null, - ZZREGDT: plant.zzregdt || null, - ZZREGTM: plant.zzregtm || null, - ZZREGUS: plant.zzregus || null, - ZZLAMDT: plant.zzlamdt || null, - ZZLAMTM: plant.zzlamtm || null, - ZZLAMUS: plant.zzlamus || null, - ZZPRFLG: plant.zzprflg || null, - updatedAt: new Date() - }) - .where(eq(PLNT.id, existingPlantsMap.get(key)!.id)); - } else { - // 신규 데이터 삽입 - await tx.insert(PLNT).values({ - MATNR: matnr, - WERKS: werks, - LVORM: plant.lvorm || null, - MMSTA: plant.mmsta || null, - MMSTD: plant.mmstd || null, - ZZMTARP: plant.zzmtarp || null, - ZZREGDT: plant.zzregdt || null, - ZZREGTM: plant.zzregtm || null, - ZZREGUS: plant.zzregus || null, - ZZLAMDT: plant.zzlamdt || null, - ZZLAMTM: plant.zzlamtm || null, - ZZLAMUS: plant.zzlamus || null, - ZZPRFLG: plant.zzprflg || null, - }); - } - } - } - - // UNIT 테이블 데이터 처리 - if (material.units && material.units.length > 0) { - // 기존 데이터 조회 - const existingUnits = await tx.select().from(UNIT) - .where(eq(UNIT.MATNR, material.matnr)); - - // 단위 데이터 매핑 - const existingUnitsMap = new Map( - existingUnits.map(unit => [`${unit.MATNR}-${unit.MEINH}`, unit]) - ); - - for (const unit of material.units) { - if (!unit.matnr && !material.matnr) continue; // 자재번호 필수 - if (!unit.meinh) continue; // 단위 코드 필수 - - const matnr = unit.matnr || material.matnr; - const meinh = unit.meinh; - const key = `${matnr}-${meinh}`; - - if (existingUnitsMap.has(key)) { - // 기존 데이터 업데이트 - await tx.update(UNIT) - .set({ - UMREZ: unit.umrez || null, - UMREN: unit.umren || null, - LAENG: unit.laeng || null, - BREIT: unit.breit || null, - HOEHE: unit.hoehe || null, - MEABM: unit.meabm || null, - VOLUM: unit.volum || null, - VOLEH: unit.voleh || null, - BRGEW: unit.brgew || null, - GEWEI: unit.gewei || null, - updatedAt: new Date() - }) - .where(eq(UNIT.id, existingUnitsMap.get(key)!.id)); - } else { - // 신규 데이터 삽입 - await tx.insert(UNIT).values({ - MATNR: matnr, - MEINH: meinh, - UMREZ: unit.umrez || null, - UMREN: unit.umren || null, - LAENG: unit.laeng || null, - BREIT: unit.breit || null, - HOEHE: unit.hoehe || null, - MEABM: unit.meabm || null, - VOLUM: unit.volum || null, - VOLEH: unit.voleh || null, - BRGEW: unit.brgew || null, - GEWEI: unit.gewei || null, - }); - } - } - } - - // CLASSASGN 테이블 데이터 처리 - if (material.classAssignments && material.classAssignments.length > 0) { - // 기존 데이터 조회 - const existingClassAsgns = await tx.select().from(CLASSASGN) - .where(eq(CLASSASGN.MATNR, material.matnr)); - - // 클래스 할당 데이터 매핑 - const existingClassAsgnsMap = new Map( - existingClassAsgns.map(cls => [`${cls.MATNR}-${cls.CLASS}-${cls.KLART}`, cls]) - ); - - for (const cls of material.classAssignments) { - if (!cls.matnr && !material.matnr) continue; // 자재번호 필수 - if (!cls.class || !cls.klart) continue; // 클래스 및 유형 필수 - - const matnr = cls.matnr || material.matnr; - const clsVal = cls.class; - const klart = cls.klart; - const key = `${matnr}-${clsVal}-${klart}`; - - if (!existingClassAsgnsMap.has(key)) { - // 클래스 할당은 기본키 자체가 변경되는 경우가 드물어 신규 삽입만 처리 - await tx.insert(CLASSASGN).values({ - MATNR: matnr, - CLASS: clsVal, - KLART: klart, - }); - } - } - } +async function saveToDatabase(processedMaterials: ProcessedMaterialData[]) { + console.log(`데이터베이스 저장 함수가 호출됨. ${processedMaterials.length}개의 자재 데이터 수신.`); + + try { + await db.transaction(async (tx) => { + for (const materialData of processedMaterials) { + const { material, descriptions, plants, units, classAssignments, characteristicAssignments } = materialData; + + if (!material.MATNR) { + console.warn('자재번호(MATNR)가 없는 항목 발견, 건너뜁니다.'); + continue; + } - // CHARASGN 테이블 데이터 처리 - if (material.characteristicAssignments && material.characteristicAssignments.length > 0) { - // 기존 데이터 조회 - const existingCharAsgns = await tx.select().from(CHARASGN) - .where(eq(CHARASGN.MATNR, material.matnr)); - - // 특성 할당 데이터 매핑 - const existingCharAsgnsMap = new Map( - existingCharAsgns.map(char => - [`${char.MATNR}-${char.CLASS}-${char.KLART}-${char.ATNAM}`, char] - ) - ); - - for (const char of material.characteristicAssignments) { - if (!char.matnr && !material.matnr) continue; // 자재번호 필수 - if (!char.class || !char.klart || !char.atnam) continue; // 클래스, 유형, 특성명 필수 - - const matnr = char.matnr || material.matnr; - const clsVal = char.class; - const klart = char.klart; - const atnam = char.atnam; - const key = `${matnr}-${clsVal}-${klart}-${atnam}`; - - if (existingCharAsgnsMap.has(key)) { - // 기존 데이터 업데이트 - await tx.update(CHARASGN) - .set({ - ATWRT: char.atwrt || null, - ATFLV: char.atflv || null, - ATAWE: char.atawe || null, - ATFLB: char.atflb || null, - ATAW1: char.ataw1 || null, - ATBEZ: char.atbez || null, - ATWTB: char.atwtb || null, - updatedAt: new Date() - }) - .where(eq(CHARASGN.id, existingCharAsgnsMap.get(key)!.id)); - } else { - // 신규 데이터 삽입 - await tx.insert(CHARASGN).values({ - MATNR: matnr, - CLASS: clsVal, - KLART: klart, - ATNAM: atnam, - ATWRT: char.atwrt || null, - ATFLV: char.atflv || null, - ATAWE: char.atawe || null, - ATFLB: char.atflb || null, - ATAW1: char.ataw1 || null, - ATBEZ: char.atbez || null, - ATWTB: char.atwtb || null, - }); - } - } - } + // 1. MATL 테이블 Upsert (최상위 테이블) + await tx.insert(MODEL_MASTER_MATL) + .values(material) + .onConflictDoUpdate({ + target: MODEL_MASTER_MATL.MATNR, + set: { + ...material, + updatedAt: new Date(), } - }); + }); + + // 2. 하위 테이블 데이터 처리 - FK 기준으로 전체 삭제 후 재삽입 + await Promise.all([ + // DESC 테이블 처리 + replaceSubTableData( + tx, + MODEL_MASTER_MATL_DESC, + descriptions, + 'MATNR', + material.MATNR + ), + + // PLNT 테이블 처리 + replaceSubTableData( + tx, + MODEL_MASTER_MATL_PLNT, + plants, + 'MATNR', + material.MATNR + ), + + // UNIT 테이블 처리 + replaceSubTableData( + tx, + MODEL_MASTER_MATL_UNIT, + units, + 'MATNR', + material.MATNR + ), + + // CLASSASGN 테이블 처리 + replaceSubTableData( + tx, + MODEL_MASTER_MATL_CLASSASGN, + classAssignments, + 'MATNR', + material.MATNR + ), + + // CHARASGN 테이블 처리 + replaceSubTableData( + tx, + MODEL_MASTER_MATL_CHARASGN, + characteristicAssignments, + 'MATNR', + material.MATNR + ) + ]); + } + }); - console.log(`${data.materials.length}개의 자재 데이터 처리 완료.`); - return true; - } catch (error) { - console.error('데이터베이스 저장 중 오류 발생:', error); - throw error; - } + console.log(`${processedMaterials.length}개의 자재 데이터 처리 완료.`); + return true; + } catch (error) { + console.error('데이터베이스 저장 중 오류 발생:', error); + throw error; + } } diff --git a/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_ORGANIZATION_MASTER/route.ts b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_ORGANIZATION_MASTER/route.ts new file mode 100644 index 00000000..c3f214e6 --- /dev/null +++ b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_ORGANIZATION_MASTER/route.ts @@ -0,0 +1,435 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import { NextRequest } from "next/server"; +import db from "@/db/db"; +import { + ORGANIZATION_MASTER_HRHMTB_CCTR, + ORGANIZATION_MASTER_HRHMTB_CCTR_TEXT, + ORGANIZATION_MASTER_HRHMTB_PCTR, + ORGANIZATION_MASTER_HRHMTB_ZBUKRS, + ORGANIZATION_MASTER_HRHMTB_ZEKGRP, + ORGANIZATION_MASTER_HRHMTB_ZEKORG, + ORGANIZATION_MASTER_HRHMTB_ZGSBER, + ORGANIZATION_MASTER_HRHMTB_ZGSBER_TEXT, + ORGANIZATION_MASTER_HRHMTB_ZLGORT, + ORGANIZATION_MASTER_HRHMTB_ZSPART, + ORGANIZATION_MASTER_HRHMTB_ZVKBUR, + ORGANIZATION_MASTER_HRHMTB_ZVKGRP, + ORGANIZATION_MASTER_HRHMTB_ZVKORG, + ORGANIZATION_MASTER_HRHMTB_ZVSTEL, + ORGANIZATION_MASTER_HRHMTB_ZVTWEG, + ORGANIZATION_MASTER_HRHMTB_ZWERKS +} from "@/db/schema/MDG/mdg"; +import { + ToXMLFields, + serveWsdl, + createXMLParser, + extractRequestData, + convertXMLToDBData, + processNestedArray, + createErrorResponse, + createSuccessResponse, + replaceSubTableData, + withSoapLogging +} from "../utils"; + +// 스키마에서 직접 타입 추론 +type CctrData = typeof ORGANIZATION_MASTER_HRHMTB_CCTR.$inferInsert; +type CctrTextData = typeof ORGANIZATION_MASTER_HRHMTB_CCTR_TEXT.$inferInsert; +type PctrData = typeof ORGANIZATION_MASTER_HRHMTB_PCTR.$inferInsert; +type ZbukrsData = typeof ORGANIZATION_MASTER_HRHMTB_ZBUKRS.$inferInsert; +type ZekgrpData = typeof ORGANIZATION_MASTER_HRHMTB_ZEKGRP.$inferInsert; +type ZekorgData = typeof ORGANIZATION_MASTER_HRHMTB_ZEKORG.$inferInsert; +type ZgsberData = typeof ORGANIZATION_MASTER_HRHMTB_ZGSBER.$inferInsert; +type ZgsberTextData = typeof ORGANIZATION_MASTER_HRHMTB_ZGSBER_TEXT.$inferInsert; +type ZlgortData = typeof ORGANIZATION_MASTER_HRHMTB_ZLGORT.$inferInsert; +type ZspartData = typeof ORGANIZATION_MASTER_HRHMTB_ZSPART.$inferInsert; +type ZvkburData = typeof ORGANIZATION_MASTER_HRHMTB_ZVKBUR.$inferInsert; +type ZvkgrpData = typeof ORGANIZATION_MASTER_HRHMTB_ZVKGRP.$inferInsert; +type ZvkorgData = typeof ORGANIZATION_MASTER_HRHMTB_ZVKORG.$inferInsert; +type ZvstelData = typeof ORGANIZATION_MASTER_HRHMTB_ZVSTEL.$inferInsert; +type ZvtwegData = typeof ORGANIZATION_MASTER_HRHMTB_ZVTWEG.$inferInsert; +type ZwerksData = typeof ORGANIZATION_MASTER_HRHMTB_ZWERKS.$inferInsert; + +// XML에서 받는 데이터 구조 +type CctrXML = ToXMLFields<Omit<CctrData, 'id' | 'createdAt' | 'updatedAt'>> & { + TEXT?: TextXML[]; +}; + +type TextXML = ToXMLFields<Omit<CctrTextData, 'id' | 'createdAt' | 'updatedAt'>>; + +type PctrXML = ToXMLFields<Omit<PctrData, 'id' | 'createdAt' | 'updatedAt'>> & { + TEXT?: TextXML[]; +}; + +type ZbukrsXML = ToXMLFields<Omit<ZbukrsData, 'id' | 'createdAt' | 'updatedAt'>>; +type ZekgrpXML = ToXMLFields<Omit<ZekgrpData, 'id' | 'createdAt' | 'updatedAt'>>; +type ZekorgXML = ToXMLFields<Omit<ZekorgData, 'id' | 'createdAt' | 'updatedAt'>>; + +type ZgsberXML = ToXMLFields<Omit<ZgsberData, 'id' | 'createdAt' | 'updatedAt'>> & { + TEXT?: ZgsberTextXML[]; +}; + +type ZgsberTextXML = ToXMLFields<Omit<ZgsberTextData, 'id' | 'createdAt' | 'updatedAt'>>; + +type ZlgortXML = ToXMLFields<Omit<ZlgortData, 'id' | 'createdAt' | 'updatedAt'>>; +type ZspartXML = ToXMLFields<Omit<ZspartData, 'id' | 'createdAt' | 'updatedAt'>>; +type ZvkburXML = ToXMLFields<Omit<ZvkburData, 'id' | 'createdAt' | 'updatedAt'>>; +type ZvkgrpXML = ToXMLFields<Omit<ZvkgrpData, 'id' | 'createdAt' | 'updatedAt'>>; +type ZvkorgXML = ToXMLFields<Omit<ZvkorgData, 'id' | 'createdAt' | 'updatedAt'>>; +type ZvstelXML = ToXMLFields<Omit<ZvstelData, 'id' | 'createdAt' | 'updatedAt'>>; +type ZvtwegXML = ToXMLFields<Omit<ZvtwegData, 'id' | 'createdAt' | 'updatedAt'>>; +type ZwerksXML = ToXMLFields<Omit<ZwerksData, 'id' | 'createdAt' | 'updatedAt'>>; + +// 처리된 데이터 구조 +interface ProcessedOrganizationData { + cctrItems: Array<{ cctr: CctrData; texts: CctrTextData[] }>; + pctrItems: Array<{ pctr: PctrData; texts: CctrTextData[] }>; + zbukrsItems: ZbukrsData[]; + zekgrpItems: ZekgrpData[]; + zekorgItems: ZekorgData[]; + zgsberItems: Array<{ zgsber: ZgsberData; texts: ZgsberTextData[] }>; + zlgortItems: ZlgortData[]; + zspartItems: ZspartData[]; + zvkburItems: ZvkburData[]; + zvkgrpItems: ZvkgrpData[]; + zvkorgItems: ZvkorgData[]; + zvstelItems: ZvstelData[]; + zvtwegItems: ZvtwegData[]; + zwerksItems: ZwerksData[]; +} + +export async function GET(request: NextRequest) { + const url = new URL(request.url); + if (url.searchParams.has('wsdl')) { + return serveWsdl('IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl'); + } + + return new Response('Method Not Allowed', { status: 405 }); +} + +export async function POST(request: NextRequest) { + const url = new URL(request.url); + if (url.searchParams.has('wsdl')) { + return serveWsdl('IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl'); + } + + const body = await request.text(); + + return withSoapLogging( + 'INBOUND', + 'S-ERP', + 'IF_MDZ_EVCP_ORGANIZATION_MASTER', + body, + async () => { + console.log('🚀 ORGANIZATION_MASTER 수신 시작, 데이터 길이:', body.length); + + const parser = createXMLParser([ + 'HRHMTB_CCTR', 'HRHMTB_PCTR', 'HRHMTB_ZBUKRS', 'HRHMTB_ZEKGRP', + 'HRHMTB_ZEKORG', 'HRHMTB_ZGSBER', 'HRHMTB_ZLGORT', 'HRHMTB_ZSPART', + 'HRHMTB_ZVKBUR', 'HRHMTB_ZVKGRP', 'HRHMTB_ZVKORG', 'HRHMTB_ZVSTEL', + 'HRHMTB_ZVTWEG', 'HRHMTB_ZWERKS', 'TEXT' + ]); + + const parsedData = parser.parse(body); + console.log('XML root keys:', Object.keys(parsedData)); + + const requestData = extractRequestData(parsedData, 'IF_MDZ_EVCP_ORGANIZATION_MASTERReq'); + + if (!requestData) { + console.error('Could not find valid request data in the received payload'); + console.error('Received XML structure:', JSON.stringify(parsedData, null, 2)); + throw new Error('Missing request data - could not find IF_MDZ_EVCP_ORGANIZATION_MASTERReq data'); + } + + console.log('Validating request data structure:', + Object.keys(requestData).map(key => `${key}: ${requestData[key] ? 'found' : 'not found'}`).join(', ') + ); + + // XML 데이터를 DB 삽입 가능한 형태로 변환 + const processedOrganizations = transformOrganizationData(requestData); + + // 데이터베이스 저장 + await saveToDatabase(processedOrganizations); + + console.log('🎉 처리 완료: 조직 마스터 데이터'); + + return createSuccessResponse('http://60.101.108.100/api/IF_MDZ_EVCP_ORGANIZATION_MASTER/'); + } + ).catch(error => { + return createErrorResponse(error); + }); +} + +// XML 데이터를 DB 삽입 가능한 형태로 변환 +function transformOrganizationData(requestData: any): ProcessedOrganizationData { + const result: ProcessedOrganizationData = { + cctrItems: [], + pctrItems: [], + zbukrsItems: [], + zekgrpItems: [], + zekorgItems: [], + zgsberItems: [], + zlgortItems: [], + zspartItems: [], + zvkburItems: [], + zvkgrpItems: [], + zvkorgItems: [], + zvstelItems: [], + zvtwegItems: [], + zwerksItems: [] + }; + + // HRHMTB_CCTR 처리 + if (requestData.items1 && Array.isArray(requestData.items1)) { + result.cctrItems = requestData.items1.map((item: CctrXML) => { + const cctr = convertXMLToDBData<CctrData>( + item as Record<string, string | undefined>, + ['CCTR', 'KOKRS', 'DATBI'] + ); + + const fkData = { CCTR: item.CCTR || '' }; + const texts = processNestedArray( + item.TEXT, + (text) => convertXMLToDBData<CctrTextData>(text, [], fkData), + fkData + ); + + return { cctr, texts }; + }); + } + + // HRHMTB_PCTR 처리 + if (requestData.items2 && Array.isArray(requestData.items2)) { + result.pctrItems = requestData.items2.map((item: PctrXML) => { + const pctr = convertXMLToDBData<PctrData>( + item as Record<string, string | undefined>, + ['PCTR', 'KOKRS', 'DATBI'] + ); + + const fkData = { CCTR: item.PCTR || '' }; // TEXT 테이블은 CCTR 필드를 사용 + const texts = processNestedArray( + item.TEXT, + (text) => convertXMLToDBData<CctrTextData>(text, [], fkData), + fkData + ); + + return { pctr, texts }; + }); + } + + // HRHMTB_ZBUKRS 처리 + if (requestData.items3 && Array.isArray(requestData.items3)) { + result.zbukrsItems = requestData.items3.map((item: ZbukrsXML) => + convertXMLToDBData<ZbukrsData>( + item as Record<string, string | undefined>, + ['ZBUKRS'] + ) + ); + } + + // HRHMTB_ZEKGRP 처리 + if (requestData.items4 && Array.isArray(requestData.items4)) { + result.zekgrpItems = requestData.items4.map((item: ZekgrpXML) => + convertXMLToDBData<ZekgrpData>( + item as Record<string, string | undefined>, + ['ZEKGRP'] + ) + ); + } + + // HRHMTB_ZEKORG 처리 + if (requestData.items5 && Array.isArray(requestData.items5)) { + result.zekorgItems = requestData.items5.map((item: ZekorgXML) => + convertXMLToDBData<ZekorgData>( + item as Record<string, string | undefined>, + ['ZEKORG'] + ) + ); + } + + // HRHMTB_ZGSBER 처리 + if (requestData.items6 && Array.isArray(requestData.items6)) { + result.zgsberItems = requestData.items6.map((item: ZgsberXML) => { + const zgsber = convertXMLToDBData<ZgsberData>( + item as Record<string, string | undefined>, + ['ZGSBER'] + ); + + const fkData = { ZGSBER: item.ZGSBER || '' }; + const texts = processNestedArray( + item.TEXT, + (text) => convertXMLToDBData<ZgsberTextData>(text, ['LANGU'], fkData), + fkData + ); + + return { zgsber, texts }; + }); + } + + // HRHMTB_ZLGORT 처리 + if (requestData.items7 && Array.isArray(requestData.items7)) { + result.zlgortItems = requestData.items7.map((item: ZlgortXML) => + convertXMLToDBData<ZlgortData>( + item as Record<string, string | undefined>, + ['ZLGORT', 'ZWERKS'] + ) + ); + } + + // HRHMTB_ZSPART 처리 + if (requestData.items8 && Array.isArray(requestData.items8)) { + result.zspartItems = requestData.items8.map((item: ZspartXML) => + convertXMLToDBData<ZspartData>( + item as Record<string, string | undefined>, + ['ZSPART'] + ) + ); + } + + // HRHMTB_ZVKBUR 처리 + if (requestData.items9 && Array.isArray(requestData.items9)) { + result.zvkburItems = requestData.items9.map((item: ZvkburXML) => + convertXMLToDBData<ZvkburData>( + item as Record<string, string | undefined>, + ['ZVKBUR'] + ) + ); + } + + // HRHMTB_ZVKGRP 처리 + if (requestData.items10 && Array.isArray(requestData.items10)) { + result.zvkgrpItems = requestData.items10.map((item: ZvkgrpXML) => + convertXMLToDBData<ZvkgrpData>( + item as Record<string, string | undefined>, + ['ZVKGRP'] + ) + ); + } + + // HRHMTB_ZVKORG 처리 + if (requestData.items11 && Array.isArray(requestData.items11)) { + result.zvkorgItems = requestData.items11.map((item: ZvkorgXML) => + convertXMLToDBData<ZvkorgData>( + item as Record<string, string | undefined>, + ['ZVKORG'] + ) + ); + } + + // HRHMTB_ZVSTEL 처리 + if (requestData.items12 && Array.isArray(requestData.items12)) { + result.zvstelItems = requestData.items12.map((item: ZvstelXML) => + convertXMLToDBData<ZvstelData>( + item as Record<string, string | undefined>, + ['ZVSTEL'] + ) + ); + } + + // HRHMTB_ZVTWEG 처리 + if (requestData.items13 && Array.isArray(requestData.items13)) { + result.zvtwegItems = requestData.items13.map((item: ZvtwegXML) => + convertXMLToDBData<ZvtwegData>( + item as Record<string, string | undefined>, + ['ZVTWEG'] + ) + ); + } + + // HRHMTB_ZWERKS 처리 + if (requestData.items14 && Array.isArray(requestData.items14)) { + result.zwerksItems = requestData.items14.map((item: ZwerksXML) => + convertXMLToDBData<ZwerksData>( + item as Record<string, string | undefined>, + ['ZWERKS'] + ) + ); + } + + return result; +} + +// 데이터베이스 저장 함수 +async function saveToDatabase(processedOrganizations: ProcessedOrganizationData) { + console.log('데이터베이스 저장 함수가 호출됨. 조직 마스터 데이터 수신.'); + + try { + await db.transaction(async (tx) => { + // CCTR 테이블 처리 + for (const { cctr, texts } of processedOrganizations.cctrItems) { + if (!cctr.CCTR) continue; + + await tx.insert(ORGANIZATION_MASTER_HRHMTB_CCTR) + .values(cctr) + .onConflictDoUpdate({ + target: ORGANIZATION_MASTER_HRHMTB_CCTR.CCTR, + set: { ...cctr, updatedAt: new Date() } + }); + + await replaceSubTableData(tx, ORGANIZATION_MASTER_HRHMTB_CCTR_TEXT, texts, 'CCTR', cctr.CCTR); + } + + // PCTR 테이블 처리 + for (const { pctr, texts } of processedOrganizations.pctrItems) { + if (!pctr.PCTR) continue; + + await tx.insert(ORGANIZATION_MASTER_HRHMTB_PCTR) + .values(pctr) + .onConflictDoUpdate({ + target: ORGANIZATION_MASTER_HRHMTB_PCTR.PCTR, + set: { ...pctr, updatedAt: new Date() } + }); + + // PCTR의 TEXT는 CCTR_TEXT 테이블을 사용하므로 처리하지 않음 + } + + // 나머지 단일 테이블들 처리 + const tableProcessors = [ + { items: processedOrganizations.zbukrsItems, table: ORGANIZATION_MASTER_HRHMTB_ZBUKRS, key: 'ZBUKRS' }, + { items: processedOrganizations.zekgrpItems, table: ORGANIZATION_MASTER_HRHMTB_ZEKGRP, key: 'ZEKGRP' }, + { items: processedOrganizations.zekorgItems, table: ORGANIZATION_MASTER_HRHMTB_ZEKORG, key: 'ZEKORG' }, + { items: processedOrganizations.zlgortItems, table: ORGANIZATION_MASTER_HRHMTB_ZLGORT, key: 'ZLGORT' }, + { items: processedOrganizations.zspartItems, table: ORGANIZATION_MASTER_HRHMTB_ZSPART, key: 'ZSPART' }, + { items: processedOrganizations.zvkburItems, table: ORGANIZATION_MASTER_HRHMTB_ZVKBUR, key: 'ZVKBUR' }, + { items: processedOrganizations.zvkgrpItems, table: ORGANIZATION_MASTER_HRHMTB_ZVKGRP, key: 'ZVKGRP' }, + { items: processedOrganizations.zvkorgItems, table: ORGANIZATION_MASTER_HRHMTB_ZVKORG, key: 'ZVKORG' }, + { items: processedOrganizations.zvstelItems, table: ORGANIZATION_MASTER_HRHMTB_ZVSTEL, key: 'ZVSTEL' }, + { items: processedOrganizations.zvtwegItems, table: ORGANIZATION_MASTER_HRHMTB_ZVTWEG, key: 'ZVTWEG' }, + { items: processedOrganizations.zwerksItems, table: ORGANIZATION_MASTER_HRHMTB_ZWERKS, key: 'ZWERKS' } + ]; + + for (const { items, table, key } of tableProcessors) { + for (const item of items) { + if (!(item as any)[key]) continue; + + await tx.insert(table) + .values(item) + .onConflictDoUpdate({ + target: (table as any)[key], + set: { ...item, updatedAt: new Date() } + }); + } + } + + // ZGSBER 테이블 처리 (TEXT 포함) + for (const { zgsber, texts } of processedOrganizations.zgsberItems) { + if (!zgsber.ZGSBER) continue; + + await tx.insert(ORGANIZATION_MASTER_HRHMTB_ZGSBER) + .values(zgsber) + .onConflictDoUpdate({ + target: ORGANIZATION_MASTER_HRHMTB_ZGSBER.ZGSBER, + set: { ...zgsber, updatedAt: new Date() } + }); + + await replaceSubTableData(tx, ORGANIZATION_MASTER_HRHMTB_ZGSBER_TEXT, texts, 'ZGSBER', zgsber.ZGSBER); + } + }); + + console.log('조직 마스터 데이터 처리 완료.'); + return true; + } catch (error) { + console.error('데이터베이스 저장 중 오류 발생:', error); + throw error; + } +} diff --git a/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_PROJECT_MASTER/route.ts b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_PROJECT_MASTER/route.ts new file mode 100644 index 00000000..167c5c5d --- /dev/null +++ b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_PROJECT_MASTER/route.ts @@ -0,0 +1,153 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import { NextRequest } from "next/server"; +import db from "@/db/db"; +import { + PROJECT_MASTER_CMCTB_PROJ_MAST +} from "@/db/schema/MDG/mdg"; +import { + ToXMLFields, + serveWsdl, + createXMLParser, + extractRequestData, + convertXMLToDBData, + createErrorResponse, + createSuccessResponse, + withSoapLogging +} from "../utils"; + +// 스키마에서 직접 타입 추론 +type ProjectData = typeof PROJECT_MASTER_CMCTB_PROJ_MAST.$inferInsert; + +// XML에서 받는 데이터 구조 +type ProjectXML = ToXMLFields<Omit<ProjectData, 'id' | 'createdAt' | 'updatedAt'>>; + +// 처리된 데이터 구조 +interface ProcessedProjectData { + project: ProjectData; +} + +export async function GET(request: NextRequest) { + const url = new URL(request.url); + if (url.searchParams.has('wsdl')) { + return serveWsdl('IF_MDZ_EVCP_PROJECT_MASTER.wsdl'); + } + + return new Response('Method Not Allowed', { status: 405 }); +} + +export async function POST(request: NextRequest) { + const url = new URL(request.url); + if (url.searchParams.has('wsdl')) { + return serveWsdl('IF_MDZ_EVCP_PROJECT_MASTER.wsdl'); + } + + const body = await request.text(); + + return withSoapLogging( + 'INBOUND', + 'S-ERP', + 'IF_MDZ_EVCP_PROJECT_MASTER', + body, + async () => { + console.log('Request Body 일부:', body.substring(0, 200) + (body.length > 200 ? '...' : '')); + + const parser = createXMLParser(['CMCTB_PROJ_MAST']); + const parsedData = parser.parse(body); + console.log('XML root keys:', Object.keys(parsedData)); + + const requestData = extractRequestData(parsedData, 'IF_MDZ_EVCP_PROJECT_MASTERReq'); + + if (!requestData) { + console.error('Could not find valid request data in the received payload'); + console.error('Received XML structure:', JSON.stringify(parsedData, null, 2)); + throw new Error('Missing request data - could not find IF_MDZ_EVCP_PROJECT_MASTERReq or CMCTB_PROJ_MAST data'); + } + + console.log('Validating request data structure:', + `CMCTB_PROJ_MAST: ${requestData.CMCTB_PROJ_MAST ? 'found' : 'not found'}` + ); + + if (requestData.CMCTB_PROJ_MAST && Array.isArray(requestData.CMCTB_PROJ_MAST) && requestData.CMCTB_PROJ_MAST.length > 0) { + console.log('First CMCTB_PROJ_MAST sample:', JSON.stringify(requestData.CMCTB_PROJ_MAST[0], null, 2)); + } + + // XML 데이터를 DB 삽입 가능한 형태로 변환 + const processedProjects = transformProjectData(requestData.CMCTB_PROJ_MAST as ProjectXML[] || []); + + // 필수 필드 검증 + for (const projectData of processedProjects) { + if (!projectData.project.PROJ_NO) { + throw new Error('Missing required field: PROJ_NO in project'); + } + } + + // 데이터베이스 저장 + await saveToDatabase(processedProjects); + + console.log(`Processed ${processedProjects.length} projects`); + + return createSuccessResponse('http://60.101.108.100/api/IF_MDZ_EVCP_PROJECT_MASTER/'); + } + ).catch(error => { + return createErrorResponse(error); + }); +} + +// XML 데이터를 DB 삽입 가능한 형태로 변환 +function transformProjectData(projectData: ProjectXML[]): ProcessedProjectData[] { + if (!projectData || !Array.isArray(projectData)) { + return []; + } + + return projectData.map(proj => { + // Project 데이터 변환 + const project = convertXMLToDBData<ProjectData>( + proj as Record<string, string | undefined>, + ['PROJ_NO'] + ); + + // 필수 필드 보정 + if (!project.PROJ_NO) { + project.PROJ_NO = ''; + } + + return { + project + }; + }); +} + +// 데이터베이스 저장 함수 +async function saveToDatabase(processedProjects: ProcessedProjectData[]) { + console.log(`데이터베이스 저장 함수가 호출됨. ${processedProjects.length}개의 프로젝트 데이터 수신.`); + + try { + await db.transaction(async (tx) => { + for (const projectData of processedProjects) { + const { project } = projectData; + + if (!project.PROJ_NO) { + console.warn('프로젝트번호(PROJ_NO)가 없는 항목 발견, 건너뜁니다.'); + continue; + } + + // Project 테이블 Upsert + await tx.insert(PROJECT_MASTER_CMCTB_PROJ_MAST) + .values(project) + .onConflictDoUpdate({ + target: PROJECT_MASTER_CMCTB_PROJ_MAST.PROJ_NO, + set: { + ...project, + updatedAt: new Date(), + } + }); + } + }); + + console.log(`${processedProjects.length}개의 프로젝트 데이터 처리 완료.`); + return true; + } catch (error) { + console.error('데이터베이스 저장 중 오류 발생:', error); + throw error; + } +} diff --git a/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_VENDOR_MASTER/route.ts b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_VENDOR_MASTER/route.ts new file mode 100644 index 00000000..e257a28a --- /dev/null +++ b/app/api/(S-ERP)/(MDG)/IF_MDZ_EVCP_VENDOR_MASTER/route.ts @@ -0,0 +1,336 @@ +import { NextRequest } from "next/server"; +import db from "@/db/db"; +import { + VENDOR_MASTER_BP_HEADER, + VENDOR_MASTER_BP_HEADER_ADDRESS, + VENDOR_MASTER_BP_HEADER_ADDRESS_AD_EMAIL, + VENDOR_MASTER_BP_HEADER_ADDRESS_AD_FAX, + VENDOR_MASTER_BP_HEADER_ADDRESS_AD_POSTAL, + VENDOR_MASTER_BP_HEADER_ADDRESS_AD_TEL, + VENDOR_MASTER_BP_HEADER_ADDRESS_AD_URL, + VENDOR_MASTER_BP_HEADER_BP_TAXNUM, + VENDOR_MASTER_BP_HEADER_BP_VENGEN, + VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_COMPNY, + VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_COMPNY_BP_WHTAX, + VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG, + VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG_ZVPFN +} from "@/db/schema/MDG/mdg"; +import { + ToXMLFields, + serveWsdl, + createXMLParser, + extractRequestData, + convertXMLToDBData, + processNestedArray, + createErrorResponse, + createSuccessResponse, + replaceSubTableData, + withSoapLogging +} from "../utils"; + +// 스키마에서 직접 타입 추론 +type VendorHeaderData = typeof VENDOR_MASTER_BP_HEADER.$inferInsert; +type AddressData = typeof VENDOR_MASTER_BP_HEADER_ADDRESS.$inferInsert; +type AdEmailData = typeof VENDOR_MASTER_BP_HEADER_ADDRESS_AD_EMAIL.$inferInsert; +type AdFaxData = typeof VENDOR_MASTER_BP_HEADER_ADDRESS_AD_FAX.$inferInsert; +type AdPostalData = typeof VENDOR_MASTER_BP_HEADER_ADDRESS_AD_POSTAL.$inferInsert; +type AdTelData = typeof VENDOR_MASTER_BP_HEADER_ADDRESS_AD_TEL.$inferInsert; +type AdUrlData = typeof VENDOR_MASTER_BP_HEADER_ADDRESS_AD_URL.$inferInsert; +type BpTaxnumData = typeof VENDOR_MASTER_BP_HEADER_BP_TAXNUM.$inferInsert; +type BpVengenData = typeof VENDOR_MASTER_BP_HEADER_BP_VENGEN.$inferInsert; +type BpCompnyData = typeof VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_COMPNY.$inferInsert; +type BpWhtaxData = typeof VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_COMPNY_BP_WHTAX.$inferInsert; +type BpPorgData = typeof VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG.$inferInsert; +type ZvpfnData = typeof VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG_ZVPFN.$inferInsert; + +// XML 구조 타입 +type VendorHeaderXML = ToXMLFields<Omit<VendorHeaderData, 'id' | 'createdAt' | 'updatedAt'>> & { + ADDRESS?: AddressXML[]; + BP_TAXNUM?: BpTaxnumXML[]; + BP_VENGEN?: BpVengenXML[]; +}; + +type AddressXML = ToXMLFields<Omit<AddressData, 'id' | 'createdAt' | 'updatedAt' | 'VNDRCD'>> & { + AD_EMAIL?: AdEmailXML[]; + AD_FAX?: AdFaxXML[]; + AD_POSTAL?: AdPostalXML[]; + AD_TEL?: AdTelXML[]; + AD_URL?: AdUrlXML[]; +}; + +type AdEmailXML = ToXMLFields<Omit<AdEmailData, 'id' | 'createdAt' | 'updatedAt' | 'VNDRCD'>>; +type AdFaxXML = ToXMLFields<Omit<AdFaxData, 'id' | 'createdAt' | 'updatedAt' | 'VNDRCD'>>; +type AdPostalXML = ToXMLFields<Omit<AdPostalData, 'id' | 'createdAt' | 'updatedAt' | 'VNDRCD'>>; +type AdTelXML = ToXMLFields<Omit<AdTelData, 'id' | 'createdAt' | 'updatedAt' | 'VNDRCD'>>; +type AdUrlXML = ToXMLFields<Omit<AdUrlData, 'id' | 'createdAt' | 'updatedAt' | 'VNDRCD'>>; + +type BpTaxnumXML = ToXMLFields<Omit<BpTaxnumData, 'id' | 'createdAt' | 'updatedAt' | 'VNDRCD'>>; + +type BpVengenXML = ToXMLFields<Omit<BpVengenData, 'id' | 'createdAt' | 'updatedAt' | 'VNDRCD'>> & { + BP_COMPNY?: BpCompnyXML[]; + BP_PORG?: BpPorgXML[]; +}; + +type BpCompnyXML = ToXMLFields<Omit<BpCompnyData, 'id' | 'createdAt' | 'updatedAt' | 'VNDRCD'>> & { + BP_WHTAX?: BpWhtaxXML[]; +}; + +type BpWhtaxXML = ToXMLFields<Omit<BpWhtaxData, 'id' | 'createdAt' | 'updatedAt' | 'VNDRCD'>>; + +type BpPorgXML = ToXMLFields<Omit<BpPorgData, 'id' | 'createdAt' | 'updatedAt' | 'VNDRCD'>> & { + ZVPFN?: ZvpfnXML[]; +}; + +type ZvpfnXML = ToXMLFields<Omit<ZvpfnData, 'id' | 'createdAt' | 'updatedAt' | 'VNDRCD'>>; + +// 처리된 데이터 구조 +interface ProcessedVendorData { + vendorHeader: VendorHeaderData; + addresses: AddressData[]; + adEmails: AdEmailData[]; + adFaxes: AdFaxData[]; + adPostals: AdPostalData[]; + adTels: AdTelData[]; + adUrls: AdUrlData[]; + bpTaxnums: BpTaxnumData[]; + bpVengens: BpVengenData[]; + bpCompnies: BpCompnyData[]; + bpWhtaxes: BpWhtaxData[]; + bpPorgs: BpPorgData[]; + zvpfns: ZvpfnData[]; +} + +export async function GET(request: NextRequest) { + const url = new URL(request.url); + if (url.searchParams.has('wsdl')) { + return serveWsdl('IF_MDZ_EVCP_VENDOR_MASTER.wsdl'); + } + + return new Response('Method Not Allowed', { status: 405 }); +} + +export async function POST(request: NextRequest) { + const url = new URL(request.url); + if (url.searchParams.has('wsdl')) { + return serveWsdl('IF_MDZ_EVCP_VENDOR_MASTER.wsdl'); + } + + const body = await request.text(); + + return withSoapLogging( + 'INBOUND', + 'S-ERP', + 'IF_MDZ_EVCP_VENDOR_MASTER', + body, + async () => { + console.log('🚀 VENDOR_MASTER 수신 시작, 데이터 길이:', body.length); + + const parser = createXMLParser([ + 'BP_HEADER', 'ADDRESS', 'AD_EMAIL', 'AD_FAX', 'AD_POSTAL', 'AD_TEL', 'AD_URL', + 'BP_TAXNUM', 'BP_VENGEN', 'BP_COMPNY', 'BP_WHTAX', 'BP_PORG', 'ZVPFN' + ]); + + const parsedData = parser.parse(body); + console.log('XML root keys:', Object.keys(parsedData)); + + const requestData = extractRequestData(parsedData, 'IF_MDZ_EVCP_VENDOR_MASTERReq'); + + if (!requestData) { + console.error('Could not find valid request data in the received payload'); + console.error('Received XML structure:', JSON.stringify(parsedData, null, 2)); + throw new Error('Missing request data - could not find IF_MDZ_EVCP_VENDOR_MASTERReq or BP_HEADER data'); + } + + console.log('Validating request data structure:', + `BP_HEADER: ${requestData.BP_HEADER ? 'found' : 'not found'}` + ); + + if (requestData.BP_HEADER && Array.isArray(requestData.BP_HEADER) && requestData.BP_HEADER.length > 0) { + console.log('First BP_HEADER sample:', JSON.stringify(requestData.BP_HEADER[0], null, 2)); + } + + // XML 데이터를 DB 삽입 가능한 형태로 변환 + const processedVendors = transformVendorData(requestData.BP_HEADER as VendorHeaderXML[] || []); + + // 필수 필드 검증 + for (const vendorData of processedVendors) { + if (!vendorData.vendorHeader.VNDRCD) { + throw new Error('Missing required field: VNDRCD in vendor'); + } + } + + // 데이터베이스 저장 + await saveToDatabase(processedVendors); + + console.log(`🎉 처리 완료: ${processedVendors.length}개 벤더 데이터`); + + return createSuccessResponse('http://60.101.108.100/api/IF_MDZ_EVCP_VENDOR_MASTER/'); + } + ).catch(error => { + return createErrorResponse(error); + }); +} + +// XML 데이터를 DB 삽입 가능한 형태로 변환 +function transformVendorData(vendorHeaderData: VendorHeaderXML[]): ProcessedVendorData[] { + if (!vendorHeaderData || !Array.isArray(vendorHeaderData)) { + return []; + } + + return vendorHeaderData.map(vendorHeader => { + const vndrcdKey = vendorHeader.VNDRCD || ''; + const fkData = { VNDRCD: vndrcdKey }; + + // 1단계: VENDOR_HEADER (루트) + const vendorHeaderConverted = convertXMLToDBData<VendorHeaderData>( + vendorHeader as Record<string, string | undefined>, + ['VNDRCD'], + fkData + ); + + // 2단계: ADDRESS와 직속 하위들 + const addresses = processNestedArray( + vendorHeader.ADDRESS, + (addr) => convertXMLToDBData<AddressData>(addr as Record<string, string | undefined>, ['ADR_NO'], fkData), + fkData + ); + + // ADDRESS의 하위 테이블들 (3단계) + const adEmails = vendorHeader.ADDRESS?.flatMap(addr => + processNestedArray(addr.AD_EMAIL, (item) => + convertXMLToDBData<AdEmailData>(item as Record<string, string | undefined>, ['REPR_SER', 'VLD_ST_DT'], fkData), fkData) + ) || []; + + const adFaxes = vendorHeader.ADDRESS?.flatMap(addr => + processNestedArray(addr.AD_FAX, (item) => + convertXMLToDBData<AdFaxData>(item as Record<string, string | undefined>, ['REPR_SER', 'VLD_ST_DT'], fkData), fkData) + ) || []; + + const adPostals = vendorHeader.ADDRESS?.flatMap(addr => + processNestedArray(addr.AD_POSTAL, (item) => + convertXMLToDBData<AdPostalData>(item as Record<string, string | undefined>, ['INTL_ADR_VER_ID'], fkData), fkData) + ) || []; + + const adTels = vendorHeader.ADDRESS?.flatMap(addr => + processNestedArray(addr.AD_TEL, (item) => + convertXMLToDBData<AdTelData>(item as Record<string, string | undefined>, ['REPR_SER', 'VLD_ST_DT'], fkData), fkData) + ) || []; + + const adUrls = vendorHeader.ADDRESS?.flatMap(addr => + processNestedArray(addr.AD_URL, (item) => + convertXMLToDBData<AdUrlData>(item as Record<string, string | undefined>, ['REPR_SER', 'VLD_ST_DT'], fkData), fkData) + ) || []; + + // 2단계: BP_TAXNUM + const bpTaxnums = processNestedArray( + vendorHeader.BP_TAXNUM, + (item) => convertXMLToDBData<BpTaxnumData>(item as Record<string, string | undefined>, ['TX_NO_CTG'], fkData), + fkData + ); + + // 2단계: BP_VENGEN과 하위들 + const bpVengens = processNestedArray( + vendorHeader.BP_VENGEN, + (vengen) => convertXMLToDBData<BpVengenData>(vengen as Record<string, string | undefined>, ['VNDRNO'], fkData), + fkData + ); + + // BP_VENGEN의 하위 테이블들 (3단계) + const bpCompnies = vendorHeader.BP_VENGEN?.flatMap(vengen => + processNestedArray(vengen.BP_COMPNY, (item) => + convertXMLToDBData<BpCompnyData>(item as Record<string, string | undefined>, ['CO_CD'], fkData), fkData) + ) || []; + + const bpPorgs = vendorHeader.BP_VENGEN?.flatMap(vengen => + processNestedArray(vengen.BP_PORG, (item) => + convertXMLToDBData<BpPorgData>(item as Record<string, string | undefined>, ['PUR_ORG_CD'], fkData), fkData) + ) || []; + + // BP_COMPNY의 하위 테이블 (4단계) + const bpWhtaxes = vendorHeader.BP_VENGEN?.flatMap(vengen => + vengen.BP_COMPNY?.flatMap(compny => + processNestedArray(compny.BP_WHTAX, (item) => + convertXMLToDBData<BpWhtaxData>(item as Record<string, string | undefined>, ['SRCE_TX_TP'], fkData), fkData) + ) || [] + ) || []; + + // BP_PORG의 하위 테이블 (4단계) + const zvpfns = vendorHeader.BP_VENGEN?.flatMap(vengen => + vengen.BP_PORG?.flatMap(porg => + processNestedArray(porg.ZVPFN, (item) => + convertXMLToDBData<ZvpfnData>(item as Record<string, string | undefined>, ['PTNR_SKL', 'PTNR_CNT'], fkData), fkData) + ) || [] + ) || []; + + return { + vendorHeader: vendorHeaderConverted, + addresses, + adEmails, + adFaxes, + adPostals, + adTels, + adUrls, + bpTaxnums, + bpVengens, + bpCompnies, + bpWhtaxes, + bpPorgs, + zvpfns + }; + }); +} + +// 데이터베이스 저장 함수 +async function saveToDatabase(processedVendors: ProcessedVendorData[]) { + console.log(`데이터베이스 저장 시작: ${processedVendors.length}개 벤더 데이터`); + + try { + await db.transaction(async (tx) => { + for (const vendorData of processedVendors) { + const { vendorHeader, addresses, adEmails, adFaxes, adPostals, adTels, adUrls, + bpTaxnums, bpVengens, bpCompnies, bpWhtaxes, bpPorgs, zvpfns } = vendorData; + + if (!vendorHeader.VNDRCD) { + console.warn('벤더코드(VNDRCD)가 없는 항목 발견, 건너뜁니다.'); + continue; + } + + // 1. BP_HEADER 테이블 Upsert (최상위 테이블) + await tx.insert(VENDOR_MASTER_BP_HEADER) + .values(vendorHeader) + .onConflictDoUpdate({ + target: VENDOR_MASTER_BP_HEADER.VNDRCD, + set: { + ...vendorHeader, + updatedAt: new Date(), + } + }); + + // 2. 하위 테이블들 처리 - FK 기준으로 전체 삭제 후 재삽입 + await Promise.all([ + // 2단계 테이블들 + replaceSubTableData(tx, VENDOR_MASTER_BP_HEADER_ADDRESS, addresses, 'VNDRCD', vendorHeader.VNDRCD), + replaceSubTableData(tx, VENDOR_MASTER_BP_HEADER_BP_TAXNUM, bpTaxnums, 'VNDRCD', vendorHeader.VNDRCD), + replaceSubTableData(tx, VENDOR_MASTER_BP_HEADER_BP_VENGEN, bpVengens, 'VNDRCD', vendorHeader.VNDRCD), + + // 3-4단계 테이블들 + replaceSubTableData(tx, VENDOR_MASTER_BP_HEADER_ADDRESS_AD_EMAIL, adEmails, 'VNDRCD', vendorHeader.VNDRCD), + replaceSubTableData(tx, VENDOR_MASTER_BP_HEADER_ADDRESS_AD_FAX, adFaxes, 'VNDRCD', vendorHeader.VNDRCD), + replaceSubTableData(tx, VENDOR_MASTER_BP_HEADER_ADDRESS_AD_POSTAL, adPostals, 'VNDRCD', vendorHeader.VNDRCD), + replaceSubTableData(tx, VENDOR_MASTER_BP_HEADER_ADDRESS_AD_TEL, adTels, 'VNDRCD', vendorHeader.VNDRCD), + replaceSubTableData(tx, VENDOR_MASTER_BP_HEADER_ADDRESS_AD_URL, adUrls, 'VNDRCD', vendorHeader.VNDRCD), + replaceSubTableData(tx, VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_COMPNY, bpCompnies, 'VNDRCD', vendorHeader.VNDRCD), + replaceSubTableData(tx, VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_COMPNY_BP_WHTAX, bpWhtaxes, 'VNDRCD', vendorHeader.VNDRCD), + replaceSubTableData(tx, VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG, bpPorgs, 'VNDRCD', vendorHeader.VNDRCD), + replaceSubTableData(tx, VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG_ZVPFN, zvpfns, 'VNDRCD', vendorHeader.VNDRCD), + ]); + } + }); + + console.log(`✅ 데이터베이스 저장 완료: ${processedVendors.length}개 벤더`); + return true; + } catch (error) { + console.error('❌ 데이터베이스 저장 중 오류 발생:', error); + throw error; + } +} diff --git a/app/api/(S-ERP)/(MDG)/utils.ts b/app/api/(S-ERP)/(MDG)/utils.ts new file mode 100644 index 00000000..bcb1dd45 --- /dev/null +++ b/app/api/(S-ERP)/(MDG)/utils.ts @@ -0,0 +1,396 @@ +import { XMLParser } from "fast-xml-parser"; +import { readFileSync } from "fs"; +import { NextRequest, NextResponse } from "next/server"; +import { join } from "path"; +import { eq, desc } from "drizzle-orm"; +import db from "@/db/db"; +import { soapLogs, type LogDirection, type SoapLogInsert } from "@/db/schema/SOAP/soap"; + +// XML 파싱용 타입 유틸리티: 스키마에서 XML 타입 생성 +export type ToXMLFields<T> = { + [K in keyof T]?: T[K] extends string | null | undefined ? string : never; +}; + +// SOAP Body 데이터 타입 (범용) +export interface SoapBodyData { + [key: string]: unknown; +} + +// WSDL 파일 제공 함수 +export function serveWsdl(wsdlFileName: string) { + try { + const wsdlPath = join(process.cwd(), 'public', 'wsdl', wsdlFileName); + const wsdlContent = readFileSync(wsdlPath, 'utf-8'); + + return new NextResponse(wsdlContent, { + headers: { + 'Content-Type': 'text/xml; charset=utf-8', + }, + }); + } catch (error) { + console.error('Failed to read WSDL file:', error); + return new NextResponse('WSDL file not found', { status: 404 }); + } +} + +// XML 파서 생성 (기본 설정) +export function createXMLParser(arrayTags: string[] = []) { + return new XMLParser({ + ignoreAttributes: false, + attributeNamePrefix: '@_', + parseAttributeValue: false, + trimValues: true, + isArray: (name: string) => arrayTags.includes(name), + parseTagValue: false, + allowBooleanAttributes: true, + }); +} + +// SOAP Body나 루트에서 요청 데이터 추출 (범용) +export function extractRequestData( + parsedData: Record<string, unknown>, + requestKeyPattern: string +): SoapBodyData | null { + // SOAP 구조 체크 + const soapPaths = [ + ['soap:Envelope', 'soap:Body'], + ['SOAP:Envelope', 'SOAP:Body'], + ['Envelope', 'Body'], + ['soapenv:Envelope', 'soapenv:Body'] + ]; + + for (const [envelope, body] of soapPaths) { + if (parsedData?.[envelope]?.[body]) { + const result = extractFromSoapBody(parsedData[envelope][body] as SoapBodyData, requestKeyPattern); + if (result) return result; + } + } + + // 직접 요청 데이터 체크 + const requestKeys = [ + requestKeyPattern, + `tns:${requestKeyPattern}`, + `ns1:${requestKeyPattern}`, + `p0:${requestKeyPattern}` + ]; + + for (const key of requestKeys) { + if (parsedData?.[key]) { + return parsedData[key] as SoapBodyData; + } + } + + // 키 이름 패턴 검색 + for (const key of Object.keys(parsedData)) { + if (key.includes(requestKeyPattern)) { + return parsedData[key] as SoapBodyData; + } + } + + // 메인 데이터가 직접 있는 경우 (MATL 등) + if (parsedData?.MATL && Array.isArray(parsedData.MATL)) { + return parsedData as SoapBodyData; + } + + return null; +} + +function extractFromSoapBody(soapBody: SoapBodyData, requestKeyPattern: string): SoapBodyData | null { + const requestKeys = [ + requestKeyPattern.replace('Req', ''), + requestKeyPattern, + `tns:${requestKeyPattern}`, + `ns1:${requestKeyPattern}`, + `p0:${requestKeyPattern}` + ]; + + for (const key of requestKeys) { + if (soapBody?.[key]) { + return soapBody[key] as SoapBodyData; + } + } + + // 패턴 검색 + for (const key of Object.keys(soapBody)) { + if (key.includes(requestKeyPattern)) { + return soapBody[key] as SoapBodyData; + } + } + + // 메인 데이터가 직접 있는 경우 + if (soapBody.MATL && Array.isArray(soapBody.MATL)) { + return soapBody; + } + + return null; +} + +// 범용 XML → DB 변환 함수 +export function convertXMLToDBData<T extends Record<string, unknown>>( + xmlData: Record<string, string | undefined>, + requiredFields: (keyof T)[] = [], + fkData?: Record<string, string> +): T { + const result = {} as T; + + // XML 필드를 DB 필드로 변환 (string → string|null) + for (const key in xmlData) { + if (xmlData.hasOwnProperty(key)) { + const value = xmlData[key]; + (result as Record<string, unknown>)[key] = value || null; + } + } + + // 필수 필드 처리 (FK 등) + for (const field of requiredFields) { + if (!result[field] && fkData) { + const fieldStr = String(field); + if (fkData[fieldStr]) { + (result as Record<string, unknown>)[field] = fkData[fieldStr]; + } + } + } + + return result; +} + +// 중첩 배열 처리 함수 +export function processNestedArray<T, U>( + items: T[] | undefined, + converter: (item: T, fkData?: Record<string, string>) => U, + fkData?: Record<string, string> +): U[] { + if (!items || !Array.isArray(items)) { + return []; + } + + return items.map(item => converter(item, fkData)); +} + +// 에러 응답 생성 +export function createErrorResponse(error: unknown): NextResponse { + console.error('API Error:', error); + + const errorResponse = `<?xml version="1.0" encoding="UTF-8"?> +<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> + <soap:Body> + <soap:Fault> + <faultcode>soap:Server</faultcode> + <faultstring>${error instanceof Error ? ('[from eVCP]: ' + error.message) : 'Unknown error'}</faultstring> + </soap:Fault> + </soap:Body> +</soap:Envelope>`; + + return new NextResponse(errorResponse, { + status: 500, + headers: { + 'Content-Type': 'text/xml; charset=utf-8', + }, + }); +} + +// 성공 응답 생성 +export function createSuccessResponse(namespace: string): NextResponse { + const xmlResponse = `<?xml version="1.0" encoding="UTF-8"?> +<soap:Envelope + xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:tns="${namespace}"> + <soap:Body> + </soap:Body> +</soap:Envelope>`; + + return new NextResponse(xmlResponse, { + headers: { + 'Content-Type': 'text/xml; charset=utf-8', + }, + }); +} + +// 하위 테이블 처리: FK 기준으로 전체 삭제 후 재삽입 +export async function replaceSubTableData<T>( + tx: any, + table: any, + data: T[], + parentField: string, + parentValue: string +) { + // 1. 기존 데이터 전체 삭제 (FK 기준) - eq() 함수 사용 + await tx.delete(table).where(eq(table[parentField], parentValue)); + + // 2. 새 데이터 삽입 + if (data.length > 0) { + await tx.insert(table).values(data); + } +} + +// ======================================== +// SOAP 로그 관련 공통 함수들 +// ======================================== + +/** + * SOAP 요청 로그를 시작하고 로그 ID를 반환 + * @param direction 수신/송신 구분 ('INBOUND' | 'OUTBOUND') + * @param system 시스템명 (예: 'S-ERP', 'MDG') + * @param interfaceName 인터페이스명 (예: 'IF_MDZ_EVCP_CUSTOMER_MASTER') + * @param requestData 요청 XML 데이터 + * @returns 생성된 로그 ID + */ +export async function startSoapLog( + direction: LogDirection, + system: string, + interfaceName: string, + requestData: string +): Promise<number> { + try { + const logData: SoapLogInsert = { + direction, + system, + interface: interfaceName, + startedAt: new Date(), + endedAt: null, + isSuccess: false, + requestData, + responseData: null, + errorMessage: null, + }; + + const [result] = await db.insert(soapLogs).values(logData).returning({ id: soapLogs.id }); + + console.log(`📝 SOAP 로그 시작 [${direction}] ${system}/${interfaceName} - ID: ${result.id}`); + return result.id; + } catch (error) { + console.error('SOAP 로그 시작 실패:', error); + throw error; + } +} + +/** + * SOAP 요청 로그를 완료 처리 + * @param logId 로그 ID + * @param isSuccess 성공 여부 + * @param responseData 응답 XML 데이터 (선택사항) + * @param errorMessage 에러 메시지 (실패시) + */ +export async function completeSoapLog( + logId: number, + isSuccess: boolean, + responseData?: string, + errorMessage?: string +): Promise<void> { + try { + await db.update(soapLogs) + .set({ + endedAt: new Date(), + isSuccess, + responseData: responseData || null, + errorMessage: errorMessage || null, + }) + .where(eq(soapLogs.id, logId)); + + console.log(`✅ SOAP 로그 완료 - ID: ${logId}, 성공: ${isSuccess}`); + } catch (error) { + console.error('SOAP 로그 완료 처리 실패:', error); + throw error; + } +} + +/** + * 환경변수 기반으로 오래된 SOAP 로그 정리 + * SOAP_LOG_MAX_RECORDS 환경변수를 확인하여 최대 개수 초과시 오래된 로그 삭제 + */ +export async function cleanupOldSoapLogs(): Promise<void> { + try { + const maxRecords = parseInt(process.env.SOAP_LOG_MAX_RECORDS || '0'); + + if (maxRecords <= 0) { + console.log('🔄 SOAP 로그 정리: 무제한 저장 설정 (SOAP_LOG_MAX_RECORDS = 0)'); + return; + } + + // 현재 총 로그 개수 확인 + const totalLogs = await db.select({ count: soapLogs.id }).from(soapLogs); + const currentCount = totalLogs.length; + + if (currentCount <= maxRecords) { + console.log(`🔄 SOAP 로그 정리: 현재 ${currentCount}개, 최대 ${maxRecords}개 - 정리 불필요`); + return; + } + + // 삭제할 개수 계산 + const deleteCount = currentCount - maxRecords; + + // 가장 오래된 로그들 조회 (ID 기준) + const oldestLogs = await db.select({ id: soapLogs.id }) + .from(soapLogs) + .orderBy(soapLogs.id) + .limit(deleteCount); + + if (oldestLogs.length === 0) { + console.log('🔄 SOAP 로그 정리: 삭제할 로그 없음'); + return; + } + + // 오래된 로그들 삭제 + const oldestIds = oldestLogs.map(log => log.id); + + // 배치 삭제 (IN 절 사용) + for (const logId of oldestIds) { + await db.delete(soapLogs).where(eq(soapLogs.id, logId)); + } + + console.log(`🗑️ SOAP 로그 정리 완료: ${deleteCount}개 삭제 (${currentCount} → ${maxRecords})`); + } catch (error) { + console.error('SOAP 로그 정리 실패:', error); + throw error; + } +} + +/** + * SOAP 로그 관련 래퍼 함수: 로그 시작부터 완료까지 자동 처리 + * @param direction 수신/송신 구분 + * @param system 시스템명 + * @param interfaceName 인터페이스명 + * @param requestData 요청 데이터 + * @param processor 실제 비즈니스 로직 함수 + * @returns 처리 결과 + */ +export async function withSoapLogging<T>( + direction: LogDirection, + system: string, + interfaceName: string, + requestData: string, + processor: () => Promise<T> +): Promise<T> { + let logId: number | null = null; + + try { + // 1. 로그 시작 + logId = await startSoapLog(direction, system, interfaceName, requestData); + + // 2. 실제 처리 실행 + const result = await processor(); + + // 3. 성공 로그 완료 + await completeSoapLog(logId, true); + + // 4. 로그 정리 (백그라운드) + cleanupOldSoapLogs().catch(error => + console.error('백그라운드 로그 정리 실패:', error) + ); + + return result; + + } catch (error) { + // 5. 실패 로그 완료 + if (logId !== null) { + await completeSoapLog( + logId, + false, + undefined, + error instanceof Error ? error.message : 'Unknown error' + ); + } + + throw error; + } +}
\ No newline at end of file diff --git a/app/api/auth/[...nextauth]/saml/provider.ts b/app/api/auth/[...nextauth]/saml/provider.ts index 8486a690..dfe3d830 100644 --- a/app/api/auth/[...nextauth]/saml/provider.ts +++ b/app/api/auth/[...nextauth]/saml/provider.ts @@ -228,6 +228,7 @@ export async function authenticateSAMLUser(userData: SAMLUser) { } } +// TODO: SecuritySetting 함수에서 가져올 것 // NextAuth JWT 토큰 생성 헬퍼 export async function createNextAuthToken(user: User): Promise<string> { const token = { @@ -239,7 +240,7 @@ export async function createNextAuthToken(user: User): Promise<string> { domain: user.domain, imageUrl: user.imageUrl, iat: Math.floor(Date.now() / 1000), - exp: Math.floor(Date.now() / 1000) + (30 * 24 * 60 * 60) // 30일 + exp: Math.floor(Date.now() / 1000) + (480 * 60) // 480분 }; const secret = process.env.NEXTAUTH_SECRET!; @@ -256,4 +257,3 @@ export function getSessionCookieName(): string { ? '__Secure-next-auth.session-token' : 'next-auth.session-token'; } -
\ No newline at end of file diff --git a/components/login/login-form.tsx b/components/login/login-form.tsx index 7af607b5..bb588ba0 100644 --- a/components/login/login-form.tsx +++ b/components/login/login-form.tsx @@ -272,7 +272,7 @@ export function LoginForm({ }); } } catch (error) { - console.error('Login error:', error); + console.error('S-GIPS Login error:', error); toast({ title: t('errorTitle'), description: t('defaultErrorMessage'), diff --git a/db/schema/MDG/mdg.ts b/db/schema/MDG/mdg.ts index 217f94bb..31dc61d3 100644 --- a/db/schema/MDG/mdg.ts +++ b/db/schema/MDG/mdg.ts @@ -1,1323 +1,1812 @@ -import { relations } from 'drizzle-orm'; -import { timestamp, integer, varchar, pgSchema, unique } from 'drizzle-orm/pg-core'; +import { pgSchema } from 'drizzle-orm/pg-core'; +import { integer, varchar, timestamp, text } from 'drizzle-orm/pg-core'; -// MDG 전용 PostgreSQL 스키마 생성 +// 테이블이 너무 많아서 별도 스키마로 분리함 export const mdgSchema = pgSchema("mdg"); -export const BP_HEADER = mdgSchema.table('BP_HEADER', { - id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - BP_HEADER: varchar({ length: 255 }), // Business Partner Number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 - VNDRCD: varchar({ length: 255 }), // VENDOR코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 +// unique 잡아준 건 충돌 기준이 됨 +// fk 는 정의서에서 안나와 있어서 나프로님 알려준 거 + 추정해서 만듦. + +// WSDL 기반 자동 생성된 스키마 +// 생성일시: 2025-06-25 00:28:21 (UTC로 9시간 빼야 한국 시간) +// 개선사항: +// 1. WSDL별로 테이블 만들었음. 인터페이스 정의서에 문제가 많아서 어쩔 수 없었음. +// 2. 타입은 varchar를 사용하도록 했음. 숫자관련된 건 부호, 소수점 대비 방어적으로 처리함 (사이즈) +// 3. 테이블명에서 '/' 문자를 '_'로 변경하여 PostgreSQL/TypeScript 호환성 확보함 + +// 수작업 처리한 부분은 +// 1. 루트 테이블 주석 추가 +// 2. FK 없는 건 명시적으로 추가 + +// 참고로 PK 관련해서는, 루트 테이블에 대해선 id가 필요없을수도 있음. +// 다만... 방어적으로 코딩하기 위해 별도의 인공키를 PK로 사용하기로 했음. +// 하위 테이블은 unique로 추정되는 필드가 있어도, 무시하기로 했음. +// 왜냐면 인터페이스 정의서를 신뢰할 수 없기에, 데이터가 어떤 식으로 들어오는지 알 수 없기 때문임 +// 어차피 전체 필드를 보내준다고 했으니, 루트만 충돌 기준을 정해두고, 하위 테이블은 FK 기준으로 전부 지우고 다시 넣으면 됨. + +// [root] +export const CUSTOMER_MASTER_BP_HEADER = mdgSchema.table('CUSTOMER_MASTER_BP_HEADER', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + BP_HEADER: varchar({ length: 10 }).notNull().unique(), // Business Partner Number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), -}, (table) => [ - unique().on(table.BP_HEADER), -]); +}); -// TODO: 물어봐야 함 -// BP_HEADER_ADDRESS 를 upsert 할 때 저장해줘야 하는건지? ADR_NO가 어떤 BP_HEADER에 속하는지 알 방법이 없는 상태임 -// 인터페이스 정의서에서도 안 주는데, XML 객체 구조상에서 파악해야 하는거면, 파싱 단계에서 처리해줘야 해서 할 일이 늘어남 +export const CUSTOMER_MASTER_BP_HEADER_ADDRESS = mdgSchema.table('CUSTOMER_MASTER_BP_HEADER_ADDRESS', { + // [fk] + BP_HEADER: varchar({ length: 10 }).notNull().references(() => CUSTOMER_MASTER_BP_HEADER.BP_HEADER), -export const BP_HEADER_ADDRESS = mdgSchema.table('BP_HEADER_ADDRESS', { id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - bp_header_id: integer('bp_header_id').references(() => BP_HEADER.id), // BP_HEADER FK - ADR_NO: varchar({ length: 255 }), // 주소번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + ADDRNO: varchar({ length: 10 }).notNull(), // Address Number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), -}, (table) => [ - unique().on(table.ADR_NO), -]); +}); + +export const CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_EMAIL = mdgSchema.table('CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_EMAIL', { + // [fk] + BP_HEADER: varchar({ length: 10 }).notNull().references(() => CUSTOMER_MASTER_BP_HEADER.BP_HEADER), -export const BP_HEADER_ADDRESS_AD_EMAIL = mdgSchema.table('BP_HEADER_ADDRESS_AD_EMAIL', { id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - address_id: integer('address_id').references(() => BP_HEADER_ADDRESS.id), // BP_HEADER_ADDRESS FK - CONSNUMBER: varchar({ length: 255 }), // Sequence number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 - DATE_FROM: varchar({ length: 255 }), // Valid-from date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 - EMAIL_ADR: varchar({ length: 255 }), // 이메일주소 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - REPR_SER: varchar({ length: 255 }), // 대표자순번 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 - SMTP_ADDR: varchar({ length: 255 }), // E-Mail Address // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - VLD_ST_DT: varchar({ length: 255 }), // 유효시작일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + CONSNUMBER: varchar({ length: 10 }).notNull(), // Sequence number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + DATE_FROM: varchar({ length: 10 }).notNull(), // Valid-from date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + SMTP_ADDR: varchar({ length: 241 }), // E-Mail Address // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), -}, (table) => [ - unique().on(table.CONSNUMBER, table.VLD_ST_DT), -]); +}); + +export const CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_FAX = mdgSchema.table('CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_FAX', { + // [fk] + BP_HEADER: varchar({ length: 10 }).notNull().references(() => CUSTOMER_MASTER_BP_HEADER.BP_HEADER), -export const BP_HEADER_ADDRESS_AD_FAX = mdgSchema.table('BP_HEADER_ADDRESS_AD_FAX', { id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - CONSNUMBER: varchar({ length: 255 }), // Sequence number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 - COUNTRY: varchar({ length: 255 }), // Country Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - DATE_FROM: varchar({ length: 255 }), // Valid-from date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 - FAXNO: varchar({ length: 255 }), // 팩스번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - FAX_ETS_NO: varchar({ length: 255 }), // 팩스내선번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - FAX_EXTENS: varchar({ length: 255 }), // Fax no.: Extension // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - FAX_NUMBER: varchar({ length: 255 }), // Fax number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - NTN_CD: varchar({ length: 255 }), // 국가코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - REPR_SER: varchar({ length: 255 }), // 대표자순번 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 - VLD_ST_DT: varchar({ length: 255 }), // 유효시작일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + CONSNUMBER: varchar({ length: 10 }).notNull(), // Sequence number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + COUNTRY: varchar({ length: 10 }), // Country Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + DATE_FROM: varchar({ length: 10 }).notNull(), // Valid-from date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + FAX_EXTENS: varchar({ length: 10 }), // Fax no.: Extension // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + FAX_NUMBER: varchar({ length: 30 }), // Fax number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const BP_HEADER_ADDRESS_AD_POSTAL = mdgSchema.table('BP_HEADER_ADDRESS_AD_POSTAL', { +export const CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_POSTAL = mdgSchema.table('CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_POSTAL', { + // [fk] + BP_HEADER: varchar({ length: 10 }).notNull().references(() => CUSTOMER_MASTER_BP_HEADER.BP_HEADER), + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - ADR_1: varchar({ length: 255 }), // 주소1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - ADR_2: varchar({ length: 255 }), // 주소2 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - ADR_TMZ: varchar({ length: 255 }), // 주소시간대 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - CITY1: varchar({ length: 255 }), // City // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - CITY2: varchar({ length: 255 }), // District // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - CITY_ZIP_NO: varchar({ length: 255 }), // 도시우편번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - COUNTRY: varchar({ length: 255 }), // Country Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ETC_ADR_1: varchar({ length: 255 }), // 기타주소1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - ETC_ADR_2: varchar({ length: 255 }), // 기타주소2 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - HOUSE_NUM1: varchar({ length: 255 }), // House Number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - INTL_ADR_VER_ID: varchar({ length: 255 }), // 국제주소버전ID // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 - LANGU: varchar({ length: 255 }), // Language Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - LANG_KEY: varchar({ length: 255 }), // 언어키 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - NAME1: varchar({ length: 255 }), // Name 1 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - NAME2: varchar({ length: 255 }), // Name 2 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - NAME3: varchar({ length: 255 }), // Name 3 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - NAME4: varchar({ length: 255 }), // Name 4 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - NATION: varchar({ length: 255 }), // International address version ID // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 - NTN_CD: varchar({ length: 255 }), // 국가코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - POBX: varchar({ length: 255 }), // 사서함 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - POBX_ZIP_NO: varchar({ length: 255 }), // 사서함우편번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - POST_CODE1: varchar({ length: 255 }), // Postal Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - POST_CODE2: varchar({ length: 255 }), // Postal Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - PO_BOX: varchar({ length: 255 }), // PO Box // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - REGION: varchar({ length: 255 }), // Region (State, Province, County) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - REGN_CD: varchar({ length: 255 }), // 지역코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - SORT1: varchar({ length: 255 }), // Search Term 1 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - SORT2: varchar({ length: 255 }), // Search Term 2 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - STREET: varchar({ length: 255 }), // Street // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - TAXJURCODE: varchar({ length: 255 }), // Tax Jurisdiction // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - TAX_JRDT_ZONE_CD: varchar({ length: 255 }), // 조세관할구역코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - TIME_ZONE: varchar({ length: 255 }), // Time zone // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - TITLE: varchar({ length: 255 }), // Title // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - TRANSPZONE: varchar({ length: 255 }), // Transportation zone to or from which the goods are // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - TRANS_ZONE: varchar({ length: 255 }), // 운송구역 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - TTL: varchar({ length: 255 }), // 타이틀 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - VNDRNM_1: varchar({ length: 255 }), // VENDOR명1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - VNDRNM_2: varchar({ length: 255 }), // VENDOR명2 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - VNDRNM_3: varchar({ length: 255 }), // VENDOR명3 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - VNDRNM_4: varchar({ length: 255 }), // VENDOR명4 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - VNDRNM_ABRV_1: varchar({ length: 255 }), // VENDOR명약어1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - VNDRNM_ABRV_2: varchar({ length: 255 }), // VENDOR명약어2 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - - createdAt: timestamp('created_at').defaultNow().notNull(), - updatedAt: timestamp('updated_at').defaultNow().notNull(), -}); - -export const BP_HEADER_ADDRESS_AD_TEL = mdgSchema.table('BP_HEADER_ADDRESS_AD_TEL', { - id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - CONSNUMBER: varchar({ length: 255 }), // Sequence number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 - COUNTRY: varchar({ length: 255 }), // Country Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - DATE_FROM: varchar({ length: 255 }), // Valid-from date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 - ETX_NO: varchar({ length: 255 }), // 내선번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - HP_ORDR: varchar({ length: 255 }), // 핸드폰지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - NTN_CD: varchar({ length: 255 }), // 국가코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - R3_USER: varchar({ length: 255 }), // ndicator: Telephone is a Mobile Telephone // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - REPR_SER: varchar({ length: 255 }), // 대표자순번 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 - TELNO: varchar({ length: 255 }), // 전화번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - TEL_EXTENS: varchar({ length: 255 }), // Telephone no.: Extension // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - TEL_NUMBER: varchar({ length: 255 }), // Telephone no.: dialling code+number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - VLD_ST_DT: varchar({ length: 255 }), // 유효시작일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 - - createdAt: timestamp('created_at').defaultNow().notNull(), - updatedAt: timestamp('updated_at').defaultNow().notNull(), -}); - -export const BP_HEADER_ADDRESS_AD_URL = mdgSchema.table('BP_HEADER_ADDRESS_AD_URL', { - id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - CONSNUMBER: varchar({ length: 255 }), // Sequence number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 - DATE_FROM: varchar({ length: 255 }), // Valid-from date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 - REPR_SER: varchar({ length: 255 }), // 대표자순번 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 - URI_ADDR: varchar({ length: 255 }), // Universal Resource Identifier (URI) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - URL: varchar({ length: 255 }), // URL // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - VLD_ST_DT: varchar({ length: 255 }), // 유효시작일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 - - createdAt: timestamp('created_at').defaultNow().notNull(), - updatedAt: timestamp('updated_at').defaultNow().notNull(), -}); - -export const BP_HEADER_BP_CUSGEN = mdgSchema.table('BP_HEADER_BP_CUSGEN', { - id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - ANRED: varchar({ length: 255 }), // Title // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - AUFSD: varchar({ length: 255 }), // Central order block // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - FAKSD: varchar({ length: 255 }), // Central billing block // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - GFORM: varchar({ length: 255 }), // Legal status // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - JMJAH: varchar({ length: 255 }), // Year for which the number of employees is given // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - JMZAH: varchar({ length: 255 }), // Yearly number of employees // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - J_1KFREPRE: varchar({ length: 255 }), // Name of Representative // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - J_1KFTBUS: varchar({ length: 255 }), // Type of Business // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - J_1KFTIND: varchar({ length: 255 }), // Type of Industry // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - KATR1: varchar({ length: 255 }), // Attribute1(발행구분-정발행, 역발행등 계산서 발행구분) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - KDKG1: varchar({ length: 255 }), // Condition grp1 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - KTOKD: varchar({ length: 255 }), // Account Group // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - KUNNR: varchar({ length: 255 }), // Customer Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 - LIFNR: varchar({ length: 255 }), // Vendor Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - LIFSD: varchar({ length: 255 }), // Central delivery block // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - LOEVM: varchar({ length: 255 }), // Central Deletion Flag for Master Record // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - NIELS: varchar({ length: 255 }), // Customer Type // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - NODEL: varchar({ length: 255 }), // Central deletion block for master record // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - PUGRP: varchar({ length: 255 }), // Customer Group Name // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - SPERR: varchar({ length: 255 }), // Central Posting Block // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - SPRAS: varchar({ length: 255 }), // Language Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - STCD1: varchar({ length: 255 }), // Tax Number 1 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - STCD2: varchar({ length: 255 }), // Tax Number 2 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - STCD3: varchar({ length: 255 }), // Tax Number 3 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - STCD4: varchar({ length: 255 }), // Tax Number 4 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - STCEG: varchar({ length: 255 }), // VAT Registration Number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - UMJAH: varchar({ length: 255 }), // Year For Which Sales are Given // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - UMSAT: varchar({ length: 255 }), // Annual Sales // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - UWAER: varchar({ length: 255 }), // Currency of Sales figure // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - VBUND: varchar({ length: 255 }), // Company ID of Trading Partner // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZZAPPDT_C: varchar({ length: 255 }), // Apporval Date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZZAPPTM_C: varchar({ length: 255 }), // Apporval Time // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZZAPPUS_C: varchar({ length: 255 }), // Apporval User // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZZBA: varchar({ length: 255 }), // Business Area(GBM) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZZBRSCH_C: varchar({ length: 255 }), // Industry // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZZCRMCD: varchar({ length: 255 }), // CRM Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZZDOKAR_C: varchar({ length: 255 }), // Document Type // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZZDOKNR_C: varchar({ length: 255 }), // Document // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZZDOKTL_C: varchar({ length: 255 }), // Document Part // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZZDOKVR_C: varchar({ length: 255 }), // Document version // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZZDUNS: varchar({ length: 255 }), // DUNS Number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZZFTBU: varchar({ length: 255 }), // F-Tree BU Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZZFTBUNM: varchar({ length: 255 }), // F-Tree BU Name // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZZFTDT: varchar({ length: 255 }), // F-Tree DT Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZZFTDTNM: varchar({ length: 255 }), // F-Tree DT Name // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZZFTGT: varchar({ length: 255 }), // F-Tree GT Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZZFTGTNM: varchar({ length: 255 }), // F-Tree GT Name // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZZINBFLGC: varchar({ length: 255 }), // Inbound Flag // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZZLAMDT_C: varchar({ length: 255 }), // Last Modified Date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZZLAMTM_C: varchar({ length: 255 }), // Last Modified Time // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZZLAMUS_C: varchar({ length: 255 }), // Last Modified User // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZZORT01_C: varchar({ length: 255 }), // City // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZZORT02_C: varchar({ length: 255 }), // District // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZZREASON: varchar({ length: 255 }), // Reason for Duplication // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZZREGDT_C: varchar({ length: 255 }), // Registerd Date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZZREGTM_C: varchar({ length: 255 }), // Registerd Time // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZZREGUS_C: varchar({ length: 255 }), // Registerd User // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZZSTCDT_C: varchar({ length: 255 }), // Tax number type // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZZSTRAS_C: varchar({ length: 255 }), // House number and street // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZZSUBSEQ_C: varchar({ length: 255 }), // 종사업장 일련번호 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + CITY1: varchar({ length: 40 }), // City // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + CITY2: varchar({ length: 40 }), // District // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + COUNTRY: varchar({ length: 10 }), // Country Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + HOUSE_NUM1: varchar({ length: 10 }), // House Number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + LANGU: varchar({ length: 10 }), // Language Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + NAME1: varchar({ length: 40 }), // Name 1 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + NAME2: varchar({ length: 40 }), // Name 2 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + NAME3: varchar({ length: 40 }), // Name 3 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + NAME4: varchar({ length: 40 }), // Name 4 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + NATION: varchar({ length: 10 }).notNull(), // International address version ID // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + POST_CODE1: varchar({ length: 10 }), // Postal Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + POST_CODE2: varchar({ length: 10 }), // Postal Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + PO_BOX: varchar({ length: 10 }), // PO Box // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + REGION: varchar({ length: 10 }), // Region (State, Province, County) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + SORT1: varchar({ length: 20 }), // Search Term 1 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + SORT2: varchar({ length: 20 }), // Search Term 2 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + STREET: varchar({ length: 60 }), // Street // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + TAXJURCODE: varchar({ length: 15 }), // Tax Jurisdiction // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + TIME_ZONE: varchar({ length: 10 }), // Time zone // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + TITLE: varchar({ length: 10 }), // Title // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + TRANSPZONE: varchar({ length: 10 }), // Transportation zone to or from which the goods are // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const BP_HEADER_BP_CUSGEN_ZCOMPANY = mdgSchema.table('BP_HEADER_BP_CUSGEN_ZCOMPANY', { +export const CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_TEL = mdgSchema.table('CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_TEL', { + // [fk] + BP_HEADER: varchar({ length: 10 }).notNull().references(() => CUSTOMER_MASTER_BP_HEADER.BP_HEADER), + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - AKONT: varchar({ length: 255 }), // Reconcil.acct // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - BUKRS: varchar({ length: 255 }), // Company Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 - FDGRV: varchar({ length: 255 }), // Planning Group // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - LOEVM: varchar({ length: 255 }), // Central Deletion Flag for Master Record // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - SPERR: varchar({ length: 255 }), // Posting block for company code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZAHLS: varchar({ length: 255 }), // Block Key for Payment // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZTERM: varchar({ length: 255 }), // Terms of Payment Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZUAWA: varchar({ length: 255 }), // Sort key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZWELS: varchar({ length: 255 }), // List of the Payment Methods to be Considered // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + CONSNUMBER: varchar({ length: 10 }).notNull(), // Sequence number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + COUNTRY: varchar({ length: 10 }), // Country Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + DATE_FROM: varchar({ length: 10 }).notNull(), // Valid-from date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + R3_USER: varchar({ length: 10 }), // ndicator: Telephone is a Mobile Telephone // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + TEL_EXTENS: varchar({ length: 10 }), // Telephone no.: Extension // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + TEL_NUMBER: varchar({ length: 30 }), // Telephone no.: dialling code+number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const BP_HEADER_BP_CUSGEN_ZSALES = mdgSchema.table('BP_HEADER_BP_CUSGEN_ZSALES', { +export const CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_URL = mdgSchema.table('CUSTOMER_MASTER_BP_HEADER_ADDRESS_AD_URL', { + // [fk] + BP_HEADER: varchar({ length: 10 }).notNull().references(() => CUSTOMER_MASTER_BP_HEADER.BP_HEADER), + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - ANTLF: varchar({ length: 255 }), // Maximum Number of Partial Deliveries Allowed Per I // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - AUFSD: varchar({ length: 255 }), // Customer order block (sales area) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - AWAHR: varchar({ length: 255 }), // Order probability of the item // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - BZIRK: varchar({ length: 255 }), // Sales district // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - FAKSD: varchar({ length: 255 }), // Billing block for customer (sales and distribution // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - INCO1: varchar({ length: 255 }), // Incoterms (Part 1) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - INCO2: varchar({ length: 255 }), // Incoterms (Part 2) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - KALKS: varchar({ length: 255 }), // Pricing procedure assigned to this customer // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - KDGRP: varchar({ length: 255 }), // Customer group // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - KONDA: varchar({ length: 255 }), // Price group // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - KTGRD: varchar({ length: 255 }), // Account assignment group for this customer // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - KURST: varchar({ length: 255 }), // Exchange Rate Type // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - KZAZU: varchar({ length: 255 }), // Order Combination // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - LIFSD: varchar({ length: 255 }), // Customer delivery block (sales area) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - LOEVM: varchar({ length: 255 }), // Central Deletion Flag for Master Record // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - LPRIO: varchar({ length: 255 }), // Delivery Priority // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - PLTYP: varchar({ length: 255 }), // Price List // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - SPART: varchar({ length: 255 }), // Division // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 - VERSG: varchar({ length: 255 }), // Customer Statistics Group // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - VKBUR: varchar({ length: 255 }), // Sales Office // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - VKGRP: varchar({ length: 255 }), // Sales Group // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - VKORG: varchar({ length: 255 }), // Sales Org. // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 - VSBED: varchar({ length: 255 }), // Shipping Conditions // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - VTWEG: varchar({ length: 255 }), // Distr. Channel // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 - VWERK: varchar({ length: 255 }), // From plant // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - WAERS: varchar({ length: 255 }), // Currency // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - ZTERM: varchar({ length: 255 }), // Terms of Payment Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - - createdAt: timestamp('created_at').defaultNow().notNull(), - updatedAt: timestamp('updated_at').defaultNow().notNull(), -}); - -export const BP_HEADER_BP_CUSGEN_ZSALES_ZCPFN = mdgSchema.table('BP_HEADER_BP_CUSGEN_ZSALES_ZCPFN', { - id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - DEFPA: varchar({ length: 255 }), // Default Partner // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - KUNN2: varchar({ length: 255 }), // Customer number of business partner // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - PARVW: varchar({ length: 255 }), // Partner Function // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 - PARZA: varchar({ length: 255 }), // Partner counter // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 - - createdAt: timestamp('created_at').defaultNow().notNull(), - updatedAt: timestamp('updated_at').defaultNow().notNull(), -}); - -export const BP_HEADER_BP_CUSGEN_ZTAXIND = mdgSchema.table('BP_HEADER_BP_CUSGEN_ZTAXIND', { - id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - ALAND: varchar({ length: 255 }), // Departure country // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 - TATYP: varchar({ length: 255 }), // Tax category // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 - TAXKD: varchar({ length: 255 }), // Tax classification for customer // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - - createdAt: timestamp('created_at').defaultNow().notNull(), - updatedAt: timestamp('updated_at').defaultNow().notNull(), -}); - -export const BP_HEADER_BP_CUSGEN_ZVATREG = mdgSchema.table('BP_HEADER_BP_CUSGEN_ZVATREG', { - id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - LAND1: varchar({ length: 255 }), // Country Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 - STCEG: varchar({ length: 255 }), // VAT Registration Number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - - createdAt: timestamp('created_at').defaultNow().notNull(), - updatedAt: timestamp('updated_at').defaultNow().notNull(), -}); - -export const BP_HEADER_BP_TAXNUM = mdgSchema.table('BP_HEADER_BP_TAXNUM', { - id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - BIZ_PTNR_TX_NO: varchar({ length: 255 }), // 사업파트너세금번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - TAXNUM: varchar({ length: 255 }), // Business Partner Tax Number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl - TAXTYPE: varchar({ length: 255 }), // Tax Number Category // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 - TX_NO_CTG: varchar({ length: 255 }), // 세금번호범주 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 - + CONSNUMBER: varchar({ length: 10 }).notNull(), // Sequence number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + DATE_FROM: varchar({ length: 10 }).notNull(), // Valid-from date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + URI_ADDR: text(), // Universal Resource Identifier (URI) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const BP_HEADER_BP_VENGEN = mdgSchema.table('BP_HEADER_BP_VENGEN', { +export const CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN = mdgSchema.table('CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN', { + // [fk] + BP_HEADER: varchar({ length: 10 }).notNull().references(() => CUSTOMER_MASTER_BP_HEADER.BP_HEADER), + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - ACNT_GRP: varchar({ length: 255 }), // 계정그룹 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - ACNT_GRP_TP: varchar({ length: 255 }), // 계정그룹유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - ADR_1: varchar({ length: 255 }), // 주소1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - ADR_2: varchar({ length: 255 }), // 주소2 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - AGR_DT: varchar({ length: 255 }), // 승인일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - AGR_R_ID: varchar({ length: 255 }), // 승인자ID // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - AGR_TM: varchar({ length: 255 }), // 승인시간 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - BIZCON: varchar({ length: 255 }), // 산업유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - BIZR_NO: varchar({ length: 255 }), // 사업자번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - BIZTP: varchar({ length: 255 }), // 사업유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - BIZ_UOM_CD: varchar({ length: 255 }), // 사업단위코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - BIZ_UOM_NM: varchar({ length: 255 }), // 사업단위명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - CHGR_ID: varchar({ length: 255 }), // 변경자ID // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - CHG_DT: varchar({ length: 255 }), // 변경일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - CHG_TM: varchar({ length: 255 }), // 변경시간 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - CO_ID: varchar({ length: 255 }), // 법인ID // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - CO_REG_NO: varchar({ length: 255 }), // 법인등록번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - CO_VLM: varchar({ length: 255 }), // 기업규모 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - CSTM_CD: varchar({ length: 255 }), // 고객코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - DEL_HOLD_ORDR: varchar({ length: 255 }), // 삭제보류지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - DEL_ORDR: varchar({ length: 255 }), // 삭제지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - DMST_TOP_CD: varchar({ length: 255 }), // 국내TOP코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - DMST_TOP_NM: varchar({ length: 255 }), // 국내TOP명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - DNS_NO: varchar({ length: 255 }), // DUNS번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - DOC_NO: varchar({ length: 255 }), // 문서번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - DOC_TP: varchar({ length: 255 }), // 문서유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - DOC_VER: varchar({ length: 255 }), // 문서버전 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - FIR_NM: varchar({ length: 255 }), // FIRST이름 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - GBL_TOP_CD: varchar({ length: 255 }), // GLOBALTOP코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - GBL_TOP_NM: varchar({ length: 255 }), // GLOBALTOP명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - GIRO_VNDR_ORDR: varchar({ length: 255 }), // 지로VENDOR지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - HOLD_CAUS: varchar({ length: 255 }), // 보류사유 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - INB_FLAG: varchar({ length: 255 }), // 인바운드플래그 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - INTL_LCTN_CHK_NUM: varchar({ length: 255 }), // 국제LOCATION점검숫자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - OVLAP_CAUS_CD: varchar({ length: 255 }), // 중복사유코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - PST_HOLD_ORDR: varchar({ length: 255 }), // 전기보류지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - PTNT_VNDRCD: varchar({ length: 255 }), // 잠재VENDOR코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - PTN_DOC: varchar({ length: 255 }), // 부분문서 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - PUR_HOLD_DT: varchar({ length: 255 }), // 구매보류일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - PUR_HOLD_ORDR: varchar({ length: 255 }), // 구매보류지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - QLT_CHRGR_EMAIL: varchar({ length: 255 }), // 품질담당자이메일 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - QLT_CHRGR_NM: varchar({ length: 255 }), // 품질담당자명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - QLT_CHRGR_TELNO: varchar({ length: 255 }), // 품질담당자전화번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - REGR_ID: varchar({ length: 255 }), // 등록자ID // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - REG_DT: varchar({ length: 255 }), // 등록일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - REG_TM: varchar({ length: 255 }), // 등록시간 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - REPR_NM: varchar({ length: 255 }), // 대표자명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - REPR_RESNO: varchar({ length: 255 }), // 대표자주민번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - REP_TEL_NO: varchar({ length: 255 }), // 대표전화번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - SB_WKA_SEQ: varchar({ length: 255 }), // SUB작업장순서 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - SRCETX_RP_SEX_KEY: varchar({ length: 255 }), // 원천세의무자성별키 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - TTL: varchar({ length: 255 }), // 타이틀 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - TX_CD_4: varchar({ length: 255 }), // 세금번호4 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - VAT_REG_NO: varchar({ length: 255 }), // 부가세등록번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - VNDRNM_1: varchar({ length: 255 }), // VENDOR명1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - VNDRNO: varchar({ length: 255 }), // VENDOR코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + ANRED: varchar({ length: 15 }), // Title // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + AUFSD: varchar({ length: 10 }), // Central order block // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + FAKSD: varchar({ length: 10 }), // Central billing block // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + GFORM: varchar({ length: 10 }), // Legal status // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + JMJAH: varchar({ length: 10 }), // Year for which the number of employees is given // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + JMZAH: varchar({ length: 10 }), // Yearly number of employees // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + J_1KFREPRE: varchar({ length: 10 }), // Name of Representative // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + J_1KFTBUS: varchar({ length: 30 }), // Type of Business // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + J_1KFTIND: varchar({ length: 30 }), // Type of Industry // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + KATR1: varchar({ length: 10 }), // Attribute1(발행구분-정발행, 역발행등 계산서 발행구분) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + KDKG1: varchar({ length: 10 }), // Condition grp1 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + KTOKD: varchar({ length: 10 }), // Account Group // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + KUNNR: varchar({ length: 10 }).notNull(), // Customer Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + LIFNR: varchar({ length: 10 }), // Vendor Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + LIFSD: varchar({ length: 10 }), // Central delivery block // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + LOEVM: varchar({ length: 10 }), // Central Deletion Flag for Master Record // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + NIELS: varchar({ length: 10 }), // Customer Type // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + NODEL: varchar({ length: 10 }), // Central deletion block for master record // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + PUGRP: varchar({ length: 20 }), // Customer Group Name // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + SPERR: varchar({ length: 10 }), // Central Posting Block // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + SPRAS: varchar({ length: 10 }), // Language Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + STCD1: varchar({ length: 16 }), // Tax Number 1 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + STCD2: varchar({ length: 11 }), // Tax Number 2 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + STCD3: varchar({ length: 18 }), // Tax Number 3 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + STCD4: varchar({ length: 18 }), // Tax Number 4 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + STCEG: varchar({ length: 20 }), // VAT Registration Number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + UMJAH: varchar({ length: 10 }), // Year For Which Sales are Given // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + UWAER: varchar({ length: 10 }), // Currency of Sales figure // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + VBUND: varchar({ length: 10 }), // Company ID of Trading Partner // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZAPPDT_C: varchar({ length: 10 }), // Apporval Date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZAPPTM_C: varchar({ length: 10 }), // Apporval Time // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZAPPUS_C: varchar({ length: 12 }), // Apporval User // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZBA: varchar({ length: 10 }), // Business Area(GBM) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZBRSCH_C: varchar({ length: 10 }), // Industry // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZCRMCD: varchar({ length: 20 }), // CRM Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZDOKAR_C: varchar({ length: 10 }), // Document Type // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZDOKNR_C: varchar({ length: 25 }), // Document // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZDOKTL_C: varchar({ length: 10 }), // Document Part // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZDOKVR_C: varchar({ length: 10 }), // Document version // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZDUNS: varchar({ length: 11 }), // DUNS Number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZFTBU: varchar({ length: 10 }), // F-Tree BU Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZFTBUNM: varchar({ length: 40 }), // F-Tree BU Name // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZFTDT: varchar({ length: 10 }), // F-Tree DT Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZFTDTNM: varchar({ length: 40 }), // F-Tree DT Name // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZFTGT: varchar({ length: 10 }), // F-Tree GT Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZFTGTNM: varchar({ length: 40 }), // F-Tree GT Name // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZINBFLGC: varchar({ length: 10 }), // Inbound Flag // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZLAMDT_C: varchar({ length: 10 }), // Last Modified Date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZLAMTM_C: varchar({ length: 10 }), // Last Modified Time // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZLAMUS_C: varchar({ length: 12 }), // Last Modified User // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZORT01_C: varchar({ length: 35 }), // City // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZORT02_C: varchar({ length: 35 }), // District // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZREASON: varchar({ length: 10 }), // Reason for Duplication // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZREGDT_C: varchar({ length: 10 }), // Registerd Date // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZREGTM_C: varchar({ length: 10 }), // Registerd Time // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZREGUS_C: varchar({ length: 12 }), // Registerd User // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZSTCDT_C: varchar({ length: 10 }), // Tax number type // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZSTRAS_C: varchar({ length: 35 }), // House number and street // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZZSUBSEQ_C: varchar({ length: 10 }), // 종사업장 일련번호 // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const BP_HEADER_BP_VENGEN_BP_COMPNY = mdgSchema.table('BP_HEADER_BP_VENGEN_BP_COMPNY', { +export const CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZCOMPANY = mdgSchema.table('CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZCOMPANY', { + // [fk] + BP_HEADER: varchar({ length: 10 }).notNull().references(() => CUSTOMER_MASTER_BP_HEADER.BP_HEADER), + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - ACOT_CHRGR_FAXNO: varchar({ length: 255 }), // 회계담당자FAX번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - ACOT_CHRGR_TELNO: varchar({ length: 255 }), // 회계담당자전화번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - AUTH_GRP: varchar({ length: 255 }), // 권한그룹 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - BF_VNDRCD: varchar({ length: 255 }), // 이전VENDOR코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - CO_CD: varchar({ length: 255 }), // 회사코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 - CSTM_VNDR_CLR_ORDR: varchar({ length: 255 }), // CUSTOMER,VENDOR반제지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - CTL_ACNT: varchar({ length: 255 }), // 조정계정 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - DEL_ORDR: varchar({ length: 255 }), // 삭제지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - FIN_IR_ACT_DT: varchar({ length: 255 }), // 최종이자실행일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - FIN_IR_CALC_DT: varchar({ length: 255 }), // 최종이자계산일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - IATA_BIC_GB: varchar({ length: 255 }), // IATA,BIC구분 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - LOGST_VNDR_TP: varchar({ length: 255 }), // 물류VENDOR유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - MEMO: varchar({ length: 255 }), // 메모 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - MIN_ORDR: varchar({ length: 255 }), // 소수지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - MK_CHRGR_EMAIL: varchar({ length: 255 }), // MAKER담당자이메일 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - MOFFC_ACNT_NO: varchar({ length: 255 }), // 본사계정번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - OVLAP_INVC_ORDR: varchar({ length: 255 }), // 중복송장지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - PLN_GRP: varchar({ length: 255 }), // 계획그룹 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - PST_HOLD_ORDR: varchar({ length: 255 }), // 전기보류지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - REP_TP: varchar({ length: 255 }), // 대표유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - SPLY_COND: varchar({ length: 255 }), // 지급조건 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - SPLY_HOLD_ORDR: varchar({ length: 255 }), // 지급보류지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - SPLY_MTHD: varchar({ length: 255 }), // 지급방법 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - SPRT_SPLY_ORDR: varchar({ length: 255 }), // 분리지급지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - SRCE_TX_CD: varchar({ length: 255 }), // 원천세코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - SRCE_TX_NTN_CD: varchar({ length: 255 }), // 원천세국가코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - SRT_KEY: varchar({ length: 255 }), // 정렬키 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - TRD_BANK_SHRT_KEY: varchar({ length: 255 }), // 거래은행단축키 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - VNDR_ACNT_NO: varchar({ length: 255 }), // VENDOR계정번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - VNDR_CHRGR_NM: varchar({ length: 255 }), // VENDOR담당자명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + AKONT: varchar({ length: 10 }), // Reconcil.acct // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + BUKRS: varchar({ length: 10 }).notNull(), // Company Code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + FDGRV: varchar({ length: 10 }), // Planning Group // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + LOEVM: varchar({ length: 10 }), // Central Deletion Flag for Master Record // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + SPERR: varchar({ length: 10 }), // Posting block for company code // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZAHLS: varchar({ length: 10 }), // Block Key for Payment // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZTERM: varchar({ length: 10 }), // Terms of Payment Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZUAWA: varchar({ length: 10 }), // Sort key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZWELS: varchar({ length: 10 }), // List of the Payment Methods to be Considered // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const BP_HEADER_BP_VENGEN_BP_COMPNY_BP_WHTAX = mdgSchema.table('BP_HEADER_BP_VENGEN_BP_COMPNY_BP_WHTAX', { +export const CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZSALES = mdgSchema.table('CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZSALES', { + // [fk] + BP_HEADER: varchar({ length: 10 }).notNull().references(() => CUSTOMER_MASTER_BP_HEADER.BP_HEADER), + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - DCHAG_CAUS: varchar({ length: 255 }), // 면제사유 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - DCHAG_CERT_NO: varchar({ length: 255 }), // 면제증명서번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - DCHAG_ED_DT: varchar({ length: 255 }), // 면제종료일 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - DCHAG_RAT: varchar({ length: 255 }), // 면제율 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - DCHAG_ST_DT: varchar({ length: 255 }), // 면제시작일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - RECIP_TP: varchar({ length: 255 }), // 수취인유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - SRCE_TX_IDENT_NO: varchar({ length: 255 }), // 원천세식별번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - SRCE_TX_NO: varchar({ length: 255 }), // 원천세코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - SRCE_TX_REL_ORDR: varchar({ length: 255 }), // 원천세관련지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - SRCE_TX_TP: varchar({ length: 255 }), // 원천세유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + AUFSD: varchar({ length: 10 }), // Customer order block (sales area) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + AWAHR: varchar({ length: 10 }), // Order probability of the item // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + BZIRK: varchar({ length: 10 }), // Sales district // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + FAKSD: varchar({ length: 10 }), // Billing block for customer (sales and distribution // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + INCO1: varchar({ length: 10 }), // Incoterms (Part 1) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + INCO2: varchar({ length: 28 }), // Incoterms (Part 2) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + KALKS: varchar({ length: 10 }), // Pricing procedure assigned to this customer // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + KDGRP: varchar({ length: 10 }), // Customer group // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + KONDA: varchar({ length: 10 }), // Price group // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + KTGRD: varchar({ length: 10 }), // Account assignment group for this customer // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + KURST: varchar({ length: 10 }), // Exchange Rate Type // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + KZAZU: varchar({ length: 10 }), // Order Combination // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + LIFSD: varchar({ length: 10 }), // Customer delivery block (sales area) // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + LOEVM: varchar({ length: 10 }), // Central Deletion Flag for Master Record // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + LPRIO: varchar({ length: 10 }), // Delivery Priority // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + PLTYP: varchar({ length: 10 }), // Price List // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + SPART: varchar({ length: 10 }).notNull(), // Division // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + VERSG: varchar({ length: 10 }), // Customer Statistics Group // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + VKBUR: varchar({ length: 10 }), // Sales Office // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + VKGRP: varchar({ length: 10 }), // Sales Group // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + VKORG: varchar({ length: 10 }).notNull(), // Sales Org. // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + VSBED: varchar({ length: 10 }), // Shipping Conditions // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + VTWEG: varchar({ length: 10 }).notNull(), // Distr. Channel // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + VWERK: varchar({ length: 10 }), // From plant // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + WAERS: varchar({ length: 10 }), // Currency // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + ZTERM: varchar({ length: 10 }), // Terms of Payment Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const BP_HEADER_BP_VENGEN_BP_PORG = mdgSchema.table('BP_HEADER_BP_VENGEN_BP_PORG', { +export const CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZSALES_ZCPFN = mdgSchema.table('CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZSALES_ZCPFN', { + // [fk] + BP_HEADER: varchar({ length: 10 }).notNull().references(() => CUSTOMER_MASTER_BP_HEADER.BP_HEADER), + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - AT_PUR_ORD_ORDR: varchar({ length: 255 }), // 자동구매오더지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - CALC_SHM_GRP: varchar({ length: 255 }), // 계산스키마그룹 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - CNFM_CTL_KEY: varchar({ length: 255 }), // 확정제어키 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - DEL_ORDR: varchar({ length: 255 }), // 삭제지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - DL_COND_1: varchar({ length: 255 }), // 인도조건1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - DL_COND_2: varchar({ length: 255 }), // 인도조건2 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - GR_BSE_INVC_VR: varchar({ length: 255 }), // GR기준송장검증 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - ORD_CNFM_REQ_ORDR: varchar({ length: 255 }), // 오더확인요청지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - PUR_HOLD_CAUS: varchar({ length: 255 }), // 구매보류사유 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - PUR_HOLD_DT: varchar({ length: 255 }), // 구매보류일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - PUR_HOLD_ORDR: varchar({ length: 255 }), // 구매보류지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - PUR_ORD_CUR: varchar({ length: 255 }), // 구매오더통화 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - PUR_ORG_CD: varchar({ length: 255 }), // 구매조직 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 - SALE_CHRGR_NM: varchar({ length: 255 }), // 영업담당자명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - SPLY_COND: varchar({ length: 255 }), // 지급조건 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - VNDR_TELNO: varchar({ length: 255 }), // VENDOR전화번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + DEFPA: varchar({ length: 10 }), // Default Partner // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + KUNN2: varchar({ length: 10 }), // Customer number of business partner // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + PARVW: varchar({ length: 10 }).notNull(), // Partner Function // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + PARZA: varchar({ length: 10 }).notNull(), // Partner counter // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const BP_HEADER_BP_VENGEN_BP_PORG_ZVPFN = mdgSchema.table('BP_HEADER_BP_VENGEN_BP_PORG_ZVPFN', { +export const CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZTAXIND = mdgSchema.table('CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZTAXIND', { + // [fk] + BP_HEADER: varchar({ length: 10 }).notNull().references(() => CUSTOMER_MASTER_BP_HEADER.BP_HEADER), + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - BSE_PTNR_ORDR: varchar({ length: 255 }), // 기본파트너지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - ETC_REF_VNDRCD: varchar({ length: 255 }), // 기타참조VENDOR코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl - PLNT_NO: varchar({ length: 255 }), // 플랜트번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 - PTNR_CNT: varchar({ length: 255 }), // 파트너카운터 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 - PTNR_SKL: varchar({ length: 255 }), // 파트너기능 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 - VNDR_SUB_NO: varchar({ length: 255 }), // VENDOR서브번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + ALAND: varchar({ length: 10 }).notNull(), // Departure country // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + TATYP: varchar({ length: 10 }).notNull(), // Tax category // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + TAXKD: varchar({ length: 10 }), // Tax classification for customer // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_DEPT_MDG = mdgSchema.table('CMCTB_DEPT_MDG', { +export const CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZVATREG = mdgSchema.table('CUSTOMER_MASTER_BP_HEADER_BP_CUSGEN_ZVATREG', { + // [fk] + BP_HEADER: varchar({ length: 10 }).notNull().references(() => CUSTOMER_MASTER_BP_HEADER.BP_HEADER), + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - BICD: varchar({ length: 255 }), // 사업장코드 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl - BIZAREA: varchar({ length: 255 }), // 사업부문 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl - CCCD: varchar({ length: 255 }), // 코스트센터 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl - COMPCD: varchar({ length: 255 }), // 회사코드 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl - CORPCD: varchar({ length: 255 }), // 법인코드 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl // WSDL에서 필수 필드 - DEPTCD: varchar({ length: 255 }), // 부서코드 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl // WSDL에서 필수 필드 - DEPTLVL: varchar({ length: 255 }), // 부서레벨 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl - DEPTPOSNO: varchar({ length: 255 }), // 부서위치 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl - DHEMPID: varchar({ length: 255 }), // 부서장사번 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl - GNCD: varchar({ length: 255 }), // From multiple sources // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl - PCCD: varchar({ length: 255 }), // 손익센터 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl - PDEPTCD: varchar({ length: 255 }), // 상위부서코드 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl - VALIDFROMDT: varchar({ length: 255 }), // 유효일자(시작) // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl - VALIDTODT: varchar({ length: 255 }), // 유효일자(끝) // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl - WERKS: varchar({ length: 255 }), // 플랜트코드 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl - - createdAt: timestamp('created_at').defaultNow().notNull(), - updatedAt: timestamp('updated_at').defaultNow().notNull(), -}); - -export const CMCTB_DEPT_MDG_COMPNM = mdgSchema.table('CMCTB_DEPT_MDG_COMPNM', { - id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - COMPNM: varchar({ length: 255 }), // 회사명 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl - SPRAS: varchar({ length: 255 }), // 언어구분 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl // WSDL에서 필수 필드 + LAND1: varchar({ length: 10 }).notNull(), // Country Key // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 + STCEG: varchar({ length: 20 }), // VAT Registration Number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_DEPT_MDG_CORPNM = mdgSchema.table('CMCTB_DEPT_MDG_CORPNM', { +export const CUSTOMER_MASTER_BP_HEADER_BP_TAXNUM = mdgSchema.table('CUSTOMER_MASTER_BP_HEADER_BP_TAXNUM', { + // [fk] + BP_HEADER: varchar({ length: 10 }).notNull().references(() => CUSTOMER_MASTER_BP_HEADER.BP_HEADER), + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - CORPNM: varchar({ length: 255 }), // 법인명 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl - SPRAS: varchar({ length: 255 }), // 언어구분 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl // WSDL에서 필수 필드 + TAXNUM: varchar({ length: 20 }), // Business Partner Tax Number // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl + TAXTYPE: varchar({ length: 10 }).notNull(), // Tax Number Category // From: IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl // WSDL에서 필수 필드 createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_DEPT_MDG_DEPTNM = mdgSchema.table('CMCTB_DEPT_MDG_DEPTNM', { +// [root] +export const DEPARTMENT_CODE_CMCTB_DEPT_MDG = mdgSchema.table('DEPARTMENT_CODE_CMCTB_DEPT_MDG', { id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - DEPTNM: varchar({ length: 255 }), // 부서명 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl - SPRAS: varchar({ length: 255 }), // 언어구분 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl // WSDL에서 필수 필드 + BICD: varchar({ length: 20 }), // 사업장코드 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl + BIZAREA: varchar({ length: 10 }), // 사업부문 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl + CCCD: varchar({ length: 10 }), // 코스트센터 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl + COMPCD: varchar({ length: 20 }), // 회사코드 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl + CORPCD: varchar({ length: 10 }).notNull(), // 법인코드 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl // WSDL에서 필수 필드 + DEPTCD: varchar({ length: 10 }).notNull().unique(), // 부서코드 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl // WSDL에서 필수 필드 + DEPTLVL: varchar({ length: 10 }), // 부서레벨 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl + DEPTPOSNO: varchar({ length: 30 }), // 부서위치 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl + DHEMPID: varchar({ length: 20 }), // 부서장사번 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl + GNCD: varchar({ length: 20 }), // From multiple sources // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl + PCCD: varchar({ length: 10 }), // 손익센터 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl + PDEPTCD: varchar({ length: 10 }), // 상위부서코드 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl + VALIDFROMDT: varchar({ length: 10 }), // 유효일자(시작) // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl + VALIDTODT: varchar({ length: 10 }), // 유효일자(끝) // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl + WERKS: varchar({ length: 10 }), // 플랜트코드 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_EMP_MDG = mdgSchema.table('CMCTB_EMP_MDG', { +export const DEPARTMENT_CODE_CMCTB_DEPT_MDG_COMPNM = mdgSchema.table('DEPARTMENT_CODE_CMCTB_DEPT_MDG_COMPNM', { + // [fk] + DEPTCD: varchar({ length: 10 }).notNull().references(() => DEPARTMENT_CODE_CMCTB_DEPT_MDG.DEPTCD), // 부서코드 + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - ADDRCNTRY: varchar({ length: 255 }), // 우편번호의 국가코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - AEDAT: varchar({ length: 255 }), // 수정날짜 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - AENAM: varchar({ length: 255 }), // 수정자 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - AEZET: varchar({ length: 255 }), // 최근수정시간 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - BICD: varchar({ length: 255 }), // 사업장코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - BIZAREA: varchar({ length: 255 }), // Business Area // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - BSCADDR: varchar({ length: 255 }), // Basic Address // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - COMPCD: varchar({ length: 255 }), // 회사 코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - CORPCD: varchar({ length: 255 }), // 법인 코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - COUNTRYCD: varchar({ length: 255 }), // 국가코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - CSFROMDT: varchar({ length: 255 }), // [에스원]CS Start Date // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - CSTODT: varchar({ length: 255 }), // [에스원]CS End Date // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - CTIROLE: varchar({ length: 255 }), // [에스원]CTI Authority // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - DEL: varchar({ length: 255 }), // 삭제Flag // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - DEPENDDT: varchar({ length: 255 }), // 파견종료예정일 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - DEPTCD: varchar({ length: 255 }), // 부서코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - DHJOBGRDCD: varchar({ length: 255 }), // 부서장 직급코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - DHNAME: varchar({ length: 255 }), // 부서장 이름 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - DHSINGLID: varchar({ length: 255 }), // 부서장 SingleID // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - DISPATCH: varchar({ length: 255 }), // 파견여부 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - DPSTARTDT: varchar({ length: 255 }), // 파견발령일 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - DTLADDR: varchar({ length: 255 }), // Detail Address // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - DTLADDR2: varchar({ length: 255 }), // Detail Address2 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - EMAIL: varchar({ length: 255 }), // 이메일주소 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - EMPADR: varchar({ length: 255 }), // 주소 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - EMPID: varchar({ length: 255 }), // 사원번호 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 - EMPTYPE: varchar({ length: 255 }), // 인력유형 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - ENGNAME: varchar({ length: 255 }), // 사원영문이름 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - EPID: varchar({ length: 255 }), // EPID // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - ERDAT: varchar({ length: 255 }), // 생성날짜 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - ERNAM: varchar({ length: 255 }), // 생성자 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - ERZET: varchar({ length: 255 }), // 생성시간 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - FORIGNFLG: varchar({ length: 255 }), // [기획]Foreign Flag // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - GJOBCD: varchar({ length: 255 }), // Global 직무 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - GJOBDUTYCD: varchar({ length: 255 }), // Global 직책 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - GJOBGRDCD: varchar({ length: 255 }), // Global 직급 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - GNCD: varchar({ length: 255 }), // 총괄코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - HRMANAGE: varchar({ length: 255 }), // HR시스템에서 관리 여부 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - IDNO: varchar({ length: 255 }), // [모직]개인ID // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - JOBCD: varchar({ length: 255 }), // 직무코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - JOBCLASS: varchar({ length: 255 }), // [에스원]Job Class Code // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - JOBDUTYCD: varchar({ length: 255 }), // 직책코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - JOBGRDCD: varchar({ length: 255 }), // 직급코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - KTL_EMP: varchar({ length: 255 }), // 비용센터 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - LVABSENCE: varchar({ length: 255 }), // 휴직여부 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - MBPHONE: varchar({ length: 255 }), // 개인 휴대폰 전화번호 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - NAME: varchar({ length: 255 }), // 사원이름 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - OKTL_EMPL: varchar({ length: 255 }), // 원소속부서 비용센터 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - ORGBICD: varchar({ length: 255 }), // 원소속사업장코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - ORGCOMPCD: varchar({ length: 255 }), // 원소속회사코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - ORGCORPCD: varchar({ length: 255 }), // 원소속법인코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - ORGDEPTCD: varchar({ length: 255 }), // 원소속부서코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - ORGPDEPCD: varchar({ length: 255 }), // 원소속부서의 상위부서코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - PAYPLC: varchar({ length: 255 }), // Payplace for Employee // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - PDEPTCD: varchar({ length: 255 }), // 상위부서코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - PSTLCODE: varchar({ length: 255 }), // 우편번호 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - RETIRE: varchar({ length: 255 }), // 퇴직여부 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - SEX: varchar({ length: 255 }), // 성별 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - SINGLEID: varchar({ length: 255 }), // 싱글 ID // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - SINGLRQ: varchar({ length: 255 }), // 싱글ID 요청 상태 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - SOCIALID: varchar({ length: 255 }), // From multiple sources // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - SOCIALID_DECR: varchar({ length: 255 }), // From multiple sources // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - SOJRNEMP: varchar({ length: 255 }), // 주재원 여부 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - TELNUM: varchar({ length: 255 }), // 전화번호 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - TMPJDIV: varchar({ length: 255 }), // [에스원]Non-Regular Code // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - USEDSYS: varchar({ length: 255 }), // [기획]Used System // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - VALFROMDT: varchar({ length: 255 }), // 근무시작일 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - VALTODT: varchar({ length: 255 }), // 종료예정일(퇴직일자-정규직일경우) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - WFREQUIRE: varchar({ length: 255 }), // 전결필요여부 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - WORKPLC: varchar({ length: 255 }), // 근무처 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - ZPRFLG: varchar({ length: 255 }), // 업데이트 여부 Flag // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - ZZBUKRS: varchar({ length: 255 }), // ECC Company 코드 (재무법인코드) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + COMPNM: varchar({ length: 90 }), // 회사명 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl + SPRAS: varchar({ length: 10 }).notNull(), // 언어구분 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl // WSDL에서 필수 필드 createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_EMP_MDG_BANM = mdgSchema.table('CMCTB_EMP_MDG_BANM', { +export const DEPARTMENT_CODE_CMCTB_DEPT_MDG_CORPNM = mdgSchema.table('DEPARTMENT_CODE_CMCTB_DEPT_MDG_CORPNM', { + // [fk] + DEPTCD: varchar({ length: 10 }).notNull().references(() => DEPARTMENT_CODE_CMCTB_DEPT_MDG.DEPTCD), // 부서코드 + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - GTEXT: varchar({ length: 255 }), // Business area description // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - SPRAS: varchar({ length: 255 }), // Language Key (BIZAREA) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + CORPNM: varchar({ length: 90 }), // 법인명 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl + SPRAS: varchar({ length: 10 }).notNull(), // 언어구분 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl // WSDL에서 필수 필드 createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_EMP_MDG_BINM = mdgSchema.table('CMCTB_EMP_MDG_BINM', { +export const DEPARTMENT_CODE_CMCTB_DEPT_MDG_DEPTNM = mdgSchema.table('DEPARTMENT_CODE_CMCTB_DEPT_MDG_DEPTNM', { + // [fk] + DEPTCD: varchar({ length: 10 }).notNull().references(() => DEPARTMENT_CODE_CMCTB_DEPT_MDG.DEPTCD), // 부서코드 + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - BINM: varchar({ length: 255 }), // Business Place Name (BICD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - SPRAS: varchar({ length: 255 }), // Language Key (BICD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + DEPTNM: varchar({ length: 90 }), // 부서명 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl + SPRAS: varchar({ length: 10 }).notNull(), // 언어구분 // From: IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl // WSDL에서 필수 필드 createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_EMP_MDG_COMPNM = mdgSchema.table('CMCTB_EMP_MDG_COMPNM', { +// [root] +export const EMPLOYEE_MASTER_CMCTB_EMP_MDG = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG', { id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - COMPNM: varchar({ length: 255 }), // Company Name (COMPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - SPRAS: varchar({ length: 255 }), // Language Key (COMPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + ADDRCNTRY: varchar({ length: 10 }), // 우편번호의 국가코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + AEDAT: varchar({ length: 10 }), // 수정날짜 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + AENAM: varchar({ length: 12 }), // 수정자 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + AEZET: varchar({ length: 10 }), // 최근수정시간 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + BICD: varchar({ length: 20 }), // 사업장코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + BIZAREA: varchar({ length: 10 }), // Business Area // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + BSCADDR: varchar({ length: 35 }), // Basic Address // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + COMPCD: varchar({ length: 20 }), // 회사 코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + CORPCD: varchar({ length: 10 }), // 법인 코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + COUNTRYCD: varchar({ length: 10 }), // 국가코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + CSFROMDT: varchar({ length: 10 }), // [에스원]CS Start Date // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + CSTODT: varchar({ length: 10 }), // [에스원]CS End Date // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + CTIROLE: varchar({ length: 10 }), // [에스원]CTI Authority // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + DEL: varchar({ length: 10 }), // 삭제Flag // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + DEPENDDT: varchar({ length: 10 }), // 파견종료예정일 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + DEPTCD: varchar({ length: 10 }), // 부서코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + DHJOBGRDCD: varchar({ length: 29 }), // 부서장 직급코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + DHNAME: varchar({ length: 70 }), // 부서장 이름 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + DHSINGLID: varchar({ length: 12 }), // 부서장 SingleID // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + DISPATCH: varchar({ length: 10 }), // 파견여부 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + DPSTARTDT: varchar({ length: 10 }), // 파견발령일 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + DTLADDR: varchar({ length: 35 }), // Detail Address // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + DTLADDR2: varchar({ length: 35 }), // Detail Address2 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + EMAIL: varchar({ length: 40 }), // 이메일주소 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + EMPADR: varchar({ length: 10 }), // 주소 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + EMPID: varchar({ length: 20 }).notNull().unique(), // 사원번호 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + EMPTYPE: varchar({ length: 20 }), // 인력유형 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + ENGNAME: varchar({ length: 70 }), // 사원영문이름 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + EPID: varchar({ length: 50 }), // EPID // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + ERDAT: varchar({ length: 10 }), // 생성날짜 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + ERNAM: varchar({ length: 12 }), // 생성자 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + ERZET: varchar({ length: 10 }), // 생성시간 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + FORIGNFLG: varchar({ length: 10 }), // [기획]Foreign Flag // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + GJOBCD: varchar({ length: 20 }), // Global 직무 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + GJOBDUTYCD: varchar({ length: 20 }), // Global 직책 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + GJOBGRDCD: varchar({ length: 20 }), // Global 직급 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + GNCD: varchar({ length: 20 }), // 총괄코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + HRMANAGE: varchar({ length: 10 }), // HR시스템에서 관리 여부 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + IDNO: varchar({ length: 32 }), // [모직]개인ID // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + JOBCD: varchar({ length: 20 }), // 직무코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + JOBCLASS: varchar({ length: 20 }), // [에스원]Job Class Code // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + JOBDUTYCD: varchar({ length: 15 }), // 직책코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + JOBGRDCD: varchar({ length: 12 }), // 직급코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + KTL_EMP: varchar({ length: 10 }), // 비용센터 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + LVABSENCE: varchar({ length: 10 }), // 휴직여부 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + MBPHONE: varchar({ length: 20 }), // 개인 휴대폰 전화번호 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + NAME: varchar({ length: 70 }), // 사원이름 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + OKTL_EMPL: varchar({ length: 10 }), // 원소속부서 비용센터 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + ORGBICD: varchar({ length: 20 }), // 원소속사업장코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + ORGCOMPCD: varchar({ length: 20 }), // 원소속회사코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + ORGCORPCD: varchar({ length: 10 }), // 원소속법인코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + ORGDEPTCD: varchar({ length: 10 }), // 원소속부서코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + ORGPDEPCD: varchar({ length: 10 }), // 원소속부서의 상위부서코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + PAYPLC: varchar({ length: 10 }), // Payplace for Employee // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + PDEPTCD: varchar({ length: 10 }), // 상위부서코드 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + PSTLCODE: varchar({ length: 10 }), // 우편번호 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + RETIRE: varchar({ length: 10 }), // 퇴직여부 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SEX: varchar({ length: 10 }), // 성별 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SINGLEID: varchar({ length: 12 }), // 싱글 ID // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SINGLRQ: varchar({ length: 10 }), // 싱글ID 요청 상태 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SOCIALID: varchar({ length: 16 }), // From multiple sources // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SOCIALID_DECR: varchar({ length: 16 }), // From multiple sources // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SOJRNEMP: varchar({ length: 10 }), // 주재원 여부 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + TELNUM: varchar({ length: 20 }), // 전화번호 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + TMPJDIV: varchar({ length: 20 }), // [에스원]Non-Regular Code // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + USEDSYS: varchar({ length: 20 }), // [기획]Used System // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + VALFROMDT: varchar({ length: 10 }), // 근무시작일 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + VALTODT: varchar({ length: 10 }), // 종료예정일(퇴직일자-정규직일경우) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + WFREQUIRE: varchar({ length: 10 }), // 전결필요여부 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + WORKPLC: varchar({ length: 16 }), // 근무처 // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + ZPRFLG: varchar({ length: 10 }), // 업데이트 여부 Flag // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + ZZBUKRS: varchar({ length: 10 }), // ECC Company 코드 (재무법인코드) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_EMP_MDG_CORPNM = mdgSchema.table('CMCTB_EMP_MDG_CORPNM', { +export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_BANM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_BANM', { + // [fk] + EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호 + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - CORPNM: varchar({ length: 255 }), // Corporate Name (CORPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - SPRAS: varchar({ length: 255 }), // Language Key (CORPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + GTEXT: varchar({ length: 30 }), // Business area description // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 10 }).notNull(), // Language Key (BIZAREA) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_EMP_MDG_COUNTRYNM = mdgSchema.table('CMCTB_EMP_MDG_COUNTRYNM', { +export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_BINM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_BINM', { + // [fk] + EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호 + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - COUNTRYNM: varchar({ length: 255 }), // Country Name (COUNTRYCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - SPRAS: varchar({ length: 255 }), // Language Key (COUNTRYCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + BINM: varchar({ length: 60 }), // Business Place Name (BICD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 10 }).notNull(), // Language Key (BICD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_EMP_MDG_DEPTCODE = mdgSchema.table('CMCTB_EMP_MDG_DEPTCODE', { +export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_COMPNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_COMPNM', { + // [fk] + EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호 + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - PCCD: varchar({ length: 255 }), // Profit Center Code (DEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - WERKS: varchar({ length: 255 }), // Plant Code (DEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + COMPNM: varchar({ length: 60 }), // Company Name (COMPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 10 }).notNull(), // Language Key (COMPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_EMP_MDG_DEPTCODE_PCCDNM = mdgSchema.table('CMCTB_EMP_MDG_DEPTCODE_PCCDNM', { +export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_CORPNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_CORPNM', { + // [fk] + EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호 + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - KTEXT: varchar({ length: 255 }), // General Name // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - LTEXT: varchar({ length: 255 }), // Long Text // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + CORPNM: varchar({ length: 60 }), // Corporate Name (CORPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 10 }).notNull(), // Language Key (CORPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_EMP_MDG_DEPTNM = mdgSchema.table('CMCTB_EMP_MDG_DEPTNM', { +export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_COUNTRYNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_COUNTRYNM', { + // [fk] + EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호 + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - DEPTNM: varchar({ length: 255 }), // Department Name (DEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - SPRAS: varchar({ length: 255 }), // Language Key (DEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + COUNTRYNM: varchar({ length: 60 }), // Country Name (COUNTRYCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 10 }).notNull(), // Language Key (COUNTRYCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_EMP_MDG_DHJOBGDNM = mdgSchema.table('CMCTB_EMP_MDG_DHJOBGDNM', { +export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTCODE = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTCODE', { + // [fk] + EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호 + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - JOBGRDNM: varchar({ length: 255 }), // Job Grade Name (DHJOBGDCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - SPRAS: varchar({ length: 255 }), // Language Key (DHJOBGDCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + PCCD: varchar({ length: 10 }), // Profit Center Code (DEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + WERKS: varchar({ length: 10 }), // Plant Code (DEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_EMP_MDG_GJOBDUTYNM = mdgSchema.table('CMCTB_EMP_MDG_GJOBDUTYNM', { +export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTCODE_PCCDNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTCODE_PCCDNM', { + // [fk] + EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호 + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - GJOBDUTYNM: varchar({ length: 255 }), // Global Job Duty Name // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - SPRAS: varchar({ length: 255 }), // Language Key (GJOBDUTYCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + KTEXT: varchar({ length: 20 }), // General Name // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + LTEXT: varchar({ length: 40 }), // Long Text // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_EMP_MDG_GJOBGRDNM = mdgSchema.table('CMCTB_EMP_MDG_GJOBGRDNM', { +export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_DEPTNM', { + // [fk] + EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호 + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - GJOBGRDNM: varchar({ length: 255 }), // Global Job Grade Name // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - SPRAS: varchar({ length: 255 }), // Language Key (GJOBGRDCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + DEPTNM: varchar({ length: 60 }), // Department Name (DEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 10 }).notNull(), // Language Key (DEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_EMP_MDG_GJOBGRDTYPE = mdgSchema.table('CMCTB_EMP_MDG_GJOBGRDTYPE', { +export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_DHJOBGDNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_DHJOBGDNM', { + // [fk] + EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호 + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - ISEXECUT: varchar({ length: 255 }), // Executive Indicator // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - JOBGRDTYPE: varchar({ length: 255 }), // Job Grade Type // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + JOBGRDNM: varchar({ length: 60 }), // Job Grade Name (DHJOBGDCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 10 }).notNull(), // Language Key (DHJOBGDCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_EMP_MDG_GJOBNM = mdgSchema.table('CMCTB_EMP_MDG_GJOBNM', { +export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBDUTYNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBDUTYNM', { + // [fk] + EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호 + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - SPRAS: varchar({ length: 255 }), // Language Key (GJOBCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + GJOBDUTYNM: varchar({ length: 21 }), // Global Job Duty Name // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 10 }).notNull(), // Language Key (GJOBDUTYCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_EMP_MDG_GNNM = mdgSchema.table('CMCTB_EMP_MDG_GNNM', { +export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBGRDNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBGRDNM', { + // [fk] + EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호 + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - GNNM: varchar({ length: 255 }), // General Name (GNCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - SPRAS: varchar({ length: 255 }), // Language Key (GNCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + GJOBGRDNM: varchar({ length: 21 }), // Global Job Grade Name // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 10 }).notNull(), // Language Key (GJOBGRDCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_EMP_MDG_JOBDUTYNM = mdgSchema.table('CMCTB_EMP_MDG_JOBDUTYNM', { +export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBGRDTYPE = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBGRDTYPE', { + // [fk] + EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호 + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - JOBDUTYNM: varchar({ length: 255 }), // Job Duty Name (JOBDUTYCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - SPRAS: varchar({ length: 255 }), // Language Key (JOBDUTYCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + ISEXECUT: varchar({ length: 10 }), // Executive Indicator // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + JOBGRDTYPE: varchar({ length: 10 }), // Job Grade Type // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_EMP_MDG_JOBGRDNM = mdgSchema.table('CMCTB_EMP_MDG_JOBGRDNM', { +export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_GJOBNM', { + // [fk] + EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호 + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - ISEXECUT: varchar({ length: 255 }), // Executive Indicator // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - JOBGRDNM: varchar({ length: 255 }), // Job Grade Name (JOBGRDCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - JOBGRDTYPE: varchar({ length: 255 }), // Job Grade Type // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - SPRAS: varchar({ length: 255 }), // Language Key (JOBGRDCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + GJOBNM: varchar({ length: 20 }), // Global Job Name // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 10 }).notNull(), // Language Key (GJOBCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_EMP_MDG_JOBNM = mdgSchema.table('CMCTB_EMP_MDG_JOBNM', { +export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_GNNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_GNNM', { + // [fk] + EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호 + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - JOBNM: varchar({ length: 255 }), // Job Name (JOBCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - SPRAS: varchar({ length: 255 }), // Language Key (JOBCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + GNNM: varchar({ length: 60 }), // General Name (GNCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 10 }).notNull(), // Language Key (GNCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_EMP_MDG_KTLNM = mdgSchema.table('CMCTB_EMP_MDG_KTLNM', { +export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBDUTYNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBDUTYNM', { + // [fk] + EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호 + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - LTEXT: varchar({ length: 255 }), // Cost Center (KTL_EMP) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - SPRAS: varchar({ length: 255 }), // Language Key (KTL_EMP) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + JOBDUTYNM: varchar({ length: 60 }), // Job Duty Name (JOBDUTYCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 10 }).notNull(), // Language Key (JOBDUTYCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_EMP_MDG_OKTLNM = mdgSchema.table('CMCTB_EMP_MDG_OKTLNM', { +export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBGRDNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBGRDNM', { + // [fk] + EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호 + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - LTEXT: varchar({ length: 255 }), // Cost Center (OKTL_EMPL) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - SPRAS: varchar({ length: 255 }), // Language Key (OKTL_EMPL) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + ISEXECUT: varchar({ length: 10 }), // Executive Indicator // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + JOBGRDNM: varchar({ length: 60 }), // Job Grade Name (JOBGRDCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + JOBGRDTYPE: varchar({ length: 10 }), // Job Grade Type // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 10 }).notNull(), // Language Key (JOBGRDCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_EMP_MDG_ORGBICDNM = mdgSchema.table('CMCTB_EMP_MDG_ORGBICDNM', { +export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_JOBNM', { + // [fk] + EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호 + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - BINM: varchar({ length: 255 }), // Business Place Name (ORGBICD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - SPRAS: varchar({ length: 255 }), // Language Key (ORGBICD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + JOBNM: varchar({ length: 60 }), // Job Name (JOBCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 10 }).notNull(), // Language Key (JOBCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_EMP_MDG_ORGCOMPNM = mdgSchema.table('CMCTB_EMP_MDG_ORGCOMPNM', { +export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_KTLNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_KTLNM', { + // [fk] + EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호 + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - COMPNM: varchar({ length: 255 }), // Company Name (ORGCOMPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - SPRAS: varchar({ length: 255 }), // Language Key (ORGCOMPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + LTEXT: varchar({ length: 40 }), // Cost Center (KTL_EMP) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 10 }).notNull(), // Language Key (KTL_EMP) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_EMP_MDG_ORGCORPNM = mdgSchema.table('CMCTB_EMP_MDG_ORGCORPNM', { +export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_OKTLNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_OKTLNM', { + // [fk] + EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호 + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - CORPNM: varchar({ length: 255 }), // Corporate Name (ORGCORPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - SPRAS: varchar({ length: 255 }), // Language Key (ORGCORPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + LTEXT: varchar({ length: 40 }), // Cost Center (OKTL_EMPL) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 10 }).notNull(), // Language Key (OKTL_EMPL) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_EMP_MDG_ORGDEPTNM = mdgSchema.table('CMCTB_EMP_MDG_ORGDEPTNM', { +export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGBICDNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGBICDNM', { + // [fk] + EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호 + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - DEPTNM: varchar({ length: 255 }), // Department Name (ORGDEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - SPRAS: varchar({ length: 255 }), // Language Key (ORGDEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + BINM: varchar({ length: 60 }), // Business Place Name (ORGBICD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 10 }).notNull(), // Language Key (ORGBICD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_EMP_MDG_ORGPDEPNM = mdgSchema.table('CMCTB_EMP_MDG_ORGPDEPNM', { +export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGCOMPNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGCOMPNM', { + // [fk] + EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호 + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - DEPTNM: varchar({ length: 255 }), // Department Name (ORGPDEPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - SPRAS: varchar({ length: 255 }), // Language Key (ORGPDEPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 + COMPNM: varchar({ length: 60 }), // Company Name (ORGCOMPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 10 }).notNull(), // Language Key (ORGCOMPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_EMP_MDG_PDEPTNM = mdgSchema.table('CMCTB_EMP_MDG_PDEPTNM', { +export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGCORPNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGCORPNM', { + // [fk] + EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호 + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - DEPTNM: varchar({ length: 255 }), // Department Name (PDEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl - SPRAS: varchar({ length: 255 }), // Language Key (PDEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + CORPNM: varchar({ length: 60 }), // Corporate Name (ORGCORPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 10 }).notNull(), // Language Key (ORGCORPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_EMP_REF_MDG_IF = mdgSchema.table('CMCTB_EMP_REF_MDG_IF', { +export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGDEPTNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGDEPTNM', { + // [fk] + EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호 + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - ADTL_01: varchar({ length: 255 }), // 추가필드1 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl - ADTL_02: varchar({ length: 255 }), // 추가필드2 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl - CORPCD: varchar({ length: 255 }), // 법인코드 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl // WSDL에서 필수 필드 - GRPCD: varchar({ length: 255 }), // 그룹코드 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl // WSDL에서 필수 필드 - MAINCD: varchar({ length: 255 }), // 메인코드 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl // WSDL에서 필수 필드 - VALIDFROMDT: varchar({ length: 255 }), // 시작유효일자 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl - VALIDTODT: varchar({ length: 255 }), // 종료유효일자 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl + DEPTNM: varchar({ length: 60 }), // Department Name (ORGDEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 10 }).notNull(), // Language Key (ORGDEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_EMP_REF_MDG_IF_NAME = mdgSchema.table('CMCTB_EMP_REF_MDG_IF_NAME', { +export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGPDEPNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_ORGPDEPNM', { + // [fk] + EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호 + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - NAME: varchar({ length: 255 }), // 코드명 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl - SPRAS: varchar({ length: 255 }), // 언어구분 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl // WSDL에서 필수 필드 + DEPTNM: varchar({ length: 60 }), // Department Name (ORGPDEPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 10 }).notNull(), // Language Key (ORGPDEPCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl // WSDL에서 필수 필드 createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_MAT_BSE = mdgSchema.table('CMCTB_MAT_BSE', { +export const EMPLOYEE_MASTER_CMCTB_EMP_MDG_PDEPTNM = mdgSchema.table('EMPLOYEE_MASTER_CMCTB_EMP_MDG_PDEPTNM', { + // [fk] + EMPID: varchar({ length: 20 }).notNull().references(() => EMPLOYEE_MASTER_CMCTB_EMP_MDG.EMPID), // 사원번호 + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - IF_MSG: varchar({ length: 255 }), // IF 메시지 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl - IF_STAT: varchar({ length: 255 }), // IF 상태 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl - MAT_CD: varchar({ length: 255 }), // 자재코드 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl // WSDL에서 필수 필드 - MAT_ID: varchar({ length: 255 }), // PLM 채번 자재코드 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl + DEPTNM: varchar({ length: 60 }), // Department Name (PDEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl + SPRAS: varchar({ length: 10 }), // Language Key (PDEPTCD) // From: IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const CMCTB_PROJ_MAST = mdgSchema.table('CMCTB_PROJ_MAST', { +// [root] +export const EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF = mdgSchema.table('EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF', { id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - AS_GRNT_PRD: varchar({ length: 255 }), // A/S 보증기간 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - BIZCLS: varchar({ length: 255 }), // 사업부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - BIZLOC_CD: varchar({ length: 255 }), // 사업장코드 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - BIZ_DMN: varchar({ length: 255 }), // 사업영역 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - BP_DL_DT: varchar({ length: 255 }), // 선표인도일자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - CHN_PROJ_TP: varchar({ length: 255 }), // (중국)프로젝트타입 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - CLS_1: varchar({ length: 255 }), // 선급1 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - CLS_2: varchar({ length: 255 }), // 선급2 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - CNRT_CNTN_YN: varchar({ length: 255 }), // 계약존속여부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - CNRT_DL_DT: varchar({ length: 255 }), // 계약인도일자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - CNRT_DT: varchar({ length: 255 }), // 계약일자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - CNRT_RESV_YN: varchar({ length: 255 }), // 계약유보여부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - CO_CD: varchar({ length: 255 }), // 회사코드 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - CSTM_PO_NO: varchar({ length: 255 }), // 고객발주번호 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - DEL_YN: varchar({ length: 255 }), // 삭제 여부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - DIGT_PDT_GRP: varchar({ length: 255 }), // 전기전자 제품군 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - DIST_PATH: varchar({ length: 255 }), // 유통경로 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - DL_BF_PROJ_NM: varchar({ length: 255 }), // 인도전선명 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - DL_CSTM_CD: varchar({ length: 255 }), // 인도고객 ID // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - DOCK_CD: varchar({ length: 255 }), // 도크 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - DSN_CHRGR: varchar({ length: 255 }), // 설계담당자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - EXMPT_AREA: varchar({ length: 255 }), // 면세면적 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - EXMPT_RAT: varchar({ length: 255 }), // 면세율 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - FIN_GRNT_FN_DT: varchar({ length: 255 }), // 최종수요자 보증종료일 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - GENT_CNT: varchar({ length: 255 }), // 세대수/시리즈 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - GOV: varchar({ length: 255 }), // 관청명 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - GRNT_STDT: varchar({ length: 255 }), // Project Warranty Start Date // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - GT: varchar({ length: 255 }), // G/T // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - IF_STAT: varchar({ length: 255 }), // 인터페이스 진행단계 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - IMO_NO: varchar({ length: 255 }), // IMO 번호 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - INQY_NO: varchar({ length: 255 }), // 안건번호 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - INQY_SEQ: varchar({ length: 255 }), // 안건순번 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - IO_GB: varchar({ length: 255 }), // 사내외 구분 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - LOA: varchar({ length: 255 }), // L.O.A // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - MNG_ACOT_DMN: varchar({ length: 255 }), // 관리회계영역 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - MN_ENGN_TP_CD: varchar({ length: 255 }), // Main engine type code // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - MSHIP_NO: varchar({ length: 255 }), // 기준호선 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - NEW_MC_YN: varchar({ length: 255 }), // MC YN // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - NTTP: varchar({ length: 255 }), // 국적 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - ORDR_GRNT_FN_DT: varchar({ length: 255 }), // 주문주 보증종료일 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - ORDR_GRNT_PRD: varchar({ length: 255 }), // 주문주 보증기간 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - OWN_1: varchar({ length: 255 }), // 선주1 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - OWN_AB: varchar({ length: 255 }), // 선주약어 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - OWN_NM: varchar({ length: 255 }), // 선주명 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - PDT_LVL_4: varchar({ length: 255 }), // 제품 Level 4 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - PLNT_CD: varchar({ length: 255 }), // 플랜트 코드 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - PRCTR: varchar({ length: 255 }), // 손익센터 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - PRGS_STAT: varchar({ length: 255 }), // 진행상태 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - PROJ_CRTE_REQ_DT: varchar({ length: 255 }), // 프로젝트 생성요청일 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - PROJ_CRTE_REQ_EMPNO: varchar({ length: 255 }), // 프로젝트 생성요청자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - PROJ_DL_PLN_DT: varchar({ length: 255 }), // 모프로젝트 인도계획일 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - PROJ_DL_RT_DT: varchar({ length: 255 }), // 모프로젝트 인도실적일 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - PROJ_DSC: varchar({ length: 255 }), // 프로젝트 설명 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - PROJ_DTL_TP: varchar({ length: 255 }), // 프로젝트 세부타입 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - PROJ_ETC_TP: varchar({ length: 255 }), // 프로젝트 기타타입 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - PROJ_GB: varchar({ length: 255 }), // 프로젝트구분 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - PROJ_NO: varchar({ length: 255 }), // 프로젝트번호 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl // WSDL에서 필수 필드 - PROJ_PRGS_YN: varchar({ length: 255 }), // 공사진행여부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - PROJ_PROF: varchar({ length: 255 }), // 프로젝트 프로파일 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - PROJ_SCP: varchar({ length: 255 }), // 프로젝트범위 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - PROJ_WBS_TP: varchar({ length: 255 }), // 프로젝트 WBS타입 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - PRO_PROJ_NO: varchar({ length: 255 }), // 프로포절 프로젝트 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - QM_CLS: varchar({ length: 255 }), // 품질사업부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - REF_NO: varchar({ length: 255 }), // 시리즈번호 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - RLTD_PROJ: varchar({ length: 255 }), // 연관프로젝트 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - RL_DL_DT: varchar({ length: 255 }), // 실인도일자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - SALE_GRP: varchar({ length: 255 }), // 영업그룹 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - SALE_ORG_CD: varchar({ length: 255 }), // 영업조직 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - SA_DT: varchar({ length: 255 }), // Sail Away Date // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - SERS_NO: varchar({ length: 255 }), // 시리즈첫공사번호 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - SERS_YN: varchar({ length: 255 }), // 시리즈여부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - SHTYPE: varchar({ length: 255 }), // 선형 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - SHTYPE_CD: varchar({ length: 255 }), // 선형코드 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - SHTYPE_GRP: varchar({ length: 255 }), // 선형군 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - SHTYPE_UOM: varchar({ length: 255 }), // 선형단위 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - SKND: varchar({ length: 255 }), // 선종 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - SPD: varchar({ length: 255 }), // Speed // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - SRC_SYS_ID: varchar({ length: 255 }), // Source System // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - STDT: varchar({ length: 255 }), // 시작일자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - SYS_ACOT_CLSD_DT: varchar({ length: 255 }), // 시스템회계마감일자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - TOT_AREA: varchar({ length: 255 }), // 전체면적 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - TOT_CNRT_CNT: varchar({ length: 255 }), // 전체 계약 대수 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - TYPE: varchar({ length: 255 }), // 프로젝트 Top/Hull // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - WP_PROJ_TP: varchar({ length: 255 }), // (풍력)프로젝트타입 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl - - createdAt: timestamp('created_at').defaultNow().notNull(), - updatedAt: timestamp('updated_at').defaultNow().notNull(), -}); - -export const HRHMTB_CCTR = mdgSchema.table('HRHMTB_CCTR', { - id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - ABTEI: varchar({ length: 255 }), // Department // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ANRED: varchar({ length: 255 }), // Title // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - BKZER: varchar({ length: 255 }), // Actual Revenue // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - BKZKP: varchar({ length: 255 }), // Actual Primary Costs // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - BKZKS: varchar({ length: 255 }), // Actual Secondary Costs // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - BKZOB: varchar({ length: 255 }), // Commitment Update // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - BUKRS: varchar({ length: 255 }), // Company Code // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - CCTR: varchar({ length: 255 }), // Cost Center // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 - DATAB: varchar({ length: 255 }), // Valid from // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - DATBI: varchar({ length: 255 }), // Valid to // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 - DATLT: varchar({ length: 255 }), // Data communication line no. // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - DRNAM: varchar({ length: 255 }), // Printer destination for CCtr report // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - FUNC_AREA: varchar({ length: 255 }), // Functional Area // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - GSBER: varchar({ length: 255 }), // Business Area // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - KHINR: varchar({ length: 255 }), // Standard Hierarchy Area // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - KOKRS: varchar({ length: 255 }), // Controlling Area // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 - KOSAR: varchar({ length: 255 }), // Cost Center Category // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - LAND1: varchar({ length: 255 }), // Country Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - MGEFL: varchar({ length: 255 }), // Record Quantity // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - NAME1: varchar({ length: 255 }), // Name 1 // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - NAME2: varchar({ length: 255 }), // Name 2 // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - NAME3: varchar({ length: 255 }), // Name 3 // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - NAME4: varchar({ length: 255 }), // Name 4 // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ORT01: varchar({ length: 255 }), // City // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ORT02: varchar({ length: 255 }), // District // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - PFACH: varchar({ length: 255 }), // PO Box // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - PKZER: varchar({ length: 255 }), // Plan Revenues // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - PKZKP: varchar({ length: 255 }), // Plan Primary Costs // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - PKZKS: varchar({ length: 255 }), // Plan Secondary Costs // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - PRCTR: varchar({ length: 255 }), // Profit Center // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - PSTL2: varchar({ length: 255 }), // P.O. Box Postal Code // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - PSTLZ: varchar({ length: 255 }), // Postal Code // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - REGIO: varchar({ length: 255 }), // Region (State, Province, County) // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - SPRAS: varchar({ length: 255 }), // Language Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - STRAS: varchar({ length: 255 }), // House number and street // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - TELBX: varchar({ length: 255 }), // Telebox number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - TELF1: varchar({ length: 255 }), // First telephone number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - TELF2: varchar({ length: 255 }), // Second telephone number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - TELFX: varchar({ length: 255 }), // Fax Number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - TELTX: varchar({ length: 255 }), // Teletex number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - TELX1: varchar({ length: 255 }), // Telex number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - TXJCD: varchar({ length: 255 }), // Tax Jurisdiction // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - VERAK: varchar({ length: 255 }), // Person Responsible // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - VERAK_USE: varchar({ length: 255 }), // User Responsible // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - VMETH: varchar({ length: 255 }), // Allowed Allocation methods // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - WAERS: varchar({ length: 255 }), // Currency // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZZBRANCH: varchar({ length: 255 }), // Business Place // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZZDELETE: varchar({ length: 255 }), // Delete Flag // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZZFCTRI: varchar({ length: 255 }), // Create Fund Center Indicator // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZZSECCODE: varchar({ length: 255 }), // Section Code // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZZSEGMENT: varchar({ length: 255 }), // Segment for Segmental Reporting // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ADTL_01: varchar({ length: 10 }), // 추가필드1 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl + ADTL_02: varchar({ length: 10 }), // 추가필드2 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl + CORPCD: varchar({ length: 10 }).notNull(), // 법인코드 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl // WSDL에서 필수 필드 + GRPCD: varchar({ length: 10 }).notNull().unique(), // 그룹코드 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl // WSDL에서 필수 필드 + MAINCD: varchar({ length: 20 }).notNull(), // 메인코드 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl // WSDL에서 필수 필드 + VALIDFROMDT: varchar({ length: 10 }), // 시작유효일자 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl + VALIDTODT: varchar({ length: 10 }), // 종료유효일자 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const HRHMTB_CCTR_TEXT = mdgSchema.table('HRHMTB_CCTR_TEXT', { +export const EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF_NAME = mdgSchema.table('EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF_NAME', { + // [fk] + GRPCD: varchar({ length: 10 }).notNull().references(() => EMPLOYEE_REFERENCE_MASTER_CMCTB_EMP_REF_MDG_IF.GRPCD), // 그룹코드 + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - KTEXT: varchar({ length: 255 }), // General Name // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - LTEXT: varchar({ length: 255 }), // Description // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + NAME: varchar({ length: 90 }), // 코드명 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl + SPRAS: varchar({ length: 10 }).notNull(), // 언어구분 // From: IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl // WSDL에서 필수 필드 createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const HRHMTB_PCTR = mdgSchema.table('HRHMTB_PCTR', { +// [root] +export const EQUP_MASTER_MATL = mdgSchema.table('EQUP_MASTER_MATL', { id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - ABTEI: varchar({ length: 255 }), // Department // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - DATAB: varchar({ length: 255 }), // Valid from // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - DATBI: varchar({ length: 255 }), // Valid to // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 - KHINR: varchar({ length: 255 }), // Profit center area(Profit center group) // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - KOKRS: varchar({ length: 255 }), // Controlling Area // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 - LOCK_IND: varchar({ length: 255 }), // Lock indicator // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - PCTR: varchar({ length: 255 }), // Profit Center // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 - SEGMENT: varchar({ length: 255 }), // Segment // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - TXJCD: varchar({ length: 255 }), // Tax Jurisdiction // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - VERAK: varchar({ length: 255 }), // Person Responsible // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - VERAK_USE: varchar({ length: 255 }), // User Responsible // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZZDELETE: varchar({ length: 255 }), // Delete Flag // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + BISMT: varchar({ length: 18 }), // Old material number // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + BRGEW: varchar({ length: 13 }), // Gross Weight // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + GEWEI: varchar({ length: 10 }), // Weight Unit // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + GROES: varchar({ length: 32 }), // Size/dimensions // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + LVORM: varchar({ length: 10 }), // Deletion flag // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + MAGRV: varchar({ length: 10 }), // Material Group: Packaging Materials // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + MATKL: varchar({ length: 10 }), // Material Group // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + MATNR: varchar({ length: 18 }).notNull().unique(), // Material Number // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + MBRSH: varchar({ length: 10 }), // Industry sector // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + MEABM: varchar({ length: 10 }), // Unit of Dimension for Length/Width/Height // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + MEINS: varchar({ length: 10 }), // Base Unit of Measure // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + MSTAE: varchar({ length: 10 }), // Material Status // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + MSTDE: varchar({ length: 10 }), // Date from which the cross-plant material status is // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + MTART: varchar({ length: 10 }), // Material Type // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + NTGEW: varchar({ length: 16 }), // Net Weight // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + PRDHA: varchar({ length: 18 }), // Product hierarchy // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + SPART: varchar({ length: 10 }), // Division // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + VHART: varchar({ length: 10 }), // Packaging Material Type // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + VOLEH: varchar({ length: 10 }), // Volume unit // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + ZZAPPDT: varchar({ length: 10 }), // Approval Date // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + ZZAPPTM: varchar({ length: 10 }), // Approval Time // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + ZZAPPUS: varchar({ length: 12 }), // Approval User // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + ZZDESC: varchar({ length: 255 }), // Description // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + ZZLAMDT: varchar({ length: 10 }), // Last Modified Date // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + ZZLAMTM: varchar({ length: 10 }), // Last Modified Time // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + ZZLAMUS: varchar({ length: 12 }), // Last Modified User // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + ZZNAME: varchar({ length: 40 }), // Material Name // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + ZZPRFLG: varchar({ length: 10 }), // CRUD Status // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + ZZREGDT: varchar({ length: 10 }), // Registered Date // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + ZZREGTM: varchar({ length: 10 }), // Registered Time // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + ZZREGUS: varchar({ length: 12 }), // Registered User // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + ZZSPEC: varchar({ length: 255 }), // Specification // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const HRHMTB_ZBUKRS = mdgSchema.table('HRHMTB_ZBUKRS', { +export const EQUP_MASTER_MATL_CHARASGN = mdgSchema.table('EQUP_MASTER_MATL_CHARASGN', { + // [fk] + MATNR: varchar({ length: 18 }).notNull().references(() => EQUP_MASTER_MATL.MATNR), // Material Number + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - CURR_BUKR: varchar({ length: 255 }), // Currency // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZBUKRS: varchar({ length: 255 }), // Company Code // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 - ZZBUTXT: varchar({ length: 255 }), // Company Code Name // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZZCITY: varchar({ length: 255 }), // City // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZZCOUNTRY: varchar({ length: 255 }), // Country Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZZLANGU: varchar({ length: 255 }), // Language Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ATAW1: varchar({ length: 10 }), // Unit of Measurement // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + ATAWE: varchar({ length: 10 }), // Unit of Measurement // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + ATBEZ: varchar({ length: 30 }), // 특성내역 // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + ATFLB: varchar({ length: 16 }), // Internal floating point value to // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + ATFLV: varchar({ length: 16 }), // Internal floating point from // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + ATNAM: varchar({ length: 30 }), // Characteristic Name // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + ATWRT: varchar({ length: 30 }), // Characteristic Value // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + ATWTB: varchar({ length: 30 }), // 특성값내역 // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + CLASS: varchar({ length: 18 }), // Class number // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + KLART: varchar({ length: 10 }), // Class Type // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const HRHMTB_ZEKGRP = mdgSchema.table('HRHMTB_ZEKGRP', { +export const EQUP_MASTER_MATL_CLASSASGN = mdgSchema.table('EQUP_MASTER_MATL_CLASSASGN', { + // [fk] + MATNR: varchar({ length: 18 }).notNull().references(() => EQUP_MASTER_MATL.MATNR), // Material Number + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - ZEKGRP: varchar({ length: 255 }), // Purchasing Group // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 - ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZZEKNAM: varchar({ length: 255 }), // Purchasing Group Description // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZZEKTEL: varchar({ length: 255 }), // Telephone Number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZZEMPNUM: varchar({ length: 255 }), // Employee Number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZZSINGLE: varchar({ length: 255 }), // Single ID // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZZTELFX: varchar({ length: 255 }), // Fax Number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZZTEL_NUM: varchar({ length: 255 }), // Telephone Number (Office) // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + CLASS: varchar({ length: 18 }), // Class number // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + KLART: varchar({ length: 10 }), // Class Type // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const HRHMTB_ZEKORG = mdgSchema.table('HRHMTB_ZEKORG', { +export const EQUP_MASTER_MATL_DESC = mdgSchema.table('EQUP_MASTER_MATL_DESC', { + // [fk] + MATNR: varchar({ length: 18 }).notNull().references(() => EQUP_MASTER_MATL.MATNR), // Material Number + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - ZEKORG: varchar({ length: 255 }), // Purchasing Organization // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 - ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZZEKOTX: varchar({ length: 255 }), // Purchasing Organization Description // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + MAKTX: varchar({ length: 40 }), // Material Description (Short Text) // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + SPRAS: varchar({ length: 10 }), // Language // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const HRHMTB_ZGSBER = mdgSchema.table('HRHMTB_ZGSBER', { +export const EQUP_MASTER_MATL_PLNT = mdgSchema.table('EQUP_MASTER_MATL_PLNT', { + // [fk] + MATNR: varchar({ length: 18 }).notNull().references(() => EQUP_MASTER_MATL.MATNR), // Material Number + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - ZGSBER: varchar({ length: 255 }), // Business Area // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 - ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + LVORM: varchar({ length: 10 }), // Deletion Flag // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + MMSTA: varchar({ length: 10 }), // Plant-Specific Material Status // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + MMSTD: varchar({ length: 10 }), // Date from which the plant-specific material status // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + WERKS: varchar({ length: 10 }), // Plant // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + ZZLAMDT: varchar({ length: 10 }), // Last Modified Date // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + ZZLAMTM: varchar({ length: 10 }), // Last Modified Time // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + ZZLAMUS: varchar({ length: 12 }), // Last Modified User // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + ZZMTARP: varchar({ length: 10 }), // Plant Material Type // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + ZZPRFLG: varchar({ length: 10 }), // CRUD Status // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + ZZREGDT: varchar({ length: 10 }), // Registered Date // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + ZZREGTM: varchar({ length: 10 }), // Registered Time // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + ZZREGUS: varchar({ length: 12 }), // Registered User // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const HRHMTB_ZGSBER_TEXT = mdgSchema.table('HRHMTB_ZGSBER_TEXT', { +export const EQUP_MASTER_MATL_UNIT = mdgSchema.table('EQUP_MASTER_MATL_UNIT', { + // [fk] + MATNR: varchar({ length: 18 }).notNull().references(() => EQUP_MASTER_MATL.MATNR), // Material Number + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - LANGU: varchar({ length: 255 }), // Language Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 - TXTMI: varchar({ length: 255 }), // Business area description // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + GEWEI: varchar({ length: 10 }), // Weight Unit // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + MEABM: varchar({ length: 10 }), // Unit // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + MEINH: varchar({ length: 10 }), // AlternativeUnit // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + UMREN: varchar({ length: 10 }), // Denominator // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + UMREZ: varchar({ length: 10 }), // Numerator // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl + VOLEH: varchar({ length: 10 }), // Volume Unit // From: IF_MDZ_EVCP_EQUP_MASTER.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const HRHMTB_ZLGORT = mdgSchema.table('HRHMTB_ZLGORT', { +// [root] +export const MATERIAL_MASTER_PART_MATL = mdgSchema.table('MATERIAL_MASTER_PART_MATL', { id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - ZLGORT: varchar({ length: 255 }), // Storage Location // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 - ZWERKS: varchar({ length: 255 }), // Plant // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 - ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZZLGOBE: varchar({ length: 255 }), // Storage Location Description // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + BISMT: varchar({ length: 18 }), // Old material number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + BRGEW: varchar({ length: 13 }), // Gross Weight // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + GEWEI: varchar({ length: 10 }), // Weight Unit // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + GROES: varchar({ length: 32 }), // Size/dimensions // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + LVORM: varchar({ length: 10 }), // Deletion flag // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + MAGRV: varchar({ length: 10 }), // Material Group: Packaging Materials // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + MATKL: varchar({ length: 10 }), // Material Group // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + MATNR: varchar({ length: 18 }).notNull().unique(), // Material Number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 + MBRSH: varchar({ length: 10 }), // Industry sector // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + MEABM: varchar({ length: 10 }), // Unit of Dimension for Length/Width/Height // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + MEINS: varchar({ length: 10 }), // Base Unit of Measure // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + MSTAE: varchar({ length: 10 }), // Material Status // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + MSTDE: varchar({ length: 10 }), // Date from which the cross-plant material status is // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + MTART: varchar({ length: 10 }), // Material Type // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + NTGEW: varchar({ length: 16 }), // Net Weight // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + PRDHA: varchar({ length: 18 }), // Product hierarchy // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + SPART: varchar({ length: 10 }), // Division // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + VHART: varchar({ length: 10 }), // Packaging Material Type // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + VOLEH: varchar({ length: 10 }), // Volume unit // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZACT: varchar({ length: 18 }), // Activity Code // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZAPPDT: varchar({ length: 10 }), // Approval Date // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZAPPTM: varchar({ length: 10 }), // Approval Time // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZAPPUS: varchar({ length: 12 }), // Approval User // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZCERT: varchar({ length: 10 }), // Certification Code // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZDESC: varchar({ length: 255 }), // Description // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZINSP: varchar({ length: 10 }), // Inspection // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZLAMDT: varchar({ length: 10 }), // Last Modified Date // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZLAMTM: varchar({ length: 10 }), // Last Modified Time // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZLAMUS: varchar({ length: 12 }), // Last Modified User // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZMMTYP: varchar({ length: 10 }), // Material Master Type // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZMRC: varchar({ length: 10 }), // MRC // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZNAME: varchar({ length: 40 }), // Material Name // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZPJT: varchar({ length: 24 }), // Project Code // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZPLMID: varchar({ length: 50 }), // PLM ID // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZPRCD_SCV_CTLP: varchar({ length: 10 }), // 선행후행조정관 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZPRFLG: varchar({ length: 12 }), // CRUD Status // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZREGDT: varchar({ length: 10 }), // Registered Date // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZREGTM: varchar({ length: 10 }), // Registered Time // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZREGUS: varchar({ length: 12 }), // Registered User // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZREPMAT: varchar({ length: 18 }), // REP Material // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZREP_DIA: varchar({ length: 10 }), // 대표지름 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZREP_DIA_UOM: varchar({ length: 10 }), // 대표지름단위 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZREP_ITM_MATL: varchar({ length: 60 }), // 대표품명재질 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZSMID: varchar({ length: 18 }), // SM ID // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZSPEC: varchar({ length: 255 }), // Specification // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZSTL: varchar({ length: 50 }), // Steel Material // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const HRHMTB_ZSPART = mdgSchema.table('HRHMTB_ZSPART', { +export const MATERIAL_MASTER_PART_MATL_CHARASGN = mdgSchema.table('MATERIAL_MASTER_PART_MATL_CHARASGN', { + // [fk] + MATNR: varchar({ length: 18 }).notNull().references(() => MATERIAL_MASTER_PART_MATL.MATNR), // Material Number + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - ZSPART: varchar({ length: 255 }), // Division // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ATAW1: varchar({ length: 10 }), // Unit of Measurement // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ATAWE: varchar({ length: 10 }), // Unit of Measurement // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ATBEZ: varchar({ length: 30 }), // 특성내역 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ATFLB: varchar({ length: 16 }), // Internal floating point value to // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ATFLV: varchar({ length: 16 }), // Internal floating point from // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ATNAM: varchar({ length: 30 }).notNull(), // Characteristic Name // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 + ATWRT: varchar({ length: 30 }), // Characteristic Value // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ATWTB: varchar({ length: 30 }), // 특성값내역 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + CLASS: varchar({ length: 18 }).notNull(), // Class number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 + KLART: varchar({ length: 10 }).notNull(), // Class Type // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const HRHMTB_ZVKBUR = mdgSchema.table('HRHMTB_ZVKBUR', { +export const MATERIAL_MASTER_PART_MATL_CLASSASGN = mdgSchema.table('MATERIAL_MASTER_PART_MATL_CLASSASGN', { + // [fk] + MATNR: varchar({ length: 18 }).notNull().references(() => MATERIAL_MASTER_PART_MATL.MATNR), // Material Number + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - CTRY_SOFF: varchar({ length: 255 }), // Country Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - LANG_SOFF: varchar({ length: 255 }), // Language Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZVKBUR: varchar({ length: 255 }), // Sales Office // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 - ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + CLASS: varchar({ length: 18 }).notNull(), // Class number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 + KLART: varchar({ length: 10 }).notNull(), // Class Type // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const HRHMTB_ZVKGRP = mdgSchema.table('HRHMTB_ZVKGRP', { +export const MATERIAL_MASTER_PART_MATL_DESC = mdgSchema.table('MATERIAL_MASTER_PART_MATL_DESC', { + // [fk] + MATNR: varchar({ length: 18 }).notNull().references(() => MATERIAL_MASTER_PART_MATL.MATNR), // Material Number + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - ZVKGRP: varchar({ length: 255 }), // Sales Group // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 - ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + MAKTX: varchar({ length: 40 }), // Material Description (Short Text) // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + SPRAS: varchar({ length: 10 }).notNull(), // Language // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const HRHMTB_ZVKORG = mdgSchema.table('HRHMTB_ZVKORG', { +export const MATERIAL_MASTER_PART_MATL_PLNT = mdgSchema.table('MATERIAL_MASTER_PART_MATL_PLNT', { + // [fk] + MATNR: varchar({ length: 18 }).notNull().references(() => MATERIAL_MASTER_PART_MATL.MATNR), // Material Number + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - ZVKORG: varchar({ length: 255 }), // Sales Organization // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 - ZZBOAVO: varchar({ length: 255 }), // Rebate processing active in the sales organization // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZZKUNNR: varchar({ length: 255 }), // Customer number for intercompany billing // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZZVKOKL: varchar({ length: 255 }), // Sales organization calendar // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZZWAERS: varchar({ length: 255 }), // Statistics currency // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + LVORM: varchar({ length: 10 }), // Deletion Flag // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + MMSTA: varchar({ length: 10 }), // Plant-Specific Material Status // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + MMSTD: varchar({ length: 10 }), // Date from which the plant-specific material status // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + WERKS: varchar({ length: 10 }).notNull(), // Plant // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 + ZZLAMDT: varchar({ length: 10 }), // Last Modified Date // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZLAMTM: varchar({ length: 10 }), // Last Modified Time // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZLAMUS: varchar({ length: 12 }), // Last Modified User // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZMTARP: varchar({ length: 10 }), // Plant Material Type // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZPRFLG: varchar({ length: 10 }), // CRUD Status // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZREGDT: varchar({ length: 10 }), // Registered Date // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZREGTM: varchar({ length: 10 }), // Registered Time // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZZREGUS: varchar({ length: 12 }), // Registered User // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const HRHMTB_ZVSTEL = mdgSchema.table('HRHMTB_ZVSTEL', { +export const MATERIAL_MASTER_PART_MATL_UNIT = mdgSchema.table('MATERIAL_MASTER_PART_MATL_UNIT', { + // [fk] + MATNR: varchar({ length: 18 }).notNull().references(() => MATERIAL_MASTER_PART_MATL.MATNR), // Material Number + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - ALAN_VSTE: varchar({ length: 255 }), // Departure zone // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - AZON_VSTE: varchar({ length: 255 }), // Departure country // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - CTRY_SHPT: varchar({ length: 255 }), // Country Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - LANG_SHPT: varchar({ length: 255 }), // Language Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZVSTEL: varchar({ length: 255 }), // Shipping Point // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 - ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZZFABKL: varchar({ length: 255 }), // Factory calendar key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZZLAZBS: varchar({ length: 255 }), // Determine loading time // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZZLAZZT: varchar({ length: 255 }), // Default loading time // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZZRIZBS: varchar({ length: 255 }), // Determine pick/pack time // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZZRIZZT: varchar({ length: 255 }), // Default pick/pack time // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + BREIT: varchar({ length: 13 }), // Width // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + BRGEW: varchar({ length: 13 }), // Gross Weight // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + GEWEI: varchar({ length: 10 }), // Weight Unit // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + HOEHE: varchar({ length: 13 }), // Height // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + LAENG: varchar({ length: 13 }), // Length // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + MEABM: varchar({ length: 10 }), // Unit of Dimension for Length/Width/Height // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + MEINH: varchar({ length: 10 }).notNull(), // Alternative Unit of Measure for Stockkeeping Unit // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 + UMREN: varchar({ length: 10 }), // Denominator for conversion to base units of measur // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + UMREZ: varchar({ length: 10 }), // Numerator for Conversion to Base Units of Measure // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + VOLEH: varchar({ length: 10 }), // Volume unit // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + VOLUM: varchar({ length: 13 }), // Volume // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const HRHMTB_ZVTWEG = mdgSchema.table('HRHMTB_ZVTWEG', { +// [root] +export const MATERIAL_MASTER_PART_RETURN_CMCTB_MAT_BSE = mdgSchema.table('MATERIAL_MASTER_PART_RETURN_CMCTB_MAT_BSE', { id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - ZVTWEG: varchar({ length: 255 }), // Distribution Channel // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 - ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + IF_MSG: varchar({ length: 100 }), // IF 메시지 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl + IF_STAT: varchar({ length: 10 }), // IF 상태 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl + MAT_CD: varchar({ length: 18 }).notNull().unique(), // 자재코드 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl // WSDL에서 필수 필드 + MAT_ID: varchar({ length: 50 }), // PLM 채번 자재코드 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const HRHMTB_ZWERKS = mdgSchema.table('HRHMTB_ZWERKS', { +// [root] +export const MODEL_MASTER_MATL = mdgSchema.table('MODEL_MASTER_MATL', { id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - CTRY_PLNT: varchar({ length: 255 }), // Country // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - LANG_PLNT: varchar({ length: 255 }), // Language Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZWERKS: varchar({ length: 255 }), // Plant // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZZDELETE: varchar({ length: 255 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZZFABKL: varchar({ length: 255 }), // Factory Calendar // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZZNAME1: varchar({ length: 255 }), // Name // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl - ZZNAME2: varchar({ length: 255 }), // Name2 // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + BISMT: varchar({ length: 18 }), // Old material number // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + BRGEW: varchar({ length: 13 }), // Gross Weight // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + GEWEI: varchar({ length: 10 }), // Weight Unit // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + GROES: varchar({ length: 32 }), // Size/dimensions // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + LVORM: varchar({ length: 10 }), // Deletion flag // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + MAGRV: varchar({ length: 10 }), // Material Group: Packaging Materials // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + MATKL: varchar({ length: 10 }), // Material Group // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + MATNR: varchar({ length: 18 }).notNull().unique(), // Material Number // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + MBRSH: varchar({ length: 10 }), // Industry sector // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + MEABM: varchar({ length: 10 }), // Unit of Dimension for Length/Width/Height // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + MEINS: varchar({ length: 10 }), // Base Unit of Measure // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + MSTAE: varchar({ length: 10 }), // Material Status // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + MSTDE: varchar({ length: 10 }), // Date from which the cross-plant material status is // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + MTART: varchar({ length: 10 }), // Material Type // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + NTGEW: varchar({ length: 16 }), // Net Weight // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + PRDHA: varchar({ length: 18 }), // Product hierarchy // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + SPART: varchar({ length: 10 }), // Division // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + VHART: varchar({ length: 10 }), // Packaging Material Type // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + VOLEH: varchar({ length: 10 }), // Volume unit // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ZZAPPDT: varchar({ length: 10 }), // Approval Date // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ZZAPPTM: varchar({ length: 10 }), // Approval Time // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ZZAPPUS: varchar({ length: 12 }), // Approval User // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ZZDESC: varchar({ length: 255 }), // Description // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ZZDOKAR: varchar({ length: 10 }), // Document Type // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ZZDOKNR: varchar({ length: 25 }), // Document number // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ZZDOKTL: varchar({ length: 10 }), // Document Part // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ZZDOKVR: varchar({ length: 10 }), // Document Version // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ZZLAMDT: varchar({ length: 10 }), // Last Modified Date // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ZZLAMTM: varchar({ length: 10 }), // Last Modified Time // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ZZLAMUS: varchar({ length: 12 }), // Last Modified User // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ZZMMTYP: varchar({ length: 10 }), // Material Master Type // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ZZNAME: varchar({ length: 40 }), // Material Name // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ZZPRFLG: varchar({ length: 10 }), // CRUD Status // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ZZREGDT: varchar({ length: 10 }), // Registered Date // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ZZREGTM: varchar({ length: 10 }), // Registered Time // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ZZREGUS: varchar({ length: 12 }), // Registered User // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ZZSPEC: varchar({ length: 255 }), // Specification // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); -export const MATL = mdgSchema.table('MATL', { +export const MODEL_MASTER_MATL_CHARASGN = mdgSchema.table('MODEL_MASTER_MATL_CHARASGN', { + // [fk] + MATNR: varchar({ length: 18 }).notNull().references(() => MODEL_MASTER_MATL.MATNR), // Material Number + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - BISMT: varchar({ length: 255 }), // Old material number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - BREIT: varchar({ length: 255 }), // Width // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - BRGEW: varchar({ length: 255 }), // Gross Weight // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - GEWEI: varchar({ length: 255 }), // Weight Unit // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - GROES: varchar({ length: 255 }), // Size/dimensions // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - HOEHE: varchar({ length: 255 }), // Height // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - LAENG: varchar({ length: 255 }), // Length // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - LVORM: varchar({ length: 255 }), // Deletion flag // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - MAGRV: varchar({ length: 255 }), // Material Group: Packaging Materials // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - MATKL: varchar({ length: 255 }), // Material Group // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - // MATNR: MATL 의 키. 이 키를 기준으로 다른 테이블과 연결됨. - MATNR: varchar({ length: 255 }), // Material Number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 - MBRSH: varchar({ length: 255 }), // Industry sector // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - MEABM: varchar({ length: 255 }), // Unit of Dimension for Length/Width/Height // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - MEINS: varchar({ length: 255 }), // Base Unit of Measure // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - MSTAE: varchar({ length: 255 }), // Material Status // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - MSTDE: varchar({ length: 255 }), // Date from which the cross-plant material status is // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - MTART: varchar({ length: 255 }), // Material Type // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - NTGEW: varchar({ length: 255 }), // Net Weight // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - PRDHA: varchar({ length: 255 }), // Product hierarchy // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - SPART: varchar({ length: 255 }), // Division // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - VHART: varchar({ length: 255 }), // Packaging Material Type // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - VOLEH: varchar({ length: 255 }), // Volume unit // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - VOLUM: varchar({ length: 255 }), // Volume // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZACT: varchar({ length: 255 }), // Activity Code // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZAPPDT: varchar({ length: 255 }), // Approval Date // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZAPPTM: varchar({ length: 255 }), // Approval Time // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZAPPUS: varchar({ length: 255 }), // Approval User // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZCERT: varchar({ length: 255 }), // Certification Code // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZDESC: varchar({ length: 255 }), // Description // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZDOKAR: varchar({ length: 255 }), // Document Type // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl - ZZDOKNR: varchar({ length: 255 }), // Document number // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl - ZZDOKTL: varchar({ length: 255 }), // Document Part // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl - ZZDOKVR: varchar({ length: 255 }), // Document Version // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl - ZZINSP: varchar({ length: 255 }), // Inspection // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZLAMDT: varchar({ length: 255 }), // Last Modified Date // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZLAMTM: varchar({ length: 255 }), // Last Modified Time // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZLAMUS: varchar({ length: 255 }), // Last Modified User // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZMMTYP: varchar({ length: 255 }), // Material Master Type // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZMRC: varchar({ length: 255 }), // MRC // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZNAME: varchar({ length: 255 }), // Material Name // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZPJT: varchar({ length: 255 }), // Project Code // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZPLMID: varchar({ length: 255 }), // PLM ID // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZPRCD_SCV_CTLP: varchar({ length: 255 }), // 선행후행조정관 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZPRFLG: varchar({ length: 255 }), // CRUD Status // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZREGDT: varchar({ length: 255 }), // Registered Date // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZREGTM: varchar({ length: 255 }), // Registered Time // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZREGUS: varchar({ length: 255 }), // Registered User // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZREPMAT: varchar({ length: 255 }), // REP Material // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZREP_DIA: varchar({ length: 255 }), // 대표지름 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZREP_DIA_UOM: varchar({ length: 255 }), // 대표지름단위 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZREP_ITM_MATL: varchar({ length: 255 }), // 대표품명재질 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZSMID: varchar({ length: 255 }), // SM ID // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZSPEC: varchar({ length: 255 }), // Specification // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZSTL: varchar({ length: 255 }), // Steel Material // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ATAW1: varchar({ length: 10 }), // Unit of Measurement // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ATAWE: varchar({ length: 10 }), // Unit of Measurement // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ATBEZ: varchar({ length: 30 }), // 특성내역 // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ATFLB: varchar({ length: 16 }), // Internal floating point value to // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ATFLV: varchar({ length: 16 }), // Internal floating point from // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ATNAM: varchar({ length: 30 }), // Characteristic Name // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ATWRT: varchar({ length: 30 }), // Characteristic Value // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ATWTB: varchar({ length: 30 }), // 특성값내역 // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + CLASS: varchar({ length: 18 }), // Class number // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + KLART: varchar({ length: 10 }), // Class Type // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const MODEL_MASTER_MATL_CLASSASGN = mdgSchema.table('MODEL_MASTER_MATL_CLASSASGN', { + // [fk] + MATNR: varchar({ length: 18 }).notNull().references(() => MODEL_MASTER_MATL.MATNR), // Material Number + + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + CLASS: varchar({ length: 18 }), // Class number // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + KLART: varchar({ length: 10 }), // Class Type // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const MODEL_MASTER_MATL_DESC = mdgSchema.table('MODEL_MASTER_MATL_DESC', { + // [fk] + MATNR: varchar({ length: 18 }).notNull().references(() => MODEL_MASTER_MATL.MATNR), // Material Number + + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + MAKTX: varchar({ length: 40 }), // Material Description (Short Text) // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + SPRAS: varchar({ length: 10 }), // Language // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const MODEL_MASTER_MATL_PLNT = mdgSchema.table('MODEL_MASTER_MATL_PLNT', { + // [fk] + MATNR: varchar({ length: 18 }).notNull().references(() => MODEL_MASTER_MATL.MATNR), // Material Number + + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + LVORM: varchar({ length: 10 }), // Deletion Flag // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + MMSTA: varchar({ length: 10 }), // Plant-Specific Material Status // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + MMSTD: varchar({ length: 10 }), // Date from which the plant-specific material status // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + WERKS: varchar({ length: 10 }), // Plant // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ZZLAMDT: varchar({ length: 10 }), // Last Modified Date // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ZZLAMTM: varchar({ length: 10 }), // Last Modified Time // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ZZLAMUS: varchar({ length: 12 }), // Last Modified User // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ZZMTARP: varchar({ length: 10 }), // Plant Material Type // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ZZPRFLG: varchar({ length: 10 }), // CRUD Status // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ZZREGDT: varchar({ length: 10 }), // Registered Date // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ZZREGTM: varchar({ length: 10 }), // Registered Time // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + ZZREGUS: varchar({ length: 12 }), // Registered User // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const MODEL_MASTER_MATL_UNIT = mdgSchema.table('MODEL_MASTER_MATL_UNIT', { + // [fk] + MATNR: varchar({ length: 18 }).notNull().references(() => MODEL_MASTER_MATL.MATNR), // Material Number + + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + BREIT: varchar({ length: 13 }), // Width // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + BRGEW: varchar({ length: 13 }), // Gross Weight // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + GEWEI: varchar({ length: 10 }), // Weight Unit // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + HOEHE: varchar({ length: 13 }), // Height // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + LAENG: varchar({ length: 13 }), // Length // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + MEABM: varchar({ length: 10 }), // Unit of Dimension for Length/Width/Height // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + MEINH: varchar({ length: 10 }), // Alternative Unit of Measure for Stockkeeping Unit // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + UMREN: varchar({ length: 10 }), // Denominator for conversion to base units of measur // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + UMREZ: varchar({ length: 10 }), // Numerator for Conversion to Base Units of Measure // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + VOLEH: varchar({ length: 10 }), // Volume unit // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + VOLUM: varchar({ length: 13 }), // Volume // From: IF_MDZ_EVCP_MODEL_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +// [root] +export const ORGANIZATION_MASTER_HRHMTB_CCTR = mdgSchema.table('ORGANIZATION_MASTER_HRHMTB_CCTR', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ABTEI: varchar({ length: 12 }), // Department // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ANRED: varchar({ length: 15 }), // Title // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + BKZER: varchar({ length: 10 }), // Actual Revenue // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + BKZKP: varchar({ length: 10 }), // Actual Primary Costs // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + BKZKS: varchar({ length: 10 }), // Actual Secondary Costs // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + BKZOB: varchar({ length: 10 }), // Commitment Update // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + BUKRS: varchar({ length: 10 }), // Company Code // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + CCTR: varchar({ length: 10 }).notNull().unique(), // Cost Center // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + DATAB: varchar({ length: 10 }), // Valid from // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + DATBI: varchar({ length: 10 }).notNull(), // Valid to // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + DATLT: varchar({ length: 14 }), // Data communication line no. // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + DRNAM: varchar({ length: 10 }), // Printer destination for CCtr report // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + FUNC_AREA: varchar({ length: 16 }), // Functional Area // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + GSBER: varchar({ length: 10 }), // Business Area // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + KHINR: varchar({ length: 12 }), // Standard Hierarchy Area // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + KOKRS: varchar({ length: 10 }).notNull(), // Controlling Area // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + KOSAR: varchar({ length: 10 }), // Cost Center Category // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + LAND1: varchar({ length: 10 }), // Country Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + MGEFL: varchar({ length: 10 }), // Record Quantity // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + NAME1: varchar({ length: 70 }), // Name 1 // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + NAME2: varchar({ length: 70 }), // Name 2 // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + NAME3: varchar({ length: 70 }), // Name 3 // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + NAME4: varchar({ length: 70 }), // Name 4 // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ORT01: varchar({ length: 35 }), // City // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ORT02: varchar({ length: 35 }), // District // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + PFACH: varchar({ length: 10 }), // PO Box // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + PKZER: varchar({ length: 10 }), // Plan Revenues // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + PKZKP: varchar({ length: 10 }), // Plan Primary Costs // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + PKZKS: varchar({ length: 10 }), // Plan Secondary Costs // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + PRCTR: varchar({ length: 10 }), // Profit Center // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + PSTL2: varchar({ length: 10 }), // P.O. Box Postal Code // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + PSTLZ: varchar({ length: 10 }), // Postal Code // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + REGIO: varchar({ length: 10 }), // Region (State, Province, County) // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + SPRAS: varchar({ length: 10 }), // Language Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + STRAS: varchar({ length: 35 }), // House number and street // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + TELBX: varchar({ length: 15 }), // Telebox number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + TELF1: varchar({ length: 16 }), // First telephone number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + TELF2: varchar({ length: 16 }), // Second telephone number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + TELFX: varchar({ length: 31 }), // Fax Number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + TELTX: varchar({ length: 30 }), // Teletex number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + TELX1: varchar({ length: 30 }), // Telex number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + TXJCD: varchar({ length: 15 }), // Tax Jurisdiction // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + VERAK: varchar({ length: 60 }), // Person Responsible // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + VERAK_USE: varchar({ length: 12 }), // User Responsible // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + VMETH: varchar({ length: 10 }), // Allowed Allocation methods // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + WAERS: varchar({ length: 10 }), // Currency // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZBRANCH: varchar({ length: 10 }), // Business Place // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZDELETE: varchar({ length: 10 }), // Delete Flag // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZFCTRI: varchar({ length: 10 }), // Create Fund Center Indicator // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZSECCODE: varchar({ length: 10 }), // Section Code // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZSEGMENT: varchar({ length: 10 }), // Segment for Segmental Reporting // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), -}, (table) => [ - unique().on(table.MATNR), -]); +}); + +export const ORGANIZATION_MASTER_HRHMTB_CCTR_TEXT = mdgSchema.table('ORGANIZATION_MASTER_HRHMTB_CCTR_TEXT', { + // [fk] + CCTR: varchar({ length: 10 }).notNull().unique().references(() => ORGANIZATION_MASTER_HRHMTB_CCTR.CCTR), // Cost Center -export const MATL_CHARASGN = mdgSchema.table('MATL_CHARASGN', { id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - ATAW1: varchar({ length: 255 }), // Unit of Measurement // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ATAWE: varchar({ length: 255 }), // Unit of Measurement // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ATBEZ: varchar({ length: 255 }), // 특성내역 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ATFLB: varchar({ length: 255 }), // Internal floating point value to // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ATFLV: varchar({ length: 255 }), // Internal floating point from // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ATNAM: varchar({ length: 255 }), // Characteristic Name // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 - ATWRT: varchar({ length: 255 }), // Characteristic Value // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ATWTB: varchar({ length: 255 }), // 특성값내역 // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - CLASS: varchar({ length: 255 }), // Class number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 - KLART: varchar({ length: 255 }), // Class Type // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 - MATNR: varchar({ length: 255 }).notNull().references(() => MATL.MATNR, { onDelete: 'cascade' }), // Material Number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 + KTEXT: varchar({ length: 60 }), // General Name // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + LTEXT: varchar({ length: 120 }), // Description // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), -}, (table) => [ - unique().on(table.MATNR, table.CLASS, table.KLART, table.ATNAM), -]); +}); -export const MATL_CLASSASGN = mdgSchema.table('MATL_CLASSASGN', { +// [root] +export const ORGANIZATION_MASTER_HRHMTB_PCTR = mdgSchema.table('ORGANIZATION_MASTER_HRHMTB_PCTR', { id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - CLASS: varchar({ length: 255 }), // Class number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 - KLART: varchar({ length: 255 }), // Class Type // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 - MATNR: varchar({ length: 255 }).notNull().references(() => MATL.MATNR, { onDelete: 'cascade' }), // Material Number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 + ABTEI: varchar({ length: 12 }), // Department // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + DATAB: varchar({ length: 10 }), // Valid from // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + DATBI: varchar({ length: 10 }).notNull(), // Valid to // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + KHINR: varchar({ length: 12 }), // Profit center area(Profit center group) // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + KOKRS: varchar({ length: 10 }).notNull(), // Controlling Area // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + LOCK_IND: varchar({ length: 10 }), // Lock indicator // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + PCTR: varchar({ length: 10 }).notNull().unique(), // Profit Center // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + SEGMENT: varchar({ length: 10 }), // Segment // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + TXJCD: varchar({ length: 15 }), // Tax Jurisdiction // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + VERAK: varchar({ length: 20 }), // Person Responsible // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + VERAK_USE: varchar({ length: 12 }), // User Responsible // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZDELETE: varchar({ length: 10 }), // Delete Flag // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), -}, (table) => [ - unique().on(table.MATNR, table.CLASS, table.KLART), -]); +}); -export const MATL_DESC = mdgSchema.table('MATL_DESC', { +// [root] +export const ORGANIZATION_MASTER_HRHMTB_ZBUKRS = mdgSchema.table('ORGANIZATION_MASTER_HRHMTB_ZBUKRS', { id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - MAKTX: varchar({ length: 255 }), // Material Description (Short Text) // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - MATNR: varchar({ length: 255 }).notNull().references(() => MATL.MATNR, { onDelete: 'cascade' }), // Material Number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 - SPRAS: varchar({ length: 255 }), // Language // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 + CURR_BUKR: varchar({ length: 10 }), // Currency // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZBUKRS: varchar({ length: 10 }).notNull().unique(), // Company Code // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + ZZBUTXT: varchar({ length: 50 }), // Company Code Name // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZCITY: varchar({ length: 50 }), // City // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZCOUNTRY: varchar({ length: 10 }), // Country Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZDELETE: varchar({ length: 10 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZLANGU: varchar({ length: 10 }), // Language Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), -}, (table) => [ - unique().on(table.MATNR, table.SPRAS), -]); +}); -export const MATL_PLNT = mdgSchema.table('MATL_PLNT', { +// [root] +export const ORGANIZATION_MASTER_HRHMTB_ZEKGRP = mdgSchema.table('ORGANIZATION_MASTER_HRHMTB_ZEKGRP', { id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - LVORM: varchar({ length: 255 }), // Deletion Flag // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - MATNR: varchar({ length: 255 }).notNull().references(() => MATL.MATNR, { onDelete: 'cascade' }), // Material Number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 - MMSTA: varchar({ length: 255 }), // Plant-Specific Material Status // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - MMSTD: varchar({ length: 255 }), // Date from which the plant-specific material status // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - WERKS: varchar({ length: 255 }), // Plant // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 - ZZLAMDT: varchar({ length: 255 }), // Last Modified Date // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZLAMTM: varchar({ length: 255 }), // Last Modified Time // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZLAMUS: varchar({ length: 255 }), // Last Modified User // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZMTARP: varchar({ length: 255 }), // Plant Material Type // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZPRFLG: varchar({ length: 255 }), // CRUD Status // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZREGDT: varchar({ length: 255 }), // Registered Date // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZREGTM: varchar({ length: 255 }), // Registered Time // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - ZZREGUS: varchar({ length: 255 }), // Registered User // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZEKGRP: varchar({ length: 10 }).notNull().unique(), // Purchasing Group // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + ZZDELETE: varchar({ length: 10 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZEKNAM: varchar({ length: 36 }), // Purchasing Group Description // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZEKTEL: varchar({ length: 12 }), // Telephone Number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZEMPNUM: varchar({ length: 10 }), // Employee Number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZSINGLE: varchar({ length: 241 }), // Single ID // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZTELFX: varchar({ length: 31 }), // Fax Number // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZTEL_NUM: varchar({ length: 30 }), // Telephone Number (Office) // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), -}, (table) => [ - unique().on(table.MATNR, table.WERKS), -]); +}); -export const MATL_UNIT = mdgSchema.table('MATL_UNIT', { +// [root] +export const ORGANIZATION_MASTER_HRHMTB_ZEKORG = mdgSchema.table('ORGANIZATION_MASTER_HRHMTB_ZEKORG', { id: integer('id').primaryKey().generatedByDefaultAsIdentity(), - BREIT: varchar({ length: 255 }), // Width // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - BRGEW: varchar({ length: 255 }), // Gross Weight // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - GEWEI: varchar({ length: 255 }), // Weight Unit // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - HOEHE: varchar({ length: 255 }), // Height // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - LAENG: varchar({ length: 255 }), // Length // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - MATNR: varchar({ length: 255 }), // Material Number // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 - MEABM: varchar({ length: 255 }), // Unit of Dimension for Length/Width/Height // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - MEINH: varchar({ length: 255 }), // Alternative Unit of Measure for Stockkeeping Unit // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl // WSDL에서 필수 필드 - UMREN: varchar({ length: 255 }), // Denominator for conversion to base units of measur // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - UMREZ: varchar({ length: 255 }), // Numerator for Conversion to Base Units of Measure // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - VOLEH: varchar({ length: 255 }), // Volume unit // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl - VOLUM: varchar({ length: 255 }), // Volume // From: IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl + ZEKORG: varchar({ length: 10 }).notNull().unique(), // Purchasing Organization // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + ZZDELETE: varchar({ length: 10 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZEKOTX: varchar({ length: 40 }), // Purchasing Organization Description // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), -}, (table) => [ - unique().on(table.MATNR, table.MEINH), -]); +}); + +// [root] +export const ORGANIZATION_MASTER_HRHMTB_ZGSBER = mdgSchema.table('ORGANIZATION_MASTER_HRHMTB_ZGSBER', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ZGSBER: varchar({ length: 10 }).notNull().unique(), // Business Area // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + ZZDELETE: varchar({ length: 10 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const ORGANIZATION_MASTER_HRHMTB_ZGSBER_TEXT = mdgSchema.table('ORGANIZATION_MASTER_HRHMTB_ZGSBER_TEXT', { + // [fk] + ZGSBER: varchar({ length: 10 }).notNull().unique().references(() => ORGANIZATION_MASTER_HRHMTB_ZGSBER.ZGSBER), // Business Area + + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + LANGU: varchar({ length: 10 }).notNull(), // Language Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + TXTMI: varchar({ length: 60 }), // Business area description // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +// [root] +export const ORGANIZATION_MASTER_HRHMTB_ZLGORT = mdgSchema.table('ORGANIZATION_MASTER_HRHMTB_ZLGORT', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ZLGORT: varchar({ length: 10 }).notNull().unique(), // Storage Location // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + ZWERKS: varchar({ length: 10 }).notNull(), // Plant // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + ZZDELETE: varchar({ length: 10 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZLGOBE: varchar({ length: 32 }), // Storage Location Description // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +// [root] +export const ORGANIZATION_MASTER_HRHMTB_ZSPART = mdgSchema.table('ORGANIZATION_MASTER_HRHMTB_ZSPART', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ZSPART: varchar({ length: 10 }).notNull().unique(), // Division // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZDELETE: varchar({ length: 10 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +// [root] +export const ORGANIZATION_MASTER_HRHMTB_ZVKBUR = mdgSchema.table('ORGANIZATION_MASTER_HRHMTB_ZVKBUR', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + CTRY_SOFF: varchar({ length: 10 }), // Country Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + LANG_SOFF: varchar({ length: 10 }), // Language Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZVKBUR: varchar({ length: 10 }).notNull().unique(), // Sales Office // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + ZZDELETE: varchar({ length: 10 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +// [root] +export const ORGANIZATION_MASTER_HRHMTB_ZVKGRP = mdgSchema.table('ORGANIZATION_MASTER_HRHMTB_ZVKGRP', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ZVKGRP: varchar({ length: 10 }).notNull().unique(), // Sales Group // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + ZZDELETE: varchar({ length: 10 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +// [root] +export const ORGANIZATION_MASTER_HRHMTB_ZVKORG = mdgSchema.table('ORGANIZATION_MASTER_HRHMTB_ZVKORG', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ZVKORG: varchar({ length: 10 }).notNull().unique(), // Sales Organization // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + ZZBOAVO: varchar({ length: 10 }), // Rebate processing active in the sales organization // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZDELETE: varchar({ length: 10 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZKUNNR: varchar({ length: 10 }), // Customer number for intercompany billing // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZVKOKL: varchar({ length: 10 }), // Sales organization calendar // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZWAERS: varchar({ length: 10 }), // Statistics currency // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +// [root] +export const ORGANIZATION_MASTER_HRHMTB_ZVSTEL = mdgSchema.table('ORGANIZATION_MASTER_HRHMTB_ZVSTEL', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ALAN_VSTE: varchar({ length: 10 }), // Departure zone // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + AZON_VSTE: varchar({ length: 10 }), // Departure country // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + CTRY_SHPT: varchar({ length: 10 }), // Country Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + LANG_SHPT: varchar({ length: 10 }), // Language Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZVSTEL: varchar({ length: 10 }).notNull().unique(), // Shipping Point // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + ZZDELETE: varchar({ length: 10 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZFABKL: varchar({ length: 10 }), // Factory calendar key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZLAZBS: varchar({ length: 10 }), // Determine loading time // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZRIZBS: varchar({ length: 10 }), // Determine pick/pack time // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +// [root] +export const ORGANIZATION_MASTER_HRHMTB_ZVTWEG = mdgSchema.table('ORGANIZATION_MASTER_HRHMTB_ZVTWEG', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ZVTWEG: varchar({ length: 10 }).notNull().unique(), // Distribution Channel // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl // WSDL에서 필수 필드 + ZZDELETE: varchar({ length: 10 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +// [root] +export const ORGANIZATION_MASTER_HRHMTB_ZWERKS = mdgSchema.table('ORGANIZATION_MASTER_HRHMTB_ZWERKS', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + CTRY_PLNT: varchar({ length: 10 }), // Country // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + LANG_PLNT: varchar({ length: 10 }), // Language Key // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + // 인터페이스 정의서 정보 누락으로 의심되는 부분. 아래 ZWERKS 필드에 M 없음. + ZWERKS: varchar({ length: 10 }).notNull().unique(), // Plant // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZDELETE: varchar({ length: 10 }), // Flag for deletion // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZFABKL: varchar({ length: 10 }), // Factory Calendar // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZNAME1: varchar({ length: 60 }), // Name // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + ZZNAME2: varchar({ length: 60 }), // Name2 // From: IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +// [root] +export const PROJECT_MASTER_CMCTB_PROJ_MAST = mdgSchema.table('PROJECT_MASTER_CMCTB_PROJ_MAST', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + AS_GRNT_PRD: varchar({ length: 10 }), // A/S 보증기간 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + BIZCLS: varchar({ length: 10 }), // 사업부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + BIZLOC_CD: varchar({ length: 10 }), // 사업장코드 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + BIZ_DMN: varchar({ length: 10 }), // 사업영역 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + BP_DL_DT: varchar({ length: 10 }), // 선표인도일자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + CHN_PROJ_TP: varchar({ length: 10 }), // (중국)프로젝트타입 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + CLS_1: varchar({ length: 20 }), // 선급1 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + CLS_2: varchar({ length: 20 }), // 선급2 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + CNRT_CNTN_YN: varchar({ length: 10 }), // 계약존속여부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + CNRT_DL_DT: varchar({ length: 10 }), // 계약인도일자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + CNRT_DT: varchar({ length: 10 }), // 계약일자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + CNRT_RESV_YN: varchar({ length: 10 }), // 계약유보여부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + CO_CD: varchar({ length: 10 }), // 회사코드 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + CSTM_PO_NO: varchar({ length: 35 }), // 고객발주번호 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + DEL_YN: varchar({ length: 10 }), // 삭제 여부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + DIGT_PDT_GRP: varchar({ length: 10 }), // 전기전자 제품군 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + DIST_PATH: varchar({ length: 10 }), // 유통경로 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + DL_BF_PROJ_NM: varchar({ length: 120 }), // 인도전선명 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + DL_CSTM_CD: varchar({ length: 10 }), // 인도고객 ID // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + DOCK_CD: varchar({ length: 10 }), // 도크 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + DSN_CHRGR: varchar({ length: 13 }), // 설계담당자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + FIN_GRNT_FN_DT: varchar({ length: 10 }), // 최종수요자 보증종료일 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + GENT_CNT: varchar({ length: 10 }), // 세대수/시리즈 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + GOV: varchar({ length: 60 }), // 관청명 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + GRNT_STDT: varchar({ length: 10 }), // Project Warranty Start Date // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + IF_STAT: varchar({ length: 10 }), // 인터페이스 진행단계 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + IMO_NO: varchar({ length: 10 }), // IMO 번호 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + INQY_NO: varchar({ length: 30 }), // 안건번호 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + INQY_SEQ: varchar({ length: 10 }), // 안건순번 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + IO_GB: varchar({ length: 10 }), // 사내외 구분 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + MNG_ACOT_DMN: varchar({ length: 10 }), // 관리회계영역 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + MN_ENGN_TP_CD: varchar({ length: 30 }), // Main engine type code // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + MSHIP_NO: varchar({ length: 24 }), // 기준호선 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + NEW_MC_YN: varchar({ length: 10 }), // MC YN // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + NTTP: varchar({ length: 10 }), // 국적 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + ORDR_GRNT_FN_DT: varchar({ length: 10 }), // 주문주 보증종료일 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + ORDR_GRNT_PRD: varchar({ length: 10 }), // 주문주 보증기간 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + OWN_1: varchar({ length: 10 }), // 선주1 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + OWN_AB: varchar({ length: 60 }), // 선주약어 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + OWN_NM: varchar({ length: 40 }), // 선주명 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PDT_LVL_4: varchar({ length: 14 }), // 제품 Level 4 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PLNT_CD: varchar({ length: 10 }), // 플랜트 코드 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PRCTR: varchar({ length: 10 }), // 손익센터 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PRGS_STAT: varchar({ length: 10 }), // 진행상태 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PROJ_CRTE_REQ_DT: varchar({ length: 10 }), // 프로젝트 생성요청일 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PROJ_CRTE_REQ_EMPNO: varchar({ length: 13 }), // 프로젝트 생성요청자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PROJ_DL_PLN_DT: varchar({ length: 10 }), // 모프로젝트 인도계획일 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PROJ_DL_RT_DT: varchar({ length: 10 }), // 모프로젝트 인도실적일 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PROJ_DSC: varchar({ length: 120 }), // 프로젝트 설명 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PROJ_DTL_TP: varchar({ length: 10 }), // 프로젝트 세부타입 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PROJ_ETC_TP: varchar({ length: 10 }), // 프로젝트 기타타입 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PROJ_GB: varchar({ length: 10 }), // 프로젝트구분 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PROJ_NO: varchar({ length: 24 }).notNull().unique(), // 프로젝트번호 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl // WSDL에서 필수 필드 + PROJ_PRGS_YN: varchar({ length: 10 }), // 공사진행여부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PROJ_PROF: varchar({ length: 10 }), // 프로젝트 프로파일 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PROJ_SCP: varchar({ length: 10 }), // 프로젝트범위 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PROJ_WBS_TP: varchar({ length: 10 }), // 프로젝트 WBS타입 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + PRO_PROJ_NO: varchar({ length: 24 }), // 프로포절 프로젝트 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + QM_CLS: varchar({ length: 10 }), // 품질사업부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + REF_NO: varchar({ length: 10 }), // 시리즈번호 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + RLTD_PROJ: varchar({ length: 24 }), // 연관프로젝트 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + RL_DL_DT: varchar({ length: 10 }), // 실인도일자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + SALE_GRP: varchar({ length: 10 }), // 영업그룹 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + SALE_ORG_CD: varchar({ length: 10 }), // 영업조직 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + SA_DT: varchar({ length: 10 }), // Sail Away Date // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + SERS_NO: varchar({ length: 24 }), // 시리즈첫공사번호 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + SERS_YN: varchar({ length: 10 }), // 시리즈여부 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + SHTYPE: varchar({ length: 10 }), // 선형 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + SHTYPE_CD: varchar({ length: 10 }), // 선형코드 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + SHTYPE_GRP: varchar({ length: 10 }), // 선형군 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + SHTYPE_UOM: varchar({ length: 10 }), // 선형단위 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + SKND: varchar({ length: 10 }), // 선종 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + SRC_SYS_ID: varchar({ length: 10 }), // Source System // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + STDT: varchar({ length: 10 }), // 시작일자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + SYS_ACOT_CLSD_DT: varchar({ length: 10 }), // 시스템회계마감일자 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + TOT_CNRT_CNT: varchar({ length: 10 }), // 전체 계약 대수 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + TYPE: varchar({ length: 10 }), // 프로젝트 Top/Hull // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + WP_PROJ_TP: varchar({ length: 10 }), // (풍력)프로젝트타입 // From: IF_MDZ_EVCP_PROJECT_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +// [root] +export const VENDOR_MASTER_BP_HEADER = mdgSchema.table('VENDOR_MASTER_BP_HEADER', { + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + VNDRCD: varchar({ length: 10 }).notNull().unique(), // VENDOR코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const VENDOR_MASTER_BP_HEADER_ADDRESS = mdgSchema.table('VENDOR_MASTER_BP_HEADER_ADDRESS', { + // [fk] + VNDRCD: varchar({ length: 10 }).notNull().references(() => VENDOR_MASTER_BP_HEADER.VNDRCD), // VENDOR코드 + + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ADR_NO: varchar({ length: 10 }).notNull(), // 주소번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const VENDOR_MASTER_BP_HEADER_ADDRESS_AD_EMAIL = mdgSchema.table('VENDOR_MASTER_BP_HEADER_ADDRESS_AD_EMAIL', { + // [fk] + VNDRCD: varchar({ length: 10 }).notNull().references(() => VENDOR_MASTER_BP_HEADER.VNDRCD), // VENDOR코드 + + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + EMAIL_ADR: varchar({ length: 241 }), // 이메일주소 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + REPR_SER: varchar({ length: 10 }).notNull(), // 대표자순번 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + VLD_ST_DT: varchar({ length: 10 }).notNull(), // 유효시작일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const VENDOR_MASTER_BP_HEADER_ADDRESS_AD_FAX = mdgSchema.table('VENDOR_MASTER_BP_HEADER_ADDRESS_AD_FAX', { + // [fk] + VNDRCD: varchar({ length: 10 }).notNull().references(() => VENDOR_MASTER_BP_HEADER.VNDRCD), // VENDOR코드 + + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + FAXNO: varchar({ length: 30 }), // 팩스번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + FAX_ETS_NO: varchar({ length: 10 }), // 팩스내선번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + NTN_CD: varchar({ length: 10 }), // 국가코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + REPR_SER: varchar({ length: 10 }).notNull(), // 대표자순번 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + VLD_ST_DT: varchar({ length: 10 }).notNull(), // 유효시작일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const VENDOR_MASTER_BP_HEADER_ADDRESS_AD_POSTAL = mdgSchema.table('VENDOR_MASTER_BP_HEADER_ADDRESS_AD_POSTAL', { + // [fk] + VNDRCD: varchar({ length: 10 }).notNull().references(() => VENDOR_MASTER_BP_HEADER.VNDRCD), // VENDOR코드 + + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ADR_1: varchar({ length: 190 }), // 주소1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + ADR_2: varchar({ length: 120 }), // 주소2 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + ADR_TMZ: varchar({ length: 10 }), // 주소시간대 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + CITY_ZIP_NO: varchar({ length: 10 }), // 도시우편번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + ETC_ADR_1: varchar({ length: 180 }), // 기타주소1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + ETC_ADR_2: varchar({ length: 180 }), // 기타주소2 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + INTL_ADR_VER_ID: varchar({ length: 10 }).notNull(), // 국제주소버전ID // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + LANG_KEY: varchar({ length: 10 }), // 언어키 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + NTN_CD: varchar({ length: 10 }), // 국가코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + POBX: varchar({ length: 10 }), // 사서함 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + POBX_ZIP_NO: varchar({ length: 10 }), // 사서함우편번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + REGN_CD: varchar({ length: 10 }), // 지역코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + TAX_JRDT_ZONE_CD: varchar({ length: 15 }), // 조세관할구역코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + TRANS_ZONE: varchar({ length: 10 }), // 운송구역 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + TTL: varchar({ length: 90 }), // 타이틀 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + VNDRNM_1: varchar({ length: 120 }), // VENDOR명1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + VNDRNM_2: varchar({ length: 120 }), // VENDOR명2 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + VNDRNM_3: varchar({ length: 120 }), // VENDOR명3 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + VNDRNM_4: varchar({ length: 120 }), // VENDOR명4 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + VNDRNM_ABRV_1: varchar({ length: 60 }), // VENDOR명약어1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + VNDRNM_ABRV_2: varchar({ length: 60 }), // VENDOR명약어2 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const VENDOR_MASTER_BP_HEADER_ADDRESS_AD_TEL = mdgSchema.table('VENDOR_MASTER_BP_HEADER_ADDRESS_AD_TEL', { + // [fk] + VNDRCD: varchar({ length: 10 }).notNull().references(() => VENDOR_MASTER_BP_HEADER.VNDRCD), // VENDOR코드 + + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ETX_NO: varchar({ length: 10 }), // 내선번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + HP_ORDR: varchar({ length: 10 }), // 핸드폰지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + NTN_CD: varchar({ length: 10 }), // 국가코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + REPR_SER: varchar({ length: 10 }).notNull(), // 대표자순번 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + TELNO: varchar({ length: 30 }), // 전화번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + VLD_ST_DT: varchar({ length: 10 }).notNull(), // 유효시작일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const VENDOR_MASTER_BP_HEADER_ADDRESS_AD_URL = mdgSchema.table('VENDOR_MASTER_BP_HEADER_ADDRESS_AD_URL', { + // [fk] + VNDRCD: varchar({ length: 10 }).notNull().references(() => VENDOR_MASTER_BP_HEADER.VNDRCD), // VENDOR코드 + + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + REPR_SER: varchar({ length: 10 }).notNull(), // 대표자순번 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + URL: varchar({ length: 2000 }), // URL // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + VLD_ST_DT: varchar({ length: 10 }).notNull(), // 유효시작일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const VENDOR_MASTER_BP_HEADER_BP_TAXNUM = mdgSchema.table('VENDOR_MASTER_BP_HEADER_BP_TAXNUM', { + // [fk] + VNDRCD: varchar({ length: 10 }).notNull().references(() => VENDOR_MASTER_BP_HEADER.VNDRCD), // VENDOR코드 + + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + BIZ_PTNR_TX_NO: varchar({ length: 20 }), // 사업파트너세금번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + TX_NO_CTG: varchar({ length: 10 }).notNull(), // 세금번호범주 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const VENDOR_MASTER_BP_HEADER_BP_VENGEN = mdgSchema.table('VENDOR_MASTER_BP_HEADER_BP_VENGEN', { + // [fk] + VNDRCD: varchar({ length: 10 }).notNull().references(() => VENDOR_MASTER_BP_HEADER.VNDRCD), // VENDOR코드 + + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ACNT_GRP: varchar({ length: 10 }), // 계정그룹 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + ACNT_GRP_TP: varchar({ length: 10 }), // 계정그룹유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + ADR_1: varchar({ length: 120 }), // 주소1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + ADR_2: varchar({ length: 512 }), // 주소2 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + AGR_DT: varchar({ length: 10 }), // 승인일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + AGR_R_ID: varchar({ length: 13 }), // 승인자ID // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + AGR_TM: varchar({ length: 10 }), // 승인시간 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + BIZCON: varchar({ length: 30 }), // 산업유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + BIZR_NO: varchar({ length: 10 }), // 사업자번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + BIZTP: varchar({ length: 30 }), // 사업유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + BIZ_UOM_CD: varchar({ length: 10 }), // 사업단위코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + BIZ_UOM_NM: varchar({ length: 40 }), // 사업단위명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + CHGR_ID: varchar({ length: 13 }), // 변경자ID // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + CHG_DT: varchar({ length: 10 }), // 변경일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + CHG_TM: varchar({ length: 10 }), // 변경시간 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + CO_ID: varchar({ length: 10 }), // 법인ID // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + CO_REG_NO: varchar({ length: 18 }), // 법인등록번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + CO_VLM: varchar({ length: 10 }), // 기업규모 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + CSTM_CD: varchar({ length: 10 }), // 고객코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + DEL_HOLD_ORDR: varchar({ length: 10 }), // 삭제보류지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + DEL_ORDR: varchar({ length: 10 }), // 삭제지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + DMST_TOP_CD: varchar({ length: 10 }), // 국내TOP코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + DMST_TOP_NM: varchar({ length: 120 }), // 국내TOP명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + DNS_NO: varchar({ length: 11 }), // DUNS번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + DOC_NO: varchar({ length: 25 }), // 문서번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + DOC_TP: varchar({ length: 10 }), // 문서유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + DOC_VER: varchar({ length: 10 }), // 문서버전 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + FIR_NM: varchar({ length: 120 }), // FIRST이름 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + GBL_TOP_CD: varchar({ length: 10 }), // GLOBALTOP코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + GBL_TOP_NM: varchar({ length: 120 }), // GLOBALTOP명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + GIRO_VNDR_ORDR: varchar({ length: 10 }), // 지로VENDOR지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + HOLD_CAUS: varchar({ length: 200 }), // 보류사유 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + INB_FLAG: varchar({ length: 10 }), // 인바운드플래그 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + INTL_LCTN_CHK_NUM: varchar({ length: 10 }), // 국제LOCATION점검숫자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + OVLAP_CAUS_CD: varchar({ length: 10 }), // 중복사유코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + PST_HOLD_ORDR: varchar({ length: 10 }), // 전기보류지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + PTNT_VNDRCD: varchar({ length: 10 }), // 잠재VENDOR코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + PTN_DOC: varchar({ length: 10 }), // 부분문서 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + PUR_HOLD_DT: varchar({ length: 10 }), // 구매보류일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + PUR_HOLD_ORDR: varchar({ length: 10 }), // 구매보류지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + QLT_CHRGR_EMAIL: varchar({ length: 241 }), // 품질담당자이메일 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + QLT_CHRGR_NM: varchar({ length: 20 }), // 품질담당자명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + QLT_CHRGR_TELNO: varchar({ length: 30 }), // 품질담당자전화번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + REGR_ID: varchar({ length: 13 }), // 등록자ID // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + REG_DT: varchar({ length: 10 }), // 등록일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + REG_TM: varchar({ length: 10 }), // 등록시간 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + REPR_NM: varchar({ length: 30 }), // 대표자명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + REPR_RESNO: varchar({ length: 13 }), // 대표자주민번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + REP_TEL_NO: varchar({ length: 30 }), // 대표전화번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + SB_WKA_SEQ: varchar({ length: 10 }), // SUB작업장순서 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + SRCETX_RP_SEX_KEY: varchar({ length: 10 }), // 원천세의무자성별키 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + TTL: varchar({ length: 45 }), // 타이틀 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + TX_CD_4: varchar({ length: 18 }), // 세금번호4 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + VAT_REG_NO: varchar({ length: 20 }), // 부가세등록번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + VNDRNM_1: varchar({ length: 10 }), // VENDOR명1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + VNDRNO: varchar({ length: 10 }).notNull(), // VENDOR코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_COMPNY = mdgSchema.table('VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_COMPNY', { + // [fk] + VNDRCD: varchar({ length: 10 }).notNull().references(() => VENDOR_MASTER_BP_HEADER.VNDRCD), // VENDOR코드 + + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + ACOT_CHRGR_FAXNO: varchar({ length: 31 }), // 회계담당자FAX번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + ACOT_CHRGR_TELNO: varchar({ length: 30 }), // 회계담당자전화번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + AUTH_GRP: varchar({ length: 10 }), // 권한그룹 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + BF_VNDRCD: varchar({ length: 10 }), // 이전VENDOR코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + CO_CD: varchar({ length: 10 }).notNull(), // 회사코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + CSTM_VNDR_CLR_ORDR: varchar({ length: 10 }), // CUSTOMER,VENDOR반제지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + CTL_ACNT: varchar({ length: 10 }), // 조정계정 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + DEL_ORDR: varchar({ length: 10 }), // 삭제지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + FIN_IR_ACT_DT: varchar({ length: 10 }), // 최종이자실행일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + FIN_IR_CALC_DT: varchar({ length: 10 }), // 최종이자계산일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + IATA_BIC_GB: varchar({ length: 10 }), // IATA,BIC구분 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + LOGST_VNDR_TP: varchar({ length: 10 }), // 물류VENDOR유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + MEMO: varchar({ length: 120 }), // 메모 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + MIN_ORDR: varchar({ length: 10 }), // 소수지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + MK_CHRGR_EMAIL: varchar({ length: 241 }), // MAKER담당자이메일 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + MOFFC_ACNT_NO: varchar({ length: 10 }), // 본사계정번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + OVLAP_INVC_ORDR: varchar({ length: 10 }), // 중복송장지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + PLN_GRP: varchar({ length: 10 }), // 계획그룹 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + PST_HOLD_ORDR: varchar({ length: 10 }), // 전기보류지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + REP_TP: varchar({ length: 10 }), // 대표유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + SPLY_COND: varchar({ length: 10 }), // 지급조건 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + SPLY_HOLD_ORDR: varchar({ length: 10 }), // 지급보류지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + SPLY_MTHD: varchar({ length: 10 }), // 지급방법 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + SPRT_SPLY_ORDR: varchar({ length: 10 }), // 분리지급지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + SRCE_TX_CD: varchar({ length: 10 }), // 원천세코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + SRCE_TX_NTN_CD: varchar({ length: 10 }), // 원천세국가코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + SRT_KEY: varchar({ length: 10 }), // 정렬키 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + TRD_BANK_SHRT_KEY: varchar({ length: 10 }), // 거래은행단축키 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + VNDR_ACNT_NO: varchar({ length: 12 }), // VENDOR계정번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + VNDR_CHRGR_NM: varchar({ length: 45 }), // VENDOR담당자명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_COMPNY_BP_WHTAX = mdgSchema.table('VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_COMPNY_BP_WHTAX', { + // [fk] + VNDRCD: varchar({ length: 10 }).notNull().references(() => VENDOR_MASTER_BP_HEADER.VNDRCD), // VENDOR코드 + + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + DCHAG_CAUS: varchar({ length: 200 }), // 면제사유 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + DCHAG_CERT_NO: varchar({ length: 15 }), // 면제증명서번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + DCHAG_ED_DT: varchar({ length: 10 }), // 면제종료일 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + DCHAG_ST_DT: varchar({ length: 10 }), // 면제시작일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + RECIP_TP: varchar({ length: 10 }), // 수취인유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + SRCE_TX_IDENT_NO: varchar({ length: 16 }), // 원천세식별번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + SRCE_TX_NO: varchar({ length: 10 }), // 원천세코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + SRCE_TX_REL_ORDR: varchar({ length: 10 }), // 원천세관련지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + SRCE_TX_TP: varchar({ length: 10 }).notNull(), // 원천세유형 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG = mdgSchema.table('VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG', { + // [fk] + VNDRCD: varchar({ length: 10 }).notNull().references(() => VENDOR_MASTER_BP_HEADER.VNDRCD), // VENDOR코드 + + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + AT_PUR_ORD_ORDR: varchar({ length: 10 }), // 자동구매오더지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + CALC_SHM_GRP: varchar({ length: 10 }), // 계산스키마그룹 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + CNFM_CTL_KEY: varchar({ length: 10 }), // 확정제어키 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + DEL_ORDR: varchar({ length: 10 }), // 삭제지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + DL_COND_1: varchar({ length: 10 }), // 인도조건1 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + DL_COND_2: varchar({ length: 28 }), // 인도조건2 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + GR_BSE_INVC_VR: varchar({ length: 10 }), // GR기준송장검증 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + ORD_CNFM_REQ_ORDR: varchar({ length: 10 }), // 오더확인요청지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + PUR_HOLD_CAUS: varchar({ length: 120 }), // 구매보류사유 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + PUR_HOLD_DT: varchar({ length: 10 }), // 구매보류일자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + PUR_HOLD_ORDR: varchar({ length: 10 }), // 구매보류지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + PUR_ORD_CUR: varchar({ length: 10 }), // 구매오더통화 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + PUR_ORG_CD: varchar({ length: 10 }).notNull(), // 구매조직 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + SALE_CHRGR_NM: varchar({ length: 120 }), // 영업담당자명 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + SPLY_COND: varchar({ length: 10 }), // 지급조건 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + VNDR_TELNO: varchar({ length: 30 }), // VENDOR전화번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); + +export const VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG_ZVPFN = mdgSchema.table('VENDOR_MASTER_BP_HEADER_BP_VENGEN_BP_PORG_ZVPFN', { + // [fk] + VNDRCD: varchar({ length: 10 }).notNull().references(() => VENDOR_MASTER_BP_HEADER.VNDRCD), // VENDOR코드 + + id: integer('id').primaryKey().generatedByDefaultAsIdentity(), + BSE_PTNR_ORDR: varchar({ length: 10 }), // 기본파트너지시자 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + ETC_REF_VNDRCD: varchar({ length: 10 }), // 기타참조VENDOR코드 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl + PLNT_NO: varchar({ length: 10 }).notNull(), // 플랜트번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + PTNR_CNT: varchar({ length: 10 }).notNull(), // 파트너카운터 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + PTNR_SKL: varchar({ length: 10 }).notNull(), // 파트너기능 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + VNDR_SUB_NO: varchar({ length: 10 }).notNull(), // VENDOR서브번호 // From: IF_MDZ_EVCP_VENDOR_MASTER.wsdl // WSDL에서 필수 필드 + + createdAt: timestamp('created_at').defaultNow().notNull(), + updatedAt: timestamp('updated_at').defaultNow().notNull(), +}); diff --git a/db/schema/MDG/modelMaster.ts b/db/schema/MDG/modelMaster.ts deleted file mode 100644 index 360989f9..00000000 --- a/db/schema/MDG/modelMaster.ts +++ /dev/null @@ -1,178 +0,0 @@ -import { pgTable, serial, varchar, timestamp } from "drizzle-orm/pg-core"; -import { relations } from "drizzle-orm"; - -/** - * 접근법 1: WSDL과 동일하게 DB 테이블/컬럼명 및 변수 이름 만들기 - * - 모든 테이블/컬럼명이 SAP 시스템의 네이밍을 그대로 유지 - * - 개발자가 SAP 시스템에 익숙하다면 이해하기 쉬움 - * - SAP 문서와 비교하기 쉬움 - */ - -// 자재 마스터 테이블 (MATL) -export const MATL = pgTable("MATL", { - id: serial("id").primaryKey(), - MATNR: varchar("MATNR", { length: 18 }).notNull().unique(), // Material Number (자재 번호) (PK) - MBRSH: varchar("MBRSH", { length: 1 }), // Industry Sector (산업 부문) - MTART: varchar("MTART", { length: 4 }), // Material Type (자재 유형) - LVORM: varchar("LVORM", { length: 1 }), // Deletion flag (삭제 플래그) - MEINS: varchar("MEINS", { length: 3 }), // Base Unit of Measure (기본 단위) - MATKL: varchar("MATKL", { length: 9 }), // Material Group (자재 그룹) - BISMT: varchar("BISMT", { length: 18 }), // Old material number (기존 자재 번호) - SPART: varchar("SPART", { length: 2 }), // Division (부문) - PRDHA: varchar("PRDHA", { length: 18 }), // Product hierachy (제품 계층) - MSTAE: varchar("MSTAE", { length: 2 }), // Material Status (자재 상태) - MSTDE: varchar("MSTDE", { length: 8 }), // Date from which the cross-plant material status is (자재 상태 유효 날짜) - BRGEW: varchar("BRGEW", { length: 13 }), // Gross weight (총 중량) - GEWEI: varchar("GEWEI", { length: 3 }), // Weight Unit (중량 단위) - NTGEW: varchar("NTGEW", { length: 13 }), // Net Weight (순 중량) - VOLUM: varchar("VOLUM", { length: 13 }), // Volume (체적) - VOLEH: varchar("VOLEH", { length: 3 }), // Volume Unit (체적 단위) - GROES: varchar("GROES", { length: 32 }), // Size/dimensions (크기/치수) - LAENG: varchar("LAENG", { length: 13 }), // Length (길이) - BREIT: varchar("BREIT", { length: 13 }), // Width (너비) - HOEHE: varchar("HOEHE", { length: 13 }), // Height (높이) - MEABM: varchar("MEABM", { length: 3 }), // Unit of Dimension for Length/Width/Height (치수 단위) - MAGRV: varchar("MAGRV", { length: 4 }), // Material Group: Packaging Materials (포장 자재 그룹) - VHART: varchar("VHART", { length: 4 }), // Packaging Material Type (포장 자재 유형) - ZZNAME: varchar("ZZNAME", { length: 40 }), // Material Name (자재 이름) - ZZSPEC: varchar("ZZSPEC", { length: 255 }), // Specification (자재 사양) - ZZDESC: varchar("ZZDESC", { length: 255 }), // Description (자재 설명) - ZZMMTYP: varchar("ZZMMTYP", { length: 1 }), // Material Master Type (자재 마스터 유형) - ZZREGDT: varchar("ZZREGDT", { length: 8 }), // Registered Date (등록 날짜) - ZZREGTM: varchar("ZZREGTM", { length: 6 }), // Registered Time (등록 시간) - ZZREGUS: varchar("ZZREGUS", { length: 12 }), // Registerd User (등록 사용자) - ZZAPPDT: varchar("ZZAPPDT", { length: 8 }), // Approval Date (승인 날짜) - ZZAPPTM: varchar("ZZAPPTM", { length: 6 }), // Approval Time (승인 시간) - ZZAPPUS: varchar("ZZAPPUS", { length: 12 }), // Approval User (승인 사용자) - ZZLAMDT: varchar("ZZLAMDT", { length: 8 }), // Last Modified Date (최종 수정 날짜) - ZZLAMTM: varchar("ZZLAMTM", { length: 6 }), // Last Modified Time (최종 수정 시간) - ZZLAMUS: varchar("ZZLAMUS", { length: 12 }), // Last Modified User (최종 수정 사용자) - ZZPRFLG: varchar("ZZPRFLG", { length: 1 }), // CRUD Status (처리 플래그) - ZZDOKAR: varchar("ZZDOKAR", { length: 3 }), // Document Type (문서 유형) - ZZDOKNR: varchar("ZZDOKNR", { length: 25 }), // Document Number (문서 번호) - ZZDOKTL: varchar("ZZDOKTL", { length: 3 }), // Document Part (문서 부분) - ZZDOKVR: varchar("ZZDOKVR", { length: 2 }), // Document Version (문서 버전) - createdAt: timestamp("created_at").defaultNow().notNull(), - updatedAt: timestamp("updated_at").defaultNow().notNull(), -}); - -// 자재 설명 테이블 (DESC) -export const DESC = pgTable("DESC", { - id: serial("id").primaryKey(), - MATNR: varchar("MATNR", { length: 18 }).notNull(), // Material Number (자재 번호) (FK) - SPRAS: varchar("SPRAS", { length: 1 }), // Language (언어) - MAKTX: varchar("MAKTX", { length: 40 }), // Material Description (Short Text) (자재 설명) - createdAt: timestamp("created_at").defaultNow().notNull(), - updatedAt: timestamp("updated_at").defaultNow().notNull(), -}); - -// 플랜트별 자재 데이터 테이블 (PLNT) -export const PLNT = pgTable("PLNT", { - id: serial("id").primaryKey(), - MATNR: varchar("MATNR", { length: 18 }).notNull(), // Material Number (자재 번호) (FK) - WERKS: varchar("WERKS", { length: 4 }), // Plant (플랜트) - LVORM: varchar("LVORM", { length: 1 }), // Deletion Flag (삭제 플래그) - MMSTA: varchar("MMSTA", { length: 2 }), // Plant-Specific Material Status (플랜트별 자재 상태) - MMSTD: varchar("MMSTD", { length: 8 }), // Date from which the plant-specific material status (플랜트별 자재 상태 유효 날짜) - ZZMTARP: varchar("ZZMTARP", { length: 4 }), // Plant Material Type (플랜트 자재 유형) - ZZREGDT: varchar("ZZREGDT", { length: 8 }), // Registered Dated (등록 날짜) - ZZREGTM: varchar("ZZREGTM", { length: 6 }), // Registered Time (등록 시간) - ZZREGUS: varchar("ZZREGUS", { length: 12 }), // Registered USER (등록 사용자) - ZZLAMDT: varchar("ZZLAMDT", { length: 8 }), // Last Modified Date (최종 수정 날짜) - ZZLAMTM: varchar("ZZLAMTM", { length: 6 }), // Last Modified Time (최종 수정 시간) - ZZLAMUS: varchar("ZZLAMUS", { length: 12 }), // Last Modified User (최종 수정 사용자) - ZZPRFLG: varchar("ZZPRFLG", { length: 1 }), // CRUD Status (처리 플래그) - createdAt: timestamp("created_at").defaultNow().notNull(), - updatedAt: timestamp("updated_at").defaultNow().notNull(), -}); - -// 단위 테이블 (UNIT) -export const UNIT = pgTable("UNIT", { - id: serial("id").primaryKey(), - MATNR: varchar("MATNR", { length: 18 }).notNull(), // Material Number (자재 번호) (FK) - MEINH: varchar("MEINH", { length: 3 }), // Alternative Unit of Measure for Stockkeeping Unit (대체 단위) - UMREZ: varchar("UMREZ", { length: 5 }), // Numerator for Conversion to Base Units of Measure (기본 단위 변환 분자) - UMREN: varchar("UMREN", { length: 5 }), // Denominator for conversion to base units of measure (기본 단위 변환 분모) - LAENG: varchar("LAENG", { length: 13 }), // Length (길이) - BREIT: varchar("BREIT", { length: 13 }), // Width (너비) - HOEHE: varchar("HOEHE", { length: 13 }), // Height (높이) - MEABM: varchar("MEABM", { length: 3 }), // Unit of Dimension for Length/Width/Height (치수 단위) - VOLUM: varchar("VOLUM", { length: 13 }), // Volume (체적) - VOLEH: varchar("VOLEH", { length: 3 }), // Volume unit (체적 단위) - BRGEW: varchar("BRGEW", { length: 13 }), // Gross Weight (총 중량) - GEWEI: varchar("GEWEI", { length: 3 }), // Weight Unit (중량 단위) - createdAt: timestamp("created_at").defaultNow().notNull(), - updatedAt: timestamp("updated_at").defaultNow().notNull(), -}); - -// 클래스 할당 테이블 (CLASSASGN) -export const CLASSASGN = pgTable("CLASSASGN", { - id: serial("id").primaryKey(), - MATNR: varchar("MATNR", { length: 18 }).notNull(), // Material Number (자재 번호) (FK) - CLASS: varchar("CLASS", { length: 18 }), // Class number (클래스 번호) - KLART: varchar("KLART", { length: 3 }), // Class Type (클래스 유형) - createdAt: timestamp("created_at").defaultNow().notNull(), - updatedAt: timestamp("updated_at").defaultNow().notNull(), -}); - -// 특성 할당 테이블 (CHARASGN) -export const CHARASGN = pgTable("CHARASGN", { - id: serial("id").primaryKey(), - MATNR: varchar("MATNR", { length: 18 }).notNull(), // Material Number (자재 번호) (FK) - CLASS: varchar("CLASS", { length: 18 }), // Class number (클래스 번호) - KLART: varchar("KLART", { length: 3 }), // Class Type (클래스 유형) - ATNAM: varchar("ATNAM", { length: 30 }), // Characteristic Name (특성 이름) - ATWRT: varchar("ATWRT", { length: 30 }), // Characteristic Value (특성 값) - ATFLV: varchar("ATFLV", { length: 16 }), // Internal floating point from (내부 실수값 시작) - ATAWE: varchar("ATAWE", { length: 3 }), // Unit of Measurement (측정 단위) - ATFLB: varchar("ATFLB", { length: 16 }), // Internal floating point value to (내부 실수값 끝) - ATAW1: varchar("ATAW1", { length: 3 }), // Unit of Measurement (측정 단위) - ATBEZ: varchar("ATBEZ", { length: 30 }), // 특성내역 (특성 설명) - ATWTB: varchar("ATWTB", { length: 30 }), // 특성값내역 (특성 값 설명) - createdAt: timestamp("created_at").defaultNow().notNull(), - updatedAt: timestamp("updated_at").defaultNow().notNull(), -}); - -// 관계 정의 -export const MATLRelations = relations(MATL, ({ many }) => ({ - descriptions: many(DESC), - plants: many(PLNT), - units: many(UNIT), - classAssignments: many(CLASSASGN), - characteristicAssignments: many(CHARASGN), -})); - -export const DESCRelations = relations(DESC, ({ one }) => ({ - material: one(MATL, { - fields: [DESC.MATNR], - references: [MATL.MATNR], - }), -})); - -export const PLNTRelations = relations(PLNT, ({ one }) => ({ - material: one(MATL, { - fields: [PLNT.MATNR], - references: [MATL.MATNR], - }), -})); - -export const UNITRelations = relations(UNIT, ({ one }) => ({ - material: one(MATL, { - fields: [UNIT.MATNR], - references: [MATL.MATNR], - }), -})); - -export const CLASSASGNRelations = relations(CLASSASGN, ({ one }) => ({ - material: one(MATL, { - fields: [CLASSASGN.MATNR], - references: [MATL.MATNR], - }), -})); - -export const CHARASGNRelations = relations(CHARASGN, ({ one }) => ({ - material: one(MATL, { - fields: [CHARASGN.MATNR], - references: [MATL.MATNR], - }), -})); diff --git a/db/schema/SOAP/soap.ts b/db/schema/SOAP/soap.ts new file mode 100644 index 00000000..7a16b50a --- /dev/null +++ b/db/schema/SOAP/soap.ts @@ -0,0 +1,22 @@ +import { serial, varchar, timestamp, text, boolean } from "drizzle-orm/pg-core"; +import { pgSchema } from "drizzle-orm/pg-core"; + +export const soapSchema = pgSchema("soap"); + +export const soapLogs = soapSchema.table("soap_logs", { + id: serial().primaryKey(), + direction: varchar({ length: 20 }).notNull(), + system: varchar({ length: 50 }).notNull(), + interface: varchar({ length: 100 }).notNull(), + startedAt: timestamp().notNull(), + endedAt: timestamp(), + isSuccess: boolean().default(false).notNull(), + requestData: text(), + responseData: text(), + errorMessage: text(), +}); + +export type LogDirection = 'INBOUND' | 'OUTBOUND'; + +export type SoapLogInsert = typeof soapLogs.$inferInsert; +export type SoapLogSelect = typeof soapLogs.$inferSelect;
\ No newline at end of file diff --git a/db/schema/index.ts b/db/schema/index.ts index b9491235..cb5a42d8 100644 --- a/db/schema/index.ts +++ b/db/schema/index.ts @@ -24,4 +24,7 @@ export * from './evaluationCriteria'; export * from './projectGtc'; // MDG SOAP 수신용 -// export * from './MDG/modelMaster' +export * from './MDG/mdg' + +// SOAP 로깅 목적 +export * from './SOAP/soap';
\ No newline at end of file diff --git a/next.config.ts b/next.config.ts index 9bc5785e..88be10cb 100644 --- a/next.config.ts +++ b/next.config.ts @@ -28,6 +28,15 @@ const nextConfig: NextConfig = { 'tedious': false, }; + // handlebars require.extensions 경고 무시 + config.ignoreWarnings = [ + ...(config.ignoreWarnings || []), + { + module: /node_modules\/handlebars\/lib\/index\.js/, + message: /require\.extensions is not supported by webpack/, + }, + ]; + return config; }, experimental: { diff --git a/public/wsdl/IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl b/public/wsdl/IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl index 51a789a6..ece2a0f4 100644 --- a/public/wsdl/IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl +++ b/public/wsdl/IF_MDZ_EVCP_CUSTOMER_MASTER.wsdl @@ -16,7 +16,7 @@ </xsd:complexType> <xsd:complexType name="BP_HEADER"> <xsd:sequence> - <!-- SEQ:1, Table:BP_HEADER, Field:BP_HEADER, M/O:M, Type:VARC, Size:255, Description:Business Partner Number --> + <!-- SEQ:1, Table:BP_HEADER, Field:BP_HEADER, M/O:M, Type:CHAR, Size:10, Description:Business Partner Number --> <xsd:element name="BP_HEADER" type="xsd:string"/> <xsd:element name="ADDRESS" type="p0:ADDRESS" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="BP_TAXNUM" type="p0:BP_TAXNUM" minOccurs="0" maxOccurs="unbounded"/> @@ -25,7 +25,7 @@ </xsd:complexType> <xsd:complexType name="ADDRESS"> <xsd:sequence> - <!-- SEQ:2, Table:BP_HEADER/ADDRESS, Field:ADDRNO, M/O:M, Type:VARC, Size:255, Description:Address Number --> + <!-- SEQ:2, Table:BP_HEADER/ADDRESS, Field:ADDRNO, M/O:M, Type:CHAR, Size:10, Description:Address Number --> <xsd:element name="ADDRNO" type="xsd:string"/> <xsd:element name="AD_POSTAL" type="p0:AD_POSTAL" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="AD_TEL" type="p0:AD_TEL" minOccurs="0" maxOccurs="unbounded"/> @@ -36,105 +36,105 @@ </xsd:complexType> <xsd:complexType name="AD_POSTAL"> <xsd:sequence> - <!-- SEQ:3, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:NATION, M/O:M, Type:VARC, Size:255, Description:International address version ID --> + <!-- SEQ:3, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:NATION, M/O:M, Type:CHAR, Size:1, Description:International address version ID --> <xsd:element name="NATION" type="xsd:string"/> - <!-- SEQ:4, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:POST_CODE1, M/O:, Type:VARC, Size:255, Description:Postal Code --> + <!-- SEQ:4, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:POST_CODE1, M/O:, Type:CHAR, Size:10, Description:Postal Code --> <xsd:element name="POST_CODE1" type="xsd:string" minOccurs="0"/> - <!-- SEQ:5, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:POST_CODE2, M/O:, Type:VARC, Size:255, Description:Postal Code --> + <!-- SEQ:5, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:POST_CODE2, M/O:, Type:CHAR, Size:10, Description:Postal Code --> <xsd:element name="POST_CODE2" type="xsd:string" minOccurs="0"/> - <!-- SEQ:6, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:CITY1, M/O:, Type:VARC, Size:255, Description:City --> + <!-- SEQ:6, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:CITY1, M/O:, Type:CHAR, Size:40, Description:City --> <xsd:element name="CITY1" type="xsd:string" minOccurs="0"/> - <!-- SEQ:7, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:CITY2, M/O:, Type:VARC, Size:255, Description:District --> + <!-- SEQ:7, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:CITY2, M/O:, Type:CHAR, Size:40, Description:District --> <xsd:element name="CITY2" type="xsd:string" minOccurs="0"/> - <!-- SEQ:8, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:REGION, M/O:, Type:VARC, Size:255, Description:Region (State, Province, County) --> + <!-- SEQ:8, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:REGION, M/O:, Type:CHAR, Size:3, Description:Region (State, Province, County) --> <xsd:element name="REGION" type="xsd:string" minOccurs="0"/> - <!-- SEQ:9, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:TITLE, M/O:, Type:VARC, Size:255, Description:Title --> + <!-- SEQ:9, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:TITLE, M/O:, Type:CHAR, Size:4, Description:Title --> <xsd:element name="TITLE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:10, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:SORT1, M/O:, Type:VARC, Size:255, Description:Search Term 1 --> + <!-- SEQ:10, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:SORT1, M/O:, Type:CHAR, Size:20, Description:Search Term 1 --> <xsd:element name="SORT1" type="xsd:string" minOccurs="0"/> - <!-- SEQ:11, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:SORT2, M/O:, Type:VARC, Size:255, Description:Search Term 2 --> + <!-- SEQ:11, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:SORT2, M/O:, Type:CHAR, Size:20, Description:Search Term 2 --> <xsd:element name="SORT2" type="xsd:string" minOccurs="0"/> - <!-- SEQ:12, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:NAME1, M/O:, Type:VARC, Size:255, Description:Name 1 --> + <!-- SEQ:12, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:NAME1, M/O:, Type:CHAR, Size:40, Description:Name 1 --> <xsd:element name="NAME1" type="xsd:string" minOccurs="0"/> - <!-- SEQ:13, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:NAME2, M/O:, Type:VARC, Size:255, Description:Name 2 --> + <!-- SEQ:13, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:NAME2, M/O:, Type:CHAR, Size:40, Description:Name 2 --> <xsd:element name="NAME2" type="xsd:string" minOccurs="0"/> - <!-- SEQ:14, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:NAME3, M/O:, Type:VARC, Size:255, Description:Name 3 --> + <!-- SEQ:14, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:NAME3, M/O:, Type:CHAR, Size:40, Description:Name 3 --> <xsd:element name="NAME3" type="xsd:string" minOccurs="0"/> - <!-- SEQ:15, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:NAME4, M/O:, Type:VARC, Size:255, Description:Name 4 --> + <!-- SEQ:15, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:NAME4, M/O:, Type:CHAR, Size:40, Description:Name 4 --> <xsd:element name="NAME4" type="xsd:string" minOccurs="0"/> - <!-- SEQ:16, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:LANGU, M/O:, Type:VARC, Size:255, Description:Language Key --> + <!-- SEQ:16, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:LANGU, M/O:, Type:LANG, Size:1, Description:Language Key --> <xsd:element name="LANGU" type="xsd:string" minOccurs="0"/> - <!-- SEQ:17, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:STREET, M/O:, Type:VARC, Size:255, Description:Street --> + <!-- SEQ:17, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:STREET, M/O:, Type:CHAR, Size:60, Description:Street --> <xsd:element name="STREET" type="xsd:string" minOccurs="0"/> - <!-- SEQ:18, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:HOUSE_NUM1, M/O:, Type:VARC, Size:255, Description:House Number --> + <!-- SEQ:18, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:HOUSE_NUM1, M/O:, Type:CHAR, Size:10, Description:House Number --> <xsd:element name="HOUSE_NUM1" type="xsd:string" minOccurs="0"/> - <!-- SEQ:19, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:COUNTRY, M/O:, Type:VARC, Size:255, Description:Country Key --> + <!-- SEQ:19, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:COUNTRY, M/O:, Type:CHAR, Size:3, Description:Country Key --> <xsd:element name="COUNTRY" type="xsd:string" minOccurs="0"/> - <!-- SEQ:20, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:PO_BOX, M/O:, Type:VARC, Size:255, Description:PO Box --> + <!-- SEQ:20, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:PO_BOX, M/O:, Type:CHAR, Size:10, Description:PO Box --> <xsd:element name="PO_BOX" type="xsd:string" minOccurs="0"/> - <!-- SEQ:21, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:TRANSPZONE, M/O:, Type:VARC, Size:255, Description:Transportation zone to or from which the goods are --> + <!-- SEQ:21, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:TRANSPZONE, M/O:, Type:CHAR, Size:10, Description:Transportation zone to or from which the goods are --> <xsd:element name="TRANSPZONE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:22, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:TAXJURCODE, M/O:, Type:VARC, Size:255, Description:Tax Jurisdiction --> + <!-- SEQ:22, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:TAXJURCODE, M/O:, Type:CHAR, Size:15, Description:Tax Jurisdiction --> <xsd:element name="TAXJURCODE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:23, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:TIME_ZONE, M/O:, Type:VARC, Size:255, Description:Time zone --> + <!-- SEQ:23, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:TIME_ZONE, M/O:, Type:CHAR, Size:6, Description:Time zone --> <xsd:element name="TIME_ZONE" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="AD_TEL"> <xsd:sequence> - <!-- SEQ:24, Table:BP_HEADER/ADDRESS/AD_TEL, Field:CONSNUMBER, M/O:M, Type:VARC, Size:255, Description:Sequence number --> + <!-- SEQ:24, Table:BP_HEADER/ADDRESS/AD_TEL, Field:CONSNUMBER, M/O:M, Type:NUMC, Size:3, Description:Sequence number --> <xsd:element name="CONSNUMBER" type="xsd:string"/> - <!-- SEQ:25, Table:BP_HEADER/ADDRESS/AD_TEL, Field:DATE_FROM, M/O:M, Type:VARC, Size:255, Description:Valid-from date --> + <!-- SEQ:25, Table:BP_HEADER/ADDRESS/AD_TEL, Field:DATE_FROM, M/O:M, Type:DATS, Size:8, Description:Valid-from date --> <xsd:element name="DATE_FROM" type="xsd:string"/> - <!-- SEQ:26, Table:BP_HEADER/ADDRESS/AD_TEL, Field:COUNTRY, M/O:, Type:VARC, Size:255, Description:Country Key --> + <!-- SEQ:26, Table:BP_HEADER/ADDRESS/AD_TEL, Field:COUNTRY, M/O:, Type:CHAR, Size:3, Description:Country Key --> <xsd:element name="COUNTRY" type="xsd:string" minOccurs="0"/> - <!-- SEQ:27, Table:BP_HEADER/ADDRESS/AD_TEL, Field:TEL_NUMBER, M/O:, Type:VARC, Size:255, Description:Telephone no.: dialling code+number --> + <!-- SEQ:27, Table:BP_HEADER/ADDRESS/AD_TEL, Field:TEL_NUMBER, M/O:, Type:CHAR, Size:30, Description:Telephone no.: dialling code+number --> <xsd:element name="TEL_NUMBER" type="xsd:string" minOccurs="0"/> - <!-- SEQ:28, Table:BP_HEADER/ADDRESS/AD_TEL, Field:TEL_EXTENS, M/O:, Type:VARC, Size:255, Description:Telephone no.: Extension --> + <!-- SEQ:28, Table:BP_HEADER/ADDRESS/AD_TEL, Field:TEL_EXTENS, M/O:, Type:CHAR, Size:10, Description:Telephone no.: Extension --> <xsd:element name="TEL_EXTENS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:29, Table:BP_HEADER/ADDRESS/AD_TEL, Field:R3_USER, M/O:, Type:VARC, Size:255, Description:ndicator: Telephone is a Mobile Telephone --> + <!-- SEQ:29, Table:BP_HEADER/ADDRESS/AD_TEL, Field:R3_USER, M/O:, Type:CHAR, Size:1, Description:ndicator: Telephone is a Mobile Telephone --> <xsd:element name="R3_USER" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="AD_FAX"> <xsd:sequence> - <!-- SEQ:30, Table:BP_HEADER/ADDRESS/AD_FAX, Field:CONSNUMBER, M/O:M, Type:VARC, Size:255, Description:Sequence number --> + <!-- SEQ:30, Table:BP_HEADER/ADDRESS/AD_FAX, Field:CONSNUMBER, M/O:M, Type:NUMC, Size:3, Description:Sequence number --> <xsd:element name="CONSNUMBER" type="xsd:string"/> - <!-- SEQ:31, Table:BP_HEADER/ADDRESS/AD_FAX, Field:DATE_FROM, M/O:M, Type:VARC, Size:255, Description:Valid-from date --> + <!-- SEQ:31, Table:BP_HEADER/ADDRESS/AD_FAX, Field:DATE_FROM, M/O:M, Type:DATS, Size:8, Description:Valid-from date --> <xsd:element name="DATE_FROM" type="xsd:string"/> - <!-- SEQ:32, Table:BP_HEADER/ADDRESS/AD_FAX, Field:COUNTRY, M/O:, Type:VARC, Size:255, Description:Country Key --> + <!-- SEQ:32, Table:BP_HEADER/ADDRESS/AD_FAX, Field:COUNTRY, M/O:, Type:CHAR, Size:3, Description:Country Key --> <xsd:element name="COUNTRY" type="xsd:string" minOccurs="0"/> - <!-- SEQ:33, Table:BP_HEADER/ADDRESS/AD_FAX, Field:FAX_NUMBER, M/O:, Type:VARC, Size:255, Description:Fax number --> + <!-- SEQ:33, Table:BP_HEADER/ADDRESS/AD_FAX, Field:FAX_NUMBER, M/O:, Type:CHAR, Size:30, Description:Fax number --> <xsd:element name="FAX_NUMBER" type="xsd:string" minOccurs="0"/> - <!-- SEQ:34, Table:BP_HEADER/ADDRESS/AD_FAX, Field:FAX_EXTENS, M/O:, Type:VARC, Size:255, Description:Fax no.: Extension --> + <!-- SEQ:34, Table:BP_HEADER/ADDRESS/AD_FAX, Field:FAX_EXTENS, M/O:, Type:CHAR, Size:10, Description:Fax no.: Extension --> <xsd:element name="FAX_EXTENS" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="AD_URL"> <xsd:sequence> - <!-- SEQ:35, Table:BP_HEADER/ADDRESS/AD_URL, Field:CONSNUMBER, M/O:M, Type:VARC, Size:255, Description:Sequence number --> + <!-- SEQ:35, Table:BP_HEADER/ADDRESS/AD_URL, Field:CONSNUMBER, M/O:M, Type:NUMC, Size:3, Description:Sequence number --> <xsd:element name="CONSNUMBER" type="xsd:string"/> - <!-- SEQ:36, Table:BP_HEADER/ADDRESS/AD_URL, Field:DATE_FROM, M/O:M, Type:VARC, Size:255, Description:Valid-from date --> + <!-- SEQ:36, Table:BP_HEADER/ADDRESS/AD_URL, Field:DATE_FROM, M/O:M, Type:DATS, Size:8, Description:Valid-from date --> <xsd:element name="DATE_FROM" type="xsd:string"/> - <!-- SEQ:37, Table:BP_HEADER/ADDRESS/AD_URL, Field:URI_ADDR, M/O:, Type:VARC, Size:255, Description:Universal Resource Identifier (URI) --> + <!-- SEQ:37, Table:BP_HEADER/ADDRESS/AD_URL, Field:URI_ADDR, M/O:, Type:LCHR, Size:2048, Description:Universal Resource Identifier (URI) --> <xsd:element name="URI_ADDR" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="AD_EMAIL"> <xsd:sequence> - <!-- SEQ:38, Table:BP_HEADER/ADDRESS/AD_EMAIL, Field:CONSNUMBER, M/O:M, Type:VARC, Size:255, Description:Sequence number --> + <!-- SEQ:38, Table:BP_HEADER/ADDRESS/AD_EMAIL, Field:CONSNUMBER, M/O:M, Type:NUMC, Size:3, Description:Sequence number --> <xsd:element name="CONSNUMBER" type="xsd:string"/> - <!-- SEQ:39, Table:BP_HEADER/ADDRESS/AD_EMAIL, Field:DATE_FROM, M/O:M, Type:VARC, Size:255, Description:Valid-from date --> + <!-- SEQ:39, Table:BP_HEADER/ADDRESS/AD_EMAIL, Field:DATE_FROM, M/O:M, Type:DATS, Size:8, Description:Valid-from date --> <xsd:element name="DATE_FROM" type="xsd:string"/> - <!-- SEQ:40, Table:BP_HEADER/ADDRESS/AD_EMAIL, Field:SMTP_ADDR, M/O:, Type:VARC, Size:255, Description:E-Mail Address --> + <!-- SEQ:40, Table:BP_HEADER/ADDRESS/AD_EMAIL, Field:SMTP_ADDR, M/O:, Type:CHAR, Size:241, Description:E-Mail Address --> <xsd:element name="SMTP_ADDR" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="BP_TAXNUM"> <xsd:sequence> - <!-- SEQ:41, Table:BP_HEADER/BP_TAXNUM, Field:TAXTYPE, M/O:M, Type:VARC, Size:255, Description:Tax Number Category --> + <!-- SEQ:41, Table:BP_HEADER/BP_TAXNUM, Field:TAXTYPE, M/O:M, Type:CHAR, Size:4, Description:Tax Number Category --> <xsd:element name="TAXTYPE" type="xsd:string"/> - <!-- SEQ:42, Table:BP_HEADER/BP_TAXNUM, Field:TAXNUM, M/O:, Type:VARC, Size:255, Description:Business Partner Tax Number --> + <!-- SEQ:42, Table:BP_HEADER/BP_TAXNUM, Field:TAXNUM, M/O:, Type:CHAR, Size:20, Description:Business Partner Tax Number --> <xsd:element name="TAXNUM" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> @@ -144,236 +144,236 @@ <xsd:element name="ZTAXIND" type="p0:ZTAXIND" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="ZCOMPANY" type="p0:ZCOMPANY" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="ZSALES" type="p0:ZSALES" minOccurs="0" maxOccurs="unbounded"/> - <!-- SEQ:43, Table:BP_HEADER/BP_CUSGEN, Field:KUNNR, M/O:M, Type:VARC, Size:255, Description:Customer Code --> + <!-- SEQ:43, Table:BP_HEADER/BP_CUSGEN, Field:KUNNR, M/O:M, Type:CHAR, Size:10, Description:Customer Code --> <xsd:element name="KUNNR" type="xsd:string"/> - <!-- SEQ:44, Table:BP_HEADER/BP_CUSGEN, Field:KTOKD, M/O:, Type:VARC, Size:255, Description:Account Group --> + <!-- SEQ:44, Table:BP_HEADER/BP_CUSGEN, Field:KTOKD, M/O:, Type:CHAR, Size:4, Description:Account Group --> <xsd:element name="KTOKD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:45, Table:BP_HEADER/BP_CUSGEN, Field:NIELS, M/O:, Type:VARC, Size:255, Description:Customer Type --> + <!-- SEQ:45, Table:BP_HEADER/BP_CUSGEN, Field:NIELS, M/O:, Type:CHAR, Size:2, Description:Customer Type --> <xsd:element name="NIELS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:46, Table:BP_HEADER/BP_CUSGEN, Field:LOEVM, M/O:, Type:VARC, Size:255, Description:Central Deletion Flag for Master Record --> + <!-- SEQ:46, Table:BP_HEADER/BP_CUSGEN, Field:LOEVM, M/O:, Type:CHAR, Size:1, Description:Central Deletion Flag for Master Record --> <xsd:element name="LOEVM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:47, Table:BP_HEADER/BP_CUSGEN, Field:VBUND, M/O:, Type:VARC, Size:255, Description:Company ID of Trading Partner --> + <!-- SEQ:47, Table:BP_HEADER/BP_CUSGEN, Field:VBUND, M/O:, Type:CHAR, Size:6, Description:Company ID of Trading Partner --> <xsd:element name="VBUND" type="xsd:string" minOccurs="0"/> - <!-- SEQ:48, Table:BP_HEADER/BP_CUSGEN, Field:ZZBA, M/O:, Type:VARC, Size:255, Description:Business Area(GBM) --> + <!-- SEQ:48, Table:BP_HEADER/BP_CUSGEN, Field:ZZBA, M/O:, Type:CHAR, Size:4, Description:Business Area(GBM) --> <xsd:element name="ZZBA" type="xsd:string" minOccurs="0"/> - <!-- SEQ:49, Table:BP_HEADER/BP_CUSGEN, Field:J_1KFREPRE, M/O:, Type:VARC, Size:255, Description:Name of Representative --> + <!-- SEQ:49, Table:BP_HEADER/BP_CUSGEN, Field:J_1KFREPRE, M/O:, Type:CHAR, Size:10, Description:Name of Representative --> <xsd:element name="J_1KFREPRE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:50, Table:BP_HEADER/BP_CUSGEN, Field:J_1KFTBUS, M/O:, Type:VARC, Size:255, Description:Type of Business --> + <!-- SEQ:50, Table:BP_HEADER/BP_CUSGEN, Field:J_1KFTBUS, M/O:, Type:CHAR, Size:30, Description:Type of Business --> <xsd:element name="J_1KFTBUS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:51, Table:BP_HEADER/BP_CUSGEN, Field:J_1KFTIND, M/O:, Type:VARC, Size:255, Description:Type of Industry --> + <!-- SEQ:51, Table:BP_HEADER/BP_CUSGEN, Field:J_1KFTIND, M/O:, Type:CHAR, Size:30, Description:Type of Industry --> <xsd:element name="J_1KFTIND" type="xsd:string" minOccurs="0"/> - <!-- SEQ:52, Table:BP_HEADER/BP_CUSGEN, Field:STCD1, M/O:, Type:VARC, Size:255, Description:Tax Number 1 --> + <!-- SEQ:52, Table:BP_HEADER/BP_CUSGEN, Field:STCD1, M/O:, Type:CHAR, Size:16, Description:Tax Number 1 --> <xsd:element name="STCD1" type="xsd:string" minOccurs="0"/> - <!-- SEQ:53, Table:BP_HEADER/BP_CUSGEN, Field:STCD2, M/O:, Type:VARC, Size:255, Description:Tax Number 2 --> + <!-- SEQ:53, Table:BP_HEADER/BP_CUSGEN, Field:STCD2, M/O:, Type:CHAR, Size:11, Description:Tax Number 2 --> <xsd:element name="STCD2" type="xsd:string" minOccurs="0"/> - <!-- SEQ:54, Table:BP_HEADER/BP_CUSGEN, Field:STCD3, M/O:, Type:VARC, Size:255, Description:Tax Number 3 --> + <!-- SEQ:54, Table:BP_HEADER/BP_CUSGEN, Field:STCD3, M/O:, Type:CHAR, Size:18, Description:Tax Number 3 --> <xsd:element name="STCD3" type="xsd:string" minOccurs="0"/> - <!-- SEQ:55, Table:BP_HEADER/BP_CUSGEN, Field:STCD4, M/O:, Type:VARC, Size:255, Description:Tax Number 4 --> + <!-- SEQ:55, Table:BP_HEADER/BP_CUSGEN, Field:STCD4, M/O:, Type:CHAR, Size:18, Description:Tax Number 4 --> <xsd:element name="STCD4" type="xsd:string" minOccurs="0"/> - <!-- SEQ:56, Table:BP_HEADER/BP_CUSGEN, Field:STCEG, M/O:, Type:VARC, Size:255, Description:VAT Registration Number --> + <!-- SEQ:56, Table:BP_HEADER/BP_CUSGEN, Field:STCEG, M/O:, Type:CHAR, Size:20, Description:VAT Registration Number --> <xsd:element name="STCEG" type="xsd:string" minOccurs="0"/> - <!-- SEQ:57, Table:BP_HEADER/BP_CUSGEN, Field:LIFNR, M/O:, Type:VARC, Size:255, Description:Vendor Code --> + <!-- SEQ:57, Table:BP_HEADER/BP_CUSGEN, Field:LIFNR, M/O:, Type:CHAR, Size:10, Description:Vendor Code --> <xsd:element name="LIFNR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:58, Table:BP_HEADER/BP_CUSGEN, Field:UWAER, M/O:, Type:VARC, Size:255, Description:Currency of Sales figure --> + <!-- SEQ:58, Table:BP_HEADER/BP_CUSGEN, Field:UWAER, M/O:, Type:CUKY, Size:5, Description:Currency of Sales figure --> <xsd:element name="UWAER" type="xsd:string" minOccurs="0"/> - <!-- SEQ:59, Table:BP_HEADER/BP_CUSGEN, Field:UMJAH, M/O:, Type:VARC, Size:255, Description:Year For Which Sales are Given --> + <!-- SEQ:59, Table:BP_HEADER/BP_CUSGEN, Field:UMJAH, M/O:, Type:NUMC, Size:4, Description:Year For Which Sales are Given --> <xsd:element name="UMJAH" type="xsd:string" minOccurs="0"/> - <!-- SEQ:60, Table:BP_HEADER/BP_CUSGEN, Field:JMZAH, M/O:, Type:VARC, Size:255, Description:Yearly number of employees --> + <!-- SEQ:60, Table:BP_HEADER/BP_CUSGEN, Field:JMZAH, M/O:, Type:NUMC, Size:6, Description:Yearly number of employees --> <xsd:element name="JMZAH" type="xsd:string" minOccurs="0"/> - <!-- SEQ:61, Table:BP_HEADER/BP_CUSGEN, Field:JMJAH, M/O:, Type:VARC, Size:255, Description:Year for which the number of employees is given --> + <!-- SEQ:61, Table:BP_HEADER/BP_CUSGEN, Field:JMJAH, M/O:, Type:NUMC, Size:4, Description:Year for which the number of employees is given --> <xsd:element name="JMJAH" type="xsd:string" minOccurs="0"/> - <!-- SEQ:62, Table:BP_HEADER/BP_CUSGEN, Field:GFORM, M/O:, Type:VARC, Size:255, Description:Legal status --> + <!-- SEQ:62, Table:BP_HEADER/BP_CUSGEN, Field:GFORM, M/O:, Type:CHAR, Size:2, Description:Legal status --> <xsd:element name="GFORM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:63, Table:BP_HEADER/BP_CUSGEN, Field:KATR1, M/O:, Type:VARC, Size:255, Description:Attribute1(발행구분-정발행, 역발행등 계산서 발행구분) --> + <!-- SEQ:63, Table:BP_HEADER/BP_CUSGEN, Field:KATR1, M/O:, Type:CHAR, Size:2, Description:Attribute1(발행구분-정발행, 역발행등 계산서 발행구분) --> <xsd:element name="KATR1" type="xsd:string" minOccurs="0"/> - <!-- SEQ:64, Table:BP_HEADER/BP_CUSGEN, Field:KDKG1, M/O:, Type:VARC, Size:255, Description:Condition grp1 --> + <!-- SEQ:64, Table:BP_HEADER/BP_CUSGEN, Field:KDKG1, M/O:, Type:CHAR, Size:2, Description:Condition grp1 --> <xsd:element name="KDKG1" type="xsd:string" minOccurs="0"/> - <!-- SEQ:65, Table:BP_HEADER/BP_CUSGEN, Field:ANRED, M/O:, Type:VARC, Size:255, Description:Title --> + <!-- SEQ:65, Table:BP_HEADER/BP_CUSGEN, Field:ANRED, M/O:, Type:CHAR, Size:15, Description:Title --> <xsd:element name="ANRED" type="xsd:string" minOccurs="0"/> - <!-- SEQ:66, Table:BP_HEADER/BP_CUSGEN, Field:PUGRP, M/O:, Type:VARC, Size:255, Description:Customer Group Name --> + <!-- SEQ:66, Table:BP_HEADER/BP_CUSGEN, Field:PUGRP, M/O:, Type:CHAR, Size:20, Description:Customer Group Name --> <xsd:element name="PUGRP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:67, Table:BP_HEADER/BP_CUSGEN, Field:UMSAT, M/O:, Type:VARC, Size:255, Description:Annual Sales --> + <!-- SEQ:67, Table:BP_HEADER/BP_CUSGEN, Field:UMSAT, M/O:, Type:CURR, Size:15,2, Description:Annual Sales --> <xsd:element name="UMSAT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:68, Table:BP_HEADER/BP_CUSGEN, Field:SPERR, M/O:, Type:VARC, Size:255, Description:Central Posting Block --> + <!-- SEQ:68, Table:BP_HEADER/BP_CUSGEN, Field:SPERR, M/O:, Type:CHAR, Size:1, Description:Central Posting Block --> <xsd:element name="SPERR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:69, Table:BP_HEADER/BP_CUSGEN, Field:NODEL, M/O:, Type:VARC, Size:255, Description:Central deletion block for master record --> + <!-- SEQ:69, Table:BP_HEADER/BP_CUSGEN, Field:NODEL, M/O:, Type:CHAR, Size:1, Description:Central deletion block for master record --> <xsd:element name="NODEL" type="xsd:string" minOccurs="0"/> - <!-- SEQ:70, Table:BP_HEADER/BP_CUSGEN, Field:AUFSD, M/O:, Type:VARC, Size:255, Description:Central order block --> + <!-- SEQ:70, Table:BP_HEADER/BP_CUSGEN, Field:AUFSD, M/O:, Type:CHAR, Size:2, Description:Central order block --> <xsd:element name="AUFSD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:71, Table:BP_HEADER/BP_CUSGEN, Field:FAKSD, M/O:, Type:VARC, Size:255, Description:Central billing block --> + <!-- SEQ:71, Table:BP_HEADER/BP_CUSGEN, Field:FAKSD, M/O:, Type:CHAR, Size:2, Description:Central billing block --> <xsd:element name="FAKSD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:72, Table:BP_HEADER/BP_CUSGEN, Field:LIFSD, M/O:, Type:VARC, Size:255, Description:Central delivery block --> + <!-- SEQ:72, Table:BP_HEADER/BP_CUSGEN, Field:LIFSD, M/O:, Type:CHAR, Size:2, Description:Central delivery block --> <xsd:element name="LIFSD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:73, Table:BP_HEADER/BP_CUSGEN, Field:ZZFTGT, M/O:, Type:VARC, Size:255, Description:F-Tree GT Code --> + <!-- SEQ:73, Table:BP_HEADER/BP_CUSGEN, Field:ZZFTGT, M/O:, Type:CHAR, Size:10, Description:F-Tree GT Code --> <xsd:element name="ZZFTGT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:74, Table:BP_HEADER/BP_CUSGEN, Field:ZZFTGTNM, M/O:, Type:VARC, Size:255, Description:F-Tree GT Name --> + <!-- SEQ:74, Table:BP_HEADER/BP_CUSGEN, Field:ZZFTGTNM, M/O:, Type:CHAR, Size:40, Description:F-Tree GT Name --> <xsd:element name="ZZFTGTNM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:75, Table:BP_HEADER/BP_CUSGEN, Field:ZZFTDT, M/O:, Type:VARC, Size:255, Description:F-Tree DT Code --> + <!-- SEQ:75, Table:BP_HEADER/BP_CUSGEN, Field:ZZFTDT, M/O:, Type:CHAR, Size:10, Description:F-Tree DT Code --> <xsd:element name="ZZFTDT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:76, Table:BP_HEADER/BP_CUSGEN, Field:ZZFTDTNM, M/O:, Type:VARC, Size:255, Description:F-Tree DT Name --> + <!-- SEQ:76, Table:BP_HEADER/BP_CUSGEN, Field:ZZFTDTNM, M/O:, Type:CHAR, Size:40, Description:F-Tree DT Name --> <xsd:element name="ZZFTDTNM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:77, Table:BP_HEADER/BP_CUSGEN, Field:ZZFTBU, M/O:, Type:VARC, Size:255, Description:F-Tree BU Code --> + <!-- SEQ:77, Table:BP_HEADER/BP_CUSGEN, Field:ZZFTBU, M/O:, Type:CHAR, Size:10, Description:F-Tree BU Code --> <xsd:element name="ZZFTBU" type="xsd:string" minOccurs="0"/> - <!-- SEQ:78, Table:BP_HEADER/BP_CUSGEN, Field:ZZFTBUNM, M/O:, Type:VARC, Size:255, Description:F-Tree BU Name --> + <!-- SEQ:78, Table:BP_HEADER/BP_CUSGEN, Field:ZZFTBUNM, M/O:, Type:CHAR, Size:40, Description:F-Tree BU Name --> <xsd:element name="ZZFTBUNM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:79, Table:BP_HEADER/BP_CUSGEN, Field:ZZDUNS, M/O:, Type:VARC, Size:255, Description:DUNS Number --> + <!-- SEQ:79, Table:BP_HEADER/BP_CUSGEN, Field:ZZDUNS, M/O:, Type:CHAR, Size:11, Description:DUNS Number --> <xsd:element name="ZZDUNS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:80, Table:BP_HEADER/BP_CUSGEN, Field:ZZORT01_C, M/O:, Type:VARC, Size:255, Description:City --> + <!-- SEQ:80, Table:BP_HEADER/BP_CUSGEN, Field:ZZORT01_C, M/O:, Type:CHAR, Size:35, Description:City --> <xsd:element name="ZZORT01_C" type="xsd:string" minOccurs="0"/> - <!-- SEQ:81, Table:BP_HEADER/BP_CUSGEN, Field:ZZREASON, M/O:, Type:VARC, Size:255, Description:Reason for Duplication --> + <!-- SEQ:81, Table:BP_HEADER/BP_CUSGEN, Field:ZZREASON, M/O:, Type:CHAR, Size:2, Description:Reason for Duplication --> <xsd:element name="ZZREASON" type="xsd:string" minOccurs="0"/> - <!-- SEQ:82, Table:BP_HEADER/BP_CUSGEN, Field:ZZSUBSEQ_C, M/O:, Type:VARC, Size:255, Description:종사업장 일련번호 --> + <!-- SEQ:82, Table:BP_HEADER/BP_CUSGEN, Field:ZZSUBSEQ_C, M/O:, Type:CHAR, Size:4, Description:종사업장 일련번호 --> <xsd:element name="ZZSUBSEQ_C" type="xsd:string" minOccurs="0"/> - <!-- SEQ:83, Table:BP_HEADER/BP_CUSGEN, Field:ZZORT02_C, M/O:, Type:VARC, Size:255, Description:District --> + <!-- SEQ:83, Table:BP_HEADER/BP_CUSGEN, Field:ZZORT02_C, M/O:, Type:CHAR, Size:35, Description:District --> <xsd:element name="ZZORT02_C" type="xsd:string" minOccurs="0"/> - <!-- SEQ:84, Table:BP_HEADER/BP_CUSGEN, Field:ZZSTRAS_C, M/O:, Type:VARC, Size:255, Description:House number and street --> + <!-- SEQ:84, Table:BP_HEADER/BP_CUSGEN, Field:ZZSTRAS_C, M/O:, Type:CHAR, Size:35, Description:House number and street --> <xsd:element name="ZZSTRAS_C" type="xsd:string" minOccurs="0"/> - <!-- SEQ:85, Table:BP_HEADER/BP_CUSGEN, Field:ZZREGDT_C, M/O:, Type:VARC, Size:255, Description:Registerd Date --> + <!-- SEQ:85, Table:BP_HEADER/BP_CUSGEN, Field:ZZREGDT_C, M/O:, Type:DATS, Size:8, Description:Registerd Date --> <xsd:element name="ZZREGDT_C" type="xsd:string" minOccurs="0"/> - <!-- SEQ:86, Table:BP_HEADER/BP_CUSGEN, Field:ZZREGTM_C, M/O:, Type:VARC, Size:255, Description:Registerd Time --> + <!-- SEQ:86, Table:BP_HEADER/BP_CUSGEN, Field:ZZREGTM_C, M/O:, Type:TIMS, Size:6, Description:Registerd Time --> <xsd:element name="ZZREGTM_C" type="xsd:string" minOccurs="0"/> - <!-- SEQ:87, Table:BP_HEADER/BP_CUSGEN, Field:ZZREGUS_C, M/O:, Type:VARC, Size:255, Description:Registerd User --> + <!-- SEQ:87, Table:BP_HEADER/BP_CUSGEN, Field:ZZREGUS_C, M/O:, Type:CHAR, Size:12, Description:Registerd User --> <xsd:element name="ZZREGUS_C" type="xsd:string" minOccurs="0"/> - <!-- SEQ:88, Table:BP_HEADER/BP_CUSGEN, Field:ZZAPPDT_C, M/O:, Type:VARC, Size:255, Description:Apporval Date --> + <!-- SEQ:88, Table:BP_HEADER/BP_CUSGEN, Field:ZZAPPDT_C, M/O:, Type:DATS, Size:8, Description:Apporval Date --> <xsd:element name="ZZAPPDT_C" type="xsd:string" minOccurs="0"/> - <!-- SEQ:89, Table:BP_HEADER/BP_CUSGEN, Field:ZZAPPTM_C, M/O:, Type:VARC, Size:255, Description:Apporval Time --> + <!-- SEQ:89, Table:BP_HEADER/BP_CUSGEN, Field:ZZAPPTM_C, M/O:, Type:TIMS, Size:6, Description:Apporval Time --> <xsd:element name="ZZAPPTM_C" type="xsd:string" minOccurs="0"/> - <!-- SEQ:90, Table:BP_HEADER/BP_CUSGEN, Field:ZZAPPUS_C, M/O:, Type:VARC, Size:255, Description:Apporval User --> + <!-- SEQ:90, Table:BP_HEADER/BP_CUSGEN, Field:ZZAPPUS_C, M/O:, Type:CHAR, Size:12, Description:Apporval User --> <xsd:element name="ZZAPPUS_C" type="xsd:string" minOccurs="0"/> - <!-- SEQ:91, Table:BP_HEADER/BP_CUSGEN, Field:ZZLAMDT_C, M/O:, Type:VARC, Size:255, Description:Last Modified Date --> + <!-- SEQ:91, Table:BP_HEADER/BP_CUSGEN, Field:ZZLAMDT_C, M/O:, Type:DATS, Size:8, Description:Last Modified Date --> <xsd:element name="ZZLAMDT_C" type="xsd:string" minOccurs="0"/> - <!-- SEQ:92, Table:BP_HEADER/BP_CUSGEN, Field:ZZLAMTM_C, M/O:, Type:VARC, Size:255, Description:Last Modified Time --> + <!-- SEQ:92, Table:BP_HEADER/BP_CUSGEN, Field:ZZLAMTM_C, M/O:, Type:TIMS, Size:6, Description:Last Modified Time --> <xsd:element name="ZZLAMTM_C" type="xsd:string" minOccurs="0"/> - <!-- SEQ:93, Table:BP_HEADER/BP_CUSGEN, Field:ZZLAMUS_C, M/O:, Type:VARC, Size:255, Description:Last Modified User --> + <!-- SEQ:93, Table:BP_HEADER/BP_CUSGEN, Field:ZZLAMUS_C, M/O:, Type:CHAR, Size:12, Description:Last Modified User --> <xsd:element name="ZZLAMUS_C" type="xsd:string" minOccurs="0"/> - <!-- SEQ:94, Table:BP_HEADER/BP_CUSGEN, Field:ZZCRMCD, M/O:, Type:VARC, Size:255, Description:CRM Code --> + <!-- SEQ:94, Table:BP_HEADER/BP_CUSGEN, Field:ZZCRMCD, M/O:, Type:CHAR, Size:20, Description:CRM Code --> <xsd:element name="ZZCRMCD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:95, Table:BP_HEADER/BP_CUSGEN, Field:ZZINBFLGC, M/O:, Type:VARC, Size:255, Description:Inbound Flag --> + <!-- SEQ:95, Table:BP_HEADER/BP_CUSGEN, Field:ZZINBFLGC, M/O:, Type:CHAR, Size:1, Description:Inbound Flag --> <xsd:element name="ZZINBFLGC" type="xsd:string" minOccurs="0"/> - <!-- SEQ:96, Table:BP_HEADER/BP_CUSGEN, Field:ZZBRSCH_C, M/O:, Type:VARC, Size:255, Description:Industry --> + <!-- SEQ:96, Table:BP_HEADER/BP_CUSGEN, Field:ZZBRSCH_C, M/O:, Type:CHAR, Size:4, Description:Industry --> <xsd:element name="ZZBRSCH_C" type="xsd:string" minOccurs="0"/> - <!-- SEQ:97, Table:BP_HEADER/BP_CUSGEN, Field:ZZSTCDT_C, M/O:, Type:VARC, Size:255, Description:Tax number type --> + <!-- SEQ:97, Table:BP_HEADER/BP_CUSGEN, Field:ZZSTCDT_C, M/O:, Type:CHAR, Size:2, Description:Tax number type --> <xsd:element name="ZZSTCDT_C" type="xsd:string" minOccurs="0"/> - <!-- SEQ:98, Table:BP_HEADER/BP_CUSGEN, Field:SPRAS, M/O:, Type:VARC, Size:255, Description:Language Key --> + <!-- SEQ:98, Table:BP_HEADER/BP_CUSGEN, Field:SPRAS, M/O:, Type:LANG, Size:1, Description:Language Key --> <xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:99, Table:BP_HEADER/BP_CUSGEN, Field:ZZDOKAR_C, M/O:, Type:VARC, Size:255, Description:Document Type --> + <!-- SEQ:99, Table:BP_HEADER/BP_CUSGEN, Field:ZZDOKAR_C, M/O:, Type:CHAR, Size:3, Description:Document Type --> <xsd:element name="ZZDOKAR_C" type="xsd:string" minOccurs="0"/> - <!-- SEQ:100, Table:BP_HEADER/BP_CUSGEN, Field:ZZDOKNR_C, M/O:, Type:VARC, Size:255, Description:Document --> + <!-- SEQ:100, Table:BP_HEADER/BP_CUSGEN, Field:ZZDOKNR_C, M/O:, Type:CHAR, Size:25, Description:Document --> <xsd:element name="ZZDOKNR_C" type="xsd:string" minOccurs="0"/> - <!-- SEQ:101, Table:BP_HEADER/BP_CUSGEN, Field:ZZDOKTL_C, M/O:, Type:VARC, Size:255, Description:Document Part --> + <!-- SEQ:101, Table:BP_HEADER/BP_CUSGEN, Field:ZZDOKTL_C, M/O:, Type:CHAR, Size:3, Description:Document Part --> <xsd:element name="ZZDOKTL_C" type="xsd:string" minOccurs="0"/> - <!-- SEQ:102, Table:BP_HEADER/BP_CUSGEN, Field:ZZDOKVR_C, M/O:, Type:VARC, Size:255, Description:Document version --> + <!-- SEQ:102, Table:BP_HEADER/BP_CUSGEN, Field:ZZDOKVR_C, M/O:, Type:CHAR, Size:2, Description:Document version --> <xsd:element name="ZZDOKVR_C" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="ZVATREG"> <xsd:sequence> - <!-- SEQ:146, Table:BP_HEADER/BP_CUSGEN/ZVATREG, Field:LAND1, M/O:M, Type:VARC, Size:255, Description:Country Key --> + <!-- SEQ:146, Table:BP_HEADER/BP_CUSGEN/ZVATREG, Field:LAND1, M/O:M, Type:CHAR, Size:3, Description:Country Key --> <xsd:element name="LAND1" type="xsd:string"/> - <!-- SEQ:147, Table:BP_HEADER/BP_CUSGEN/ZVATREG, Field:STCEG, M/O:, Type:VARC, Size:255, Description:VAT Registration Number --> + <!-- SEQ:147, Table:BP_HEADER/BP_CUSGEN/ZVATREG, Field:STCEG, M/O:, Type:CHAR, Size:20, Description:VAT Registration Number --> <xsd:element name="STCEG" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="ZTAXIND"> <xsd:sequence> - <!-- SEQ:143, Table:BP_HEADER/BP_CUSGEN/ZTAXIND, Field:ALAND, M/O:M, Type:VARC, Size:255, Description:Departure country --> + <!-- SEQ:143, Table:BP_HEADER/BP_CUSGEN/ZTAXIND, Field:ALAND, M/O:M, Type:CHAR, Size:3, Description:Departure country --> <xsd:element name="ALAND" type="xsd:string"/> - <!-- SEQ:144, Table:BP_HEADER/BP_CUSGEN/ZTAXIND, Field:TATYP, M/O:M, Type:VARC, Size:255, Description:Tax category --> + <!-- SEQ:144, Table:BP_HEADER/BP_CUSGEN/ZTAXIND, Field:TATYP, M/O:M, Type:CHAR, Size:4, Description:Tax category --> <xsd:element name="TATYP" type="xsd:string"/> - <!-- SEQ:145, Table:BP_HEADER/BP_CUSGEN/ZTAXIND, Field:TAXKD, M/O:, Type:VARC, Size:255, Description:Tax classification for customer --> + <!-- SEQ:145, Table:BP_HEADER/BP_CUSGEN/ZTAXIND, Field:TAXKD, M/O:, Type:CHAR, Size:1, Description:Tax classification for customer --> <xsd:element name="TAXKD" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="ZCOMPANY"> <xsd:sequence> - <!-- SEQ:103, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:BUKRS, M/O:M, Type:VARC, Size:255, Description:Company Code --> + <!-- SEQ:103, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:BUKRS, M/O:M, Type:CHAR, Size:4, Description:Company Code --> <xsd:element name="BUKRS" type="xsd:string"/> - <!-- SEQ:104, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:AKONT, M/O:, Type:VARC, Size:255, Description:Reconcil.acct --> + <!-- SEQ:104, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:AKONT, M/O:, Type:CHAR, Size:10, Description:Reconcil.acct --> <xsd:element name="AKONT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:105, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:ZUAWA, M/O:, Type:VARC, Size:255, Description:Sort key --> + <!-- SEQ:105, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:ZUAWA, M/O:, Type:CHAR, Size:3, Description:Sort key --> <xsd:element name="ZUAWA" type="xsd:string" minOccurs="0"/> - <!-- SEQ:106, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:FDGRV, M/O:, Type:VARC, Size:255, Description:Planning Group --> + <!-- SEQ:106, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:FDGRV, M/O:, Type:CHAR, Size:10, Description:Planning Group --> <xsd:element name="FDGRV" type="xsd:string" minOccurs="0"/> - <!-- SEQ:107, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:ZWELS, M/O:, Type:VARC, Size:255, Description:List of the Payment Methods to be Considered --> + <!-- SEQ:107, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:ZWELS, M/O:, Type:CHAR, Size:10, Description:List of the Payment Methods to be Considered --> <xsd:element name="ZWELS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:108, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:ZTERM, M/O:, Type:VARC, Size:255, Description:Terms of Payment Key --> + <!-- SEQ:108, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:ZTERM, M/O:, Type:CHAR, Size:4, Description:Terms of Payment Key --> <xsd:element name="ZTERM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:109, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:ZAHLS, M/O:, Type:VARC, Size:255, Description:Block Key for Payment --> + <!-- SEQ:109, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:ZAHLS, M/O:, Type:CHAR, Size:1, Description:Block Key for Payment --> <xsd:element name="ZAHLS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:110, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:LOEVM, M/O:, Type:VARC, Size:255, Description:Central Deletion Flag for Master Record --> + <!-- SEQ:110, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:LOEVM, M/O:, Type:CHAR, Size:1, Description:Central Deletion Flag for Master Record --> <xsd:element name="LOEVM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:111, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:SPERR, M/O:, Type:VARC, Size:255, Description:Posting block for company code --> + <!-- SEQ:111, Table:BP_HEADER/BP_CUSGEN/ZCOMPANY, Field:SPERR, M/O:, Type:CHAR, Size:1, Description:Posting block for company code --> <xsd:element name="SPERR" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="ZSALES"> <xsd:sequence> <xsd:element name="ZCPFN" type="p0:ZCPFN" minOccurs="0" maxOccurs="unbounded"/> - <!-- SEQ:112, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:VKORG, M/O:M, Type:VARC, Size:255, Description:Sales Org. --> + <!-- SEQ:112, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:VKORG, M/O:M, Type:CHAR, Size:4, Description:Sales Org. --> <xsd:element name="VKORG" type="xsd:string"/> - <!-- SEQ:113, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:VTWEG, M/O:M, Type:VARC, Size:255, Description:Distr. Channel --> + <!-- SEQ:113, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:VTWEG, M/O:M, Type:CHAR, Size:2, Description:Distr. Channel --> <xsd:element name="VTWEG" type="xsd:string"/> - <!-- SEQ:114, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:SPART, M/O:M, Type:VARC, Size:255, Description:Division --> + <!-- SEQ:114, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:SPART, M/O:M, Type:CHAR, Size:2, Description:Division --> <xsd:element name="SPART" type="xsd:string"/> - <!-- SEQ:115, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:BZIRK, M/O:, Type:VARC, Size:255, Description:Sales district --> + <!-- SEQ:115, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:BZIRK, M/O:, Type:CHAR, Size:6, Description:Sales district --> <xsd:element name="BZIRK" type="xsd:string" minOccurs="0"/> - <!-- SEQ:116, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:VKBUR, M/O:, Type:VARC, Size:255, Description:Sales Office --> + <!-- SEQ:116, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:VKBUR, M/O:, Type:CHAR, Size:4, Description:Sales Office --> <xsd:element name="VKBUR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:117, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:VKGRP, M/O:, Type:VARC, Size:255, Description:Sales Group --> + <!-- SEQ:117, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:VKGRP, M/O:, Type:CHAR, Size:3, Description:Sales Group --> <xsd:element name="VKGRP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:118, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:KDGRP, M/O:, Type:VARC, Size:255, Description:Customer group --> + <!-- SEQ:118, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:KDGRP, M/O:, Type:CHAR, Size:2, Description:Customer group --> <xsd:element name="KDGRP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:119, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:AWAHR, M/O:, Type:VARC, Size:255, Description:Order probability of the item --> + <!-- SEQ:119, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:AWAHR, M/O:, Type:NUMC, Size:3, Description:Order probability of the item --> <xsd:element name="AWAHR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:120, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:WAERS, M/O:, Type:VARC, Size:255, Description:Currency --> + <!-- SEQ:120, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:WAERS, M/O:, Type:CUKY, Size:5, Description:Currency --> <xsd:element name="WAERS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:121, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:KURST, M/O:, Type:VARC, Size:255, Description:Exchange Rate Type --> + <!-- SEQ:121, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:KURST, M/O:, Type:CHAR, Size:4, Description:Exchange Rate Type --> <xsd:element name="KURST" type="xsd:string" minOccurs="0"/> - <!-- SEQ:122, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:KALKS, M/O:, Type:VARC, Size:255, Description:Pricing procedure assigned to this customer --> + <!-- SEQ:122, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:KALKS, M/O:, Type:CHAR, Size:1, Description:Pricing procedure assigned to this customer --> <xsd:element name="KALKS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:123, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:VERSG, M/O:, Type:VARC, Size:255, Description:Customer Statistics Group --> + <!-- SEQ:123, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:VERSG, M/O:, Type:CHAR, Size:1, Description:Customer Statistics Group --> <xsd:element name="VERSG" type="xsd:string" minOccurs="0"/> - <!-- SEQ:124, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:VSBED, M/O:, Type:VARC, Size:255, Description:Shipping Conditions --> + <!-- SEQ:124, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:VSBED, M/O:, Type:CHAR, Size:2, Description:Shipping Conditions --> <xsd:element name="VSBED" type="xsd:string" minOccurs="0"/> - <!-- SEQ:125, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:ANTLF, M/O:, Type:VARC, Size:255, Description:Maximum Number of Partial Deliveries Allowed Per I --> + <!-- SEQ:125, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:ANTLF, M/O:, Type:DEC, Size:1,0, Description:Maximum Number of Partial Deliveries Allowed Per I --> <xsd:element name="ANTLF" type="xsd:string" minOccurs="0"/> - <!-- SEQ:126, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:INCO1, M/O:, Type:VARC, Size:255, Description:Incoterms (Part 1) --> + <!-- SEQ:126, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:INCO1, M/O:, Type:CHAR, Size:3, Description:Incoterms (Part 1) --> <xsd:element name="INCO1" type="xsd:string" minOccurs="0"/> - <!-- SEQ:127, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:INCO2, M/O:, Type:VARC, Size:255, Description:Incoterms (Part 2) --> + <!-- SEQ:127, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:INCO2, M/O:, Type:CHAR, Size:28, Description:Incoterms (Part 2) --> <xsd:element name="INCO2" type="xsd:string" minOccurs="0"/> - <!-- SEQ:128, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:ZTERM, M/O:, Type:VARC, Size:255, Description:Terms of Payment Key --> + <!-- SEQ:128, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:ZTERM, M/O:, Type:CHAR, Size:4, Description:Terms of Payment Key --> <xsd:element name="ZTERM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:129, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:KTGRD, M/O:, Type:VARC, Size:255, Description:Account assignment group for this customer --> + <!-- SEQ:129, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:KTGRD, M/O:, Type:CHAR, Size:2, Description:Account assignment group for this customer --> <xsd:element name="KTGRD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:130, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:LOEVM, M/O:, Type:VARC, Size:255, Description:Central Deletion Flag for Master Record --> + <!-- SEQ:130, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:LOEVM, M/O:, Type:CHAR, Size:1, Description:Central Deletion Flag for Master Record --> <xsd:element name="LOEVM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:131, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:KONDA, M/O:, Type:VARC, Size:255, Description:Price group --> + <!-- SEQ:131, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:KONDA, M/O:, Type:CHAR, Size:2, Description:Price group --> <xsd:element name="KONDA" type="xsd:string" minOccurs="0"/> - <!-- SEQ:132, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:LPRIO, M/O:, Type:VARC, Size:255, Description:Delivery Priority --> + <!-- SEQ:132, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:LPRIO, M/O:, Type:NUMC, Size:2, Description:Delivery Priority --> <xsd:element name="LPRIO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:133, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:PLTYP, M/O:, Type:VARC, Size:255, Description:Price List --> + <!-- SEQ:133, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:PLTYP, M/O:, Type:CHAR, Size:2, Description:Price List --> <xsd:element name="PLTYP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:134, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:VWERK, M/O:, Type:VARC, Size:255, Description:From plant --> + <!-- SEQ:134, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:VWERK, M/O:, Type:CHAR, Size:4, Description:From plant --> <xsd:element name="VWERK" type="xsd:string" minOccurs="0"/> - <!-- SEQ:135, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:AUFSD, M/O:, Type:VARC, Size:255, Description:Customer order block (sales area) --> + <!-- SEQ:135, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:AUFSD, M/O:, Type:CHAR, Size:1, Description:Customer order block (sales area) --> <xsd:element name="AUFSD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:136, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:LIFSD, M/O:, Type:VARC, Size:255, Description:Customer delivery block (sales area) --> + <!-- SEQ:136, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:LIFSD, M/O:, Type:CHAR, Size:1, Description:Customer delivery block (sales area) --> <xsd:element name="LIFSD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:137, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:FAKSD, M/O:, Type:VARC, Size:255, Description:Billing block for customer (sales and distribution --> + <!-- SEQ:137, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:FAKSD, M/O:, Type:CHAR, Size:1, Description:Billing block for customer (sales and distribution --> <xsd:element name="FAKSD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:138, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:KZAZU, M/O:, Type:VARC, Size:255, Description:Order Combination --> + <!-- SEQ:138, Table:BP_HEADER/BP_CUSGEN/ZSALES, Field:KZAZU, M/O:, Type:CHAR, Size:1, Description:Order Combination --> <xsd:element name="KZAZU" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="ZCPFN"> <xsd:sequence> - <!-- SEQ:139, Table:BP_HEADER/BP_CUSGEN/ZSALES/ZCPFN, Field:PARVW, M/O:M, Type:VARC, Size:255, Description:Partner Function --> + <!-- SEQ:139, Table:BP_HEADER/BP_CUSGEN/ZSALES/ZCPFN, Field:PARVW, M/O:M, Type:CHAR, Size:2, Description:Partner Function --> <xsd:element name="PARVW" type="xsd:string"/> - <!-- SEQ:140, Table:BP_HEADER/BP_CUSGEN/ZSALES/ZCPFN, Field:PARZA, M/O:M, Type:VARC, Size:255, Description:Partner counter --> + <!-- SEQ:140, Table:BP_HEADER/BP_CUSGEN/ZSALES/ZCPFN, Field:PARZA, M/O:M, Type:NUMC, Size:3, Description:Partner counter --> <xsd:element name="PARZA" type="xsd:string"/> - <!-- SEQ:141, Table:BP_HEADER/BP_CUSGEN/ZSALES/ZCPFN, Field:DEFPA, M/O:, Type:VARC, Size:255, Description:Default Partner --> + <!-- SEQ:141, Table:BP_HEADER/BP_CUSGEN/ZSALES/ZCPFN, Field:DEFPA, M/O:, Type:CHAR, Size:1, Description:Default Partner --> <xsd:element name="DEFPA" type="xsd:string" minOccurs="0"/> - <!-- SEQ:142, Table:BP_HEADER/BP_CUSGEN/ZSALES/ZCPFN, Field:KUNN2, M/O:, Type:VARC, Size:255, Description:Customer number of business partner --> + <!-- SEQ:142, Table:BP_HEADER/BP_CUSGEN/ZSALES/ZCPFN, Field:KUNN2, M/O:, Type:CHAR, Size:10, Description:Customer number of business partner --> <xsd:element name="KUNN2" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> diff --git a/public/wsdl/IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl b/public/wsdl/IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl index c025ac0f..3bd28b54 100644 --- a/public/wsdl/IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl +++ b/public/wsdl/IF_MDZ_EVCP_DEPARTMENT_CODE.wsdl @@ -13,35 +13,35 @@ </xsd:complexType> <xsd:complexType name="CMCTB_DEPT_MDG"> <xsd:sequence> - <!-- SEQ:1, Table:CMCTB_DEPT_MDG, Field:DEPTCD, M/O:M, Type:VARC, Size:255, Description:부서코드 --> + <!-- SEQ:1, Table:CMCTB_DEPT_MDG, Field:DEPTCD, M/O:M, Type:VARC, Size:10, Description:부서코드 --> <xsd:element name="DEPTCD" type="xsd:string"/> - <!-- SEQ:2, Table:CMCTB_DEPT_MDG, Field:CORPCD, M/O:M, Type:VARC, Size:255, Description:법인코드 --> + <!-- SEQ:2, Table:CMCTB_DEPT_MDG, Field:CORPCD, M/O:M, Type:VARC, Size:4, Description:법인코드 --> <xsd:element name="CORPCD" type="xsd:string"/> - <!-- SEQ:3, Table:CMCTB_DEPT_MDG, Field:COMPCD, M/O:, Type:VARC, Size:255, Description:회사코드 --> + <!-- SEQ:3, Table:CMCTB_DEPT_MDG, Field:COMPCD, M/O:, Type:VARC, Size:20, Description:회사코드 --> <xsd:element name="COMPCD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:4, Table:CMCTB_DEPT_MDG, Field:PDEPTCD, M/O:, Type:VARC, Size:255, Description:상위부서코드 --> + <!-- SEQ:4, Table:CMCTB_DEPT_MDG, Field:PDEPTCD, M/O:, Type:VARC, Size:10, Description:상위부서코드 --> <xsd:element name="PDEPTCD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:5, Table:CMCTB_DEPT_MDG, Field:CCCD, M/O:, Type:VARC, Size:255, Description:코스트센터 --> + <!-- SEQ:5, Table:CMCTB_DEPT_MDG, Field:CCCD, M/O:, Type:VARC, Size:10, Description:코스트센터 --> <xsd:element name="CCCD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:6, Table:CMCTB_DEPT_MDG, Field:PCCD, M/O:, Type:VARC, Size:255, Description:손익센터 --> + <!-- SEQ:6, Table:CMCTB_DEPT_MDG, Field:PCCD, M/O:, Type:VARC, Size:10, Description:손익센터 --> <xsd:element name="PCCD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:7, Table:CMCTB_DEPT_MDG, Field:BICD, M/O:, Type:VARC, Size:255, Description:사업장코드 --> + <!-- SEQ:7, Table:CMCTB_DEPT_MDG, Field:BICD, M/O:, Type:VARC, Size:20, Description:사업장코드 --> <xsd:element name="BICD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:8, Table:CMCTB_DEPT_MDG, Field:WERKS, M/O:, Type:VARC, Size:255, Description:플랜트코드 --> + <!-- SEQ:8, Table:CMCTB_DEPT_MDG, Field:WERKS, M/O:, Type:VARC, Size:4, Description:플랜트코드 --> <xsd:element name="WERKS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:9, Table:CMCTB_DEPT_MDG, Field:BIZAREA, M/O:, Type:VARC, Size:255, Description:사업부문 --> + <!-- SEQ:9, Table:CMCTB_DEPT_MDG, Field:BIZAREA, M/O:, Type:VARC, Size:4, Description:사업부문 --> <xsd:element name="BIZAREA" type="xsd:string" minOccurs="0"/> - <!-- SEQ:10, Table:CMCTB_DEPT_MDG, Field:GNCD, M/O:, Type:VARC, Size:255, Description: --> + <!-- SEQ:10, Table:CMCTB_DEPT_MDG, Field:GNCD, M/O:, Type:VARC, Size:20, Description: --> <xsd:element name="GNCD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:11, Table:CMCTB_DEPT_MDG, Field:DHEMPID, M/O:, Type:VARC, Size:255, Description:부서장사번 --> + <!-- SEQ:11, Table:CMCTB_DEPT_MDG, Field:DHEMPID, M/O:, Type:VARC, Size:20, Description:부서장사번 --> <xsd:element name="DHEMPID" type="xsd:string" minOccurs="0"/> - <!-- SEQ:12, Table:CMCTB_DEPT_MDG, Field:VALIDFROMDT, M/O:, Type:VARC, Size:255, Description:유효일자(시작) --> + <!-- SEQ:12, Table:CMCTB_DEPT_MDG, Field:VALIDFROMDT, M/O:, Type:VARC, Size:8, Description:유효일자(시작) --> <xsd:element name="VALIDFROMDT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:13, Table:CMCTB_DEPT_MDG, Field:VALIDTODT, M/O:, Type:VARC, Size:255, Description:유효일자(끝) --> + <!-- SEQ:13, Table:CMCTB_DEPT_MDG, Field:VALIDTODT, M/O:, Type:VARC, Size:8, Description:유효일자(끝) --> <xsd:element name="VALIDTODT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:14, Table:CMCTB_DEPT_MDG, Field:DEPTLVL, M/O:, Type:VARC, Size:255, Description:부서레벨 --> + <!-- SEQ:14, Table:CMCTB_DEPT_MDG, Field:DEPTLVL, M/O:, Type:VARC, Size:3, Description:부서레벨 --> <xsd:element name="DEPTLVL" type="xsd:string" minOccurs="0"/> - <!-- SEQ:15, Table:CMCTB_DEPT_MDG, Field:DEPTPOSNO, M/O:, Type:VARC, Size:255, Description:부서위치 --> + <!-- SEQ:15, Table:CMCTB_DEPT_MDG, Field:DEPTPOSNO, M/O:, Type:VARC, Size:30, Description:부서위치 --> <xsd:element name="DEPTPOSNO" type="xsd:string" minOccurs="0"/> <xsd:element name="DEPTNM" type="p0:DEPTNM" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="COMPNM" type="p0:COMPNM" minOccurs="0" maxOccurs="unbounded"/> @@ -50,25 +50,25 @@ </xsd:complexType> <xsd:complexType name="DEPTNM"> <xsd:sequence> - <!-- SEQ:16, Table:CMCTB_DEPT_MDG/DEPTNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:언어구분 --> + <!-- SEQ:16, Table:CMCTB_DEPT_MDG/DEPTNM, Field:SPRAS, M/O:M, Type:VARC, Size:1, Description:언어구분 --> <xsd:element name="SPRAS" type="xsd:string"/> - <!-- SEQ:17, Table:CMCTB_DEPT_MDG/DEPTNM, Field:DEPTNM, M/O:, Type:VARC, Size:255, Description:부서명 --> + <!-- SEQ:17, Table:CMCTB_DEPT_MDG/DEPTNM, Field:DEPTNM, M/O:, Type:VARC, Size:90, Description:부서명 --> <xsd:element name="DEPTNM" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="COMPNM"> <xsd:sequence> - <!-- SEQ:18, Table:CMCTB_DEPT_MDG/COMPNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:언어구분 --> + <!-- SEQ:18, Table:CMCTB_DEPT_MDG/COMPNM, Field:SPRAS, M/O:M, Type:VARC, Size:1, Description:언어구분 --> <xsd:element name="SPRAS" type="xsd:string"/> - <!-- SEQ:19, Table:CMCTB_DEPT_MDG/COMPNM, Field:COMPNM, M/O:, Type:VARC, Size:255, Description:회사명 --> + <!-- SEQ:19, Table:CMCTB_DEPT_MDG/COMPNM, Field:COMPNM, M/O:, Type:VARC, Size:90, Description:회사명 --> <xsd:element name="COMPNM" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="CORPNM"> <xsd:sequence> - <!-- SEQ:20, Table:CMCTB_DEPT_MDG/CORPNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:언어구분 --> + <!-- SEQ:20, Table:CMCTB_DEPT_MDG/CORPNM, Field:SPRAS, M/O:M, Type:VARC, Size:1, Description:언어구분 --> <xsd:element name="SPRAS" type="xsd:string"/> - <!-- SEQ:21, Table:CMCTB_DEPT_MDG/CORPNM, Field:CORPNM, M/O:, Type:VARC, Size:255, Description:법인명 --> + <!-- SEQ:21, Table:CMCTB_DEPT_MDG/CORPNM, Field:CORPNM, M/O:, Type:VARC, Size:90, Description:법인명 --> <xsd:element name="CORPNM" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> diff --git a/public/wsdl/IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl b/public/wsdl/IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl index f8e181e3..0d453e15 100644 --- a/public/wsdl/IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl +++ b/public/wsdl/IF_MDZ_EVCP_EMPLOYEE_MASTER.wsdl @@ -13,149 +13,149 @@ </xsd:complexType> <xsd:complexType name="CMCTB_EMP_MDG"> <xsd:sequence> - <!-- SEQ:1, Table:CMCTB_EMP_MDG, Field:EMPID, M/O:M, Type:VARC, Size:255, Description:사원번호 --> + <!-- SEQ:1, Table:CMCTB_EMP_MDG, Field:EMPID, M/O:M, Type:CHAR, Size:20, Description:사원번호 --> <xsd:element name="EMPID" type="xsd:string" minOccurs="0"/> - <!-- SEQ:2, Table:CMCTB_EMP_MDG, Field:SINGLEID, M/O:, Type:VARC, Size:255, Description:싱글 ID --> + <!-- SEQ:2, Table:CMCTB_EMP_MDG, Field:SINGLEID, M/O:, Type:CHAR, Size:12, Description:싱글 ID --> <xsd:element name="SINGLEID" type="xsd:string" minOccurs="0"/> - <!-- SEQ:3, Table:CMCTB_EMP_MDG, Field:EPID, M/O:, Type:VARC, Size:255, Description:EPID --> + <!-- SEQ:3, Table:CMCTB_EMP_MDG, Field:EPID, M/O:, Type:CHAR, Size:50, Description:EPID --> <xsd:element name="EPID" type="xsd:string" minOccurs="0"/> - <!-- SEQ:4, Table:CMCTB_EMP_MDG, Field:NAME, M/O:, Type:VARC, Size:255, Description:사원이름 --> + <!-- SEQ:4, Table:CMCTB_EMP_MDG, Field:NAME, M/O:, Type:CHAR, Size:70, Description:사원이름 --> <xsd:element name="NAME" type="xsd:string" minOccurs="0"/> - <!-- SEQ:5, Table:CMCTB_EMP_MDG, Field:ENGNAME, M/O:, Type:VARC, Size:255, Description:사원영문이름 --> + <!-- SEQ:5, Table:CMCTB_EMP_MDG, Field:ENGNAME, M/O:, Type:CHAR, Size:70, Description:사원영문이름 --> <xsd:element name="ENGNAME" type="xsd:string" minOccurs="0"/> - <!-- SEQ:6, Table:CMCTB_EMP_MDG, Field:EMPTYPE, M/O:, Type:VARC, Size:255, Description:인력유형 --> + <!-- SEQ:6, Table:CMCTB_EMP_MDG, Field:EMPTYPE, M/O:, Type:CHAR, Size:20, Description:인력유형 --> <xsd:element name="EMPTYPE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:7, Table:CMCTB_EMP_MDG, Field:DEPTCD, M/O:, Type:VARC, Size:255, Description:부서코드 --> + <!-- SEQ:7, Table:CMCTB_EMP_MDG, Field:DEPTCD, M/O:, Type:CHAR, Size:10, Description:부서코드 --> <xsd:element name="DEPTCD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:8, Table:CMCTB_EMP_MDG, Field:PDEPTCD, M/O:, Type:VARC, Size:255, Description:상위부서코드 --> + <!-- SEQ:8, Table:CMCTB_EMP_MDG, Field:PDEPTCD, M/O:, Type:CHAR, Size:10, Description:상위부서코드 --> <xsd:element name="PDEPTCD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:9, Table:CMCTB_EMP_MDG, Field:COMPCD, M/O:, Type:VARC, Size:255, Description:회사 코드 --> + <!-- SEQ:9, Table:CMCTB_EMP_MDG, Field:COMPCD, M/O:, Type:CHAR, Size:20, Description:회사 코드 --> <xsd:element name="COMPCD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:10, Table:CMCTB_EMP_MDG, Field:CORPCD, M/O:, Type:VARC, Size:255, Description:법인 코드 --> + <!-- SEQ:10, Table:CMCTB_EMP_MDG, Field:CORPCD, M/O:, Type:CHAR, Size:4, Description:법인 코드 --> <xsd:element name="CORPCD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:11, Table:CMCTB_EMP_MDG, Field:GNCD, M/O:, Type:VARC, Size:255, Description:총괄코드 --> + <!-- SEQ:11, Table:CMCTB_EMP_MDG, Field:GNCD, M/O:, Type:CHAR, Size:20, Description:총괄코드 --> <xsd:element name="GNCD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:12, Table:CMCTB_EMP_MDG, Field:BICD, M/O:, Type:VARC, Size:255, Description:사업장코드 --> + <!-- SEQ:12, Table:CMCTB_EMP_MDG, Field:BICD, M/O:, Type:CHAR, Size:20, Description:사업장코드 --> <xsd:element name="BICD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:13, Table:CMCTB_EMP_MDG, Field:KTL_EMP, M/O:, Type:VARC, Size:255, Description:비용센터 --> + <!-- SEQ:13, Table:CMCTB_EMP_MDG, Field:KTL_EMP, M/O:, Type:CHAR, Size:10, Description:비용센터 --> <xsd:element name="KTL_EMP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:14, Table:CMCTB_EMP_MDG, Field:BIZAREA, M/O:, Type:VARC, Size:255, Description:Business Area --> + <!-- SEQ:14, Table:CMCTB_EMP_MDG, Field:BIZAREA, M/O:, Type:CHAR, Size:4, Description:Business Area --> <xsd:element name="BIZAREA" type="xsd:string" minOccurs="0"/> - <!-- SEQ:15, Table:CMCTB_EMP_MDG, Field:WORKPLC, M/O:, Type:VARC, Size:255, Description:근무처 --> + <!-- SEQ:15, Table:CMCTB_EMP_MDG, Field:WORKPLC, M/O:, Type:CHAR, Size:16, Description:근무처 --> <xsd:element name="WORKPLC" type="xsd:string" minOccurs="0"/> - <!-- SEQ:16, Table:CMCTB_EMP_MDG, Field:PAYPLC, M/O:, Type:VARC, Size:255, Description:Payplace for Employee --> + <!-- SEQ:16, Table:CMCTB_EMP_MDG, Field:PAYPLC, M/O:, Type:CHAR, Size:4, Description:Payplace for Employee --> <xsd:element name="PAYPLC" type="xsd:string" minOccurs="0"/> - <!-- SEQ:17, Table:CMCTB_EMP_MDG, Field:COUNTRYCD, M/O:, Type:VARC, Size:255, Description:국가코드 --> + <!-- SEQ:17, Table:CMCTB_EMP_MDG, Field:COUNTRYCD, M/O:, Type:CHAR, Size:3, Description:국가코드 --> <xsd:element name="COUNTRYCD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:18, Table:CMCTB_EMP_MDG, Field:JOBCD, M/O:, Type:VARC, Size:255, Description:직무코드 --> + <!-- SEQ:18, Table:CMCTB_EMP_MDG, Field:JOBCD, M/O:, Type:CHAR, Size:20, Description:직무코드 --> <xsd:element name="JOBCD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:19, Table:CMCTB_EMP_MDG, Field:JOBDUTYCD, M/O:, Type:VARC, Size:255, Description:직책코드 --> + <!-- SEQ:19, Table:CMCTB_EMP_MDG, Field:JOBDUTYCD, M/O:, Type:CHAR, Size:15, Description:직책코드 --> <xsd:element name="JOBDUTYCD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:20, Table:CMCTB_EMP_MDG, Field:JOBGRDCD, M/O:, Type:VARC, Size:255, Description:직급코드 --> + <!-- SEQ:20, Table:CMCTB_EMP_MDG, Field:JOBGRDCD, M/O:, Type:CHAR, Size:12, Description:직급코드 --> <xsd:element name="JOBGRDCD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:21, Table:CMCTB_EMP_MDG, Field:GJOBCD, M/O:, Type:VARC, Size:255, Description:Global 직무 --> + <!-- SEQ:21, Table:CMCTB_EMP_MDG, Field:GJOBCD, M/O:, Type:CHAR, Size:20, Description:Global 직무 --> <xsd:element name="GJOBCD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:22, Table:CMCTB_EMP_MDG, Field:GJOBDUTYCD, M/O:, Type:VARC, Size:255, Description:Global 직책 --> + <!-- SEQ:22, Table:CMCTB_EMP_MDG, Field:GJOBDUTYCD, M/O:, Type:CHAR, Size:20, Description:Global 직책 --> <xsd:element name="GJOBDUTYCD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:23, Table:CMCTB_EMP_MDG, Field:GJOBGRDCD, M/O:, Type:VARC, Size:255, Description:Global 직급 --> + <!-- SEQ:23, Table:CMCTB_EMP_MDG, Field:GJOBGRDCD, M/O:, Type:CHAR, Size:20, Description:Global 직급 --> <xsd:element name="GJOBGRDCD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:24, Table:CMCTB_EMP_MDG, Field:LVABSENCE, M/O:, Type:VARC, Size:255, Description:휴직여부 --> + <!-- SEQ:24, Table:CMCTB_EMP_MDG, Field:LVABSENCE, M/O:, Type:CHAR, Size:1, Description:휴직여부 --> <xsd:element name="LVABSENCE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:25, Table:CMCTB_EMP_MDG, Field:RETIRE, M/O:, Type:VARC, Size:255, Description:퇴직여부 --> + <!-- SEQ:25, Table:CMCTB_EMP_MDG, Field:RETIRE, M/O:, Type:CHAR, Size:1, Description:퇴직여부 --> <xsd:element name="RETIRE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:26, Table:CMCTB_EMP_MDG, Field:DISPATCH, M/O:, Type:VARC, Size:255, Description:파견여부 --> + <!-- SEQ:26, Table:CMCTB_EMP_MDG, Field:DISPATCH, M/O:, Type:CHAR, Size:1, Description:파견여부 --> <xsd:element name="DISPATCH" type="xsd:string" minOccurs="0"/> - <!-- SEQ:27, Table:CMCTB_EMP_MDG, Field:DPSTARTDT, M/O:, Type:VARC, Size:255, Description:파견발령일 --> + <!-- SEQ:27, Table:CMCTB_EMP_MDG, Field:DPSTARTDT, M/O:, Type:DATS, Size:8, Description:파견발령일 --> <xsd:element name="DPSTARTDT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:28, Table:CMCTB_EMP_MDG, Field:DEPENDDT, M/O:, Type:VARC, Size:255, Description:파견종료예정일 --> + <!-- SEQ:28, Table:CMCTB_EMP_MDG, Field:DEPENDDT, M/O:, Type:DATS, Size:8, Description:파견종료예정일 --> <xsd:element name="DEPENDDT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:29, Table:CMCTB_EMP_MDG, Field:ORGDEPTCD, M/O:, Type:VARC, Size:255, Description:원소속부서코드 --> + <!-- SEQ:29, Table:CMCTB_EMP_MDG, Field:ORGDEPTCD, M/O:, Type:CHAR, Size:10, Description:원소속부서코드 --> <xsd:element name="ORGDEPTCD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:30, Table:CMCTB_EMP_MDG, Field:ORGPDEPCD, M/O:, Type:VARC, Size:255, Description:원소속부서의 상위부서코드 --> + <!-- SEQ:30, Table:CMCTB_EMP_MDG, Field:ORGPDEPCD, M/O:, Type:CHAR, Size:10, Description:원소속부서의 상위부서코드 --> <xsd:element name="ORGPDEPCD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:31, Table:CMCTB_EMP_MDG, Field:ORGCOMPCD, M/O:, Type:VARC, Size:255, Description:원소속회사코드 --> + <!-- SEQ:31, Table:CMCTB_EMP_MDG, Field:ORGCOMPCD, M/O:, Type:CHAR, Size:20, Description:원소속회사코드 --> <xsd:element name="ORGCOMPCD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:32, Table:CMCTB_EMP_MDG, Field:ORGCORPCD, M/O:, Type:VARC, Size:255, Description:원소속법인코드 --> + <!-- SEQ:32, Table:CMCTB_EMP_MDG, Field:ORGCORPCD, M/O:, Type:CHAR, Size:4, Description:원소속법인코드 --> <xsd:element name="ORGCORPCD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:33, Table:CMCTB_EMP_MDG, Field:ORGBICD, M/O:, Type:VARC, Size:255, Description:원소속사업장코드 --> + <!-- SEQ:33, Table:CMCTB_EMP_MDG, Field:ORGBICD, M/O:, Type:CHAR, Size:20, Description:원소속사업장코드 --> <xsd:element name="ORGBICD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:34, Table:CMCTB_EMP_MDG, Field:OKTL_EMPL, M/O:, Type:VARC, Size:255, Description:원소속부서 비용센터 --> + <!-- SEQ:34, Table:CMCTB_EMP_MDG, Field:OKTL_EMPL, M/O:, Type:CHAR, Size:10, Description:원소속부서 비용센터 --> <xsd:element name="OKTL_EMPL" type="xsd:string" minOccurs="0"/> - <!-- SEQ:35, Table:CMCTB_EMP_MDG, Field:VALFROMDT, M/O:, Type:VARC, Size:255, Description:근무시작일 --> + <!-- SEQ:35, Table:CMCTB_EMP_MDG, Field:VALFROMDT, M/O:, Type:DATS, Size:8, Description:근무시작일 --> <xsd:element name="VALFROMDT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:36, Table:CMCTB_EMP_MDG, Field:VALTODT, M/O:, Type:VARC, Size:255, Description:종료예정일(퇴직일자-정규직일경우) --> + <!-- SEQ:36, Table:CMCTB_EMP_MDG, Field:VALTODT, M/O:, Type:DATS, Size:8, Description:종료예정일(퇴직일자-정규직일경우) --> <xsd:element name="VALTODT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:37, Table:CMCTB_EMP_MDG, Field:DHJOBGRDCD, M/O:, Type:VARC, Size:255, Description:부서장 직급코드 --> + <!-- SEQ:37, Table:CMCTB_EMP_MDG, Field:DHJOBGRDCD, M/O:, Type:CHAR, Size:29, Description:부서장 직급코드 --> <xsd:element name="DHJOBGRDCD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:38, Table:CMCTB_EMP_MDG, Field:DHNAME, M/O:, Type:VARC, Size:255, Description:부서장 이름 --> + <!-- SEQ:38, Table:CMCTB_EMP_MDG, Field:DHNAME, M/O:, Type:CHAR, Size:70, Description:부서장 이름 --> <xsd:element name="DHNAME" type="xsd:string" minOccurs="0"/> - <!-- SEQ:39, Table:CMCTB_EMP_MDG, Field:DHSINGLID, M/O:, Type:VARC, Size:255, Description:부서장 SingleID --> + <!-- SEQ:39, Table:CMCTB_EMP_MDG, Field:DHSINGLID, M/O:, Type:CHAR, Size:12, Description:부서장 SingleID --> <xsd:element name="DHSINGLID" type="xsd:string" minOccurs="0"/> - <!-- SEQ:40, Table:CMCTB_EMP_MDG, Field:SOCIALID, M/O:, Type:VARC, Size:255, Description: --> + <!-- SEQ:40, Table:CMCTB_EMP_MDG, Field:SOCIALID, M/O:, Type:CHAR, Size:16, Description: --> <xsd:element name="SOCIALID" type="xsd:string" minOccurs="0"/> - <!-- SEQ:41, Table:CMCTB_EMP_MDG, Field:SOCIALID_DECR, M/O:, Type:VARC, Size:255, Description: --> + <!-- SEQ:41, Table:CMCTB_EMP_MDG, Field:SOCIALID_DECR, M/O:, Type:CHAR, Size:16, Description: --> <xsd:element name="SOCIALID_DECR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:42, Table:CMCTB_EMP_MDG, Field:SEX, M/O:, Type:VARC, Size:255, Description:성별 --> + <!-- SEQ:42, Table:CMCTB_EMP_MDG, Field:SEX, M/O:, Type:CHAR, Size:1, Description:성별 --> <xsd:element name="SEX" type="xsd:string" minOccurs="0"/> - <!-- SEQ:43, Table:CMCTB_EMP_MDG, Field:EMAIL, M/O:, Type:VARC, Size:255, Description:이메일주소 --> + <!-- SEQ:43, Table:CMCTB_EMP_MDG, Field:EMAIL, M/O:, Type:CHAR, Size:40, Description:이메일주소 --> <xsd:element name="EMAIL" type="xsd:string" minOccurs="0"/> - <!-- SEQ:44, Table:CMCTB_EMP_MDG, Field:TELNUM, M/O:, Type:VARC, Size:255, Description:전화번호 --> + <!-- SEQ:44, Table:CMCTB_EMP_MDG, Field:TELNUM, M/O:, Type:CHAR, Size:20, Description:전화번호 --> <xsd:element name="TELNUM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:45, Table:CMCTB_EMP_MDG, Field:MBPHONE, M/O:, Type:VARC, Size:255, Description:개인 휴대폰 전화번호 --> + <!-- SEQ:45, Table:CMCTB_EMP_MDG, Field:MBPHONE, M/O:, Type:CHAR, Size:20, Description:개인 휴대폰 전화번호 --> <xsd:element name="MBPHONE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:46, Table:CMCTB_EMP_MDG, Field:EMPADR, M/O:, Type:VARC, Size:255, Description:주소 --> + <!-- SEQ:46, Table:CMCTB_EMP_MDG, Field:EMPADR, M/O:, Type:CHAR, Size:10, Description:주소 --> <xsd:element name="EMPADR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:47, Table:CMCTB_EMP_MDG, Field:PSTLCODE, M/O:, Type:VARC, Size:255, Description:우편번호 --> + <!-- SEQ:47, Table:CMCTB_EMP_MDG, Field:PSTLCODE, M/O:, Type:CHAR, Size:10, Description:우편번호 --> <xsd:element name="PSTLCODE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:48, Table:CMCTB_EMP_MDG, Field:WFREQUIRE, M/O:, Type:VARC, Size:255, Description:전결필요여부 --> + <!-- SEQ:48, Table:CMCTB_EMP_MDG, Field:WFREQUIRE, M/O:, Type:CHAR, Size:1, Description:전결필요여부 --> <xsd:element name="WFREQUIRE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:49, Table:CMCTB_EMP_MDG, Field:HRMANAGE, M/O:, Type:VARC, Size:255, Description:HR시스템에서 관리 여부 --> + <!-- SEQ:49, Table:CMCTB_EMP_MDG, Field:HRMANAGE, M/O:, Type:CHAR, Size:1, Description:HR시스템에서 관리 여부 --> <xsd:element name="HRMANAGE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:50, Table:CMCTB_EMP_MDG, Field:SINGLRQ, M/O:, Type:VARC, Size:255, Description:싱글ID 요청 상태 --> + <!-- SEQ:50, Table:CMCTB_EMP_MDG, Field:SINGLRQ, M/O:, Type:CHAR, Size:1, Description:싱글ID 요청 상태 --> <xsd:element name="SINGLRQ" type="xsd:string" minOccurs="0"/> - <!-- SEQ:51, Table:CMCTB_EMP_MDG, Field:SOJRNEMP, M/O:, Type:VARC, Size:255, Description:주재원 여부 --> + <!-- SEQ:51, Table:CMCTB_EMP_MDG, Field:SOJRNEMP, M/O:, Type:CHAR, Size:1, Description:주재원 여부 --> <xsd:element name="SOJRNEMP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:52, Table:CMCTB_EMP_MDG, Field:ADDRCNTRY, M/O:, Type:VARC, Size:255, Description:우편번호의 국가코드 --> + <!-- SEQ:52, Table:CMCTB_EMP_MDG, Field:ADDRCNTRY, M/O:, Type:CHAR, Size:3, Description:우편번호의 국가코드 --> <xsd:element name="ADDRCNTRY" type="xsd:string" minOccurs="0"/> - <!-- SEQ:53, Table:CMCTB_EMP_MDG, Field:FORIGNFLG, M/O:, Type:VARC, Size:255, Description:[기획]Foreign Flag --> + <!-- SEQ:53, Table:CMCTB_EMP_MDG, Field:FORIGNFLG, M/O:, Type:CHAR, Size:1, Description:[기획]Foreign Flag --> <xsd:element name="FORIGNFLG" type="xsd:string" minOccurs="0"/> - <!-- SEQ:54, Table:CMCTB_EMP_MDG, Field:USEDSYS, M/O:, Type:VARC, Size:255, Description:[기획]Used System --> + <!-- SEQ:54, Table:CMCTB_EMP_MDG, Field:USEDSYS, M/O:, Type:CHAR, Size:20, Description:[기획]Used System --> <xsd:element name="USEDSYS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:55, Table:CMCTB_EMP_MDG, Field:JOBCLASS, M/O:, Type:VARC, Size:255, Description:[에스원]Job Class Code --> + <!-- SEQ:55, Table:CMCTB_EMP_MDG, Field:JOBCLASS, M/O:, Type:CHAR, Size:20, Description:[에스원]Job Class Code --> <xsd:element name="JOBCLASS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:56, Table:CMCTB_EMP_MDG, Field:TMPJDIV, M/O:, Type:VARC, Size:255, Description:[에스원]Non-Regular Code --> + <!-- SEQ:56, Table:CMCTB_EMP_MDG, Field:TMPJDIV, M/O:, Type:CHAR, Size:20, Description:[에스원]Non-Regular Code --> <xsd:element name="TMPJDIV" type="xsd:string" minOccurs="0"/> - <!-- SEQ:57, Table:CMCTB_EMP_MDG, Field:CSFROMDT, M/O:, Type:VARC, Size:255, Description:[에스원]CS Start Date --> + <!-- SEQ:57, Table:CMCTB_EMP_MDG, Field:CSFROMDT, M/O:, Type:DATS, Size:8, Description:[에스원]CS Start Date --> <xsd:element name="CSFROMDT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:58, Table:CMCTB_EMP_MDG, Field:CSTODT, M/O:, Type:VARC, Size:255, Description:[에스원]CS End Date --> + <!-- SEQ:58, Table:CMCTB_EMP_MDG, Field:CSTODT, M/O:, Type:DATS, Size:8, Description:[에스원]CS End Date --> <xsd:element name="CSTODT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:59, Table:CMCTB_EMP_MDG, Field:CTIROLE, M/O:, Type:VARC, Size:255, Description:[에스원]CTI Authority --> + <!-- SEQ:59, Table:CMCTB_EMP_MDG, Field:CTIROLE, M/O:, Type:CHAR, Size:2, Description:[에스원]CTI Authority --> <xsd:element name="CTIROLE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:60, Table:CMCTB_EMP_MDG, Field:IDNO, M/O:, Type:VARC, Size:255, Description:[모직]개인ID --> + <!-- SEQ:60, Table:CMCTB_EMP_MDG, Field:IDNO, M/O:, Type:CHAR, Size:32, Description:[모직]개인ID --> <xsd:element name="IDNO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:61, Table:CMCTB_EMP_MDG, Field:BSCADDR, M/O:, Type:VARC, Size:255, Description:Basic Address --> + <!-- SEQ:61, Table:CMCTB_EMP_MDG, Field:BSCADDR, M/O:, Type:CHAR, Size:35, Description:Basic Address --> <xsd:element name="BSCADDR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:62, Table:CMCTB_EMP_MDG, Field:DTLADDR, M/O:, Type:VARC, Size:255, Description:Detail Address --> + <!-- SEQ:62, Table:CMCTB_EMP_MDG, Field:DTLADDR, M/O:, Type:CHAR, Size:35, Description:Detail Address --> <xsd:element name="DTLADDR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:63, Table:CMCTB_EMP_MDG, Field:DTLADDR2, M/O:, Type:VARC, Size:255, Description:Detail Address2 --> + <!-- SEQ:63, Table:CMCTB_EMP_MDG, Field:DTLADDR2, M/O:, Type:CHAR, Size:35, Description:Detail Address2 --> <xsd:element name="DTLADDR2" type="xsd:string" minOccurs="0"/> - <!-- SEQ:64, Table:CMCTB_EMP_MDG, Field:ZZBUKRS, M/O:, Type:VARC, Size:255, Description:ECC Company 코드 (재무법인코드) --> + <!-- SEQ:64, Table:CMCTB_EMP_MDG, Field:ZZBUKRS, M/O:, Type:CHAR, Size:4, Description:ECC Company 코드 (재무법인코드) --> <xsd:element name="ZZBUKRS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:65, Table:CMCTB_EMP_MDG, Field:ZPRFLG, M/O:, Type:VARC, Size:255, Description:업데이트 여부 Flag --> + <!-- SEQ:65, Table:CMCTB_EMP_MDG, Field:ZPRFLG, M/O:, Type:CHAR, Size:1, Description:업데이트 여부 Flag --> <xsd:element name="ZPRFLG" type="xsd:string" minOccurs="0"/> - <!-- SEQ:66, Table:CMCTB_EMP_MDG, Field:ERNAM, M/O:, Type:VARC, Size:255, Description:생성자 --> + <!-- SEQ:66, Table:CMCTB_EMP_MDG, Field:ERNAM, M/O:, Type:CHAR, Size:12, Description:생성자 --> <xsd:element name="ERNAM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:67, Table:CMCTB_EMP_MDG, Field:ERDAT, M/O:, Type:VARC, Size:255, Description:생성날짜 --> + <!-- SEQ:67, Table:CMCTB_EMP_MDG, Field:ERDAT, M/O:, Type:DATS, Size:8, Description:생성날짜 --> <xsd:element name="ERDAT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:68, Table:CMCTB_EMP_MDG, Field:ERZET, M/O:, Type:VARC, Size:255, Description:생성시간 --> + <!-- SEQ:68, Table:CMCTB_EMP_MDG, Field:ERZET, M/O:, Type:TIMS, Size:6, Description:생성시간 --> <xsd:element name="ERZET" type="xsd:string" minOccurs="0"/> - <!-- SEQ:69, Table:CMCTB_EMP_MDG, Field:AENAM, M/O:, Type:VARC, Size:255, Description:수정자 --> + <!-- SEQ:69, Table:CMCTB_EMP_MDG, Field:AENAM, M/O:, Type:CHAR, Size:12, Description:수정자 --> <xsd:element name="AENAM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:70, Table:CMCTB_EMP_MDG, Field:AEDAT, M/O:, Type:VARC, Size:255, Description:수정날짜 --> + <!-- SEQ:70, Table:CMCTB_EMP_MDG, Field:AEDAT, M/O:, Type:DATS, Size:8, Description:수정날짜 --> <xsd:element name="AEDAT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:71, Table:CMCTB_EMP_MDG, Field:AEZET, M/O:, Type:VARC, Size:255, Description:최근수정시간 --> + <!-- SEQ:71, Table:CMCTB_EMP_MDG, Field:AEZET, M/O:, Type:TIMS, Size:6, Description:최근수정시간 --> <xsd:element name="AEZET" type="xsd:string" minOccurs="0"/> - <!-- SEQ:72, Table:CMCTB_EMP_MDG, Field:DEL, M/O:, Type:VARC, Size:255, Description:삭제Flag --> + <!-- SEQ:72, Table:CMCTB_EMP_MDG, Field:DEL, M/O:, Type:CHAR, Size:1, Description:삭제Flag --> <xsd:element name="DEL" type="xsd:string" minOccurs="0"/> <xsd:element name="DEPTCODE" type="p0:DEPTCODE" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="DEPTNM" type="p0:DEPTNM" minOccurs="0" maxOccurs="unbounded"/> @@ -185,207 +185,208 @@ </xsd:complexType> <xsd:complexType name="DEPTCODE"> <xsd:sequence> - <!-- SEQ:73, Table:CMCTB_EMP_MDG/DEPTCODE, Field:PCCD, M/O:, Type:VARC, Size:255, Description:Profit Center Code (DEPTCD) --> + <!-- SEQ:73, Table:CMCTB_EMP_MDG/DEPTCODE, Field:PCCD, M/O:, Type:CHAR, Size:10, Description:Profit Center Code (DEPTCD) --> <xsd:element name="PCCD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:74, Table:CMCTB_EMP_MDG/DEPTCODE, Field:WERKS, M/O:, Type:VARC, Size:255, Description:Plant Code (DEPTCD) --> + <!-- SEQ:74, Table:CMCTB_EMP_MDG/DEPTCODE, Field:WERKS, M/O:, Type:CHAR, Size:4, Description:Plant Code (DEPTCD) --> <xsd:element name="WERKS" type="xsd:string" minOccurs="0"/> <xsd:element name="PCCDNM" type="p0:PCCDNM" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="PCCDNM"> <xsd:sequence> - <!-- SEQ:78, Table:CMCTB_EMP_MDG/DEPTNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (DEPTCD) --> + <!-- SEQ:78, Table:CMCTB_EMP_MDG/DEPTNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (DEPTCD) --> <xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:76, Table:CMCTB_EMP_MDG/DEPTCODE/PCCDNM, Field:KTEXT, M/O:, Type:VARC, Size:255, Description:General Name --> + <!-- SEQ:76, Table:CMCTB_EMP_MDG/DEPTCODE/PCCDNM, Field:KTEXT, M/O:, Type:CHAR, Size:20, Description:General Name --> <xsd:element name="KTEXT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:77, Table:CMCTB_EMP_MDG/DEPTCODE/PCCDNM, Field:LTEXT, M/O:, Type:VARC, Size:255, Description:Long Text --> + <!-- SEQ:77, Table:CMCTB_EMP_MDG/DEPTCODE/PCCDNM, Field:LTEXT, M/O:, Type:CHAR, Size:40, Description:Long Text --> <xsd:element name="LTEXT" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="DEPTNM"> <xsd:sequence> - <!-- SEQ:78, Table:CMCTB_EMP_MDG/DEPTNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (DEPTCD) --> + <!-- SEQ:78, Table:CMCTB_EMP_MDG/DEPTNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (DEPTCD) --> <xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:79, Table:CMCTB_EMP_MDG/DEPTNM, Field:DEPTNM, M/O:, Type:VARC, Size:255, Description:Department Name (DEPTCD) --> + <!-- SEQ:79, Table:CMCTB_EMP_MDG/DEPTNM, Field:DEPTNM, M/O:, Type:CHAR, Size:60, Description:Department Name (DEPTCD) --> <xsd:element name="DEPTNM" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="PDEPTNM"> <xsd:sequence> - <!-- SEQ:80, Table:CMCTB_EMP_MDG/PDEPTNM, Field:SPRAS, M/O:, Type:VARC, Size:255, Description:Language Key (PDEPTCD) --> + <!-- SEQ:80, Table:CMCTB_EMP_MDG/PDEPTNM, Field:SPRAS, M/O:, Type:CHAR, Size:1, Description:Language Key (PDEPTCD) --> <xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:81, Table:CMCTB_EMP_MDG/PDEPTNM, Field:DEPTNM, M/O:, Type:VARC, Size:255, Description:Department Name (PDEPTCD) --> + <!-- SEQ:81, Table:CMCTB_EMP_MDG/PDEPTNM, Field:DEPTNM, M/O:, Type:CHAR, Size:60, Description:Department Name (PDEPTCD) --> <xsd:element name="DEPTNM" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="COMPNM"> <xsd:sequence> - <!-- SEQ:82, Table:CMCTB_EMP_MDG/COMPNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (COMPCD) --> + <!-- SEQ:82, Table:CMCTB_EMP_MDG/COMPNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (COMPCD) --> <xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:83, Table:CMCTB_EMP_MDG/COMPNM, Field:COMPNM, M/O:, Type:VARC, Size:255, Description:Company Name (COMPCD) --> + <!-- SEQ:83, Table:CMCTB_EMP_MDG/COMPNM, Field:COMPNM, M/O:, Type:CHAR, Size:60, Description:Company Name (COMPCD) --> <xsd:element name="COMPNM" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="CORPNM"> <xsd:sequence> - <!-- SEQ:84, Table:CMCTB_EMP_MDG/CORPNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (CORPCD) --> + <!-- SEQ:84, Table:CMCTB_EMP_MDG/CORPNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (CORPCD) --> <xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:85, Table:CMCTB_EMP_MDG/CORPNM, Field:CORPNM, M/O:, Type:VARC, Size:255, Description:Corporate Name (CORPCD) --> + <!-- SEQ:85, Table:CMCTB_EMP_MDG/CORPNM, Field:CORPNM, M/O:, Type:CHAR, Size:60, Description:Corporate Name (CORPCD) --> <xsd:element name="CORPNM" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="GNNM"> <xsd:sequence> - <!-- SEQ:86, Table:CMCTB_EMP_MDG/GNNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (GNCD) --> + <!-- SEQ:86, Table:CMCTB_EMP_MDG/GNNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (GNCD) --> <xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:87, Table:CMCTB_EMP_MDG/GNNM, Field:GNNM, M/O:, Type:VARC, Size:255, Description:General Name (GNCD) --> + <!-- SEQ:87, Table:CMCTB_EMP_MDG/GNNM, Field:GNNM, M/O:, Type:CHAR, Size:60, Description:General Name (GNCD) --> <xsd:element name="GNNM" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="BINM"> <xsd:sequence> - <!-- SEQ:88, Table:CMCTB_EMP_MDG/BINM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (BICD) --> + <!-- SEQ:88, Table:CMCTB_EMP_MDG/BINM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (BICD) --> <xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:89, Table:CMCTB_EMP_MDG/BINM, Field:BINM, M/O:, Type:VARC, Size:255, Description:Business Place Name (BICD) --> + <!-- SEQ:89, Table:CMCTB_EMP_MDG/BINM, Field:BINM, M/O:, Type:CHAR, Size:60, Description:Business Place Name (BICD) --> <xsd:element name="BINM" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="KTLNM"> <xsd:sequence> - <!-- SEQ:90, Table:CMCTB_EMP_MDG/KTLNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (KTL_EMP) --> + <!-- SEQ:90, Table:CMCTB_EMP_MDG/KTLNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (KTL_EMP) --> <xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:91, Table:CMCTB_EMP_MDG/KTLNM, Field:LTEXT, M/O:, Type:VARC, Size:255, Description:Cost Center (KTL_EMP) --> + <!-- SEQ:91, Table:CMCTB_EMP_MDG/KTLNM, Field:LTEXT, M/O:, Type:CHAR, Size:40, Description:Cost Center (KTL_EMP) --> <xsd:element name="LTEXT" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="BANM"> <xsd:sequence> - <!-- SEQ:92, Table:CMCTB_EMP_MDG/BANM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (BIZAREA) --> + <!-- SEQ:92, Table:CMCTB_EMP_MDG/BANM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (BIZAREA) --> <xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:93, Table:CMCTB_EMP_MDG/BANM, Field:GTEXT, M/O:, Type:VARC, Size:255, Description:Business area description --> + <!-- SEQ:93, Table:CMCTB_EMP_MDG/BANM, Field:GTEXT, M/O:, Type:CHAR, Size:30, Description:Business area description --> <xsd:element name="GTEXT" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="COUNTRYNM"> <xsd:sequence> - <!-- SEQ:94, Table:CMCTB_EMP_MDG/COUNTRYNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (COUNTRYCD) --> + <!-- SEQ:94, Table:CMCTB_EMP_MDG/COUNTRYNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (COUNTRYCD) --> <xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:95, Table:CMCTB_EMP_MDG/COUNTRYNM, Field:COUNTRYNM, M/O:, Type:VARC, Size:255, Description:Country Name (COUNTRYCD) --> + <!-- SEQ:95, Table:CMCTB_EMP_MDG/COUNTRYNM, Field:COUNTRYNM, M/O:, Type:CHAR, Size:60, Description:Country Name (COUNTRYCD) --> <xsd:element name="COUNTRYNM" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="JOBNM"> <xsd:sequence> - <!-- SEQ:96, Table:CMCTB_EMP_MDG/JOBNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (JOBCD) --> + <!-- SEQ:96, Table:CMCTB_EMP_MDG/JOBNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (JOBCD) --> <xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:97, Table:CMCTB_EMP_MDG/JOBNM, Field:JOBNM, M/O:, Type:VARC, Size:255, Description:Job Name (JOBCD) --> + <!-- SEQ:97, Table:CMCTB_EMP_MDG/JOBNM, Field:JOBNM, M/O:, Type:CHAR, Size:60, Description:Job Name (JOBCD) --> <xsd:element name="JOBNM" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="JOBDUTYNM"> <xsd:sequence> - <!-- SEQ:98, Table:CMCTB_EMP_MDG/JOBDUTYNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (JOBDUTYCD) --> + <!-- SEQ:98, Table:CMCTB_EMP_MDG/JOBDUTYNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (JOBDUTYCD) --> <xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:99, Table:CMCTB_EMP_MDG/JOBDUTYNM, Field:JOBDUTYNM, M/O:, Type:VARC, Size:255, Description:Job Duty Name (JOBDUTYCD) --> + <!-- SEQ:99, Table:CMCTB_EMP_MDG/JOBDUTYNM, Field:JOBDUTYNM, M/O:, Type:CHAR, Size:60, Description:Job Duty Name (JOBDUTYCD) --> <xsd:element name="JOBDUTYNM" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="JOBGRDNM"> <xsd:sequence> - <!-- SEQ:100, Table:CMCTB_EMP_MDG/JOBGRDNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (JOBGRDCD) --> + <!-- SEQ:100, Table:CMCTB_EMP_MDG/JOBGRDNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (JOBGRDCD) --> <xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:101, Table:CMCTB_EMP_MDG/JOBGRDNM, Field:JOBGRDNM, M/O:, Type:VARC, Size:255, Description:Job Grade Name (JOBGRDCD) --> + <!-- SEQ:101, Table:CMCTB_EMP_MDG/JOBGRDNM, Field:JOBGRDNM, M/O:, Type:CHAR, Size:60, Description:Job Grade Name (JOBGRDCD) --> <xsd:element name="JOBGRDNM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:102, Table:CMCTB_EMP_MDG/JOBGRDNM, Field:JOBGRDTYPE, M/O:, Type:VARC, Size:255, Description:Job Grade Type --> + <!-- SEQ:102, Table:CMCTB_EMP_MDG/JOBGRDNM, Field:JOBGRDTYPE, M/O:, Type:CHAR, Size:1, Description:Job Grade Type --> <xsd:element name="JOBGRDTYPE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:103, Table:CMCTB_EMP_MDG/JOBGRDNM, Field:ISEXECUT, M/O:, Type:VARC, Size:255, Description:Executive Indicator --> + <!-- SEQ:103, Table:CMCTB_EMP_MDG/JOBGRDNM, Field:ISEXECUT, M/O:, Type:CHAR, Size:1, Description:Executive Indicator --> <xsd:element name="ISEXECUT" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="ORGDEPTNM"> <xsd:sequence> - <!-- SEQ:104, Table:CMCTB_EMP_MDG/ORGDEPTNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (ORGDEPTCD) --> + <!-- SEQ:104, Table:CMCTB_EMP_MDG/ORGDEPTNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (ORGDEPTCD) --> <xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:105, Table:CMCTB_EMP_MDG/ORGDEPTNM, Field:DEPTNM, M/O:, Type:VARC, Size:255, Description:Department Name (ORGDEPTCD) --> + <!-- SEQ:105, Table:CMCTB_EMP_MDG/ORGDEPTNM, Field:DEPTNM, M/O:, Type:CHAR, Size:60, Description:Department Name (ORGDEPTCD) --> <xsd:element name="DEPTNM" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="ORGPDEPNM"> <xsd:sequence> - <!-- SEQ:106, Table:CMCTB_EMP_MDG/ORGPDEPNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (ORGPDEPCD) --> + <!-- SEQ:106, Table:CMCTB_EMP_MDG/ORGPDEPNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (ORGPDEPCD) --> <xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:107, Table:CMCTB_EMP_MDG/ORGPDEPNM, Field:DEPTNM, M/O:, Type:VARC, Size:255, Description:Department Name (ORGPDEPCD) --> + <!-- SEQ:107, Table:CMCTB_EMP_MDG/ORGPDEPNM, Field:DEPTNM, M/O:, Type:CHAR, Size:60, Description:Department Name (ORGPDEPCD) --> <xsd:element name="DEPTNM" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="ORGCOMPNM"> <xsd:sequence> - <!-- SEQ:108, Table:CMCTB_EMP_MDG/ORGCOMPNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (ORGCOMPCD) --> + <!-- SEQ:108, Table:CMCTB_EMP_MDG/ORGCOMPNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (ORGCOMPCD) --> <xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:109, Table:CMCTB_EMP_MDG/ORGCOMPNM, Field:COMPNM, M/O:, Type:VARC, Size:255, Description:Company Name (ORGCOMPCD) --> + <!-- SEQ:109, Table:CMCTB_EMP_MDG/ORGCOMPNM, Field:COMPNM, M/O:, Type:CHAR, Size:60, Description:Company Name (ORGCOMPCD) --> <xsd:element name="COMPNM" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="ORGCORPNM"> <xsd:sequence> - <!-- SEQ:110, Table:CMCTB_EMP_MDG/ORGCORPNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (ORGCORPCD) --> + <!-- SEQ:110, Table:CMCTB_EMP_MDG/ORGCORPNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (ORGCORPCD) --> <xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:111, Table:CMCTB_EMP_MDG/ORGCORPNM, Field:CORPNM, M/O:, Type:VARC, Size:255, Description:Corporate Name (ORGCORPCD) --> + <!-- SEQ:111, Table:CMCTB_EMP_MDG/ORGCORPNM, Field:CORPNM, M/O:, Type:CHAR, Size:60, Description:Corporate Name (ORGCORPCD) --> <xsd:element name="CORPNM" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="ORGBICDNM"> <xsd:sequence> - <!-- SEQ:112, Table:CMCTB_EMP_MDG/ORGBICDNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (ORGBICD) --> + <!-- SEQ:112, Table:CMCTB_EMP_MDG/ORGBICDNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (ORGBICD) --> <xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:113, Table:CMCTB_EMP_MDG/ORGBICDNM, Field:BINM, M/O:, Type:VARC, Size:255, Description:Business Place Name (ORGBICD) --> + <!-- SEQ:113, Table:CMCTB_EMP_MDG/ORGBICDNM, Field:BINM, M/O:, Type:CHAR, Size:60, Description:Business Place Name (ORGBICD) --> <xsd:element name="BINM" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="OKTLNM"> <xsd:sequence> - <!-- SEQ:114, Table:CMCTB_EMP_MDG/OKTLNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (OKTL_EMPL) --> + <!-- SEQ:114, Table:CMCTB_EMP_MDG/OKTLNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (OKTL_EMPL) --> <xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:115, Table:CMCTB_EMP_MDG/OKTLNM, Field:LTEXT, M/O:, Type:VARC, Size:255, Description:Cost Center (OKTL_EMPL) --> + <!-- SEQ:115, Table:CMCTB_EMP_MDG/OKTLNM, Field:LTEXT, M/O:, Type:CHAR, Size:40, Description:Cost Center (OKTL_EMPL) --> <xsd:element name="LTEXT" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="DHJOBGDNM"> <xsd:sequence> - <!-- SEQ:116, Table:CMCTB_EMP_MDG/DHJOBGDNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (DHJOBGDCD) --> + <!-- SEQ:116, Table:CMCTB_EMP_MDG/DHJOBGDNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (DHJOBGDCD) --> <xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:117, Table:CMCTB_EMP_MDG/DHJOBGDNM, Field:JOBGRDNM, M/O:, Type:VARC, Size:255, Description:Job Grade Name (DHJOBGDCD) --> + <!-- SEQ:117, Table:CMCTB_EMP_MDG/DHJOBGDNM, Field:JOBGRDNM, M/O:, Type:CHAR, Size:60, Description:Job Grade Name (DHJOBGDCD) --> <xsd:element name="JOBGRDNM" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="GJOBNM"> <xsd:sequence> - <!-- SEQ:118, Table:CMCTB_EMP_MDG/GJOBNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (GJOBCD) --> + <!-- SEQ:118, Table:CMCTB_EMP_MDG/GJOBNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (GJOBCD) --> <xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/> + <!-- SEQ:119, Table:CMCTB_EMP_MDG/GJOBNM, Field:GJOBNM, M/O:, Type:CHAR, Size:20, Description:Global Job Name --> <xsd:element name="GJOBNM" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="GJOBDUTYNM"> <xsd:sequence> - <!-- SEQ:120, Table:CMCTB_EMP_MDG/GJOBDUTYNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (GJOBDUTYCD) --> + <!-- SEQ:120, Table:CMCTB_EMP_MDG/GJOBDUTYNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (GJOBDUTYCD) --> <xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:121, Table:CMCTB_EMP_MDG/GJOBDUTYNM, Field:GJOBDUTYNM, M/O:, Type:VARC, Size:255, Description:Global Job Duty Name --> + <!-- SEQ:121, Table:CMCTB_EMP_MDG/GJOBDUTYNM, Field:GJOBDUTYNM, M/O:, Type:CHAR, Size:21, Description:Global Job Duty Name --> <xsd:element name="GJOBDUTYNM" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="GJOBGRDNM"> <xsd:sequence> - <!-- SEQ:122, Table:CMCTB_EMP_MDG/GJOBGRDNM, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language Key (GJOBGRDCD) --> + <!-- SEQ:122, Table:CMCTB_EMP_MDG/GJOBGRDNM, Field:SPRAS, M/O:M, Type:CHAR, Size:1, Description:Language Key (GJOBGRDCD) --> <xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:123, Table:CMCTB_EMP_MDG/GJOBGRDNM, Field:GJOBGRDNM, M/O:, Type:VARC, Size:255, Description:Global Job Grade Name --> + <!-- SEQ:123, Table:CMCTB_EMP_MDG/GJOBGRDNM, Field:GJOBGRDNM, M/O:, Type:CHAR, Size:21, Description:Global Job Grade Name --> <xsd:element name="GJOBGRDNM" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="GJOBGRDTYPE"> <xsd:sequence> - <!-- SEQ:124, Table:CMCTB_EMP_MDG/GJOBGRDTYPE, Field:JOBGRDTYPE, M/O:, Type:VARC, Size:255, Description:Job Grade Type --> + <!-- SEQ:124, Table:CMCTB_EMP_MDG/GJOBGRDTYPE, Field:JOBGRDTYPE, M/O:, Type:CHAR, Size:1, Description:Job Grade Type --> <xsd:element name="JOBGRDTYPE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:125, Table:CMCTB_EMP_MDG/GJOBGRDTYPE, Field:ISEXECUT, M/O:, Type:VARC, Size:255, Description:Executive Indicator --> + <!-- SEQ:125, Table:CMCTB_EMP_MDG/GJOBGRDTYPE, Field:ISEXECUT, M/O:, Type:CHAR, Size:1, Description:Executive Indicator --> <xsd:element name="ISEXECUT" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> diff --git a/public/wsdl/IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl b/public/wsdl/IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl index c4d8a78b..4bf85932 100644 --- a/public/wsdl/IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl +++ b/public/wsdl/IF_MDZ_EVCP_EMPLOYEE_REFERENCE_MASTER.wsdl @@ -13,28 +13,28 @@ </xsd:complexType> <xsd:complexType name="CMCTB_EMP_REF_MDG_IF"> <xsd:sequence> - <!-- SEQ:1, Table:CMCTB_EMP_REF_MDG_IF, Field:GRPCD, M/O:M, Type:VARC, Size:255, Description:그룹코드 --> + <!-- SEQ:1, Table:CMCTB_EMP_REF_MDG_IF, Field:GRPCD, M/O:M, Type:VARC, Size:10, Description:그룹코드 --> <xsd:element name="GRPCD" type="xsd:string"/> - <!-- SEQ:2, Table:CMCTB_EMP_REF_MDG_IF, Field:CORPCD, M/O:M, Type:VARC, Size:255, Description:법인코드 --> + <!-- SEQ:2, Table:CMCTB_EMP_REF_MDG_IF, Field:CORPCD, M/O:M, Type:VARC, Size:4, Description:법인코드 --> <xsd:element name="CORPCD" type="xsd:string"/> - <!-- SEQ:3, Table:CMCTB_EMP_REF_MDG_IF, Field:MAINCD, M/O:M, Type:VARC, Size:255, Description:메인코드 --> + <!-- SEQ:3, Table:CMCTB_EMP_REF_MDG_IF, Field:MAINCD, M/O:M, Type:VARC, Size:20, Description:메인코드 --> <xsd:element name="MAINCD" type="xsd:string"/> - <!-- SEQ:4, Table:CMCTB_EMP_REF_MDG_IF, Field:VALIDFROMDT, M/O:, Type:VARC, Size:255, Description:시작유효일자 --> + <!-- SEQ:4, Table:CMCTB_EMP_REF_MDG_IF, Field:VALIDFROMDT, M/O:, Type:VARC, Size:8, Description:시작유효일자 --> <xsd:element name="VALIDFROMDT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:5, Table:CMCTB_EMP_REF_MDG_IF, Field:VALIDTODT, M/O:, Type:VARC, Size:255, Description:종료유효일자 --> + <!-- SEQ:5, Table:CMCTB_EMP_REF_MDG_IF, Field:VALIDTODT, M/O:, Type:VARC, Size:8, Description:종료유효일자 --> <xsd:element name="VALIDTODT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:6, Table:CMCTB_EMP_REF_MDG_IF, Field:ADTL_01, M/O:, Type:VARC, Size:255, Description:추가필드1 --> + <!-- SEQ:6, Table:CMCTB_EMP_REF_MDG_IF, Field:ADTL_01, M/O:, Type:VARC, Size:1, Description:추가필드1 --> <xsd:element name="ADTL_01" type="xsd:string" minOccurs="0"/> - <!-- SEQ:7, Table:CMCTB_EMP_REF_MDG_IF, Field:ADTL_02, M/O:, Type:VARC, Size:255, Description:추가필드2 --> + <!-- SEQ:7, Table:CMCTB_EMP_REF_MDG_IF, Field:ADTL_02, M/O:, Type:VARC, Size:1, Description:추가필드2 --> <xsd:element name="ADTL_02" type="xsd:string" minOccurs="0"/> <xsd:element name="NAME" type="p0:NAME" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="NAME"> <xsd:sequence> - <!-- SEQ:8, Table:CMCTB_EMP_REF_MDG_IF/NAME, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:언어구분 --> + <!-- SEQ:8, Table:CMCTB_EMP_REF_MDG_IF/NAME, Field:SPRAS, M/O:M, Type:VARC, Size:1, Description:언어구분 --> <xsd:element name="SPRAS" type="xsd:string"/> - <!-- SEQ:9, Table:CMCTB_EMP_REF_MDG_IF/NAME, Field:NAME, M/O:, Type:VARC, Size:255, Description:코드명 --> + <!-- SEQ:9, Table:CMCTB_EMP_REF_MDG_IF/NAME, Field:NAME, M/O:, Type:VARC, Size:90, Description:코드명 --> <xsd:element name="NAME" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> diff --git a/public/wsdl/IF_MDZ_EVCP_EQUP_MASTER.wsdl b/public/wsdl/IF_MDZ_EVCP_EQUP_MASTER.wsdl index 978b3706..efc92dda 100644 --- a/public/wsdl/IF_MDZ_EVCP_EQUP_MASTER.wsdl +++ b/public/wsdl/IF_MDZ_EVCP_EQUP_MASTER.wsdl @@ -13,77 +13,77 @@ </xsd:complexType> <xsd:complexType name="MATL"> <xsd:sequence> - <!-- SEQ:1, Table:MATL, Field:MATNR, M/O:, Type:VARC, Size:255, Description:Material Number --> + <!-- SEQ:1, Table:MATL, Field:MATNR, M/O:, Type:CHAR, Size:18, Description:Material Number --> <xsd:element name="MATNR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:2, Table:MATL, Field:MBRSH, M/O:, Type:VARC, Size:255, Description:Industry sector --> + <!-- SEQ:2, Table:MATL, Field:MBRSH, M/O:, Type:CHAR, Size:1, Description:Industry sector --> <xsd:element name="MBRSH" type="xsd:string" minOccurs="0"/> - <!-- SEQ:3, Table:MATL, Field:MTART, M/O:, Type:VARC, Size:255, Description:Material Type --> + <!-- SEQ:3, Table:MATL, Field:MTART, M/O:, Type:CHAR, Size:4, Description:Material Type --> <xsd:element name="MTART" type="xsd:string" minOccurs="0"/> - <!-- SEQ:4, Table:MATL, Field:LVORM, M/O:, Type:VARC, Size:255, Description:Deletion flag --> + <!-- SEQ:4, Table:MATL, Field:LVORM, M/O:, Type:CHAR, Size:1, Description:Deletion flag --> <xsd:element name="LVORM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:5, Table:MATL, Field:MEINS, M/O:, Type:VARC, Size:255, Description:Base Unit of Measure --> + <!-- SEQ:5, Table:MATL, Field:MEINS, M/O:, Type:UNIT, Size:3, Description:Base Unit of Measure --> <xsd:element name="MEINS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:6, Table:MATL, Field:MATKL, M/O:, Type:VARC, Size:255, Description:Material Group --> + <!-- SEQ:6, Table:MATL, Field:MATKL, M/O:, Type:CHAR, Size:9, Description:Material Group --> <xsd:element name="MATKL" type="xsd:string" minOccurs="0"/> - <!-- SEQ:7, Table:MATL, Field:BISMT, M/O:, Type:VARC, Size:255, Description:Old material number --> + <!-- SEQ:7, Table:MATL, Field:BISMT, M/O:, Type:CHAR, Size:18, Description:Old material number --> <xsd:element name="BISMT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:8, Table:MATL, Field:SPART, M/O:, Type:VARC, Size:255, Description:Division --> + <!-- SEQ:8, Table:MATL, Field:SPART, M/O:, Type:CHAR, Size:2, Description:Division --> <xsd:element name="SPART" type="xsd:string" minOccurs="0"/> - <!-- SEQ:9, Table:MATL, Field:PRDHA, M/O:, Type:VARC, Size:255, Description:Product hierarchy --> + <!-- SEQ:9, Table:MATL, Field:PRDHA, M/O:, Type:CHAR, Size:18, Description:Product hierarchy --> <xsd:element name="PRDHA" type="xsd:string" minOccurs="0"/> - <!-- SEQ:10, Table:MATL, Field:MSTAE, M/O:, Type:VARC, Size:255, Description:Material Status --> + <!-- SEQ:10, Table:MATL, Field:MSTAE, M/O:, Type:CHAR, Size:2, Description:Material Status --> <xsd:element name="MSTAE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:11, Table:MATL, Field:MSTDE, M/O:, Type:VARC, Size:255, Description:Date from which the cross-plant material status is --> + <!-- SEQ:11, Table:MATL, Field:MSTDE, M/O:, Type:CHAR, Size:2, Description:Date from which the cross-plant material status is --> <xsd:element name="MSTDE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:12, Table:MATL, Field:BRGEW, M/O:, Type:VARC, Size:255, Description:Gross Weight --> + <!-- SEQ:12, Table:MATL, Field:BRGEW, M/O:, Type:QUAN, Size:13, Description:Gross Weight --> <xsd:element name="BRGEW" type="xsd:string" minOccurs="0"/> - <!-- SEQ:13, Table:MATL, Field:GEWEI, M/O:, Type:VARC, Size:255, Description:Weight Unit --> + <!-- SEQ:13, Table:MATL, Field:GEWEI, M/O:, Type:UNIT, Size:3, Description:Weight Unit --> <xsd:element name="GEWEI" type="xsd:string" minOccurs="0"/> - <!-- SEQ:14, Table:MATL, Field:NTGEW, M/O:, Type:VARC, Size:255, Description:Net Weight --> + <!-- SEQ:14, Table:MATL, Field:NTGEW, M/O:, Type:QUAN, Size:13, Description:Net Weight --> <xsd:element name="NTGEW" type="xsd:string" minOccurs="0"/> - <!-- SEQ:15, Table:MATL, Field:VOLUM, M/O:, Type:VARC, Size:255, Description:Volume --> + <!-- SEQ:15, Table:MATL, Field:VOLUM, M/O:, Type:QUAN, Size:13,3, Description:Volume --> <xsd:element name="VOLUM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:16, Table:MATL, Field:VOLEH, M/O:, Type:VARC, Size:255, Description:Volume unit --> + <!-- SEQ:16, Table:MATL, Field:VOLEH, M/O:, Type:UNIT, Size:3, Description:Volume unit --> <xsd:element name="VOLEH" type="xsd:string" minOccurs="0"/> - <!-- SEQ:17, Table:MATL, Field:GROES, M/O:, Type:VARC, Size:255, Description:Size/dimensions --> + <!-- SEQ:17, Table:MATL, Field:GROES, M/O:, Type:CHAR, Size:32, Description:Size/dimensions --> <xsd:element name="GROES" type="xsd:string" minOccurs="0"/> - <!-- SEQ:18, Table:MATL, Field:LAENG, M/O:, Type:VARC, Size:255, Description:Length --> + <!-- SEQ:18, Table:MATL, Field:LAENG, M/O:, Type:QUAN, Size:13,1, Description:Length --> <xsd:element name="LAENG" type="xsd:string" minOccurs="0"/> - <!-- SEQ:19, Table:MATL, Field:BREIT, M/O:, Type:VARC, Size:255, Description:Width --> + <!-- SEQ:19, Table:MATL, Field:BREIT, M/O:, Type:QUAN, Size:13,1, Description:Width --> <xsd:element name="BREIT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:20, Table:MATL, Field:HOEHE, M/O:, Type:VARC, Size:255, Description:Height --> + <!-- SEQ:20, Table:MATL, Field:HOEHE, M/O:, Type:QUAN, Size:13,1, Description:Height --> <xsd:element name="HOEHE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:21, Table:MATL, Field:MEABM, M/O:, Type:VARC, Size:255, Description:Unit of Dimension for Length/Width/Height --> + <!-- SEQ:21, Table:MATL, Field:MEABM, M/O:, Type:UNIT, Size:3, Description:Unit of Dimension for Length/Width/Height --> <xsd:element name="MEABM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:22, Table:MATL, Field:MAGRV, M/O:, Type:VARC, Size:255, Description:Material Group: Packaging Materials --> + <!-- SEQ:22, Table:MATL, Field:MAGRV, M/O:, Type:CHAR, Size:4, Description:Material Group: Packaging Materials --> <xsd:element name="MAGRV" type="xsd:string" minOccurs="0"/> - <!-- SEQ:23, Table:MATL, Field:VHART, M/O:, Type:VARC, Size:255, Description:Packaging Material Type --> + <!-- SEQ:23, Table:MATL, Field:VHART, M/O:, Type:CHAR, Size:4, Description:Packaging Material Type --> <xsd:element name="VHART" type="xsd:string" minOccurs="0"/> - <!-- SEQ:24, Table:MATL, Field:ZZNAME, M/O:, Type:VARC, Size:255, Description:Material Name --> + <!-- SEQ:24, Table:MATL, Field:ZZNAME, M/O:, Type:CHAR, Size:40, Description:Material Name --> <xsd:element name="ZZNAME" type="xsd:string" minOccurs="0"/> - <!-- SEQ:25, Table:MATL, Field:ZZSPEC, M/O:, Type:VARC, Size:255, Description:Specification --> + <!-- SEQ:25, Table:MATL, Field:ZZSPEC, M/O:, Type:CHAR, Size:255, Description:Specification --> <xsd:element name="ZZSPEC" type="xsd:string" minOccurs="0"/> - <!-- SEQ:26, Table:MATL, Field:ZZDESC, M/O:, Type:VARC, Size:255, Description:Description --> + <!-- SEQ:26, Table:MATL, Field:ZZDESC, M/O:, Type:CHAR, Size:255, Description:Description --> <xsd:element name="ZZDESC" type="xsd:string" minOccurs="0"/> - <!-- SEQ:27, Table:MATL, Field:ZZREGDT, M/O:, Type:VARC, Size:255, Description:Registered Date --> + <!-- SEQ:27, Table:MATL, Field:ZZREGDT, M/O:, Type:DATS, Size:8, Description:Registered Date --> <xsd:element name="ZZREGDT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:28, Table:MATL, Field:ZZREGTM, M/O:, Type:VARC, Size:255, Description:Registered Time --> + <!-- SEQ:28, Table:MATL, Field:ZZREGTM, M/O:, Type:TIMS, Size:6, Description:Registered Time --> <xsd:element name="ZZREGTM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:29, Table:MATL, Field:ZZREGUS, M/O:, Type:VARC, Size:255, Description:Registered User --> + <!-- SEQ:29, Table:MATL, Field:ZZREGUS, M/O:, Type:CHAR, Size:12, Description:Registered User --> <xsd:element name="ZZREGUS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:30, Table:MATL, Field:ZZAPPDT, M/O:, Type:VARC, Size:255, Description:Approval Date --> + <!-- SEQ:30, Table:MATL, Field:ZZAPPDT, M/O:, Type:DATS, Size:8, Description:Approval Date --> <xsd:element name="ZZAPPDT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:31, Table:MATL, Field:ZZAPPTM, M/O:, Type:VARC, Size:255, Description:Approval Time --> + <!-- SEQ:31, Table:MATL, Field:ZZAPPTM, M/O:, Type:TIMS, Size:6, Description:Approval Time --> <xsd:element name="ZZAPPTM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:32, Table:MATL, Field:ZZAPPUS, M/O:, Type:VARC, Size:255, Description:Approval User --> + <!-- SEQ:32, Table:MATL, Field:ZZAPPUS, M/O:, Type:CHAR, Size:12, Description:Approval User --> <xsd:element name="ZZAPPUS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:33, Table:MATL, Field:ZZLAMDT, M/O:, Type:VARC, Size:255, Description:Last Modified Date --> + <!-- SEQ:33, Table:MATL, Field:ZZLAMDT, M/O:, Type:DATS, Size:8, Description:Last Modified Date --> <xsd:element name="ZZLAMDT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:34, Table:MATL, Field:ZZLAMTM, M/O:, Type:VARC, Size:255, Description:Last Modified Time --> + <!-- SEQ:34, Table:MATL, Field:ZZLAMTM, M/O:, Type:TIMS, Size:6, Description:Last Modified Time --> <xsd:element name="ZZLAMTM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:35, Table:MATL, Field:ZZLAMUS, M/O:, Type:VARC, Size:255, Description:Last Modified User --> + <!-- SEQ:35, Table:MATL, Field:ZZLAMUS, M/O:, Type:CHAR, Size:12, Description:Last Modified User --> <xsd:element name="ZZLAMUS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:36, Table:MATL, Field:ZZPRFLG, M/O:, Type:VARC, Size:255, Description:CRUD Status --> + <!-- SEQ:36, Table:MATL, Field:ZZPRFLG, M/O:, Type:CHAR, Size:1, Description:CRUD Status --> <xsd:element name="ZZPRFLG" type="xsd:string" minOccurs="0"/> <xsd:element name="DESC" type="p0:DESC" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="PLNT" type="p0:PLNT" minOccurs="0" maxOccurs="unbounded"/> @@ -94,105 +94,105 @@ </xsd:complexType> <xsd:complexType name="DESC"> <xsd:sequence> - <!-- SEQ:37, Table:MATL/DESC, Field:MATNR, M/O:, Type:VARC, Size:255, Description:Material Number --> + <!-- SEQ:37, Table:MATL/DESC, Field:MATNR, M/O:, Type:CHAR, Size:18, Description:Material Number --> <xsd:element name="MATNR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:38, Table:MATL/DESC, Field:SPRAS, M/O:, Type:VARC, Size:255, Description:Language --> + <!-- SEQ:38, Table:MATL/DESC, Field:SPRAS, M/O:, Type:CHAR, Size:1, Description:Language --> <xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:39, Table:MATL/DESC, Field:MAKTX, M/O:, Type:VARC, Size:255, Description:Material Description (Short Text) --> + <!-- SEQ:39, Table:MATL/DESC, Field:MAKTX, M/O:, Type:CHAR, Size:40, Description:Material Description (Short Text) --> <xsd:element name="MAKTX" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="PLNT"> <xsd:sequence> - <!-- SEQ:40, Table:MATL/PLNT, Field:MATNR, M/O:, Type:VARC, Size:255, Description:Material Number --> + <!-- SEQ:40, Table:MATL/PLNT, Field:MATNR, M/O:, Type:CHAR, Size:18, Description:Material Number --> <xsd:element name="MATNR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:41, Table:MATL/PLNT, Field:WERKS, M/O:, Type:VARC, Size:255, Description:Plant --> + <!-- SEQ:41, Table:MATL/PLNT, Field:WERKS, M/O:, Type:CHAR, Size:4, Description:Plant --> <xsd:element name="WERKS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:42, Table:MATL/PLNT, Field:LVORM, M/O:, Type:VARC, Size:255, Description:Deletion Flag --> + <!-- SEQ:42, Table:MATL/PLNT, Field:LVORM, M/O:, Type:CHAR, Size:4, Description:Deletion Flag --> <xsd:element name="LVORM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:43, Table:MATL/PLNT, Field:MMSTA, M/O:, Type:VARC, Size:255, Description:Plant-Specific Material Status --> + <!-- SEQ:43, Table:MATL/PLNT, Field:MMSTA, M/O:, Type:CHAR, Size:2, Description:Plant-Specific Material Status --> <xsd:element name="MMSTA" type="xsd:string" minOccurs="0"/> - <!-- SEQ:44, Table:MATL/PLNT, Field:MMSTD, M/O:, Type:VARC, Size:255, Description:Date from which the plant-specific material status --> + <!-- SEQ:44, Table:MATL/PLNT, Field:MMSTD, M/O:, Type:DATS, Size:8, Description:Date from which the plant-specific material status --> <xsd:element name="MMSTD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:45, Table:MATL/PLNT, Field:ZZMTARP, M/O:, Type:VARC, Size:255, Description:Plant Material Type --> + <!-- SEQ:45, Table:MATL/PLNT, Field:ZZMTARP, M/O:, Type:CHAR, Size:4, Description:Plant Material Type --> <xsd:element name="ZZMTARP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:46, Table:MATL/PLNT, Field:ZZREGDT, M/O:, Type:VARC, Size:255, Description:Registered Date --> + <!-- SEQ:46, Table:MATL/PLNT, Field:ZZREGDT, M/O:, Type:DATS, Size:8, Description:Registered Date --> <xsd:element name="ZZREGDT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:47, Table:MATL/PLNT, Field:ZZREGTM, M/O:, Type:VARC, Size:255, Description:Registered Time --> + <!-- SEQ:47, Table:MATL/PLNT, Field:ZZREGTM, M/O:, Type:TIMS, Size:6, Description:Registered Time --> <xsd:element name="ZZREGTM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:48, Table:MATL/PLNT, Field:ZZREGUS, M/O:, Type:VARC, Size:255, Description:Registered User --> + <!-- SEQ:48, Table:MATL/PLNT, Field:ZZREGUS, M/O:, Type:CHAR, Size:12, Description:Registered User --> <xsd:element name="ZZREGUS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:49, Table:MATL/PLNT, Field:ZZLAMDT, M/O:, Type:VARC, Size:255, Description:Last Modified Date --> + <!-- SEQ:49, Table:MATL/PLNT, Field:ZZLAMDT, M/O:, Type:DATS, Size:8, Description:Last Modified Date --> <xsd:element name="ZZLAMDT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:50, Table:MATL/PLNT, Field:ZZLAMTM, M/O:, Type:VARC, Size:255, Description:Last Modified Time --> + <!-- SEQ:50, Table:MATL/PLNT, Field:ZZLAMTM, M/O:, Type:TIMS, Size:6, Description:Last Modified Time --> <xsd:element name="ZZLAMTM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:51, Table:MATL/PLNT, Field:ZZLAMUS, M/O:, Type:VARC, Size:255, Description:Last Modified User --> + <!-- SEQ:51, Table:MATL/PLNT, Field:ZZLAMUS, M/O:, Type:CHAR, Size:12, Description:Last Modified User --> <xsd:element name="ZZLAMUS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:52, Table:MATL/PLNT, Field:ZZPRFLG, M/O:, Type:VARC, Size:255, Description:CRUD Status --> + <!-- SEQ:52, Table:MATL/PLNT, Field:ZZPRFLG, M/O:, Type:CHAR, Size:1, Description:CRUD Status --> <xsd:element name="ZZPRFLG" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="UNIT"> <xsd:sequence> - <!-- SEQ:53, Table:MATL/UNIT, Field:MATNR, M/O:, Type:VARC, Size:255, Description:Matrial Number --> + <!-- SEQ:53, Table:MATL/UNIT, Field:MATNR, M/O:, Type:CHAR, Size:18, Description:Matrial Number --> <xsd:element name="MATNR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:54, Table:MATL/UNIT, Field:MEINH, M/O:, Type:VARC, Size:255, Description:AlternativeUnit --> + <!-- SEQ:54, Table:MATL/UNIT, Field:MEINH, M/O:, Type:UNIT, Size:3, Description:AlternativeUnit --> <xsd:element name="MEINH" type="xsd:string" minOccurs="0"/> - <!-- SEQ:55, Table:MATL/UNIT, Field:UMREZ, M/O:, Type:VARC, Size:255, Description:Numerator --> + <!-- SEQ:55, Table:MATL/UNIT, Field:UMREZ, M/O:, Type:DEC, Size:5, Description:Numerator --> <xsd:element name="UMREZ" type="xsd:string" minOccurs="0"/> - <!-- SEQ:56, Table:MATL/UNIT, Field:UMREN, M/O:, Type:VARC, Size:255, Description:Denominator --> + <!-- SEQ:56, Table:MATL/UNIT, Field:UMREN, M/O:, Type:DEC, Size:5, Description:Denominator --> <xsd:element name="UMREN" type="xsd:string" minOccurs="0"/> - <!-- SEQ:57, Table:MATL/UNIT, Field:LAENG, M/O:, Type:VARC, Size:255, Description:Length --> + <!-- SEQ:57, Table:MATL/UNIT, Field:LAENG, M/O:, Type:QUAN, Size:13,3, Description:Length --> <xsd:element name="LAENG" type="xsd:string" minOccurs="0"/> - <!-- SEQ:58, Table:MATL/UNIT, Field:BREIT, M/O:, Type:VARC, Size:255, Description:Width --> + <!-- SEQ:58, Table:MATL/UNIT, Field:BREIT, M/O:, Type:QUAN, Size:13,3, Description:Width --> <xsd:element name="BREIT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:59, Table:MATL/UNIT, Field:HOEHE, M/O:, Type:VARC, Size:255, Description:Height --> + <!-- SEQ:59, Table:MATL/UNIT, Field:HOEHE, M/O:, Type:QUAN, Size:13,3, Description:Height --> <xsd:element name="HOEHE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:60, Table:MATL/UNIT, Field:MEABM, M/O:, Type:VARC, Size:255, Description:Unit --> + <!-- SEQ:60, Table:MATL/UNIT, Field:MEABM, M/O:, Type:UNIT, Size:3, Description:Unit --> <xsd:element name="MEABM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:61, Table:MATL/UNIT, Field:VOLEH, M/O:, Type:VARC, Size:255, Description:Volume Unit --> + <!-- SEQ:61, Table:MATL/UNIT, Field:VOLEH, M/O:, Type:UNIT, Size:3, Description:Volume Unit --> <xsd:element name="VOLEH" type="xsd:string" minOccurs="0"/> - <!-- SEQ:62, Table:MATL/UNIT, Field:VOLUM, M/O:, Type:VARC, Size:255, Description:Volume --> + <!-- SEQ:62, Table:MATL/UNIT, Field:VOLUM, M/O:, Type:QUAN, Size:13,3, Description:Volume --> <xsd:element name="VOLUM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:63, Table:MATL/UNIT, Field:BRGEW, M/O:, Type:VARC, Size:255, Description:Gross weight --> + <!-- SEQ:63, Table:MATL/UNIT, Field:BRGEW, M/O:, Type:QUAN, Size:13,3, Description:Gross weight --> <xsd:element name="BRGEW" type="xsd:string" minOccurs="0"/> - <!-- SEQ:64, Table:MATL/UNIT, Field:GEWEI, M/O:, Type:VARC, Size:255, Description:Weight Unit --> + <!-- SEQ:64, Table:MATL/UNIT, Field:GEWEI, M/O:, Type:UNIT, Size:3, Description:Weight Unit --> <xsd:element name="GEWEI" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="CLASSASGN"> <xsd:sequence> - <!-- SEQ:65, Table:MATL/CLASSASGN, Field:MATNR, M/O:, Type:VARC, Size:255, Description:Material Number --> + <!-- SEQ:65, Table:MATL/CLASSASGN, Field:MATNR, M/O:, Type:CHAR, Size:18, Description:Material Number --> <xsd:element name="MATNR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:66, Table:MATL/CLASSASGN, Field:CLASS, M/O:, Type:VARC, Size:255, Description:Class number --> + <!-- SEQ:66, Table:MATL/CLASSASGN, Field:CLASS, M/O:, Type:CHAR, Size:18, Description:Class number --> <xsd:element name="CLASS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:67, Table:MATL/CLASSASGN, Field:KLART, M/O:, Type:VARC, Size:255, Description:Class Type --> + <!-- SEQ:67, Table:MATL/CLASSASGN, Field:KLART, M/O:, Type:CHAR, Size:3, Description:Class Type --> <xsd:element name="KLART" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="CHARASGN"> <xsd:sequence> - <!-- SEQ:68, Table:MATL/CHARASGN, Field:MATNR, M/O:, Type:VARC, Size:255, Description:Material Number --> + <!-- SEQ:68, Table:MATL/CHARASGN, Field:MATNR, M/O:, Type:CHAR, Size:18, Description:Material Number --> <xsd:element name="MATNR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:69, Table:MATL/CHARASGN, Field:CLASS, M/O:, Type:VARC, Size:255, Description:Class number --> + <!-- SEQ:69, Table:MATL/CHARASGN, Field:CLASS, M/O:, Type:CHAR, Size:18, Description:Class number --> <xsd:element name="CLASS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:70, Table:MATL/CHARASGN, Field:KLART, M/O:, Type:VARC, Size:255, Description:Class Type --> + <!-- SEQ:70, Table:MATL/CHARASGN, Field:KLART, M/O:, Type:CHAR, Size:3, Description:Class Type --> <xsd:element name="KLART" type="xsd:string" minOccurs="0"/> - <!-- SEQ:71, Table:MATL/CHARASGN, Field:ATNAM, M/O:, Type:VARC, Size:255, Description:Characteristic Name --> + <!-- SEQ:71, Table:MATL/CHARASGN, Field:ATNAM, M/O:, Type:CHAR, Size:30, Description:Characteristic Name --> <xsd:element name="ATNAM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:72, Table:MATL/CHARASGN, Field:ATWRT, M/O:, Type:VARC, Size:255, Description:Characteristic Value --> + <!-- SEQ:72, Table:MATL/CHARASGN, Field:ATWRT, M/O:, Type:CHAR, Size:30, Description:Characteristic Value --> <xsd:element name="ATWRT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:73, Table:MATL/CHARASGN, Field:ATFLV, M/O:, Type:VARC, Size:255, Description:Internal floating point from --> + <!-- SEQ:73, Table:MATL/CHARASGN, Field:ATFLV, M/O:, Type:FLTP, Size:16, Description:Internal floating point from --> <xsd:element name="ATFLV" type="xsd:string" minOccurs="0"/> - <!-- SEQ:74, Table:MATL/CHARASGN, Field:ATAWE, M/O:, Type:VARC, Size:255, Description:Unit of Measurement --> + <!-- SEQ:74, Table:MATL/CHARASGN, Field:ATAWE, M/O:, Type:UNIT, Size:3, Description:Unit of Measurement --> <xsd:element name="ATAWE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:75, Table:MATL/CHARASGN, Field:ATFLB, M/O:, Type:VARC, Size:255, Description:Internal floating point value to --> + <!-- SEQ:75, Table:MATL/CHARASGN, Field:ATFLB, M/O:, Type:FLTP, Size:16, Description:Internal floating point value to --> <xsd:element name="ATFLB" type="xsd:string" minOccurs="0"/> - <!-- SEQ:76, Table:MATL/CHARASGN, Field:ATAW1, M/O:, Type:VARC, Size:255, Description:Unit of Measurement --> + <!-- SEQ:76, Table:MATL/CHARASGN, Field:ATAW1, M/O:, Type:UNIT, Size:3, Description:Unit of Measurement --> <xsd:element name="ATAW1" type="xsd:string" minOccurs="0"/> - <!-- SEQ:77, Table:MATL/CHARASGN, Field:ATBEZ, M/O:, Type:VARC, Size:255, Description:특성내역 --> + <!-- SEQ:77, Table:MATL/CHARASGN, Field:ATBEZ, M/O:, Type:VARC, Size:30, Description:특성내역 --> <xsd:element name="ATBEZ" type="xsd:string" minOccurs="0"/> - <!-- SEQ:78, Table:MATL/CHARASGN, Field:ATWTB, M/O:, Type:VARC, Size:255, Description:특성값내역 --> + <!-- SEQ:78, Table:MATL/CHARASGN, Field:ATWTB, M/O:, Type:VARC, Size:30, Description:특성값내역 --> <xsd:element name="ATWTB" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> diff --git a/public/wsdl/IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl b/public/wsdl/IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl index 0a7b7f02..a3de05a6 100644 --- a/public/wsdl/IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl +++ b/public/wsdl/IF_MDZ_EVCP_MATERIAL_MASTER_PART.wsdl @@ -13,105 +13,105 @@ </xsd:complexType> <xsd:complexType name="MATL"> <xsd:sequence> - <!-- SEQ:1, Table:MATL, Field:MATNR, M/O:M, Type:VARC, Size:255, Description:Material Number --> + <!-- SEQ:1, Table:MATL, Field:MATNR, M/O:M, Type:VARC, Size:18, Description:Material Number --> <xsd:element name="MATNR" type="xsd:string"/> - <!-- SEQ:2, Table:MATL, Field:MBRSH, M/O:, Type:VARC, Size:255, Description:Industry sector --> + <!-- SEQ:2, Table:MATL, Field:MBRSH, M/O:, Type:VARC, Size:1, Description:Industry sector --> <xsd:element name="MBRSH" type="xsd:string" minOccurs="0"/> - <!-- SEQ:3, Table:MATL, Field:MTART, M/O:, Type:VARC, Size:255, Description:Material Type --> + <!-- SEQ:3, Table:MATL, Field:MTART, M/O:, Type:VARC, Size:4, Description:Material Type --> <xsd:element name="MTART" type="xsd:string" minOccurs="0"/> - <!-- SEQ:4, Table:MATL, Field:LVORM, M/O:, Type:VARC, Size:255, Description:Deletion flag --> + <!-- SEQ:4, Table:MATL, Field:LVORM, M/O:, Type:VARC, Size:1, Description:Deletion flag --> <xsd:element name="LVORM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:5, Table:MATL, Field:MEINS, M/O:, Type:VARC, Size:255, Description:Base Unit of Measure --> + <!-- SEQ:5, Table:MATL, Field:MEINS, M/O:, Type:VARC, Size:3, Description:Base Unit of Measure --> <xsd:element name="MEINS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:6, Table:MATL, Field:MATKL, M/O:, Type:VARC, Size:255, Description:Material Group --> + <!-- SEQ:6, Table:MATL, Field:MATKL, M/O:, Type:VARC, Size:9, Description:Material Group --> <xsd:element name="MATKL" type="xsd:string" minOccurs="0"/> - <!-- SEQ:7, Table:MATL, Field:BISMT, M/O:, Type:VARC, Size:255, Description:Old material number --> + <!-- SEQ:7, Table:MATL, Field:BISMT, M/O:, Type:VARC, Size:18, Description:Old material number --> <xsd:element name="BISMT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:8, Table:MATL, Field:SPART, M/O:, Type:VARC, Size:255, Description:Division --> + <!-- SEQ:8, Table:MATL, Field:SPART, M/O:, Type:VARC, Size:2, Description:Division --> <xsd:element name="SPART" type="xsd:string" minOccurs="0"/> - <!-- SEQ:9, Table:MATL, Field:PRDHA, M/O:, Type:VARC, Size:255, Description:Product hierarchy --> + <!-- SEQ:9, Table:MATL, Field:PRDHA, M/O:, Type:VARC, Size:18, Description:Product hierarchy --> <xsd:element name="PRDHA" type="xsd:string" minOccurs="0"/> - <!-- SEQ:10, Table:MATL, Field:MSTAE, M/O:, Type:VARC, Size:255, Description:Material Status --> + <!-- SEQ:10, Table:MATL, Field:MSTAE, M/O:, Type:VARC, Size:2, Description:Material Status --> <xsd:element name="MSTAE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:11, Table:MATL, Field:MSTDE, M/O:, Type:VARC, Size:255, Description:Date from which the cross-plant material status is --> + <!-- SEQ:11, Table:MATL, Field:MSTDE, M/O:, Type:VARC, Size:2, Description:Date from which the cross-plant material status is --> <xsd:element name="MSTDE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:12, Table:MATL, Field:BRGEW, M/O:, Type:VARC, Size:255, Description:Gross Weight --> + <!-- SEQ:12, Table:MATL, Field:BRGEW, M/O:, Type:NUMB, Size:13, Description:Gross Weight --> <xsd:element name="BRGEW" type="xsd:string" minOccurs="0"/> - <!-- SEQ:13, Table:MATL, Field:GEWEI, M/O:, Type:VARC, Size:255, Description:Weight Unit --> + <!-- SEQ:13, Table:MATL, Field:GEWEI, M/O:, Type:VARC, Size:3, Description:Weight Unit --> <xsd:element name="GEWEI" type="xsd:string" minOccurs="0"/> - <!-- SEQ:14, Table:MATL, Field:NTGEW, M/O:, Type:VARC, Size:255, Description:Net Weight --> + <!-- SEQ:14, Table:MATL, Field:NTGEW, M/O:, Type:NUMB, Size:13, Description:Net Weight --> <xsd:element name="NTGEW" type="xsd:string" minOccurs="0"/> - <!-- SEQ:15, Table:MATL, Field:VOLUM, M/O:, Type:VARC, Size:255, Description:Volume --> + <!-- SEQ:15, Table:MATL, Field:VOLUM, M/O:, Type:NUMB, Size:13,3, Description:Volume --> <xsd:element name="VOLUM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:16, Table:MATL, Field:VOLEH, M/O:, Type:VARC, Size:255, Description:Volume unit --> + <!-- SEQ:16, Table:MATL, Field:VOLEH, M/O:, Type:VARC, Size:3, Description:Volume unit --> <xsd:element name="VOLEH" type="xsd:string" minOccurs="0"/> - <!-- SEQ:17, Table:MATL, Field:GROES, M/O:, Type:VARC, Size:255, Description:Size/dimensions --> + <!-- SEQ:17, Table:MATL, Field:GROES, M/O:, Type:VARC, Size:32, Description:Size/dimensions --> <xsd:element name="GROES" type="xsd:string" minOccurs="0"/> - <!-- SEQ:18, Table:MATL, Field:LAENG, M/O:, Type:VARC, Size:255, Description:Length --> + <!-- SEQ:18, Table:MATL, Field:LAENG, M/O:, Type:NUMB, Size:13,1, Description:Length --> <xsd:element name="LAENG" type="xsd:string" minOccurs="0"/> - <!-- SEQ:19, Table:MATL, Field:BREIT, M/O:, Type:VARC, Size:255, Description:Width --> + <!-- SEQ:19, Table:MATL, Field:BREIT, M/O:, Type:NUMB, Size:13,1, Description:Width --> <xsd:element name="BREIT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:20, Table:MATL, Field:HOEHE, M/O:, Type:VARC, Size:255, Description:Height --> + <!-- SEQ:20, Table:MATL, Field:HOEHE, M/O:, Type:NUMB, Size:13,1, Description:Height --> <xsd:element name="HOEHE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:21, Table:MATL, Field:MEABM, M/O:, Type:VARC, Size:255, Description:Unit of Dimension for Length/Width/Height --> + <!-- SEQ:21, Table:MATL, Field:MEABM, M/O:, Type:VARC, Size:3, Description:Unit of Dimension for Length/Width/Height --> <xsd:element name="MEABM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:22, Table:MATL, Field:MAGRV, M/O:, Type:VARC, Size:255, Description:Material Group: Packaging Materials --> + <!-- SEQ:22, Table:MATL, Field:MAGRV, M/O:, Type:VARC, Size:4, Description:Material Group: Packaging Materials --> <xsd:element name="MAGRV" type="xsd:string" minOccurs="0"/> - <!-- SEQ:23, Table:MATL, Field:VHART, M/O:, Type:VARC, Size:255, Description:Packaging Material Type --> + <!-- SEQ:23, Table:MATL, Field:VHART, M/O:, Type:VARC, Size:4, Description:Packaging Material Type --> <xsd:element name="VHART" type="xsd:string" minOccurs="0"/> - <!-- SEQ:24, Table:MATL, Field:ZZSMID, M/O:, Type:VARC, Size:255, Description:SM ID --> + <!-- SEQ:24, Table:MATL, Field:ZZSMID, M/O:, Type:VARC, Size:18, Description:SM ID --> <xsd:element name="ZZSMID" type="xsd:string" minOccurs="0"/> - <!-- SEQ:25, Table:MATL, Field:ZZMRC, M/O:, Type:VARC, Size:255, Description:MRC --> + <!-- SEQ:25, Table:MATL, Field:ZZMRC, M/O:, Type:VARC, Size:1, Description:MRC --> <xsd:element name="ZZMRC" type="xsd:string" minOccurs="0"/> - <!-- SEQ:26, Table:MATL, Field:ZZNAME, M/O:, Type:VARC, Size:255, Description:Material Name --> + <!-- SEQ:26, Table:MATL, Field:ZZNAME, M/O:, Type:VARC, Size:40, Description:Material Name --> <xsd:element name="ZZNAME" type="xsd:string" minOccurs="0"/> <!-- SEQ:27, Table:MATL, Field:ZZSPEC, M/O:, Type:VARC, Size:255, Description:Specification --> <xsd:element name="ZZSPEC" type="xsd:string" minOccurs="0"/> <!-- SEQ:28, Table:MATL, Field:ZZDESC, M/O:, Type:VARC, Size:255, Description:Description --> <xsd:element name="ZZDESC" type="xsd:string" minOccurs="0"/> - <!-- SEQ:29, Table:MATL, Field:ZZMMTYP, M/O:, Type:VARC, Size:255, Description:Material Master Type --> + <!-- SEQ:29, Table:MATL, Field:ZZMMTYP, M/O:, Type:VARC, Size:1, Description:Material Master Type --> <xsd:element name="ZZMMTYP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:30, Table:MATL, Field:ZZREGDT, M/O:, Type:VARC, Size:255, Description:Registered Date --> + <!-- SEQ:30, Table:MATL, Field:ZZREGDT, M/O:, Type:VARC, Size:8, Description:Registered Date --> <xsd:element name="ZZREGDT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:31, Table:MATL, Field:ZZREGTM, M/O:, Type:VARC, Size:255, Description:Registered Time --> + <!-- SEQ:31, Table:MATL, Field:ZZREGTM, M/O:, Type:VARC, Size:6, Description:Registered Time --> <xsd:element name="ZZREGTM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:32, Table:MATL, Field:ZZREGUS, M/O:, Type:VARC, Size:255, Description:Registered User --> + <!-- SEQ:32, Table:MATL, Field:ZZREGUS, M/O:, Type:VARC, Size:12, Description:Registered User --> <xsd:element name="ZZREGUS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:33, Table:MATL, Field:ZZAPPDT, M/O:, Type:VARC, Size:255, Description:Approval Date --> + <!-- SEQ:33, Table:MATL, Field:ZZAPPDT, M/O:, Type:VARC, Size:8, Description:Approval Date --> <xsd:element name="ZZAPPDT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:34, Table:MATL, Field:ZZAPPTM, M/O:, Type:VARC, Size:255, Description:Approval Time --> + <!-- SEQ:34, Table:MATL, Field:ZZAPPTM, M/O:, Type:VARC, Size:6, Description:Approval Time --> <xsd:element name="ZZAPPTM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:35, Table:MATL, Field:ZZAPPUS, M/O:, Type:VARC, Size:255, Description:Approval User --> + <!-- SEQ:35, Table:MATL, Field:ZZAPPUS, M/O:, Type:VARC, Size:12, Description:Approval User --> <xsd:element name="ZZAPPUS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:36, Table:MATL, Field:ZZLAMDT, M/O:, Type:VARC, Size:255, Description:Last Modified Date --> + <!-- SEQ:36, Table:MATL, Field:ZZLAMDT, M/O:, Type:VARC, Size:8, Description:Last Modified Date --> <xsd:element name="ZZLAMDT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:37, Table:MATL, Field:ZZLAMTM, M/O:, Type:VARC, Size:255, Description:Last Modified Time --> + <!-- SEQ:37, Table:MATL, Field:ZZLAMTM, M/O:, Type:VARC, Size:6, Description:Last Modified Time --> <xsd:element name="ZZLAMTM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:38, Table:MATL, Field:ZZLAMUS, M/O:, Type:VARC, Size:255, Description:Last Modified User --> + <!-- SEQ:38, Table:MATL, Field:ZZLAMUS, M/O:, Type:VARC, Size:12, Description:Last Modified User --> <xsd:element name="ZZLAMUS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:39, Table:MATL, Field:ZZPRFLG, M/O:, Type:VARC, Size:255, Description:CRUD Status --> + <!-- SEQ:39, Table:MATL, Field:ZZPRFLG, M/O:, Type:VARC, Size:12, Description:CRUD Status --> <xsd:element name="ZZPRFLG" type="xsd:string" minOccurs="0"/> - <!-- SEQ:40, Table:MATL, Field:ZZCERT, M/O:, Type:VARC, Size:255, Description:Certification Code --> + <!-- SEQ:40, Table:MATL, Field:ZZCERT, M/O:, Type:VARC, Size:6, Description:Certification Code --> <xsd:element name="ZZCERT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:89, Table:MATL, Field:ZZPRCD_SCV_CTLP, M/O:, Type:VARC, Size:255, Description:선행후행조정관 --> + <!-- SEQ:89, Table:MATL, Field:ZZPRCD_SCV_CTLP, M/O:, Type:VARC, Size:2, Description:선행후행조정관 --> <xsd:element name="ZZPRCD_SCV_CTLP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:90, Table:MATL, Field:ZZREP_DIA_UOM, M/O:, Type:VARC, Size:255, Description:대표지름단위 --> + <!-- SEQ:90, Table:MATL, Field:ZZREP_DIA_UOM, M/O:, Type:VARC, Size:3, Description:대표지름단위 --> <xsd:element name="ZZREP_DIA_UOM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:91, Table:MATL, Field:ZZREP_DIA, M/O:, Type:VARC, Size:255, Description:대표지름 --> + <!-- SEQ:91, Table:MATL, Field:ZZREP_DIA, M/O:, Type:VARC, Size:10, Description:대표지름 --> <xsd:element name="ZZREP_DIA" type="xsd:string" minOccurs="0"/> - <!-- SEQ:92, Table:MATL, Field:ZZREP_ITM_MATL, M/O:, Type:VARC, Size:255, Description:대표품명재질 --> + <!-- SEQ:92, Table:MATL, Field:ZZREP_ITM_MATL, M/O:, Type:VARC, Size:60, Description:대표품명재질 --> <xsd:element name="ZZREP_ITM_MATL" type="xsd:string" minOccurs="0"/> - <!-- SEQ:41, Table:MATL, Field:ZZINSP, M/O:, Type:VARC, Size:255, Description:Inspection --> + <!-- SEQ:41, Table:MATL, Field:ZZINSP, M/O:, Type:VARC, Size:1, Description:Inspection --> <xsd:element name="ZZINSP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:42, Table:MATL, Field:ZZPJT, M/O:, Type:VARC, Size:255, Description:Project Code --> + <!-- SEQ:42, Table:MATL, Field:ZZPJT, M/O:, Type:VARC, Size:24, Description:Project Code --> <xsd:element name="ZZPJT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:43, Table:MATL, Field:ZZREPMAT, M/O:, Type:VARC, Size:255, Description:REP Material --> + <!-- SEQ:43, Table:MATL, Field:ZZREPMAT, M/O:, Type:VARC, Size:18, Description:REP Material --> <xsd:element name="ZZREPMAT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:44, Table:MATL, Field:ZZPLMID, M/O:, Type:VARC, Size:255, Description:PLM ID --> + <!-- SEQ:44, Table:MATL, Field:ZZPLMID, M/O:, Type:VARC, Size:50, Description:PLM ID --> <xsd:element name="ZZPLMID" type="xsd:string" minOccurs="0"/> - <!-- SEQ:45, Table:MATL, Field:ZZACT, M/O:, Type:VARC, Size:255, Description:Activity Code --> + <!-- SEQ:45, Table:MATL, Field:ZZACT, M/O:, Type:VARC, Size:18, Description:Activity Code --> <xsd:element name="ZZACT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:88, Table:MATL, Field:ZZSTL, M/O:, Type:VARC, Size:255, Description:Steel Material --> + <!-- SEQ:88, Table:MATL, Field:ZZSTL, M/O:, Type:VARC, Size:50, Description:Steel Material --> <xsd:element name="ZZSTL" type="xsd:string" minOccurs="0"/> <xsd:element name="DESC" type="p0:DESC" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="PLNT" type="p0:PLNT" minOccurs="0" maxOccurs="unbounded"/> @@ -122,105 +122,105 @@ </xsd:complexType> <xsd:complexType name="DESC"> <xsd:sequence> - <!-- SEQ:46, Table:MATL/DESC, Field:MATNR, M/O:M, Type:VARC, Size:255, Description:Material Number --> + <!-- SEQ:46, Table:MATL/DESC, Field:MATNR, M/O:M, Type:VARC, Size:18, Description:Material Number --> <xsd:element name="MATNR" type="xsd:string"/> - <!-- SEQ:47, Table:MATL/DESC, Field:SPRAS, M/O:M, Type:VARC, Size:255, Description:Language --> + <!-- SEQ:47, Table:MATL/DESC, Field:SPRAS, M/O:M, Type:VARC, Size:1, Description:Language --> <xsd:element name="SPRAS" type="xsd:string"/> - <!-- SEQ:48, Table:MATL/DESC, Field:MAKTX, M/O:, Type:VARC, Size:255, Description:Material Description (Short Text) --> + <!-- SEQ:48, Table:MATL/DESC, Field:MAKTX, M/O:, Type:VARC, Size:40, Description:Material Description (Short Text) --> <xsd:element name="MAKTX" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="PLNT"> <xsd:sequence> - <!-- SEQ:50, Table:MATL/PLNT, Field:WERKS, M/O:M, Type:VARC, Size:255, Description:Plant --> + <!-- SEQ:50, Table:MATL/PLNT, Field:WERKS, M/O:M, Type:VARC, Size:4, Description:Plant --> <xsd:element name="WERKS" type="xsd:string"/> - <!-- SEQ:49, Table:MATL/PLNT, Field:MATNR, M/O:M, Type:VARC, Size:255, Description:Material Number --> + <!-- SEQ:49, Table:MATL/PLNT, Field:MATNR, M/O:M, Type:VARC, Size:18, Description:Material Number --> <xsd:element name="MATNR" type="xsd:string"/> - <!-- SEQ:51, Table:MATL/PLNT, Field:LVORM, M/O:, Type:VARC, Size:255, Description:Deletion Flag --> + <!-- SEQ:51, Table:MATL/PLNT, Field:LVORM, M/O:, Type:VARC, Size:4, Description:Deletion Flag --> <xsd:element name="LVORM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:52, Table:MATL/PLNT, Field:MMSTA, M/O:, Type:VARC, Size:255, Description:Plant-Specific Material Status --> + <!-- SEQ:52, Table:MATL/PLNT, Field:MMSTA, M/O:, Type:VARC, Size:2, Description:Plant-Specific Material Status --> <xsd:element name="MMSTA" type="xsd:string" minOccurs="0"/> - <!-- SEQ:53, Table:MATL/PLNT, Field:MMSTD, M/O:, Type:VARC, Size:255, Description:Date from which the plant-specific material status --> + <!-- SEQ:53, Table:MATL/PLNT, Field:MMSTD, M/O:, Type:VARC, Size:8, Description:Date from which the plant-specific material status --> <xsd:element name="MMSTD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:54, Table:MATL/PLNT, Field:ZZMTARP, M/O:, Type:VARC, Size:255, Description:Plant Material Type --> + <!-- SEQ:54, Table:MATL/PLNT, Field:ZZMTARP, M/O:, Type:VARC, Size:4, Description:Plant Material Type --> <xsd:element name="ZZMTARP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:55, Table:MATL/PLNT, Field:ZZREGDT, M/O:, Type:VARC, Size:255, Description:Registered Date --> + <!-- SEQ:55, Table:MATL/PLNT, Field:ZZREGDT, M/O:, Type:VARC, Size:8, Description:Registered Date --> <xsd:element name="ZZREGDT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:56, Table:MATL/PLNT, Field:ZZREGTM, M/O:, Type:VARC, Size:255, Description:Registered Time --> + <!-- SEQ:56, Table:MATL/PLNT, Field:ZZREGTM, M/O:, Type:VARC, Size:6, Description:Registered Time --> <xsd:element name="ZZREGTM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:57, Table:MATL/PLNT, Field:ZZREGUS, M/O:, Type:VARC, Size:255, Description:Registered User --> + <!-- SEQ:57, Table:MATL/PLNT, Field:ZZREGUS, M/O:, Type:VARC, Size:12, Description:Registered User --> <xsd:element name="ZZREGUS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:58, Table:MATL/PLNT, Field:ZZLAMDT, M/O:, Type:VARC, Size:255, Description:Last Modified Date --> + <!-- SEQ:58, Table:MATL/PLNT, Field:ZZLAMDT, M/O:, Type:VARC, Size:8, Description:Last Modified Date --> <xsd:element name="ZZLAMDT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:59, Table:MATL/PLNT, Field:ZZLAMTM, M/O:, Type:VARC, Size:255, Description:Last Modified Time --> + <!-- SEQ:59, Table:MATL/PLNT, Field:ZZLAMTM, M/O:, Type:VARC, Size:6, Description:Last Modified Time --> <xsd:element name="ZZLAMTM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:60, Table:MATL/PLNT, Field:ZZLAMUS, M/O:, Type:VARC, Size:255, Description:Last Modified User --> + <!-- SEQ:60, Table:MATL/PLNT, Field:ZZLAMUS, M/O:, Type:VARC, Size:12, Description:Last Modified User --> <xsd:element name="ZZLAMUS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:61, Table:MATL/PLNT, Field:ZZPRFLG, M/O:, Type:VARC, Size:255, Description:CRUD Status --> + <!-- SEQ:61, Table:MATL/PLNT, Field:ZZPRFLG, M/O:, Type:VARC, Size:1, Description:CRUD Status --> <xsd:element name="ZZPRFLG" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="UNIT"> <xsd:sequence> - <!-- SEQ:63, Table:MATL/UNIT, Field:MEINH, M/O:M, Type:VARC, Size:255, Description:Alternative Unit of Measure for Stockkeeping Unit --> + <!-- SEQ:63, Table:MATL/UNIT, Field:MEINH, M/O:M, Type:VARC, Size:3, Description:Alternative Unit of Measure for Stockkeeping Unit --> <xsd:element name="MEINH" type="xsd:string"/> - <!-- SEQ:62, Table:MATL/UNIT, Field:MATNR, M/O:M, Type:VARC, Size:255, Description:Material Number --> + <!-- SEQ:62, Table:MATL/UNIT, Field:MATNR, M/O:M, Type:VARC, Size:18, Description:Material Number --> <xsd:element name="MATNR" type="xsd:string"/> - <!-- SEQ:64, Table:MATL/UNIT, Field:UMREZ, M/O:, Type:VARC, Size:255, Description:Numerator for Conversion to Base Units of Measure --> + <!-- SEQ:64, Table:MATL/UNIT, Field:UMREZ, M/O:, Type:NUMB, Size:5, Description:Numerator for Conversion to Base Units of Measure --> <xsd:element name="UMREZ" type="xsd:string" minOccurs="0"/> - <!-- SEQ:65, Table:MATL/UNIT, Field:UMREN, M/O:, Type:VARC, Size:255, Description:Denominator for conversion to base units of measur --> + <!-- SEQ:65, Table:MATL/UNIT, Field:UMREN, M/O:, Type:NUMB, Size:5, Description:Denominator for conversion to base units of measur --> <xsd:element name="UMREN" type="xsd:string" minOccurs="0"/> - <!-- SEQ:66, Table:MATL/UNIT, Field:LAENG, M/O:, Type:VARC, Size:255, Description:Length --> + <!-- SEQ:66, Table:MATL/UNIT, Field:LAENG, M/O:, Type:NUMB, Size:13, Description:Length --> <xsd:element name="LAENG" type="xsd:string" minOccurs="0"/> - <!-- SEQ:67, Table:MATL/UNIT, Field:BREIT, M/O:, Type:VARC, Size:255, Description:Width --> + <!-- SEQ:67, Table:MATL/UNIT, Field:BREIT, M/O:, Type:NUMB, Size:13, Description:Width --> <xsd:element name="BREIT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:68, Table:MATL/UNIT, Field:HOEHE, M/O:, Type:VARC, Size:255, Description:Height --> + <!-- SEQ:68, Table:MATL/UNIT, Field:HOEHE, M/O:, Type:NUMB, Size:13, Description:Height --> <xsd:element name="HOEHE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:69, Table:MATL/UNIT, Field:MEABM, M/O:, Type:VARC, Size:255, Description:Unit of Dimension for Length/Width/Height --> + <!-- SEQ:69, Table:MATL/UNIT, Field:MEABM, M/O:, Type:VARC, Size:3, Description:Unit of Dimension for Length/Width/Height --> <xsd:element name="MEABM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:70, Table:MATL/UNIT, Field:VOLUM, M/O:, Type:VARC, Size:255, Description:Volume --> + <!-- SEQ:70, Table:MATL/UNIT, Field:VOLUM, M/O:, Type:NUMB, Size:13, Description:Volume --> <xsd:element name="VOLUM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:71, Table:MATL/UNIT, Field:VOLEH, M/O:, Type:VARC, Size:255, Description:Volume unit --> + <!-- SEQ:71, Table:MATL/UNIT, Field:VOLEH, M/O:, Type:VARC, Size:3, Description:Volume unit --> <xsd:element name="VOLEH" type="xsd:string" minOccurs="0"/> - <!-- SEQ:72, Table:MATL/UNIT, Field:BRGEW, M/O:, Type:VARC, Size:255, Description:Gross Weight --> + <!-- SEQ:72, Table:MATL/UNIT, Field:BRGEW, M/O:, Type:NUMB, Size:13, Description:Gross Weight --> <xsd:element name="BRGEW" type="xsd:string" minOccurs="0"/> - <!-- SEQ:73, Table:MATL/UNIT, Field:GEWEI, M/O:, Type:VARC, Size:255, Description:Weight Unit --> + <!-- SEQ:73, Table:MATL/UNIT, Field:GEWEI, M/O:, Type:VARC, Size:3, Description:Weight Unit --> <xsd:element name="GEWEI" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="CLASSASGN"> <xsd:sequence> - <!-- SEQ:74, Table:MATL/CLASSASGN, Field:MATNR, M/O:M, Type:VARC, Size:255, Description:Material Number --> + <!-- SEQ:74, Table:MATL/CLASSASGN, Field:MATNR, M/O:M, Type:VARC, Size:18, Description:Material Number --> <xsd:element name="MATNR" type="xsd:string"/> - <!-- SEQ:75, Table:MATL/CLASSASGN, Field:CLASS, M/O:M, Type:VARC, Size:255, Description:Class number --> + <!-- SEQ:75, Table:MATL/CLASSASGN, Field:CLASS, M/O:M, Type:VARC, Size:18, Description:Class number --> <xsd:element name="CLASS" type="xsd:string"/> - <!-- SEQ:76, Table:MATL/CLASSASGN, Field:KLART, M/O:M, Type:VARC, Size:255, Description:Class Type --> + <!-- SEQ:76, Table:MATL/CLASSASGN, Field:KLART, M/O:M, Type:VARC, Size:3, Description:Class Type --> <xsd:element name="KLART" type="xsd:string"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="CHARASGN"> <xsd:sequence> - <!-- SEQ:77, Table:MATL/CHARASGN, Field:MATNR, M/O:M, Type:VARC, Size:255, Description:Material Number --> + <!-- SEQ:77, Table:MATL/CHARASGN, Field:MATNR, M/O:M, Type:VARC, Size:18, Description:Material Number --> <xsd:element name="MATNR" type="xsd:string"/> - <!-- SEQ:78, Table:MATL/CHARASGN, Field:CLASS, M/O:M, Type:VARC, Size:255, Description:Class number --> + <!-- SEQ:78, Table:MATL/CHARASGN, Field:CLASS, M/O:M, Type:VARC, Size:18, Description:Class number --> <xsd:element name="CLASS" type="xsd:string"/> - <!-- SEQ:79, Table:MATL/CHARASGN, Field:KLART, M/O:M, Type:VARC, Size:255, Description:Class Type --> + <!-- SEQ:79, Table:MATL/CHARASGN, Field:KLART, M/O:M, Type:VARC, Size:3, Description:Class Type --> <xsd:element name="KLART" type="xsd:string"/> - <!-- SEQ:80, Table:MATL/CHARASGN, Field:ATNAM, M/O:M, Type:VARC, Size:255, Description:Characteristic Name --> + <!-- SEQ:80, Table:MATL/CHARASGN, Field:ATNAM, M/O:M, Type:VARC, Size:30, Description:Characteristic Name --> <xsd:element name="ATNAM" type="xsd:string"/> - <!-- SEQ:81, Table:MATL/CHARASGN, Field:ATWRT, M/O:, Type:VARC, Size:255, Description:Characteristic Value --> + <!-- SEQ:81, Table:MATL/CHARASGN, Field:ATWRT, M/O:, Type:VARC, Size:30, Description:Characteristic Value --> <xsd:element name="ATWRT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:82, Table:MATL/CHARASGN, Field:ATFLV, M/O:, Type:VARC, Size:255, Description:Internal floating point from --> + <!-- SEQ:82, Table:MATL/CHARASGN, Field:ATFLV, M/O:, Type:NUMB, Size:16, Description:Internal floating point from --> <xsd:element name="ATFLV" type="xsd:string" minOccurs="0"/> - <!-- SEQ:83, Table:MATL/CHARASGN, Field:ATAWE, M/O:, Type:VARC, Size:255, Description:Unit of Measurement --> + <!-- SEQ:83, Table:MATL/CHARASGN, Field:ATAWE, M/O:, Type:VARC, Size:3, Description:Unit of Measurement --> <xsd:element name="ATAWE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:84, Table:MATL/CHARASGN, Field:ATFLB, M/O:, Type:VARC, Size:255, Description:Internal floating point value to --> + <!-- SEQ:84, Table:MATL/CHARASGN, Field:ATFLB, M/O:, Type:NUMB, Size:16, Description:Internal floating point value to --> <xsd:element name="ATFLB" type="xsd:string" minOccurs="0"/> - <!-- SEQ:85, Table:MATL/CHARASGN, Field:ATAW1, M/O:, Type:VARC, Size:255, Description:Unit of Measurement --> + <!-- SEQ:85, Table:MATL/CHARASGN, Field:ATAW1, M/O:, Type:VARC, Size:3, Description:Unit of Measurement --> <xsd:element name="ATAW1" type="xsd:string" minOccurs="0"/> - <!-- SEQ:86, Table:MATL/CHARASGN, Field:ATBEZ, M/O:, Type:VARC, Size:255, Description:특성내역 --> + <!-- SEQ:86, Table:MATL/CHARASGN, Field:ATBEZ, M/O:, Type:VARC, Size:30, Description:특성내역 --> <xsd:element name="ATBEZ" type="xsd:string" minOccurs="0"/> - <!-- SEQ:87, Table:MATL/CHARASGN, Field:ATWTB, M/O:, Type:VARC, Size:255, Description:특성값내역 --> + <!-- SEQ:87, Table:MATL/CHARASGN, Field:ATWTB, M/O:, Type:VARC, Size:30, Description:특성값내역 --> <xsd:element name="ATWTB" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> diff --git a/public/wsdl/IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl b/public/wsdl/IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl index db8261be..2b7ea6a6 100644 --- a/public/wsdl/IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl +++ b/public/wsdl/IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.wsdl @@ -13,13 +13,13 @@ </xsd:complexType> <xsd:complexType name="CMCTB_MAT_BSE"> <xsd:sequence> - <!-- SEQ:1, Table:CMCTB_MAT_BSE, Field:MAT_CD, M/O:M, Type:VARC, Size:255, Description:자재코드 --> + <!-- SEQ:1, Table:CMCTB_MAT_BSE, Field:MAT_CD, M/O:M, Type:VARC, Size:18, Description:자재코드 --> <xsd:element name="MAT_CD" type="xsd:string"/> - <!-- SEQ:2, Table:CMCTB_MAT_BSE, Field:MAT_ID, M/O:, Type:VARC, Size:255, Description:PLM 채번 자재코드 --> + <!-- SEQ:2, Table:CMCTB_MAT_BSE, Field:MAT_ID, M/O:, Type:VARC, Size:50, Description:PLM 채번 자재코드 --> <xsd:element name="MAT_ID" type="xsd:string" minOccurs="0"/> - <!-- SEQ:3, Table:CMCTB_MAT_BSE, Field:IF_STAT, M/O:, Type:VARC, Size:255, Description:IF 상태 --> + <!-- SEQ:3, Table:CMCTB_MAT_BSE, Field:IF_STAT, M/O:, Type:VARC, Size:1, Description:IF 상태 --> <xsd:element name="IF_STAT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:4, Table:CMCTB_MAT_BSE, Field:IF_MSG, M/O:, Type:VARC, Size:255, Description:IF 메시지 --> + <!-- SEQ:4, Table:CMCTB_MAT_BSE, Field:IF_MSG, M/O:, Type:VARC, Size:100, Description:IF 메시지 --> <xsd:element name="IF_MSG" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> diff --git a/public/wsdl/IF_MDZ_EVCP_MODEL_MASTER.wsdl b/public/wsdl/IF_MDZ_EVCP_MODEL_MASTER.wsdl index 5c842b5d..e682bf78 100644 --- a/public/wsdl/IF_MDZ_EVCP_MODEL_MASTER.wsdl +++ b/public/wsdl/IF_MDZ_EVCP_MODEL_MASTER.wsdl @@ -13,87 +13,87 @@ </xsd:complexType> <xsd:complexType name="MATL"> <xsd:sequence> - <!-- SEQ:1, Table:MATL, Field:MATNR, M/O:, Type:VARC, Size:255, Description:Material Number --> + <!-- SEQ:1, Table:MATL, Field:MATNR, M/O:, Type:CHAR, Size:18, Description:Material Number --> <xsd:element name="MATNR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:2, Table:MATL, Field:MBRSH, M/O:, Type:VARC, Size:255, Description:Industry sector --> + <!-- SEQ:2, Table:MATL, Field:MBRSH, M/O:, Type:CHAR, Size:1, Description:Industry sector --> <xsd:element name="MBRSH" type="xsd:string" minOccurs="0"/> - <!-- SEQ:3, Table:MATL, Field:MTART, M/O:, Type:VARC, Size:255, Description:Material Type --> + <!-- SEQ:3, Table:MATL, Field:MTART, M/O:, Type:CHAR, Size:4, Description:Material Type --> <xsd:element name="MTART" type="xsd:string" minOccurs="0"/> - <!-- SEQ:4, Table:MATL, Field:LVORM, M/O:, Type:VARC, Size:255, Description:Deletion flag --> + <!-- SEQ:4, Table:MATL, Field:LVORM, M/O:, Type:CHAR, Size:1, Description:Deletion flag --> <xsd:element name="LVORM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:5, Table:MATL, Field:MEINS, M/O:, Type:VARC, Size:255, Description:Base Unit of Measure --> + <!-- SEQ:5, Table:MATL, Field:MEINS, M/O:, Type:UNIT, Size:3, Description:Base Unit of Measure --> <xsd:element name="MEINS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:6, Table:MATL, Field:MATKL, M/O:, Type:VARC, Size:255, Description:Material Group --> + <!-- SEQ:6, Table:MATL, Field:MATKL, M/O:, Type:CHAR, Size:9, Description:Material Group --> <xsd:element name="MATKL" type="xsd:string" minOccurs="0"/> - <!-- SEQ:7, Table:MATL, Field:BISMT, M/O:, Type:VARC, Size:255, Description:Old material number --> + <!-- SEQ:7, Table:MATL, Field:BISMT, M/O:, Type:CHAR, Size:18, Description:Old material number --> <xsd:element name="BISMT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:8, Table:MATL, Field:SPART, M/O:, Type:VARC, Size:255, Description:Division --> + <!-- SEQ:8, Table:MATL, Field:SPART, M/O:, Type:CHAR, Size:2, Description:Division --> <xsd:element name="SPART" type="xsd:string" minOccurs="0"/> - <!-- SEQ:9, Table:MATL, Field:PRDHA, M/O:, Type:VARC, Size:255, Description:Product hierarchy --> + <!-- SEQ:9, Table:MATL, Field:PRDHA, M/O:, Type:CHAR, Size:18, Description:Product hierarchy --> <xsd:element name="PRDHA" type="xsd:string" minOccurs="0"/> - <!-- SEQ:10, Table:MATL, Field:MSTAE, M/O:, Type:VARC, Size:255, Description:Material Status --> + <!-- SEQ:10, Table:MATL, Field:MSTAE, M/O:, Type:CHAR, Size:2, Description:Material Status --> <xsd:element name="MSTAE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:11, Table:MATL, Field:MSTDE, M/O:, Type:VARC, Size:255, Description:Date from which the cross-plant material status is --> + <!-- SEQ:11, Table:MATL, Field:MSTDE, M/O:, Type:CHAR, Size:2, Description:Date from which the cross-plant material status is --> <xsd:element name="MSTDE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:12, Table:MATL, Field:BRGEW, M/O:, Type:VARC, Size:255, Description:Gross Weight --> + <!-- SEQ:12, Table:MATL, Field:BRGEW, M/O:, Type:QUAN, Size:13, Description:Gross Weight --> <xsd:element name="BRGEW" type="xsd:string" minOccurs="0"/> - <!-- SEQ:13, Table:MATL, Field:GEWEI, M/O:, Type:VARC, Size:255, Description:Weight Unit --> + <!-- SEQ:13, Table:MATL, Field:GEWEI, M/O:, Type:UNIT, Size:3, Description:Weight Unit --> <xsd:element name="GEWEI" type="xsd:string" minOccurs="0"/> - <!-- SEQ:14, Table:MATL, Field:NTGEW, M/O:, Type:VARC, Size:255, Description:Net Weight --> + <!-- SEQ:14, Table:MATL, Field:NTGEW, M/O:, Type:QUAN, Size:13, Description:Net Weight --> <xsd:element name="NTGEW" type="xsd:string" minOccurs="0"/> - <!-- SEQ:15, Table:MATL, Field:VOLUM, M/O:, Type:VARC, Size:255, Description:Volume --> + <!-- SEQ:15, Table:MATL, Field:VOLUM, M/O:, Type:QUAN, Size:13,3, Description:Volume --> <xsd:element name="VOLUM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:16, Table:MATL, Field:VOLEH, M/O:, Type:VARC, Size:255, Description:Volume unit --> + <!-- SEQ:16, Table:MATL, Field:VOLEH, M/O:, Type:UNIT, Size:3, Description:Volume unit --> <xsd:element name="VOLEH" type="xsd:string" minOccurs="0"/> - <!-- SEQ:17, Table:MATL, Field:GROES, M/O:, Type:VARC, Size:255, Description:Size/dimensions --> + <!-- SEQ:17, Table:MATL, Field:GROES, M/O:, Type:CHAR, Size:32, Description:Size/dimensions --> <xsd:element name="GROES" type="xsd:string" minOccurs="0"/> - <!-- SEQ:18, Table:MATL, Field:LAENG, M/O:, Type:VARC, Size:255, Description:Length --> + <!-- SEQ:18, Table:MATL, Field:LAENG, M/O:, Type:QUAN, Size:13,1, Description:Length --> <xsd:element name="LAENG" type="xsd:string" minOccurs="0"/> - <!-- SEQ:19, Table:MATL, Field:BREIT, M/O:, Type:VARC, Size:255, Description:Width --> + <!-- SEQ:19, Table:MATL, Field:BREIT, M/O:, Type:QUAN, Size:13,1, Description:Width --> <xsd:element name="BREIT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:20, Table:MATL, Field:HOEHE, M/O:, Type:VARC, Size:255, Description:Height --> + <!-- SEQ:20, Table:MATL, Field:HOEHE, M/O:, Type:QUAN, Size:13,1, Description:Height --> <xsd:element name="HOEHE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:21, Table:MATL, Field:MEABM, M/O:, Type:VARC, Size:255, Description:Unit of Dimension for Length/Width/Height --> + <!-- SEQ:21, Table:MATL, Field:MEABM, M/O:, Type:UNIT, Size:3, Description:Unit of Dimension for Length/Width/Height --> <xsd:element name="MEABM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:22, Table:MATL, Field:MAGRV, M/O:, Type:VARC, Size:255, Description:Material Group: Packaging Materials --> + <!-- SEQ:22, Table:MATL, Field:MAGRV, M/O:, Type:CHAR, Size:4, Description:Material Group: Packaging Materials --> <xsd:element name="MAGRV" type="xsd:string" minOccurs="0"/> - <!-- SEQ:23, Table:MATL, Field:VHART, M/O:, Type:VARC, Size:255, Description:Packaging Material Type --> + <!-- SEQ:23, Table:MATL, Field:VHART, M/O:, Type:CHAR, Size:4, Description:Packaging Material Type --> <xsd:element name="VHART" type="xsd:string" minOccurs="0"/> - <!-- SEQ:24, Table:MATL, Field:ZZNAME, M/O:, Type:VARC, Size:255, Description:Material Name --> + <!-- SEQ:24, Table:MATL, Field:ZZNAME, M/O:, Type:CHAR, Size:40, Description:Material Name --> <xsd:element name="ZZNAME" type="xsd:string" minOccurs="0"/> - <!-- SEQ:25, Table:MATL, Field:ZZSPEC, M/O:, Type:VARC, Size:255, Description:Specification --> + <!-- SEQ:25, Table:MATL, Field:ZZSPEC, M/O:, Type:CHAR, Size:255, Description:Specification --> <xsd:element name="ZZSPEC" type="xsd:string" minOccurs="0"/> - <!-- SEQ:26, Table:MATL, Field:ZZDESC, M/O:, Type:VARC, Size:255, Description:Description --> + <!-- SEQ:26, Table:MATL, Field:ZZDESC, M/O:, Type:CHAR, Size:255, Description:Description --> <xsd:element name="ZZDESC" type="xsd:string" minOccurs="0"/> - <!-- SEQ:27, Table:MATL, Field:ZZMMTYP, M/O:, Type:VARC, Size:255, Description:Material Master Type --> + <!-- SEQ:27, Table:MATL, Field:ZZMMTYP, M/O:, Type:CHAR, Size:1, Description:Material Master Type --> <xsd:element name="ZZMMTYP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:28, Table:MATL, Field:ZZREGDT, M/O:, Type:VARC, Size:255, Description:Registered Date --> + <!-- SEQ:28, Table:MATL, Field:ZZREGDT, M/O:, Type:DATS, Size:8, Description:Registered Date --> <xsd:element name="ZZREGDT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:29, Table:MATL, Field:ZZREGTM, M/O:, Type:VARC, Size:255, Description:Registered Time --> + <!-- SEQ:29, Table:MATL, Field:ZZREGTM, M/O:, Type:TIMS, Size:6, Description:Registered Time --> <xsd:element name="ZZREGTM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:30, Table:MATL, Field:ZZREGUS, M/O:, Type:VARC, Size:255, Description:Registered User --> + <!-- SEQ:30, Table:MATL, Field:ZZREGUS, M/O:, Type:CHAR, Size:12, Description:Registered User --> <xsd:element name="ZZREGUS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:31, Table:MATL, Field:ZZAPPDT, M/O:, Type:VARC, Size:255, Description:Approval Date --> + <!-- SEQ:31, Table:MATL, Field:ZZAPPDT, M/O:, Type:DATS, Size:8, Description:Approval Date --> <xsd:element name="ZZAPPDT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:32, Table:MATL, Field:ZZAPPTM, M/O:, Type:VARC, Size:255, Description:Approval Time --> + <!-- SEQ:32, Table:MATL, Field:ZZAPPTM, M/O:, Type:TIMS, Size:6, Description:Approval Time --> <xsd:element name="ZZAPPTM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:33, Table:MATL, Field:ZZAPPUS, M/O:, Type:VARC, Size:255, Description:Approval User --> + <!-- SEQ:33, Table:MATL, Field:ZZAPPUS, M/O:, Type:CHAR, Size:12, Description:Approval User --> <xsd:element name="ZZAPPUS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:34, Table:MATL, Field:ZZLAMDT, M/O:, Type:VARC, Size:255, Description:Last Modified Date --> + <!-- SEQ:34, Table:MATL, Field:ZZLAMDT, M/O:, Type:DATS, Size:8, Description:Last Modified Date --> <xsd:element name="ZZLAMDT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:35, Table:MATL, Field:ZZLAMTM, M/O:, Type:VARC, Size:255, Description:Last Modified Time --> + <!-- SEQ:35, Table:MATL, Field:ZZLAMTM, M/O:, Type:TIMS, Size:6, Description:Last Modified Time --> <xsd:element name="ZZLAMTM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:36, Table:MATL, Field:ZZLAMUS, M/O:, Type:VARC, Size:255, Description:Last Modified User --> + <!-- SEQ:36, Table:MATL, Field:ZZLAMUS, M/O:, Type:CHAR, Size:12, Description:Last Modified User --> <xsd:element name="ZZLAMUS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:37, Table:MATL, Field:ZZPRFLG, M/O:, Type:VARC, Size:255, Description:CRUD Status --> + <!-- SEQ:37, Table:MATL, Field:ZZPRFLG, M/O:, Type:CHAR, Size:1, Description:CRUD Status --> <xsd:element name="ZZPRFLG" type="xsd:string" minOccurs="0"/> - <!-- SEQ:38, Table:MATL, Field:ZZDOKAR, M/O:, Type:VARC, Size:255, Description:Document Type --> + <!-- SEQ:38, Table:MATL, Field:ZZDOKAR, M/O:, Type:CHAR, Size:3, Description:Document Type --> <xsd:element name="ZZDOKAR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:39, Table:MATL, Field:ZZDOKNR, M/O:, Type:VARC, Size:255, Description:Document number --> + <!-- SEQ:39, Table:MATL, Field:ZZDOKNR, M/O:, Type:CHAR, Size:25, Description:Document number --> <xsd:element name="ZZDOKNR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:40, Table:MATL, Field:ZZDOKTL, M/O:, Type:VARC, Size:255, Description:Document Part --> + <!-- SEQ:40, Table:MATL, Field:ZZDOKTL, M/O:, Type:CHAR, Size:3, Description:Document Part --> <xsd:element name="ZZDOKTL" type="xsd:string" minOccurs="0"/> - <!-- SEQ:41, Table:MATL, Field:ZZDOKVR, M/O:, Type:VARC, Size:255, Description:Document Version --> + <!-- SEQ:41, Table:MATL, Field:ZZDOKVR, M/O:, Type:CHAR, Size:2, Description:Document Version --> <xsd:element name="ZZDOKVR" type="xsd:string" minOccurs="0"/> <!-- DESC [1:N] --> <xsd:element name="DESC" type="p0:DESC" minOccurs="0" maxOccurs="unbounded"/> @@ -109,105 +109,105 @@ </xsd:complexType> <xsd:complexType name="DESC"> <xsd:sequence> - <!-- SEQ:42, Table:MATL/DESC, Field:MATNR, M/O:, Type:VARC, Size:255, Description:Material Number --> + <!-- SEQ:42, Table:MATL/DESC, Field:MATNR, M/O:, Type:CHAR, Size:18, Description:Material Number --> <xsd:element name="MATNR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:43, Table:MATL/DESC, Field:SPRAS, M/O:, Type:VARC, Size:255, Description:Language --> + <!-- SEQ:43, Table:MATL/DESC, Field:SPRAS, M/O:, Type:CHAR, Size:1, Description:Language --> <xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:44, Table:MATL/DESC, Field:MAKTX, M/O:, Type:VARC, Size:255, Description:Material Description (Short Text) --> + <!-- SEQ:44, Table:MATL/DESC, Field:MAKTX, M/O:, Type:CHAR, Size:40, Description:Material Description (Short Text) --> <xsd:element name="MAKTX" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="PLNT"> <xsd:sequence> - <!-- SEQ:45, Table:MATL/PLNT, Field:MATNR, M/O:, Type:VARC, Size:255, Description:Material Number --> + <!-- SEQ:45, Table:MATL/PLNT, Field:MATNR, M/O:, Type:CHAR, Size:18, Description:Material Number --> <xsd:element name="MATNR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:46, Table:MATL/PLNT, Field:WERKS, M/O:, Type:VARC, Size:255, Description:Plant --> + <!-- SEQ:46, Table:MATL/PLNT, Field:WERKS, M/O:, Type:CHAR, Size:4, Description:Plant --> <xsd:element name="WERKS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:47, Table:MATL/PLNT, Field:LVORM, M/O:, Type:VARC, Size:255, Description:Deletion Flag --> + <!-- SEQ:47, Table:MATL/PLNT, Field:LVORM, M/O:, Type:CHAR, Size:4, Description:Deletion Flag --> <xsd:element name="LVORM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:48, Table:MATL/PLNT, Field:MMSTA, M/O:, Type:VARC, Size:255, Description:Plant-Specific Material Status --> + <!-- SEQ:48, Table:MATL/PLNT, Field:MMSTA, M/O:, Type:CHAR, Size:2, Description:Plant-Specific Material Status --> <xsd:element name="MMSTA" type="xsd:string" minOccurs="0"/> - <!-- SEQ:49, Table:MATL/PLNT, Field:MMSTD, M/O:, Type:VARC, Size:255, Description:Date from which the plant-specific material status --> + <!-- SEQ:49, Table:MATL/PLNT, Field:MMSTD, M/O:, Type:DATS, Size:8, Description:Date from which the plant-specific material status --> <xsd:element name="MMSTD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:50, Table:MATL/PLNT, Field:ZZMTARP, M/O:, Type:VARC, Size:255, Description:Plant Material Type --> + <!-- SEQ:50, Table:MATL/PLNT, Field:ZZMTARP, M/O:, Type:CHAR, Size:4, Description:Plant Material Type --> <xsd:element name="ZZMTARP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:51, Table:MATL/PLNT, Field:ZZREGDT, M/O:, Type:VARC, Size:255, Description:Registered Date --> + <!-- SEQ:51, Table:MATL/PLNT, Field:ZZREGDT, M/O:, Type:DATS, Size:8, Description:Registered Date --> <xsd:element name="ZZREGDT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:52, Table:MATL/PLNT, Field:ZZREGTM, M/O:, Type:VARC, Size:255, Description:Registered Time --> + <!-- SEQ:52, Table:MATL/PLNT, Field:ZZREGTM, M/O:, Type:TIMS, Size:6, Description:Registered Time --> <xsd:element name="ZZREGTM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:53, Table:MATL/PLNT, Field:ZZREGUS, M/O:, Type:VARC, Size:255, Description:Registered User --> + <!-- SEQ:53, Table:MATL/PLNT, Field:ZZREGUS, M/O:, Type:CHAR, Size:12, Description:Registered User --> <xsd:element name="ZZREGUS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:54, Table:MATL/PLNT, Field:ZZLAMDT, M/O:, Type:VARC, Size:255, Description:Last Modified Date --> + <!-- SEQ:54, Table:MATL/PLNT, Field:ZZLAMDT, M/O:, Type:DATS, Size:8, Description:Last Modified Date --> <xsd:element name="ZZLAMDT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:55, Table:MATL/PLNT, Field:ZZLAMTM, M/O:, Type:VARC, Size:255, Description:Last Modified Time --> + <!-- SEQ:55, Table:MATL/PLNT, Field:ZZLAMTM, M/O:, Type:TIMS, Size:6, Description:Last Modified Time --> <xsd:element name="ZZLAMTM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:56, Table:MATL/PLNT, Field:ZZLAMUS, M/O:, Type:VARC, Size:255, Description:Last Modified User --> + <!-- SEQ:56, Table:MATL/PLNT, Field:ZZLAMUS, M/O:, Type:CHAR, Size:12, Description:Last Modified User --> <xsd:element name="ZZLAMUS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:57, Table:MATL/PLNT, Field:ZZPRFLG, M/O:, Type:VARC, Size:255, Description:CRUD Status --> + <!-- SEQ:57, Table:MATL/PLNT, Field:ZZPRFLG, M/O:, Type:CHAR, Size:1, Description:CRUD Status --> <xsd:element name="ZZPRFLG" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="UNIT"> <xsd:sequence> - <!-- SEQ:58, Table:MATL/UNIT, Field:MATNR, M/O:, Type:VARC, Size:255, Description:Material Number --> + <!-- SEQ:58, Table:MATL/UNIT, Field:MATNR, M/O:, Type:CHAR, Size:18, Description:Material Number --> <xsd:element name="MATNR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:59, Table:MATL/UNIT, Field:MEINH, M/O:, Type:VARC, Size:255, Description:Alternative Unit of Measure for Stockkeeping Unit --> + <!-- SEQ:59, Table:MATL/UNIT, Field:MEINH, M/O:, Type:UNIT, Size:3, Description:Alternative Unit of Measure for Stockkeeping Unit --> <xsd:element name="MEINH" type="xsd:string" minOccurs="0"/> - <!-- SEQ:60, Table:MATL/UNIT, Field:UMREZ, M/O:, Type:VARC, Size:255, Description:Numerator for Conversion to Base Units of Measure --> + <!-- SEQ:60, Table:MATL/UNIT, Field:UMREZ, M/O:, Type:DEC, Size:5, Description:Numerator for Conversion to Base Units of Measure --> <xsd:element name="UMREZ" type="xsd:string" minOccurs="0"/> - <!-- SEQ:61, Table:MATL/UNIT, Field:UMREN, M/O:, Type:VARC, Size:255, Description:Denominator for conversion to base units of measur --> + <!-- SEQ:61, Table:MATL/UNIT, Field:UMREN, M/O:, Type:DEC, Size:5, Description:Denominator for conversion to base units of measur --> <xsd:element name="UMREN" type="xsd:string" minOccurs="0"/> - <!-- SEQ:62, Table:MATL/UNIT, Field:LAENG, M/O:, Type:VARC, Size:255, Description:Length --> + <!-- SEQ:62, Table:MATL/UNIT, Field:LAENG, M/O:, Type:QUAN, Size:13, Description:Length --> <xsd:element name="LAENG" type="xsd:string" minOccurs="0"/> - <!-- SEQ:63, Table:MATL/UNIT, Field:BREIT, M/O:, Type:VARC, Size:255, Description:Width --> + <!-- SEQ:63, Table:MATL/UNIT, Field:BREIT, M/O:, Type:QUAN, Size:13, Description:Width --> <xsd:element name="BREIT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:64, Table:MATL/UNIT, Field:HOEHE, M/O:, Type:VARC, Size:255, Description:Height --> + <!-- SEQ:64, Table:MATL/UNIT, Field:HOEHE, M/O:, Type:QUAN, Size:13, Description:Height --> <xsd:element name="HOEHE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:65, Table:MATL/UNIT, Field:MEABM, M/O:, Type:VARC, Size:255, Description:Unit of Dimension for Length/Width/Height --> + <!-- SEQ:65, Table:MATL/UNIT, Field:MEABM, M/O:, Type:UNIT, Size:3, Description:Unit of Dimension for Length/Width/Height --> <xsd:element name="MEABM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:66, Table:MATL/UNIT, Field:VOLUM, M/O:, Type:VARC, Size:255, Description:Volume --> + <!-- SEQ:66, Table:MATL/UNIT, Field:VOLUM, M/O:, Type:QUAN, Size:13, Description:Volume --> <xsd:element name="VOLUM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:67, Table:MATL/UNIT, Field:VOLEH, M/O:, Type:VARC, Size:255, Description:Volume unit --> + <!-- SEQ:67, Table:MATL/UNIT, Field:VOLEH, M/O:, Type:UNIT, Size:3, Description:Volume unit --> <xsd:element name="VOLEH" type="xsd:string" minOccurs="0"/> - <!-- SEQ:68, Table:MATL/UNIT, Field:BRGEW, M/O:, Type:VARC, Size:255, Description:Gross Weight --> + <!-- SEQ:68, Table:MATL/UNIT, Field:BRGEW, M/O:, Type:QUAN, Size:13, Description:Gross Weight --> <xsd:element name="BRGEW" type="xsd:string" minOccurs="0"/> - <!-- SEQ:69, Table:MATL/UNIT, Field:GEWEI, M/O:, Type:VARC, Size:255, Description:Weight Unit --> + <!-- SEQ:69, Table:MATL/UNIT, Field:GEWEI, M/O:, Type:UNIT, Size:3, Description:Weight Unit --> <xsd:element name="GEWEI" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="CLASSASGN"> <xsd:sequence> - <!-- SEQ:70, Table:MATL/CLASSASGN, Field:MATNR, M/O:, Type:VARC, Size:255, Description:Material Number --> + <!-- SEQ:70, Table:MATL/CLASSASGN, Field:MATNR, M/O:, Type:CHAR, Size:18, Description:Material Number --> <xsd:element name="MATNR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:71, Table:MATL/CLASSASGN, Field:CLASS, M/O:, Type:VARC, Size:255, Description:Class number --> + <!-- SEQ:71, Table:MATL/CLASSASGN, Field:CLASS, M/O:, Type:CHAR, Size:18, Description:Class number --> <xsd:element name="CLASS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:72, Table:MATL/CLASSASGN, Field:KLART, M/O:, Type:VARC, Size:255, Description:Class Type --> + <!-- SEQ:72, Table:MATL/CLASSASGN, Field:KLART, M/O:, Type:CHAR, Size:3, Description:Class Type --> <xsd:element name="KLART" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="CHARASGN"> <xsd:sequence> - <!-- SEQ:73, Table:MATL/CHARASGN, Field:MATNR, M/O:, Type:VARC, Size:255, Description:Material Number --> + <!-- SEQ:73, Table:MATL/CHARASGN, Field:MATNR, M/O:, Type:CHAR, Size:18, Description:Material Number --> <xsd:element name="MATNR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:74, Table:MATL/CHARASGN, Field:CLASS, M/O:, Type:VARC, Size:255, Description:Class number --> + <!-- SEQ:74, Table:MATL/CHARASGN, Field:CLASS, M/O:, Type:CHAR, Size:18, Description:Class number --> <xsd:element name="CLASS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:75, Table:MATL/CHARASGN, Field:KLART, M/O:, Type:VARC, Size:255, Description:Class Type --> + <!-- SEQ:75, Table:MATL/CHARASGN, Field:KLART, M/O:, Type:CHAR, Size:3, Description:Class Type --> <xsd:element name="KLART" type="xsd:string" minOccurs="0"/> - <!-- SEQ:76, Table:MATL/CHARASGN, Field:ATNAM, M/O:, Type:VARC, Size:255, Description:Characteristic Name --> + <!-- SEQ:76, Table:MATL/CHARASGN, Field:ATNAM, M/O:, Type:CHAR, Size:30, Description:Characteristic Name --> <xsd:element name="ATNAM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:77, Table:MATL/CHARASGN, Field:ATWRT, M/O:, Type:VARC, Size:255, Description:Characteristic Value --> + <!-- SEQ:77, Table:MATL/CHARASGN, Field:ATWRT, M/O:, Type:CHAR, Size:30, Description:Characteristic Value --> <xsd:element name="ATWRT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:78, Table:MATL/CHARASGN, Field:ATFLV, M/O:, Type:VARC, Size:255, Description:Internal floating point from --> + <!-- SEQ:78, Table:MATL/CHARASGN, Field:ATFLV, M/O:, Type:FLTP, Size:16, Description:Internal floating point from --> <xsd:element name="ATFLV" type="xsd:string" minOccurs="0"/> - <!-- SEQ:79, Table:MATL/CHARASGN, Field:ATAWE, M/O:, Type:VARC, Size:255, Description:Unit of Measurement --> + <!-- SEQ:79, Table:MATL/CHARASGN, Field:ATAWE, M/O:, Type:UNIT, Size:3, Description:Unit of Measurement --> <xsd:element name="ATAWE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:80, Table:MATL/CHARASGN, Field:ATFLB, M/O:, Type:VARC, Size:255, Description:Internal floating point value to --> + <!-- SEQ:80, Table:MATL/CHARASGN, Field:ATFLB, M/O:, Type:FLTP, Size:16, Description:Internal floating point value to --> <xsd:element name="ATFLB" type="xsd:string" minOccurs="0"/> - <!-- SEQ:81, Table:MATL/CHARASGN, Field:ATAW1, M/O:, Type:VARC, Size:255, Description:Unit of Measurement --> + <!-- SEQ:81, Table:MATL/CHARASGN, Field:ATAW1, M/O:, Type:UNIT, Size:3, Description:Unit of Measurement --> <xsd:element name="ATAW1" type="xsd:string" minOccurs="0"/> - <!-- SEQ:82, Table:MATL/CHARASGN, Field:ATBEZ, M/O:, Type:VARC, Size:255, Description:특성내역 --> + <!-- SEQ:82, Table:MATL/CHARASGN, Field:ATBEZ, M/O:, Type:VARC, Size:30, Description:특성내역 --> <xsd:element name="ATBEZ" type="xsd:string" minOccurs="0"/> - <!-- SEQ:83, Table:MATL/CHARASGN, Field:ATWTB, M/O:, Type:VARC, Size:255, Description:특성값내역 --> + <!-- SEQ:83, Table:MATL/CHARASGN, Field:ATWTB, M/O:, Type:VARC, Size:30, Description:특성값내역 --> <xsd:element name="ATWTB" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> diff --git a/public/wsdl/IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl b/public/wsdl/IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl index 2711c449..ae44f4ab 100644 --- a/public/wsdl/IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl +++ b/public/wsdl/IF_MDZ_EVCP_ORGANIZATION_MASTER.wsdl @@ -26,334 +26,334 @@ </xsd:complexType> <xsd:complexType name="HRHMTB_CCTR"> <xsd:sequence> - <!-- SEQ:73, Table:HRHMTB_CCTR, Field:CCTR, M/O:M, Type:VARC, Size:255, Description:Cost Center --> + <!-- SEQ:73, Table:HRHMTB_CCTR, Field:CCTR, M/O:M, Type:VARC, Size:10, Description:Cost Center --> <xsd:element name="CCTR" type="xsd:string"/> - <!-- SEQ:74, Table:HRHMTB_CCTR, Field:DATBI, M/O:M, Type:VARC, Size:255, Description:Valid to --> + <!-- SEQ:74, Table:HRHMTB_CCTR, Field:DATBI, M/O:M, Type:VARC, Size:8, Description:Valid to --> <xsd:element name="DATBI" type="xsd:string"/> - <!-- SEQ:75, Table:HRHMTB_CCTR, Field:KOKRS, M/O:M, Type:VARC, Size:255, Description:Controlling Area --> + <!-- SEQ:75, Table:HRHMTB_CCTR, Field:KOKRS, M/O:M, Type:VARC, Size:4, Description:Controlling Area --> <xsd:element name="KOKRS" type="xsd:string"/> - <!-- SEQ:76, Table:HRHMTB_CCTR, Field:ABTEI, M/O:, Type:VARC, Size:255, Description:Department --> + <!-- SEQ:76, Table:HRHMTB_CCTR, Field:ABTEI, M/O:, Type:VARC, Size:12, Description:Department --> <xsd:element name="ABTEI" type="xsd:string" minOccurs="0"/> - <!-- SEQ:77, Table:HRHMTB_CCTR, Field:BKZER, M/O:, Type:VARC, Size:255, Description:Actual Revenue --> + <!-- SEQ:77, Table:HRHMTB_CCTR, Field:BKZER, M/O:, Type:VARC, Size:1, Description:Actual Revenue --> <xsd:element name="BKZER" type="xsd:string" minOccurs="0"/> - <!-- SEQ:78, Table:HRHMTB_CCTR, Field:BKZKP, M/O:, Type:VARC, Size:255, Description:Actual Primary Costs --> + <!-- SEQ:78, Table:HRHMTB_CCTR, Field:BKZKP, M/O:, Type:VARC, Size:1, Description:Actual Primary Costs --> <xsd:element name="BKZKP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:79, Table:HRHMTB_CCTR, Field:BKZKS, M/O:, Type:VARC, Size:255, Description:Actual Secondary Costs --> + <!-- SEQ:79, Table:HRHMTB_CCTR, Field:BKZKS, M/O:, Type:VARC, Size:1, Description:Actual Secondary Costs --> <xsd:element name="BKZKS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:80, Table:HRHMTB_CCTR, Field:BKZOB, M/O:, Type:VARC, Size:255, Description:Commitment Update --> + <!-- SEQ:80, Table:HRHMTB_CCTR, Field:BKZOB, M/O:, Type:VARC, Size:1, Description:Commitment Update --> <xsd:element name="BKZOB" type="xsd:string" minOccurs="0"/> - <!-- SEQ:81, Table:HRHMTB_CCTR, Field:BUKRS, M/O:, Type:VARC, Size:255, Description:Company Code --> + <!-- SEQ:81, Table:HRHMTB_CCTR, Field:BUKRS, M/O:, Type:VARC, Size:4, Description:Company Code --> <xsd:element name="BUKRS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:82, Table:HRHMTB_CCTR, Field:DATAB, M/O:, Type:VARC, Size:255, Description:Valid from --> + <!-- SEQ:82, Table:HRHMTB_CCTR, Field:DATAB, M/O:, Type:VARC, Size:8, Description:Valid from --> <xsd:element name="DATAB" type="xsd:string" minOccurs="0"/> - <!-- SEQ:83, Table:HRHMTB_CCTR, Field:KHINR, M/O:, Type:VARC, Size:255, Description:Standard Hierarchy Area --> + <!-- SEQ:83, Table:HRHMTB_CCTR, Field:KHINR, M/O:, Type:VARC, Size:12, Description:Standard Hierarchy Area --> <xsd:element name="KHINR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:84, Table:HRHMTB_CCTR, Field:FUNC_AREA, M/O:, Type:VARC, Size:255, Description:Functional Area --> + <!-- SEQ:84, Table:HRHMTB_CCTR, Field:FUNC_AREA, M/O:, Type:VARC, Size:16, Description:Functional Area --> <xsd:element name="FUNC_AREA" type="xsd:string" minOccurs="0"/> - <!-- SEQ:85, Table:HRHMTB_CCTR, Field:GSBER, M/O:, Type:VARC, Size:255, Description:Business Area --> + <!-- SEQ:85, Table:HRHMTB_CCTR, Field:GSBER, M/O:, Type:VARC, Size:4, Description:Business Area --> <xsd:element name="GSBER" type="xsd:string" minOccurs="0"/> - <!-- SEQ:86, Table:HRHMTB_CCTR, Field:KOSAR, M/O:, Type:VARC, Size:255, Description:Cost Center Category --> + <!-- SEQ:86, Table:HRHMTB_CCTR, Field:KOSAR, M/O:, Type:VARC, Size:1, Description:Cost Center Category --> <xsd:element name="KOSAR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:87, Table:HRHMTB_CCTR, Field:MGEFL, M/O:, Type:VARC, Size:255, Description:Record Quantity --> + <!-- SEQ:87, Table:HRHMTB_CCTR, Field:MGEFL, M/O:, Type:VARC, Size:1, Description:Record Quantity --> <xsd:element name="MGEFL" type="xsd:string" minOccurs="0"/> - <!-- SEQ:88, Table:HRHMTB_CCTR, Field:PKZER, M/O:, Type:VARC, Size:255, Description:Plan Revenues --> + <!-- SEQ:88, Table:HRHMTB_CCTR, Field:PKZER, M/O:, Type:VARC, Size:1, Description:Plan Revenues --> <xsd:element name="PKZER" type="xsd:string" minOccurs="0"/> - <!-- SEQ:89, Table:HRHMTB_CCTR, Field:PKZKP, M/O:, Type:VARC, Size:255, Description:Plan Primary Costs --> + <!-- SEQ:89, Table:HRHMTB_CCTR, Field:PKZKP, M/O:, Type:VARC, Size:1, Description:Plan Primary Costs --> <xsd:element name="PKZKP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:90, Table:HRHMTB_CCTR, Field:PKZKS, M/O:, Type:VARC, Size:255, Description:Plan Secondary Costs --> + <!-- SEQ:90, Table:HRHMTB_CCTR, Field:PKZKS, M/O:, Type:VARC, Size:1, Description:Plan Secondary Costs --> <xsd:element name="PKZKS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:91, Table:HRHMTB_CCTR, Field:PRCTR, M/O:, Type:VARC, Size:255, Description:Profit Center --> + <!-- SEQ:91, Table:HRHMTB_CCTR, Field:PRCTR, M/O:, Type:VARC, Size:10, Description:Profit Center --> <xsd:element name="PRCTR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:92, Table:HRHMTB_CCTR, Field:TXJCD, M/O:, Type:VARC, Size:255, Description:Tax Jurisdiction --> + <!-- SEQ:92, Table:HRHMTB_CCTR, Field:TXJCD, M/O:, Type:VARC, Size:15, Description:Tax Jurisdiction --> <xsd:element name="TXJCD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:93, Table:HRHMTB_CCTR, Field:VERAK, M/O:, Type:VARC, Size:255, Description:Person Responsible --> + <!-- SEQ:93, Table:HRHMTB_CCTR, Field:VERAK, M/O:, Type:VARC, Size:60, Description:Person Responsible --> <xsd:element name="VERAK" type="xsd:string" minOccurs="0"/> - <!-- SEQ:94, Table:HRHMTB_CCTR, Field:VERAK_USE, M/O:, Type:VARC, Size:255, Description:User Responsible --> + <!-- SEQ:94, Table:HRHMTB_CCTR, Field:VERAK_USE, M/O:, Type:VARC, Size:12, Description:User Responsible --> <xsd:element name="VERAK_USE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:95, Table:HRHMTB_CCTR, Field:VMETH, M/O:, Type:VARC, Size:255, Description:Allowed Allocation methods --> + <!-- SEQ:95, Table:HRHMTB_CCTR, Field:VMETH, M/O:, Type:VARC, Size:2, Description:Allowed Allocation methods --> <xsd:element name="VMETH" type="xsd:string" minOccurs="0"/> - <!-- SEQ:96, Table:HRHMTB_CCTR, Field:WAERS, M/O:, Type:VARC, Size:255, Description:Currency --> + <!-- SEQ:96, Table:HRHMTB_CCTR, Field:WAERS, M/O:, Type:VARC, Size:5, Description:Currency --> <xsd:element name="WAERS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:97, Table:HRHMTB_CCTR, Field:ZZBRANCH, M/O:, Type:VARC, Size:255, Description:Business Place --> + <!-- SEQ:97, Table:HRHMTB_CCTR, Field:ZZBRANCH, M/O:, Type:VARC, Size:4, Description:Business Place --> <xsd:element name="ZZBRANCH" type="xsd:string" minOccurs="0"/> - <!-- SEQ:98, Table:HRHMTB_CCTR, Field:ZZDELETE, M/O:, Type:VARC, Size:255, Description:Delete Flag --> + <!-- SEQ:98, Table:HRHMTB_CCTR, Field:ZZDELETE, M/O:, Type:VARC, Size:1, Description:Delete Flag --> <xsd:element name="ZZDELETE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:99, Table:HRHMTB_CCTR, Field:ZZFCTRI, M/O:, Type:VARC, Size:255, Description:Create Fund Center Indicator --> + <!-- SEQ:99, Table:HRHMTB_CCTR, Field:ZZFCTRI, M/O:, Type:VARC, Size:1, Description:Create Fund Center Indicator --> <xsd:element name="ZZFCTRI" type="xsd:string" minOccurs="0"/> - <!-- SEQ:100, Table:HRHMTB_CCTR, Field:ZZSECCODE, M/O:, Type:VARC, Size:255, Description:Section Code --> + <!-- SEQ:100, Table:HRHMTB_CCTR, Field:ZZSECCODE, M/O:, Type:VARC, Size:4, Description:Section Code --> <xsd:element name="ZZSECCODE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:101, Table:HRHMTB_CCTR, Field:ZZSEGMENT, M/O:, Type:VARC, Size:255, Description:Segment for Segmental Reporting --> + <!-- SEQ:101, Table:HRHMTB_CCTR, Field:ZZSEGMENT, M/O:, Type:VARC, Size:10, Description:Segment for Segmental Reporting --> <xsd:element name="ZZSEGMENT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:102, Table:HRHMTB_CCTR, Field:ANRED, M/O:, Type:VARC, Size:255, Description:Title --> + <!-- SEQ:102, Table:HRHMTB_CCTR, Field:ANRED, M/O:, Type:VARC, Size:15, Description:Title --> <xsd:element name="ANRED" type="xsd:string" minOccurs="0"/> - <!-- SEQ:103, Table:HRHMTB_CCTR, Field:NAME1, M/O:, Type:VARC, Size:255, Description:Name 1 --> + <!-- SEQ:103, Table:HRHMTB_CCTR, Field:NAME1, M/O:, Type:VARC, Size:70, Description:Name 1 --> <xsd:element name="NAME1" type="xsd:string" minOccurs="0"/> - <!-- SEQ:104, Table:HRHMTB_CCTR, Field:NAME2, M/O:, Type:VARC, Size:255, Description:Name 2 --> + <!-- SEQ:104, Table:HRHMTB_CCTR, Field:NAME2, M/O:, Type:VARC, Size:70, Description:Name 2 --> <xsd:element name="NAME2" type="xsd:string" minOccurs="0"/> - <!-- SEQ:105, Table:HRHMTB_CCTR, Field:NAME3, M/O:, Type:VARC, Size:255, Description:Name 3 --> + <!-- SEQ:105, Table:HRHMTB_CCTR, Field:NAME3, M/O:, Type:VARC, Size:70, Description:Name 3 --> <xsd:element name="NAME3" type="xsd:string" minOccurs="0"/> - <!-- SEQ:106, Table:HRHMTB_CCTR, Field:NAME4, M/O:, Type:VARC, Size:255, Description:Name 4 --> + <!-- SEQ:106, Table:HRHMTB_CCTR, Field:NAME4, M/O:, Type:VARC, Size:70, Description:Name 4 --> <xsd:element name="NAME4" type="xsd:string" minOccurs="0"/> - <!-- SEQ:107, Table:HRHMTB_CCTR, Field:ORT01, M/O:, Type:VARC, Size:255, Description:City --> + <!-- SEQ:107, Table:HRHMTB_CCTR, Field:ORT01, M/O:, Type:VARC, Size:35, Description:City --> <xsd:element name="ORT01" type="xsd:string" minOccurs="0"/> - <!-- SEQ:108, Table:HRHMTB_CCTR, Field:ORT02, M/O:, Type:VARC, Size:255, Description:District --> + <!-- SEQ:108, Table:HRHMTB_CCTR, Field:ORT02, M/O:, Type:VARC, Size:35, Description:District --> <xsd:element name="ORT02" type="xsd:string" minOccurs="0"/> - <!-- SEQ:109, Table:HRHMTB_CCTR, Field:STRAS, M/O:, Type:VARC, Size:255, Description:House number and street --> + <!-- SEQ:109, Table:HRHMTB_CCTR, Field:STRAS, M/O:, Type:VARC, Size:35, Description:House number and street --> <xsd:element name="STRAS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:110, Table:HRHMTB_CCTR, Field:PFACH, M/O:, Type:VARC, Size:255, Description:PO Box --> + <!-- SEQ:110, Table:HRHMTB_CCTR, Field:PFACH, M/O:, Type:VARC, Size:10, Description:PO Box --> <xsd:element name="PFACH" type="xsd:string" minOccurs="0"/> - <!-- SEQ:111, Table:HRHMTB_CCTR, Field:PSTLZ, M/O:, Type:VARC, Size:255, Description:Postal Code --> + <!-- SEQ:111, Table:HRHMTB_CCTR, Field:PSTLZ, M/O:, Type:VARC, Size:10, Description:Postal Code --> <xsd:element name="PSTLZ" type="xsd:string" minOccurs="0"/> - <!-- SEQ:112, Table:HRHMTB_CCTR, Field:PSTL2, M/O:, Type:VARC, Size:255, Description:P.O. Box Postal Code --> + <!-- SEQ:112, Table:HRHMTB_CCTR, Field:PSTL2, M/O:, Type:VARC, Size:10, Description:P.O. Box Postal Code --> <xsd:element name="PSTL2" type="xsd:string" minOccurs="0"/> - <!-- SEQ:113, Table:HRHMTB_CCTR, Field:REGIO, M/O:, Type:VARC, Size:255, Description:Region (State, Province, County) --> + <!-- SEQ:113, Table:HRHMTB_CCTR, Field:REGIO, M/O:, Type:VARC, Size:3, Description:Region (State, Province, County) --> <xsd:element name="REGIO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:114, Table:HRHMTB_CCTR, Field:SPRAS, M/O:, Type:VARC, Size:255, Description:Language Key --> + <!-- SEQ:114, Table:HRHMTB_CCTR, Field:SPRAS, M/O:, Type:VARC, Size:1, Description:Language Key --> <xsd:element name="SPRAS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:115, Table:HRHMTB_CCTR, Field:TELBX, M/O:, Type:VARC, Size:255, Description:Telebox number --> + <!-- SEQ:115, Table:HRHMTB_CCTR, Field:TELBX, M/O:, Type:VARC, Size:15, Description:Telebox number --> <xsd:element name="TELBX" type="xsd:string" minOccurs="0"/> - <!-- SEQ:116, Table:HRHMTB_CCTR, Field:TELF1, M/O:, Type:VARC, Size:255, Description:First telephone number --> + <!-- SEQ:116, Table:HRHMTB_CCTR, Field:TELF1, M/O:, Type:VARC, Size:16, Description:First telephone number --> <xsd:element name="TELF1" type="xsd:string" minOccurs="0"/> - <!-- SEQ:117, Table:HRHMTB_CCTR, Field:TELF2, M/O:, Type:VARC, Size:255, Description:Second telephone number --> + <!-- SEQ:117, Table:HRHMTB_CCTR, Field:TELF2, M/O:, Type:VARC, Size:16, Description:Second telephone number --> <xsd:element name="TELF2" type="xsd:string" minOccurs="0"/> - <!-- SEQ:118, Table:HRHMTB_CCTR, Field:TELFX, M/O:, Type:VARC, Size:255, Description:Fax Number --> + <!-- SEQ:118, Table:HRHMTB_CCTR, Field:TELFX, M/O:, Type:VARC, Size:31, Description:Fax Number --> <xsd:element name="TELFX" type="xsd:string" minOccurs="0"/> - <!-- SEQ:119, Table:HRHMTB_CCTR, Field:TELTX, M/O:, Type:VARC, Size:255, Description:Teletex number --> + <!-- SEQ:119, Table:HRHMTB_CCTR, Field:TELTX, M/O:, Type:VARC, Size:30, Description:Teletex number --> <xsd:element name="TELTX" type="xsd:string" minOccurs="0"/> - <!-- SEQ:120, Table:HRHMTB_CCTR, Field:TELX1, M/O:, Type:VARC, Size:255, Description:Telex number --> + <!-- SEQ:120, Table:HRHMTB_CCTR, Field:TELX1, M/O:, Type:VARC, Size:30, Description:Telex number --> <xsd:element name="TELX1" type="xsd:string" minOccurs="0"/> - <!-- SEQ:121, Table:HRHMTB_CCTR, Field:DATLT, M/O:, Type:VARC, Size:255, Description:Data communication line no. --> + <!-- SEQ:121, Table:HRHMTB_CCTR, Field:DATLT, M/O:, Type:VARC, Size:14, Description:Data communication line no. --> <xsd:element name="DATLT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:122, Table:HRHMTB_CCTR, Field:DRNAM, M/O:, Type:VARC, Size:255, Description:Printer destination for CCtr report --> + <!-- SEQ:122, Table:HRHMTB_CCTR, Field:DRNAM, M/O:, Type:VARC, Size:4, Description:Printer destination for CCtr report --> <xsd:element name="DRNAM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:123, Table:HRHMTB_CCTR, Field:LAND1, M/O:, Type:VARC, Size:255, Description:Country Key --> + <!-- SEQ:123, Table:HRHMTB_CCTR, Field:LAND1, M/O:, Type:VARC, Size:3, Description:Country Key --> <xsd:element name="LAND1" type="xsd:string" minOccurs="0"/> <xsd:element name="TEXT" type="p0:TEXT" minOccurs="0" maxOccurs="unbounded" nillable="true"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="TEXT"> <xsd:sequence> - <!-- SEQ:10, Table:HRHMTB_ZGSBER/TEXT, Field:LANGU, M/O:M, Type:VARC, Size:255, Description:Language Key --> + <!-- SEQ:10, Table:HRHMTB_ZGSBER/TEXT, Field:LANGU, M/O:M, Type:VARC, Size:1, Description:Language Key --> <xsd:element name="LANGU" type="xsd:string"/> - <!-- SEQ:125, Table:HRHMTB_CCTR/TEXT, Field:KTEXT, M/O:, Type:VARC, Size:255, Description:General Name --> + <!-- SEQ:125, Table:HRHMTB_CCTR/TEXT, Field:KTEXT, M/O:, Type:VARC, Size:60, Description:General Name --> <xsd:element name="KTEXT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:126, Table:HRHMTB_CCTR/TEXT, Field:LTEXT, M/O:, Type:VARC, Size:255, Description:Description --> + <!-- SEQ:126, Table:HRHMTB_CCTR/TEXT, Field:LTEXT, M/O:, Type:VARC, Size:120, Description:Description --> <xsd:element name="LTEXT" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="HRHMTB_PCTR"> <xsd:sequence> - <!-- SEQ:127, Table:HRHMTB_PCTR, Field:PCTR, M/O:M, Type:VARC, Size:255, Description:Profit Center --> + <!-- SEQ:127, Table:HRHMTB_PCTR, Field:PCTR, M/O:M, Type:VARC, Size:10, Description:Profit Center --> <xsd:element name="PCTR" type="xsd:string"/> - <!-- SEQ:128, Table:HRHMTB_PCTR, Field:KOKRS, M/O:M, Type:VARC, Size:255, Description:Controlling Area --> + <!-- SEQ:128, Table:HRHMTB_PCTR, Field:KOKRS, M/O:M, Type:VARC, Size:4, Description:Controlling Area --> <xsd:element name="KOKRS" type="xsd:string"/> - <!-- SEQ:129, Table:HRHMTB_PCTR, Field:DATBI, M/O:M, Type:VARC, Size:255, Description:Valid to --> + <!-- SEQ:129, Table:HRHMTB_PCTR, Field:DATBI, M/O:M, Type:VARC, Size:8, Description:Valid to --> <xsd:element name="DATBI" type="xsd:string"/> - <!-- SEQ:130, Table:HRHMTB_PCTR, Field:ABTEI, M/O:, Type:VARC, Size:255, Description:Department --> + <!-- SEQ:130, Table:HRHMTB_PCTR, Field:ABTEI, M/O:, Type:VARC, Size:12, Description:Department --> <xsd:element name="ABTEI" type="xsd:string" minOccurs="0"/> - <!-- SEQ:131, Table:HRHMTB_PCTR, Field:LOCK_IND, M/O:, Type:VARC, Size:255, Description:Lock indicator --> + <!-- SEQ:131, Table:HRHMTB_PCTR, Field:LOCK_IND, M/O:, Type:VARC, Size:1, Description:Lock indicator --> <xsd:element name="LOCK_IND" type="xsd:string" minOccurs="0"/> - <!-- SEQ:132, Table:HRHMTB_PCTR, Field:VERAK, M/O:, Type:VARC, Size:255, Description:Person Responsible --> + <!-- SEQ:132, Table:HRHMTB_PCTR, Field:VERAK, M/O:, Type:VARC, Size:20, Description:Person Responsible --> <xsd:element name="VERAK" type="xsd:string" minOccurs="0"/> - <!-- SEQ:133, Table:HRHMTB_PCTR, Field:VERAK_USE, M/O:, Type:VARC, Size:255, Description:User Responsible --> + <!-- SEQ:133, Table:HRHMTB_PCTR, Field:VERAK_USE, M/O:, Type:VARC, Size:12, Description:User Responsible --> <xsd:element name="VERAK_USE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:134, Table:HRHMTB_PCTR, Field:SEGMENT, M/O:, Type:VARC, Size:255, Description:Segment --> + <!-- SEQ:134, Table:HRHMTB_PCTR, Field:SEGMENT, M/O:, Type:VARC, Size:10, Description:Segment --> <xsd:element name="SEGMENT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:135, Table:HRHMTB_PCTR, Field:TXJCD, M/O:, Type:VARC, Size:255, Description:Tax Jurisdiction --> + <!-- SEQ:135, Table:HRHMTB_PCTR, Field:TXJCD, M/O:, Type:VARC, Size:15, Description:Tax Jurisdiction --> <xsd:element name="TXJCD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:136, Table:HRHMTB_PCTR, Field:DATAB, M/O:, Type:VARC, Size:255, Description:Valid from --> + <!-- SEQ:136, Table:HRHMTB_PCTR, Field:DATAB, M/O:, Type:VARC, Size:8, Description:Valid from --> <xsd:element name="DATAB" type="xsd:string" minOccurs="0"/> - <!-- SEQ:137, Table:HRHMTB_PCTR, Field:KHINR, M/O:, Type:VARC, Size:255, Description:Profit center area(Profit center group) --> + <!-- SEQ:137, Table:HRHMTB_PCTR, Field:KHINR, M/O:, Type:VARC, Size:12, Description:Profit center area(Profit center group) --> <xsd:element name="KHINR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:138, Table:HRHMTB_PCTR, Field:ZZDELETE, M/O:, Type:VARC, Size:255, Description:Delete Flag --> + <!-- SEQ:138, Table:HRHMTB_PCTR, Field:ZZDELETE, M/O:, Type:VARC, Size:1, Description:Delete Flag --> <xsd:element name="ZZDELETE" type="xsd:string" minOccurs="0"/> <xsd:element name="TEXT" type="p0:TEXT" minOccurs="0" maxOccurs="unbounded" nillable="true"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="HRHMTB_ZBUKRS"> <xsd:sequence> - <!-- SEQ:1, Table:HRHMTB_ZBUKRS, Field:ZBUKRS, M/O:M, Type:VARC, Size:255, Description:Company Code --> + <!-- SEQ:1, Table:HRHMTB_ZBUKRS, Field:ZBUKRS, M/O:M, Type:VARC, Size:4, Description:Company Code --> <xsd:element name="ZBUKRS" type="xsd:string"/> - <!-- SEQ:2, Table:HRHMTB_ZBUKRS, Field:ZZBUTXT, M/O:, Type:VARC, Size:255, Description:Company Code Name --> + <!-- SEQ:2, Table:HRHMTB_ZBUKRS, Field:ZZBUTXT, M/O:, Type:VARC, Size:50, Description:Company Code Name --> <xsd:element name="ZZBUTXT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:3, Table:HRHMTB_ZBUKRS, Field:ZZCITY, M/O:, Type:VARC, Size:255, Description:City --> + <!-- SEQ:3, Table:HRHMTB_ZBUKRS, Field:ZZCITY, M/O:, Type:VARC, Size:50, Description:City --> <xsd:element name="ZZCITY" type="xsd:string" minOccurs="0"/> - <!-- SEQ:4, Table:HRHMTB_ZBUKRS, Field:ZZCOUNTRY, M/O:, Type:VARC, Size:255, Description:Country Key --> + <!-- SEQ:4, Table:HRHMTB_ZBUKRS, Field:ZZCOUNTRY, M/O:, Type:VARC, Size:3, Description:Country Key --> <xsd:element name="ZZCOUNTRY" type="xsd:string" minOccurs="0"/> - <!-- SEQ:5, Table:HRHMTB_ZBUKRS, Field:CURR_BUKR, M/O:, Type:VARC, Size:255, Description:Currency --> + <!-- SEQ:5, Table:HRHMTB_ZBUKRS, Field:CURR_BUKR, M/O:, Type:VARC, Size:5, Description:Currency --> <xsd:element name="CURR_BUKR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:6, Table:HRHMTB_ZBUKRS, Field:ZZLANGU, M/O:, Type:VARC, Size:255, Description:Language Key --> + <!-- SEQ:6, Table:HRHMTB_ZBUKRS, Field:ZZLANGU, M/O:, Type:VARC, Size:1, Description:Language Key --> <xsd:element name="ZZLANGU" type="xsd:string" minOccurs="0"/> - <!-- SEQ:7, Table:HRHMTB_ZBUKRS, Field:ZZDELETE, M/O:, Type:VARC, Size:255, Description:Flag for deletion --> + <!-- SEQ:7, Table:HRHMTB_ZBUKRS, Field:ZZDELETE, M/O:, Type:VARC, Size:1, Description:Flag for deletion --> <xsd:element name="ZZDELETE" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="HRHMTB_ZEKGRP"> <xsd:sequence> - <!-- SEQ:26, Table:HRHMTB_ZEKGRP, Field:ZEKGRP, M/O:M, Type:VARC, Size:255, Description:Purchasing Group --> + <!-- SEQ:26, Table:HRHMTB_ZEKGRP, Field:ZEKGRP, M/O:M, Type:VARC, Size:3, Description:Purchasing Group --> <xsd:element name="ZEKGRP" type="xsd:string"/> - <!-- SEQ:27, Table:HRHMTB_ZEKGRP, Field:ZZEKNAM, M/O:, Type:VARC, Size:255, Description:Purchasing Group Description --> + <!-- SEQ:27, Table:HRHMTB_ZEKGRP, Field:ZZEKNAM, M/O:, Type:VARC, Size:36, Description:Purchasing Group Description --> <xsd:element name="ZZEKNAM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:28, Table:HRHMTB_ZEKGRP, Field:ZZEKTEL, M/O:, Type:VARC, Size:255, Description:Telephone Number --> + <!-- SEQ:28, Table:HRHMTB_ZEKGRP, Field:ZZEKTEL, M/O:, Type:VARC, Size:12, Description:Telephone Number --> <xsd:element name="ZZEKTEL" type="xsd:string" minOccurs="0"/> - <!-- SEQ:29, Table:HRHMTB_ZEKGRP, Field:ZZTELFX, M/O:, Type:VARC, Size:255, Description:Fax Number --> + <!-- SEQ:29, Table:HRHMTB_ZEKGRP, Field:ZZTELFX, M/O:, Type:VARC, Size:31, Description:Fax Number --> <xsd:element name="ZZTELFX" type="xsd:string" minOccurs="0"/> - <!-- SEQ:30, Table:HRHMTB_ZEKGRP, Field:ZZTEL_NUM, M/O:, Type:VARC, Size:255, Description:Telephone Number (Office) --> + <!-- SEQ:30, Table:HRHMTB_ZEKGRP, Field:ZZTEL_NUM, M/O:, Type:VARC, Size:30, Description:Telephone Number (Office) --> <xsd:element name="ZZTEL_NUM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:31, Table:HRHMTB_ZEKGRP, Field:ZZEMPNUM, M/O:, Type:VARC, Size:255, Description:Employee Number --> + <!-- SEQ:31, Table:HRHMTB_ZEKGRP, Field:ZZEMPNUM, M/O:, Type:VARC, Size:10, Description:Employee Number --> <xsd:element name="ZZEMPNUM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:32, Table:HRHMTB_ZEKGRP, Field:ZZSINGLE, M/O:, Type:VARC, Size:255, Description:Single ID --> + <!-- SEQ:32, Table:HRHMTB_ZEKGRP, Field:ZZSINGLE, M/O:, Type:VARC, Size:241, Description:Single ID --> <xsd:element name="ZZSINGLE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:33, Table:HRHMTB_ZEKGRP, Field:ZZDELETE, M/O:, Type:VARC, Size:255, Description:Flag for deletion --> + <!-- SEQ:33, Table:HRHMTB_ZEKGRP, Field:ZZDELETE, M/O:, Type:VARC, Size:1, Description:Flag for deletion --> <xsd:element name="ZZDELETE" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="HRHMTB_ZEKORG"> <xsd:sequence> - <!-- SEQ:23, Table:HRHMTB_ZEKORG, Field:ZEKORG, M/O:M, Type:VARC, Size:255, Description:Purchasing Organization --> + <!-- SEQ:23, Table:HRHMTB_ZEKORG, Field:ZEKORG, M/O:M, Type:VARC, Size:4, Description:Purchasing Organization --> <xsd:element name="ZEKORG" type="xsd:string"/> - <!-- SEQ:24, Table:HRHMTB_ZEKORG, Field:ZZEKOTX, M/O:, Type:VARC, Size:255, Description:Purchasing Organization Description --> + <!-- SEQ:24, Table:HRHMTB_ZEKORG, Field:ZZEKOTX, M/O:, Type:VARC, Size:40, Description:Purchasing Organization Description --> <xsd:element name="ZZEKOTX" type="xsd:string" minOccurs="0"/> - <!-- SEQ:25, Table:HRHMTB_ZEKORG, Field:ZZDELETE, M/O:, Type:VARC, Size:255, Description:Flag for deletion --> + <!-- SEQ:25, Table:HRHMTB_ZEKORG, Field:ZZDELETE, M/O:, Type:VARC, Size:1, Description:Flag for deletion --> <xsd:element name="ZZDELETE" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="HRHMTB_ZGSBER"> <xsd:sequence> - <!-- SEQ:8, Table:HRHMTB_ZGSBER, Field:ZGSBER, M/O:M, Type:VARC, Size:255, Description:Business Area --> + <!-- SEQ:8, Table:HRHMTB_ZGSBER, Field:ZGSBER, M/O:M, Type:VARC, Size:4, Description:Business Area --> <xsd:element name="ZGSBER" type="xsd:string"/> - <!-- SEQ:9, Table:HRHMTB_ZGSBER, Field:ZZDELETE, M/O:, Type:VARC, Size:255, Description:Flag for deletion --> + <!-- SEQ:9, Table:HRHMTB_ZGSBER, Field:ZZDELETE, M/O:, Type:VARC, Size:1, Description:Flag for deletion --> <xsd:element name="ZZDELETE" type="xsd:string" minOccurs="0"/> <xsd:element name="TEXT" type="p0:TEXT2" minOccurs="0" maxOccurs="unbounded" nillable="true"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="TEXT2"> <xsd:sequence> - <!-- SEQ:10, Table:HRHMTB_ZGSBER/TEXT, Field:LANGU, M/O:M, Type:VARC, Size:255, Description:Language Key --> + <!-- SEQ:10, Table:HRHMTB_ZGSBER/TEXT, Field:LANGU, M/O:M, Type:VARC, Size:1, Description:Language Key --> <xsd:element name="LANGU" type="xsd:string"/> - <!-- SEQ:11, Table:HRHMTB_ZGSBER/TEXT, Field:TXTMI, M/O:, Type:VARC, Size:255, Description:Business area description --> + <!-- SEQ:11, Table:HRHMTB_ZGSBER/TEXT, Field:TXTMI, M/O:, Type:VARC, Size:60, Description:Business area description --> <xsd:element name="TXTMI" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="HRHMTB_ZLGORT"> <xsd:sequence> - <!-- SEQ:19, Table:HRHMTB_ZLGORT, Field:ZLGORT, M/O:M, Type:VARC, Size:255, Description:Storage Location --> + <!-- SEQ:19, Table:HRHMTB_ZLGORT, Field:ZLGORT, M/O:M, Type:VARC, Size:4, Description:Storage Location --> <xsd:element name="ZLGORT" type="xsd:string"/> - <!-- SEQ:20, Table:HRHMTB_ZLGORT, Field:ZWERKS, M/O:M, Type:VARC, Size:255, Description:Plant --> + <!-- SEQ:20, Table:HRHMTB_ZLGORT, Field:ZWERKS, M/O:M, Type:VARC, Size:4, Description:Plant --> <xsd:element name="ZWERKS" type="xsd:string"/> - <!-- SEQ:21, Table:HRHMTB_ZLGORT, Field:ZZLGOBE, M/O:, Type:VARC, Size:255, Description:Storage Location Description --> + <!-- SEQ:21, Table:HRHMTB_ZLGORT, Field:ZZLGOBE, M/O:, Type:VARC, Size:32, Description:Storage Location Description --> <xsd:element name="ZZLGOBE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:22, Table:HRHMTB_ZLGORT, Field:ZZDELETE, M/O:, Type:VARC, Size:255, Description:Flag for deletion --> + <!-- SEQ:22, Table:HRHMTB_ZLGORT, Field:ZZDELETE, M/O:, Type:VARC, Size:1, Description:Flag for deletion --> <xsd:element name="ZZDELETE" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="HRHMTB_ZSPART"> <xsd:sequence> - <!-- SEQ:56, Table:HRHMTB_ZSPART, Field:ZSPART, M/O:, Type:VARC, Size:255, Description:Division --> + <!-- SEQ:56, Table:HRHMTB_ZSPART, Field:ZSPART, M/O:, Type:VARC, Size:2, Description:Division --> <xsd:element name="ZSPART" type="xsd:string" minOccurs="0"/> - <!-- SEQ:57, Table:HRHMTB_ZSPART, Field:ZZDELETE, M/O:, Type:VARC, Size:255, Description:Flag for deletion --> + <!-- SEQ:57, Table:HRHMTB_ZSPART, Field:ZZDELETE, M/O:, Type:VARC, Size:1, Description:Flag for deletion --> <xsd:element name="ZZDELETE" type="xsd:string" minOccurs="0"/> <xsd:element name="TEXT" type="p0:TEXT3" minOccurs="0" maxOccurs="unbounded" nillable="true"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="TEXT3"> <xsd:sequence> - <!-- SEQ:10, Table:HRHMTB_ZGSBER/TEXT, Field:LANGU, M/O:M, Type:VARC, Size:255, Description:Language Key --> + <!-- SEQ:10, Table:HRHMTB_ZGSBER/TEXT, Field:LANGU, M/O:M, Type:VARC, Size:1, Description:Language Key --> <xsd:element name="LANGU" type="xsd:string" minOccurs="0"/> - <!-- SEQ:11, Table:HRHMTB_ZGSBER/TEXT, Field:TXTMI, M/O:, Type:VARC, Size:255, Description:Business area description --> + <!-- SEQ:11, Table:HRHMTB_ZGSBER/TEXT, Field:TXTMI, M/O:, Type:VARC, Size:60, Description:Business area description --> <xsd:element name="TXTMI" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="HRHMTB_ZVKBUR"> <xsd:sequence> - <!-- SEQ:42, Table:HRHMTB_ZVKBUR, Field:ZVKBUR, M/O:M, Type:VARC, Size:255, Description:Sales Office --> + <!-- SEQ:42, Table:HRHMTB_ZVKBUR, Field:ZVKBUR, M/O:M, Type:VARC, Size:4, Description:Sales Office --> <xsd:element name="ZVKBUR" type="xsd:string"/> - <!-- SEQ:43, Table:HRHMTB_ZVKBUR, Field:CTRY_SOFF, M/O:, Type:VARC, Size:255, Description:Country Key --> + <!-- SEQ:43, Table:HRHMTB_ZVKBUR, Field:CTRY_SOFF, M/O:, Type:VARC, Size:3, Description:Country Key --> <xsd:element name="CTRY_SOFF" type="xsd:string" minOccurs="0"/> - <!-- SEQ:44, Table:HRHMTB_ZVKBUR, Field:LANG_SOFF, M/O:, Type:VARC, Size:255, Description:Language Key --> + <!-- SEQ:44, Table:HRHMTB_ZVKBUR, Field:LANG_SOFF, M/O:, Type:VARC, Size:1, Description:Language Key --> <xsd:element name="LANG_SOFF" type="xsd:string" minOccurs="0"/> - <!-- SEQ:45, Table:HRHMTB_ZVKBUR, Field:ZZDELETE, M/O:, Type:VARC, Size:255, Description:Flag for deletion --> + <!-- SEQ:45, Table:HRHMTB_ZVKBUR, Field:ZZDELETE, M/O:, Type:VARC, Size:1, Description:Flag for deletion --> <xsd:element name="ZZDELETE" type="xsd:string" minOccurs="0"/> <xsd:element name="TEXT" type="p0:TEXT3" minOccurs="0" maxOccurs="unbounded" nillable="true"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="HRHMTB_ZVKGRP"> <xsd:sequence> - <!-- SEQ:48, Table:HRHMTB_ZVKGRP, Field:ZVKGRP, M/O:M, Type:VARC, Size:255, Description:Sales Group --> + <!-- SEQ:48, Table:HRHMTB_ZVKGRP, Field:ZVKGRP, M/O:M, Type:VARC, Size:3, Description:Sales Group --> <xsd:element name="ZVKGRP" type="xsd:string"/> - <!-- SEQ:49, Table:HRHMTB_ZVKGRP, Field:ZZDELETE, M/O:, Type:VARC, Size:255, Description:Flag for deletion --> + <!-- SEQ:49, Table:HRHMTB_ZVKGRP, Field:ZZDELETE, M/O:, Type:VARC, Size:1, Description:Flag for deletion --> <xsd:element name="ZZDELETE" type="xsd:string" minOccurs="0"/> <xsd:element name="TEXT" type="p0:TEXT3" minOccurs="0" maxOccurs="unbounded" nillable="true"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="HRHMTB_ZVKORG"> <xsd:sequence> - <!-- SEQ:34, Table:HRHMTB_ZVKORG, Field:ZVKORG, M/O:M, Type:VARC, Size:255, Description:Sales Organization --> + <!-- SEQ:34, Table:HRHMTB_ZVKORG, Field:ZVKORG, M/O:M, Type:VARC, Size:4, Description:Sales Organization --> <xsd:element name="ZVKORG" type="xsd:string"/> - <!-- SEQ:35, Table:HRHMTB_ZVKORG, Field:ZZWAERS, M/O:, Type:VARC, Size:255, Description:Statistics currency --> + <!-- SEQ:35, Table:HRHMTB_ZVKORG, Field:ZZWAERS, M/O:, Type:VARC, Size:5, Description:Statistics currency --> <xsd:element name="ZZWAERS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:36, Table:HRHMTB_ZVKORG, Field:ZZVKOKL, M/O:, Type:VARC, Size:255, Description:Sales organization calendar --> + <!-- SEQ:36, Table:HRHMTB_ZVKORG, Field:ZZVKOKL, M/O:, Type:VARC, Size:2, Description:Sales organization calendar --> <xsd:element name="ZZVKOKL" type="xsd:string" minOccurs="0"/> - <!-- SEQ:37, Table:HRHMTB_ZVKORG, Field:ZZKUNNR, M/O:, Type:VARC, Size:255, Description:Customer number for intercompany billing --> + <!-- SEQ:37, Table:HRHMTB_ZVKORG, Field:ZZKUNNR, M/O:, Type:VARC, Size:10, Description:Customer number for intercompany billing --> <xsd:element name="ZZKUNNR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:38, Table:HRHMTB_ZVKORG, Field:ZZBOAVO, M/O:, Type:VARC, Size:255, Description:Rebate processing active in the sales organization --> + <!-- SEQ:38, Table:HRHMTB_ZVKORG, Field:ZZBOAVO, M/O:, Type:VARC, Size:1, Description:Rebate processing active in the sales organization --> <xsd:element name="ZZBOAVO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:39, Table:HRHMTB_ZVKORG, Field:ZZDELETE, M/O:, Type:VARC, Size:255, Description:Flag for deletion --> + <!-- SEQ:39, Table:HRHMTB_ZVKORG, Field:ZZDELETE, M/O:, Type:VARC, Size:1, Description:Flag for deletion --> <xsd:element name="ZZDELETE" type="xsd:string" minOccurs="0"/> <xsd:element name="TEXT" type="p0:TEXT3" minOccurs="0" maxOccurs="unbounded" nillable="true"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="HRHMTB_ZVSTEL"> <xsd:sequence> - <!-- SEQ:60, Table:HRHMTB_ZVSTEL, Field:ZVSTEL, M/O:M, Type:VARC, Size:255, Description:Shipping Point --> + <!-- SEQ:60, Table:HRHMTB_ZVSTEL, Field:ZVSTEL, M/O:M, Type:VARC, Size:4, Description:Shipping Point --> <xsd:element name="ZVSTEL" type="xsd:string"/> - <!-- SEQ:61, Table:HRHMTB_ZVSTEL, Field:AZON_VSTE, M/O:, Type:VARC, Size:255, Description:Departure country --> + <!-- SEQ:61, Table:HRHMTB_ZVSTEL, Field:AZON_VSTE, M/O:, Type:VARC, Size:3, Description:Departure country --> <xsd:element name="AZON_VSTE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:62, Table:HRHMTB_ZVSTEL, Field:ALAN_VSTE, M/O:, Type:VARC, Size:255, Description:Departure zone --> + <!-- SEQ:62, Table:HRHMTB_ZVSTEL, Field:ALAN_VSTE, M/O:, Type:VARC, Size:10, Description:Departure zone --> <xsd:element name="ALAN_VSTE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:63, Table:HRHMTB_ZVSTEL, Field:ZZFABKL, M/O:, Type:VARC, Size:255, Description:Factory calendar key --> + <!-- SEQ:63, Table:HRHMTB_ZVSTEL, Field:ZZFABKL, M/O:, Type:VARC, Size:2, Description:Factory calendar key --> <xsd:element name="ZZFABKL" type="xsd:string" minOccurs="0"/> - <!-- SEQ:64, Table:HRHMTB_ZVSTEL, Field:ZZLAZBS, M/O:, Type:VARC, Size:255, Description:Determine loading time --> + <!-- SEQ:64, Table:HRHMTB_ZVSTEL, Field:ZZLAZBS, M/O:, Type:VARC, Size:1, Description:Determine loading time --> <xsd:element name="ZZLAZBS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:65, Table:HRHMTB_ZVSTEL, Field:ZZRIZBS, M/O:, Type:VARC, Size:255, Description:Determine pick/pack time --> + <!-- SEQ:65, Table:HRHMTB_ZVSTEL, Field:ZZRIZBS, M/O:, Type:VARC, Size:1, Description:Determine pick/pack time --> <xsd:element name="ZZRIZBS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:66, Table:HRHMTB_ZVSTEL, Field:ZZLAZZT, M/O:, Type:VARC, Size:255, Description:Default loading time --> + <!-- SEQ:66, Table:HRHMTB_ZVSTEL, Field:ZZLAZZT, M/O:, Type:VARC, Size:5,2, Description:Default loading time --> <xsd:element name="ZZLAZZT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:67, Table:HRHMTB_ZVSTEL, Field:ZZRIZZT, M/O:, Type:VARC, Size:255, Description:Default pick/pack time --> + <!-- SEQ:67, Table:HRHMTB_ZVSTEL, Field:ZZRIZZT, M/O:, Type:VARC, Size:5,2, Description:Default pick/pack time --> <xsd:element name="ZZRIZZT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:68, Table:HRHMTB_ZVSTEL, Field:CTRY_SHPT, M/O:, Type:VARC, Size:255, Description:Country Key --> + <!-- SEQ:68, Table:HRHMTB_ZVSTEL, Field:CTRY_SHPT, M/O:, Type:VARC, Size:3, Description:Country Key --> <xsd:element name="CTRY_SHPT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:69, Table:HRHMTB_ZVSTEL, Field:LANG_SHPT, M/O:, Type:VARC, Size:255, Description:Language Key --> + <!-- SEQ:69, Table:HRHMTB_ZVSTEL, Field:LANG_SHPT, M/O:, Type:VARC, Size:1, Description:Language Key --> <xsd:element name="LANG_SHPT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:70, Table:HRHMTB_ZVSTEL, Field:ZZDELETE, M/O:, Type:VARC, Size:255, Description:Flag for deletion --> + <!-- SEQ:70, Table:HRHMTB_ZVSTEL, Field:ZZDELETE, M/O:, Type:VARC, Size:1, Description:Flag for deletion --> <xsd:element name="ZZDELETE" type="xsd:string" minOccurs="0"/> <xsd:element name="TEXT" type="p0:TEXT3" minOccurs="0" maxOccurs="unbounded" nillable="true"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="HRHMTB_ZVTWEG"> <xsd:sequence> - <!-- SEQ:52, Table:HRHMTB_ZVTWEG, Field:ZVTWEG, M/O:M, Type:VARC, Size:255, Description:Distribution Channel --> + <!-- SEQ:52, Table:HRHMTB_ZVTWEG, Field:ZVTWEG, M/O:M, Type:VARC, Size:2, Description:Distribution Channel --> <xsd:element name="ZVTWEG" type="xsd:string"/> - <!-- SEQ:53, Table:HRHMTB_ZVTWEG, Field:ZZDELETE, M/O:, Type:VARC, Size:255, Description:Flag for deletion --> + <!-- SEQ:53, Table:HRHMTB_ZVTWEG, Field:ZZDELETE, M/O:, Type:VARC, Size:1, Description:Flag for deletion --> <xsd:element name="ZZDELETE" type="xsd:string" minOccurs="0"/> <xsd:element name="TEXT" type="p0:TEXT3" minOccurs="0" maxOccurs="unbounded" nillable="true"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="HRHMTB_ZWERKS"> <xsd:sequence> - <!-- SEQ:12, Table:HRHMTB_ZWERKS, Field:ZWERKS, M/O:, Type:VARC, Size:255, Description:Plant --> + <!-- SEQ:12, Table:HRHMTB_ZWERKS, Field:ZWERKS, M/O:, Type:VARC, Size:4, Description:Plant --> <xsd:element name="ZWERKS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:13, Table:HRHMTB_ZWERKS, Field:ZZNAME1, M/O:, Type:VARC, Size:255, Description:Name --> + <!-- SEQ:13, Table:HRHMTB_ZWERKS, Field:ZZNAME1, M/O:, Type:VARC, Size:60, Description:Name --> <xsd:element name="ZZNAME1" type="xsd:string" minOccurs="0"/> - <!-- SEQ:14, Table:HRHMTB_ZWERKS, Field:ZZNAME2, M/O:, Type:VARC, Size:255, Description:Name2 --> + <!-- SEQ:14, Table:HRHMTB_ZWERKS, Field:ZZNAME2, M/O:, Type:VARC, Size:60, Description:Name2 --> <xsd:element name="ZZNAME2" type="xsd:string" minOccurs="0"/> - <!-- SEQ:15, Table:HRHMTB_ZWERKS, Field:ZZFABKL, M/O:, Type:VARC, Size:255, Description:Factory Calendar --> + <!-- SEQ:15, Table:HRHMTB_ZWERKS, Field:ZZFABKL, M/O:, Type:VARC, Size:2, Description:Factory Calendar --> <xsd:element name="ZZFABKL" type="xsd:string" minOccurs="0"/> - <!-- SEQ:16, Table:HRHMTB_ZWERKS, Field:CTRY_PLNT, M/O:, Type:VARC, Size:255, Description:Country --> + <!-- SEQ:16, Table:HRHMTB_ZWERKS, Field:CTRY_PLNT, M/O:, Type:VARC, Size:3, Description:Country --> <xsd:element name="CTRY_PLNT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:17, Table:HRHMTB_ZWERKS, Field:LANG_PLNT, M/O:, Type:VARC, Size:255, Description:Language Key --> + <!-- SEQ:17, Table:HRHMTB_ZWERKS, Field:LANG_PLNT, M/O:, Type:VARC, Size:1, Description:Language Key --> <xsd:element name="LANG_PLNT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:18, Table:HRHMTB_ZWERKS, Field:ZZDELETE, M/O:, Type:VARC, Size:255, Description:Flag for deletion --> + <!-- SEQ:18, Table:HRHMTB_ZWERKS, Field:ZZDELETE, M/O:, Type:VARC, Size:1, Description:Flag for deletion --> <xsd:element name="ZZDELETE" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> diff --git a/public/wsdl/IF_MDZ_EVCP_PROJECT_MASTER.wsdl b/public/wsdl/IF_MDZ_EVCP_PROJECT_MASTER.wsdl index decf6894..90302d44 100644 --- a/public/wsdl/IF_MDZ_EVCP_PROJECT_MASTER.wsdl +++ b/public/wsdl/IF_MDZ_EVCP_PROJECT_MASTER.wsdl @@ -13,173 +13,173 @@ </xsd:complexType> <xsd:complexType name="CMCTB_PROJ_MAST"> <xsd:sequence> - <!-- SEQ:1, Table:CMCTB_PROJ_MAST, Field:PROJ_NO, M/O:M, Type:VARC, Size:255, Description:프로젝트번호 --> + <!-- SEQ:1, Table:CMCTB_PROJ_MAST, Field:PROJ_NO, M/O:M, Type:VARC, Size:24, Description:프로젝트번호 --> <xsd:element name="PROJ_NO" type="xsd:string"/> - <!-- SEQ:2, Table:CMCTB_PROJ_MAST, Field:PROJ_DSC, M/O:, Type:VARC, Size:255, Description:프로젝트 설명 --> + <!-- SEQ:2, Table:CMCTB_PROJ_MAST, Field:PROJ_DSC, M/O:, Type:VARC, Size:120, Description:프로젝트 설명 --> <xsd:element name="PROJ_DSC" type="xsd:string" minOccurs="0"/> - <!-- SEQ:7, Table:CMCTB_PROJ_MAST, Field:PROJ_GB, M/O:, Type:VARC, Size:255, Description:프로젝트구분 --> + <!-- SEQ:7, Table:CMCTB_PROJ_MAST, Field:PROJ_GB, M/O:, Type:VARC, Size:2, Description:프로젝트구분 --> <xsd:element name="PROJ_GB" type="xsd:string" minOccurs="0"/> - <!-- SEQ:6, Table:CMCTB_PROJ_MAST, Field:PROJ_DTL_TP, M/O:, Type:VARC, Size:255, Description:프로젝트 세부타입 --> + <!-- SEQ:6, Table:CMCTB_PROJ_MAST, Field:PROJ_DTL_TP, M/O:, Type:VARC, Size:2, Description:프로젝트 세부타입 --> <xsd:element name="PROJ_DTL_TP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:3, Table:CMCTB_PROJ_MAST, Field:PROJ_PROF, M/O:, Type:VARC, Size:255, Description:프로젝트 프로파일 --> + <!-- SEQ:3, Table:CMCTB_PROJ_MAST, Field:PROJ_PROF, M/O:, Type:VARC, Size:7, Description:프로젝트 프로파일 --> <xsd:element name="PROJ_PROF" type="xsd:string" minOccurs="0"/> - <!-- SEQ:17, Table:CMCTB_PROJ_MAST, Field:PROJ_WBS_TP, M/O:, Type:VARC, Size:255, Description:프로젝트 WBS타입 --> + <!-- SEQ:17, Table:CMCTB_PROJ_MAST, Field:PROJ_WBS_TP, M/O:, Type:VARC, Size:2, Description:프로젝트 WBS타입 --> <xsd:element name="PROJ_WBS_TP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:20, Table:CMCTB_PROJ_MAST, Field:INQY_NO, M/O:, Type:VARC, Size:255, Description:안건번호 --> + <!-- SEQ:20, Table:CMCTB_PROJ_MAST, Field:INQY_NO, M/O:, Type:VARC, Size:30, Description:안건번호 --> <xsd:element name="INQY_NO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:21, Table:CMCTB_PROJ_MAST, Field:INQY_SEQ, M/O:, Type:VARC, Size:255, Description:안건순번 --> + <!-- SEQ:21, Table:CMCTB_PROJ_MAST, Field:INQY_SEQ, M/O:, Type:VARC, Size:2, Description:안건순번 --> <xsd:element name="INQY_SEQ" type="xsd:string" minOccurs="0"/> - <!-- SEQ:22, Table:CMCTB_PROJ_MAST, Field:NTTP, M/O:, Type:VARC, Size:255, Description:국적 --> + <!-- SEQ:22, Table:CMCTB_PROJ_MAST, Field:NTTP, M/O:, Type:VARC, Size:3, Description:국적 --> <xsd:element name="NTTP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:23, Table:CMCTB_PROJ_MAST, Field:CHN_PROJ_TP, M/O:, Type:VARC, Size:255, Description:(중국)프로젝트타입 --> + <!-- SEQ:23, Table:CMCTB_PROJ_MAST, Field:CHN_PROJ_TP, M/O:, Type:VARC, Size:1, Description:(중국)프로젝트타입 --> <xsd:element name="CHN_PROJ_TP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:8, Table:CMCTB_PROJ_MAST, Field:RLTD_PROJ, M/O:, Type:VARC, Size:255, Description:연관프로젝트 --> + <!-- SEQ:8, Table:CMCTB_PROJ_MAST, Field:RLTD_PROJ, M/O:, Type:VARC, Size:24, Description:연관프로젝트 --> <xsd:element name="RLTD_PROJ" type="xsd:string" minOccurs="0"/> - <!-- SEQ:24, Table:CMCTB_PROJ_MAST, Field:DIGT_PDT_GRP, M/O:, Type:VARC, Size:255, Description:전기전자 제품군 --> + <!-- SEQ:24, Table:CMCTB_PROJ_MAST, Field:DIGT_PDT_GRP, M/O:, Type:VARC, Size:1, Description:전기전자 제품군 --> <xsd:element name="DIGT_PDT_GRP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:25, Table:CMCTB_PROJ_MAST, Field:WP_PROJ_TP, M/O:, Type:VARC, Size:255, Description:(풍력)프로젝트타입 --> + <!-- SEQ:25, Table:CMCTB_PROJ_MAST, Field:WP_PROJ_TP, M/O:, Type:VARC, Size:1, Description:(풍력)프로젝트타입 --> <xsd:element name="WP_PROJ_TP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:26, Table:CMCTB_PROJ_MAST, Field:TOT_CNRT_CNT, M/O:, Type:VARC, Size:255, Description:전체 계약 대수 --> + <!-- SEQ:26, Table:CMCTB_PROJ_MAST, Field:TOT_CNRT_CNT, M/O:, Type:VARC, Size:3, Description:전체 계약 대수 --> <xsd:element name="TOT_CNRT_CNT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:27, Table:CMCTB_PROJ_MAST, Field:PROJ_ETC_TP, M/O:, Type:VARC, Size:255, Description:프로젝트 기타타입 --> + <!-- SEQ:27, Table:CMCTB_PROJ_MAST, Field:PROJ_ETC_TP, M/O:, Type:VARC, Size:1, Description:프로젝트 기타타입 --> <xsd:element name="PROJ_ETC_TP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:28, Table:CMCTB_PROJ_MAST, Field:IF_STAT, M/O:, Type:VARC, Size:255, Description:인터페이스 진행단계 --> + <!-- SEQ:28, Table:CMCTB_PROJ_MAST, Field:IF_STAT, M/O:, Type:VARC, Size:1, Description:인터페이스 진행단계 --> <xsd:element name="IF_STAT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:29, Table:CMCTB_PROJ_MAST, Field:SRC_SYS_ID, M/O:, Type:VARC, Size:255, Description:Source System --> + <!-- SEQ:29, Table:CMCTB_PROJ_MAST, Field:SRC_SYS_ID, M/O:, Type:VARC, Size:1, Description:Source System --> <xsd:element name="SRC_SYS_ID" type="xsd:string" minOccurs="0"/> - <!-- SEQ:30, Table:CMCTB_PROJ_MAST, Field:PRGS_STAT, M/O:, Type:VARC, Size:255, Description:진행상태 --> + <!-- SEQ:30, Table:CMCTB_PROJ_MAST, Field:PRGS_STAT, M/O:, Type:VARC, Size:1, Description:진행상태 --> <xsd:element name="PRGS_STAT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:9, Table:CMCTB_PROJ_MAST, Field:DEL_YN, M/O:, Type:VARC, Size:255, Description:삭제 여부 --> + <!-- SEQ:9, Table:CMCTB_PROJ_MAST, Field:DEL_YN, M/O:, Type:VARC, Size:1, Description:삭제 여부 --> <xsd:element name="DEL_YN" type="xsd:string" minOccurs="0"/> - <!-- SEQ:31, Table:CMCTB_PROJ_MAST, Field:OWN_1, M/O:, Type:VARC, Size:255, Description:선주1 --> + <!-- SEQ:31, Table:CMCTB_PROJ_MAST, Field:OWN_1, M/O:, Type:VARC, Size:10, Description:선주1 --> <xsd:element name="OWN_1" type="xsd:string" minOccurs="0"/> - <!-- SEQ:32, Table:CMCTB_PROJ_MAST, Field:OWN_NM, M/O:, Type:VARC, Size:255, Description:선주명 --> + <!-- SEQ:32, Table:CMCTB_PROJ_MAST, Field:OWN_NM, M/O:, Type:VARC, Size:40, Description:선주명 --> <xsd:element name="OWN_NM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:33, Table:CMCTB_PROJ_MAST, Field:OWN_AB, M/O:, Type:VARC, Size:255, Description:선주약어 --> + <!-- SEQ:33, Table:CMCTB_PROJ_MAST, Field:OWN_AB, M/O:, Type:VARC, Size:60, Description:선주약어 --> <xsd:element name="OWN_AB" type="xsd:string" minOccurs="0"/> - <!-- SEQ:34, Table:CMCTB_PROJ_MAST, Field:DL_CSTM_CD, M/O:, Type:VARC, Size:255, Description:인도고객 ID --> + <!-- SEQ:34, Table:CMCTB_PROJ_MAST, Field:DL_CSTM_CD, M/O:, Type:VARC, Size:10, Description:인도고객 ID --> <xsd:element name="DL_CSTM_CD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:35, Table:CMCTB_PROJ_MAST, Field:PDT_LVL_4, M/O:, Type:VARC, Size:255, Description:제품 Level 4 --> + <!-- SEQ:35, Table:CMCTB_PROJ_MAST, Field:PDT_LVL_4, M/O:, Type:VARC, Size:14, Description:제품 Level 4 --> <xsd:element name="PDT_LVL_4" type="xsd:string" minOccurs="0"/> - <!-- SEQ:36, Table:CMCTB_PROJ_MAST, Field:CNRT_DT, M/O:, Type:VARC, Size:255, Description:계약일자 --> + <!-- SEQ:36, Table:CMCTB_PROJ_MAST, Field:CNRT_DT, M/O:, Type:VARC, Size:8, Description:계약일자 --> <xsd:element name="CNRT_DT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:39, Table:CMCTB_PROJ_MAST, Field:STDT, M/O:, Type:VARC, Size:255, Description:시작일자 --> + <!-- SEQ:39, Table:CMCTB_PROJ_MAST, Field:STDT, M/O:, Type:VARC, Size:8, Description:시작일자 --> <xsd:element name="STDT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:37, Table:CMCTB_PROJ_MAST, Field:CNRT_DL_DT, M/O:, Type:VARC, Size:255, Description:계약인도일자 --> + <!-- SEQ:37, Table:CMCTB_PROJ_MAST, Field:CNRT_DL_DT, M/O:, Type:VARC, Size:8, Description:계약인도일자 --> <xsd:element name="CNRT_DL_DT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:38, Table:CMCTB_PROJ_MAST, Field:AS_GRNT_PRD, M/O:, Type:VARC, Size:255, Description:A/S 보증기간 --> + <!-- SEQ:38, Table:CMCTB_PROJ_MAST, Field:AS_GRNT_PRD, M/O:, Type:NUMB, Size:2, Description:A/S 보증기간 --> <xsd:element name="AS_GRNT_PRD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:40, Table:CMCTB_PROJ_MAST, Field:RL_DL_DT, M/O:, Type:VARC, Size:255, Description:실인도일자 --> + <!-- SEQ:40, Table:CMCTB_PROJ_MAST, Field:RL_DL_DT, M/O:, Type:VARC, Size:8, Description:실인도일자 --> <xsd:element name="RL_DL_DT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:41, Table:CMCTB_PROJ_MAST, Field:SA_DT, M/O:, Type:VARC, Size:255, Description:Sail Away Date --> + <!-- SEQ:41, Table:CMCTB_PROJ_MAST, Field:SA_DT, M/O:, Type:VARC, Size:8, Description:Sail Away Date --> <xsd:element name="SA_DT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:42, Table:CMCTB_PROJ_MAST, Field:SERS_NO, M/O:, Type:VARC, Size:255, Description:시리즈첫공사번호 --> + <!-- SEQ:42, Table:CMCTB_PROJ_MAST, Field:SERS_NO, M/O:, Type:VARC, Size:24, Description:시리즈첫공사번호 --> <xsd:element name="SERS_NO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:43, Table:CMCTB_PROJ_MAST, Field:REF_NO, M/O:, Type:VARC, Size:255, Description:시리즈번호 --> + <!-- SEQ:43, Table:CMCTB_PROJ_MAST, Field:REF_NO, M/O:, Type:VARC, Size:5, Description:시리즈번호 --> <xsd:element name="REF_NO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:44, Table:CMCTB_PROJ_MAST, Field:GOV, M/O:, Type:VARC, Size:255, Description:관청명 --> + <!-- SEQ:44, Table:CMCTB_PROJ_MAST, Field:GOV, M/O:, Type:VARC, Size:60, Description:관청명 --> <xsd:element name="GOV" type="xsd:string" minOccurs="0"/> - <!-- SEQ:45, Table:CMCTB_PROJ_MAST, Field:CLS_1, M/O:, Type:VARC, Size:255, Description:선급1 --> + <!-- SEQ:45, Table:CMCTB_PROJ_MAST, Field:CLS_1, M/O:, Type:VARC, Size:20, Description:선급1 --> <xsd:element name="CLS_1" type="xsd:string" minOccurs="0"/> - <!-- SEQ:46, Table:CMCTB_PROJ_MAST, Field:DL_BF_PROJ_NM, M/O:, Type:VARC, Size:255, Description:인도전선명 --> + <!-- SEQ:46, Table:CMCTB_PROJ_MAST, Field:DL_BF_PROJ_NM, M/O:, Type:VARC, Size:120, Description:인도전선명 --> <xsd:element name="DL_BF_PROJ_NM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:47, Table:CMCTB_PROJ_MAST, Field:IMO_NO, M/O:, Type:VARC, Size:255, Description:IMO 번호 --> + <!-- SEQ:47, Table:CMCTB_PROJ_MAST, Field:IMO_NO, M/O:, Type:VARC, Size:8, Description:IMO 번호 --> <xsd:element name="IMO_NO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:16, Table:CMCTB_PROJ_MAST, Field:DIST_PATH, M/O:, Type:VARC, Size:255, Description:유통경로 --> + <!-- SEQ:16, Table:CMCTB_PROJ_MAST, Field:DIST_PATH, M/O:, Type:VARC, Size:2, Description:유통경로 --> <xsd:element name="DIST_PATH" type="xsd:string" minOccurs="0"/> - <!-- SEQ:15, Table:CMCTB_PROJ_MAST, Field:SALE_ORG_CD, M/O:, Type:VARC, Size:255, Description:영업조직 --> + <!-- SEQ:15, Table:CMCTB_PROJ_MAST, Field:SALE_ORG_CD, M/O:, Type:VARC, Size:4, Description:영업조직 --> <xsd:element name="SALE_ORG_CD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:5, Table:CMCTB_PROJ_MAST, Field:SALE_GRP, M/O:, Type:VARC, Size:255, Description:영업그룹 --> + <!-- SEQ:5, Table:CMCTB_PROJ_MAST, Field:SALE_GRP, M/O:, Type:VARC, Size:3, Description:영업그룹 --> <xsd:element name="SALE_GRP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:4, Table:CMCTB_PROJ_MAST, Field:BIZLOC_CD, M/O:, Type:VARC, Size:255, Description:사업장코드 --> + <!-- SEQ:4, Table:CMCTB_PROJ_MAST, Field:BIZLOC_CD, M/O:, Type:VARC, Size:4, Description:사업장코드 --> <xsd:element name="BIZLOC_CD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:14, Table:CMCTB_PROJ_MAST, Field:MNG_ACOT_DMN, M/O:, Type:VARC, Size:255, Description:관리회계영역 --> + <!-- SEQ:14, Table:CMCTB_PROJ_MAST, Field:MNG_ACOT_DMN, M/O:, Type:VARC, Size:4, Description:관리회계영역 --> <xsd:element name="MNG_ACOT_DMN" type="xsd:string" minOccurs="0"/> - <!-- SEQ:12, Table:CMCTB_PROJ_MAST, Field:CO_CD, M/O:, Type:VARC, Size:255, Description:회사코드 --> + <!-- SEQ:12, Table:CMCTB_PROJ_MAST, Field:CO_CD, M/O:, Type:VARC, Size:4, Description:회사코드 --> <xsd:element name="CO_CD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:13, Table:CMCTB_PROJ_MAST, Field:BIZ_DMN, M/O:, Type:VARC, Size:255, Description:사업영역 --> + <!-- SEQ:13, Table:CMCTB_PROJ_MAST, Field:BIZ_DMN, M/O:, Type:VARC, Size:4, Description:사업영역 --> <xsd:element name="BIZ_DMN" type="xsd:string" minOccurs="0"/> - <!-- SEQ:10, Table:CMCTB_PROJ_MAST, Field:PLNT_CD, M/O:, Type:VARC, Size:255, Description:플랜트 코드 --> + <!-- SEQ:10, Table:CMCTB_PROJ_MAST, Field:PLNT_CD, M/O:, Type:VARC, Size:4, Description:플랜트 코드 --> <xsd:element name="PLNT_CD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:11, Table:CMCTB_PROJ_MAST, Field:PRCTR, M/O:, Type:VARC, Size:255, Description:손익센터 --> + <!-- SEQ:11, Table:CMCTB_PROJ_MAST, Field:PRCTR, M/O:, Type:VARC, Size:10, Description:손익센터 --> <xsd:element name="PRCTR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:48, Table:CMCTB_PROJ_MAST, Field:CNRT_CNTN_YN, M/O:, Type:VARC, Size:255, Description:계약존속여부 --> + <!-- SEQ:48, Table:CMCTB_PROJ_MAST, Field:CNRT_CNTN_YN, M/O:, Type:VARC, Size:1, Description:계약존속여부 --> <xsd:element name="CNRT_CNTN_YN" type="xsd:string" minOccurs="0"/> - <!-- SEQ:49, Table:CMCTB_PROJ_MAST, Field:CNRT_RESV_YN, M/O:, Type:VARC, Size:255, Description:계약유보여부 --> + <!-- SEQ:49, Table:CMCTB_PROJ_MAST, Field:CNRT_RESV_YN, M/O:, Type:VARC, Size:1, Description:계약유보여부 --> <xsd:element name="CNRT_RESV_YN" type="xsd:string" minOccurs="0"/> - <!-- SEQ:50, Table:CMCTB_PROJ_MAST, Field:PROJ_PRGS_YN, M/O:, Type:VARC, Size:255, Description:공사진행여부 --> + <!-- SEQ:50, Table:CMCTB_PROJ_MAST, Field:PROJ_PRGS_YN, M/O:, Type:VARC, Size:1, Description:공사진행여부 --> <xsd:element name="PROJ_PRGS_YN" type="xsd:string" minOccurs="0"/> - <!-- SEQ:51, Table:CMCTB_PROJ_MAST, Field:SKND, M/O:, Type:VARC, Size:255, Description:선종 --> + <!-- SEQ:51, Table:CMCTB_PROJ_MAST, Field:SKND, M/O:, Type:VARC, Size:3, Description:선종 --> <xsd:element name="SKND" type="xsd:string" minOccurs="0"/> - <!-- SEQ:52, Table:CMCTB_PROJ_MAST, Field:SHTYPE, M/O:, Type:VARC, Size:255, Description:선형 --> + <!-- SEQ:52, Table:CMCTB_PROJ_MAST, Field:SHTYPE, M/O:, Type:VARC, Size:8, Description:선형 --> <xsd:element name="SHTYPE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:53, Table:CMCTB_PROJ_MAST, Field:SYS_ACOT_CLSD_DT, M/O:, Type:VARC, Size:255, Description:시스템회계마감일자 --> + <!-- SEQ:53, Table:CMCTB_PROJ_MAST, Field:SYS_ACOT_CLSD_DT, M/O:, Type:VARC, Size:8, Description:시스템회계마감일자 --> <xsd:element name="SYS_ACOT_CLSD_DT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:54, Table:CMCTB_PROJ_MAST, Field:SHTYPE_UOM, M/O:, Type:VARC, Size:255, Description:선형단위 --> + <!-- SEQ:54, Table:CMCTB_PROJ_MAST, Field:SHTYPE_UOM, M/O:, Type:VARC, Size:5, Description:선형단위 --> <xsd:element name="SHTYPE_UOM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:55, Table:CMCTB_PROJ_MAST, Field:PROJ_SCP, M/O:, Type:VARC, Size:255, Description:프로젝트범위 --> + <!-- SEQ:55, Table:CMCTB_PROJ_MAST, Field:PROJ_SCP, M/O:, Type:VARC, Size:5, Description:프로젝트범위 --> <xsd:element name="PROJ_SCP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:56, Table:CMCTB_PROJ_MAST, Field:MSHIP_NO, M/O:, Type:VARC, Size:255, Description:기준호선 --> + <!-- SEQ:56, Table:CMCTB_PROJ_MAST, Field:MSHIP_NO, M/O:, Type:VARC, Size:24, Description:기준호선 --> <xsd:element name="MSHIP_NO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:57, Table:CMCTB_PROJ_MAST, Field:LOA, M/O:, Type:VARC, Size:255, Description:L.O.A --> + <!-- SEQ:57, Table:CMCTB_PROJ_MAST, Field:LOA, M/O:, Type:NUMB, Size:10,1, Description:L.O.A --> <xsd:element name="LOA" type="xsd:string" minOccurs="0"/> - <!-- SEQ:58, Table:CMCTB_PROJ_MAST, Field:MN_ENGN_TP_CD, M/O:, Type:VARC, Size:255, Description:Main engine type code --> + <!-- SEQ:58, Table:CMCTB_PROJ_MAST, Field:MN_ENGN_TP_CD, M/O:, Type:VARC, Size:30, Description:Main engine type code --> <xsd:element name="MN_ENGN_TP_CD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:59, Table:CMCTB_PROJ_MAST, Field:SPD, M/O:, Type:VARC, Size:255, Description:Speed --> + <!-- SEQ:59, Table:CMCTB_PROJ_MAST, Field:SPD, M/O:, Type:NUMB, Size:15,3, Description:Speed --> <xsd:element name="SPD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:60, Table:CMCTB_PROJ_MAST, Field:GT, M/O:, Type:VARC, Size:255, Description:G/T --> + <!-- SEQ:60, Table:CMCTB_PROJ_MAST, Field:GT, M/O:, Type:NUMB, Size:15,3, Description:G/T --> <xsd:element name="GT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:61, Table:CMCTB_PROJ_MAST, Field:BP_DL_DT, M/O:, Type:VARC, Size:255, Description:선표인도일자 --> + <!-- SEQ:61, Table:CMCTB_PROJ_MAST, Field:BP_DL_DT, M/O:, Type:VARC, Size:8, Description:선표인도일자 --> <xsd:element name="BP_DL_DT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:62, Table:CMCTB_PROJ_MAST, Field:SHTYPE_GRP, M/O:, Type:VARC, Size:255, Description:선형군 --> + <!-- SEQ:62, Table:CMCTB_PROJ_MAST, Field:SHTYPE_GRP, M/O:, Type:VARC, Size:4, Description:선형군 --> <xsd:element name="SHTYPE_GRP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:63, Table:CMCTB_PROJ_MAST, Field:DOCK_CD, M/O:, Type:VARC, Size:255, Description:도크 --> + <!-- SEQ:63, Table:CMCTB_PROJ_MAST, Field:DOCK_CD, M/O:, Type:VARC, Size:3, Description:도크 --> <xsd:element name="DOCK_CD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:64, Table:CMCTB_PROJ_MAST, Field:PROJ_CRTE_REQ_EMPNO, M/O:, Type:VARC, Size:255, Description:프로젝트 생성요청자 --> + <!-- SEQ:64, Table:CMCTB_PROJ_MAST, Field:PROJ_CRTE_REQ_EMPNO, M/O:, Type:VARC, Size:13, Description:프로젝트 생성요청자 --> <xsd:element name="PROJ_CRTE_REQ_EMPNO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:65, Table:CMCTB_PROJ_MAST, Field:PROJ_CRTE_REQ_DT, M/O:, Type:VARC, Size:255, Description:프로젝트 생성요청일 --> + <!-- SEQ:65, Table:CMCTB_PROJ_MAST, Field:PROJ_CRTE_REQ_DT, M/O:, Type:VARC, Size:8, Description:프로젝트 생성요청일 --> <xsd:element name="PROJ_CRTE_REQ_DT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:66, Table:CMCTB_PROJ_MAST, Field:SERS_YN, M/O:, Type:VARC, Size:255, Description:시리즈여부 --> + <!-- SEQ:66, Table:CMCTB_PROJ_MAST, Field:SERS_YN, M/O:, Type:VARC, Size:1, Description:시리즈여부 --> <xsd:element name="SERS_YN" type="xsd:string" minOccurs="0"/> - <!-- SEQ:67, Table:CMCTB_PROJ_MAST, Field:IO_GB, M/O:, Type:VARC, Size:255, Description:사내외 구분 --> + <!-- SEQ:67, Table:CMCTB_PROJ_MAST, Field:IO_GB, M/O:, Type:VARC, Size:1, Description:사내외 구분 --> <xsd:element name="IO_GB" type="xsd:string" minOccurs="0"/> - <!-- SEQ:68, Table:CMCTB_PROJ_MAST, Field:CSTM_PO_NO, M/O:, Type:VARC, Size:255, Description:고객발주번호 --> + <!-- SEQ:68, Table:CMCTB_PROJ_MAST, Field:CSTM_PO_NO, M/O:, Type:VARC, Size:35, Description:고객발주번호 --> <xsd:element name="CSTM_PO_NO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:69, Table:CMCTB_PROJ_MAST, Field:GENT_CNT, M/O:, Type:VARC, Size:255, Description:세대수/시리즈 --> + <!-- SEQ:69, Table:CMCTB_PROJ_MAST, Field:GENT_CNT, M/O:, Type:VARC, Size:5, Description:세대수/시리즈 --> <xsd:element name="GENT_CNT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:70, Table:CMCTB_PROJ_MAST, Field:ORDR_GRNT_PRD, M/O:, Type:VARC, Size:255, Description:주문주 보증기간 --> + <!-- SEQ:70, Table:CMCTB_PROJ_MAST, Field:ORDR_GRNT_PRD, M/O:, Type:VARC, Size:2, Description:주문주 보증기간 --> <xsd:element name="ORDR_GRNT_PRD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:71, Table:CMCTB_PROJ_MAST, Field:ORDR_GRNT_FN_DT, M/O:, Type:VARC, Size:255, Description:주문주 보증종료일 --> + <!-- SEQ:71, Table:CMCTB_PROJ_MAST, Field:ORDR_GRNT_FN_DT, M/O:, Type:VARC, Size:8, Description:주문주 보증종료일 --> <xsd:element name="ORDR_GRNT_FN_DT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:72, Table:CMCTB_PROJ_MAST, Field:FIN_GRNT_FN_DT, M/O:, Type:VARC, Size:255, Description:최종수요자 보증종료일 --> + <!-- SEQ:72, Table:CMCTB_PROJ_MAST, Field:FIN_GRNT_FN_DT, M/O:, Type:VARC, Size:8, Description:최종수요자 보증종료일 --> <xsd:element name="FIN_GRNT_FN_DT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:73, Table:CMCTB_PROJ_MAST, Field:DSN_CHRGR, M/O:, Type:VARC, Size:255, Description:설계담당자 --> + <!-- SEQ:73, Table:CMCTB_PROJ_MAST, Field:DSN_CHRGR, M/O:, Type:VARC, Size:13, Description:설계담당자 --> <xsd:element name="DSN_CHRGR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:18, Table:CMCTB_PROJ_MAST, Field:TYPE, M/O:, Type:VARC, Size:255, Description:프로젝트 Top/Hull --> + <!-- SEQ:18, Table:CMCTB_PROJ_MAST, Field:TYPE, M/O:, Type:VARC, Size:10, Description:프로젝트 Top/Hull --> <xsd:element name="TYPE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:19, Table:CMCTB_PROJ_MAST, Field:PRO_PROJ_NO, M/O:, Type:VARC, Size:255, Description:프로포절 프로젝트 --> + <!-- SEQ:19, Table:CMCTB_PROJ_MAST, Field:PRO_PROJ_NO, M/O:, Type:VARC, Size:24, Description:프로포절 프로젝트 --> <xsd:element name="PRO_PROJ_NO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:81, Table:CMCTB_PROJ_MAST, Field:BIZCLS, M/O:, Type:VARC, Size:255, Description:사업부 --> + <!-- SEQ:81, Table:CMCTB_PROJ_MAST, Field:BIZCLS, M/O:, Type:VARC, Size:10, Description:사업부 --> <xsd:element name="BIZCLS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:74, Table:CMCTB_PROJ_MAST, Field:CLS_2, M/O:, Type:VARC, Size:255, Description:선급2 --> + <!-- SEQ:74, Table:CMCTB_PROJ_MAST, Field:CLS_2, M/O:, Type:VARC, Size:20, Description:선급2 --> <xsd:element name="CLS_2" type="xsd:string" minOccurs="0"/> - <!-- SEQ:75, Table:CMCTB_PROJ_MAST, Field:SHTYPE_CD, M/O:, Type:VARC, Size:255, Description:선형코드 --> + <!-- SEQ:75, Table:CMCTB_PROJ_MAST, Field:SHTYPE_CD, M/O:, Type:VARC, Size:6, Description:선형코드 --> <xsd:element name="SHTYPE_CD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:76, Table:CMCTB_PROJ_MAST, Field:PROJ_DL_PLN_DT, M/O:, Type:VARC, Size:255, Description:모프로젝트 인도계획일 --> + <!-- SEQ:76, Table:CMCTB_PROJ_MAST, Field:PROJ_DL_PLN_DT, M/O:, Type:VARC, Size:8, Description:모프로젝트 인도계획일 --> <xsd:element name="PROJ_DL_PLN_DT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:77, Table:CMCTB_PROJ_MAST, Field:PROJ_DL_RT_DT, M/O:, Type:VARC, Size:255, Description:모프로젝트 인도실적일 --> + <!-- SEQ:77, Table:CMCTB_PROJ_MAST, Field:PROJ_DL_RT_DT, M/O:, Type:VARC, Size:8, Description:모프로젝트 인도실적일 --> <xsd:element name="PROJ_DL_RT_DT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:78, Table:CMCTB_PROJ_MAST, Field:TOT_AREA, M/O:, Type:VARC, Size:255, Description:전체면적 --> + <!-- SEQ:78, Table:CMCTB_PROJ_MAST, Field:TOT_AREA, M/O:, Type:NUMB, Size:9,3, Description:전체면적 --> <xsd:element name="TOT_AREA" type="xsd:string" minOccurs="0"/> - <!-- SEQ:79, Table:CMCTB_PROJ_MAST, Field:EXMPT_AREA, M/O:, Type:VARC, Size:255, Description:면세면적 --> + <!-- SEQ:79, Table:CMCTB_PROJ_MAST, Field:EXMPT_AREA, M/O:, Type:NUMB, Size:9,3, Description:면세면적 --> <xsd:element name="EXMPT_AREA" type="xsd:string" minOccurs="0"/> - <!-- SEQ:80, Table:CMCTB_PROJ_MAST, Field:EXMPT_RAT, M/O:, Type:VARC, Size:255, Description:면세율 --> + <!-- SEQ:80, Table:CMCTB_PROJ_MAST, Field:EXMPT_RAT, M/O:, Type:NUMB, Size:6,2, Description:면세율 --> <xsd:element name="EXMPT_RAT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:82, Table:CMCTB_PROJ_MAST, Field:QM_CLS, M/O:, Type:VARC, Size:255, Description:품질사업부 --> + <!-- SEQ:82, Table:CMCTB_PROJ_MAST, Field:QM_CLS, M/O:, Type:VARC, Size:10, Description:품질사업부 --> <xsd:element name="QM_CLS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:83, Table:CMCTB_PROJ_MAST, Field:NEW_MC_YN, M/O:, Type:VARC, Size:255, Description:MC YN --> + <!-- SEQ:83, Table:CMCTB_PROJ_MAST, Field:NEW_MC_YN, M/O:, Type:VARC, Size:10, Description:MC YN --> <xsd:element name="NEW_MC_YN" type="xsd:string" minOccurs="0"/> - <!-- SEQ:84, Table:CMCTB_PROJ_MAST, Field:GRNT_STDT, M/O:, Type:VARC, Size:255, Description:Project Warranty Start Date --> + <!-- SEQ:84, Table:CMCTB_PROJ_MAST, Field:GRNT_STDT, M/O:, Type:VARC, Size:8, Description:Project Warranty Start Date --> <xsd:element name="GRNT_STDT" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> diff --git a/public/wsdl/IF_MDZ_EVCP_VENDOR_MASTER.wsdl b/public/wsdl/IF_MDZ_EVCP_VENDOR_MASTER.wsdl index 69e11683..544e24f9 100644 --- a/public/wsdl/IF_MDZ_EVCP_VENDOR_MASTER.wsdl +++ b/public/wsdl/IF_MDZ_EVCP_VENDOR_MASTER.wsdl @@ -8,7 +8,7 @@ <xsd:element name="IF_MDZ_EVCP_VENDOR_MASTERReq" type="IF_MDZ_EVCP_VENDOR_MASTERReq" nillable="true"/> <xsd:complexType name="ADDRESS"> <xsd:sequence> - <!-- SEQ:2, Table:BP_HEADER/ADDRESS, Field:ADR_NO, M/O:M, Type:VARC, Size:255, Description:주소번호 --> + <!-- SEQ:2, Table:BP_HEADER/ADDRESS, Field:ADR_NO, M/O:M, Type:VARC, Size:10, Description:주소번호 --> <xsd:element name="ADDRNO" type="xsd:string"/> <xsd:element name="AD_POSTAL" type="AD_POSTAL" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="AD_TEL" type="AD_TEL" minOccurs="0" maxOccurs="unbounded"/> @@ -19,168 +19,168 @@ </xsd:complexType> <xsd:complexType name="AD_EMAIL"> <xsd:sequence> - <!-- SEQ:38, Table:BP_HEADER/ADDRESS/AD_EMAIL, Field:REPR_SER, M/O:M, Type:VARC, Size:255, Description:대표자순번 --> + <!-- SEQ:38, Table:BP_HEADER/ADDRESS/AD_EMAIL, Field:REPR_SER, M/O:M, Type:NUMB, Size:3, Description:대표자순번 --> <xsd:element name="REPR_SER" type="xsd:string"/> - <!-- SEQ:39, Table:BP_HEADER/ADDRESS/AD_EMAIL, Field:VLD_ST_DT, M/O:M, Type:VARC, Size:255, Description:유효시작일자 --> + <!-- SEQ:39, Table:BP_HEADER/ADDRESS/AD_EMAIL, Field:VLD_ST_DT, M/O:M, Type:VARC, Size:8, Description:유효시작일자 --> <xsd:element name="VLD_ST_DT" type="xsd:string"/> - <!-- SEQ:40, Table:BP_HEADER/ADDRESS/AD_EMAIL, Field:EMAIL_ADR, M/O:, Type:VARC, Size:255, Description:이메일주소 --> + <!-- SEQ:40, Table:BP_HEADER/ADDRESS/AD_EMAIL, Field:EMAIL_ADR, M/O:, Type:VARC, Size:241, Description:이메일주소 --> <xsd:element name="EMAIL_ADR" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="AD_FAX"> <xsd:sequence> - <!-- SEQ:30, Table:BP_HEADER/ADDRESS/AD_FAX, Field:REPR_SER, M/O:M, Type:VARC, Size:255, Description:대표자순번 --> + <!-- SEQ:30, Table:BP_HEADER/ADDRESS/AD_FAX, Field:REPR_SER, M/O:M, Type:NUMB, Size:3, Description:대표자순번 --> <xsd:element name="REPR_SER" type="xsd:string"/> - <!-- SEQ:31, Table:BP_HEADER/ADDRESS/AD_FAX, Field:VLD_ST_DT, M/O:M, Type:VARC, Size:255, Description:유효시작일자 --> + <!-- SEQ:31, Table:BP_HEADER/ADDRESS/AD_FAX, Field:VLD_ST_DT, M/O:M, Type:VARC, Size:8, Description:유효시작일자 --> <xsd:element name="VLD_ST_DT" type="xsd:string"/> - <!-- SEQ:32, Table:BP_HEADER/ADDRESS/AD_FAX, Field:NTN_CD, M/O:, Type:VARC, Size:255, Description:국가코드 --> + <!-- SEQ:32, Table:BP_HEADER/ADDRESS/AD_FAX, Field:NTN_CD, M/O:, Type:VARC, Size:3, Description:국가코드 --> <xsd:element name="NTN_CD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:33, Table:BP_HEADER/ADDRESS/AD_FAX, Field:FAXNO, M/O:, Type:VARC, Size:255, Description:팩스번호 --> + <!-- SEQ:33, Table:BP_HEADER/ADDRESS/AD_FAX, Field:FAXNO, M/O:, Type:VARC, Size:30, Description:팩스번호 --> <xsd:element name="FAXNO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:34, Table:BP_HEADER/ADDRESS/AD_FAX, Field:FAX_ETS_NO, M/O:, Type:VARC, Size:255, Description:팩스내선번호 --> + <!-- SEQ:34, Table:BP_HEADER/ADDRESS/AD_FAX, Field:FAX_ETS_NO, M/O:, Type:VARC, Size:10, Description:팩스내선번호 --> <xsd:element name="FAX_ETS_NO" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="AD_POSTAL"> <xsd:sequence> - <!-- SEQ:3, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:INTL_ADR_VER_ID, M/O:M, Type:VARC, Size:255, Description:국제주소버전ID --> + <!-- SEQ:3, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:INTL_ADR_VER_ID, M/O:M, Type:VARC, Size:1, Description:국제주소버전ID --> <xsd:element name="INTL_ADR_VER_ID" type="xsd:string"/> - <!-- SEQ:4, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:CITY_ZIP_NO, M/O:, Type:VARC, Size:255, Description:도시우편번호 --> + <!-- SEQ:4, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:CITY_ZIP_NO, M/O:, Type:VARC, Size:10, Description:도시우편번호 --> <xsd:element name="CITY_ZIP_NO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:5, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:POBX_ZIP_NO, M/O:, Type:VARC, Size:255, Description:사서함우편번호 --> + <!-- SEQ:5, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:POBX_ZIP_NO, M/O:, Type:VARC, Size:10, Description:사서함우편번호 --> <xsd:element name="POBX_ZIP_NO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:6, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:ADR_1, M/O:, Type:VARC, Size:255, Description:주소1 --> + <!-- SEQ:6, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:ADR_1, M/O:, Type:VARC, Size:190, Description:주소1 --> <xsd:element name="ADR_1" type="xsd:string" minOccurs="0"/> - <!-- SEQ:7, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:ADR_2, M/O:, Type:VARC, Size:255, Description:주소2 --> + <!-- SEQ:7, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:ADR_2, M/O:, Type:VARC, Size:120, Description:주소2 --> <xsd:element name="ADR_2" type="xsd:string" minOccurs="0"/> - <!-- SEQ:8, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:REGN_CD, M/O:, Type:VARC, Size:255, Description:지역코드 --> + <!-- SEQ:8, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:REGN_CD, M/O:, Type:VARC, Size:5, Description:지역코드 --> <xsd:element name="REGN_CD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:9, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:TTL, M/O:, Type:VARC, Size:255, Description:타이틀 --> + <!-- SEQ:9, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:TTL, M/O:, Type:VARC, Size:90, Description:타이틀 --> <xsd:element name="TTL" type="xsd:string" minOccurs="0"/> - <!-- SEQ:10, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:VNDRNM_ABRV_1, M/O:, Type:VARC, Size:255, Description:VENDOR명약어1 --> + <!-- SEQ:10, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:VNDRNM_ABRV_1, M/O:, Type:VARC, Size:60, Description:VENDOR명약어1 --> <xsd:element name="VNDRNM_ABRV_1" type="xsd:string" minOccurs="0"/> - <!-- SEQ:11, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:VNDRNM_ABRV_2, M/O:, Type:VARC, Size:255, Description:VENDOR명약어2 --> + <!-- SEQ:11, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:VNDRNM_ABRV_2, M/O:, Type:VARC, Size:60, Description:VENDOR명약어2 --> <xsd:element name="VNDRNM_ABRV_2" type="xsd:string" minOccurs="0"/> - <!-- SEQ:12, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:VNDRNM_1, M/O:, Type:VARC, Size:255, Description:VENDOR명1 --> + <!-- SEQ:12, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:VNDRNM_1, M/O:, Type:VARC, Size:120, Description:VENDOR명1 --> <xsd:element name="VNDRNM_1" type="xsd:string" minOccurs="0"/> - <!-- SEQ:13, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:VNDRNM_2, M/O:, Type:VARC, Size:255, Description:VENDOR명2 --> + <!-- SEQ:13, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:VNDRNM_2, M/O:, Type:VARC, Size:120, Description:VENDOR명2 --> <xsd:element name="VNDRNM_2" type="xsd:string" minOccurs="0"/> - <!-- SEQ:14, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:VNDRNM_3, M/O:, Type:VARC, Size:255, Description:VENDOR명3 --> + <!-- SEQ:14, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:VNDRNM_3, M/O:, Type:VARC, Size:120, Description:VENDOR명3 --> <xsd:element name="VNDRNM_3" type="xsd:string" minOccurs="0"/> - <!-- SEQ:15, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:VNDRNM_4, M/O:, Type:VARC, Size:255, Description:VENDOR명4 --> + <!-- SEQ:15, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:VNDRNM_4, M/O:, Type:VARC, Size:120, Description:VENDOR명4 --> <xsd:element name="VNDRNM_4" type="xsd:string" minOccurs="0"/> - <!-- SEQ:16, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:LANG_KEY, M/O:, Type:VARC, Size:255, Description:언어키 --> + <!-- SEQ:16, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:LANG_KEY, M/O:, Type:VARC, Size:1, Description:언어키 --> <xsd:element name="LANG_KEY" type="xsd:string" minOccurs="0"/> - <!-- SEQ:17, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:ETC_ADR_1, M/O:, Type:VARC, Size:255, Description:기타주소1 --> + <!-- SEQ:17, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:ETC_ADR_1, M/O:, Type:VARC, Size:180, Description:기타주소1 --> <xsd:element name="ETC_ADR_1" type="xsd:string" minOccurs="0"/> - <!-- SEQ:18, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:ETC_ADR_2, M/O:, Type:VARC, Size:255, Description:기타주소2 --> + <!-- SEQ:18, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:ETC_ADR_2, M/O:, Type:VARC, Size:180, Description:기타주소2 --> <xsd:element name="ETC_ADR_2" type="xsd:string" minOccurs="0"/> - <!-- SEQ:19, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:NTN_CD, M/O:, Type:VARC, Size:255, Description:국가코드 --> + <!-- SEQ:19, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:NTN_CD, M/O:, Type:VARC, Size:3, Description:국가코드 --> <xsd:element name="NTN_CD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:20, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:POBX, M/O:, Type:VARC, Size:255, Description:사서함 --> + <!-- SEQ:20, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:POBX, M/O:, Type:VARC, Size:10, Description:사서함 --> <xsd:element name="POBX" type="xsd:string" minOccurs="0"/> - <!-- SEQ:21, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:TRANS_ZONE, M/O:, Type:VARC, Size:255, Description:운송구역 --> + <!-- SEQ:21, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:TRANS_ZONE, M/O:, Type:VARC, Size:10, Description:운송구역 --> <xsd:element name="TRANS_ZONE" type="xsd:string" minOccurs="0"/> - <!-- SEQ:22, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:TAX_JRDT_ZONE_CD, M/O:, Type:VARC, Size:255, Description:조세관할구역코드 --> + <!-- SEQ:22, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:TAX_JRDT_ZONE_CD, M/O:, Type:VARC, Size:15, Description:조세관할구역코드 --> <xsd:element name="TAX_JRDT_ZONE_CD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:23, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:ADR_TMZ, M/O:, Type:VARC, Size:255, Description:주소시간대 --> + <!-- SEQ:23, Table:BP_HEADER/ADDRESS/AD_POSTAL, Field:ADR_TMZ, M/O:, Type:VARC, Size:10, Description:주소시간대 --> <xsd:element name="ADR_TMZ" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="AD_TEL"> <xsd:sequence> - <!-- SEQ:24, Table:BP_HEADER/ADDRESS/AD_TEL, Field:REPR_SER, M/O:M, Type:VARC, Size:255, Description:대표자순번 --> + <!-- SEQ:24, Table:BP_HEADER/ADDRESS/AD_TEL, Field:REPR_SER, M/O:M, Type:NUMB, Size:3, Description:대표자순번 --> <xsd:element name="REPR_SER" type="xsd:string"/> - <!-- SEQ:25, Table:BP_HEADER/ADDRESS/AD_TEL, Field:VLD_ST_DT, M/O:M, Type:VARC, Size:255, Description:유효시작일자 --> + <!-- SEQ:25, Table:BP_HEADER/ADDRESS/AD_TEL, Field:VLD_ST_DT, M/O:M, Type:VARC, Size:8, Description:유효시작일자 --> <xsd:element name="VLD_ST_DT" type="xsd:string"/> - <!-- SEQ:26, Table:BP_HEADER/ADDRESS/AD_TEL, Field:NTN_CD, M/O:, Type:VARC, Size:255, Description:국가코드 --> + <!-- SEQ:26, Table:BP_HEADER/ADDRESS/AD_TEL, Field:NTN_CD, M/O:, Type:VARC, Size:3, Description:국가코드 --> <xsd:element name="NTN_CD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:27, Table:BP_HEADER/ADDRESS/AD_TEL, Field:TELNO, M/O:, Type:VARC, Size:255, Description:전화번호 --> + <!-- SEQ:27, Table:BP_HEADER/ADDRESS/AD_TEL, Field:TELNO, M/O:, Type:VARC, Size:30, Description:전화번호 --> <xsd:element name="TELNO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:28, Table:BP_HEADER/ADDRESS/AD_TEL, Field:ETX_NO, M/O:, Type:VARC, Size:255, Description:내선번호 --> + <!-- SEQ:28, Table:BP_HEADER/ADDRESS/AD_TEL, Field:ETX_NO, M/O:, Type:VARC, Size:10, Description:내선번호 --> <xsd:element name="ETX_NO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:29, Table:BP_HEADER/ADDRESS/AD_TEL, Field:HP_ORDR, M/O:, Type:VARC, Size:255, Description:핸드폰지시자 --> + <!-- SEQ:29, Table:BP_HEADER/ADDRESS/AD_TEL, Field:HP_ORDR, M/O:, Type:VARC, Size:1, Description:핸드폰지시자 --> <xsd:element name="HP_ORDR" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="AD_URL"> <xsd:sequence> - <!-- SEQ:35, Table:BP_HEADER/ADDRESS/AD_URL, Field:REPR_SER, M/O:M, Type:VARC, Size:255, Description:대표자순번 --> + <!-- SEQ:35, Table:BP_HEADER/ADDRESS/AD_URL, Field:REPR_SER, M/O:M, Type:NUMB, Size:3, Description:대표자순번 --> <xsd:element name="REPR_SER" type="xsd:string"/> - <!-- SEQ:36, Table:BP_HEADER/ADDRESS/AD_URL, Field:VLD_ST_DT, M/O:M, Type:VARC, Size:255, Description:유효시작일자 --> + <!-- SEQ:36, Table:BP_HEADER/ADDRESS/AD_URL, Field:VLD_ST_DT, M/O:M, Type:VARC, Size:8, Description:유효시작일자 --> <xsd:element name="VLD_ST_DT" type="xsd:string"/> - <!-- SEQ:37, Table:BP_HEADER/ADDRESS/AD_URL, Field:URL, M/O:, Type:VARC, Size:255, Description:URL --> + <!-- SEQ:37, Table:BP_HEADER/ADDRESS/AD_URL, Field:URL, M/O:, Type:VARC, Size:2048, Description:URL --> <xsd:element name="URL" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="BP_COMPNY"> <xsd:sequence> - <!-- SEQ:95, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:CO_CD, M/O:M, Type:VARC, Size:255, Description:회사코드 --> + <!-- SEQ:95, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:CO_CD, M/O:M, Type:VARC, Size:4, Description:회사코드 --> <xsd:element name="CO_CD" type="xsd:string"/> - <!-- SEQ:96, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:CTL_ACNT, M/O:, Type:VARC, Size:255, Description:조정계정 --> + <!-- SEQ:96, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:CTL_ACNT, M/O:, Type:VARC, Size:10, Description:조정계정 --> <xsd:element name="CTL_ACNT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:97, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:SRT_KEY, M/O:, Type:VARC, Size:255, Description:정렬키 --> + <!-- SEQ:97, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:SRT_KEY, M/O:, Type:VARC, Size:3, Description:정렬키 --> <xsd:element name="SRT_KEY" type="xsd:string" minOccurs="0"/> - <!-- SEQ:98, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:PLN_GRP, M/O:, Type:VARC, Size:255, Description:계획그룹 --> + <!-- SEQ:98, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:PLN_GRP, M/O:, Type:VARC, Size:10, Description:계획그룹 --> <xsd:element name="PLN_GRP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:99, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:BF_VNDRCD, M/O:, Type:VARC, Size:255, Description:이전VENDOR코드 --> + <!-- SEQ:99, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:BF_VNDRCD, M/O:, Type:VARC, Size:10, Description:이전VENDOR코드 --> <xsd:element name="BF_VNDRCD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:100, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:SPLY_COND, M/O:, Type:VARC, Size:255, Description:지급조건 --> + <!-- SEQ:100, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:SPLY_COND, M/O:, Type:VARC, Size:4, Description:지급조건 --> <xsd:element name="SPLY_COND" type="xsd:string" minOccurs="0"/> - <!-- SEQ:101, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:OVLAP_INVC_ORDR, M/O:, Type:VARC, Size:255, Description:중복송장지시자 --> + <!-- SEQ:101, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:OVLAP_INVC_ORDR, M/O:, Type:VARC, Size:1, Description:중복송장지시자 --> <xsd:element name="OVLAP_INVC_ORDR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:102, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:SPLY_MTHD, M/O:, Type:VARC, Size:255, Description:지급방법 --> + <!-- SEQ:102, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:SPLY_MTHD, M/O:, Type:VARC, Size:10, Description:지급방법 --> <xsd:element name="SPLY_MTHD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:103, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:SPLY_HOLD_ORDR, M/O:, Type:VARC, Size:255, Description:지급보류지시자 --> + <!-- SEQ:103, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:SPLY_HOLD_ORDR, M/O:, Type:VARC, Size:1, Description:지급보류지시자 --> <xsd:element name="SPLY_HOLD_ORDR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:104, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:PST_HOLD_ORDR, M/O:, Type:VARC, Size:255, Description:전기보류지시자 --> + <!-- SEQ:104, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:PST_HOLD_ORDR, M/O:, Type:VARC, Size:1, Description:전기보류지시자 --> <xsd:element name="PST_HOLD_ORDR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:105, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:DEL_ORDR, M/O:, Type:VARC, Size:255, Description:삭제지시자 --> + <!-- SEQ:105, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:DEL_ORDR, M/O:, Type:VARC, Size:1, Description:삭제지시자 --> <xsd:element name="DEL_ORDR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:106, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:SRCE_TX_NTN_CD, M/O:, Type:VARC, Size:255, Description:원천세국가코드 --> + <!-- SEQ:106, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:SRCE_TX_NTN_CD, M/O:, Type:VARC, Size:3, Description:원천세국가코드 --> <xsd:element name="SRCE_TX_NTN_CD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:107, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:MIN_ORDR, M/O:, Type:VARC, Size:255, Description:소수지시자 --> + <!-- SEQ:107, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:MIN_ORDR, M/O:, Type:VARC, Size:1, Description:소수지시자 --> <xsd:element name="MIN_ORDR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:108, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:SPRT_SPLY_ORDR, M/O:, Type:VARC, Size:255, Description:분리지급지시자 --> + <!-- SEQ:108, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:SPRT_SPLY_ORDR, M/O:, Type:VARC, Size:1, Description:분리지급지시자 --> <xsd:element name="SPRT_SPLY_ORDR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:109, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:TRD_BANK_SHRT_KEY, M/O:, Type:VARC, Size:255, Description:거래은행단축키 --> + <!-- SEQ:109, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:TRD_BANK_SHRT_KEY, M/O:, Type:VARC, Size:5, Description:거래은행단축키 --> <xsd:element name="TRD_BANK_SHRT_KEY" type="xsd:string" minOccurs="0"/> - <!-- SEQ:110, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:IATA_BIC_GB, M/O:, Type:VARC, Size:255, Description:IATA,BIC구분 --> + <!-- SEQ:110, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:IATA_BIC_GB, M/O:, Type:VARC, Size:4, Description:IATA,BIC구분 --> <xsd:element name="IATA_BIC_GB" type="xsd:string" minOccurs="0"/> - <!-- SEQ:111, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:REP_TP, M/O:, Type:VARC, Size:255, Description:대표유형 --> + <!-- SEQ:111, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:REP_TP, M/O:, Type:VARC, Size:6, Description:대표유형 --> <xsd:element name="REP_TP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:112, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:LOGST_VNDR_TP, M/O:, Type:VARC, Size:255, Description:물류VENDOR유형 --> + <!-- SEQ:112, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:LOGST_VNDR_TP, M/O:, Type:VARC, Size:6, Description:물류VENDOR유형 --> <xsd:element name="LOGST_VNDR_TP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:113, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:CSTM_VNDR_CLR_ORDR, M/O:, Type:VARC, Size:255, Description:CUSTOMER,VENDOR반제지시자 --> + <!-- SEQ:113, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:CSTM_VNDR_CLR_ORDR, M/O:, Type:VARC, Size:1, Description:CUSTOMER,VENDOR반제지시자 --> <xsd:element name="CSTM_VNDR_CLR_ORDR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:114, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:SRCE_TX_CD, M/O:, Type:VARC, Size:255, Description:원천세코드 --> + <!-- SEQ:114, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:SRCE_TX_CD, M/O:, Type:VARC, Size:1, Description:원천세코드 --> <xsd:element name="SRCE_TX_CD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:150, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:VNDR_ACNT_NO, M/O:, Type:VARC, Size:255, Description:VENDOR계정번호 --> + <!-- SEQ:150, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:VNDR_ACNT_NO, M/O:, Type:VARC, Size:12, Description:VENDOR계정번호 --> <xsd:element name="VNDR_ACNT_NO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:151, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:VNDR_CHRGR_NM, M/O:, Type:VARC, Size:255, Description:VENDOR담당자명 --> + <!-- SEQ:151, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:VNDR_CHRGR_NM, M/O:, Type:VARC, Size:45, Description:VENDOR담당자명 --> <xsd:element name="VNDR_CHRGR_NM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:152, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:ACOT_CHRGR_TELNO, M/O:, Type:VARC, Size:255, Description:회계담당자전화번호 --> + <!-- SEQ:152, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:ACOT_CHRGR_TELNO, M/O:, Type:VARC, Size:30, Description:회계담당자전화번호 --> <xsd:element name="ACOT_CHRGR_TELNO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:153, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:AUTH_GRP, M/O:, Type:VARC, Size:255, Description:권한그룹 --> + <!-- SEQ:153, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:AUTH_GRP, M/O:, Type:VARC, Size:8, Description:권한그룹 --> <xsd:element name="AUTH_GRP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:154, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:FIN_IR_CALC_DT, M/O:, Type:VARC, Size:255, Description:최종이자계산일자 --> + <!-- SEQ:154, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:FIN_IR_CALC_DT, M/O:, Type:VARC, Size:8, Description:최종이자계산일자 --> <xsd:element name="FIN_IR_CALC_DT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:155, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:FIN_IR_ACT_DT, M/O:, Type:VARC, Size:255, Description:최종이자실행일자 --> + <!-- SEQ:155, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:FIN_IR_ACT_DT, M/O:, Type:VARC, Size:8, Description:최종이자실행일자 --> <xsd:element name="FIN_IR_ACT_DT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:156, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:ACOT_CHRGR_FAXNO, M/O:, Type:VARC, Size:255, Description:회계담당자FAX번호 --> + <!-- SEQ:156, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:ACOT_CHRGR_FAXNO, M/O:, Type:VARC, Size:31, Description:회계담당자FAX번호 --> <xsd:element name="ACOT_CHRGR_FAXNO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:157, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:MK_CHRGR_EMAIL, M/O:, Type:VARC, Size:255, Description:MAKER담당자이메일 --> + <!-- SEQ:157, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:MK_CHRGR_EMAIL, M/O:, Type:VARC, Size:241, Description:MAKER담당자이메일 --> <xsd:element name="MK_CHRGR_EMAIL" type="xsd:string" minOccurs="0"/> - <!-- SEQ:158, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:MEMO, M/O:, Type:VARC, Size:255, Description:메모 --> + <!-- SEQ:158, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:MEMO, M/O:, Type:VARC, Size:120, Description:메모 --> <xsd:element name="MEMO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:159, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:MOFFC_ACNT_NO, M/O:, Type:VARC, Size:255, Description:본사계정번호 --> + <!-- SEQ:159, Table:BP_HEADER/BP_VENGEN/BP_COMPNY, Field:MOFFC_ACNT_NO, M/O:, Type:VARC, Size:10, Description:본사계정번호 --> <xsd:element name="MOFFC_ACNT_NO" type="xsd:string" minOccurs="0"/> <xsd:element name="BP_WHTAX" type="BP_WHTAX" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="BP_HEADER"> <xsd:sequence> - <!-- SEQ:1, Table:BP_HEADER, Field:VNDRCD, M/O:M, Type:VARC, Size:255, Description:VENDOR코드 --> + <!-- SEQ:1, Table:BP_HEADER, Field:VNDRCD, M/O:M, Type:VARC, Size:10, Description:VENDOR코드 --> <xsd:element name="VNDRCD" type="xsd:string"/> <xsd:element name="ADDRESS" type="ADDRESS" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="BP_TAXNUM" type="BP_TAXNUM" minOccurs="0" maxOccurs="unbounded"/> @@ -189,162 +189,162 @@ </xsd:complexType> <xsd:complexType name="BP_PORG"> <xsd:sequence> - <!-- SEQ:125, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:PUR_ORG_CD, M/O:M, Type:VARC, Size:255, Description:구매조직 --> + <!-- SEQ:125, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:PUR_ORG_CD, M/O:M, Type:VARC, Size:4, Description:구매조직 --> <xsd:element name="PUR_ORG_CD" type="xsd:string"/> - <!-- SEQ:126, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:PUR_ORD_CUR, M/O:, Type:VARC, Size:255, Description:구매오더통화 --> + <!-- SEQ:126, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:PUR_ORD_CUR, M/O:, Type:VARC, Size:5, Description:구매오더통화 --> <xsd:element name="PUR_ORD_CUR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:127, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:SPLY_COND, M/O:, Type:VARC, Size:255, Description:지급조건 --> + <!-- SEQ:127, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:SPLY_COND, M/O:, Type:VARC, Size:4, Description:지급조건 --> <xsd:element name="SPLY_COND" type="xsd:string" minOccurs="0"/> - <!-- SEQ:128, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:DL_COND_1, M/O:, Type:VARC, Size:255, Description:인도조건1 --> + <!-- SEQ:128, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:DL_COND_1, M/O:, Type:VARC, Size:3, Description:인도조건1 --> <xsd:element name="DL_COND_1" type="xsd:string" minOccurs="0"/> - <!-- SEQ:129, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:DL_COND_2, M/O:, Type:VARC, Size:255, Description:인도조건2 --> + <!-- SEQ:129, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:DL_COND_2, M/O:, Type:VARC, Size:28, Description:인도조건2 --> <xsd:element name="DL_COND_2" type="xsd:string" minOccurs="0"/> - <!-- SEQ:130, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:CALC_SHM_GRP, M/O:, Type:VARC, Size:255, Description:계산스키마그룹 --> + <!-- SEQ:130, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:CALC_SHM_GRP, M/O:, Type:VARC, Size:2, Description:계산스키마그룹 --> <xsd:element name="CALC_SHM_GRP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:131, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:GR_BSE_INVC_VR, M/O:, Type:VARC, Size:255, Description:GR기준송장검증 --> + <!-- SEQ:131, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:GR_BSE_INVC_VR, M/O:, Type:VARC, Size:1, Description:GR기준송장검증 --> <xsd:element name="GR_BSE_INVC_VR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:132, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:ORD_CNFM_REQ_ORDR, M/O:, Type:VARC, Size:255, Description:오더확인요청지시자 --> + <!-- SEQ:132, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:ORD_CNFM_REQ_ORDR, M/O:, Type:VARC, Size:1, Description:오더확인요청지시자 --> <xsd:element name="ORD_CNFM_REQ_ORDR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:133, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:AT_PUR_ORD_ORDR, M/O:, Type:VARC, Size:255, Description:자동구매오더지시자 --> + <!-- SEQ:133, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:AT_PUR_ORD_ORDR, M/O:, Type:VARC, Size:1, Description:자동구매오더지시자 --> <xsd:element name="AT_PUR_ORD_ORDR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:134, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:PUR_HOLD_ORDR, M/O:, Type:VARC, Size:255, Description:구매보류지시자 --> + <!-- SEQ:134, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:PUR_HOLD_ORDR, M/O:, Type:VARC, Size:1, Description:구매보류지시자 --> <xsd:element name="PUR_HOLD_ORDR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:135, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:DEL_ORDR, M/O:, Type:VARC, Size:255, Description:삭제지시자 --> + <!-- SEQ:135, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:DEL_ORDR, M/O:, Type:VARC, Size:1, Description:삭제지시자 --> <xsd:element name="DEL_ORDR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:136, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:SALE_CHRGR_NM, M/O:, Type:VARC, Size:255, Description:영업담당자명 --> + <!-- SEQ:136, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:SALE_CHRGR_NM, M/O:, Type:VARC, Size:120, Description:영업담당자명 --> <xsd:element name="SALE_CHRGR_NM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:137, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:VNDR_TELNO, M/O:, Type:VARC, Size:255, Description:VENDOR전화번호 --> + <!-- SEQ:137, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:VNDR_TELNO, M/O:, Type:VARC, Size:30, Description:VENDOR전화번호 --> <xsd:element name="VNDR_TELNO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:138, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:CNFM_CTL_KEY, M/O:, Type:VARC, Size:255, Description:확정제어키 --> + <!-- SEQ:138, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:CNFM_CTL_KEY, M/O:, Type:VARC, Size:4, Description:확정제어키 --> <xsd:element name="CNFM_CTL_KEY" type="xsd:string" minOccurs="0"/> - <!-- SEQ:146, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:PUR_HOLD_DT, M/O:, Type:VARC, Size:255, Description:구매보류일자 --> + <!-- SEQ:146, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:PUR_HOLD_DT, M/O:, Type:VARC, Size:8, Description:구매보류일자 --> <xsd:element name="PUR_HOLD_DT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:147, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:PUR_HOLD_CAUS, M/O:, Type:VARC, Size:255, Description:구매보류사유 --> + <!-- SEQ:147, Table:BP_HEADER/BP_VENGEN/BP_PORG, Field:PUR_HOLD_CAUS, M/O:, Type:VARC, Size:120, Description:구매보류사유 --> <xsd:element name="PUR_HOLD_CAUS" type="xsd:string" minOccurs="0"/> <xsd:element name="ZVPFN" type="ZVPFN" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="BP_TAXNUM"> <xsd:sequence> - <!-- SEQ:41, Table:BP_HEADER/BP_TAXNUM, Field:TX_NO_CTG, M/O:M, Type:VARC, Size:255, Description:세금번호범주 --> + <!-- SEQ:41, Table:BP_HEADER/BP_TAXNUM, Field:TX_NO_CTG, M/O:M, Type:VARC, Size:4, Description:세금번호범주 --> <xsd:element name="TX_NO_CTG" type="xsd:string"/> - <!-- SEQ:42, Table:BP_HEADER/BP_TAXNUM, Field:BIZ_PTNR_TX_NO, M/O:, Type:VARC, Size:255, Description:사업파트너세금번호 --> + <!-- SEQ:42, Table:BP_HEADER/BP_TAXNUM, Field:BIZ_PTNR_TX_NO, M/O:, Type:VARC, Size:20, Description:사업파트너세금번호 --> <xsd:element name="BIZ_PTNR_TX_NO" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="BP_VENGEN"> <xsd:sequence> - <!-- SEQ:43, Table:BP_HEADER/BP_VENGEN, Field:VNDRNO, M/O:M, Type:VARC, Size:255, Description:VENDOR코드 --> + <!-- SEQ:43, Table:BP_HEADER/BP_VENGEN, Field:VNDRNO, M/O:M, Type:VARC, Size:10, Description:VENDOR코드 --> <xsd:element name="VNDRNO" type="xsd:string"/> - <!-- SEQ:44, Table:BP_HEADER/BP_VENGEN, Field:ACNT_GRP, M/O:, Type:VARC, Size:255, Description:계정그룹 --> + <!-- SEQ:44, Table:BP_HEADER/BP_VENGEN, Field:ACNT_GRP, M/O:, Type:VARC, Size:4, Description:계정그룹 --> <xsd:element name="ACNT_GRP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:45, Table:BP_HEADER/BP_VENGEN, Field:CSTM_CD, M/O:, Type:VARC, Size:255, Description:고객코드 --> + <!-- SEQ:45, Table:BP_HEADER/BP_VENGEN, Field:CSTM_CD, M/O:, Type:VARC, Size:10, Description:고객코드 --> <xsd:element name="CSTM_CD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:46, Table:BP_HEADER/BP_VENGEN, Field:PST_HOLD_ORDR, M/O:, Type:VARC, Size:255, Description:전기보류지시자 --> + <!-- SEQ:46, Table:BP_HEADER/BP_VENGEN, Field:PST_HOLD_ORDR, M/O:, Type:VARC, Size:1, Description:전기보류지시자 --> <xsd:element name="PST_HOLD_ORDR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:47, Table:BP_HEADER/BP_VENGEN, Field:PUR_HOLD_ORDR, M/O:, Type:VARC, Size:255, Description:구매보류지시자 --> + <!-- SEQ:47, Table:BP_HEADER/BP_VENGEN, Field:PUR_HOLD_ORDR, M/O:, Type:VARC, Size:1, Description:구매보류지시자 --> <xsd:element name="PUR_HOLD_ORDR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:48, Table:BP_HEADER/BP_VENGEN, Field:HOLD_CAUS, M/O:, Type:VARC, Size:255, Description:보류사유 --> + <!-- SEQ:48, Table:BP_HEADER/BP_VENGEN, Field:HOLD_CAUS, M/O:, Type:VARC, Size:200, Description:보류사유 --> <xsd:element name="HOLD_CAUS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:49, Table:BP_HEADER/BP_VENGEN, Field:DEL_ORDR, M/O:, Type:VARC, Size:255, Description:삭제지시자 --> + <!-- SEQ:49, Table:BP_HEADER/BP_VENGEN, Field:DEL_ORDR, M/O:, Type:VARC, Size:1, Description:삭제지시자 --> <xsd:element name="DEL_ORDR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:50, Table:BP_HEADER/BP_VENGEN, Field:CO_ID, M/O:, Type:VARC, Size:255, Description:법인ID --> + <!-- SEQ:50, Table:BP_HEADER/BP_VENGEN, Field:CO_ID, M/O:, Type:VARC, Size:6, Description:법인ID --> <xsd:element name="CO_ID" type="xsd:string" minOccurs="0"/> - <!-- SEQ:51, Table:BP_HEADER/BP_VENGEN, Field:TTL, M/O:, Type:VARC, Size:255, Description:타이틀 --> + <!-- SEQ:51, Table:BP_HEADER/BP_VENGEN, Field:TTL, M/O:, Type:VARC, Size:45, Description:타이틀 --> <xsd:element name="TTL" type="xsd:string" minOccurs="0"/> - <!-- SEQ:52, Table:BP_HEADER/BP_VENGEN, Field:REPR_NM, M/O:, Type:VARC, Size:255, Description:대표자명 --> + <!-- SEQ:52, Table:BP_HEADER/BP_VENGEN, Field:REPR_NM, M/O:, Type:VARC, Size:30, Description:대표자명 --> <xsd:element name="REPR_NM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:53, Table:BP_HEADER/BP_VENGEN, Field:BIZTP, M/O:, Type:VARC, Size:255, Description:사업유형 --> + <!-- SEQ:53, Table:BP_HEADER/BP_VENGEN, Field:BIZTP, M/O:, Type:VARC, Size:30, Description:사업유형 --> <xsd:element name="BIZTP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:54, Table:BP_HEADER/BP_VENGEN, Field:BIZCON, M/O:, Type:VARC, Size:255, Description:산업유형 --> + <!-- SEQ:54, Table:BP_HEADER/BP_VENGEN, Field:BIZCON, M/O:, Type:VARC, Size:30, Description:산업유형 --> <xsd:element name="BIZCON" type="xsd:string" minOccurs="0"/> - <!-- SEQ:55, Table:BP_HEADER/BP_VENGEN, Field:REPR_RESNO, M/O:, Type:VARC, Size:255, Description:대표자주민번호 --> + <!-- SEQ:55, Table:BP_HEADER/BP_VENGEN, Field:REPR_RESNO, M/O:, Type:VARC, Size:13, Description:대표자주민번호 --> <xsd:element name="REPR_RESNO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:56, Table:BP_HEADER/BP_VENGEN, Field:BIZR_NO, M/O:, Type:VARC, Size:255, Description:사업자번호 --> + <!-- SEQ:56, Table:BP_HEADER/BP_VENGEN, Field:BIZR_NO, M/O:, Type:VARC, Size:10, Description:사업자번호 --> <xsd:element name="BIZR_NO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:57, Table:BP_HEADER/BP_VENGEN, Field:CO_REG_NO, M/O:, Type:VARC, Size:255, Description:법인등록번호 --> + <!-- SEQ:57, Table:BP_HEADER/BP_VENGEN, Field:CO_REG_NO, M/O:, Type:VARC, Size:18, Description:법인등록번호 --> <xsd:element name="CO_REG_NO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:58, Table:BP_HEADER/BP_VENGEN, Field:TX_CD_4, M/O:, Type:VARC, Size:255, Description:세금번호4 --> + <!-- SEQ:58, Table:BP_HEADER/BP_VENGEN, Field:TX_CD_4, M/O:, Type:VARC, Size:18, Description:세금번호4 --> <xsd:element name="TX_CD_4" type="xsd:string" minOccurs="0"/> - <!-- SEQ:59, Table:BP_HEADER/BP_VENGEN, Field:VAT_REG_NO, M/O:, Type:VARC, Size:255, Description:부가세등록번호 --> + <!-- SEQ:59, Table:BP_HEADER/BP_VENGEN, Field:VAT_REG_NO, M/O:, Type:VARC, Size:20, Description:부가세등록번호 --> <xsd:element name="VAT_REG_NO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:60, Table:BP_HEADER/BP_VENGEN, Field:DEL_HOLD_ORDR, M/O:, Type:VARC, Size:255, Description:삭제보류지시자 --> + <!-- SEQ:60, Table:BP_HEADER/BP_VENGEN, Field:DEL_HOLD_ORDR, M/O:, Type:VARC, Size:1, Description:삭제보류지시자 --> <xsd:element name="DEL_HOLD_ORDR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:61, Table:BP_HEADER/BP_VENGEN, Field:GBL_TOP_CD, M/O:, Type:VARC, Size:255, Description:GLOBALTOP코드 --> + <!-- SEQ:61, Table:BP_HEADER/BP_VENGEN, Field:GBL_TOP_CD, M/O:, Type:VARC, Size:10, Description:GLOBALTOP코드 --> <xsd:element name="GBL_TOP_CD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:62, Table:BP_HEADER/BP_VENGEN, Field:GBL_TOP_NM, M/O:, Type:VARC, Size:255, Description:GLOBALTOP명 --> + <!-- SEQ:62, Table:BP_HEADER/BP_VENGEN, Field:GBL_TOP_NM, M/O:, Type:VARC, Size:120, Description:GLOBALTOP명 --> <xsd:element name="GBL_TOP_NM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:63, Table:BP_HEADER/BP_VENGEN, Field:DMST_TOP_CD, M/O:, Type:VARC, Size:255, Description:국내TOP코드 --> + <!-- SEQ:63, Table:BP_HEADER/BP_VENGEN, Field:DMST_TOP_CD, M/O:, Type:VARC, Size:10, Description:국내TOP코드 --> <xsd:element name="DMST_TOP_CD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:64, Table:BP_HEADER/BP_VENGEN, Field:DMST_TOP_NM, M/O:, Type:VARC, Size:255, Description:국내TOP명 --> + <!-- SEQ:64, Table:BP_HEADER/BP_VENGEN, Field:DMST_TOP_NM, M/O:, Type:VARC, Size:120, Description:국내TOP명 --> <xsd:element name="DMST_TOP_NM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:65, Table:BP_HEADER/BP_VENGEN, Field:BIZ_UOM_CD, M/O:, Type:VARC, Size:255, Description:사업단위코드 --> + <!-- SEQ:65, Table:BP_HEADER/BP_VENGEN, Field:BIZ_UOM_CD, M/O:, Type:VARC, Size:10, Description:사업단위코드 --> <xsd:element name="BIZ_UOM_CD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:66, Table:BP_HEADER/BP_VENGEN, Field:BIZ_UOM_NM, M/O:, Type:VARC, Size:255, Description:사업단위명 --> + <!-- SEQ:66, Table:BP_HEADER/BP_VENGEN, Field:BIZ_UOM_NM, M/O:, Type:VARC, Size:40, Description:사업단위명 --> <xsd:element name="BIZ_UOM_NM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:67, Table:BP_HEADER/BP_VENGEN, Field:DNS_NO, M/O:, Type:VARC, Size:255, Description:DUNS번호 --> + <!-- SEQ:67, Table:BP_HEADER/BP_VENGEN, Field:DNS_NO, M/O:, Type:VARC, Size:11, Description:DUNS번호 --> <xsd:element name="DNS_NO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:68, Table:BP_HEADER/BP_VENGEN, Field:GIRO_VNDR_ORDR, M/O:, Type:VARC, Size:255, Description:지로VENDOR지시자 --> + <!-- SEQ:68, Table:BP_HEADER/BP_VENGEN, Field:GIRO_VNDR_ORDR, M/O:, Type:VARC, Size:1, Description:지로VENDOR지시자 --> <xsd:element name="GIRO_VNDR_ORDR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:69, Table:BP_HEADER/BP_VENGEN, Field:FIR_NM, M/O:, Type:VARC, Size:255, Description:FIRST이름 --> + <!-- SEQ:69, Table:BP_HEADER/BP_VENGEN, Field:FIR_NM, M/O:, Type:VARC, Size:120, Description:FIRST이름 --> <xsd:element name="FIR_NM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:70, Table:BP_HEADER/BP_VENGEN, Field:VNDRNM_1, M/O:, Type:VARC, Size:255, Description:VENDOR명1 --> + <!-- SEQ:70, Table:BP_HEADER/BP_VENGEN, Field:VNDRNM_1, M/O:, Type:VARC, Size:10, Description:VENDOR명1 --> <xsd:element name="VNDRNM_1" type="xsd:string" minOccurs="0"/> - <!-- SEQ:71, Table:BP_HEADER/BP_VENGEN, Field:REP_TEL_NO, M/O:, Type:VARC, Size:255, Description:대표전화번호 --> + <!-- SEQ:71, Table:BP_HEADER/BP_VENGEN, Field:REP_TEL_NO, M/O:, Type:VARC, Size:30, Description:대표전화번호 --> <xsd:element name="REP_TEL_NO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:72, Table:BP_HEADER/BP_VENGEN, Field:REG_DT, M/O:, Type:VARC, Size:255, Description:등록일자 --> + <!-- SEQ:72, Table:BP_HEADER/BP_VENGEN, Field:REG_DT, M/O:, Type:VARC, Size:8, Description:등록일자 --> <xsd:element name="REG_DT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:73, Table:BP_HEADER/BP_VENGEN, Field:REG_TM, M/O:, Type:VARC, Size:255, Description:등록시간 --> + <!-- SEQ:73, Table:BP_HEADER/BP_VENGEN, Field:REG_TM, M/O:, Type:VARC, Size:6, Description:등록시간 --> <xsd:element name="REG_TM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:74, Table:BP_HEADER/BP_VENGEN, Field:REGR_ID, M/O:, Type:VARC, Size:255, Description:등록자ID --> + <!-- SEQ:74, Table:BP_HEADER/BP_VENGEN, Field:REGR_ID, M/O:, Type:VARC, Size:13, Description:등록자ID --> <xsd:element name="REGR_ID" type="xsd:string" minOccurs="0"/> - <!-- SEQ:75, Table:BP_HEADER/BP_VENGEN, Field:AGR_DT, M/O:, Type:VARC, Size:255, Description:승인일자 --> + <!-- SEQ:75, Table:BP_HEADER/BP_VENGEN, Field:AGR_DT, M/O:, Type:VARC, Size:8, Description:승인일자 --> <xsd:element name="AGR_DT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:76, Table:BP_HEADER/BP_VENGEN, Field:AGR_TM, M/O:, Type:VARC, Size:255, Description:승인시간 --> + <!-- SEQ:76, Table:BP_HEADER/BP_VENGEN, Field:AGR_TM, M/O:, Type:VARC, Size:6, Description:승인시간 --> <xsd:element name="AGR_TM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:77, Table:BP_HEADER/BP_VENGEN, Field:AGR_R_ID, M/O:, Type:VARC, Size:255, Description:승인자ID --> + <!-- SEQ:77, Table:BP_HEADER/BP_VENGEN, Field:AGR_R_ID, M/O:, Type:VARC, Size:13, Description:승인자ID --> <xsd:element name="AGR_R_ID" type="xsd:string" minOccurs="0"/> - <!-- SEQ:78, Table:BP_HEADER/BP_VENGEN, Field:CHG_DT, M/O:, Type:VARC, Size:255, Description:변경일자 --> + <!-- SEQ:78, Table:BP_HEADER/BP_VENGEN, Field:CHG_DT, M/O:, Type:VARC, Size:8, Description:변경일자 --> <xsd:element name="CHG_DT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:79, Table:BP_HEADER/BP_VENGEN, Field:CHG_TM, M/O:, Type:VARC, Size:255, Description:변경시간 --> + <!-- SEQ:79, Table:BP_HEADER/BP_VENGEN, Field:CHG_TM, M/O:, Type:VARC, Size:6, Description:변경시간 --> <xsd:element name="CHG_TM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:80, Table:BP_HEADER/BP_VENGEN, Field:CHGR_ID, M/O:, Type:VARC, Size:255, Description:변경자ID --> + <!-- SEQ:80, Table:BP_HEADER/BP_VENGEN, Field:CHGR_ID, M/O:, Type:VARC, Size:13, Description:변경자ID --> <xsd:element name="CHGR_ID" type="xsd:string" minOccurs="0"/> - <!-- SEQ:81, Table:BP_HEADER/BP_VENGEN, Field:PTNT_VNDRCD, M/O:, Type:VARC, Size:255, Description:잠재VENDOR코드 --> + <!-- SEQ:81, Table:BP_HEADER/BP_VENGEN, Field:PTNT_VNDRCD, M/O:, Type:VARC, Size:10, Description:잠재VENDOR코드 --> <xsd:element name="PTNT_VNDRCD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:82, Table:BP_HEADER/BP_VENGEN, Field:ADR_1, M/O:, Type:VARC, Size:255, Description:주소1 --> + <!-- SEQ:82, Table:BP_HEADER/BP_VENGEN, Field:ADR_1, M/O:, Type:VARC, Size:120, Description:주소1 --> <xsd:element name="ADR_1" type="xsd:string" minOccurs="0"/> - <!-- SEQ:83, Table:BP_HEADER/BP_VENGEN, Field:ADR_2, M/O:, Type:VARC, Size:255, Description:주소2 --> + <!-- SEQ:83, Table:BP_HEADER/BP_VENGEN, Field:ADR_2, M/O:, Type:VARC, Size:512, Description:주소2 --> <xsd:element name="ADR_2" type="xsd:string" minOccurs="0"/> - <!-- SEQ:84, Table:BP_HEADER/BP_VENGEN, Field:ACNT_GRP_TP, M/O:, Type:VARC, Size:255, Description:계정그룹유형 --> + <!-- SEQ:84, Table:BP_HEADER/BP_VENGEN, Field:ACNT_GRP_TP, M/O:, Type:VARC, Size:2, Description:계정그룹유형 --> <xsd:element name="ACNT_GRP_TP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:85, Table:BP_HEADER/BP_VENGEN, Field:QLT_CHRGR_NM, M/O:, Type:VARC, Size:255, Description:품질담당자명 --> + <!-- SEQ:85, Table:BP_HEADER/BP_VENGEN, Field:QLT_CHRGR_NM, M/O:, Type:VARC, Size:20, Description:품질담당자명 --> <xsd:element name="QLT_CHRGR_NM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:86, Table:BP_HEADER/BP_VENGEN, Field:QLT_CHRGR_TELNO, M/O:, Type:VARC, Size:255, Description:품질담당자전화번호 --> + <!-- SEQ:86, Table:BP_HEADER/BP_VENGEN, Field:QLT_CHRGR_TELNO, M/O:, Type:VARC, Size:30, Description:품질담당자전화번호 --> <xsd:element name="QLT_CHRGR_TELNO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:87, Table:BP_HEADER/BP_VENGEN, Field:QLT_CHRGR_EMAIL, M/O:, Type:VARC, Size:255, Description:품질담당자이메일 --> + <!-- SEQ:87, Table:BP_HEADER/BP_VENGEN, Field:QLT_CHRGR_EMAIL, M/O:, Type:VARC, Size:241, Description:품질담당자이메일 --> <xsd:element name="QLT_CHRGR_EMAIL" type="xsd:string" minOccurs="0"/> - <!-- SEQ:88, Table:BP_HEADER/BP_VENGEN, Field:SB_WKA_SEQ, M/O:, Type:VARC, Size:255, Description:SUB작업장순서 --> + <!-- SEQ:88, Table:BP_HEADER/BP_VENGEN, Field:SB_WKA_SEQ, M/O:, Type:VARC, Size:4, Description:SUB작업장순서 --> <xsd:element name="SB_WKA_SEQ" type="xsd:string" minOccurs="0"/> - <!-- SEQ:89, Table:BP_HEADER/BP_VENGEN, Field:OVLAP_CAUS_CD, M/O:, Type:VARC, Size:255, Description:중복사유코드 --> + <!-- SEQ:89, Table:BP_HEADER/BP_VENGEN, Field:OVLAP_CAUS_CD, M/O:, Type:VARC, Size:2, Description:중복사유코드 --> <xsd:element name="OVLAP_CAUS_CD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:90, Table:BP_HEADER/BP_VENGEN, Field:DOC_TP, M/O:, Type:VARC, Size:255, Description:문서유형 --> + <!-- SEQ:90, Table:BP_HEADER/BP_VENGEN, Field:DOC_TP, M/O:, Type:VARC, Size:3, Description:문서유형 --> <xsd:element name="DOC_TP" type="xsd:string" minOccurs="0"/> - <!-- SEQ:91, Table:BP_HEADER/BP_VENGEN, Field:DOC_NO, M/O:, Type:VARC, Size:255, Description:문서번호 --> + <!-- SEQ:91, Table:BP_HEADER/BP_VENGEN, Field:DOC_NO, M/O:, Type:VARC, Size:25, Description:문서번호 --> <xsd:element name="DOC_NO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:92, Table:BP_HEADER/BP_VENGEN, Field:PTN_DOC, M/O:, Type:VARC, Size:255, Description:부분문서 --> + <!-- SEQ:92, Table:BP_HEADER/BP_VENGEN, Field:PTN_DOC, M/O:, Type:VARC, Size:3, Description:부분문서 --> <xsd:element name="PTN_DOC" type="xsd:string" minOccurs="0"/> - <!-- SEQ:93, Table:BP_HEADER/BP_VENGEN, Field:DOC_VER, M/O:, Type:VARC, Size:255, Description:문서버전 --> + <!-- SEQ:93, Table:BP_HEADER/BP_VENGEN, Field:DOC_VER, M/O:, Type:VARC, Size:2, Description:문서버전 --> <xsd:element name="DOC_VER" type="xsd:string" minOccurs="0"/> - <!-- SEQ:94, Table:BP_HEADER/BP_VENGEN, Field:INB_FLAG, M/O:, Type:VARC, Size:255, Description:인바운드플래그 --> + <!-- SEQ:94, Table:BP_HEADER/BP_VENGEN, Field:INB_FLAG, M/O:, Type:VARC, Size:1, Description:인바운드플래그 --> <xsd:element name="INB_FLAG" type="xsd:string" minOccurs="0"/> - <!-- SEQ:145, Table:BP_HEADER/BP_VENGEN, Field:PUR_HOLD_DT, M/O:, Type:VARC, Size:255, Description:구매보류일자 --> + <!-- SEQ:145, Table:BP_HEADER/BP_VENGEN, Field:PUR_HOLD_DT, M/O:, Type:VARC, Size:8, Description:구매보류일자 --> <xsd:element name="PUR_HOLD_DT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:148, Table:BP_HEADER/BP_VENGEN, Field:INTL_LCTN_CHK_NUM, M/O:, Type:VARC, Size:255, Description:국제LOCATION점검숫자 --> + <!-- SEQ:148, Table:BP_HEADER/BP_VENGEN, Field:INTL_LCTN_CHK_NUM, M/O:, Type:NUMB, Size:1, Description:국제LOCATION점검숫자 --> <xsd:element name="INTL_LCTN_CHK_NUM" type="xsd:string" minOccurs="0"/> - <!-- SEQ:149, Table:BP_HEADER/BP_VENGEN, Field:SRCETX_RP_SEX_KEY, M/O:, Type:VARC, Size:255, Description:원천세의무자성별키 --> + <!-- SEQ:149, Table:BP_HEADER/BP_VENGEN, Field:SRCETX_RP_SEX_KEY, M/O:, Type:VARC, Size:1, Description:원천세의무자성별키 --> <xsd:element name="SRCETX_RP_SEX_KEY" type="xsd:string" minOccurs="0"/> - <!-- SEQ:160, Table:BP_HEADER/BP_VENGEN, Field:CO_VLM, M/O:, Type:VARC, Size:255, Description:기업규모 --> + <!-- SEQ:160, Table:BP_HEADER/BP_VENGEN, Field:CO_VLM, M/O:, Type:VARC, Size:1, Description:기업규모 --> <xsd:element name="CO_VLM" type="xsd:string" minOccurs="0"/> <xsd:element name="BP_COMPNY" type="BP_COMPNY" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="BP_PORG" type="BP_PORG" minOccurs="0" maxOccurs="unbounded"/> @@ -352,25 +352,25 @@ </xsd:complexType> <xsd:complexType name="BP_WHTAX"> <xsd:sequence> - <!-- SEQ:115, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:SRCE_TX_TP, M/O:M, Type:VARC, Size:255, Description:원천세유형 --> + <!-- SEQ:115, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:SRCE_TX_TP, M/O:M, Type:VARC, Size:2, Description:원천세유형 --> <xsd:element name="SRCE_TX_TP" type="xsd:string"/> - <!-- SEQ:116, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:SRCE_TX_REL_ORDR, M/O:, Type:VARC, Size:255, Description:원천세관련지시자 --> + <!-- SEQ:116, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:SRCE_TX_REL_ORDR, M/O:, Type:VARC, Size:1, Description:원천세관련지시자 --> <xsd:element name="SRCE_TX_REL_ORDR" type="xsd:string" minOccurs="0"/> - <!-- SEQ:117, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:SRCE_TX_IDENT_NO, M/O:, Type:VARC, Size:255, Description:원천세식별번호 --> + <!-- SEQ:117, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:SRCE_TX_IDENT_NO, M/O:, Type:VARC, Size:16, Description:원천세식별번호 --> <xsd:element name="SRCE_TX_IDENT_NO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:118, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:SRCE_TX_NO, M/O:, Type:VARC, Size:255, Description:원천세코드 --> + <!-- SEQ:118, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:SRCE_TX_NO, M/O:, Type:VARC, Size:2, Description:원천세코드 --> <xsd:element name="SRCE_TX_NO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:119, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:DCHAG_CERT_NO, M/O:, Type:VARC, Size:255, Description:면제증명서번호 --> + <!-- SEQ:119, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:DCHAG_CERT_NO, M/O:, Type:VARC, Size:15, Description:면제증명서번호 --> <xsd:element name="DCHAG_CERT_NO" type="xsd:string" minOccurs="0"/> - <!-- SEQ:120, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:DCHAG_RAT, M/O:, Type:VARC, Size:255, Description:면제율 --> + <!-- SEQ:120, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:DCHAG_RAT, M/O:, Type:NUMB, Size:6,2, Description:면제율 --> <xsd:element name="DCHAG_RAT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:121, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:DCHAG_ST_DT, M/O:, Type:VARC, Size:255, Description:면제시작일자 --> + <!-- SEQ:121, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:DCHAG_ST_DT, M/O:, Type:VARC, Size:8, Description:면제시작일자 --> <xsd:element name="DCHAG_ST_DT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:122, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:DCHAG_ED_DT, M/O:, Type:VARC, Size:255, Description:면제종료일 --> + <!-- SEQ:122, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:DCHAG_ED_DT, M/O:, Type:VARC, Size:8, Description:면제종료일 --> <xsd:element name="DCHAG_ED_DT" type="xsd:string" minOccurs="0"/> - <!-- SEQ:123, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:DCHAG_CAUS, M/O:, Type:VARC, Size:255, Description:면제사유 --> + <!-- SEQ:123, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:DCHAG_CAUS, M/O:, Type:VARC, Size:200, Description:면제사유 --> <xsd:element name="DCHAG_CAUS" type="xsd:string" minOccurs="0"/> - <!-- SEQ:124, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:RECIP_TP, M/O:, Type:VARC, Size:255, Description:수취인유형 --> + <!-- SEQ:124, Table:BP_HEADER/BP_VENGEN/BP_COMPNY/BP_WHTAX, Field:RECIP_TP, M/O:, Type:VARC, Size:2, Description:수취인유형 --> <xsd:element name="RECIP_TP" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> @@ -381,17 +381,17 @@ </xsd:complexType> <xsd:complexType name="ZVPFN"> <xsd:sequence> - <!-- SEQ:139, Table:BP_HEADER/BP_VENGEN/BP_PORG/ZVPFN, Field:VNDR_SUB_NO, M/O:M, Type:VARC, Size:255, Description:VENDOR서브번호 --> + <!-- SEQ:139, Table:BP_HEADER/BP_VENGEN/BP_PORG/ZVPFN, Field:VNDR_SUB_NO, M/O:M, Type:VARC, Size:6, Description:VENDOR서브번호 --> <xsd:element name="VNDR_SUB_NO" type="xsd:string"/> - <!-- SEQ:140, Table:BP_HEADER/BP_VENGEN/BP_PORG/ZVPFN, Field:PLNT_NO, M/O:M, Type:VARC, Size:255, Description:플랜트번호 --> + <!-- SEQ:140, Table:BP_HEADER/BP_VENGEN/BP_PORG/ZVPFN, Field:PLNT_NO, M/O:M, Type:VARC, Size:4, Description:플랜트번호 --> <xsd:element name="PLNT_NO" type="xsd:string"/> - <!-- SEQ:141, Table:BP_HEADER/BP_VENGEN/BP_PORG/ZVPFN, Field:PTNR_SKL, M/O:M, Type:VARC, Size:255, Description:파트너기능 --> + <!-- SEQ:141, Table:BP_HEADER/BP_VENGEN/BP_PORG/ZVPFN, Field:PTNR_SKL, M/O:M, Type:VARC, Size:2, Description:파트너기능 --> <xsd:element name="PTNR_SKL" type="xsd:string"/> - <!-- SEQ:142, Table:BP_HEADER/BP_VENGEN/BP_PORG/ZVPFN, Field:PTNR_CNT, M/O:M, Type:VARC, Size:255, Description:파트너카운터 --> + <!-- SEQ:142, Table:BP_HEADER/BP_VENGEN/BP_PORG/ZVPFN, Field:PTNR_CNT, M/O:M, Type:NUMB, Size:3, Description:파트너카운터 --> <xsd:element name="PTNR_CNT" type="xsd:string"/> - <!-- SEQ:143, Table:BP_HEADER/BP_VENGEN/BP_PORG/ZVPFN, Field:ETC_REF_VNDRCD, M/O:, Type:VARC, Size:255, Description:기타참조VENDOR코드 --> + <!-- SEQ:143, Table:BP_HEADER/BP_VENGEN/BP_PORG/ZVPFN, Field:ETC_REF_VNDRCD, M/O:, Type:VARC, Size:10, Description:기타참조VENDOR코드 --> <xsd:element name="ETC_REF_VNDRCD" type="xsd:string" minOccurs="0"/> - <!-- SEQ:144, Table:BP_HEADER/BP_VENGEN/BP_PORG/ZVPFN, Field:BSE_PTNR_ORDR, M/O:, Type:VARC, Size:255, Description:기본파트너지시자 --> + <!-- SEQ:144, Table:BP_HEADER/BP_VENGEN/BP_PORG/ZVPFN, Field:BSE_PTNR_ORDR, M/O:, Type:VARC, Size:1, Description:기본파트너지시자 --> <xsd:element name="BSE_PTNR_ORDR" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> diff --git a/public/wsdl/_util/analyze_mdz_wsdl.py b/public/wsdl/_util/analyze_mdz_wsdl.py new file mode 100755 index 00000000..216d867b --- /dev/null +++ b/public/wsdl/_util/analyze_mdz_wsdl.py @@ -0,0 +1,847 @@ +#!/usr/bin/env python3 +""" +MDZ WSDL 파일 분석 스크립트 +- WSDL 파일에서 테이블 구조 추출 +- 현재 Drizzle 스키마와 비교 +- 누락된 테이블/필드 확인 +""" + +import os +import re +import xml.etree.ElementTree as ET +from pathlib import Path +from typing import Dict, List, Set, Tuple +from collections import defaultdict +import sys +from datetime import datetime + +class ColorLogger: + """컬러 로깅을 위한 클래스""" + + # ANSI 컬러 코드 + COLORS = { + 'RESET': '\033[0m', + 'BOLD': '\033[1m', + 'DIM': '\033[2m', + + # 기본 컬러 + 'BLACK': '\033[30m', + 'RED': '\033[31m', + 'GREEN': '\033[32m', + 'YELLOW': '\033[33m', + 'BLUE': '\033[34m', + 'MAGENTA': '\033[35m', + 'CYAN': '\033[36m', + 'WHITE': '\033[37m', + + # 밝은 컬러 + 'BRIGHT_BLACK': '\033[90m', + 'BRIGHT_RED': '\033[91m', + 'BRIGHT_GREEN': '\033[92m', + 'BRIGHT_YELLOW': '\033[93m', + 'BRIGHT_BLUE': '\033[94m', + 'BRIGHT_MAGENTA': '\033[95m', + 'BRIGHT_CYAN': '\033[96m', + 'BRIGHT_WHITE': '\033[97m', + + # 배경 컬러 + 'BG_RED': '\033[41m', + 'BG_GREEN': '\033[42m', + 'BG_YELLOW': '\033[43m', + 'BG_BLUE': '\033[44m', + } + + def __init__(self, enable_colors: bool = True): + """ + 컬러 로거 초기화 + Args: + enable_colors: Windows CMD에서는 False로 설정 가능 + """ + self.enable_colors = enable_colors and self._supports_color() + + def _supports_color(self) -> bool: + """컬러 지원 여부 확인""" + # Windows에서 colorama가 없으면 컬러 비활성화 + if os.name == 'nt': + try: + import colorama + colorama.init() + return True + except ImportError: + return False + return True + + def _colorize(self, text: str, color: str) -> str: + """텍스트에 컬러 적용""" + if not self.enable_colors: + return text + return f"{self.COLORS.get(color, '')}{text}{self.COLORS['RESET']}" + + def header(self, text: str): + """헤더 로그 (굵은 파란색)""" + colored_text = self._colorize(text, 'BOLD') + colored_text = self._colorize(colored_text, 'BRIGHT_BLUE') + print(colored_text) + + def info(self, text: str): + """정보 로그 (파란색)""" + colored_text = self._colorize(text, 'BLUE') + print(colored_text) + + def success(self, text: str): + """성공 로그 (초록색)""" + colored_text = self._colorize(text, 'BRIGHT_GREEN') + print(colored_text) + + def warning(self, text: str): + """경고 로그 (노란색)""" + colored_text = self._colorize(text, 'BRIGHT_YELLOW') + print(colored_text) + + def error(self, text: str): + """에러 로그 (빨간색)""" + colored_text = self._colorize(text, 'BRIGHT_RED') + print(colored_text) + + def debug(self, text: str): + """디버그 로그 (회색)""" + colored_text = self._colorize(text, 'BRIGHT_BLACK') + print(colored_text) + + def table_info(self, text: str): + """테이블 정보 로그 (시안색)""" + colored_text = self._colorize(text, 'CYAN') + print(colored_text) + + def field_info(self, text: str): + """필드 정보 로그 (마젠타)""" + colored_text = self._colorize(text, 'MAGENTA') + print(colored_text) + + def separator(self, char: str = "=", length: int = 80): + """구분선 출력 (굵은 흰색)""" + line = char * length + colored_line = self._colorize(line, 'BOLD') + print(colored_line) + +# 전역 로거 인스턴스 +logger = ColorLogger() + +class WSDLAnalyzer: + def __init__(self, wsdl_directory: str): + self.wsdl_directory = Path(wsdl_directory) + self.tables = defaultdict(dict) # table_name -> {field_name: field_info} + self.table_hierarchy = defaultdict(list) # parent -> [children] + self.table_sources = defaultdict(set) # table_name -> {wsdl_file_names} + + # 필드명 매핑 규칙 정의 (개별 WSDL을 존중해 테이블 분리하기로 했으므로 사용하지 않음.) + self.field_name_mappings = {} + + # 사용법 + # self.field_name_mappings = { + # 'CUSTOMER_MASTER': { # WSDL 파일명에 이 문자열이 포함되면 + # 'ADDRNO': 'ADR_NO' # ADDRNO를 ADR_NO로 변경 + # } + # } + + def analyze_all_mdz_wsdls(self): + """MDZ가 포함된 모든 WSDL 파일 분석""" + wsdl_files = list(self.wsdl_directory.glob("*MDZ*.wsdl")) + + logger.info(f"Found {len(wsdl_files)} MDZ WSDL files:") + for wsdl_file in wsdl_files: + logger.table_info(f" - {wsdl_file.name}") + logger.info("") + + for wsdl_file in wsdl_files: + self._analyze_wsdl_file(wsdl_file) + + # 테이블별 필드 합집합 처리 + self._merge_table_fields() + + return self.tables, self.table_hierarchy + + def _merge_table_fields(self): + """테이블별 필드 합집합 처리 - 개선된 버전""" + merged_tables = defaultdict(dict) + + for table_name, fields in self.tables.items(): + # MATL_PLNT 테이블의 경우 디버깅 정보 출력 + if table_name == 'MATL_PLNT': + logger.debug(f"\n=== MATL_PLNT 테이블 디버깅 ===") + logger.debug(f" 병합 전 필드 수: {len(fields)}") + logger.debug(f" 필드 목록:") + for field_key, field_info in fields.items(): + logger.debug(f" {field_key} -> {field_info['field_name']} (from {field_info['wsdl_source']})") + + # 테이블별 필드를 실제 필드명 기준으로 그룹화 + field_groups = defaultdict(list) # actual_field_name -> [field_infos] + + for field_key, field_info in fields.items(): + # field_key에서 실제 필드명 추출 (|| 구분자 사용) + actual_field_name = field_key.split('||')[0] if '||' in field_key else field_key + field_groups[actual_field_name].append(field_info) + + # MATL_PLNT 테이블의 경우 그룹화 결과 출력 + if table_name == 'MATL_PLNT': + logger.debug(f" 그룹화 후 필드 수: {len(field_groups)}") + logger.debug(f" 그룹별 필드:") + for actual_field_name, field_infos in field_groups.items(): + sources = [info['wsdl_source'] for info in field_infos] + logger.debug(f" {actual_field_name}: {len(field_infos)}개 소스 - {sources}") + + # 각 필드 그룹을 병합 + for actual_field_name, field_infos in field_groups.items(): + # 첫 번째 필드 정보를 기준으로 시작 + merged_field = field_infos[0].copy() + + # 모든 WSDL 소스 수집 + all_sources = set() + all_descriptions = set() + + for field_info in field_infos: + all_sources.add(field_info['wsdl_source']) + if field_info['description'].strip(): + all_descriptions.add(field_info['description'].strip()) + + # 필수 필드인 경우 유지 + if field_info['mandatory'] == 'M': + merged_field['mandatory'] = 'M' + + # 병합된 정보 설정 + merged_field['wsdl_sources'] = all_sources + + # 설명 병합 (첫 번째 설명 사용, WSDL 소스 정보는 주석에 추가) + if all_descriptions: + merged_field['description'] = list(all_descriptions)[0] + else: + merged_field['description'] = f'From multiple sources' + + # 테이블에 추가 (실제 필드명 사용) + merged_tables[table_name][actual_field_name] = merged_field + + # 병합된 테이블 정보로 업데이트 + self.tables = merged_tables + + # 테이블별 WSDL 소스 정보 출력 + logger.info("\n테이블별 WSDL 소스 정보 (필드 중복 제거 후):") + for table_name, fields in self.tables.items(): + sources = set() + for field_info in fields.values(): + sources.update(field_info['wsdl_sources']) + logger.table_info(f"\n{table_name}:") + for source in sorted(sources): + logger.table_info(f" - {source}") + logger.table_info(f" 총 필드 수: {len(fields)}") + + # MATL_PLNT 테이블의 경우 최종 필드 목록 출력 + if table_name == 'MATL_PLNT': + logger.debug(f" 최종 필드 목록:") + for field_name in sorted(fields.keys()): + logger.debug(f" - {field_name}") + + def _analyze_wsdl_file(self, wsdl_file: Path): + """단일 WSDL 파일 분석""" + logger.info(f"Analyzing {wsdl_file.name}...") + + try: + with open(wsdl_file, 'r', encoding='utf-8') as f: + content = f.read() + + # 우선 정규식으로 분석 시도 (주석에서 테이블 정보 추출) + regex_count = self._extract_tables_from_regex(content, wsdl_file.name) + + # 정규식으로 찾지 못했을 때만 XML 파싱 시도 + if regex_count == 0: + try: + # XML 네임스페이스 등록 + namespaces = { + 'xsd': 'http://www.w3.org/2001/XMLSchema', + 'wsdl': 'http://schemas.xmlsoap.org/wsdl/' + } + + root = ET.fromstring(content) + self._extract_tables_from_xml(root, wsdl_file.name, namespaces) + except ET.ParseError as e: + logger.error(f" XML parsing failed: {e}") + except Exception as e: + logger.error(f" XML analysis error: {e}") + + except Exception as e: + logger.error(f" Error analyzing {wsdl_file.name}: {e}") + + def _extract_tables_from_xml(self, root: ET.Element, wsdl_name: str, namespaces: dict): + """XML에서 테이블 정보 추출""" + # complexType 요소들에서 테이블 구조 추출 + for complex_type in root.findall(".//xsd:complexType", namespaces): + table_name = complex_type.get('name') + if table_name: + self._extract_fields_from_complex_type(complex_type, table_name, wsdl_name, namespaces) + + def _extract_tables_from_regex(self, content: str, wsdl_name: str) -> int: + """정규식으로 테이블 정보 추출""" + + # Table 정보가 포함된 주석 패턴 (Description에서 --> 전까지 모든 문자 매칭) + table_pattern = r'<!-- SEQ:\d+, Table:([^,]+), Field:([^,]+), M/O:([^,]*), Type:([^,]+), Size:([^,]+), Description:(.*?) -->' + + matches = re.findall(table_pattern, content) + + # # MATL/PLNT 관련 필드 디버깅 + # matl_plnt_matches = [match for match in matches if 'MATL/PLNT' in match[0]] + # if matl_plnt_matches: + # print(f" {wsdl_name}에서 MATL/PLNT 필드 발견: {len(matl_plnt_matches)}개") + # for match in matl_plnt_matches: + # table_path, field_name = match[0], match[1] + # print(f" {field_name} (Table: {table_path})") + + for match in matches: + table_path, field_name, mandatory, field_type, size, description = match + + # 필드명 매핑 적용 + original_field_name = field_name.strip() + mapped_field_name = self._apply_field_name_mapping(original_field_name, wsdl_name) + + # 테이블 경로에서 실제 테이블명 추출 + # 예: "BP_HEADER/ADDRESS/AD_POSTAL" -> ["BP_HEADER", "ADDRESS", "AD_POSTAL"] + table_parts = table_path.split('/') + main_table = table_parts[0] + + # 계층 구조 기록 + if len(table_parts) > 1: + for i in range(len(table_parts) - 1): + parent = '/'.join(table_parts[:i+1]) + child = '/'.join(table_parts[:i+2]) + if child not in self.table_hierarchy[parent]: + self.table_hierarchy[parent].append(child) + + # 필드 정보 저장 (매핑된 필드명 사용) + field_info = { + 'field_name': mapped_field_name, # 매핑된 필드명 사용 + 'original_field_name': original_field_name, # 원본 필드명도 보존 + 'mandatory': mandatory.strip(), + 'type': field_type.strip(), + 'size': size.strip(), + 'description': description.strip(), + 'table_path': table_path, + 'wsdl_source': wsdl_name + } + + # 테이블별로 필드 저장 (|| 구분자 사용으로 충돌 방지, 매핑된 필드명 사용) + # CSV 파일명 기반 테이블 prefix 추가 + table_prefix = self._get_table_prefix_from_wsdl_name(wsdl_name) + full_table_name = f"{table_prefix}_{table_path.replace('/', '_').upper()}" + field_key = f"{mapped_field_name}||{table_path}" + self.tables[full_table_name][field_key] = field_info + + # # MATL_PLNT 테이블에 필드 추가 시 디버깅 + # if 'MATL_PLNT' in full_table_name: + # print(f" {full_table_name}에 필드 추가: {mapped_field_name} (from {wsdl_name})") + + logger.success(f" Found {len(matches)} field definitions") + return len(matches) + + def _extract_fields_from_complex_type(self, complex_type, table_name: str, wsdl_name: str, namespaces: dict): + """complexType에서 필드 정보 추출""" + for element in complex_type.findall(".//xsd:element", namespaces): + field_name = element.get('name') + field_type = element.get('type', 'unknown') + min_occurs = element.get('minOccurs', '1') + max_occurs = element.get('maxOccurs', '1') + + if field_name: + field_info = { + 'field_name': field_name, + 'mandatory': 'M' if min_occurs != '0' else 'O', + 'type': field_type, + 'size': 'unknown', + 'description': f'From {table_name}', + 'table_path': table_name, + 'wsdl_source': wsdl_name + } + + field_key = f"{field_name}||{table_name}" + self.tables[table_name.upper()][field_key] = field_info + + def _apply_field_name_mapping(self, field_name: str, wsdl_name: str) -> str: + """특정 WSDL 파일의 필드명을 매핑 규칙에 따라 변경""" + for wsdl_pattern, mappings in self.field_name_mappings.items(): + if wsdl_pattern in wsdl_name.upper(): + if field_name in mappings: + original_name = field_name + mapped_name = mappings[field_name] + logger.debug(f" Field mapping: {original_name} -> {mapped_name} (from {wsdl_name})") + return mapped_name + return field_name + + def _get_table_prefix_from_wsdl_name(self, wsdl_name: str) -> str: + """WSDL 파일명에서 테이블 prefix 추출""" + # 단순히 IF_MDZ_EVCP_ 접두사만 제거하고 나머지 그대로 사용 + # 예: IF_MDZ_EVCP_MATERIAL_PART_RETURN.wsdl -> MATERIAL_PART_RETURN + prefix = wsdl_name.replace('IF_MDZ_EVCP_', '').replace('.wsdl', '') + return prefix if prefix else 'COMMON' + +def analyze_current_drizzle_schema(schema_file: str) -> Set[str]: + """현재 Drizzle 스키마에서 테이블 목록 추출""" + try: + with open(schema_file, 'r', encoding='utf-8') as f: + content = f.read() + + # export const 테이블명 패턴 찾기 + table_pattern = r'export const (\w+) = mdgSchema\.table\(' + matches = re.findall(table_pattern, content) + + return set(matches) + + except FileNotFoundError: + logger.error(f"Schema file not found: {schema_file}") + return set() + +def compare_wsdl_vs_schema(wsdl_tables: Dict, schema_tables: Set[str]): + """WSDL 테이블과 스키마 테이블 비교""" + logger.separator() + logger.header("WSDL vs Drizzle Schema 비교 결과") + logger.separator() + + # WSDL에서 추출한 테이블명 (이미 대문자로 변환됨) + wsdl_table_names = set(wsdl_tables.keys()) + + logger.info(f"\nWSDL에서 발견된 테이블: {len(wsdl_tables)}개") + for table in sorted(wsdl_tables.keys()): + field_count = len(wsdl_tables[table]) + logger.table_info(f" - {table} ({field_count} fields)") + + logger.info(f"\nDrizzle 스키마의 테이블: {len(schema_tables)}개") + for table in sorted(schema_tables): + logger.table_info(f" - {table}") + + # 테이블명 직접 비교 (대문자로 통일) + schema_tables_upper = {table.upper() for table in schema_tables} + wsdl_tables_upper = {table.upper() for table in wsdl_table_names} + + # 누락된 테이블 찾기 + missing_in_schema = wsdl_tables_upper - schema_tables_upper + extra_in_schema = schema_tables_upper - wsdl_tables_upper + + if missing_in_schema: + logger.warning(f"\n⚠️ 스키마에 누락된 테이블 ({len(missing_in_schema)}개):") + for table in sorted(missing_in_schema): + logger.warning(f" - {table}") + + if extra_in_schema: + logger.success(f"\n✅ 스키마에 추가로 정의된 테이블 ({len(extra_in_schema)}개):") + for table in sorted(extra_in_schema): + logger.success(f" - {table}") + + return missing_in_schema, extra_in_schema + +def generate_missing_tables_schema(wsdl_tables: Dict, missing_tables: Set[str]): + """누락된 테이블들의 Drizzle 스키마 코드 생성""" + if not missing_tables: + return + + logger.separator() + logger.header("누락된 테이블들의 Drizzle 스키마 코드") + logger.separator() + + for missing_table in sorted(missing_tables): + # WSDL 테이블명에서 해당하는 테이블 찾기 (대문자로 직접 매칭) + wsdl_table_key = missing_table.upper() + + if wsdl_table_key in wsdl_tables and wsdl_tables[wsdl_table_key]: + logger.field_info(f"\n// {wsdl_table_key}") + logger.field_info(f"export const {wsdl_table_key} = mdgSchema.table('{wsdl_table_key}', {{") + logger.field_info(" id: integer('id').primaryKey().generatedByDefaultAsIdentity(),") + + for field_key, field_info in wsdl_tables[wsdl_table_key].items(): + # field_key에서 실제 필드명 추출 (|| 구분자 사용) + if '||' in field_key: + actual_field_name = field_key.split('||')[0] + else: + actual_field_name = field_key + + # 필드 타입 매핑 + drizzle_type = map_wsdl_type_to_drizzle(field_info['type'], field_info['size']) + mandatory = ".notNull()" if field_info['mandatory'] == 'M' else "" + # NOTE: WSDL별로 개별 테이블을 만들기로 했으므로 notNull() 제약조건 복구 + + # 주석으로 설명 추가 + comment = f" // {field_info['description']}" if field_info['description'] else "" + wsdl_source = f" // From: {field_info['wsdl_source']}" + mandatory_comment = f" // WSDL에서 필수 필드" if field_info['mandatory'] == 'M' else "" + + logger.field_info(f" {actual_field_name}: {drizzle_type}{mandatory},{comment}{wsdl_source}{mandatory_comment}") + + logger.field_info(" ") + logger.field_info(" createdAt: timestamp('created_at').defaultNow().notNull(),") + logger.field_info(" updatedAt: timestamp('updated_at').defaultNow().notNull(),") + logger.field_info("});") + +def map_wsdl_type_to_drizzle(wsdl_type: str, size: str) -> str: + """WSDL 타입을 Drizzle 타입으로 매핑 (모든 필드를 VARCHAR로 통일, 방어적 사이즈 계산)""" + # 기본 길이 설정 + default_length = 100 + min_length = 10 # 최소 길이 + max_length = 2000 # 최대 길이 (PostgreSQL VARCHAR 권장 최대) + + # LCHR 타입은 text()로 처리 (큰 텍스트) + if 'LCHR' in wsdl_type.upper(): + return "text()" + + # 사이즈 처리 + if size and size.strip(): + try: + size_clean = size.strip() + + # "n,m" 형태 처리 (소수점 있는 숫자 타입) + if ',' in size_clean: + parts = size_clean.split(',') + if len(parts) == 2 and parts[0].isdigit() and parts[1].isdigit(): + total_digits = int(parts[0]) # 전체 자릿수 + decimal_places = int(parts[1]) # 소수점 이하 자릿수 + + # 방어적 계산: 전체 자릿수 + 부호(1) + 소수점(1) + 여유분(3) = +5 + safe_length = total_digits + 5 + logger.debug(f" 📏 소수점 타입 사이즈 계산: {size_clean} -> {safe_length} (원본: {total_digits}, 여유: +5)") + + # 최소/최대 길이 제한 + safe_length = max(min_length, min(safe_length, max_length)) + return f"varchar({{ length: {safe_length} }})" + + # 단순 숫자 처리 + elif size_clean.isdigit(): + original_length = int(size_clean) + # 단순 숫자는 그대로 사용 (여유분 없음) + safe_length = max(min_length, min(original_length, max_length)) + + if safe_length != original_length: + logger.debug(f" 📏 단순 사이즈 조정: {original_length} -> {safe_length} (min/max 제한)") + else: + logger.debug(f" 📏 단순 사이즈 사용: {safe_length}") + + return f"varchar({{ length: {safe_length} }})" + + # "n.m" 형태 처리 (점으로 구분된 경우도 있을 수 있음) + elif '.' in size_clean: + parts = size_clean.split('.') + if len(parts) == 2 and parts[0].isdigit() and parts[1].isdigit(): + total_digits = int(parts[0]) + decimal_places = int(parts[1]) + + # 방어적 계산 + safe_length = total_digits + 5 + logger.debug(f" 📏 소수점 타입 사이즈 계산 (점 구분): {size_clean} -> {safe_length} (원본: {total_digits}, 여유: +5)") + + safe_length = max(min_length, min(safe_length, max_length)) + return f"varchar({{ length: {safe_length} }})" + + # 기타 형태는 기본값 사용 + else: + logger.warning(f" ⚠️ 알 수 없는 사이즈 형태: '{size_clean}' -> 기본값 {default_length} 사용") + return f"varchar({{ length: {default_length} }})" + + except Exception as e: + logger.error(f" ❌ 사이즈 파싱 오류: '{size}' -> 기본값 {default_length} 사용, 오류: {e}") + return f"varchar({{ length: {default_length} }})" + + # 사이즈가 없거나 비어있는 경우 기본값 + return f"varchar({{ length: {default_length} }})" + +def validate_schema(wsdl_tables: Dict, schema_tables: Set[str]) -> Dict[str, List[str]]: + """스키마 검증""" + validation_results = { + 'missing_tables': [], + 'missing_fields': [], + 'type_mismatches': [], + 'duplicate_fields': [] + } + + for table_name, fields in wsdl_tables.items(): + # 테이블 존재 여부 검증 + if table_name not in schema_tables: + validation_results['missing_tables'].append(table_name) + continue + + # 필드 검증 + field_names = set() + for field_key, field_info in fields.items(): + # field_key에서 실제 필드명 추출 (|| 구분자 사용) + actual_field_name = field_key.split('||')[0] if '||' in field_key else field_key + + # 중복 필드 검사 + if actual_field_name in field_names: + validation_results['duplicate_fields'].append(f"{table_name}.{actual_field_name}") + field_names.add(actual_field_name) + + # 누락된 필드 검증 (WSDL의 모든 필드가 스키마에 있는지 확인) + if actual_field_name not in existing_fields: + validation_results['missing_fields'].append(f"{table_name}.{actual_field_name}") + + # 타입 호환성 검증 + # ? 기존 스키마의 필드 타입과 비교 + # ! VARCHAR로 처리하기로 했으니 타입 호환성 검사는 필요 없음 + + return validation_results + +def analyze_existing_schema(schema_file: str) -> Dict[str, Dict[str, str]]: + """기존 스키마 파일 분석""" + existing_schema = {} + try: + with open(schema_file, 'r', encoding='utf-8') as f: + content = f.read() + + # 테이블 정의 찾기 (변경된 패턴) + table_pattern = r'export const (\w+) = mdgSchema\.table\([\'"](\w+)[\'"]' + tables = re.findall(table_pattern, content) + + for table_const, table_name in tables: + # 테이블의 필드 정의 찾기 + field_pattern = rf'{table_const} = mdgSchema\.table\([\'"]{table_name}[\'"].*?{{(.*?)}}' + table_match = re.search(field_pattern, content, re.DOTALL) + + if table_match: + fields = {} + field_defs = table_match.group(1) + + # 각 필드 정의 파싱 (변경된 패턴) + field_pattern = r'(\w+):\s*(\w+)\([\'"](\w+)[\'"]' + field_matches = re.findall(field_pattern, field_defs) + + for field_name, field_type, field_db_name in field_matches: + fields[field_name] = { + 'type': field_type, + 'db_name': field_db_name + } + + existing_schema[table_name] = fields + + except Exception as e: + logger.error(f"스키마 파일 분석 중 오류 발생: {e}") + + return existing_schema + +def compare_field_types(wsdl_type: str, existing_type: str) -> bool: + """필드 타입 호환성 검사""" + type_mapping = { + 'varchar': ['CHAR', 'VARC', 'LCHR'], + 'integer': ['NUMB', 'NUMC'], + 'decimal': ['CURR'], + 'date': ['DATS'], + 'time': ['TIMS'], + 'text': ['LCHR'] + } + + wsdl_type = wsdl_type.upper() + existing_type = existing_type.lower() + + # 타입 매핑 확인 + for drizzle_type, wsdl_types in type_mapping.items(): + if existing_type == drizzle_type: + return any(t in wsdl_type for t in wsdl_types) + + return False + +def validate_schema(wsdl_tables: Dict, schema_tables: Set[str], existing_schema: Dict[str, Dict[str, str]]) -> Dict[str, List[str]]: + """스키마 검증 (개선된 버전)""" + validation_results = { + 'missing_tables': [], + 'missing_fields': [], + 'type_mismatches': [], + 'duplicate_fields': [] + } + + for table_name, fields in wsdl_tables.items(): + # 테이블 존재 여부 검증 + if table_name not in schema_tables: + validation_results['missing_tables'].append(table_name) + continue + + # 기존 테이블의 필드 정보 가져오기 + existing_fields = existing_schema.get(table_name, {}) + + # 필드 검증 + field_names = set() + for field_key, field_info in fields.items(): + # field_key에서 실제 필드명 추출 (|| 구분자 사용) + actual_field_name = field_key.split('||')[0] if '||' in field_key else field_key + + # 중복 필드 검사 + if actual_field_name in field_names: + validation_results['duplicate_fields'].append(f"{table_name}.{actual_field_name}") + field_names.add(actual_field_name) + + # 누락된 필드 검증 (WSDL의 모든 필드가 스키마에 있는지 확인) + # Note: existing_fields는 기존 validate_schema에서는 정의되지 않았으므로 스킵 + + # 타입 호환성 검증 + if actual_field_name in existing_fields: + existing_type = existing_fields[actual_field_name]['type'] + if not compare_field_types(field_info['type'], existing_type): + validation_results['type_mismatches'].append( + f"{table_name}.{actual_field_name}: WSDL={field_info['type']}, Existing={existing_type}" + ) + + return validation_results + +def generate_schema_code(wsdl_tables: Dict, validation_results: Dict[str, List[str]], existing_schema: Dict[str, Dict[str, str]]) -> str: + """스키마 코드 생성 (개선된 버전)""" + schema_code = [] + + # 누락된 테이블 생성 + for table_name in validation_results['missing_tables']: + table_code = generate_table_code(wsdl_tables[table_name], table_name) + schema_code.append(table_code) + + # 누락된 필드 추가 + for field_info in validation_results['missing_fields']: + table_name, field_name = field_info.split('.') + if table_name in existing_schema: + field_code = generate_field_code(wsdl_tables[table_name][field_name]) + # 기존 테이블에 필드 추가하는 코드 생성 + table_code = f"// {table_name}에 추가할 필드:\n{field_code}" + schema_code.append(table_code) + + return '\n\n'.join(schema_code) + +def generate_table_code(fields: Dict, table_name: str) -> str: + """테이블 코드 생성""" + code = [ + f"export const {table_name} = mdgSchema.table('{table_name}', {{", + " id: integer('id').primaryKey().generatedByDefaultAsIdentity()," + ] + + # fields에서 실제 필드명과 필드 정보 가져오기 + # _merge_table_fields에서 이미 actual_field_name을 키로 사용하므로 그대로 사용 + for actual_field_name, field_info in sorted(fields.items()): + # 필드 코드 생성 (actual_field_name 사용) + field_code = generate_field_code(field_info) + code.append(f" {field_code}") + + code.extend([ + " ", + " createdAt: timestamp('created_at').defaultNow().notNull(),", + " updatedAt: timestamp('updated_at').defaultNow().notNull(),", + "});" + ]) + + return '\n'.join(code) + +def generate_field_code(field_info: Dict) -> str: + """필드 코드 생성""" + drizzle_type = map_wsdl_type_to_drizzle(field_info['type'], field_info['size']) + mandatory = ".notNull()" if field_info['mandatory'] == 'M' else "" + # NOTE: WSDL별로 개별 테이블을 만들기로 했으므로 notNull() 제약조건 복구 + + comment = f" // {field_info['description']}" if field_info['description'] else "" + + # 여러 WSDL 소스 정보 추가 + if 'wsdl_sources' in field_info and len(field_info['wsdl_sources']) > 1: + sources_comment = f" // From: {', '.join(sorted(field_info['wsdl_sources']))}" + else: + wsdl_source = field_info.get('wsdl_source', list(field_info.get('wsdl_sources', ['Unknown']))[0]) + sources_comment = f" // From: {wsdl_source}" + + # 필수 필드 정보는 주석으로만 표시 + mandatory_comment = f" // WSDL에서 필수 필드" if field_info['mandatory'] == 'M' else "" + + # 필드명 매핑이 적용된 경우 원본 필드명 표시 + mapping_comment = "" + if 'original_field_name' in field_info and field_info['original_field_name'] != field_info['field_name']: + mapping_comment = f" // Original: {field_info['original_field_name']}" + + return f"{field_info['field_name']}: {drizzle_type}{mandatory},{comment}{sources_comment}{mandatory_comment}{mapping_comment}" + +def generate_complete_schema(wsdl_tables: Dict) -> str: + """완전한 스키마 코드 생성""" + schema_code = [ + "import { integer, varchar, text, timestamp } from 'drizzle-orm/pg-core';", + "import { mdgSchema } from '../../../db/schema/MDG/mdg';", + "", + "// WSDL 기반 자동 생성된 스키마", + "// 생성일시: " + datetime.now().strftime("%Y-%m-%d %H:%M:%S") + " (UTC로 9시간 빼야 한국 시간)", + "// 개선사항:", + "// 1. WSDL별로 테이블 만들었음. 인터페이스 정의서에 문제가 많아서 어쩔 수 없었음.", + "// 2. 타입은 varchar를 사용하도록 했음. 숫자관련된 건 부호, 소수점 대비 방어적으로 처리함 (사이즈)", + "// 3. 테이블명에서 '/' 문자를 '_'로 변경하여 PostgreSQL/TypeScript 호환성 확보함", + "", + ] + + # 테이블 코드 생성 + for table_name, fields in sorted(wsdl_tables.items()): + table_code = generate_table_code(fields, table_name) + schema_code.append(table_code) + schema_code.append("") # 빈 줄 추가 + + return '\n'.join(schema_code) + +def main(): + # 현재 스크립트 위치에서 프로젝트 루트 찾기 + script_dir = Path(__file__).parent + project_root = script_dir.parent.parent.parent # public/wsdl/_util -> project_root + + wsdl_dir = script_dir.parent # public/wsdl + schema_file = project_root / "db" / "schema" / "MDG" / "mdg.ts" + + logger.header("MDZ WSDL 분석 시작...") + logger.info(f"WSDL 디렉토리: {wsdl_dir}") + logger.info(f"스키마 파일: {schema_file}") + logger.info("") + + # WSDL 분석 + analyzer = WSDLAnalyzer(wsdl_dir) + wsdl_tables, table_hierarchy = analyzer.analyze_all_mdz_wsdls() + + # 현재 스키마 분석 + schema_tables = analyze_current_drizzle_schema(schema_file) + + # 기존 스키마 분석 + existing_schema = analyze_existing_schema(schema_file) + + # 비교 결과 출력 + missing_tables, extra_tables = compare_wsdl_vs_schema(wsdl_tables, schema_tables) + + # 누락된 테이블 스키마 생성 + generate_missing_tables_schema(wsdl_tables, missing_tables) + + # 스키마 검증 + validation_results = validate_schema(wsdl_tables, schema_tables, existing_schema) + + # 검증 결과 출력 + logger.separator() + logger.header("스키마 검증 결과") + logger.separator() + + for category, items in validation_results.items(): + if items: + logger.warning(f"\n{category}:") + for item in items: + logger.warning(f" - {item}") + + # 완전한 스키마 코드 생성 + complete_schema = generate_complete_schema(wsdl_tables) + + # 스키마 파일 저장 + output_file = script_dir / "generated_schema.ts" + with open(output_file, 'w', encoding='utf-8') as f: + f.write(complete_schema) + + logger.success(f"\n생성된 스키마가 {output_file}에 저장되었습니다.") + + # 상세 필드 정보 출력 (옵션) + if len(sys.argv) > 1 and sys.argv[1] == "--detailed": + logger.separator() + logger.header("상세 필드 정보") + logger.separator() + + for table_name, fields in wsdl_tables.items(): + logger.table_info(f"\n### {table_name}") + for field_name, field_info in fields.items(): + logger.field_info(f" {field_name}: {field_info['type']}({field_info['size']}) - {field_info['description']}") + + logger.success("\n분석 완료!") + logger.info(f"- 총 WSDL 테이블: {len(wsdl_tables)}개") + logger.info(f"- 현재 스키마 테이블: {len(schema_tables)}개") + logger.warning(f"- 누락 테이블: {len(missing_tables)}개") if missing_tables else logger.success(f"- 누락 테이블: {len(missing_tables)}개") + logger.info(f"- 추가 테이블: {len(extra_tables)}개") + +if __name__ == "__main__": + main()
\ No newline at end of file diff --git a/public/wsdl/_util/update_wsdl_with_csv.py b/public/wsdl/_util/update_wsdl_with_csv.py new file mode 100644 index 00000000..91a9d4dc --- /dev/null +++ b/public/wsdl/_util/update_wsdl_with_csv.py @@ -0,0 +1,674 @@ +#!/usr/bin/env python3 +import csv +import re +import shutil +import os +from datetime import datetime + +# 컬러 로그를 위한 색상 코드 추가 +class Colors: + RED = '\033[91m' + GREEN = '\033[92m' + YELLOW = '\033[93m' + BLUE = '\033[94m' + MAGENTA = '\033[95m' + CYAN = '\033[96m' + WHITE = '\033[97m' + ENDC = '\033[0m' # End color + BOLD = '\033[1m' + +def print_color(message, color=Colors.WHITE): + """컬러 출력 함수""" + print(f"{color}{message}{Colors.ENDC}") + +def print_error(message): + """에러 메시지 출력""" + print_color(f"❌ ERROR: {message}", Colors.RED) + +def print_warning(message): + """경고 메시지 출력""" + print_color(f"⚠️ WARNING: {message}", Colors.YELLOW) + +def print_success(message): + """성공 메시지 출력""" + print_color(f"✅ SUCCESS: {message}", Colors.GREEN) + +def print_info(message): + """정보 메시지 출력""" + print_color(f"ℹ️ INFO: {message}", Colors.CYAN) + +""" +실제 CSV 파일들 +IF_MDZ_EVCP_CUSTOMER_MASTER.csv IF_MDZ_EVCP_EMPLOYEE_REFERENCE.csv IF_MDZ_EVCP_MATERIAL_MASTER_PART_RETURN.csv IF_MDZ_EVCP_PROJECT_MASTER.csv +IF_MDZ_EVCP_DEPARTMENT_CODE.csv IF_MDZ_EVCP_EQUP_MASTER.csv IF_MDZ_EVCP_MODEL_MASTER.csv IF_MDZ_EVCP_VENDOR_MASTER.csv +IF_MDZ_EVCP_EMPLOYEE_MASTER.csv IF_MDZ_EVCP_MATERIAL_MASTER_PART.csv IF_MDZ_EVCP_ORGANIZATION_MASTER.csv +""" + +# ===== 설정 ===== +CSV_DIR = './public/wsdl/_csv' +WSDL_DIR = './public/wsdl' + +# 발견된 SAP 타입들을 수집하기 위한 전역 SET +discovered_sap_types = set() +type_size_combinations = set() # 타입-사이즈 조합도 수집 + +# 필드명 매핑 테이블 (CSV -> WSDL) +FIELD_MAPPING = { + # 개별 WSDL 별 테이블 만들기로 했으므로 사용하지 않고 WSDL 그대로 사용 + # 'ADR_NO': 'ADDRNO', + # 필요한 경우 더 추가 +} + +# 테이블 매핑 테이블 (complexType -> CSV Table) +TABLE_MAPPING = { + # 'MATL': 'MATL', + # 'UNIT': 'MATL/UNIT', + # 필요한 경우 더 추가 +} + +def normalize_sap_type_and_size(sap_type, size_str): + """SAP 타입과 사이즈를 정규화""" + global discovered_sap_types, type_size_combinations + + try: + # 타입을 대문자로 변환 + normalized_type = sap_type.upper().strip() if sap_type else 'CHAR' + + # 사이즈 처리 + normalized_size = size_str.strip() if size_str else '' + original_size = normalized_size # 원본 사이즈 보존 (로깅용) + + # 빈 사이즈인 경우 기본값 설정 + if not normalized_size: + normalized_size = '255' + else: + # 따옴표로 감싸진 경우 제거 (예: "1,0") + quote_removed = False + if normalized_size.startswith('"') and normalized_size.endswith('"'): + before_quote_removal = normalized_size + normalized_size = normalized_size[1:-1] + quote_removed = True + print_color(f"🔍 SIZE 파싱: 따옴표 제거 - '{before_quote_removal}' -> '{normalized_size}' (Type: {normalized_type})", Colors.YELLOW) + + # 로깅: 최종 결과 (따옴표가 없는 경우만) + if not quote_removed and original_size: + print_color(f"🔍 SIZE 파싱: 따옴표 없음 - '{original_size}' 그대로 사용 (Type: {normalized_type})", Colors.BLUE) + + # 발견된 타입들을 SET에 추가 + discovered_sap_types.add(normalized_type) + type_size_combinations.add(f"{normalized_type}({normalized_size})") + + # 컬럼 구분자나 특수문자가 있는 경우 그대로 유지 + # DEC, QUAN, NUMB 등에서 "1,0" 형태의 사이즈는 정상 + + return normalized_type, normalized_size + + except Exception as e: + print_error(f"타입/사이즈 정규화 실패 - Type: {sap_type}, Size: {size_str}, Error: {str(e)}") + return 'CHAR', '255' # 기본값 반환 + +def safe_description_escape(description): + """Description 필드의 특수문자를 안전하게 처리""" + try: + if not description: + return '' + + # HTML/XML 특수문자 이스케이프 + description = description.replace('&', '&') + description = description.replace('<', '<') + description = description.replace('>', '>') + description = description.replace('"', '"') + description = description.replace("'", ''') + + return description + + except Exception as e: + print_error(f"Description 이스케이프 실패: {description}, Error: {str(e)}") + return str(description) if description else '' + +def get_csv_files(): + """CSV 디렉토리에서 모든 CSV 파일 목록을 가져옴""" + csv_files = [] + for file in os.listdir(CSV_DIR): + if file.endswith('.csv'): + csv_files.append(file.replace('.csv', '')) + return csv_files + +def get_complex_type_info(wsdl_content): + """WSDL 파일에서 complexType 정보를 추출""" + complex_types = {} + current_type = None + current_fields = [] + type_stack = [] # 중첩된 complexType을 추적하기 위한 스택 + + for line in wsdl_content: + # complexType 시작 태그 찾기 + type_match = re.search(r'<xsd:complexType\s+name="([^"]+)"', line) + if type_match: + if current_type: + type_stack.append(current_type) + current_type = type_match.group(1) + current_fields = [] + continue + + # complexType 종료 태그 찾기 + if '</xsd:complexType>' in line: + if current_type: + complex_types[current_type] = current_fields + if type_stack: + current_type = type_stack.pop() + else: + current_type = None + continue + + # element 태그 찾기 + element_match = re.search(r'<xsd:element\s+name="([^"]+)"', line) + if element_match and current_type: + field_info = { + 'name': element_match.group(1), + 'type': re.search(r'type="([^"]+)"', line).group(1) if 'type="' in line else None, + 'is_array': 'maxOccurs="unbounded"' in line + } + current_fields.append(field_info) + + return complex_types + +def get_table_for_complex_type(table_name, complex_type): + """테이블 이름에서 complexType에 해당하는 부분 추출""" + # 테이블 이름이 '/'로 구분되어 있다면 마지막 부분을 반환 + if '/' in table_name: + return table_name.split('/')[-1].upper() + return table_name.upper() + +def load_csv_data(csv_file): + """CSV 파일에서 필드 정보를 딕셔너리로 로드""" + csv_data = {} + csv_path = os.path.join(CSV_DIR, f'{csv_file}.csv') + + try: + with open(csv_path, 'r', encoding='utf-8-sig') as f: # BOM 처리 + reader = csv.DictReader(f) + for row_num, row in enumerate(reader, start=2): # 헤더 다음부터 2행 + try: + field_name = row['Field'] + table_name = row['Table'] + + # 매핑된 필드명이 있으면 사용, 없으면 원래 필드명 사용 + wsdl_field_name = FIELD_MAPPING.get(field_name, field_name) + + # 테이블 정보를 키에 포함 (구분자를 || 로 변경) + key = f"{wsdl_field_name}||{table_name}" + + # 타입과 사이즈 정규화 + normalized_type, normalized_size = normalize_sap_type_and_size( + row.get('Type', ''), row.get('Size', '') + ) + + # Description 안전 처리 + safe_desc = safe_description_escape(row.get('Description', '')) + + csv_data[key] = { + 'seq': row.get('SEQ', ''), + 'table': table_name, + 'field': row.get('Field', ''), # 원래 CSV 필드명 저장 + 'mo': row.get('M/O', ''), + 'type': normalized_type, # 정규화된 타입 + 'size': normalized_size, # 정규화된 사이즈 + 'description': safe_desc, # 안전 처리된 Description + 'original_type': row.get('Type', ''), # 원본 타입 보존 + 'original_size': row.get('Size', '') # 원본 사이즈 보존 + } + + except Exception as e: + print_error(f"CSV 행 {row_num} 처리 실패 - {csv_file}: {str(e)}") + print_error(f"문제 행 데이터: {row}") + continue + + except Exception as e: + print_error(f"CSV 파일 로딩 실패 - {csv_path}: {str(e)}") + return {} + + return csv_data + +def extract_field_name_from_line(line): + """라인에서 name="필드명" 추출""" + match = re.search(r'name="([^"]+)"', line) + return match.group(1) if match else None + +def extract_field_from_comment(comment_line): + """주석에서 Field: 부분의 필드명 추출""" + match = re.search(r'Field:([^,]+)', comment_line) + return match.group(1).strip() if match else None + +def has_seq_in_comment(comment_line): + """주석에 SEQ가 있는지 확인""" + return 'SEQ:' in comment_line + +def get_indentation(line): + """라인의 들여쓰기 반환""" + return len(line) - len(line.lstrip()) + +def create_comment(field_name, csv_data, indentation, complex_type): + """CSV 데이터를 기반으로 주석 생성""" + try: + # 필드명으로 시작하는 키들을 찾음 (대소문자 구분 없이) + matching_keys = [key for key in csv_data.keys() if key.split('||')[0].upper() == field_name.upper()] + if not matching_keys: + indent = ' ' * indentation + print_warning(f"매칭되지 않은 필드: {field_name}") + return f"{indent}<!-- TODO: UNMATCHED FIELD OCCURS - {field_name} -->" + + # complexType과 일치하는 테이블 정보 찾기 + matching_data = None + + # 1. complexType 이름과 완전히 일치하는 테이블 찾기 + for key in matching_keys: + table_name = key.split('||', 1)[1] + if complex_type.upper() == table_name.upper(): + matching_data = csv_data[key] + break + + # 2. CSV 테이블명을 '/'로 스플릿한 마지막 부분이 complexType과 일치하는 경우 + if not matching_data: + for key in matching_keys: + table_name = key.split('||', 1)[1] + if '/' in table_name: + last_part = table_name.split('/')[-1] + if complex_type.upper() == last_part.upper(): + matching_data = csv_data[key] + break + + # 3. 필드명만 일치하는 경우 (첫 번째 매칭 데이터 사용) + if not matching_data: + matching_data = csv_data[matching_keys[0]] + + # 4. 매칭된 데이터가 있으면 주석 생성, 없으면 매칭 실패 주석 + if matching_data: + indent = ' ' * indentation + + # CSV의 실제 타입과 사이즈 사용 + comment = f"{indent}<!-- SEQ:{matching_data['seq']}, Table:{matching_data['table']}, Field:{matching_data['field']}, M/O:{matching_data['mo']}, Type:{matching_data['type']}, Size:{matching_data['size']}, Description:{matching_data['description']} -->" + + print_info(f"주석 생성 완료: {field_name} -> Type:{matching_data['type']}, Size:{matching_data['size']}") + return comment + else: + indent = ' ' * indentation + print_warning(f"매칭 데이터를 찾을 수 없음: {field_name}") + return f"{indent}<!-- TODO: NO MATCHING DATA FOUND - {field_name} -->" + + except Exception as e: + indent = ' ' * indentation + print_error(f"주석 생성 실패 - 필드: {field_name}, 에러: {str(e)}") + return f"{indent}<!-- ERROR: COMMENT GENERATION FAILED - {field_name} -->" + +def normalize_comment(comment_line): + """주석을 정규화 (공백 제거, 소문자 변환 등)""" + # <!-- 와 --> 제거하고 내용만 추출 + content = re.sub(r'^\s*<!--\s*|\s*-->\s*$', '', comment_line.strip()) + # 여러 공백을 하나로 통합 + content = re.sub(r'\s+', ' ', content) + return content.strip() + +def comments_are_equal(existing_comment, expected_comment): + """두 주석이 같은 내용인지 비교""" + existing_normalized = normalize_comment(existing_comment) + expected_normalized = normalize_comment(expected_comment) + return existing_normalized == expected_normalized + +def should_process_line(line, csv_data): + """라인이 처리 대상인지 확인""" + # 네 조건을 모두 만족해야 함: + # 1. <xsd:element 태그 + # 2. name=" 속성이 있는 태그 + # 3. maxOccurs=" 속성이 없는 태그 (배열 데이터 제외) + # 4. CSV에 해당 필드가 있는 경우 + + if not ('<xsd:element' in line and 'name="' in line): + return False + + # maxOccurs=" 가 있으면 배열 데이터이므로 제외 (모든 maxOccurs 속성) + if 'maxOccurs="' in line: + return False + + field_name = extract_field_name_from_line(line) + if not field_name: + return False + + # 필드명이 CSV 데이터의 키에 정확히 일치하는지 확인 (대소문자 구분 없이) + return any(field_name.upper() == key.split('||')[0].upper() for key in csv_data.keys()) + +def get_skip_reason(line, csv_data): + """필드를 건너뛰는 이유를 반환""" + if not ('<xsd:element' in line and 'name="' in line): + return None + + field_name = extract_field_name_from_line(line) + if not field_name: + return None + + # maxOccurs 체크 (배열 타입) + if 'maxOccurs="' in line: + return "ARRAY_TYPE" + + # 복합객체인 경우 + if 'MASTER' in field_name: + return "COMPLEX_TYPE" + + # CSV에 있는지 체크 + has_csv_data = any(field_name.upper() == key.split('||')[0].upper() for key in csv_data.keys()) + if not has_csv_data: + # Req로 끝나는 경우는 래퍼 타입이므로 정상 + if field_name.endswith('Req'): + return "REQ_WRAPPER_TYPE" + else: + return "NO_CSV_DATA" + + return None + +def get_table_prefix_from_csv_name(csv_name: str) -> str: + """CSV 파일명에서 테이블 prefix 추출""" + csv_upper = csv_name.upper() + + # CSV 파일명 패턴에서 마스터 타입 추출 + if 'CUSTOMER_MASTER' in csv_upper: + return 'CUSTOMER' + elif 'VENDOR_MASTER' in csv_upper: + return 'VENDOR' + elif 'EMPLOYEE_MASTER' in csv_upper: + return 'EMPLOYEE' + elif 'PROJECT_MASTER' in csv_upper: + return 'PROJECT' + elif 'DEPARTMENT_CODE' in csv_upper: + return 'DEPARTMENT' + elif 'ORGANIZATION_MASTER' in csv_upper: + return 'ORGANIZATION' + elif 'EQUP_MASTER' in csv_upper: + return 'EQUP' + elif 'MODEL_MASTER' in csv_upper: + return 'MODEL' + elif 'MATERIAL_MASTER' in csv_upper: + return 'MATERIAL' + elif 'EMPLOYEE_REFERENCE' in csv_upper: + return 'EMPLOYEE_REF' + else: + # 기본적으로 MDZ 부분 제거 후 첫 번째 단어 사용 + parts = csv_name.replace('IF_MDZ_EVCP_', '').split('_') + return parts[0] if parts else 'COMMON' + +def backup_file(filepath): + """파일을 백업""" + timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") + backup_path = f"{filepath}.backup_{timestamp}" + shutil.copy2(filepath, backup_path) + print(f"백업 파일 생성: {backup_path}") + return backup_path + +def process_wsdl_file(target): + """WSDL 파일 처리""" + csv_file_path = os.path.join(CSV_DIR, f'{target}.csv') + wsdl_file_path = os.path.join(WSDL_DIR, f'{target}.wsdl') + + try: + # 백업 생성 + backup_path = backup_file(wsdl_file_path) + + print_color(f"\n🚀 처리 시작: {target}", Colors.BOLD) + print_info("CSV 데이터 로딩 중...") + csv_data = load_csv_data(target) + print_success(f"CSV에서 {len(csv_data)}개 필드 정보 로드됨") + + # WSDL 파일 읽기 + with open(wsdl_file_path, 'r', encoding='utf-8') as f: + lines = f.readlines() + + # complexType 정보 추출 + complex_types = get_complex_type_info(lines) + print_success(f"WSDL에서 {len(complex_types)}개 complexType 정보 추출됨") + except Exception as e: + print_error(f"파일 초기화 실패 - {target}: {str(e)}") + return + + # complexType 구조 출력 (디버깅용) + for type_name, fields in complex_types.items(): + print_color(f"\nComplexType: {type_name}", Colors.MAGENTA) + for field in fields: + print(f" - {field['name']} ({field['type']}) {'[Array]' if field['is_array'] else ''}") + + new_lines = [] + i = 0 + changes_made = 0 + processed_fields = [] + skipped_fields = [] + skipped_array_fields = [] + skipped_no_csv_fields = [] + skipped_req_wrapper_fields = [] + verified_correct = 0 + corrected_seq = 0 + error_count = 0 + + current_complex_type = None + type_stack = [] # 중첩된 complexType을 추적하기 위한 스택 + + while i < len(lines): + line = lines[i] + line_processed = False + + try: + # complexType 시작 태그 확인 + type_match = re.search(r'<xsd:complexType\s+name="([^"]+)"', line) + if type_match: + if current_complex_type: + type_stack.append(current_complex_type) + current_complex_type = type_match.group(1) + print_color(f"현재 complexType: {current_complex_type}", Colors.BLUE) + + # complexType 종료 태그 확인 + if '</xsd:complexType>' in line: + if type_stack: + current_complex_type = type_stack.pop() + print_color(f"이전 complexType으로 복귀: {current_complex_type}", Colors.BLUE) + else: + current_complex_type = None + + # CSV에 있는 xsd:element 필드인지 확인 + if should_process_line(line, csv_data): + field_name = extract_field_name_from_line(line) + + if field_name and current_complex_type: + processed_fields.append(field_name) + print_color(f"처리 중인 필드: {field_name} (complexType: {current_complex_type})", Colors.CYAN) + + # 바로 위 라인이 주석인지 확인 (공백 라인 건너뛰면서) + comment_line_index = -1 + j = len(new_lines) - 1 + + while j >= 0: + prev_line = new_lines[j].strip() + if prev_line == '': + j -= 1 + continue + elif prev_line.startswith('<!--') and prev_line.endswith('-->'): + comment_line_index = j + break + else: + break + + if comment_line_index >= 0: + existing_comment = new_lines[comment_line_index] + + if has_seq_in_comment(existing_comment): + indentation = get_indentation(line) + expected_comment = create_comment(field_name, csv_data, indentation, current_complex_type) + + if expected_comment: + if comments_are_equal(existing_comment, expected_comment): + verified_correct += 1 + print_success(f" 주석 검증 통과") + else: + new_lines[comment_line_index] = expected_comment + '\n' + changes_made += 1 + corrected_seq += 1 + print_warning(f" SEQ 주석 수정: {field_name}") + print(f" 기존: {existing_comment.strip()}") + print(f" 수정: {expected_comment}") + else: + indentation = get_indentation(line) + new_comment = create_comment(field_name, csv_data, indentation, current_complex_type) + if new_comment: + new_lines[comment_line_index] = new_comment + '\n' + changes_made += 1 + print_warning(f" 주석 교체: {field_name}") + else: + indentation = get_indentation(line) + new_comment = create_comment(field_name, csv_data, indentation, current_complex_type) + if new_comment: + new_lines.append(new_comment + '\n') + changes_made += 1 + print_info(f" 주석 추가: {field_name}") + + line_processed = True + elif '<xsd:element' in line and 'name="' in line: + field_name = extract_field_name_from_line(line) + if field_name: + skip_reason = get_skip_reason(line, csv_data) + if skip_reason == "ARRAY_TYPE": + skipped_array_fields.append(field_name) + skipped_fields.append(field_name) + print_color(f"건너뛴 필드: {field_name} (배열 타입 - maxOccurs 속성)", Colors.YELLOW) + elif skip_reason == "REQ_WRAPPER_TYPE": + skipped_req_wrapper_fields.append(field_name) + skipped_fields.append(field_name) + print_color(f"건너뛴 필드: {field_name} (요청 래퍼 타입 - 정상)", Colors.BLUE) + elif skip_reason == "NO_CSV_DATA": + skipped_no_csv_fields.append(field_name) + skipped_fields.append(field_name) + print_error(f"건너뛴 필드: {field_name} (CSV에 데이터 없음 - 확인 필요!)") + else: + # 기타 이유로 건너뛴 경우 + skipped_fields.append(field_name) + print_warning(f"건너뛴 필드: {field_name} (기타 이유)") + + except Exception as e: + print_error(f"라인 처리 중 오류 발생 (라인 {i+1}): {str(e)}") + print_error(f"문제 라인: {line.strip()}") + error_count += 1 + + new_lines.append(line) + i += 1 + + # 결과 저장 + try: + with open(wsdl_file_path, 'w', encoding='utf-8') as f: + f.writelines(new_lines) + print_success("WSDL 파일 저장 완료") + except Exception as e: + print_error(f"WSDL 파일 저장 실패: {str(e)}") + return + + # 결과 출력 + print_color(f"\n{'='*50}", Colors.BOLD) + print_color(f"처리 완료: {target}", Colors.BOLD) + print_color(f"{'='*50}", Colors.BOLD) + + print_info(f"CSV 파일: {csv_file_path}") + print_info(f"WSDL 파일: {wsdl_file_path}") + print_info(f"백업 파일: {backup_path}") + + print_color(f"\n📊 처리 통계:", Colors.MAGENTA) + print(f" 총 변경사항: {changes_made}개") + print(f" 처리된 CSV 필드 수: {len(processed_fields)}") + print(f" 건너뛴 필드 총계: {len(skipped_fields)}") + print(f" ├─ 배열 타입 (정상): {len(skipped_array_fields)}개") + print(f" ├─ 요청 래퍼 타입 (정상): {len(skipped_req_wrapper_fields)}개") + print_color(f" └─ CSV 누락 (문제): {len(skipped_no_csv_fields)}개", Colors.RED if len(skipped_no_csv_fields) > 0 else Colors.WHITE) + print(f" 검증 통과한 SEQ 주석: {verified_correct}개") + print(f" 수정된 SEQ 주석: {corrected_seq}개") + print(f" 오류 발생 횟수: {error_count}개") + + # CSV 누락 필드 상세 표시 + if len(skipped_no_csv_fields) > 0: + print_error(f"\n⚠️ CSV에 누락된 필드 목록 (확인 필요):") + for field in skipped_no_csv_fields: + print_error(f" - {field}") + + # 최종 결과 + if error_count > 0: + print_error(f"\n⚠️ {error_count}개의 오류가 발생했습니다. 로그를 확인해주세요.") + + if len(skipped_no_csv_fields) > 0: + print_error(f"\n🚨 주의: {len(skipped_no_csv_fields)}개의 필드가 CSV에 누락되어 있습니다!") + print_error("이 필드들은 WSDL에 정의되어 있지만 CSV 스펙에 없어 주석이 생성되지 않았습니다.") + + if changes_made == 0: + print_success(f"\n모든 주석이 정확합니다! (검증된 SEQ 주석: {verified_correct}개)") + else: + print_success(f"\n{changes_made}개의 주석이 수정되었습니다.") + if corrected_seq > 0: + print(f" - 기존 SEQ 주석 수정: {corrected_seq}개") + if changes_made - corrected_seq > 0: + print(f" - 새로 추가/교체된 주석: {changes_made - corrected_seq}개") + +if __name__ == "__main__": + try: + csv_files = get_csv_files() + print_color(f"\n🎯 발견된 CSV 파일: {len(csv_files)}개", Colors.BOLD) + print_info(f"처리할 파일 목록: {csv_files}") + + total_files = len(csv_files) + success_count = 0 + error_count = 0 + + for i, target in enumerate(csv_files, 1): + print_color(f"\n{'='*60}", Colors.BOLD) + print_color(f"진행률: {i}/{total_files} - {target}", Colors.BOLD) + print_color(f"{'='*60}", Colors.BOLD) + + try: + process_wsdl_file(target) + success_count += 1 + except Exception as e: + print_error(f"파일 처리 실패 - {target}: {str(e)}") + error_count += 1 + + # 최종 통계 + print_color(f"\n{'='*60}", Colors.BOLD) + print_color("🏁 전체 처리 완료", Colors.BOLD) + print_color(f"{'='*60}", Colors.BOLD) + + print_success(f"성공: {success_count}개 파일") + if error_count > 0: + print_error(f"실패: {error_count}개 파일") + else: + print_success("모든 파일이 성공적으로 처리되었습니다!") + + # 발견된 SAP 타입들 출력 (PostgreSQL 매핑용) + print_color(f"\n{'='*60}", Colors.BOLD) + print_color("📊 발견된 SAP 타입 통계 (PostgreSQL 매핑용)", Colors.MAGENTA) + print_color(f"{'='*60}", Colors.BOLD) + + print_color(f"\n🔤 고유 SAP 타입 ({len(discovered_sap_types)}개):", Colors.CYAN) + for sap_type in sorted(discovered_sap_types): + print(f" - {sap_type}") + + print_color(f"\n📏 타입-사이즈 조합 ({len(type_size_combinations)}개):", Colors.YELLOW) + for combination in sorted(type_size_combinations): + print(f" - {combination}") + + print_color(f"\n💡 PostgreSQL 타입 매핑 가이드 (XML 파싱/조회용):", Colors.GREEN) + print(" 🎯 실용적 접근법:") + print(" - 대부분 → VARCHAR(500) 또는 TEXT (XML에서 모든 데이터가 문자열로 전송)") + print(" - 숫자 검색/정렬이 필요한 경우만 → NUMERIC") + print(" - 날짜 검색/정렬이 필요한 경우만 → DATE/TIMESTAMP") + print("") + print(" 📋 SAP 타입별 상세:") + print(" - CHAR, VARC, LCHR → VARCHAR(해당사이즈) 또는 TEXT") + print(" - DATS (날짜) → VARCHAR(8) 또는 DATE (YYYYMMDD 형식)") + print(" - TIMS (시간) → VARCHAR(6) 또는 TIME (HHMMSS 형식)") + print(" - CURR, DEC, QUAN, NUMB, NUMC, FLTP → VARCHAR 또는 NUMERIC") + print(" - CUKY (통화), UNIT (단위), LANG (언어) → VARCHAR(10)") + print("") + print(" ⚡ 권장: 초기에는 모두 VARCHAR/TEXT로 시작하고 필요시 변환") + + except Exception as e: + print_error(f"스크립트 실행 중 치명적 오류 발생: {str(e)}") + exit(1)
\ No newline at end of file |
