summaryrefslogtreecommitdiff
path: root/db
diff options
context:
space:
mode:
authorjoonhoekim <26rote@gmail.com>2025-11-20 11:53:08 +0900
committerjoonhoekim <26rote@gmail.com>2025-11-20 11:53:08 +0900
commit01b7b192acc316b4f8969893d1d9bb6369425776 (patch)
treec885effdc80380ddabd4c52e9b24d98e8c9565e3 /db
parent77cbcaf27c9de8b361a6c5a13f0eefb37fd0d0e5 (diff)
(김준회) PO 및 RFQ 관련 구매 피드백 반영
- PO매핑 오류 수정, 스키마 컬럼추가, 숫자포매팅 등 - rfq 담당자 문제 수정 등
Diffstat (limited to 'db')
-rw-r--r--db/schema/contract.ts55
-rw-r--r--db/schema/items.ts2
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 - 부모 아이템 코드 (부모 클래스 코드)