'use client'; /** * 견적서 문서 콘텐츠 * * 양식 타입: * - vendor: 업체발송용 (부가세 별도/포함) * - calculation: 산출내역서 */ import React from 'react'; import type { QuoteFormDataV2 } from './QuoteRegistrationV2'; // 양식 타입 type TemplateType = 'vendor' | 'calculation'; interface QuotePreviewContentProps { data: QuoteFormDataV2; /** 양식 타입 (기본: vendor) */ templateType?: TemplateType; /** 부가세 포함 여부 (업체발송용에서만 사용) */ vatIncluded?: boolean; /** 할인율 (%) */ discountRate?: number; /** 할인금액 (원) */ discountAmount?: number; } export function QuotePreviewContent({ data: quoteData, templateType = 'vendor', vatIncluded = false, discountRate = 0, discountAmount = 0, }: QuotePreviewContentProps) { // 소계 (할인 전 금액) const subtotal = quoteData.locations.reduce( (sum, loc) => sum + (loc.totalPrice || 0), 0 ); // 할인 적용 후 금액 const afterDiscount = subtotal - discountAmount; // 부가세 const vat = Math.round(afterDiscount * 0.1); // 총 견적금액 (부가세 포함 여부에 따라) const grandTotal = vatIncluded ? afterDiscount + vat : afterDiscount; // 할인 적용 여부 const hasDiscount = discountAmount > 0; // 산출내역서 여부 const isCalculation = templateType === 'calculation'; return (
{/* 헤더: 제목 + 결재란 */}
{/* 왼쪽: 제목 */}

견 적 서

문서번호: {quoteData.id || 'ABC123'} | 작성일자: {quoteData.registrationDate || '-'}

{/* 오른쪽: 결재란 */}
작성 승인 승인 승인
홍길동 이름 이름 이름
부서명 부서명 부서명 부서명
{/* 수요자 / 공급자 정보 (좌우 배치) */}
{/* 수요자 */}
수 요 자
업체명 {quoteData.clientName || '-'}
제품명 {quoteData.locations[0]?.productCode || '-'}
현장명 {quoteData.siteName || '-'}
담당자 {quoteData.manager || '-'}
연락처 {quoteData.contact || '-'}
{/* 공급자 */}
공 급 자
상호 회사명
등록번호 123-12-12345 대표자 홍길동
사업장주소 주소명
업태 제조업 종목 방화셔터, 금속창호
TEL 031-123-1234 FAX 02-1234-1234
{/* 내역 테이블 */}
내 역
{quoteData.locations.map((loc, index) => ( ))} {/* 소계 */} {/* 할인율 */} {/* 할인금액 */} {/* 할인 후 금액 */} {/* 부가세 포함일 때 추가 행들 */} {vatIncluded && ( <> )}
No. 종류 부호 제품명 오픈사이즈 수량 단위 단가 합계금액
가로 세로
{index + 1} {loc.floor || '-'} {loc.symbol || '-'} {loc.productCode} {loc.openWidth} {loc.openHeight} {loc.quantity} SET {(loc.unitPrice || 0).toLocaleString()} {(loc.totalPrice || 0).toLocaleString()}
소계 {quoteData.locations.reduce((sum, loc) => sum + (loc.quantity || 0), 0)} {subtotal.toLocaleString()}
할인율 {hasDiscount ? `${discountRate.toFixed(1)} %` : '0.0 %'}
할인금액 {hasDiscount ? `-${discountAmount.toLocaleString()}` : '0'}
할인 후 금액 {afterDiscount.toLocaleString()}
부가가치세 합계 {vat.toLocaleString()}
총 견적금액 {grandTotal.toLocaleString()}
{/* 합계금액 박스 */}
합계금액 ({vatIncluded ? '부가세 포함' : '부가세 별도'}) ₩ {grandTotal.toLocaleString()}
{/* 산출내역서일 경우 세부 산출내역서 테이블 추가 */} {isCalculation && (
세 부 산 출 내 역 서
{quoteData.locations.map((loc) => ( {/* 각 개소별 품목 상세 */} ))} {/* 소계 */}
부호 항목 규격 수량 단위 단가 합계
{loc.symbol || '-'} 항목명 규격명 {loc.quantity} SET {(loc.unitPrice || 0).toLocaleString()} {(loc.totalPrice || 0).toLocaleString()}
소계 {quoteData.locations.reduce((sum, loc) => sum + (loc.quantity || 0), 0)} {subtotal.toLocaleString()}
)} {/* 비고 */}
비고

※ 해당 견적서의 유효기간은 발행일 기준 1개월 입니다.

※ 견적금액의 50%를 입금하시면 생산가 진행합니다.

{/* 결제방법 / 담당자 */}
결제방법 계좌이체 계좌정보 국민은행 12312132132
담당자 홍길동 과장 연락처 010-1234-1234
); }