diff options
Diffstat (limited to 'lib/mail')
| -rw-r--r-- | lib/mail/templates/custom-rfq-invitation.hbs | 332 |
1 files changed, 332 insertions, 0 deletions
diff --git a/lib/mail/templates/custom-rfq-invitation.hbs b/lib/mail/templates/custom-rfq-invitation.hbs new file mode 100644 index 00000000..9303035b --- /dev/null +++ b/lib/mail/templates/custom-rfq-invitation.hbs @@ -0,0 +1,332 @@ +<!DOCTYPE html>
+<html lang="{{language}}">
+<head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <title>RFQ 견μ μμ²</title>
+ <style>
+ body {
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
+ line-height: 1.8;
+ color: #333;
+ max-width: 900px;
+ margin: 0 auto;
+ padding: 20px;
+ background-color: #f8fafc;
+ }
+ .container {
+ background-color: white;
+ border-radius: 12px;
+ padding: 40px;
+ box-shadow: 0 4px 20px rgba(0,0,0,0.08);
+ border: 1px solid #e2e8f0;
+ }
+ .header {
+ border-bottom: 4px solid #1e40af;
+ padding-bottom: 30px;
+ margin-bottom: 40px;
+ text-align: center;
+ }
+ .company-logo {
+ font-size: 28px;
+ font-weight: bold;
+ color: #1e40af;
+ margin-bottom: 10px;
+ letter-spacing: -0.5px;
+ }
+ .greeting {
+ font-size: 18px;
+ color: #1f2937;
+ margin-bottom: 30px;
+ line-height: 1.6;
+ }
+ .rfq-info {
+ background: linear-gradient(135deg, #3b82f6 0%, #1e40af 100%);
+ color: white;
+ padding: 25px;
+ border-radius: 10px;
+ margin: 30px 0;
+ text-align: center;
+ }
+ .rfq-title {
+ font-size: 24px;
+ font-weight: bold;
+ margin-bottom: 10px;
+ }
+ .rfq-code {
+ font-size: 18px;
+ font-weight: 600;
+ opacity: 0.9;
+ }
+ .project-section, .rfq-section, .contract-section, .notice-section {
+ margin: 30px 0;
+ padding: 25px;
+ background-color: #f8fafc;
+ border-radius: 8px;
+ border-left: 5px solid #3b82f6;
+ }
+ .section-title {
+ font-size: 20px;
+ font-weight: bold;
+ color: #1e40af;
+ margin-bottom: 20px;
+ padding-bottom: 10px;
+ border-bottom: 2px solid #e2e8f0;
+ }
+ .info-grid {
+ display: grid;
+ grid-template-columns: 1fr 2fr;
+ gap: 15px;
+ margin: 20px 0;
+ }
+ .info-item {
+ display: flex;
+ margin-bottom: 12px;
+ }
+ .info-label {
+ font-weight: 600;
+ color: #4b5563;
+ min-width: 120px;
+ margin-right: 15px;
+ }
+ .info-value {
+ color: #111827;
+ flex: 1;
+ }
+ .warranty-box {
+ background-color: #f0f9ff;
+ border: 2px solid #3b82f6;
+ padding: 20px;
+ border-radius: 8px;
+ margin: 20px 0;
+ font-style: italic;
+ }
+ .requirements-list {
+ background-color: #fef3c7;
+ border-left: 4px solid #f59e0b;
+ padding: 20px;
+ margin: 20px 0;
+ border-radius: 6px;
+ }
+ .requirements-list ul {
+ margin: 0;
+ padding-left: 20px;
+ }
+ .requirements-list li {
+ margin: 8px 0;
+ line-height: 1.6;
+ }
+ .contract-badges {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 10px;
+ margin: 15px 0;
+ }
+ .contract-badge {
+ background-color: #dcfce7;
+ color: #166534;
+ padding: 8px 16px;
+ border-radius: 20px;
+ font-size: 14px;
+ font-weight: 600;
+ border: 2px solid #bbf7d0;
+ }
+ .contract-badge::before {
+ content: "π ";
+ }
+ .notice-section {
+ background-color: #fef2f2;
+ border-left-color: #ef4444;
+ border: 2px solid #fecaca;
+ }
+ .notice-list {
+ list-style: disc;
+ padding-left: 20px;
+ margin: 15px 0;
+ }
+ .notice-list li {
+ margin: 10px 0;
+ line-height: 1.6;
+ color: #7f1d1d;
+ }
+ .closing {
+ margin-top: 40px;
+ padding: 30px;
+ background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);
+ border-radius: 10px;
+ text-align: center;
+ font-style: italic;
+ color: #4b5563;
+ }
+ .highlight-arrow {
+ font-size: 18px;
+ font-weight: bold;
+ color: #dc2626;
+ text-align: center;
+ margin: 20px 0;
+ background-color: #fef2f2;
+ padding: 10px;
+ border-radius: 6px;
+ display: inline-block;
+ }
+ .footer-note {
+ margin-top: 30px;
+ padding: 20px;
+ background-color: #f9fafb;
+ border-radius: 6px;
+ font-size: 14px;
+ color: #6b7280;
+ border: 1px solid #e5e7eb;
+ }
+ </style>
+</head>
+<body>
+ <div class="container">
+ <!-- Header -->
+ <div class="header">
+ <div class="company-logo">{{t 'email.company_name'}}</div>
+ </div>
+
+ <!-- Greeting -->
+ <div class="greeting">
+ μλ
νμΈμ.<br><br>
+ κ·μ¬ μΌμ΅ λ²μ°½νμ¬μ κΈ°μν©λλ€.<br><br>
+ νμ¬λ κ·μ¬μ νμ νλ‘μ νΈμ νλͺ©μ λν κ±°λλ₯Ό μν΄<br>
+ λ€μ νλͺ©μ λν΄ κ·μ¬μ 견μ μ μΆμ μμ²νμ€λ μλ λ΄μ© λ° λΉμ¬ μμ€ν
μ μνμμ΄<br>
+ 견μ μ μμΈ λ΄μ© νμΈνμ λ€ κ²¬μ λ§κ°μΌκΉμ§ 견μ μ μΆ λ°λλλ€.<br><br>
+ κ·μ¬μ 견μ μ λ°λμ 견μ λ§κ°μΌ μ΄μ μ νμ¬λ‘ μ μΆλμ΄μΌ νλ©°,<br>
+ 견μ λ§κ°μΌ μ λ³λμ μ§μ° ν΅λ³΄ μμ΄ λ―Έμ μΆλ κ²½μ°μλ λμμμ μ μΈλ μ μμ΅λλ€.
+ </div>
+
+ <!-- RFQ Information -->
+ <div class="rfq-info">
+ <div class="rfq-title">{{rfqTitle}}</div>
+ <div class="rfq-code">RFQ No: {{rfqCode}}</div>
+ </div>
+
+ <!-- 1. νλ‘μ νΈ μ 보 -->
+ <div class="project-section">
+ <div class="section-title">1. νλ‘μ νΈ μ 보</div>
+ <div class="info-grid">
+ <div class="info-item">
+ <div class="info-label">νλ‘μ νΈμ 보</div>
+ <div class="info-value">[{{projectCode}}] {{projectName}}</div>
+ </div>
+ <div class="info-item">
+ <div class="info-label">κ³ κ°μ 보</div>
+ <div class="info-value">{{customerName}} ({{customerCode}})</div>
+ </div>
+ <div class="info-item">
+ <div class="info-label">μ μ’
</div>
+ <div class="info-value">{{shipType}} ({{shipClass}})</div>
+ </div>
+ <div class="info-item">
+ <div class="info-label">μ²μ</div>
+ <div class="info-value">{{shipCount}}μ²</div>
+ </div>
+ <div class="info-item">
+ <div class="info-label">μ κΈ</div>
+ <div class="info-value">{{projectFlag}}</div>
+ </div>
+ <div class="info-item">
+ <div class="info-label">κ΅μ </div>
+ <div class="info-value">{{flag}}</div>
+ </div>
+ <div class="info-item">
+ <div class="info-label">κ³μ½λ°ν¨μΌ</div>
+ <div class="info-value">{{contractStartDate}} - {{contractEndDate}}</div>
+ </div>
+ <div class="info-item">
+ <div class="info-label">Key Event</div>
+ <div class="info-value">(S/C) {{scDate}} - (D/L) {{dlDate}}</div>
+ </div>
+ </div>
+ </div>
+
+ <!-- 2. 견μ μμ² μ 보 -->
+ <div class="rfq-section">
+ <div class="section-title">2. 견μ μμ² μ 보</div>
+ <div class="info-grid">
+ <div class="info-item">
+ <div class="info-label">PKG μ 보</div>
+ <div class="info-value">[{{packageNo}}] {{packageName}}</div>
+ </div>
+ <div class="info-item">
+ <div class="info-label">μμ¬κ·Έλ£Ή μ 보</div>
+ <div class="info-value">[{{materialGroup}}] {{materialGroupDesc}}</div>
+ </div>
+ <div class="info-item">
+ <div class="info-label">νλͺ©</div>
+ <div class="info-value">{{#if itemCode}}{{itemCode}} - {{/if}}{{itemName}}</div>
+ </div>
+ <div class="info-item">
+ <div class="info-label">νλͺ© μ</div>
+ <div class="info-value">{{itemCount}}κ°</div>
+ </div>
+ <div class="info-item">
+ <div class="info-label">PR λ²νΈ</div>
+ <div class="info-value">{{#if prNumber}}{{prNumber}}{{else}}ν΄λΉμμ{{/if}}</div>
+ </div>
+ <div class="info-item">
+ <div class="info-label">PR λ°νμΌ</div>
+ <div class="info-value">{{#if prIssueDate}}{{prIssueDate}}{{else}}ν΄λΉμμ{{/if}}</div>
+ </div>
+ </div>
+
+ <div class="warranty-box">
+ <strong>Warranty</strong> {{warrantyDescription}}<br>
+ {{repairDescription}}<br>
+ {{totalWarrantyDescription}}
+ </div>
+
+ <div class="requirements-list">
+ <strong>νμμ μΆμ 보</strong>
+ <ul>
+ {{#each requiredDocuments}}
+ <li>{{this}}</li>
+ {{/each}}
+ </ul>
+ </div>
+ </div>
+
+ <!-- 3. νμ κΈ°λ³Έκ³μ½ -->
+ <div class="contract-section">
+ <div class="section-title">3. νμ κΈ°λ³Έκ³μ½</div>
+ <div class="contract-badges">
+ {{#if contractRequirements.hasNda}}<span class="contract-badge">{{contractRequirements.ndaDescription}}</span>{{/if}}
+ {{#if contractRequirements.hasGeneralGtc}}<span class="contract-badge">{{contractRequirements.generalGtcDescription}}</span>{{/if}}
+ {{#if contractRequirements.hasProjectGtc}}<span class="contract-badge">{{contractRequirements.projectGtcDescription}}</span>{{/if}}
+ {{#if contractRequirements.hasAgreement}}<span class="contract-badge">{{contractRequirements.agreementDescription}}</span>{{/if}}
+ </div>
+
+ </div>
+
+ <!-- 4. μ μμ¬ν -->
+ <div class="notice-section">
+ <div class="section-title">4. μ μμ¬ν</div>
+ <ul class="notice-list">
+ <li>λ°μ£Όμλ μ΅μ κ° κ²¬μ μ μ μΆνμ§ μμ νλ ₯μ¬λ₯Ό μ μ ν μ μμΌλ©°, 견μ μ μΌλΆ λλ μ λΆλ₯Ό μΉμΈνκ±°λ κ±°μ ν μ μκ³ κ±°λΆνλ κ²½μ° λ³λ ν΅λ³΄ν μλ¬΄κ° μλ€. λν, μ΅μ’
νλ½ μ¬μ€μ ν΅λ³΄ν μ무λ μλ€.</li>
+ <li>νλ ₯μ¬λ 견μ μ μΆμ μν΄ μμλλ λΉμ© μΌμ²΄λ₯Ό λΆλ΄νλ©°, μ΅μ’
κ³μ½μλ‘ μ μ λμ§ λͺ»ν κ²½μ°μλ λ°μ£Όμμκ² λ³΄μμ μ²κ΅¬ν μ μλ€. λν, μ μ£Ό μΉμΈμ‘°κ±΄μΌλ‘ μ μ λ νλ ₯μ¬λ λ°λμ μ μ£Ό μΉμΈμ λν ν μμ
μ μ°©μνμ¬μΌ νλ©°, μΉμΈ κ±°μ μ κ³μ½μ λ―Έ 체결, ν΄μ λ μ μκ³ μ΄ κ²½μ° νλ ₯μ¬λ μ΄λ ν 보μλ μ²κ΅¬ν μ μλ€.</li>
+ </ul>
+ </div>
+
+ <!-- Closing -->
+ <div class="closing">
+ μ΄λ² κΈ°νλ₯Ό ν΅νμ¬ κ·μ¬μμ νμ
μΌλ‘ λ€κ°μ¬ λ―Έλ μ‘°μ /ν΄μμ°μ
μμ₯μμ ν¨κ» μ±μ₯ν΄ λκ° μ μκΈ°λ₯Ό κΈ°λν©λλ€.
+ </div>
+
+ <!-- Footer Note -->
+ <div class="footer-note">
+ <p><strong>π§ λ°μ‘ μ 보:</strong></p>
+ <p>μμ : {{vendorName}} ({{vendorCountry}})</p>
+ <p>λ°μ : {{companyName}} {{picName}} νλ‘ {{picTeam}}</p>
+ <p>견μ λ§κ°μΌ: {{formattedDueDate}}</p>
+ <p>λ°μ‘μΌμ: {{formatDate now 'YYYY-MM-DD HH:mm:ss'}}</p>
+ <p>μμ€ν
: {{systemName}}</p>
+ {{#if hasAttachments}}
+ <p>첨λΆνμΌ: {{attachmentsCount}}κ° ν¬ν¨</p>
+ {{/if}}
+ </div>
+ </div>
+</body>
+</html>
|
