fix: POST /v1/pricing item_type_code 검증 오류 수정

- transformFrontendToApi에서 data.itemType 사용 (FG, PT, SM, RM, CS)
- 잘못된 'PRODUCT'/'MATERIAL' 코드 대신 실제 품목 유형 코드 사용
- create/page.tsx에서 itemTypeCode 파라미터 제거
- PricingListClient.tsx URL에서 itemTypeCode 파라미터 제거
- types.ts에서 itemTypeCode 속성 제거
This commit is contained in:
2025-12-21 01:58:54 +09:00
parent c6b605200d
commit e5bea96182
4 changed files with 15 additions and 15 deletions

View File

@@ -153,9 +153,8 @@ export function PricingListClient({
// 네비게이션 핸들러
const handleRegister = (item: PricingListItem) => {
// itemTypeCode를 URL 파라미터에 포함 (PRODUCT 또는 MATERIAL)
const itemTypeCode = item.itemTypeCode || 'MATERIAL';
router.push(`/sales/pricing-management/create?itemId=${item.itemId}&itemCode=${item.itemCode}&itemTypeCode=${itemTypeCode}`);
// item_type_code는 품목 정보에서 자동으로 가져오므로 URL에 포함하지 않음
router.push(`/sales/pricing-management/create?itemId=${item.itemId}&itemCode=${item.itemCode}`);
};
const handleEdit = (item: PricingListItem) => {

View File

@@ -152,10 +152,11 @@ function transformApiToFrontend(apiData: PriceApiData): PricingData {
/**
* 프론트엔드 데이터 → API 요청 형식 변환
* item_type_code는 품목 정보(data.itemType)에서 가져옴 (FG, PT, SM, RM, CS 등)
*/
function transformFrontendToApi(data: PricingData, itemTypeCode: 'PRODUCT' | 'MATERIAL' = 'MATERIAL'): Record<string, unknown> {
function transformFrontendToApi(data: PricingData): Record<string, unknown> {
return {
item_type_code: itemTypeCode,
item_type_code: data.itemType, // 품목에서 가져온 실제 item_type 값 사용
item_id: parseInt(data.itemId),
purchase_price: data.purchasePrice || null,
processing_cost: data.processingCost || null,
@@ -252,14 +253,14 @@ export async function getItemInfo(itemId: string): Promise<ItemInfo | null> {
/**
* 단가 등록
* item_type_code는 data.itemType에서 자동으로 가져옴
*/
export async function createPricing(
data: PricingData,
itemTypeCode: 'PRODUCT' | 'MATERIAL' = 'MATERIAL'
data: PricingData
): Promise<{ success: boolean; data?: PricingData; error?: string }> {
try {
const headers = await getApiHeaders();
const apiData = transformFrontendToApi(data, itemTypeCode);
const apiData = transformFrontendToApi(data);
console.log('[PricingActions] POST pricing request:', apiData);
@@ -308,7 +309,7 @@ export async function updatePricing(
const apiData = {
...transformFrontendToApi(data),
change_reason: changeReason || null,
};
} as Record<string, unknown>;
console.log('[PricingActions] PUT pricing request:', apiData);

View File

@@ -111,7 +111,7 @@ export interface PricingListItem {
itemId: string;
itemCode: string;
itemName: string;
itemType: string;
itemType: string; // FG, PT, SM, RM, CS 등 (API 등록 시 item_type_code로 사용)
specification?: string;
unit: string;
purchasePrice?: number;
@@ -122,7 +122,6 @@ export interface PricingListItem {
status: PricingStatus | 'not_registered';
currentRevision: number;
isFinal: boolean;
itemTypeCode?: 'PRODUCT' | 'MATERIAL'; // API 등록 시 필요 (PRODUCT 또는 MATERIAL)
}
// ===== 유틸리티 타입 =====