Quotes and pricing

Update prices on quotes and template invoices

dolixprix · version 1.1.1

Your draft quotes and template invoices pick up the catalogue prices, one by one or all at once.

Price
€49 excl. VAT
Dolibarr
19.0 minimum
Version
1.1.1
Licence
GPL v3+
Languages
French, English, German

€49 excl. VAT.

Ordering, payment, invoicing and download are handled by the DoliStore.

Buy on the DoliStore — €49 excl. VAT
The preview screen: line by line, the current price, the catalogue price and the difference in euros. Nothing is written until you have applied.
The preview screen: line by line, the current price, the catalogue price and the difference in euros. Nothing is written until you have applied. Screenshot of the French-language interface.
01

What the module does

  • “Update prices” button on the card of a draft quote and of a template invoice.
  • Bulk update screen for template invoices: customer, next invoice, lines affected, current total, up-to-date total and difference, with customer and product filters.
  • Only the next generated invoices carry the new prices: invoices already issued are never touched.
  • Line-by-line preview: current price, up-to-date price, VAT, discount, difference in euros including the discount, and a total after applying that follows the boxes you check.
  • The price follows the order of the Dolibarr core: base price, price-level price, customer-specific price.
  • Discounts entered on the lines are kept by default; each price is recalculated on the server when applying.
02

Who it is for

Your catalogue prices have gone up, but your draft quotes and subscription invoices still go out at the old prices.

Your catalogue changes: a supplier raises prices, you pass it on. Two kinds of documents keep the prices of the day they were entered.

  • Quotes left in draft. Dolibarr has no button to refresh them. The only way is to clone the quote with “Update prices with current known prices” and delete the original — which changes the reference, breaks the links, and replaces line discounts with the third party’s default discount along the way.
  • Template invoices, the ones that generate your subscription invoices every month or year. Dolibarr does not update them either, and does not even offer a clone: you have to open each template and fix each line by hand. A hundred subscribers, a hundred templates — and if one is forgotten, the next invoice goes out at the old price.

Who it is for: Businesses that invoice subscriptions or recurring contracts, and those whose catalogue changes during the year and that leave quotes pending: IT services, maintenance, trading, finishing trades.

03

What the module does not do

This section appears on all 12 module pages, without exception.

  • Only handles draft quotes and template invoices.
  • Handles neither orders nor issued invoices. An order is a commitment: its price is agreed.
  • Does not touch free lines, those not linked to any product. They appear in the preview, marked as unchanged.
  • Changes neither the quantities, nor the descriptions, nor the dates, nor the line extra fields.
04

How it works

On a draft quote, the module adds an “Update prices” button. On a template invoice, the same button. It first shows, for each line linked to a product: the current price, the up-to-date price, the VAT, the discount and the difference in euros. The difference includes the discount, so the sum of the differences matches exactly the change in the total — the table footer shows the net total as it would be after applying. Uncheck the lines to leave alone, then apply. The existing document is modified: its reference, history and links do not change.

For all template invoices at once, the menu Billing › List of templates › Update template prices opens a screen listing every template with at least one line no longer at the catalogue price: the customer, the date of the next invoice, the number of lines affected, the current total, the up-to-date total and the difference. Filter by customer or product, include suspended templates if needed, uncheck the ones to leave out, and update them all at once. Only the next generated invoices carry the new prices: invoices already issued are never touched.

The price used

The module follows exactly the Dolibarr core’s order of priority when cloning a quote with “Update prices with current known prices”:

  1. the product’s base price;
  2. if multiple price segments are enabled and the third party has a price level, that level’s price;
  3. if customer prices are enabled, the customer-specific price — from Dolibarr 22, the one whose validity period covers today’s date.

The module’s test suite compares its result with that of a real clone by the core, on the same data, and checks that both figures are identical.

Discounts

By default, discounts entered on the lines are kept. This is a more cautious choice than the Dolibarr clone, which replaces them with the third party’s default discount: a negotiated discount would be lost. The clone behaviour remains available in the module setup if you prefer it.

The button appears with the other actions, on the card of a draft quote or of a template invoice, if you have the module permission and the permission to modify that type of document, and if the document contains at least one line linked to a product. Otherwise no useless button is added.

The screen for one document is an eight-column table: selection, product, quantity, current price, up-to-date price, VAT, discount, difference. Lines that cannot be changed are listed too, with the reason in brackets: “free line, left untouched”, “product not found”, “already up to date”.

The template invoices screen shows one row per template, with a Details link to the line-by-line screen, to update only part of a template. On both screens, the total at the bottom follows the boxes you check: what is announced is exactly what will be written.

The template invoices screen: every template with a price no longer matching the catalogue, with the current total, the up-to-date total and the difference. Uncheck, then update them all at once.
The template invoices screen: every template with a price no longer matching the catalogue, with the current total, the up-to-date total and the difference. Uncheck, then update them all at once. Screenshot of the French-language interface.
The details of one template, line by line: current price, up-to-date price and difference. Nothing is written before you apply, and only the next invoices will carry the new prices.
The details of one template, line by line: current price, up-to-date price and difference. Nothing is written before you apply, and only the next invoices will carry the new prices. Screenshot of the French-language interface.
The button is added to the quote's action bar, next to Dolibarr's buttons. It only appears on a draft quote.
The button is added to the quote's action bar, next to Dolibarr's buttons. It only appears on a draft quote. Screenshot of the French-language interface.
05

Settings

Setting Default Effect
Keep discounts entered on lines on Recommended. When off, each line’s discount is replaced by the third party’s default discount, as the Dolibarr clone does.
Maximum number of lines per operation 200 Safety cap, per document. 0 for no limit.
Two settings, and nothing else: keep negotiated discounts, and a cap on lines per operation.
Two settings, and nothing else: keep negotiated discounts, and a cap on lines per operation. Screenshot of the French-language interface.
06

Security and safeguards

  • A dedicated permission, “Use price update (proposals and template invoices)”.
  • Dolibarr’s standard permission on top: modify commercial proposals for quotes, create and modify invoices for template invoices.
  • Dolibarr’s usual access control, which covers multi-company.
  • External users: an account linked to a third party can only act on that third party’s documents, in the preview as in the write, including on the template invoices screen.
  • No price coming from the form is used. When applying, each line is recalculated on the server; only identifiers are read, and any identifier foreign to the document is ignored.
  • Transactional writes: for one document, at the first error, nothing is saved. In bulk, each template has its own transaction, and a failure is reported without undoing the others.
  • Anti-CSRF token on the forms, and refusal to act on a quote that is no longer a draft.
07

What you get

What the module writes to your installation
Database tables createdNo table, no complementary attribute. The module folder does not contain a sql/ directory. The module only stores two settings in the Dolibarr constants.
PermissionsOne permission: “Use price update (proposals and template invoices)”. The module also requires the standard permission on the document concerned (modify proposals, or create and modify invoices for templates) and applies Dolibarr's usual access control.
Uninstalling
  • Disable the module in SetupModules/Applications. The buttons and the menu disappear.
  • No table to delete: the module creates none.
  • Prices already applied stay: they are changes like any other.
  • No table is created, and no complementary attribute either.
  • The module stores two settings in the Dolibarr constants.
  • The only data modified is the lines of the quotes and template invoices you selected, then their totals, recalculated by Dolibarr. Invoices already issued are never touched.
  • Each operation is written to the Dolibarr logs.
  • No outgoing connection: nothing is sent anywhere.
08

Compatibility

The module descriptor only declares a minimum version. No upper bound is written in the code: the versions below are those on which the module has actually been run.

Compatibility of the Update prices on quotes and template invoices module
Dolibarr versionsDolibarr 19 to 24. Tested on 19.0.4, 20.0.4, 21.0.4, 22.0.5, 23.0.4, 24.0.1 and 24.0.2.
Minimum PHP7.4
Dolibarr modules to enableCommercial proposals or Invoices
LicenceGPL v3 or later, full source code
LanguagesFrench, English, German
MenuOne entry: Billing | Payment › List of templates › Update template prices. The button also appears on the card of a draft quote and of a template invoice.
09

Installation

  1. Get the module and download the zip file.
  2. In Dolibarr: HomeSetupModules/Applications“Deploy/install external app/module” tab, then upload the zip. Otherwise, unzip the dolixprix folder into htdocs/custom/.
  3. Enable “Update prices” in the module list.
  4. Grant the “Use price update (proposals and template invoices)” permission to the users concerned, in Users & Groups.
  5. Upgrading from 1.0.0: after replacing the files, disable then re-enable the module, so that the template invoice button and the menu appear.

The details — permissions on the custom folder, shared hosting, upgrades, uninstalling — are on the page Installation and upgrades.

10

Frequently asked questions

Which Dolibarr versions does this module work on?

Dolibarr 19 to 24, PHP 7.4 to 8.3. Version 1.1.0 was tested on 19.0.4, 20.0.4, 21.0.4, 22.0.5, 23.0.4 and 24.0.1, and with PHP 7.4, 8.2 and 8.3.

Do invoices already issued change?

No. The module changes the template invoice itself: only the invoices generated afterwards carry the new prices. An invoice already issued is never touched.

I have hundreds of template invoices: do I have to open them one by one?

No. The Billing | Payment › List of templates › Update template prices screen lists them all, with the difference for each, and updates them at once. 300 templates were updated in a few seconds during testing.

How is it different from a clone with “Update prices with current known prices”?

Cloning creates a new quote, with a new reference, and leaves you to delete the old one. This module modifies the existing quote: its reference, its history and its links do not change. The price calculation, however, is the same — it is the Dolibarr core's, and the module's test suite compares its result with that of a real clone.

Does it touch my database?

The module creates no table. It modifies the quote lines you selected, then recalculates the header totals, exactly like a line change made by hand. The write is transactional: in case of error, nothing is saved.

What about my negotiated discounts?

They are kept by default. This is a more cautious choice than that of the Dolibarr clone, which replaces each line's discount with the third party's default discount. The clone behaviour remains available in the module setup, if you prefer it.

What if I uninstall?

The button disappears. There is nothing to clean up: no table, no complementary attribute. Prices already updated stay, like any change to a quote.

Who provides support, and how do updates work?

Support is provided by the person who wrote the module, at support@dolix.fr. Ordering, payment, the invoice and the download will be handled by the DoliStore, where new versions will be published.

11

Version history

Taken from the module’s ChangeLog.md file: a single source.

1.1.114 October 2026

Fix: the template invoice screens (bulk screen and template detail) no longer write a PHP warning (“Undefined variable $form”) to the server log. Nothing was displayed or changed.

1.1.013 October 2026

Template invoices: “Update prices” button on each template and a bulk update screen (Billing | Payment › List of templates). Fix: customer-specific prices with decimals or of 1,000 or more were misread. Prices in foreign currency recalculated, German translation. After upgrading from 1.0.0, disable then re-enable the module.

1.0.010 September 2026

First version: “Update prices” button on draft quotes, line-by-line preview, line selection, transactional and logged application. Discounts entered on the lines are kept by default. Two spellings of the same VAT rate (“0” and “0.0000”) are recognised as the same rate: an updated line is no longer offered for updating again.

12

Support for this module

Write to support@dolix.fr. The person who wrote the module is the one who replies.

Reply within two working days. This is not an on-call service.

To include in your message

  • The exact Dolibarr version.
  • The module concerned and its version — here dolixprix 1.1.1.
  • What you did, and what you expected.
  • The error message copied exactly, or a screenshot.
  • How Dolibarr is installed, if you know.

This module is on sale on the DoliStore.

Ordering, payment, invoicing and download are handled by the DoliStore.

Buy on the DoliStore — €49 excl. VAT
Also

The other modules