Show linked codes as alias and code

This commit is contained in:
2026-06-17 09:36:33 +09:00
parent 7622ed2793
commit 4dd68e2c98
2 changed files with 20 additions and 8 deletions

View File

@@ -1842,10 +1842,12 @@ def _decorate_linked_code_names(linked_codes, conn=None):
try:
sales_code = _as_text(payload.get('salesCode')).strip()
design_code = _as_text(payload.get('designCode')).strip()
if sales_code and not _as_text(payload.get('salesName')).strip():
payload['salesName'] = get_project_alias_name(conn, sales_code, 'sales')
if design_code and not _as_text(payload.get('designName')).strip():
payload['designName'] = get_project_alias_name(conn, design_code, 'design')
if sales_code:
# 연계코드는 페이지에서 항상 "약칭(코드번호)" 형태로 보여야 한다.
# 원본 REPORT_5가 긴 정식명을 주더라도 ERP 프로젝트 약칭 캐시를 우선 사용한다.
payload['salesName'] = get_project_alias_name(conn, sales_code, 'sales') or _as_text(payload.get('salesName')).strip()
if design_code:
payload['designName'] = get_project_alias_name(conn, design_code, 'design') or _as_text(payload.get('designName')).strip()
return payload
finally:
if close_conn:

View File

@@ -711,9 +711,19 @@
return LINKED_CODE_BY_BUSINESS[key] || { salesCode: '', designCode: '' };
}
function formatLinkedCodeLabel(code, name) {
const cleanCode = String(code || '').trim();
function compactLinkedCodeName(name, fallbackName) {
const cleanName = String(name || '').trim();
const cleanFallback = String(fallbackName || '').trim();
if (!cleanName) return cleanFallback;
if (cleanFallback && (cleanName.length > 24 || cleanName.includes('[') || cleanName.includes('민간투자사업'))) {
return cleanFallback;
}
return cleanName;
}
function formatLinkedCodeLabel(code, name, fallbackName = '') {
const cleanCode = String(code || '').trim();
const cleanName = compactLinkedCodeName(name, fallbackName);
if (!cleanCode) return '-';
if (!cleanName) return cleanCode;
return `${cleanName}(${cleanCode})`;
@@ -915,8 +925,8 @@
function renderDetailRows(detail) {
const linkedCodes = resolveLinkedCodes(detail);
const linkedCodeText = [
formatLinkedCodeLabel(linkedCodes.salesCode, linkedCodes.salesName),
formatLinkedCodeLabel(linkedCodes.designCode, linkedCodes.designName),
formatLinkedCodeLabel(linkedCodes.salesCode, linkedCodes.salesName, detail.projectName),
formatLinkedCodeLabel(linkedCodes.designCode, linkedCodes.designName, detail.projectName),
].join(' · ');
const rows = [
['사업코드', detail.businessCode],