summaryrefslogtreecommitdiff
path: root/lib/mail
diff options
context:
space:
mode:
Diffstat (limited to 'lib/mail')
-rw-r--r--lib/mail/templates/rfq-due-date-change.hbs235
-rw-r--r--lib/mail/templates/rfq-invitation.hbs301
-rw-r--r--lib/mail/templates/rfq-resend.hbs364
3 files changed, 900 insertions, 0 deletions
diff --git a/lib/mail/templates/rfq-due-date-change.hbs b/lib/mail/templates/rfq-due-date-change.hbs
new file mode 100644
index 00000000..9ff268bc
--- /dev/null
+++ b/lib/mail/templates/rfq-due-date-change.hbs
@@ -0,0 +1,235 @@
+<!DOCTYPE html>
+<html lang="{{language}}">
+<head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <title>{{#if (eq language 'ko')}}RFQ 마감일 변경 안내{{else}}RFQ Due Date Change Notification{{/if}}</title>
+ <style>
+ body {
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
+ line-height: 1.6;
+ color: #333;
+ max-width: 600px;
+ margin: 0 auto;
+ padding: 20px;
+ background-color: #f5f5f5;
+ }
+ .container {
+ background-color: white;
+ border-radius: 8px;
+ padding: 30px;
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
+ }
+ .header {
+ border-bottom: 2px solid #0066cc;
+ padding-bottom: 20px;
+ margin-bottom: 30px;
+ }
+ .header h1 {
+ color: #0066cc;
+ margin: 0;
+ font-size: 24px;
+ }
+ .alert-box {
+ background-color: #fff3cd;
+ border: 1px solid #ffc107;
+ border-radius: 4px;
+ padding: 15px;
+ margin: 20px 0;
+ }
+ .alert-box strong {
+ color: #856404;
+ }
+ .info-table {
+ width: 100%;
+ border-collapse: collapse;
+ margin: 20px 0;
+ }
+ .info-table th {
+ text-align: left;
+ padding: 10px;
+ background-color: #f8f9fa;
+ border: 1px solid #dee2e6;
+ width: 30%;
+ font-weight: 600;
+ }
+ .info-table td {
+ padding: 10px;
+ border: 1px solid #dee2e6;
+ }
+ .date-change {
+ background-color: #e3f2fd;
+ border-radius: 4px;
+ padding: 15px;
+ margin: 20px 0;
+ text-align: center;
+ }
+ .old-date {
+ color: #6c757d;
+ text-decoration: line-through;
+ font-size: 16px;
+ margin-bottom: 10px;
+ }
+ .arrow {
+ font-size: 24px;
+ color: #0066cc;
+ margin: 10px 0;
+ }
+ .new-date {
+ color: #0066cc;
+ font-size: 20px;
+ font-weight: bold;
+ }
+ .button {
+ display: inline-block;
+ padding: 12px 24px;
+ background-color: #0066cc;
+ color: white;
+ text-decoration: none;
+ border-radius: 4px;
+ font-weight: 600;
+ margin: 20px 0;
+ }
+ .button:hover {
+ background-color: #0052a3;
+ }
+ .footer {
+ margin-top: 30px;
+ padding-top: 20px;
+ border-top: 1px solid #dee2e6;
+ font-size: 14px;
+ color: #6c757d;
+ }
+ .contact-info {
+ background-color: #f8f9fa;
+ padding: 15px;
+ border-radius: 4px;
+ margin-top: 20px;
+ }
+ </style>
+</head>
+<body>
+ <div class="container">
+ <div class="header">
+ <h1>{{#if (eq language 'ko')}}RFQ 마감일 변경 안내{{else}}RFQ Due Date Change Notification{{/if}}</h1>
+ </div>
+
+ <p>
+ {{#if (eq language 'ko')}}
+ {{vendorName}} 귀하,<br><br>
+ 아래 RFQ의 마감일이 변경되었음을 알려드립니다.
+ {{else}}
+ Dear {{vendorName}},<br><br>
+ We would like to inform you that the due date for the following RFQ has been changed.
+ {{/if}}
+ </p>
+
+ <div class="alert-box">
+ <strong>⚠️ {{#if (eq language 'ko')}}중요: 마감일이 변경되었습니다{{else}}Important: Due date has been changed{{/if}}</strong>
+ </div>
+
+ <table class="info-table">
+ <tr>
+ <th>{{#if (eq language 'ko')}}RFQ 번호{{else}}RFQ Number{{/if}}</th>
+ <td><strong>{{rfqCode}}</strong></td>
+ </tr>
+ {{#if rfqTitle}}
+ <tr>
+ <th>{{#if (eq language 'ko')}}RFQ 제목{{else}}RFQ Title{{/if}}</th>
+ <td>{{rfqTitle}}</td>
+ </tr>
+ {{/if}}
+ {{#if rfqType}}
+ <tr>
+ <th>{{#if (eq language 'ko')}}RFQ 유형{{else}}RFQ Type{{/if}}</th>
+ <td>{{rfqType}}</td>
+ </tr>
+ {{/if}}
+ {{#if projectCode}}
+ <tr>
+ <th>{{#if (eq language 'ko')}}프로젝트 코드{{else}}Project Code{{/if}}</th>
+ <td>{{projectCode}}</td>
+ </tr>
+ {{/if}}
+ {{#if projectName}}
+ <tr>
+ <th>{{#if (eq language 'ko')}}프로젝트명{{else}}Project Name{{/if}}</th>
+ <td>{{projectName}}</td>
+ </tr>
+ {{/if}}
+ {{#if packageNo}}
+ <tr>
+ <th>{{#if (eq language 'ko')}}패키지 번호{{else}}Package No{{/if}}</th>
+ <td>{{packageNo}}</td>
+ </tr>
+ {{/if}}
+ {{#if packageName}}
+ <tr>
+ <th>{{#if (eq language 'ko')}}패키지명{{else}}Package Name{{/if}}</th>
+ <td>{{packageName}}</td>
+ </tr>
+ {{/if}}
+ {{#if itemCode}}
+ <tr>
+ <th>{{#if (eq language 'ko')}}품목 코드{{else}}Item Code{{/if}}</th>
+ <td>{{itemCode}}</td>
+ </tr>
+ {{/if}}
+ {{#if itemName}}
+ <tr>
+ <th>{{#if (eq language 'ko')}}품목명{{else}}Item Name{{/if}}</th>
+ <td>{{itemName}}</td>
+ </tr>
+ {{/if}}
+ </table>
+
+ <div class="date-change">
+ <h3>{{#if (eq language 'ko')}}마감일 변경{{else}}Due Date Change{{/if}}</h3>
+ <div class="old-date">
+ {{#if (eq language 'ko')}}기존 마감일: {{else}}Previous Due Date: {{/if}}{{oldDueDate}}
+ </div>
+ <div class="arrow">▼</div>
+ <div class="new-date">
+ {{#if (eq language 'ko')}}새 마감일: {{else}}New Due Date: {{/if}}{{newDueDate}}
+ </div>
+ </div>
+
+ <p>
+ {{#if (eq language 'ko')}}
+ 변경된 마감일까지 견적서를 제출해 주시기 바랍니다.
+ 견적서 제출은 아래 포털 사이트를 통해 진행하실 수 있습니다.
+ {{else}}
+ Please submit your quotation by the new due date.
+ You can submit your quotation through the portal site below.
+ {{/if}}
+ </p>
+
+ <div style="text-align: center;">
+ <a href="{{portalUrl}}" class="button">
+ {{#if (eq language 'ko')}}포털 사이트 바로가기{{else}}Go to Portal Site{{/if}}
+ </a>
+ </div>
+
+ <div class="contact-info">
+ <h4>{{#if (eq language 'ko')}}담당자 정보{{else}}Contact Information{{/if}}</h4>
+ <p>
+ {{#if (eq language 'ko')}}구매 담당자{{else}}Procurement PIC{{/if}}: {{picName}}<br>
+ {{#if (eq language 'ko')}}이메일{{else}}Email{{/if}}: <a href="mailto:{{picEmail}}">{{picEmail}}</a>
+ {{#if engPicName}}<br>{{#if (eq language 'ko')}}기술 담당자{{else}}Engineering PIC{{/if}}: {{engPicName}}{{/if}}
+ </p>
+ </div>
+
+ <div class="footer">
+ <p>
+ {{#if (eq language 'ko')}}
+ 본 메일은 발신 전용입니다. 문의사항이 있으시면 위 담당자에게 연락 주시기 바랍니다.<br>
+ 감사합니다.
+ {{else}}
+ This is an automated email. If you have any questions, please contact the person in charge above.<br>
+ Thank you.
+ {{/if}}
+ </p>
+ </div>
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/lib/mail/templates/rfq-invitation.hbs b/lib/mail/templates/rfq-invitation.hbs
new file mode 100644
index 00000000..d3064d3c
--- /dev/null
+++ b/lib/mail/templates/rfq-invitation.hbs
@@ -0,0 +1,301 @@
+<!DOCTYPE html>
+<html lang="{{language}}">
+<head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <title>{{#if (eq language 'ko')}}RFQ 초대{{else}}RFQ Invitation{{/if}}</title>
+ <style>
+ body {
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
+ line-height: 1.6;
+ color: #333;
+ max-width: 800px;
+ margin: 0 auto;
+ padding: 20px;
+ background-color: #f5f5f5;
+ }
+ .container {
+ background-color: white;
+ border-radius: 8px;
+ padding: 30px;
+ box-shadow: 0 2px 10px rgba(0,0,0,0.1);
+ }
+ .header {
+ border-bottom: 3px solid #1e40af;
+ padding-bottom: 20px;
+ margin-bottom: 30px;
+ }
+ .logo {
+ font-size: 24px;
+ font-weight: bold;
+ color: #1e40af;
+ }
+ .rfq-code {
+ background-color: #eff6ff;
+ color: #1e40af;
+ padding: 10px 15px;
+ border-radius: 6px;
+ display: inline-block;
+ font-weight: bold;
+ margin: 15px 0;
+ }
+ .info-section {
+ background-color: #f8fafc;
+ border-left: 4px solid #3b82f6;
+ padding: 20px;
+ margin: 20px 0;
+ border-radius: 4px;
+ }
+ .info-row {
+ display: flex;
+ padding: 8px 0;
+ border-bottom: 1px solid #e5e7eb;
+ }
+ .info-row:last-child {
+ border-bottom: none;
+ }
+ .info-label {
+ font-weight: 600;
+ color: #4b5563;
+ min-width: 150px;
+ padding-right: 15px;
+ }
+ .info-value {
+ color: #111827;
+ flex: 1;
+ }
+ .due-date {
+ background-color: #fef2f2;
+ color: #dc2626;
+ padding: 15px;
+ border-radius: 6px;
+ text-align: center;
+ margin: 20px 0;
+ font-size: 18px;
+ font-weight: bold;
+ }
+ .action-button {
+ background-color: #3b82f6;
+ color: white;
+ padding: 15px 30px;
+ text-decoration: none;
+ border-radius: 6px;
+ display: inline-block;
+ font-weight: bold;
+ margin: 20px 0;
+ }
+ .action-button:hover {
+ background-color: #2563eb;
+ }
+ .custom-message {
+ background-color: #fef3c7;
+ border: 1px solid #f59e0b;
+ padding: 15px;
+ border-radius: 6px;
+ margin: 20px 0;
+ }
+ .attachments {
+ background-color: #f0f9ff;
+ border: 1px solid #3b82f6;
+ padding: 15px;
+ border-radius: 6px;
+ margin: 20px 0;
+ }
+ .footer {
+ margin-top: 40px;
+ padding-top: 20px;
+ border-top: 1px solid #e5e7eb;
+ color: #6b7280;
+ font-size: 14px;
+ }
+ .contact-info {
+ background-color: #f9fafb;
+ padding: 15px;
+ border-radius: 6px;
+ margin-top: 20px;
+ }
+ table {
+ width: 100%;
+ border-collapse: collapse;
+ }
+ th {
+ background-color: #f3f4f6;
+ padding: 10px;
+ text-align: left;
+ font-weight: 600;
+ }
+ td {
+ padding: 10px;
+ border-bottom: 1px solid #e5e7eb;
+ }
+ </style>
+</head>
+<body>
+ <div class="container">
+ <!-- Header -->
+ <div class="header">
+ <div class="logo">{{t 'email.company_name'}}</div>
+ <h1>{{#if (eq language 'ko')}}견적 요청서 (RFQ){{else}}Request for Quotation{{/if}}</h1>
+ </div>
+
+ <!-- Greeting -->
+ <p>{{#if (eq language 'ko')}}{{vendorName}} 귀하{{else}}Dear {{vendorName}}{{/if}},</p>
+
+ <p>
+ {{#if (eq language 'ko')}}
+ 귀사를 당사의 입찰에 초대하게 되어 영광입니다. 아래 RFQ에 대한 견적서를 제출해 주시기 바랍니다.
+ {{else}}
+ We are pleased to invite your company to submit a quotation for the following RFQ.
+ {{/if}}
+ </p>
+
+ <!-- RFQ Code -->
+ <div class="rfq-code">
+ {{#if (eq rfqType '일반견적')}}견적{{else if (eq rfqType 'ITB')}}ITB{{else}}RFQ{{/if}} No: {{rfqCode}}
+ </div>
+
+ <!-- RFQ Information -->
+ <div class="info-section">
+ <h3>{{#if (eq language 'ko')}}견적 요청 정보{{else}}RFQ Information{{/if}}</h3>
+ <table>
+ {{#if rfqTitle}}
+ <tr>
+ <td class="info-label">{{#if (eq language 'ko')}}견적명{{else}}Title{{/if}}</td>
+ <td class="info-value">{{rfqTitle}}</td>
+ </tr>
+ {{/if}}
+ {{#if projectCode}}
+ <tr>
+ <td class="info-label">{{#if (eq language 'ko')}}프로젝트{{else}}Project{{/if}}</td>
+ <td class="info-value">{{projectCode}} - {{projectName}}</td>
+ </tr>
+ {{/if}}
+ {{#if packageNo}}
+ <tr>
+ <td class="info-label">{{#if (eq language 'ko')}}패키지{{else}}Package{{/if}}</td>
+ <td class="info-value">{{packageNo}} - {{packageName}}</td>
+ </tr>
+ {{/if}}
+ {{#if itemCode}}
+ <tr>
+ <td class="info-label">{{#if (eq language 'ko')}}품목{{else}}Item{{/if}}</td>
+ <td class="info-value">{{itemCode}} - {{itemName}}</td>
+ </tr>
+ {{/if}}
+ <tr>
+ <td class="info-label">{{#if (eq language 'ko')}}품목 수{{else}}Number of Items{{/if}}</td>
+ <td class="info-value">{{prItemsCount}} {{#if (eq language 'ko')}}개{{else}}items{{/if}}</td>
+ </tr>
+ {{#if attachmentsCount}}
+ <tr>
+ <td class="info-label">{{#if (eq language 'ko')}}첨부파일{{else}}Attachments{{/if}}</td>
+ <td class="info-value">{{attachmentsCount}} {{#if (eq language 'ko')}}개{{else}}file(s){{/if}}</td>
+ </tr>
+ {{/if}}
+ </table>
+ </div>
+
+ <!-- Due Date -->
+ <div class="due-date">
+ {{#if (eq language 'ko')}}
+ ⏰ 견적 제출 마감일: {{formatDate dueDate 'YYYY년 MM월 DD일'}}
+ {{else}}
+ ⏰ Quotation Due Date: {{formatDate dueDate 'MMMM DD, YYYY'}}
+ {{/if}}
+ </div>
+
+ <!-- Custom Message -->
+ {{#if customMessage}}
+ <div class="custom-message">
+ <h4>{{#if (eq language 'ko')}}추가 안내사항{{else}}Additional Information{{/if}}</h4>
+ <p>{{customMessage}}</p>
+ </div>
+ {{/if}}
+
+ <!-- Portal Access -->
+ <div style="text-align: center; margin: 30px 0;">
+ <p style="margin-bottom: 15px;">
+ {{#if (eq language 'ko')}}
+ 아래 버튼을 클릭하여 상세 정보를 확인하고 견적서를 제출해 주세요.
+ {{else}}
+ Please click the button below to view details and submit your quotation.
+ {{/if}}
+ </p>
+ <a href="{{portalUrl}}" class="action-button">
+ {{#if (eq language 'ko')}}견적서 작성하기{{else}}Submit Quotation{{/if}}
+ </a>
+ </div>
+
+ <!-- Important Notes -->
+ <div class="info-section">
+ <h4>{{#if (eq language 'ko')}}중요 안내사항{{else}}Important Notes{{/if}}</h4>
+ <ul>
+ <li>
+ {{#if (eq language 'ko')}}
+ 견적서는 반드시 마감일 이전에 제출해 주시기 바랍니다.
+ {{else}}
+ Please ensure your quotation is submitted before the due date.
+ {{/if}}
+ </li>
+ <li>
+ {{#if (eq language 'ko')}}
+ 모든 기술 사양 및 상업 조건을 충족하는 견적서를 제출해 주세요.
+ {{else}}
+ Please submit a quotation that meets all technical specifications and commercial terms.
+ {{/if}}
+ </li>
+ <li>
+ {{#if (eq language 'ko')}}
+ 문의사항이 있으시면 아래 담당자에게 연락 주시기 바랍니다.
+ {{else}}
+ If you have any questions, please contact the person below.
+ {{/if}}
+ </li>
+ </ul>
+ </div>
+
+ <!-- Contact Information -->
+ <div class="contact-info">
+ <h4>{{#if (eq language 'ko')}}담당자 정보{{else}}Contact Information{{/if}}</h4>
+ <table>
+ <tr>
+ <td class="info-label">{{#if (eq language 'ko')}}구매 담당자{{else}}Procurement Contact{{/if}}</td>
+ <td class="info-value">{{picName}}</td>
+ </tr>
+ <tr>
+ <td class="info-label">{{#if (eq language 'ko')}}이메일{{else}}Email{{/if}}</td>
+ <td class="info-value"><a href="mailto:{{picEmail}}">{{picEmail}}</a></td>
+ </tr>
+ {{#if engPicName}}
+ <tr>
+ <td class="info-label">{{#if (eq language 'ko')}}기술 담당자{{else}}Technical Contact{{/if}}</td>
+ <td class="info-value">{{engPicName}}</td>
+ </tr>
+ {{/if}}
+ </table>
+ </div>
+
+ <!-- Footer -->
+ <div class="footer">
+ <p>
+ {{#if (eq language 'ko')}}
+ 본 이메일은 RFQ 시스템에서 자동으로 발송되었습니다.
+ 회신은 위 담당자 이메일로 부탁드립니다.
+ {{else}}
+ This email was sent automatically from the RFQ system.
+ Please reply to the contact email above for any inquiries.
+ {{/if}}
+ </p>
+ <p style="margin-top: 10px;">
+ <small>
+ {{#if (eq language 'ko')}}
+ © 2025 {{t 'email.company_name'}}. All rights reserved. | RFQ ID: #{{responseId}}
+ {{else}}
+ © 2025 {{t 'email.company_name'}}. All rights reserved. | RFQ ID: #{{responseId}}
+ {{/if}}
+ </small>
+ </p>
+ </div>
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/lib/mail/templates/rfq-resend.hbs b/lib/mail/templates/rfq-resend.hbs
new file mode 100644
index 00000000..1c21f6b9
--- /dev/null
+++ b/lib/mail/templates/rfq-resend.hbs
@@ -0,0 +1,364 @@
+<!DOCTYPE html>
+<html lang="{{language}}">
+<head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <title>{{#if (eq language 'ko')}}RFQ 재발송{{else}}RFQ Resend{{/if}}</title>
+ <style>
+ body {
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
+ line-height: 1.6;
+ color: #333;
+ max-width: 800px;
+ margin: 0 auto;
+ padding: 20px;
+ background-color: #f5f5f5;
+ }
+ .container {
+ background-color: white;
+ border-radius: 8px;
+ padding: 30px;
+ box-shadow: 0 2px 10px rgba(0,0,0,0.1);
+ }
+ .header {
+ border-bottom: 3px solid #1e40af;
+ padding-bottom: 20px;
+ margin-bottom: 30px;
+ }
+ .logo {
+ font-size: 24px;
+ font-weight: bold;
+ color: #1e40af;
+ }
+ .rfq-code {
+ background-color: #eff6ff;
+ color: #1e40af;
+ padding: 10px 15px;
+ border-radius: 6px;
+ display: inline-block;
+ font-weight: bold;
+ margin: 15px 0;
+ }
+ .resend-badge {
+ background-color: #fef3c7;
+ color: #d97706;
+ padding: 5px 10px;
+ border-radius: 4px;
+ display: inline-block;
+ font-weight: bold;
+ margin-left: 10px;
+ font-size: 14px;
+ }
+ .warning-box {
+ background-color: #fef2f2;
+ border: 2px solid #f87171;
+ border-radius: 6px;
+ padding: 15px;
+ margin: 20px 0;
+ }
+ .warning-title {
+ color: #dc2626;
+ font-weight: bold;
+ font-size: 18px;
+ margin-bottom: 10px;
+ }
+ .warning-list {
+ color: #991b1b;
+ margin: 10px 0 10px 20px;
+ }
+ .info-section {
+ background-color: #f8fafc;
+ border-left: 4px solid #3b82f6;
+ padding: 20px;
+ margin: 20px 0;
+ border-radius: 4px;
+ }
+ .due-date {
+ background-color: #fef2f2;
+ color: #dc2626;
+ padding: 15px;
+ border-radius: 6px;
+ text-align: center;
+ margin: 20px 0;
+ font-size: 18px;
+ font-weight: bold;
+ }
+ .action-button {
+ background-color: #3b82f6;
+ color: white;
+ padding: 15px 30px;
+ text-decoration: none;
+ border-radius: 6px;
+ display: inline-block;
+ font-weight: bold;
+ margin: 20px 0;
+ }
+ .action-button:hover {
+ background-color: #2563eb;
+ }
+ .contract-requirements {
+ background-color: #fef3c7;
+ border: 1px solid #f59e0b;
+ padding: 15px;
+ border-radius: 6px;
+ margin: 20px 0;
+ }
+ .contract-list {
+ list-style: none;
+ padding: 0;
+ margin: 10px 0;
+ }
+ .contract-item {
+ padding: 8px 0;
+ border-bottom: 1px solid #fcd34d;
+ display: flex;
+ align-items: center;
+ }
+ .contract-item:last-child {
+ border-bottom: none;
+ }
+ .contract-icon {
+ width: 20px;
+ height: 20px;
+ margin-right: 10px;
+ background-color: #f59e0b;
+ color: white;
+ border-radius: 50%;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ font-weight: bold;
+ font-size: 12px;
+ }
+ .footer {
+ margin-top: 40px;
+ padding-top: 20px;
+ border-top: 1px solid #e5e7eb;
+ color: #6b7280;
+ font-size: 14px;
+ }
+ table {
+ width: 100%;
+ border-collapse: collapse;
+ }
+ td {
+ padding: 10px;
+ border-bottom: 1px solid #e5e7eb;
+ }
+ .info-label {
+ font-weight: 600;
+ color: #4b5563;
+ min-width: 150px;
+ }
+ .info-value {
+ color: #111827;
+ }
+ </style>
+</head>
+<body>
+ <div class="container">
+ <!-- Header -->
+ <div class="header">
+ <div class="logo">{{t 'email.company_name'}}</div>
+ <h1>
+ {{#if (eq language 'ko')}}견적 요청서 재발송{{else}}Request for Quotation - Resend{{/if}}
+ <span class="resend-badge">{{sendVersion}}{{#if (eq language 'ko')}}차{{else}}th Version{{/if}}</span>
+ </h1>
+ </div>
+
+ <!-- Greeting -->
+ <p>{{#if (eq language 'ko')}}{{vendorName}} 귀하{{else}}Dear {{vendorName}}{{/if}},</p>
+
+ <!-- Warning Box -->
+ <div class="warning-box">
+ <div class="warning-title">
+ ⚠️ {{#if (eq language 'ko')}}중요 공지{{else}}Important Notice{{/if}}
+ </div>
+ <p>
+ {{#if (eq language 'ko')}}
+ 본 RFQ는 수정된 내용으로 재발송되는 것입니다. 다음 사항에 유의해 주시기 바랍니다:
+ {{else}}
+ This RFQ is being resent with updated information. Please note the following:
+ {{/if}}
+ </p>
+ <ul class="warning-list">
+ <li>
+ {{#if (eq language 'ko')}}
+ <strong>기존에 작성하신 견적 데이터는 모두 초기화되었습니다.</strong>
+ {{else}}
+ <strong>All previously submitted quotation data has been reset.</strong>
+ {{/if}}
+ </li>
+ <li>
+ {{#if (eq language 'ko')}}
+ 새로운 요구사항과 조건을 확인하시고 견적서를 다시 작성해 주세요.
+ {{else}}
+ Please review the new requirements and conditions and resubmit your quotation.
+ {{/if}}
+ </li>
+ <li>
+ {{#if (eq language 'ko')}}
+ 이전에 제출하신 견적서는 더 이상 유효하지 않습니다.
+ {{else}}
+ Previously submitted quotations are no longer valid.
+ {{/if}}
+ </li>
+ </ul>
+ </div>
+
+ <!-- RFQ Code -->
+ <div class="rfq-code">
+ {{#if (eq rfqType '일반견적')}}견적{{else if (eq rfqType 'ITB')}}ITB{{else}}RFQ{{/if}} No: {{rfqCode}}
+ </div>
+
+ <!-- Basic Contract Requirements -->
+ {{#if hasContractRequirements}}
+ <div class="contract-requirements">
+ <h4>{{#if (eq language 'ko')}}📋 기본계약 요청사항{{else}}📋 Basic Contract Requirements{{/if}}</h4>
+ <p>
+ {{#if (eq language 'ko')}}
+ 다음 계약서류의 제출이 요청됩니다:
+ {{else}}
+ The following contract documents are required:
+ {{/if}}
+ </p>
+ <ul class="contract-list">
+ {{#if contracts.nda}}
+ <li class="contract-item">
+ <span class="contract-icon">N</span>
+ {{#if (eq language 'ko')}}비밀유지계약서 (NDA){{else}}Non-Disclosure Agreement (NDA){{/if}}
+ </li>
+ {{/if}}
+ {{#if contracts.generalGtc}}
+ <li class="contract-item">
+ <span class="contract-icon">G</span>
+ {{#if (eq language 'ko')}}일반 거래약관 (General GTC){{else}}General Terms and Conditions{{/if}}
+ </li>
+ {{/if}}
+ {{#if contracts.projectGtc}}
+ <li class="contract-item">
+ <span class="contract-icon">P</span>
+ {{#if (eq language 'ko')}}
+ 프로젝트 거래약관 (Project {{projectCode}})
+ {{else}}
+ Project Terms and Conditions ({{projectCode}})
+ {{/if}}
+ </li>
+ {{/if}}
+ {{#if contracts.agreement}}
+ <li class="contract-item">
+ <span class="contract-icon">T</span>
+ {{#if (eq language 'ko')}}기술자료 제공 동의서{{else}}Technical Data Agreement{{/if}}
+ </li>
+ {{/if}}
+ </ul>
+ </div>
+ {{/if}}
+
+ <!-- RFQ Information -->
+ <div class="info-section">
+ <h3>{{#if (eq language 'ko')}}견적 요청 정보{{else}}RFQ Information{{/if}}</h3>
+ <table>
+ {{#if rfqTitle}}
+ <tr>
+ <td class="info-label">{{#if (eq language 'ko')}}견적명{{else}}Title{{/if}}</td>
+ <td class="info-value">{{rfqTitle}}</td>
+ </tr>
+ {{/if}}
+ {{#if projectCode}}
+ <tr>
+ <td class="info-label">{{#if (eq language 'ko')}}프로젝트{{else}}Project{{/if}}</td>
+ <td class="info-value">{{projectCode}} - {{projectName}}</td>
+ </tr>
+ {{/if}}
+ {{#if packageNo}}
+ <tr>
+ <td class="info-label">{{#if (eq language 'ko')}}패키지{{else}}Package{{/if}}</td>
+ <td class="info-value">{{packageNo}} - {{packageName}}</td>
+ </tr>
+ {{/if}}
+ <tr>
+ <td class="info-label">{{#if (eq language 'ko')}}품목 수{{else}}Number of Items{{/if}}</td>
+ <td class="info-value">{{prItemsCount}} {{#if (eq language 'ko')}}개{{else}}items{{/if}}</td>
+ </tr>
+ {{#if attachmentsCount}}
+ <tr>
+ <td class="info-label">{{#if (eq language 'ko')}}첨부파일{{else}}Attachments{{/if}}</td>
+ <td class="info-value">{{attachmentsCount}} {{#if (eq language 'ko')}}개{{else}}file(s){{/if}}</td>
+ </tr>
+ {{/if}}
+ </table>
+ </div>
+
+ <!-- Due Date -->
+ <div class="due-date">
+ {{#if (eq language 'ko')}}
+ ⏰ 견적 제출 마감일: {{formatDate dueDate 'YYYY년 MM월 DD일'}}
+ {{else}}
+ ⏰ Quotation Due Date: {{formatDate dueDate 'MMMM DD, YYYY'}}
+ {{/if}}
+ </div>
+
+ <!-- Custom Message -->
+ {{#if customMessage}}
+ <div class="info-section">
+ <h4>{{#if (eq language 'ko')}}추가 안내사항{{else}}Additional Information{{/if}}</h4>
+ <p>{{customMessage}}</p>
+ </div>
+ {{/if}}
+
+ <!-- Portal Access -->
+ <div style="text-align: center; margin: 30px 0;">
+ <p style="margin-bottom: 15px; font-weight: bold; color: #dc2626;">
+ {{#if (eq language 'ko')}}
+ ⚠️ 반드시 아래 버튼을 클릭하여 새로운 견적서를 작성해 주세요.
+ {{else}}
+ ⚠️ Please click the button below to submit a new quotation.
+ {{/if}}
+ </p>
+ <a href="{{portalUrl}}" class="action-button">
+ {{#if (eq language 'ko')}}견적서 다시 작성하기{{else}}Resubmit Quotation{{/if}}
+ </a>
+ </div>
+
+ <!-- Contact Information -->
+ <div class="info-section">
+ <h4>{{#if (eq language 'ko')}}담당자 정보{{else}}Contact Information{{/if}}</h4>
+ <table>
+ <tr>
+ <td class="info-label">{{#if (eq language 'ko')}}구매 담당자{{else}}Procurement Contact{{/if}}</td>
+ <td class="info-value">{{picName}}</td>
+ </tr>
+ <tr>
+ <td class="info-label">{{#if (eq language 'ko')}}이메일{{else}}Email{{/if}}</td>
+ <td class="info-value"><a href="mailto:{{picEmail}}">{{picEmail}}</a></td>
+ </tr>
+ {{#if engPicName}}
+ <tr>
+ <td class="info-label">{{#if (eq language 'ko')}}기술 담당자{{else}}Technical Contact{{/if}}</td>
+ <td class="info-value">{{engPicName}}</td>
+ </tr>
+ {{/if}}
+ </table>
+ </div>
+
+ <!-- Footer -->
+ <div class="footer">
+ <p>
+ {{#if (eq language 'ko')}}
+ 본 이메일은 RFQ 시스템에서 자동으로 발송되었습니다.
+ 회신은 위 담당자 이메일로 부탁드립니다.
+ {{else}}
+ This email was sent automatically from the RFQ system.
+ Please reply to the contact email above for any inquiries.
+ {{/if}}
+ </p>
+ <p style="margin-top: 10px;">
+ <small>
+ © 2025 {{t 'email.company_name'}}. All rights reserved. | RFQ ID: #{{responseId}} | Version: {{sendVersion}}
+ </small>
+ </p>
+ </div>
+ </div>
+</body>
+</html> \ No newline at end of file