Quotes and pricing

Refresh prices on draft quotes

dolixprix · version 1.0.0

A draft quote picks up the catalogue prices without going through a clone.

Price
€29 excl. VAT
Dolibarr
19.0 minimum
Version
1.0.0
Licence
GPL v3+
Languages
French, English

€29 excl. VAT.

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

Buy on the DoliStore — €29 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; it does not appear anywhere else.
  • Line-by-line preview: current price, up-to-date price, VAT, discount, difference in euros and quote total after applying.
  • The difference shown takes the discount into account, so the sum of the differences matches exactly the change in the total.
  • The price used follows the order of the Dolibarr core: base price, then the price-level price if multiple price segments are enabled, then the customer-specific price if its validity period covers today's date.
  • Discounts entered on the lines are kept by default — a setting lets you switch to the clone behaviour, which replaces them with the third party's default discount.
  • When applying, each price is recalculated on the server side: no value coming from the form is used, and any line identifier foreign to the quote is ignored.
02

Who it is for

Your catalogue prices have gone up, but your quotes still in draft show the old prices.

A quote stays in draft for a few weeks. In the meantime, the catalogue changes: a supplier raises its prices, you pass the increase on. The quote, for its part, keeps the prices of the day it was entered. You notice when you come to validate it.

Dolibarr offers no button to bring it up to date. The only route is to clone the quote, ticking “Update prices with current known prices”, then delete the original — which changes the reference, breaks the links, and along the way replaces the line discounts with the third party’s default discount.

Who it is for: Businesses whose catalogue changes during the year and that leave quotes pending: trading, finishing trades, services with supplies.

03

What the module does not do

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

  • Only handles commercial proposals with draft status. The button does not appear on a validated, signed or billed quote.
  • Handles neither orders nor 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 start and end dates.
  • A line whose product has been deleted from the catalogue is marked “product not found” and left intact.
04

How it works

The module adds an “Update prices” button on the card of a draft quote.

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 takes the discount into account, so the sum of the differences matches exactly the change in the quote total — the foot of the table in fact shows the total excl. VAT as it would be after applying.

You untick the lines to leave alone, then you apply. The existing quote is modified: its reference, its history and its links do not change.

The price used

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

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

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

Discounts

By default, the discounts entered on the lines are kept. This is a more cautious choice than that of 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 preview screen reminds you, below the table, which of the two behaviours is active.

The button appears on the quote card, with the other actions. It is only shown when all these conditions are met: the quote is a draft, you have the module permission and the permission to modify quotes, the quote is within your scope, and it contains at least one line linked to a product. Otherwise, no pointless button is added.

The preview screen is a table with eight columns: selection, product, quantity, current price, up-to-date price, VAT, discount, difference. Lines that cannot be changed appear too, with the reason in plain words in brackets: “free line, left untouched”, “product not found”, “already up to date”. If nothing has changed, the module says so and does not offer to apply.

No screenshot is available for this module yet. See IMAGES.md, which describes the three screenshots to produce and the data set to build.

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. Switched 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. 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 on proposals”.
  • Dolibarr’s standard permission on top: create and modify commercial proposals.
  • Dolibarr’s usual access control is applied to the quote concerned, which covers multi-company.
  • External users: an account linked to a third party can only act on its own third party’s quotes, for the preview as for the write.
  • No price coming from the form is used. When applying, each line is recalculated on the server side; only the line identifiers are read, and any identifier foreign to the quote is ignored.
  • Transactional write: at the first error, nothing is saved.
  • Anti-CSRF token on the form, 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 on proposals”. The module also requires the standard permission to create and modify commercial proposals, and applies Dolibarr's usual access control to the quote concerned.
Uninstalling
  • Disable the module in SetupModules/Applications. The button disappears.
  • No table to delete: the module does not create any.
  • Prices already applied stay: they are changes to quotes like any others.
  • No table is created, and no complementary attribute either. The module folder does not contain a sql/ directory.
  • The module stores two settings in the Dolibarr constants.
  • The only data changed are the quote lines you selected, then the header totals, recalculated by Dolibarr.
  • Every 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 Refresh prices on draft quotes module
Dolibarr versionsDolibarr 19.0 minimum. Installed and run on 23.0.4 and 24.0.0.
Minimum PHP7.4
Dolibarr modules to enableCommercial proposals
LicenceGPL v3 or later, full source code
LanguagesFrench, English
MenuNo menu entry. The button appears on the quote card, when the quote is a draft and contains at least one line linked to a product.
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 on proposals” permission to the users concerned, in Users & Groups.
  5. Check the two settings on the setup page: keeping line discounts, and maximum number of lines per operation.

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?

The descriptor requires Dolibarr 19.0 minimum and PHP 7.4 minimum. The module has been installed and run on 23.0.4 and 24.0.0. If you are on an older version and have a doubt, write before buying.

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.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.0.0.
  • 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 — €29 excl. VAT
Also

The other modules