diff options
| author | joonhoekim <26rote@gmail.com> | 2025-11-20 11:53:08 +0900 |
|---|---|---|
| committer | joonhoekim <26rote@gmail.com> | 2025-11-20 11:53:08 +0900 |
| commit | 01b7b192acc316b4f8969893d1d9bb6369425776 (patch) | |
| tree | c885effdc80380ddabd4c52e9b24d98e8c9565e3 /db/schema | |
| parent | 77cbcaf27c9de8b361a6c5a13f0eefb37fd0d0e5 (diff) | |
(김준회) PO 및 RFQ 관련 구매 피드백 반영
- PO매핑 오류 수정, 스키마 컬럼추가, 숫자포매팅 등
- rfq 담당자 문제 수정 등
Diffstat (limited to 'db/schema')
| -rw-r--r-- | db/schema/contract.ts | 55 | ||||
| -rw-r--r-- | db/schema/items.ts | 2 |
2 files changed, 53 insertions, 4 deletions
diff --git a/db/schema/contract.ts b/db/schema/contract.ts index e2a070ec..a04bb44b 100644 --- a/db/schema/contract.ts +++ b/db/schema/contract.ts @@ -90,6 +90,7 @@ export const contracts = pgTable('contracts', { purchaseGroup: varchar('purchase_group', { length: 10 }), // 구매그룹 (EKGRP - 구매그룹코드) exchangeRate: numeric('exchange_rate', { precision: 9, scale: 5 }), // 환율 (WKURS) poConfirmStatus: varchar('po_confirm_status', { length: 10 }), // PO확인상태 (ZPO_CNFM_STAT) + ZPO_CNFM_STAT: varchar('ZPO_CNFM_STAT', { length: 255 }), // SAP 구매오더확인상태 원본값 // 계약/보증 관련 contractGuaranteeCode: varchar('contract_guarantee_code', { length: 2 }), // 계약보증코드 (ZCNRT_GRNT_CD) @@ -163,17 +164,65 @@ export const contractItems = pgTable("contract_items", { .references(() => items.id, { onDelete: "cascade" }) , + // --- SAP ECC 인터페이스 매핑 필드 --- + itemNo: varchar("item_no", { length: 10 }), // 품번 (EBELP - 구매오더품목번호) + prNo: varchar("pr_no", { length: 10 }), // PR번호 (BANFN - 구매요청번호) + prItemNo: varchar("pr_item_no", { length: 5 }), // PR 품번 (BNFPO - 구매요청품목번호) + materialGroup: varchar("material_group", { length: 9 }), // 자재그룹 (MATKL) + weight: numeric("weight", { precision: 13, scale: 3 }), // 순중량 (NTGEW) + weightUnit: varchar("weight_unit", { length: 3 }), // 중량단위 (GEWEI) + totalWeight: numeric("total_weight", { precision: 15, scale: 3 }), // 총중량 (BRGEW) + // --- 품목(아이템) 단위 정보 --- description: text("description"), // 품목 설명 (스펙, 모델명 등) quantity: integer("quantity").notNull().default(1), - unitPrice: numeric("unit_price", { precision: 10, scale: 2 }), - + ZPO_UNIT: varchar("ZPO_UNIT", { length: 10 }), // 구매오더수량단위 (ZPO_UNIT) + unitPrice: numeric("unit_price", { precision: 10, scale: 2 }), // 구매단가 (NETPR) + + // 가격 관련 추가 필드 + PEINH: integer("PEINH"), // 가격단위값 (예: 1, 10, 100) + BPRME: varchar("BPRME", { length: 3 }), // 구매단가단위 (EA, KG 등) + ZNETPR: numeric("ZNETPR", { precision: 17, scale: 2 }), // 발주단가 + ZREF_NETPR: numeric("ZREF_NETPR", { precision: 17, scale: 2 }), // 참조단가 + + taxType: varchar("tax_type", { length: 10 }), // 세금코드( MWSKZ - 매출부가가치세코드이며, V1, V2 같은 두자리 코드를 가짐, 각 코드별 taxRate가 있음. 코드별 taxRate는 아직 받아오기 전임) taxRate: numeric("tax_rate", { precision: 5, scale: 2 }), // % (예: 10.00) taxAmount: numeric("tax_amount", { precision: 10, scale: 2 }), // 계산된 세금 + + // SAP ECC 금액 필드 (금액 관계: NETWR = BRTWR + ZPDT_EXDS_AMT) + NETWR: numeric("NETWR", { precision: 17, scale: 2 }), // 오더정가 (최종 정가) + BRTWR: numeric("BRTWR", { precision: 17, scale: 2 }), // 오더총액 (기본 총액) + ZPDT_EXDS_AMT: numeric("ZPDT_EXDS_AMT", { precision: 17, scale: 2 }), // 할인/할증금액 (조정금액: 할인은 음수, 할증은 양수) + totalLineAmount: numeric("total_line_amount", { precision: 12, scale: 2 }), // (수량×단가±할인+세금) 등 + // 위치 정보 + WERKS: varchar("WERKS", { length: 4 }), // 플랜트코드 + LGORT: varchar("LGORT", { length: 10 }), // 저장위치 + + // RFQ 추적 + ANFNR: varchar("ANFNR", { length: 10 }), // RFQ번호 + ANFPS: varchar("ANFPS", { length: 5 }), // RFQ품목번호 + + // 자재 추적 + ZPO_LOT_NO: varchar("ZPO_LOT_NO", { length: 50 }), // Steel Material Marking No + + // 볼륨 정보 + VOLUM: numeric("VOLUM", { precision: 15, scale: 3 }), // 볼륨 + VOLEH: varchar("VOLEH", { length: 3 }), // 볼륨단위 + + // 날짜 정보 + ZPO_DLV_DT: date("ZPO_DLV_DT"), // PO납기일자 + ZPLN_ST_DT: date("ZPLN_ST_DT"), // 예정시작일자 + ZPLN_ED_DT: date("ZPLN_ED_DT"), // 예정종료일자 + LFDAT: date("LFDAT"), // PR Delivery Date + ZRCV_DT: date("ZRCV_DT"), // 구매접수일자 + + // 기타 + ZCON_IND: varchar("ZCON_IND", { length: 1 }), // 시리즈구분 (SS 등) + // 비고 - remark: text("remark"), + remark: text("remark"), // 발주비고 (ZPO_RMK) // 생성/수정 시각 createdAt: timestamp("created_at").defaultNow().notNull(), diff --git a/db/schema/items.ts b/db/schema/items.ts index e9c10058..fefb8e08 100644 --- a/db/schema/items.ts +++ b/db/schema/items.ts @@ -7,7 +7,7 @@ export const items = pgTable("items", { ProjectNo: varchar("project_no", { length: 100 }).notNull(), itemCode: varchar("item_code", { length: 100 }).notNull(), itemName: varchar("item_name", { length: 255 }).notNull(), - packageCode: varchar("package_code", { length: 255 }).notNull(), + packageCode: varchar("package_code", { length: 255 }), // nullable로 변경 (ECC에서 제공되지 않을 수 있음) smCode: varchar("sm_code", { length: 255 }), description: text("description"), parentItemCode: varchar("parent_item_code", { length: 18 }), // PRNT_CLAS_CD - 부모 아이템 코드 (부모 클래스 코드) |
