fix: 수정 모드에서 채번 코드 재할당 방지
handleSave(): formData.id 체크로 수정 모드 판별, 기존 번호 유지 handleUniversalFormModalTableSectionSave(): formData.id 및 originalGroupedData 체크로 수정 모드 판별 신규 등록 시에만 allocateCode 호출하여 채번 코드 할당 입고관리 화면에서 수정 시 입고번호 증가 문제 해결
This commit is contained in:
parent
c31b0540aa
commit
0907d318eb
|
|
@ -707,12 +707,19 @@ export class ButtonActionExecutor {
|
||||||
|
|
||||||
if (repeaterJsonKeys.length > 0) {
|
if (repeaterJsonKeys.length > 0) {
|
||||||
console.log("🔄 [handleSave] RepeaterFieldGroup JSON 문자열 감지:", repeaterJsonKeys);
|
console.log("🔄 [handleSave] RepeaterFieldGroup JSON 문자열 감지:", repeaterJsonKeys);
|
||||||
|
|
||||||
// 🎯 채번 규칙 할당 처리 (RepeaterFieldGroup 저장 전에 실행)
|
// 🎯 채번 규칙 할당 처리 (RepeaterFieldGroup 저장 전에 실행)
|
||||||
console.log("🔍 [handleSave-RepeaterFieldGroup] 채번 규칙 할당 체크 시작");
|
// 🔧 수정 모드 체크: formData.id가 존재하면 UPDATE 모드이므로 채번 코드 재할당 금지
|
||||||
|
const isEditModeRepeater =
|
||||||
|
context.formData.id !== undefined && context.formData.id !== null && context.formData.id !== "";
|
||||||
|
|
||||||
|
console.log("🔍 [handleSave-RepeaterFieldGroup] 채번 규칙 할당 체크 시작", {
|
||||||
|
isEditMode: isEditModeRepeater,
|
||||||
|
formDataId: context.formData.id,
|
||||||
|
});
|
||||||
|
|
||||||
const fieldsWithNumberingRepeater: Record<string, string> = {};
|
const fieldsWithNumberingRepeater: Record<string, string> = {};
|
||||||
|
|
||||||
// formData에서 채번 규칙이 설정된 필드 찾기
|
// formData에서 채번 규칙이 설정된 필드 찾기
|
||||||
for (const [key, value] of Object.entries(context.formData)) {
|
for (const [key, value] of Object.entries(context.formData)) {
|
||||||
if (key.endsWith("_numberingRuleId") && value) {
|
if (key.endsWith("_numberingRuleId") && value) {
|
||||||
|
|
@ -721,22 +728,27 @@ export class ButtonActionExecutor {
|
||||||
console.log(`🎯 [handleSave-RepeaterFieldGroup] 채번 필드 발견: ${fieldName} → 규칙 ${value}`);
|
console.log(`🎯 [handleSave-RepeaterFieldGroup] 채번 필드 발견: ${fieldName} → 규칙 ${value}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log("📋 [handleSave-RepeaterFieldGroup] 채번 규칙이 설정된 필드:", fieldsWithNumberingRepeater);
|
console.log("📋 [handleSave-RepeaterFieldGroup] 채번 규칙이 설정된 필드:", fieldsWithNumberingRepeater);
|
||||||
|
|
||||||
// 채번 규칙이 있는 필드에 대해 allocateCode 호출
|
// 🔧 수정 모드에서는 채번 코드 할당 건너뛰기 (기존 번호 유지)
|
||||||
if (Object.keys(fieldsWithNumberingRepeater).length > 0) {
|
// 신규 등록 모드에서만 allocateCode 호출하여 새 번호 할당
|
||||||
console.log("🎯 [handleSave-RepeaterFieldGroup] 채번 규칙 할당 시작 (allocateCode 호출)");
|
if (Object.keys(fieldsWithNumberingRepeater).length > 0 && !isEditModeRepeater) {
|
||||||
|
console.log(
|
||||||
|
"🎯 [handleSave-RepeaterFieldGroup] 신규 등록 모드 - 채번 규칙 할당 시작 (allocateCode 호출)",
|
||||||
|
);
|
||||||
const { allocateNumberingCode } = await import("@/lib/api/numberingRule");
|
const { allocateNumberingCode } = await import("@/lib/api/numberingRule");
|
||||||
|
|
||||||
for (const [fieldName, ruleId] of Object.entries(fieldsWithNumberingRepeater)) {
|
for (const [fieldName, ruleId] of Object.entries(fieldsWithNumberingRepeater)) {
|
||||||
try {
|
try {
|
||||||
console.log(`🔄 [handleSave-RepeaterFieldGroup] ${fieldName} 필드에 대해 allocateCode 호출: ${ruleId}`);
|
console.log(`🔄 [handleSave-RepeaterFieldGroup] ${fieldName} 필드에 대해 allocateCode 호출: ${ruleId}`);
|
||||||
const allocateResult = await allocateNumberingCode(ruleId);
|
const allocateResult = await allocateNumberingCode(ruleId);
|
||||||
|
|
||||||
if (allocateResult.success && allocateResult.data?.generatedCode) {
|
if (allocateResult.success && allocateResult.data?.generatedCode) {
|
||||||
const newCode = allocateResult.data.generatedCode;
|
const newCode = allocateResult.data.generatedCode;
|
||||||
console.log(`✅ [handleSave-RepeaterFieldGroup] ${fieldName} 새 코드 할당: ${context.formData[fieldName]} → ${newCode}`);
|
console.log(
|
||||||
|
`✅ [handleSave-RepeaterFieldGroup] ${fieldName} 새 코드 할당: ${context.formData[fieldName]} → ${newCode}`,
|
||||||
|
);
|
||||||
context.formData[fieldName] = newCode;
|
context.formData[fieldName] = newCode;
|
||||||
} else {
|
} else {
|
||||||
console.warn(`⚠️ [handleSave-RepeaterFieldGroup] ${fieldName} 코드 할당 실패:`, allocateResult.error);
|
console.warn(`⚠️ [handleSave-RepeaterFieldGroup] ${fieldName} 코드 할당 실패:`, allocateResult.error);
|
||||||
|
|
@ -745,9 +757,11 @@ export class ButtonActionExecutor {
|
||||||
console.error(`❌ [handleSave-RepeaterFieldGroup] ${fieldName} 코드 할당 오류:`, allocateError);
|
console.error(`❌ [handleSave-RepeaterFieldGroup] ${fieldName} 코드 할당 오류:`, allocateError);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (isEditModeRepeater) {
|
||||||
|
console.log("⏭️ [handleSave-RepeaterFieldGroup] 수정 모드 - 채번 코드 할당 건너뜀 (기존 번호 유지)");
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log("✅ [handleSave-RepeaterFieldGroup] 채번 규칙 할당 완료");
|
console.log("✅ [handleSave-RepeaterFieldGroup] 채번 규칙 할당 처리 완료");
|
||||||
|
|
||||||
// 🆕 상단 폼 데이터(마스터 정보) 추출
|
// 🆕 상단 폼 데이터(마스터 정보) 추출
|
||||||
// RepeaterFieldGroup JSON과 컴포넌트 키를 제외한 나머지가 마스터 정보
|
// RepeaterFieldGroup JSON과 컴포넌트 키를 제외한 나머지가 마스터 정보
|
||||||
|
|
@ -1951,7 +1965,16 @@ export class ButtonActionExecutor {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 🎯 채번 규칙 할당 처리 (저장 시점에 실제 순번 증가)
|
// 🎯 채번 규칙 할당 처리 (저장 시점에 실제 순번 증가)
|
||||||
console.log("🔍 [handleUniversalFormModalTableSectionSave] 채번 규칙 할당 체크 시작");
|
// 🔧 수정 모드 체크: formData.id 또는 originalGroupedData가 있으면 UPDATE 모드
|
||||||
|
const isEditModeUniversal =
|
||||||
|
(formData.id !== undefined && formData.id !== null && formData.id !== "") ||
|
||||||
|
originalGroupedData.length > 0;
|
||||||
|
|
||||||
|
console.log("🔍 [handleUniversalFormModalTableSectionSave] 채번 규칙 할당 체크 시작", {
|
||||||
|
isEditMode: isEditModeUniversal,
|
||||||
|
formDataId: formData.id,
|
||||||
|
originalGroupedDataCount: originalGroupedData.length,
|
||||||
|
});
|
||||||
|
|
||||||
const fieldsWithNumbering: Record<string, string> = {};
|
const fieldsWithNumbering: Record<string, string> = {};
|
||||||
|
|
||||||
|
|
@ -1977,9 +2000,12 @@ export class ButtonActionExecutor {
|
||||||
|
|
||||||
console.log("📋 [handleUniversalFormModalTableSectionSave] 채번 규칙이 설정된 필드:", fieldsWithNumbering);
|
console.log("📋 [handleUniversalFormModalTableSectionSave] 채번 규칙이 설정된 필드:", fieldsWithNumbering);
|
||||||
|
|
||||||
// 🔥 저장 시점에 allocateCode 호출하여 실제 순번 증가
|
// 🔧 수정 모드에서는 채번 코드 할당 건너뛰기 (기존 번호 유지)
|
||||||
if (Object.keys(fieldsWithNumbering).length > 0) {
|
// 신규 등록 모드에서만 allocateCode 호출하여 새 번호 할당
|
||||||
console.log("🎯 [handleUniversalFormModalTableSectionSave] 채번 규칙 할당 시작 (allocateCode 호출)");
|
if (Object.keys(fieldsWithNumbering).length > 0 && !isEditModeUniversal) {
|
||||||
|
console.log(
|
||||||
|
"🎯 [handleUniversalFormModalTableSectionSave] 신규 등록 모드 - 채번 규칙 할당 시작 (allocateCode 호출)",
|
||||||
|
);
|
||||||
const { allocateNumberingCode } = await import("@/lib/api/numberingRule");
|
const { allocateNumberingCode } = await import("@/lib/api/numberingRule");
|
||||||
|
|
||||||
for (const [fieldName, ruleId] of Object.entries(fieldsWithNumbering)) {
|
for (const [fieldName, ruleId] of Object.entries(fieldsWithNumbering)) {
|
||||||
|
|
@ -2006,6 +2032,8 @@ export class ButtonActionExecutor {
|
||||||
// 오류 시 기존 값 유지
|
// 오류 시 기존 값 유지
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (isEditModeUniversal) {
|
||||||
|
console.log("⏭️ [handleUniversalFormModalTableSectionSave] 수정 모드 - 채번 코드 할당 건너뜀 (기존 번호 유지)");
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log("✅ [handleUniversalFormModalTableSectionSave] 채번 규칙 할당 완료");
|
console.log("✅ [handleUniversalFormModalTableSectionSave] 채번 규칙 할당 완료");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue