diff --git a/src/components/estimate/Estimate.jsx b/src/components/estimate/Estimate.jsx index 7c7d4926..f3630069 100644 --- a/src/components/estimate/Estimate.jsx +++ b/src/components/estimate/Estimate.jsx @@ -1426,6 +1426,7 @@ export default function Estimate({}) { { if (estimateContextState?.charger) { - setCopyReceiveUser(session?.userNm) + // [RECEIVEUSER-CLIP20 2026-05-18] T_PLAN.CHARGER nvarchar(20) — 21자+ session 값 클립 + setCopyReceiveUser(session?.userNm?.slice(0, 20)) } }, [estimateContextState?.charger]) @@ -311,7 +312,8 @@ export default function EstimateCopyPop({ planNo, setEstimateCopyPopupOpen }) { type="text" className="input-light" required - defaultValue={session?.userNm} + maxLength={20} + defaultValue={session?.userNm?.slice(0, 20)} onChange={(e) => { setCopyReceiveUser(e.target.value) }} diff --git a/src/components/management/StuffDetail.jsx b/src/components/management/StuffDetail.jsx index e647cfb7..f5f906d5 100644 --- a/src/components/management/StuffDetail.jsx +++ b/src/components/management/StuffDetail.jsx @@ -64,7 +64,7 @@ export default function StuffDetail() { const formInitValue = { // 물건번호 T...(임시) S...(진짜) planReqNo: '', //설계의뢰No - receiveUser: session?.userNm, //담당자 로그인사용자명 디폴트 + receiveUser: session?.userNm?.slice(0, 20), //담당자 로그인사용자명 디폴트 // [RECEIVEUSER-CLIP20 2026-05-18] DDL nvarchar(20) — 21자+ session 값 클립 objectStatusId: '0', //물건구분(신축:0 기축 : 1) objectName: '', //물건명 objectNameOmit: '', //경칭선택 @@ -637,7 +637,8 @@ export default function StuffDetail() { //설계의뢰No. form.setValue('planReqNo', managementState.planReqNo) //담당자 - form.setValue('receiveUser', managementState.receiveUser) + // [RECEIVEUSER-CLIP20 2026-05-18] DDL nvarchar(20) — 기 저장된 21자+ 값 클립 + form.setValue('receiveUser', managementState.receiveUser?.slice(0, 20)) //물건구분objectStatusId setSelectObjectStatusId(managementState.objectStatusId) @@ -1123,6 +1124,9 @@ export default function StuffDetail() { const _receiveUser = watch('receiveUser') //objectName: '', //물건명 const _objectName = watch('objectName') + // [NVARCHAR50-GUARD 2026-05-18] ADDRESSEE_COMPANY_NAME(nvarchar(50)) = objectName + ' ' + objectNameOmit 합산 maxLength + const _objectNameOmit = watch('objectNameOmit') + const objectNameMaxLength = Math.max(0, 50 - 1 - (_objectNameOmit?.length ?? 0)) // saleStoreId: '', //1차 판매점ID const _saleStoreId = watch('saleStoreId') // 2차 판매점명 @@ -1359,6 +1363,11 @@ export default function StuffDetail() { return swalFire({ text: getMessage('stuff.detail.save.valierror3', [errors]), type: 'alert', icon: 'warning' }) } + // [NVARCHAR50-GUARD 2026-05-18] ADDRESSEE_COMPANY_NAME = objectName + ' ' + objectNameOmit (nvarchar(50)) 합산 가드 + if (formData.objectName && (formData.objectName + ' ' + (formData.objectNameOmit ?? '')).length > 50) { + return swalFire({ text: getMessage('stuff.detail.save.objectNameTooLong'), type: 'alert', icon: 'warning' }) + } + const apiUrl = '/api/object/save-object' const params = { @@ -1595,6 +1604,11 @@ export default function StuffDetail() { } } + // [NVARCHAR50-GUARD 2026-05-18] ADDRESSEE_COMPANY_NAME = objectName + ' ' + objectNameOmit (nvarchar(50)) 합산 가드 + if (params.objectName && (params.objectName + ' ' + (params.objectNameOmit ?? '')).length > 50) { + return swalFire({ text: getMessage('stuff.detail.save.objectNameTooLong'), type: 'alert', icon: 'warning' }) + } + const apiUrl = '/api/object/save-object' if (objectNo) { setIsGlobalLoading(true) @@ -1866,7 +1880,7 @@ export default function StuffDetail() {