v1.7.0: fix offer created_at override, invoice PDF translations, remove has_order filter

- Add created_at to offer create/update schemas so user-selected date is stored instead of always defaulting to now()
- Translate payment method in invoice PDF based on language (Příkazem → Bank transfer, etc.)
- Add order_date and cnb_rate translation keys, replace hardcoded inline strings
- Remove duplicate has_order filter from offers backend route

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
BOHA
2026-05-28 13:35:36 +02:00
parent 1f5885de84
commit 2254a13ad0
6 changed files with 40 additions and 22 deletions

View File

@@ -168,6 +168,24 @@ function buildAddressLines(
/* ── Translations ────────────────────────────────────────────────── */
const paymentMethodMap: Record<string, Record<string, string>> = {
cs: {
"Bank transfer": "Příkazem",
Cash: "Hotově",
"Cash on delivery": "Dobírka",
},
en: {
Příkazem: "Bank transfer",
Hotově: "Cash",
Dobírka: "Cash on delivery",
},
};
function translatePaymentMethod(value: string | null, lang: string): string {
if (!value) return "";
return paymentMethodMap[lang]?.[value] || value;
}
const translations: Record<string, Record<string, string>> = {
cs: {
title: "Faktura",
@@ -181,6 +199,7 @@ const translations: Record<string, Record<string, string>> = {
var_symbol: "Variabilní s.:",
const_symbol: "Konstantní s.:",
order_no: "Objednávka č.:",
order_date: "Objednávka ze dne:",
issue_date: "Datum vystavení:",
due_date: "Datum splatnosti:",
tax_date: "Datum uskutečnění plnění:",
@@ -213,6 +232,7 @@ const translations: Record<string, Record<string, string>> = {
stamp: "Razítko:",
ico: "IČ: ",
dic: "DIČ: ",
cnb_rate: "Přepočet kurzem ČNB ke dni",
},
en: {
title: "Invoice",
@@ -226,6 +246,7 @@ const translations: Record<string, Record<string, string>> = {
var_symbol: "Variable symbol:",
const_symbol: "Constant symbol:",
order_no: "Order No.:",
order_date: "Order date:",
issue_date: "Issue date:",
due_date: "Due date:",
tax_date: "Tax point date:",
@@ -257,6 +278,7 @@ const translations: Record<string, Record<string, string>> = {
stamp: "Stamp:",
ico: "Reg. No.: ",
dic: "Tax ID: ",
cnb_rate: "CNB exchange rate as of",
},
};
@@ -923,9 +945,9 @@ ${indentCSS}
<div class="info-row"><span class="lbl">${escapeHtml(t.issue_date)}</span> <span class="val">${escapeHtml(formatDate(invoice.issue_date))}</span></div>
<div class="info-row"><span class="lbl">${escapeHtml(t.due_date)}</span> <span class="val">${escapeHtml(formatDate(invoice.due_date))}</span></div>
<div class="info-row"><span class="lbl">${escapeHtml(t.tax_date)}</span> <span class="val">${escapeHtml(formatDate(invoice.tax_date))}</span></div>
<div class="info-row"><span class="lbl">${escapeHtml(t.payment_method)}</span> <span class="val">${escapeHtml(invoice.payment_method)}</span></div>
${orderNumber ? `<div class="info-row"><span class="lbl">${lang === "cs" ? "Objednávka č.:" : "Order no.:"}</span> <span class="val">${orderNumber}</span></div>` : ""}
${orderDate ? `<div class="info-row"><span class="lbl">${lang === "cs" ? "Objednávka ze dne:" : "Order date:"}</span> <span class="val">${escapeHtml(orderDate)}</span></div>` : ""}
<div class="info-row"><span class="lbl">${escapeHtml(t.payment_method)}</span> <span class="val">${escapeHtml(translatePaymentMethod(invoice.payment_method, lang))}</span></div>
${orderNumber ? `<div class="info-row"><span class="lbl">${escapeHtml(t.order_no)}</span> <span class="val">${orderNumber}</span></div>` : ""}
${orderDate ? `<div class="info-row"><span class="lbl">${escapeHtml(t.order_date)}</span> <span class="val">${escapeHtml(orderDate)}</span></div>` : ""}
</td>
</tr>
</table>
@@ -1008,7 +1030,7 @@ ${indentCSS}
? `<tfoot>
<tr>
<td colspan="4" style="font-size:0.7em; color:#666; padding-top:6px; text-align:left;">
Přepočet kurzem ČNB ke dni ${formatDate(invoice.issue_date)}: 1 ${escapeHtml(currency)} = ${cnbRate.toFixed(3).replace(".", ",")} CZK
${escapeHtml(t.cnb_rate)} ${formatDate(invoice.issue_date)}: 1 ${escapeHtml(currency)} = ${cnbRate.toFixed(3).replace(".", ",")} CZK
</td>
</tr>
</tfoot>`