Promotions

  • RecurringEvent

    RecurringEvent manages event recurrence within Dolibarr, facilitating the automatic generation of recurring event series.

    75.00 €  (150€)
  • Fast Product - CODE 42

    Allows you to create products or services directly in the Sales Proposals, Sales Orders and Invoices interface.

    15.00 €  (30€)

New products

  • LibEuFin Connector

    LibEuFin Connector is a Dolibarr module for importing, matching, and staging LibEuFin/Nexus bank transactions.

    FREE

EasySubtotals - Titles, Subtotals & Free-Text Blocks in Proposals, Orders and Invoices

mp23914d20260422083150

Add hierarchical titles, automatic subtotals and free-text blocks to your proposals, orders and invoices. Per-block totals recomputed on screen, in PDF and in custom ODT templates.

180.00 €
Excl. tax

  • Author EasySoft Tech SL
  • Module version 1.3.11
  • Release date 04/22/2026
  • Access to download and updates 2 years
  • How to contact support info@easysoft.es
  • Compatibility Dolibarr V16+   -   PHP7.4 - 8.3
  • Last update 05/21/2026 01:57 PM

More info...

EasySubtotals for Dolibarr — Block-Structured Proposals, Orders and Invoices

EasySubtotals is the Dolibarr module that turns flat line lists into professionally structured commercial documents. Insert titles to group items, close every block with an automatic subtotal, and leverage reusable free-text blocks for clauses, notes or narrative separators.

Works on proposals, orders, and customer and supplier invoices — including recurring invoices and situation invoices. Subtotals render correctly in the standard PDF templates (Crabe, Einstein, Azur) and — the most requested feature — also in custom ODT templates via ready-to-use tags.

🎯 The problem it solves

Long invoices and proposals with dozens of product/service lines are hard to read for your customers. Without grouping, every line looks equally important, and the customer loses context of what belongs to what. If you offer multiple sections (labour, licences, hardware, maintenance), the result is a wall of text where line-by-line negotiation is impossible.

EasySubtotals splits the document into visual blocks with a title and a subtotal. Your customer finally sees a document that is readable, negotiable and professional.

🧩 Comparison vs. the stock Dolibarr subtotal

Feature Stock Dolibarr subtotal 🚀 EasySubtotals
Titles in line list ✅ (since v23) ✅ (since v16)
Automatic per-block subtotals
Hierarchical levels (title, subtitle, sub-subtitle)
Reusable free-text blocks (dictionary)
Custom ODT template integration ✅ (dedicated tags)
PDF override on Crabe / Einstein / Azur
"NC" flag to exclude blocks from the total
Per-line page break
Block cascade when invoicing multiple orders
One-click block duplication
Insert a new line directly under a chosen title
Works on situation invoices
Works on recurring invoices
Multicompany / Multisociété
Dolibarr compatibility V23+ V16+ up to V23+

📝 Block types you can insert

  • 🟦 Title — opens a block and groups the following lines. Up to 9 hierarchical levels (title, subtitle, sub-subtitle...).
  • 💰 Subtotal — closes a block and shows the accumulated total automatically (net, VAT and gross).
  • 📝 Free text — narrative paragraph with zero impact on calculations. Perfect for clauses, payment terms, customer notes or separators.
  • 📐 Reusable snippets — build a dictionary of prebuilt texts (terms, warranties, intros) and reuse them from a dropdown.

🎨 Custom ODT template integration

The most requested feature of the module. EasySubtotals plugs into Dolibarr's standard ODT generation pipeline and exposes a set of row-type-aware placeholders you can use inside the [!-- BEGIN row.lines --] ... [!-- END row.lines --] segment of your template:

Tag Meaning
{line_modsubtotal_title} True when the line is a block title
{line_modsubtotal_total} True when the line is a subtotal
{line_not_modsubtotal} True on regular product/service lines
{line_price_ht} / {line_price_vat} / {line_price_ttc} Auto-filled with the block total on subtotal lines; empty on titles
{line_qty} / {line_up} / {line_vatrate} Blanked on titles and subtotals so those rows stay clean

Dolibarr's ODT engine (Odtphp) does not evaluate conditionals, so the hook fills the placeholders themselves with row-type-aware values. One flat template row covers products, titles and subtotals:

[!-- BEGIN row.lines --]
{line_desc}    {line_qty}    {line_up}    {line_price_ht}
[!-- END row.lines --]

On title rows {line_desc} arrives prefixed as "▶ Services"; on subtotals as "Subtotal: Services", with {line_price_ht} already computed as the block total. The admin tab ODT Variables lists every available placeholder with concrete examples.

⚙️ Supported Dolibarr elements

  • Proposals (customer and supplier)
  • Orders (customer and supplier)
  • Invoices (customer and supplier)
  • Recurring invoices
  • Situation invoices (automatic handling of situation_percent)

🛠️ Configuration options

  • 🔢 Hierarchical levels (nested titles up to 9 levels)
  • Allow add / edit / delete / duplicate blocks independently
  • 🧱 Reusable block templates (v1.1) — design a template with title + lines + subtotal and expand it in one click
  • 💸 Block discount (v1.2) — informational line with the percentage in the label, no effect on calculations
  • 🟡 Optional blocks (v1.2) — flag a block so it does not add to the grand total (great for alternative scenarios in quotes)
  • 🔢 Auto-numbered titles (v1.2) — automatic numbering at render time
  • 📄 Compact PDF (v1.2) — titles and subtotals only, perfect for executive summaries
  • 📊 PDF executive summary (v1.1) — recap table above the main lines table
  • 🎨 Configurable PDF colours per title level and subtotals
  • 🖼️ Module dashboard with KPIs and quick links
  • 🔌 REST API — endpoints to query blocks and insert templates
  • 🎨 PDF style for titles and subtotals (bold, italic, underline)
  • 📄 Per-line page break
  • 🔀 Order → invoice cascade: one title + subtotal block per invoiced order (with __REFORDER__ and __REFCUSTOMER__ placeholders)
  • "NC" flag (Not Counted): excludes a block from the grand total
  • 📚 Free-text dictionary managed from Admin → Dictionaries

📦 Common use cases

  • 🏗️ Construction and trades: proposals with blocks per phase (foundations, structure, finishes) and a subtotal per phase.
  • 💻 Software / IT consulting: separate analysis, development, QA and licensing hours. Block subtotals = easier customer negotiation.
  • 🏭 Industry and distribution: a single invoice with all the month's orders, one block per order with its own subtotal.
  • 📋 Professional services: proposals with optional blocks (customer picks what to accept).
  • 🔧 Technical maintenance: delivery notes with separate labour + materials blocks.
  • 🎓 Training and events: proposals with a block per module or day.

🧩 What's in the module

  • 🏗️ Module descriptor with permissions (read / write / delete) and 15 configuration constants.
  • 🎛️ Admin panel with 4 tabs: Settings, License, About, Changelog.
  • 🧠 3 PDF overrides: Crabe (invoices), Einstein (orders), Azur (proposals).
  • 🎨 ODT integration — the hook prefills placeholders with row-type-aware values (Odtphp does not support conditionals).
  • ⚙️ Automatic trigger for order → invoice cascade and situation-invoice handling.
  • 📚 Dictionary of reusable free-text snippets, isolated per entity.
  • 🧱 Clean architecture: specialised services, separated hook handlers, deep refactor.
  • 🌍 8 full languages: ES, EN, FR, DE, IT, PT, CA, GL.
  • 🏢 Multicompany-compatible (Multisociété) with data isolated per entity.

⚙️ Compatibility and requirements

  • 📦 Dolibarr V16+ (compatible up to V23+)
  • ⚙️ PHP 7.4 – 8.3+
  • 🗄️ MySQL 5.7+ / MariaDB 10.2+ / PostgreSQL 10+
  • 🌐 Modern browser with JavaScript enabled
  • ⚠️ Not compatible with the legacy subtotal module (declared in conflictwith) — pick one of the two.

💰 Pricing and license

The module is free software under the GPL v3 license. You can use, modify and redistribute it freely under the terms of that license. Access to updates for 24 months after purchase on Dolistore. Direct email support.

✉️ Support

✉️ info@easysoft.es | 🌐 www.easysoft.es




If you think this module is a fork of another one (published after the first one) or violates some terms or conditions of use (for users or vendors), you can make a report at dolistore@dolibarr.org