refactor(WEB): 회계/견적/설정/생산 등 전반적 코드 개선 및 공통화 2차

- 회계 모듈 전면 개선: 청구/입금/출금/매입/매출/세금계산서/일반전표/거래처원장 등
- 견적 모듈 금액 포맷/할인/수식/미리보기 등 코드 정리
- 설정 모듈: 계정관리/직급/직책/권한 상세 간소화
- 생산 모듈: 작업지시서/작업자화면/검수 문서 코드 정리
- UniversalListPage 엑셀 다운로드 및 필터 기능 확장
- 대시보드/게시판/수주 등 날짜 유틸 공통화 적용
- claudedocs 문서 인덱스 업데이트

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
유병철
2026-02-20 10:45:47 +09:00
parent 71352923c8
commit f344dc7d00
123 changed files with 877 additions and 789 deletions

View File

@@ -14,6 +14,7 @@
import { useState, useEffect, useCallback, useMemo } from 'react';
import { useRouter } from 'next/navigation';
import { getTodayString } from '@/lib/utils/date';
import { formatNumber } from '@/lib/utils/amount';
import {
DollarSign,
Package,
@@ -547,29 +548,29 @@ export function PricingFormClient({
<div className="space-y-1 text-sm">
<div className="flex justify-between">
<span className="text-muted-foreground">:</span>
<span>{(purchasePrice || 0).toLocaleString()}</span>
<span>{formatNumber(purchasePrice || 0)}</span>
</div>
<div className="flex justify-between">
<span className="text-muted-foreground">:</span>
<span>{(processingCost || 0).toLocaleString()}</span>
<span>{formatNumber(processingCost || 0)}</span>
</div>
<Separator className="my-2" />
<div className="flex justify-between">
<span className="text-muted-foreground">:</span>
<span>{((purchasePrice || 0) + (processingCost || 0)).toLocaleString()}</span>
<span>{formatNumber((purchasePrice || 0) + (processingCost || 0))}</span>
</div>
{loss > 0 && (
<div className="flex justify-between text-orange-600">
<span>LOSS ({loss}%):</span>
<span>
+{(((purchasePrice || 0) + (processingCost || 0)) * (loss / 100)).toLocaleString()}
+{formatNumber(((purchasePrice || 0) + (processingCost || 0)) * (loss / 100))}
</span>
</div>
)}
<Separator className="my-2" />
<div className="flex justify-between font-semibold text-base">
<span className="text-blue-900">LOSS :</span>
<span className="text-blue-600">{costWithLoss.toLocaleString()}</span>
<span className="text-blue-600">{formatNumber(costWithLoss)}</span>
</div>
</div>
</div>
@@ -679,17 +680,17 @@ export function PricingFormClient({
<div className="space-y-1 text-sm">
<div className="flex justify-between">
<span className="text-muted-foreground">LOSS :</span>
<span>{costWithLoss.toLocaleString()}</span>
<span>{formatNumber(costWithLoss)}</span>
</div>
<div className="flex justify-between">
<span className="text-muted-foreground">:</span>
<span>{salesPrice.toLocaleString()}</span>
<span>{formatNumber(salesPrice)}</span>
</div>
<Separator className="my-2" />
<div className="flex justify-between font-semibold text-base">
<span className="text-green-900">:</span>
<span className="text-green-600">
{marginAmount.toLocaleString()} ({marginRate.toFixed(1)}%)
{formatNumber(marginAmount)} ({marginRate.toFixed(1)}%)
</span>
</div>
</div>