summaryrefslogtreecommitdiff
path: root/components/common/selectors/cost-center
diff options
context:
space:
mode:
Diffstat (limited to 'components/common/selectors/cost-center')
-rw-r--r--components/common/selectors/cost-center/cost-center-selector.tsx26
-rw-r--r--components/common/selectors/cost-center/cost-center-service.ts40
-rw-r--r--components/common/selectors/cost-center/cost-center-single-selector.tsx24
3 files changed, 13 insertions, 77 deletions
diff --git a/components/common/selectors/cost-center/cost-center-selector.tsx b/components/common/selectors/cost-center/cost-center-selector.tsx
index 3aad5787..f87b6928 100644
--- a/components/common/selectors/cost-center/cost-center-selector.tsx
+++ b/components/common/selectors/cost-center/cost-center-selector.tsx
@@ -77,11 +77,6 @@ export function CostCenterSelector({
const [globalFilter, setGlobalFilter] = useState('')
const [isPending, startTransition] = useTransition()
- // 날짜 포맷 함수 (YYYYMMDD -> YYYY-MM-DD)
- const formatDate = (dateStr: string) => {
- if (!dateStr || dateStr.length !== 8) return dateStr
- return `${dateStr.substring(0, 4)}-${dateStr.substring(4, 6)}-${dateStr.substring(6, 8)}`
- }
// Cost Center 선택 핸들러
const handleCodeSelect = useCallback(async (code: CostCenter) => {
@@ -118,27 +113,6 @@ export function CostCenterSelector({
),
},
{
- accessorKey: 'LTEXT',
- header: '설명',
- cell: ({ row }) => (
- <div>{row.getValue('LTEXT')}</div>
- ),
- },
- {
- accessorKey: 'DATAB',
- header: '시작일',
- cell: ({ row }) => (
- <div className="text-sm">{formatDate(row.getValue('DATAB'))}</div>
- ),
- },
- {
- accessorKey: 'DATBI',
- header: '종료일',
- cell: ({ row }) => (
- <div className="text-sm">{formatDate(row.getValue('DATBI'))}</div>
- ),
- },
- {
id: 'actions',
header: '선택',
cell: ({ row }) => (
diff --git a/components/common/selectors/cost-center/cost-center-service.ts b/components/common/selectors/cost-center/cost-center-service.ts
index 844215f0..1e7e43f5 100644
--- a/components/common/selectors/cost-center/cost-center-service.ts
+++ b/components/common/selectors/cost-center/cost-center-service.ts
@@ -5,19 +5,16 @@ import { oracleKnex } from '@/lib/oracle-db/db'
// Cost Center 타입 정의
export interface CostCenter {
KOSTL: string // Cost Center 코드
- DATAB: string // 시작일
- DATBI: string // 종료일
KTEXT: string // 단축 텍스트
- LTEXT: string // 긴 텍스트
}
// 테스트 환경용 폴백 데이터
const FALLBACK_TEST_DATA: CostCenter[] = [
- { KOSTL: 'D6023930', DATAB: '20230101', DATBI: '99991231', KTEXT: '구매팀', LTEXT: '구매팀 Cost Center(테스트데이터 - 오라클 페칭 실패시)' },
- { KOSTL: 'D6023931', DATAB: '20230101', DATBI: '99991231', KTEXT: '자재팀', LTEXT: '자재팀 Cost Center(테스트데이터 - 오라클 페칭 실패시)' },
- { KOSTL: 'D6023932', DATAB: '20230101', DATBI: '99991231', KTEXT: '조달팀', LTEXT: '조달팀 Cost Center(테스트데이터 - 오라클 페칭 실패시)' },
- { KOSTL: 'D6023933', DATAB: '20230101', DATBI: '99991231', KTEXT: '구매1팀', LTEXT: '구매1팀 Cost Center(테스트데이터 - 오라클 페칭 실패시)' },
- { KOSTL: 'D6023934', DATAB: '20230101', DATBI: '99991231', KTEXT: '구매2팀', LTEXT: '구매2팀 Cost Center(테스트데이터 - 오라클 페칭 실패시)' },
+ { KOSTL: 'D6023930', KTEXT: '구매팀(테스트데이터 - 오라클 페칭 실패시)' },
+ { KOSTL: 'D6023931', KTEXT: '자재팀(테스트데이터 - 오라클 페칭 실패시)' },
+ { KOSTL: 'D6023932', KTEXT: '조달팀(테스트데이터 - 오라클 페칭 실패시)' },
+ { KOSTL: 'D6023933', KTEXT: '구매1팀(테스트데이터 - 오라클 페칭 실패시)' },
+ { KOSTL: 'D6023934', KTEXT: '구매2팀(테스트데이터 - 오라클 페칭 실패시)' },
]
/**
@@ -35,19 +32,11 @@ export async function getCostCenters(): Promise<{
console.log('📋 [getCostCenters] Oracle 쿼리 시작...')
const result = await oracleKnex.raw(`
- SELECT
- KOSTL,
- DATAB,
- DATBI,
- KTEXT,
- LTEXT
- FROM CMCTB_COSTCENTER
- WHERE ROWNUM < 100
- AND NVL(BKZKP,' ') = ' '
- AND TO_CHAR(SYSDATE,'YYYYMMDD') BETWEEN DATAB AND DATBI
- AND KOKRS = 'H100'
- ORDER BY KOSTL
+ SELECT KOSTL , KTEXT FROM CMCTB_COSTCENTER
+ WHERE TO_CHAR(SYSDATE,'YYYYMMDD') BETWEEN DATAB AND DATBI AND ROWNUM < 10
`)
+ // KOSTL -> CONTCENTER
+ // KTEXT -> CONTCENTER명
// Oracle raw query의 결과는 rows 배열에 들어있음
const rows = (result.rows || result) as Array<Record<string, unknown>>
@@ -56,17 +45,12 @@ export async function getCostCenters(): Promise<{
// null 값 필터링
const cleanedResult = rows
- .filter((item) =>
- item.KOSTL &&
- item.DATAB &&
- item.DATBI
+ .filter((item) =>
+ item.KOSTL
)
.map((item) => ({
KOSTL: String(item.KOSTL),
- DATAB: String(item.DATAB),
- DATBI: String(item.DATBI),
- KTEXT: String(item.KTEXT || ''),
- LTEXT: String(item.LTEXT || '')
+ KTEXT: String(item.KTEXT || '')
}))
console.log(`✅ [getCostCenters] 필터링 후 ${cleanedResult.length}건`)
diff --git a/components/common/selectors/cost-center/cost-center-single-selector.tsx b/components/common/selectors/cost-center/cost-center-single-selector.tsx
index e09f782b..952fab3f 100644
--- a/components/common/selectors/cost-center/cost-center-single-selector.tsx
+++ b/components/common/selectors/cost-center/cost-center-single-selector.tsx
@@ -134,27 +134,6 @@ export function CostCenterSingleSelector({
),
},
{
- accessorKey: 'LTEXT',
- header: '설명',
- cell: ({ row }) => (
- <div>{row.getValue('LTEXT')}</div>
- ),
- },
- {
- accessorKey: 'DATAB',
- header: '시작일',
- cell: ({ row }) => (
- <div className="text-sm">{formatDate(row.getValue('DATAB'))}</div>
- ),
- },
- {
- accessorKey: 'DATBI',
- header: '종료일',
- cell: ({ row }) => (
- <div className="text-sm">{formatDate(row.getValue('DATBI'))}</div>
- ),
- },
- {
id: 'actions',
header: '선택',
cell: ({ row }) => {
@@ -283,7 +262,6 @@ export function CostCenterSingleSelector({
<div className="flex items-center gap-2 mt-1">
<span className="font-mono text-sm">[{currentSelectedCode.KOSTL}]</span>
<span>{currentSelectedCode.KTEXT}</span>
- <span className="text-muted-foreground">- {currentSelectedCode.LTEXT}</span>
</div>
</div>
)}
@@ -291,7 +269,7 @@ export function CostCenterSingleSelector({
<div className="flex items-center space-x-2">
<Search className="h-4 w-4" />
<Input
- placeholder="코스트센터 코드, 단축명, 설명으로 검색..."
+ placeholder="코스트센터 코드, 단축명으로 검색..."
value={globalFilter}
onChange={(e) => handleSearchChange(e.target.value)}
className="flex-1"