diff --git a/app/config.yml b/app/config.yml
index 392fa25..e450932 100644
--- a/app/config.yml
+++ b/app/config.yml
@@ -131,6 +131,12 @@ charge-to:
vat-id: "GB123456789"
reg-no: "01234567"
currency: GBP
+ pay-account-holder: Example Non-Profit Organisation
+ pay-account-no: "GB29 NWBK 6016 1331 9268 19"
+ pay-bic: "NWBKGB2L"
+ pay-bank-address1: "NatWest, 1 Princes Street"
+ pay-bank-address2: "London EC2R 8PB"
+ pay-ref: ""
# ── Project codes ──────────────────────────────────────────────────────────────
project-codes:
diff --git a/app/index.html b/app/index.html
index 9ebd3a4..7d9a10e 100644
--- a/app/index.html
+++ b/app/index.html
@@ -296,9 +296,10 @@
.pay-by-row label { font-size: 12px; color: var(--text-muted); white-space: nowrap; }
#paybydisp { font-size: 13px; font-weight: 600; color: var(--text); }
- /* ── Locked charge-to fields ────────────────────────────────────────────── */
+ /* ── Locked charge-to / bank fields ─────────────────────────────────────── */
#ct-fields.locked input,
- #ct-fields.locked select {
+ #ct-fields.locked select,
+ #bank-section.locked input {
background: #f8f9fa;
color: var(--text-muted);
border-color: var(--border-light);
@@ -562,28 +563,30 @@ function buildForm() {
${h(td("payment"))}
${pTerm > 0 ? `
${h(td("payment-terms"))}: ${pTerm} ${h(td("payment-days"))}${pPayBy ? ` — ${h(td("pay-by"))}: ${h(pPayBy)}` : ""}
` : ""}
-
+ ${hasBank ? `
${pAcct ? `${h(td("account-holder"))}${h(pAcct)}` : ""}
${pIban ? `${h(td("account-no"))}${h(pIban)}` : ""}
${pBic ? `${h(td("bank-bic"))}${h(pBic)}` : ""}
${pBadr1 || pBadr2 ? `${h(td("bank-address"))}${[pBadr1,pBadr2].filter(Boolean).map(l=>h(l)).join("
")}` : ""}
- ${pRef ? `
${h(td("payment-ref"))}: ${h(pRef)}
` : ""}
+ ${pRef ? `
${h(td("payment-ref"))}: ${h(pRef)}
` : ""}` : ""}
` : ""}`;
}
@@ -1421,7 +1456,7 @@ function buildPDF() {
y += 9;
// ── PAYMENT DETAILS ───────────────────────────────────────────────────────
- if (hasPayment) {
+ if (pTerm > 0 || hasBank) {
y += 8;
if (y + 8 > PH - 15) { doc.addPage(); y = MT; }
dc(209,213,219); doc.setLineWidth(0.4);
@@ -1434,26 +1469,28 @@ function buildPDF() {
fn(8.5); tc(17,24,39); tL(termsStr, ML, y); y += 5;
}
- const LBL = 50;
- const payRows = [
- pAcct ? [td("account-holder"), pAcct] : null,
- pIban ? [td("account-no"), pIban] : null,
- pBic ? [td("bank-bic"), pBic] : null,
- (pBadr1 || pBadr2) ? [td("bank-address"), [pBadr1,pBadr2].filter(Boolean).join(", ")] : null,
- ].filter(Boolean);
+ if (hasBank) {
+ const LBL = 50;
+ const payRows = [
+ pAcct ? [td("account-holder"), pAcct] : null,
+ pIban ? [td("account-no"), pIban] : null,
+ pBic ? [td("bank-bic"), pBic] : null,
+ (pBadr1 || pBadr2) ? [td("bank-address"), [pBadr1,pBadr2].filter(Boolean).join(", ")] : null,
+ ].filter(Boolean);
- payRows.forEach(([lbl, val]) => {
- if (y + 5 > PH - 10) { doc.addPage(); y = MT; }
- fn(8); tc(107,114,128); tL(lbl + ":", ML, y);
- fn(8.5); tc(17,24,39); tL(val, ML + LBL, y);
- y += 4.5;
- });
+ payRows.forEach(([lbl, val]) => {
+ if (y + 5 > PH - 10) { doc.addPage(); y = MT; }
+ fn(8); tc(107,114,128); tL(lbl + ":", ML, y);
+ fn(8.5); tc(17,24,39); tL(val, ML + LBL, y);
+ y += 4.5;
+ });
- if (pRef) {
- y += 1;
- if (y + 6 > PH - 10) { doc.addPage(); y = MT; }
- fn(8); tc(107,114,128); tL(td("payment-ref") + ":", ML, y);
- fb(9); tc(17,24,39); tL(pRef, ML + LBL, y);
+ if (pRef) {
+ y += 1;
+ if (y + 6 > PH - 10) { doc.addPage(); y = MT; }
+ fn(8); tc(107,114,128); tL(td("payment-ref") + ":", ML, y);
+ fb(9); tc(17,24,39); tL(pRef, ML + LBL, y);
+ }
}
}