diff --git a/app/index.html b/app/index.html
index 50a7504..d4b17e3 100644
--- a/app/index.html
+++ b/app/index.html
@@ -252,9 +252,9 @@
.d-bill .bt-lbl { font-size: 9px; font-weight: 700; text-transform: uppercase; letter-spacing: 1.2px; color: #6b7280; margin-bottom: 5px; }
.d-bill .bt-name { font-size: 13px; font-weight: 700; color: var(--navy); margin-bottom: 3px; }
.d-bill p { font-size: 10.5px; color: #4b5563; margin-bottom: 2px; }
- .d-bill .bt-meta { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 6px; }
- .d-bill .bt-meta span { font-size: 10px; color: #4b5563; }
- .d-bill .bt-meta strong { color: #111827; }
+ .bt-meta { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 6px; }
+ .bt-meta span { font-size: 10px; color: #4b5563; }
+ .bt-meta strong { color: #111827; }
.d-inv-meta { text-align: right; }
.d-inv-meta h1 { font-size: 28px; font-weight: 800; letter-spacing: 5px; color: var(--navy); margin-bottom: 14px; }
@@ -505,6 +505,8 @@ function buildForm() {
+
+
${t("invoice-details-section")}
@@ -944,7 +946,7 @@ function relabel() {
"sec-ct":"charge-to","sec-lines":"invoice-lines",
"lbl-sn":"sender-name","lbl-sa1":"sender-address1","lbl-sa2":"sender-address2",
"lbl-sa3":"sender-address3","lbl-sa4":"sender-address4","lbl-sc":"sender-country",
- "lbl-sp":"sender-phone","lbl-se":"sender-email",
+ "lbl-sp":"sender-phone","lbl-se":"sender-email","lbl-stax":"vat-id",
"lbl-idate":"invoice-date","lbl-icur":"invoice-currency","lbl-pcode":"project-code","lbl-ino":"invoice-no",
"lbl-ctn":"charge-to-name","lbl-ca1":"charge-to-address1","lbl-ca2":"charge-to-address2",
"lbl-ca3":"charge-to-address3","lbl-ca4":"charge-to-address4","lbl-cc":"charge-to-country",
@@ -1034,7 +1036,7 @@ function gatherData(renderLang) {
const sName = g("sn");
const sAddr = [g("sa1"),g("sa2"),g("sa3"),g("sa4")].filter(Boolean);
const sCntry = COUNTRY_MAP[g("sc")] || "";
- const sPh = g("sp"), sEm = g("se");
+ const sPh = g("sp"), sEm = g("se"), sTax = g("stax");
const iDate = g("idate");
const pCode = g("pcode") === "__other__" ? g("pcode-other") : g("pcode");
@@ -1110,7 +1112,7 @@ function gatherData(renderLang) {
const paid = pn(document.getElementById("paid-inp")?.value);
const toPay = sub + totalTax - paid;
- return { dl, td, sName, sAddr, sCntry, sPh, sEm, iDate, pCode, iNo, iCur,
+ return { dl, td, sName, sAddr, sCntry, sPh, sEm, sTax, iDate, pCode, iNo, iCur,
ctName, ctAddr, ctCntry, ctPh, ctEm, ctVat, ctReg,
pTerm, pPayBy, pAcct, pIban, pBic, pBadr1, pBadr2, pRef, hasBank, hidePaymentOut,
rows, sub, taxes, totalTax, paid, toPay };
@@ -1118,7 +1120,7 @@ function gatherData(renderLang) {
// ── Build HTML preview ────────────────────────────────────────────────────────
function buildPreviewHTML() {
- const { td, sName, sAddr, sCntry, sPh, sEm, iDate, pCode, iNo, iCur,
+ const { td, sName, sAddr, sCntry, sPh, sEm, sTax, iDate, pCode, iNo, iCur,
ctName, ctAddr, ctCntry, ctPh, ctEm, ctVat, ctReg,
pTerm, pPayBy, pAcct, pIban, pBic, pBadr1, pBadr2, pRef, hasBank, hidePaymentOut,
rows, sub, taxes, paid, toPay } = gatherData();
@@ -1146,8 +1148,11 @@ function buildPreviewHTML() {
${sName ? `
${h(sName)}
` : ""}
${sAddr.map(a=>`
${h(a)}
`).join("")}
${sCntry ? `
${h(sCntry)}
` : ""}
- ${sPh ? `
${h(td("sender-phone"))}: ${h(sPh)}
` : ""}
- ${sEm ? `
${h(td("sender-email"))}: ${h(sEm)}
` : ""}
+
+ ${sPh ? `${h(td("sender-phone"))}: ${h(sPh)}` : ""}
+ ${sEm ? `${h(td("sender-email"))}: ${h(sEm)}` : ""}
+ ${sTax ? `${h(td("vat-id"))}: ${h(sTax)}` : ""}
+
${h(td("invoice"))}
@@ -1234,7 +1239,7 @@ function buildPDF() {
const tR = (s,x,y) => doc.text(String(s??""), x, y, {align:"right"});
const sp = (s,w) => doc.splitTextToSize(String(s??""), w);
- const { dl, td, sName, sAddr, sCntry, sPh, sEm, iDate, pCode, iNo, iCur,
+ const { dl, td, sName, sAddr, sCntry, sPh, sEm, sTax, iDate, pCode, iNo, iCur,
ctName, ctAddr, ctCntry, ctPh, ctEm, ctVat, ctReg,
pTerm, pPayBy, pAcct, pIban, pBic, pBadr1, pBadr2, pRef, hasBank, hidePaymentOut,
rows, sub, taxes, paid, toPay } = gatherData();
@@ -1253,10 +1258,11 @@ function buildPDF() {
if (sName) { fb(13); tc(30,45,69); tL(sName, ML, ly); ly += 6; }
fn(8.5); tc(75,85,99);
[...sAddr, sCntry].filter(Boolean).forEach(l => { tL(l, ML, ly); ly += 4.5; });
- if (sPh || sEm) {
+ if (sPh || sEm || sTax) {
const parts = [];
- if (sPh) parts.push(`${td("sender-phone")}: ${sPh}`);
- if (sEm) parts.push(`${td("sender-email")}: ${sEm}`);
+ if (sPh) parts.push(`${td("sender-phone")}: ${sPh}`);
+ if (sEm) parts.push(`${td("sender-email")}: ${sEm}`);
+ if (sTax) parts.push(`${td("vat-id")}: ${sTax}`);
fn(8); tc(107,114,128); tL(parts.join(" "), ML, ly); ly += 5;
}