This repository contains two Odoo 17 add-ons for branded PDF document generation:
wesprime_quote_reportwesprime_invoice_report
Both modules are built as lightweight QWeb reporting add-ons. They do not add custom Python business logic. Their main purpose is to replace standard Odoo printouts with presentation-style PDFs that match Wesprime branding.
| Module | Purpose | Target Model | Dependency | Print Action |
|---|---|---|---|---|
wesprime_quote_report |
Branded quotation PDF | sale.order |
sale |
Wesprime Quotation |
wesprime_invoice_report |
Branded tax invoice PDF | account.move |
account |
Wesprime Invoice |
This module adds a custom quotation report for Sales Orders.
It includes:
- A full-width branded header image
- A quotation title and summary section
- Client details pulled from the partner record
- A service summary table from quotation lines
- Amount in words
- Totals section
- Fixed terms and conditions
- Banking details and signature blocks
- A branded footer using company information
This module adds a custom tax invoice report for Customer Invoices.
It includes:
- A full-width branded header image
- A
Tax Invoicetitle and invoice summary section - Billing details pulled from the invoice partner
- An item table with
Description,Quantity,Unit Price, andSubtotal - Amount in words using
currency_id.amount_to_text(amount_total) - Totals section
- Banking details and signature blocks
- A branded footer using company information
The invoice module was created by adapting the quotation report structure to account.move.
| Quote Logic | Invoice Logic |
|---|---|
sale.order |
account.move |
order_line |
invoice_line_ids |
date_order |
invoice_date |
validity_date |
invoice_date_due |
user_id |
invoice_user_id |
The invoice report also filters out display_type lines so sections and notes are skipped in the main pricing table.
| Path | Purpose |
|---|---|
wesprime_quote_report/__manifest__.py |
Quote module metadata |
wesprime_quote_report/data/paperformat.xml |
Quote paper format |
wesprime_quote_report/report/quotation_report.xml |
Quote QWeb template |
wesprime_quote_report/report/report_action.xml |
Quote print action |
wesprime_quote_report/static/src/img/ |
Quote header and signature images |
wesprime_invoice_report/__manifest__.py |
Invoice module metadata |
wesprime_invoice_report/data/paperformat.xml |
Invoice paper format |
wesprime_invoice_report/report/invoice_report.xml |
Invoice QWeb template |
wesprime_invoice_report/report/report_action.xml |
Invoice print action |
wesprime_invoice_report/static/src/img/ |
Invoice header and signature images |
Both modules use a modern sky blue branding palette:
- Primary Sky Blue: #38BDF8
- Light Background Blue: #E0F2FE
- Professional Dark Blue Text: #0369A1
Signatures are displayed as horizontal enterprise-style images with controlled sizing (max-width: 150px, max-height: 52px) for optimal PDF rendering.
Both modules follow the same overall pattern:
- Odoo 17 QWeb PDF reports
- Dedicated A4 paper format
- Hardcoded report language:
en_US - Static header and signature image assets
- Company-based footer details
- No Python models, wizards, or computed helpers
Both modules use the same paper format settings:
- Format:
A4 - Orientation:
Portrait - Top margin:
8 - Bottom margin:
10 - Left margin:
7 - Right margin:
7 - DPI:
96 - Shrinking disabled:
True
- Place both module folders inside your Odoo
addons_path. - Restart the Odoo server.
- Update the Apps list.
- Install either or both modules:
Wesprime Quote ReportWesprime Invoice Report
- Open a Sales Order or Quotation.
- Use the
Printmenu. - Select
Wesprime Quotation.
- Open a Customer Invoice.
- Use the
Printmenu. - Select
Wesprime Invoice.
These details are currently hardcoded in one or both templates:
- Report language is fixed to
en_US - Subtitle text under the main heading
- Introductory note text
- Terms and conditions in the quotation report
- Banking details including bank name and account number
- QR area is only a placeholder
- Prepared and approved signatures are static PNG files
- Footer tagline text
This means the modules are easy to deploy, but some commercial details should be moved into configurable Odoo fields if the reports need to vary by company, user, or document type.
wesprime_quote_reportkeeps the original presentation-heavy custom styling approach.wesprime_invoice_reportfollows the same visual direction but is organized using a cleaner Bootstrap-friendly layout for Odoo 17.- The invoice module reuses the same branding assets so both printouts look consistent.
If you want to extend the reports later, these are the main files to change:
- Edit quote layout in
wesprime_quote_report/report/quotation_report.xml - Edit invoice layout in
wesprime_invoice_report/report/invoice_report.xml - Change margins or page setup in each module’s
data/paperformat.xml - Rename print actions in each module’s
report/report_action.xml - Replace header and signature images under each module’s
static/src/img/
- Split the larger QWeb templates into smaller reusable template blocks if the reports continue to grow
- Move banking details into company settings or a related configuration model
- Replace static signatures with configurable company or employee signature fields
- Add real QR code generation if approval or payment workflows require it
- Make static legal or commercial text configurable from Odoo
- Add multilingual behavior instead of forcing
en_US
This repository now contains a small, focused reporting bundle for Odoo 17:
wesprime_quote_reportfor branded quotations onsale.orderwesprime_invoice_reportfor branded invoices onaccount.move
Both modules are straightforward XML-based add-ons, easy to maintain, and ready for further branding or functional enhancements.