fix: PDF via JSON-RPC render, full-width table with nowrap columns

PDF download:
- Drop HTTP Basic Auth approach (Odoo's /report/pdf/ endpoint rejects it)
- Call ir.actions.report.render_qweb_pdf() via the already-working
  authenticated JSON-RPC connection; returns base64-encoded PDF bytes
- Validate base64_decode result starts with %PDF before serving
- Descriptive Spanish error messages for each failure point

Table layout:
- Remove table-layout:fixed which was squashing columns into WC's
  ~650px content column
- Add min-width:820px so table never compresses below readable width
  (scrolls horizontally on small screens instead)
- .woodoo-invoices breaks out 100px into page margins on desktop
  (margin: 0 -100px; width: calc(100% + 200px)) for full-width feel
- Reverts to 100% width below 960px
- All key columns use white-space:nowrap + min-width so invoice
  reference, dates and amounts never wrap to multiple lines

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Malin
2026-04-01 17:34:34 +02:00
parent 02c8fee174
commit 84e6195f3a
2 changed files with 50 additions and 35 deletions

View File

@@ -50,37 +50,55 @@
.woodoo-badge--blue { background: #dbeafe; color: #1e40af; }
.woodoo-badge--grey { background: #f3f4f6; color: #6b7280; }
/* ── Invoice table wrapper: break out of the narrow WC column ─────── */
.woodoo-invoices {
/* Push 100px into the page margin on each side on wide screens */
margin-left: -100px;
margin-right: -100px;
width: calc(100% + 200px);
}
@media (max-width: 960px) {
.woodoo-invoices {
margin-left: 0;
margin-right: 0;
width: 100%;
}
}
/* ── Table ───────────────────────────────────────────────── */
.woodoo-table-wrap { overflow-x: auto; }
.woodoo-table-wrap {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.woodoo-table {
width: 100%;
min-width: 820px; /* never compress below this — scroll horizontally instead */
border-collapse: collapse;
font-size: .875rem;
table-layout: fixed; /* fixed layout so column widths are respected */
/* No table-layout:fixed — let the browser size columns to content */
}
.woodoo-table th,
.woodoo-table td {
padding: 10px 14px;
padding: 10px 16px;
border-bottom: 1px solid #e5e7eb;
text-align: left;
vertical-align: middle;
overflow: hidden;
}
.woodoo-table th { background: #f9fafb; font-weight: 600; }
.woodoo-table th { background: #f9fafb; font-weight: 600; white-space: nowrap; }
.woodoo-table tr:last-child td { border-bottom: none; }
.woodoo-table .woodoo-amount {
text-align: right;
font-variant-numeric: tabular-nums;
white-space: nowrap;
}
/* Invoice-specific column widths */
.woodoo-invoices-table .col-number { width: 180px; white-space: nowrap; font-weight: 600; }
.woodoo-invoices-table .col-date { width: 100px; white-space: nowrap; }
.woodoo-invoices-table .col-due { width: 130px; }
.woodoo-invoices-table .col-amount { width: 110px; text-align: right; }
.woodoo-invoices-table .col-balance { width: 130px; text-align: right; }
.woodoo-invoices-table .col-status { width: 100px; white-space: nowrap; }
.woodoo-invoices-table .col-download{ width: 70px; text-align: center; }
/* Force key invoice columns to never wrap */
.woodoo-invoices-table .col-number { white-space: nowrap; font-weight: 600; min-width: 160px; }
.woodoo-invoices-table .col-date { white-space: nowrap; min-width: 90px; }
.woodoo-invoices-table .col-due { white-space: nowrap; min-width: 110px; }
.woodoo-invoices-table .col-amount { white-space: nowrap; min-width: 100px; text-align: right; }
.woodoo-invoices-table .col-balance { white-space: nowrap; min-width: 120px; text-align: right; }
.woodoo-invoices-table .col-status { white-space: nowrap; min-width: 90px; }
.woodoo-invoices-table .col-download{ min-width: 60px; text-align: center; }
/* Utility: never wrap content in a cell */
.woodoo-nowrap { white-space: nowrap; }