<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.dolibarr.org/index.php?action=history&amp;feed=atom&amp;title=Module_Jalon_EN</id>
	<title>Module Jalon EN - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.dolibarr.org/index.php?action=history&amp;feed=atom&amp;title=Module_Jalon_EN"/>
	<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Module_Jalon_EN&amp;action=history"/>
	<updated>2026-11-09T07:06:44Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Module_Jalon_EN&amp;diff=65948&amp;oldid=prev</id>
		<title>Grandoc at 17:04, 19 April 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Module_Jalon_EN&amp;diff=65948&amp;oldid=prev"/>
		<updated>2026-04-19T17:04:53Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:04, 19 April 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l6&quot;&gt;Line 6:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 6:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Information=&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Information=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{TemplateModuleInfo&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{TemplateModuleInfo&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|modulename=Milestone&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|modulename=Milestone&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;/Jalon&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|editor=[[File:Logo atoonet.jpg|link=https://www.atoo-net.com]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|editor=[[File:Logo atoonet.jpg|link=https://www.atoo-net.com]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|web=http://www.atoo-net.com&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|web=http://www.atoo-net.com&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki_test:diff::1.12:old-65944:rev-65948 --&gt;
&lt;/table&gt;</summary>
		<author><name>Grandoc</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Module_Jalon_EN&amp;diff=65944&amp;oldid=prev</id>
		<title>Grandoc: Created page with &quot;= Table of Contents = Category:Add-on Modules Category:Milestone {{TemplateDocDev}} {{TemplateDocUtil}} =Information= {{TemplateModuleInfo |modulename=Milestone |edito...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Module_Jalon_EN&amp;diff=65944&amp;oldid=prev"/>
		<updated>2026-04-19T16:48:17Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;= Table of Contents = &lt;a href=&quot;/index.php?title=Category:Add-on_Modules&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Category:Add-on Modules (page does not exist)&quot;&gt;Category:Add-on Modules&lt;/a&gt; &lt;a href=&quot;/index.php/Category:Milestone&quot; title=&quot;Category:Milestone&quot;&gt;Category:Milestone&lt;/a&gt; {{TemplateDocDev}} {{TemplateDocUtil}} =Information= {{TemplateModuleInfo |modulename=Milestone |edito...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Table of Contents =&lt;br /&gt;
[[Category:Add-on Modules]]&lt;br /&gt;
[[Category:Milestone]]&lt;br /&gt;
{{TemplateDocDev}}&lt;br /&gt;
{{TemplateDocUtil}}&lt;br /&gt;
=Information=&lt;br /&gt;
{{TemplateModuleInfo&lt;br /&gt;
|modulename=Milestone&lt;br /&gt;
|editor=[[File:Logo atoonet.jpg|link=https://www.atoo-net.com]]&lt;br /&gt;
|web=http://www.atoo-net.com&lt;br /&gt;
|webbuy={{LinkToPluginDownloadDoliStore|keyword=Milestone}}&lt;br /&gt;
|status=stable&lt;br /&gt;
|prerequisites=&lt;br /&gt;
|minversion=20.0.0 - 23.0.0&lt;br /&gt;
|note=&lt;br /&gt;
&amp;#039;&amp;#039;[[#Table of Contents|⬆ Back to top]]&amp;#039;&amp;#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
This module allows you to associate/group products/services under a milestone and display the subtotal.&lt;br /&gt;
It is possible to add comment lines without details (tax, price, etc.), as well as force page breaks in commercial documents.&lt;br /&gt;
&lt;br /&gt;
The module is compatible with the following document types:&lt;br /&gt;
 - Commercial proposals&lt;br /&gt;
 - Customer orders&lt;br /&gt;
 - Customer invoices&lt;br /&gt;
 - Supplier orders&lt;br /&gt;
 - Supplier invoices&lt;br /&gt;
&lt;br /&gt;
Compatible with the Multi-Company module.&lt;br /&gt;
&lt;br /&gt;
Main features:&lt;br /&gt;
 - &amp;#039;&amp;#039;&amp;#039;Line grouping&amp;#039;&amp;#039;&amp;#039;: associate products/services with a milestone to group them visually and manage them as a block.&lt;br /&gt;
 - &amp;#039;&amp;#039;&amp;#039;Automatic subtotal&amp;#039;&amp;#039;&amp;#039;: display the total amount per milestone on the document and in the PDF.&lt;br /&gt;
 - &amp;#039;&amp;#039;&amp;#039;Comment lines&amp;#039;&amp;#039;&amp;#039;: add text lines without amount or VAT.&lt;br /&gt;
 - &amp;#039;&amp;#039;&amp;#039;Forced page break&amp;#039;&amp;#039;&amp;#039;: insert a page break at any desired position in the PDF.&lt;br /&gt;
 - &amp;#039;&amp;#039;&amp;#039;Move a line into a milestone&amp;#039;&amp;#039;&amp;#039;: attach an existing line to a milestone after the fact, using a dropdown menu.&lt;br /&gt;
 - &amp;#039;&amp;#039;&amp;#039;Block cloning&amp;#039;&amp;#039;&amp;#039;: duplicate a milestone and all its child lines in a single click.&lt;br /&gt;
 - &amp;#039;&amp;#039;&amp;#039;Block deletion with options&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
** Option 1 — Delete the milestone and all its lines.&lt;br /&gt;
** Option 2 — Delete the milestone only and detach its lines (they remain on the document).&lt;br /&gt;
** Option 3 — Delete the milestone and migrate its lines to another existing milestone.&lt;br /&gt;
 - &amp;#039;&amp;#039;&amp;#039;Milestone dictionary&amp;#039;&amp;#039;&amp;#039;: save reusable milestones from the configuration page.&lt;br /&gt;
&lt;br /&gt;
=Prerequisites=&lt;br /&gt;
Dolibarr 20.0.0 - 23.0.0&lt;br /&gt;
&lt;br /&gt;
=⚙️ Installation=&lt;br /&gt;
&lt;br /&gt;
===⚙️ Manual installation===&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Download&amp;#039;&amp;#039;&amp;#039; the module archive file (.zip).&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Place&amp;#039;&amp;#039;&amp;#039; the file in the Dolibarr root directory.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Extract&amp;#039;&amp;#039;&amp;#039; the zip file with the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;unzip module_milestone-X.0.0.zip&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Verify&amp;#039;&amp;#039;&amp;#039; that the correct module location is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;htdocs/custom/milestone&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;The module is now available&amp;#039;&amp;#039;&amp;#039; and can be enabled from Dolibarr.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
===⚙️ Installation via the Dolibarr interface===&lt;br /&gt;
You can also &amp;#039;&amp;#039;&amp;#039;deploy and install&amp;#039;&amp;#039;&amp;#039; the module directly from the Dolibarr interface:&lt;br /&gt;
&lt;br /&gt;
# Go to the &amp;#039;&amp;#039;&amp;#039;Setup&amp;#039;&amp;#039;&amp;#039; &amp;gt; &amp;#039;&amp;#039;&amp;#039;Modules/Applications&amp;#039;&amp;#039;&amp;#039; menu.&lt;br /&gt;
# Open the &amp;#039;&amp;#039;&amp;#039;Deploy/Install an external module&amp;#039;&amp;#039;&amp;#039; tab.&lt;br /&gt;
# Click &amp;#039;&amp;#039;&amp;#039;Choose a file&amp;#039;&amp;#039;&amp;#039; and select the module .zip file.&lt;br /&gt;
# Click &amp;#039;&amp;#039;&amp;#039;Send File&amp;#039;&amp;#039;&amp;#039; to start the installation.&lt;br /&gt;
# Enable the module once the installation is complete.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;✅ The module is now operational and ready to use!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;#039;&amp;#039;[[#Table of Contents|⬆ Back to top]]&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
To use this module, you must first enable it. To do so, log in with an administrator account&lt;br /&gt;
and go to &amp;quot;&amp;#039;&amp;#039;&amp;#039;Home - Setup - Modules&amp;#039;&amp;#039;&amp;#039;&amp;quot;.&lt;br /&gt;
The module appears under &amp;quot;Add-on modules/Cross-module tools&amp;quot;. Click &amp;quot;Enable&amp;quot;.&lt;br /&gt;
A settings icon appears at the end of the module row — click it to access the module-specific configuration page.&lt;br /&gt;
&lt;br /&gt;
The module is then ready to use.&lt;br /&gt;
&lt;br /&gt;
==Module configuration==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Module-specific configuration page:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The configuration page contains one tab:&lt;br /&gt;
&lt;br /&gt;
*Options tab&lt;br /&gt;
&lt;br /&gt;
[[File:Milestone_demo_01-23.0.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
The following options are available:&lt;br /&gt;
 - Hide by default the detail of products/services associated with milestones.&lt;br /&gt;
 - Hide by default the description of products/services associated with milestones.&lt;br /&gt;
 - Hide by default the amount of milestones.&lt;br /&gt;
 - Set the background color of milestones.&lt;br /&gt;
&lt;br /&gt;
[[File:Milestone_demo_02-23.0.png|800px]]&lt;br /&gt;
&lt;br /&gt;
You can save milestones you wish to reuse in a dictionary.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
Easy to get started — just a few clicks.&lt;br /&gt;
&lt;br /&gt;
[[File:milestone_dolistore_01.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[[File:milestone_dolistore_02.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[[File:milestone_dolistore_03.png|800px]]&lt;br /&gt;
&lt;br /&gt;
[[File:milestone_dolistore_04.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=Compatibility and Synergies=&lt;br /&gt;
&lt;br /&gt;
Milestone is compatible with:&lt;br /&gt;
 - The MultiCompany module&lt;br /&gt;
 - The UltimatePdf module&lt;br /&gt;
 - Commercial proposals (propal)&lt;br /&gt;
 - Customer orders (order)&lt;br /&gt;
 - Customer invoices (invoice)&lt;br /&gt;
 - Supplier orders (order_supplier) — support added in v23&lt;br /&gt;
 - Supplier invoices (invoice_supplier) — support added in v23&lt;br /&gt;
&lt;br /&gt;
=Technical Notes=&lt;br /&gt;
&lt;br /&gt;
==Supplier document specifics==&lt;br /&gt;
&lt;br /&gt;
The Dolibarr ORM classes for supplier documents (&amp;#039;&amp;#039;&amp;#039;CommandeFournisseur&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;FactureFournisseur&amp;#039;&amp;#039;&amp;#039;) have limitations compared to their customer counterparts:&lt;br /&gt;
&lt;br /&gt;
 - The &amp;lt;code&amp;gt;fetch_lines()&amp;lt;/code&amp;gt; method of &amp;lt;code&amp;gt;CommandeFournisseur&amp;lt;/code&amp;gt; does not map the &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; field onto line objects. The module works around this behaviour with direct SQL queries whenever the label is empty.&lt;br /&gt;
 - The &amp;lt;code&amp;gt;updateline()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;addline()&amp;lt;/code&amp;gt; methods of these classes do not handle the &amp;lt;code&amp;gt;fk_parent_line&amp;lt;/code&amp;gt; parameter. Any write to this field (attaching to a milestone, cloning, deletion) is performed via a direct &amp;lt;code&amp;gt;SQL UPDATE&amp;lt;/code&amp;gt; on the corresponding line table.&lt;br /&gt;
&lt;br /&gt;
These workarounds are encapsulated within the module and are fully transparent to the end user.&lt;br /&gt;
&lt;br /&gt;
=Development=&lt;br /&gt;
Milestone is tracked on the Framasoft Git repository:&lt;br /&gt;
https://git.framasoft.org/inodbox/milestone&lt;/div&gt;</summary>
		<author><name>Grandoc</name></author>
	</entry>
</feed>