<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.dolibarr.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Iouston</id>
	<title>Dolibarr ERP CRM Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.dolibarr.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Iouston"/>
	<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php/Special:Contributions/Iouston"/>
	<updated>2026-11-11T11:31:03Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Setup_Other&amp;diff=67315</id>
		<title>Setup Other</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Setup_Other&amp;diff=67315"/>
		<updated>2026-09-15T07:47:22Z</updated>

		<summary type="html">&lt;p&gt;Iouston: add recruitment section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- BEGIN origin interlang links --&amp;gt;&lt;br /&gt;
&amp;lt;!-- You can edit this section but do NOT remove these comments&lt;br /&gt;
     Links below will be automatically replicated on translated pages by PolyglotBot --&amp;gt;&lt;br /&gt;
[[fr:Paramétrage_Divers]]&lt;br /&gt;
[[es:Configuración_Varios]]&lt;br /&gt;
[[de:Erweiterte_Einstellungen]]&lt;br /&gt;
[[zh:其他设置]]&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Admin]]&lt;br /&gt;
{{TemplateDocUser}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Help About Screen&#039;&#039;&#039;: Other setup&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Menu Path&#039;&#039;&#039;: Home ► Setup ► Other&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Some options are not visible in the interface (often because they are deprecated or are beta features). In most cases you do not need these functions and their use may make the application unstable or may not work as expected.&lt;br /&gt;
&lt;br /&gt;
 {{warning|32px}} This page contains the list of some advanced development parameters. In most cases, they are parameters for internal usage, development, external modules, features in development not stable or that may lead to security risk. For standard usage of Dolibarr, such parameters &#039;&#039;&#039;SHOULD NOT&#039;&#039;&#039; be used. All experimental options are NOT supported. They may be removed in a future, modified at any version and break stability of your application.&lt;br /&gt;
&lt;br /&gt;
To enable/override a parameter you have to define the constant name and set it to 1 (unless otherwise stated) in &amp;lt;code&amp;gt;Home ► Setup ► Other Setup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The options here may not be documented since they are not stable and are unsupported (remember they are experimental or development options). The basic format of how the list is written is broken down in the example below:&lt;br /&gt;
&lt;br /&gt;
UNSTABLE_OR_DEV_OPTION ► &#039;&#039;Description of config and goal&#039;&#039; ► &#039;&#039;(specific version information) or values&#039;&#039;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
=Global Options=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ADD_UNSPLASH_LOGIN_BACKGROUND&#039;&#039;&#039; ► The background image will be refreshed on every login page refresh. Background image is pulled from the popular open source image website Unsplash. If an already saved static background image exists, then this code will override it (but not delete the saved image). Warning: Using this may allow this external website to steel your login credentials (the value to be put is the URL of the service, exemple&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: https://source.unsplash.com/random) ► (v10.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HIDE_POWERED_BY&#039;&#039;&#039; ► Hide the &amp;quot;Powered by Dolibarr&amp;quot; picto on public pages&lt;br /&gt;
*&#039;&#039;&#039;MAIN_APPLICATION_TITLE&#039;&#039;&#039; ► This will change the title of software (that appears on the login page by default). Warning: changing this may make Dolibarr version detection to fail by smartphone applications like [[Application Android - DoliDroid]], breaking some features when using Dolibarr from such application. If the text start with a &amp;quot;+&amp;quot;, the text will be added to the standard &amp;quot;Dolibarr&amp;quot; label instead of replacing it.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_AUTOFILL_DATE&#039;&#039;&#039; ► If this constant is defined (to something other than &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;), the date of invoice, proposal, order or payment are auto-filled with the current date. It is highly recommended to NOT ENABLE this feature. This can create a lot of input errors with data not validated by users. This leads to incorrect values saved in the database causing confusion when you have to do your accountancy reports!&lt;br /&gt;
*&#039;&#039;&#039;MAIN_AUTOFILL_DATE_PROPOSAL►&#039;&#039;&#039;If this constant is defined (to something other than 0), the date of  proposal is auto-filled with the current date.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_AUTO_TIMESTAMP_IN_PUBLIC_NOTES&#039;&#039;&#039; ► Add a timestamp and user automatically when editing the &#039;&#039;public&#039;&#039; note.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_AUTO_TIMESTAMP_IN_PRIVATE_NOTES&#039;&#039;&#039; ► Add a timestamp and user automatically when editing the &#039;&#039;private&#039;&#039; note.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DEFAULT_PAYMENT_TERM_ID&#039;&#039;&#039; ► With ID of a payment term, will use this as default payment term each time you create a new proposal, order, invoice (customer and supplier). Deprecated. Replaced with the default setup feature instead (see French page of wiki for some exemple&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: [[Paramétrage Valeurs par défaut]])&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DEFAULT_PAYMENT_TYPE_ID&#039;&#039;&#039; ► With ID of a payment type, will use this as default payment type each time you create a new proposal, order, invoice (customer and supplier). Deprecated. Replaced with the default setup feature instead (see French page of wiki for some exemple&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: [[Paramétrage Valeurs par défaut]])&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DEFAULT_LANGUAGE_FILTER&#039;&#039;&#039; ► Useful if you do not want to show &amp;lt;code&amp;gt;en_US&amp;lt;/code&amp;gt; language option in combo boxes (other languages can easily be removed in &amp;lt;code&amp;gt;langs&amp;lt;/code&amp;gt; directory but not &amp;lt;code&amp;gt;en_US&amp;lt;/code&amp;gt;) ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LANGUAGES_ALLOWED&#039;&#039;&#039; ► Is a list of languages without spaces, example&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: &amp;lt;code&amp;gt;fr_FR,en_US,de_DE,it_IT&amp;lt;/code&amp;gt; If defined, only those languages will appear in combos. ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_NOTES_TAB&#039;&#039;&#039; ► Show or hide notes tab in the card page&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_CONTACTS_TAB&#039;&#039;&#039; ► Show or hide contacts tab in the card page&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_FULL_SCANLIST&#039;&#039;&#039; ► Disables the complete scan of tables to allow the pagination to show total number of pages. May be useful to activate on systems with a very high quantity of data (tables with more than 2 000 000 records).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_JQUERY_JNOTIFY&#039;&#039;&#039; ► Disable usage of &amp;lt;code&amp;gt;JNotify&amp;lt;/code&amp;gt; to show confirm or error messages&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_AJAX_COMBOX&#039;&#039;&#039; ► If you have a large number of third parties or products, you can disable the autocomplete feature on the third parties list by setting this constant to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; ► (v3.6.0+)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_MULTIPLE_FILEUPLOAD&#039;&#039;&#039; ► Disable users to upload multiple files at once.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_TRUNC&#039;&#039;&#039; ► Disable all truncings in select list. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLEDRAFTSTATUS&#039;&#039;&#039; ► Disable the status &amp;quot;Draft&amp;quot; for some objects (project, donation, ...) so the object is directly created with status &amp;quot;Validated&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_USE_OBJECT_THIRDPARTY_NAME&#039;&#039;&#039; ► Add name of thirdparty at begin of generated document.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_USE_TIMING&#039;&#039;&#039; ► Add a timestamp at end of generated document. Value must be format of timestamp. For example: &amp;lt;code&amp;gt;%Y%m%d%H%M&amp;lt;/code&amp;gt; (only for ODT files)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_UPLOAD_NOT_RENAME_BY_DEFAULT&#039;&#039;&#039; ► Disable the auto renaming on upload file ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOL_SCRIPTS_ROOT&#039;&#039;&#039; ► Define directory who contains &#039;scripts&#039; directory (e.g. &amp;lt;code&amp;gt;/var/www/dolibarr&amp;lt;/code&amp;gt;). Value of this variable may be requested by some external script or tools.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ENABLE_LOG_TO_HTML&#039;&#039;&#039; ► If this constant is defined, it is possible to have logs inside pages by adding the parameter &amp;lt;code&amp;gt;&amp;amp;logtohtml=1&amp;lt;/code&amp;gt; into URL.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ENABLE_IMPORT_LINKED_OBJECT_LINES&#039;&#039;&#039; ► Allow to import lines into current document from &amp;quot;linked&amp;quot; compatible documents ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FIRST_TO_UPPER&#039;&#039;&#039; ► Dolibarr add uppercase to Third Parties, contacts or members names if not done. Warning: with some languages (whose words with uppercase are not same words, or pagecode does not always have an uppercase, like Cyrillic languages), this feature may alter your data.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ALL_TO_UPPER&#039;&#039;&#039; ► Dolibarr puts uppercase for Third Parties, contacts or members names if not done. Warning, with some languages (whose words with uppercase are not same words, or pagecode does not always have an uppercase, like Cyrillic languages), this feature may alter your data. ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ALL_TOWN_TO_UPPER&#039;&#039;&#039; ► Dolibarr puts uppercase for town names if not done. ► (v13.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FILESYSTEM_ENCODING&#039;&#039;&#039; ► With some PHP versions, PHP is not able to detect the page code for filesystem of the server OS. To solve this, Dolibarr assumes your OS filesystem is &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; if on Linux or OSX system, and &amp;lt;code&amp;gt;ISO-8859-1&amp;lt;/code&amp;gt; if on Windows. If not, for example on a Windows server with a NTFS &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; pagecode, you can set the variable &amp;lt;code&amp;gt;MAIN_FILESYSTEM_ENCODING&amp;lt;/code&amp;gt; to &amp;quot;&amp;lt;code&amp;gt;utf-8&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FORCELANGDIR&#039;&#039;&#039; ► Relative path of the directory holding your custom &amp;lt;code&amp;gt;langs&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HTML_TITLE&#039;&#039;&#039; ► Can be used to control how the html page title is formatted. If value contains key &#039;&amp;lt;code&amp;gt;noapp&amp;lt;/code&amp;gt;&#039;, application name will not be output. If value contains &#039;&amp;lt;code&amp;gt;thirdpartynameonly&amp;lt;/code&amp;gt;&#039;, on tab for thirdparties, only name of thirdparties are output. Value can be list of tags: &#039;&amp;lt;code&amp;gt;noapp;thirdpartynameonly&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HELPCENTER_LINKTOUSE&#039;&#039;&#039; ► Define the URL link to use as the target page for link &amp;quot;I need help&amp;quot; onto logon page&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LOGOUT_GOTO_URL&#039;&#039;&#039; ► URL to which the user will be redirected after LOGOUT&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAXTABS_IN_CARD&#039;&#039;&#039; ► Maximum number of tabs visible. Others are grouped into a combo list.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAXLIST_OVERLOAD&#039;&#039;&#039; ► Maximum number of line in space&#039;s domain.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING&#039;&#039;&#039; ► A warning saying setup of modules is not complete is shown if the number of enabled modules is lower or equal than this value (&amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; if not defined)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NO_CONCAT_DESCRIPTION&#039;&#039;&#039; ► Allow to use only input custom description in lines (proposal, order, invoice) ► (v10.0)   &amp;lt; v20.0. [ OSBOLETE since 20.0 | SEE Product module admin configuration to set the description behavior of products and services ]. This value is overwritten by PRODUCT_AUTOFILL_DESC, controled by the option in the product module admin configuration, and is no longer used. Kept in code to allow compatibility if custom modules are using it. Removed completely from v22.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_OPTIMIZE_SPEED&#039;&#039;&#039; ► Use some speed enhancements. See page [[FAQ Increase Performance]] for more information.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PASSWORD_FORGOTLINK  ►&#039;&#039;&#039; Change forgotten password link on login page. ► (v9.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROPAGATE_CONTACTS_FROM_ORIGIN&#039;&#039;&#039; ► When creating an order, contract, invoice from another object, specific contacts of objects are set as specific contact of the new object when possible. ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PUBLIC_NOTE_IN_ADDRESS&#039;&#039;&#039; ► Show public note in address block ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_REMOVE_INSTALL_WARNING&#039;&#039;&#039; ► Remove all security warnings that appear to administrator users if URL &amp;lt;code&amp;gt;/install&amp;lt;/code&amp;gt; is public. You should solve the problem if warning occurs, instead of removing the warning! For this, create a file called &amp;lt;code&amp;gt;install.lock&amp;lt;/code&amp;gt; into Dolibarr root directory. This will stop the warning but also make the page &amp;lt;code&amp;gt;/install&amp;lt;/code&amp;gt; not possible to use, to protect your installation.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_REPEATCONTACTONEACHTAB&#039;&#039;&#039; ► If added and set to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, this adds contacts on all tabs, not only main tab.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_REPLACE_TRANS_xx_XX&#039;&#039;&#039; ► Where &amp;lt;code&amp;gt;xx_XX&amp;lt;/code&amp;gt; is language code. If value is &amp;lt;code&amp;gt;string1:newstring1;string2:newstring2&amp;lt;/code&amp;gt; then replace &amp;lt;code&amp;gt;string1&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;newstring1&amp;lt;/code&amp;gt; in all translation done for language &amp;lt;code&amp;gt;xx_XX&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND&#039;&#039;&#039; ► Change way of rounding total including tax of lines, rounding first of after.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND_SUPPLIER&#039;&#039;&#039;► Change way of rounding total including tax of lines, rounding first of after.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SERVER_TZ&#039;&#039;&#039; ► If you can&#039;t set the time zone of your PHP installation, set this constant. Better is to set it to UTC. In future, this constant will be forced to &#039;&amp;lt;code&amp;gt;UTC&amp;lt;/code&amp;gt;&#039; so PHP server time zone will not have effect any more. Examples: &amp;lt;code&amp;gt;Europe/Paris&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;auto&amp;lt;/code&amp;gt;. Dolibarr will apply the timezone before saving dates in the database. Meaning that if you remove the parameter the dates saved will not change back to UTC.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SEARCH_FORM_ON_HOME_AREAS&#039;&#039;&#039; ► Show the search form on home page areas for core modules (Removed after v5 due to global search combo) ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SEARCHFORM_SUPPLIER_INVOICE_DISABLED&#039;&#039;&#039; ► Disable the supplier invoice on the search form&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE&#039;&#039;&#039; ► If only one result is found, then setting this value to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; will take you direct to the item (default method).  Setting the value to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; will show the result in the list as a single result ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SERVICES_ARE_ECOMMERCE_200238EC&#039;&#039;&#039;  ► If seller and buyer are in Europe and buyer is not a company, use the VAT of buying country. It can have value &#039;1&#039; or &#039;2&#039;. If value 2, the VATs available to select only the ones of buying country. If &#039;1&#039;, the VATs available to select mix the ones of selling country and the ones of buying country. ► (v18.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_TUNING_INFO&#039;&#039;&#039; ► Add tuning information into JavaScript console. Better when xdebug is enabled.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_TECHNICAL_ID&#039;&#039;&#039; ► Show also technical IDs on elements cards or some lists (not supported everywhere).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOWDATABASENAMEINHELPPAGESLINK&#039;&#039;&#039; ► Show database name in upper help menu ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_ALTERNATE_TRANSLATION_FOR&#039;&#039;&#039; ► List of fields per object that need an alternate translation. Example: &amp;lt;code&amp;gt;MAIN_USE_ALTERNATE_TRANSLATION_FOR=societe:name,town;contact:firstname,lastname&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_HOURMIN_IN_DATE_RANGE&#039;&#039;&#039; ► On all entities lines (invoice, order, contract...), it is possible to add hour and minutes with date on fields &amp;quot;date start&amp;quot; and &amp;quot;date end&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_JQUERY_JEDITABLE&#039;&#039;&#039; ► Allow to update from screen, directly into database, some properties of elements (invoices, proposals, ...) using Ajax. This make response time faster, but avoid using this feature, because it bypasses some business actions (updates on other data that should be done consistently) and ignores business controls on data you saved. Consequently this feature breaks consistency of data and possibly the stability of the software.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_JQUERY_MULTISELECT&#039;&#039;&#039; ► Allow to use Ajax when a choice that require multiselect is used (for the moment only external modules uses select box with multiselect values). Set the value to the jQuery plugin name to use (multiselect, multiple-select, select2…). Setting it to any other value will result in unwanted side-effects and/or bugs.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_OLD_SEARCH_FORM&#039;&#039;&#039; ► Display the old search form in left menu.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VAT_DEFAULT_IF_AUTODETECT_FAILS&#039;&#039;&#039; ► Allow to force the VAT rate to a given value (instead of higher VAT rate of country) if the VAT rate of product was not defined.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_UNKNOWN_CUSTOMERS_ARE_COMPANIES&#039;&#039;&#039; ► If we can&#039;t guess if a thirdparty is a company or individual (not VAT ID fill, no Prof ID fill, no type of thirdparty fill), then we suppose it is a company (B2B business) if 1, we suppose it is an individual (B2C business) if 0.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_VAT_COMPANIES_IN_EEC_WITH_INVALID_VAT_ID_ARE_INDIVIDUAL&#039;&#039;&#039; ► For intra CEE sales, we use by default, on proposal, order or invoice creation, a 0 VAT for customers that are companies (see MAIN_UNKNOWN_CUSTOMERS_ARE_COMPANIES to change behaviour to know if a thirdparty is a company or an individual). But if the option MAIN_USE_VAT_COMPANIES_IN_EEC_WITH_INVALID_VAT_ID_ARE_INDIVIDUAL is set, we will use the 0 VAT only if a VAT ID is defined for the customer.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_VAT_OF_PRODUCT_FOR_INDIVIDUAL_CUSTOMER_OUT_OF_EEC&#039;&#039;&#039; ► For to use the default VAT of product for individual customers that are out E.E.C. (European Economic Community) ► (v7.0+). &#039;&#039;There is no reason to use this.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VIEW_LINE_NUMBER&#039;&#039;&#039; ► Shows a line number for each line of products/services at documents like proposal / order / invoice. Only on screen, not on PDF.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VIEW_LINE_NUMBER_IN_LIST&#039;&#039;&#039; ► Shows a line number in lists ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VOLUME_DEFAULT_ROUND&#039;&#039;&#039; ► Accuracy of volume (number of decimals)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VOLUME_DEFAULT_UNIT&#039;&#039;&#039; ► Default unit for weight (&amp;lt;code&amp;gt;0=kg&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-3=g&amp;lt;/code&amp;gt;, ...)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_WEIGHT_DEFAULT_ROUND&#039;&#039;&#039; ► Accuracy of weight (number of decimals)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_WEIGHT_DEFAULT_UNIT&#039;&#039;&#039; ► Default unit for weight (&amp;lt;code&amp;gt;0=kg&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-3=g&amp;lt;/code&amp;gt;, ...)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;USER_HIDE_INACTIVE_IN_COMBOBOX&#039;&#039;&#039; ► Disable display inactive users in combobox.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_PDF_THUMBS&#039;&#039;&#039; ► Disable thumbs PDF in case of imagick bug&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_KEEP_REF_CUSTOMER_ON_CLONING&#039;&#039;&#039; ► Keep the Customer Reference on cloned object (Propal/Invoice)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DONT_KEEP_NOTE_ON_CLONING&#039;&#039;&#039; ► Remove the object notes during cloning ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_SORT_FIELD&#039;&#039;&#039; ► Set the default sorting field on document page (name by default) ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_SORT_ORDER&#039;&#039;&#039; ► Set the default sorting order (ASC or DESC) on document page (ASC by default) ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_ZIPTOWN_DICTIONNARY&#039;&#039;&#039; ► Use dictionary ZIP for create card.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_TOP_MENU_SEARCH_DROPDOWN&#039;&#039;&#039; ► Show search in top menu with theme eldy ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PHONE_SEPAR&#039;&#039;&#039; ► Separ phone number other space ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;GRAPH_USE_FISCAL_YEAR&#039;&#039;&#039; ► Widgets uses fiscal year&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SHOW_SOCINFO_ON_PRINT&#039;&#039;&#039; ► Permit to add user company information on each printed document (when click on Dolibarr print button) ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FEATURES_LEVEL&#039;&#039;&#039; ► Level of features to show: &amp;lt;code&amp;gt;-1=stable+deprecated&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0=stable only (default)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1=stable+experimental&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2=stable+experimental+development&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_TECHNICAL_ID&#039;&#039;&#039; ► Show technical id for object.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HTTP_CONTENT_SECURITY_POLICY&#039;&#039;&#039; ► Allows you to fill in the content security rules ► (v6.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_ON_SEARCH_AND_LIST_GO_ON_CUSTOMER_OR_SUPPLIER_CARD&#039;&#039;&#039; ► Allow to change the link of the third party to customer/supplier card instead of contact card on List.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MODULE_SETUP_ON_LIST_BY_DEFAULT&#039;&#039;&#039; ► If set to &amp;quot;common&amp;quot; the setup module becomes list by defaut&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PAGESIZE_CHOICES&#039;&#039;&#039;  ► Configure select field to choose number of lines displayed on listing (&amp;lt;code&amp;gt;10:10,15:15,20:20,30:30,40:40,50:50,100:100,250:250,500:500,1000:1000,5000:5000&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_TOP_MENU_QUICKADD_DROPDOWN&#039;&#039;&#039; ► Add a dropdown menu with shortcuts to create new objects ► (v13.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EMAILCOLLECTOR_MAIL_WITHOUT_HEADER&#039;&#039;&#039; ► Remove the header stored by email collector ► (v13.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_VAT_OF_PRODUCT_FOR_COMPANIES_IN_EEC_WITH_INVALID_VAT_ID&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_OPTIMIZEFORTEXTBROWSER&#039;&#039;&#039; ► Optimise interface for a text only browser. This variable is set to 1 automatically if your browser is lynx or links&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NB_OF_YEAR_IN_WIDGET_GRAPH&#039;&#039;&#039; ► Set the number of years visible on some graph of some widgets (2 is default value)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_CREATEFROM_KEEP_LINE_ORIGIN_INFORMATION&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;API_DISABLE_LOGIN_API&#039;&#039;&#039; ►(v14.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LOGIN_BADCHARUNAUTHORIZED&#039;&#039;&#039; ► Add possibility to define bad character unauthorized into login name REGEX expression (Default value is @&amp;lt;&amp;gt;&amp;quot;\&#039;)  ► (v16.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_ALL_FILES_ON_DOCUMENT_TOOLTIP&#039;&#039;&#039;  ► Add all files visible from the object to be visible from the list of object.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LIST_ALLOW_PUBLIC_NOTES&#039;&#039;&#039;  ► Display public notes on list&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LIST_ALLOW_PRIVATE_NOTES&#039;&#039;&#039;  ► Display private notes on list&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_CHECKBOX_LEFT_COLUMN&#039;&#039;&#039; ► Display private check boxes on the left ► (v17.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_STATS_GRAPHS_SHOW_N_YEARS&#039;&#039;&#039; ► Nb of years to shows in widget and graph ► (v14.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HOOK_DEBUG&#039;&#039;&#039; ► if &amp;gt;=2 the hook in the logs are more verbose ► (v18.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ENABLE_AJAX_TOOLTIP&#039;&#039;&#039; ► if 1 the tooltips are updated with AJAX request ► (v18.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NO_INPUT_PRICE_WITH_TAX&#039;&#039;&#039; ► if 1 the TTC input field is removed from propal/invoices/... ► (v17.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_SELECT2_FOCUS_PROTECTION&#039;&#039;&#039; ► if 1 disable the focus protection ► (v17.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_ADVANCED_PERMS ►&#039;&#039;&#039; Add advanced user permission&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FREE_PRODUCT_CHECKED_BY_DEFAULT ►&#039;&#039;&#039; Check &amp;quot;product&amp;quot; or &amp;quot;service&amp;quot; by default on order/invoices/propal cards (set value &amp;quot;product&amp;quot; or &amp;quot;service&amp;quot;)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LINK_BY_REF ►&#039;&#039;&#039; Allow to link documents by choosing the type and ref from the object linked option&lt;br /&gt;
*&#039;&#039;&#039;MAIN_STORE_COMPUTED_EXTRAFIELDS ►&#039;&#039;&#039; when enabled, computed extrafields have their formula result evaluated and persisted to the database on save (instead of the default behavior where the formula is re-evaluated on the fly at each display and the column is left null).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Official supported option&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The following options are not hidden option. They are available by default from the interface.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ONLY_LOGIN_ALLOWED ►&#039;&#039;&#039; Activate maintenance mode and set user that is allowed to login. Value must be user login. Available into menu Home - Admin tools - User session, it is filled with admin user when clicking on button &amp;quot;Block other session&amp;quot;. Enable &amp;lt;code&amp;gt;MAIN_STORE_COMPUTED_EXTRAFIELDS&amp;lt;/code&amp;gt; when you need to sort, filter, sum or report on a computed extrafield&#039;s value in SQL/lists: instead of recalculating the formula on every display (leaving the column null), it stores the result in the database on each save, at the cost of the value being a snapshot that only refreshes when the record is saved again.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Security Options=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SECURITY_ANTI_SSRF_SERVER_IP&#039;&#039;&#039; ► Can set a complete list of IPs of server.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SECURITY_CSRF_WITH_TOKEN&#039;&#039;&#039; ► Activate a second anti-CSRF protection on POST (so a POST from another web site can&#039;t be done). Note there is also a default protection using test on referrer that is not reliable. This second protection uses TOKEN on forms and is more powerful. Value can be: 0=CSRF protection disabled; 1=CSRF protection is on POST URLs only (default from version Dolibarr 15.0+); 2=CSRF protection is required on POST + some GET URL that contains some white listed parameters like the parameter &amp;quot;action&amp;quot; used to request database change (default from version Dolibarr 16+), 3=CSRF protection is enabled on any POST and GET URLs (a valid CSRF token is expected whatever are the parameters, warning: can be enabled on Dolibarr but some external modules developped by thirdparty may not be ready yet with this option)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MODULES_FOR_EXTERNAL&#039;&#039;&#039; ► Limit available modules for external users. By default value is &#039;&amp;lt;code&amp;gt;facture,commande,contact,propal,projet,contrat,societe,ficheinter,expedition,agenda&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ALLOW_SVG_FILES_AS_IMAGES&#039;&#039;&#039; ► Allow to use SVG file as image files. Warning: This may introduce security vulnerability (javascript can be embedded into SVG file).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_RESTRICTHTML_ONLY_VALID_HTML&#039;&#039;&#039; ► Refused parameter if value is not a valid HTML content. The content is also sanitized with Tidy.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_RESTRICTHTML_ONLY_VALID_HTML_TIDY&#039;&#039;&#039; ► Refused parameter if value is not a HTML content validated by Tidy PHP library. The content is also sanitized with Tidy.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_RESTRICTHTML_REMOVE_ALSO_BAD_ATTRIBUTES&#039;&#039;&#039; ► Sanitize also non standard attributes on HTML content.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SECURITY_SALT&#039;&#039;&#039; ► A salt string to base the hashing on. 8 strings length recommended.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SECURITY_MAX_IMG_IN_HTML_CONTENT&#039;&#039;&#039; ► Maximum number of Images on the HTML content&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SECURITY_ALLOW_UNSECURED_LABELS_WITH_HTML&#039;&#039;&#039; ► Allow HTML tags into products label&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SECURITY_FORCERP&#039;&#039;&#039; = &amp;quot;strict-origin-when-cross-origin&amp;quot; (default) so browser doesn&#039;t send any referrer when going into another web site domain / &amp;quot;same-origin&amp;quot; / &amp;quot;strict-origin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Members Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_NEWFORM_FORCEMORPHY&#039;&#039;&#039; ► Force nature of member set to &amp;quot;phy&amp;quot; for physical or to &amp;quot;mor&amp;quot; for moral ► (v12.0)&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_ALLOW_CHANGE_OF_TYPE&#039;&#039;&#039; ► Member can edit their type on public subscription page ► (v13.0)&lt;br /&gt;
*&#039;&#039;&#039;ADHERENT_DEFAULT_CREATE_THIRDPARTY&#039;&#039;&#039; ► Thirdparty is created when creating a new member ► (v13.0)&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_SUBSCRIPTION_SUGGEST_END_OF_MONTH&#039;&#039;&#039; ► If set to 1, the member subscription end date will be suggested for the end of the month ► (v18.0)&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_SUBSCRIPTION_SUGGEST_END_OF_YEAR&#039;&#039;&#039; ► If set to 1, the member subscription end date will be suggested for the end of the year ► (v18.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NB_OF_YEAR_IN_MEMBERSHIP_WIDGET_GRAPH&#039;&#039;&#039; ► If set, it limits the number of years visible on graph and widgets of membership (empty is default value to show all) ► (v18.0)&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_NO_SYNC_LINKED_THIRDPARTY ►&#039;&#039;&#039; If set, changes to a member will not be synchronized to a linked third party. ► (v23.0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Accounting Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ACCOUNTANCY_COMBO_FOR_AUX&#039;&#039;&#039; ► Add graphic option for ACCOUNTANCY_COMBO_FOR_AUX. Having this option on may slow down and even freeze the accounting features if you have a very large number of thirdparties ► (v10.0)&lt;br /&gt;
*&#039;&#039;&#039;ACCOUNTING_DEFAULT_NOT_NOTIFIED_VALIDATION_DATE&#039;&#039;&#039; ► Avoid validating the lines with the accountancy export.(1= box unchecked by default / 0 = box checked by default) ► (v14.0)&lt;br /&gt;
*&#039;&#039;&#039;ACCOUNTING_DEFAULT_NOT_NOTIFIED_EXPORT_DATE&#039;&#039;&#039; ► Avoid flagging the lines as exported with the accountancy export.(1= box unchecked by default / 0 = box checked by default) ► (v14.0)&lt;br /&gt;
*&#039;&#039;&#039;ACCOUNTANCY_USE_PRODUCT_ACCOUNT_ON_THIRDPARTY ►&#039;&#039;&#039; Add 2 fields on thirdparty card which allow you to set an account for all sells products and an other for all buying products for this customer ► (v14.0)&lt;br /&gt;
*&#039;&#039;&#039;ACCOUNTING_MANAGE_ZERO&#039;&#039;&#039; &#039;&#039;&#039;►&#039;&#039;&#039; Allow to manage char 0 in accounting account (if enabled 1 ≠ 10) ► (v14.0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Agenda Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_ALL_CALENDARS&#039;&#039;&#039; ► Change the default view of calendar pages to see all the Agenda&#039;s (instead or yours only be default)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_AUTOSET_END_DATE_WITH_DELTA_HOURS&#039;&#039;&#039; ► To automatically set end date of event to start date + delta on event creation page.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_DISABLE_LOCATION&#039;&#039;&#039; ► Disable location field in action card  ► (&amp;gt;=v5.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_MAX_EVENTS_DAY_VIEW&#039;&#039;&#039; ► Define the maximum number of visible entries for each day in agenda. Default value is 3. Value 0 means no limit.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_USE_EVENT_TYPE&#039;&#039;&#039; ► Add a mandatory field &amp;quot;Type&amp;quot; when creating an event (&#039;&#039;&#039;&#039;&#039;deprecated&#039;&#039;&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ADD_EVENT_ON_ELEMENT_CARD&#039;&#039;&#039; ► Allow to create an event from a document (proposal, order, invoice)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_SUPPORT_PRIORITY_IN_EVENTS&#039;&#039;&#039; ► Allow to have priorities in events ► (&amp;gt;=v13.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_ADDACTIONFORPHONE&#039;&#039;&#039; ► Allow you to create a event from phone number ► (=&amp;lt;v12.0) - Need to be fix for (=&amp;gt;v12.0) https://github.com/Dolibarr/dolibarr/issues/22720&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_ADDACTIONFOREMAIL&#039;&#039;&#039; ► Allow you to create a event from Email ► (=&amp;lt;v12.0) - Need to be fix for (=&amp;gt;v12.0) https://github.com/Dolibarr/dolibarr/issues/22720&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ACTIONCOM_CAN_ADD_ANY_CONTACT&#039;&#039;&#039; ► Allow you to add any contact on events if set at 1a https://github.com/Dolibarr/dolibarr/releases/tag/18.0.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
=Bank Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BANK_CAN_RECONCILIATE_CASHACCOUNT&#039;&#039;&#039; ► Can reconciliate cash accounts ► (v3.8)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BANK_DISABLE_CHECK_DEPOSIT&#039;&#039;&#039; ► Disable check deposit feature&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BANK_ASK_PAYMENT_BANK_DURING_ORDER&#039;&#039;&#039; ► Ask bank account during creation of an order&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL&#039;&#039;&#039; ► Ask bank account during creation of a proposal&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BANK_USE_OLD_VARIOUS_PAYMENT&#039;&#039;&#039; ► To allow to enter miscellaneous payments (not covered by other modules) using old method. &#039;&#039;&#039;&#039;&#039;Deprecated&#039;&#039;&#039;&#039;&#039;. Entering various payment is preferred ► (&amp;lt;=v12.0).&lt;br /&gt;
*&#039;&#039;&#039;MAIN_IBAN_IS_NEVER_MANDATORY&#039;&#039;&#039; ► IBAN and BIC informations not mandatory. (V15)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=BOM and MO Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ALLOW_USE_KITS_INTO_BOM_AND_MO&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;BOM_SUB_BOM&#039;&#039;&#039; ►Allow to add a BOM in another BOM►(v16.0)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Bookmarks Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BOOKMARKS_SHOW_IN_MENU&#039;&#039;&#039; ► Numbers of bookmark entries to be displayed (10 by default)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Inalterable Log Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BLOCKEDLOG_ADD_ACTIONS_SUPPORTED&#039;&#039;&#039; ► Can complete list of triggered action that are logged&lt;br /&gt;
*&#039;&#039;&#039;BLOCKEDLOG_USE_REMOTE_AUTHORITY&#039;&#039;&#039; ► URL of the remote authority for the blockchain&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Category-Tags Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CATEGORY_SHOW_COUNTS&#039;&#039;&#039; ► Shows nb of object by tags in tag tree&lt;br /&gt;
*&#039;&#039;&#039;CATEGORY_EDIT_IN_MENU_NOT_IN_POPUP ►&#039;&#039;&#039; Display categories menu instead of managing it only from &amp;quot;Tools&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Contracts=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CONTRACT_SUPPORT_PRODUCTS&#039;&#039;&#039; ► Products are also suggested into module contract.&lt;br /&gt;
*&#039;&#039;&#039;CONTRACT_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039; ► When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. ► (v7.0+)&lt;br /&gt;
*&#039;&#039;&#039;CONTRACT_HIDE_PLANNED_DATE_ON_PDF&#039;&#039;&#039; ► allows you to not display dates on pdf files.&lt;br /&gt;
*&#039;&#039;&#039;CONTRACT_HIDE_REAL_DATE_ON_PDF&#039;&#039;&#039; ► allows you to not display dates on pdf files.&lt;br /&gt;
*&#039;&#039;&#039;CONTRACT_HIDE_PRICE_ON_PDF&#039;&#039;&#039; ► allows you to not display price on pdf files.&lt;br /&gt;
*&#039;&#039;&#039;CONTRACT_HIDE_QTY_ON_PDF&#039;&#039;&#039; ► allows you to not quantity dates on pdf files.&lt;br /&gt;
*&#039;&#039;&#039;CONTRACT_SHOW_SIGNATURE_STATUS_WITH_SERVICE_STATUS&#039;&#039;&#039; ► Show signature status in contract card (Sign by all parties).► (v21.0+)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Cron module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CRON_DISABLE_KEY_CHANGE&#039;&#039;&#039; ► When you provide an instance to a customer, you probably also add an entry in the cron of this user so Dolibarr batch and scheduler can work correctly. For security purpose, it may have a security key that is inside the command line into the cron entry and this entry must match the value defined into Dolibarr setup (setup of module &#039;Scheduled Jobs&#039;). Because, a customer of a Saas platform will probably have no access to edit the cron file, it is also import that he has no way to edit the key into the Dolibarr setup, so the key in the cron command line will always match the key in Dolibarr setup, and the Dolibarr batches will executed without security errors. To be sure, the customer does not change the value, you can set this constant to 1 into the table [[Table_llx_const]].&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CRON_DISABLE_TUTORIAL_CRON&#039;&#039;&#039; ► Disable the tutorial about how to install the cron script (on a SaaS hosting, this should be done by the web hosting provider)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CRON_WARNING_DELAY_HOURS&#039;&#039;&#039; ► Set this value to the frequency set for the cron script (so a warning will be shown to user to warn it about max frequency of its scheduled jobs)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Direct Debit Orders=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;WITHDRAWAL_ALLOW_ANY_INVOICE_STATUS&#039;&#039;&#039; ► If this option is set, all invoices status (even already paid) may appear on the list of invoices qualified for a direct debit payment. This is the list of invoices with a payment request done, and not linked to a direct debit payment. By default, only &amp;quot;unpayed&amp;quot; invoices are used to avoid to pay twice the same invoice.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Donation Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;DONATION_USE_THIRDPARTIES&#039;&#039;&#039; ► If this option is set, a thirdparty field appear on donation forms.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
=Email=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_COPY_FILE_IN_EVENT_AUTO&#039;&#039;&#039; ► Add attachment document on event auto generated by sending email from dolibarr. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EMAIL_USE_LAYOUT&#039;&#039;&#039;► Enable the use of predefined layout when writing an email.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAILFORM_DISABLE_ENTERKEY&#039;&#039;&#039; ► Activate JavaScript code to disable the enter key in the MAIL form. ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_DEBUG&#039;&#039;&#039; ► Write content with header of last mail into file &amp;lt;code&amp;gt;dolibarr_mail.log&amp;lt;/code&amp;gt; into directory &amp;lt;code&amp;gt;dolibarr_main_data_root&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_DEBUG_ERR_WITH_DATE&#039;&#039;&#039; ► Use a different filename (by adding a prefix of date) for each email sent with error when MAIN_MAIL_DEBUG.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_DEBUG_LOG_WITH_DATE&#039;&#039;&#039; ► Use a different filename (by adding a prefix of date) to log each email sent (whatever is result) when MAIN_MAIL_DEBUG.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_FORCE_FROM&#039;&#039;&#039; ► (v19+) Can force the value into the From field of the SMTP header. Note that email sender is always saved into the &amp;quot;Reply-To&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_ALLOW_SENDMAIL_F&#039;&#039;&#039; ► On Linux or BSD system, PHP email function use the command sendmail local to server. In some cases, the sender email must be provided on command line of sendmail with option &amp;lt;code&amp;gt;-f&amp;lt;/code&amp;gt;. This option is here to ask Dolibarr to call the function mail of PHP by adding value for the option &amp;lt;code&amp;gt;-f&amp;lt;/code&amp;gt;. Note that in most cases, even with sendmail, sender email is correctly managed as it is added in the email technical header. This option is here only for setup or version of sendmail that ask the -f option to be mandatory or for sendmail setup that does not use by default the From of the header email to define the sender (with this option, the from can be forced on command line to avoid to have the from lost by sendmail).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_SENDMAIL_FORCE_BA&#039;&#039;&#039; ► On Linux or BSD system, PHP email function use the command sendmail local to server. In some case, we want to recipient to be provided to sendmail into the email content instead of its command line parameter. For this we must add the -ba parameter to sendmail. This option asks PHP to provide this parameter when sending a mail. Note that another solution is to edit the mail.force_extra_parameters=-ba into &amp;lt;code&amp;gt;php.ini&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_NO_FULL_EMAIL&#039;&#039;&#039; ► Recipient email and sender are cleaned to be on form &amp;quot;&amp;lt;email&amp;gt;&amp;quot; instead of &amp;quot;Name &amp;lt;email&amp;gt;&amp;quot;. This might solve problem of compatibility with very old mailers.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FIX_FOR_BUGGED_MTA&#039;&#039;&#039; ► Some MTA agent are bugged and add some CR chars each time they saw a LF. Because Dolibarr emails are forged to be already cleaned, if MTA agent do that, you will send an email with two CR chars. This may result in having recipient not able to read your email. To fix this, add this constant to 1. Dolibarr will then create an email that is not RFC compliant, but because the MTA agent is bugged, the email will be modified and become correct during sending, solving the problem of bad email received. Add this constant to 1 if your recipient experience problems when opening email for example users using webmail of &amp;lt;code&amp;gt;orange.fr&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;hotmail.com&amp;lt;/code&amp;gt;. Note that some users have reported that when using Exim (Exim 4), you must set this parameter to 0. Default value is 1 but may be changed to 0 in future.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_DO_NOT_USE_SIGN&#039;&#039;&#039; ► Do not add user signature at end of suggested pre-defined email&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_FORCE_NOT_SENDING_TO&#039;&#039;&#039; ► If en email is defined into this variable, emails will never be sent to this email.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIL_FORCE_DELIVERY_RECEIPT_INVOICE&#039;&#039;&#039; ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Invoice&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIL_FORCE_DELIVERY_RECEIPT_ORDER&#039;&#039;&#039; ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Order&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIL_FORCE_DELIVERY_RECEIPT_PROPAL&#039;&#039;&#039; ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Proposal&#039;&#039; module.&lt;br /&gt;
*&#039;&#039;&#039;MAIL_FORCE_DELIVERY_RECEIPT_SUPPLIER_PROPOSAL&#039;&#039;&#039; ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Supplier Proposal&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EMAIL_SUPPORT_ACK ►&#039;&#039;&#039; Restore email acknowledgment checkbox on sending emails. This feature is commonly abandoned by mailers. Active from Dolibarr V17 - see [https://github.com/Dolibarr/dolibarr/blob/33744f74da1a5c20f8aa9950018ab4e549e00205/ChangeLog#L53 changelog]&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EMAIL_USECCC&#039;&#039;&#039; ► 1 = Shows field BCC into email forms, If value is an email = Shows the BCC pre filled with the email value.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_AUTOCOPY_PROPOSAL_TO&#039;&#039;&#039;, &#039;&#039;&#039;MAIN_MAIL_AUTOCOPY_ORDER_TO&#039;&#039;&#039;, &#039;&#039;&#039;MAIN_MAIL_AUTOCOPY_INVOICE_TO&#039;&#039;&#039;, &#039;&#039;&#039;MAIN_MAIL_AUTOCOPY_SHIPMENT_TO&#039;&#039;&#039;, &#039;&#039;&#039;MAIN_MAIL_AUTOCOPY_..._TO&#039;&#039;&#039; ► Email to use as a BCC recipient when sending email for proposal, order or invoice. You can make this value visible by setting MAIN_EMAIL_USECCC (to 1 or to another email, see previous point)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EMAIL_ADD_TRACK_ID&#039;&#039;&#039; ► When value is 1 (this is also default value if option is not set): The record &amp;quot;Message-id&amp;quot; added into smtp header includes a tracking id to define where the email was sent from. When value is 2: you send an email from third party card, the sender email is completed with the email source tracking string  &amp;quot;+thiXXX&amp;quot; on email (your email will be sent with the &amp;quot;From&amp;quot; that is myname+thi123@mycompany.com). So when user receiving email will make &amp;quot;Answer&amp;quot;, email will be sent to myname@mycompany.com but with the tracking id included (into header or into target email), allowing you to know to which third party or object, the email exchange is related to.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_IN_SAME_EMAIL&#039;&#039;&#039; ► Restrict sending of 1 email message to &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; recipients for same email message (x for To: + CC: + BCC:). If not defined, value is &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;. Required to fight against spamming that include 1000 recipients in 1 message. Note that &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_TO_IN_SAME_EMAIL&#039;&#039;&#039;, &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_CC_IN_SAME_EMAIL&#039;&#039;&#039; and &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_BCC_IN_SAME_EMAIL&#039;&#039;&#039; are also available.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_FORCE_CONTENT_TYPE_TO_HTML&#039;&#039;&#039; ► Force to send all email (event with text only content) as HTML formatted email.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_USE_MULTI_PART&#039;&#039;&#039; ► Forge email content using an alternate text part ► (for 5.0.2+). By default with 6.0+&lt;br /&gt;
*&#039;&#039;&#039;MAIN_INFO_SOCIETE_MAIL_ALIASES&#039;&#039;&#039; ► add address aliases for the from field on mail. Set his value with &amp;quot;Firstname Name &amp;lt;firstname.lastname@mydomain.tld, Otherfirstname OtherlastName &amp;lt;othermail@mydomain.tld&amp;gt;,...&amp;quot; ► (v5.0.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_ADD_INLINE_IMAGES_IF_IN_MEDIAS&#039;&#039;&#039; ► If images were stored into the medias directory from CKEditor, then images into emails are replaced with &amp;quot;inline content&amp;quot;. This may increase seriously risk of being detected as SPAM.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EXTERNAL_SMTP_CLIENT_IP_ADDRESS&#039;&#039;&#039; ► (A better name of this option should be MAIN_EXTERNAL_MAIL_CLIENT_IP_ADDRESS). Set here the list of IPs where your Dolibarr instances are hosted. You can also set the URLs where to get the IP addresses, for exemple: &amp;quot;https://ipv4.urltoshowip.com/_service_showmyip.php,https://ipv6.urltoshowup.com/_service_showmyip.php. So when your customer go into the setup area of email:&lt;br /&gt;
**If he chose mail method, a message will explain him how to setup its SPF record for its email domain (showing the list of IP). This is to avoid to have its emails, sent from its Dolibarr instance, fails due to strict antispam rule of some emailing servers.&lt;br /&gt;
**If he chose smtp method, a message will explain him the list of IP he can use if there is restriction on IP by the SMTP agent. If you also need to add a message to help SPF setup, see option &#039;&#039;&#039;MAIN_EXTERNAL_SMTP_SPF_STRING_TO_ADD&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_IMAP_USE_PHPIMAP&#039;&#039;&#039; ► Use embedded PHP-imap library (not using the native php imap) instead of native php imap extension ► (v17.0+, available as official option in setup of emailcollector by default from v19)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_ENABLED_USER_DEST_SELECT&#039;&#039;&#039; ► Show also internal users into list of recipients of email in email sending form ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIL_PREFIX_FOR_EMAIL_ID&#039;&#039;&#039; ► Prefix for the mails ID. Default value is &amp;lt;code&amp;gt;$_SERVER[&amp;quot;SERVER_NAME&amp;quot;]&amp;lt;/code&amp;gt; ► (&amp;gt;= 8.0.1)&lt;br /&gt;
*&#039;&#039;&#039;MAIL_MASS_ACTION_SEARCH_MOST_RECENT_FILE_IF_NOT_FOUND&#039;&#039;&#039; ► When sending an email from a mass action. If the path saved in DB does not point to an existing file, then search for the most recent file and use it as an attahcment.► (&amp;gt;= 24.0.0)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Emailing Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_PREFIX_FOR_EMAIL_ID&#039;&#039;&#039; ► Set the value that will be used to compose the &amp;quot;Email ID&amp;quot; into email headers. If you set this value to &#039;&amp;lt;code&amp;gt;SERVER_NAME&amp;lt;/code&amp;gt;&#039;, the virtual host of web server will be used. By default, this is not defined, so a hash key, unique to each instance, is used.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_NO_USING_PHPMAIL&#039;&#039;&#039; ► If set, the module emailing can&#039;t be used with mail setup of &amp;quot;phpmail&amp;quot;. Using a thirdparty SMTP server is required. You can complete warning message by adding an email to contact for setup help with constant &amp;lt;code&amp;gt;&#039;&#039;&#039;MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS&#039;&#039;&#039;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS&#039;&#039;&#039; ► Contains the email of contact to show into the message visible to a user when he try to use emailing module without SMTP server and if option &#039;&#039;&#039;MAILING_NO_USING_PHPMAIL&#039;&#039;&#039; is set to on.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_LIMIT_WARNING_PHPMAIL&#039;&#039;&#039; ► Show a warning message (var contains the &#039;&#039;&#039;message to show&#039;&#039;&#039;, or &#039;&#039;&#039;translation key&#039;&#039;&#039;) on emailing send form if setup is on &amp;quot;phpmail&amp;quot;. Note: The application always try to translate the message considering the message is a translation key, before showing the translation or message if translation was not found.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_LIMIT_WARNING_NOPHPMAIL&#039;&#039;&#039; ► Show a warning message (var contains the &#039;&#039;&#039;message to show&#039;&#039;&#039;, or &#039;&#039;&#039;translation key&#039;&#039;&#039;) on emailing send form if setup is something else than &amp;quot;phpmail&amp;quot;. Note: The application always try to translation the message considering the message is a translation key, before showing the translation or message if translation was not found.&lt;br /&gt;
*&#039;&#039;&#039;EMAILING_USE_ADVANCED_SELECTOR&#039;&#039;&#039; ► Enable the advanced selector for recipients.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_LIMIT_SENDBYWEB&#039;&#039;&#039; ► Restrict number of emails you can send in same sending session with emailing module from GUI. The value &amp;quot;&amp;lt;code&amp;gt;dolibarr_mailing_limit_sendbyweb&amp;lt;/code&amp;gt;&amp;quot; if defined into config file is used in priority for this limit. A negative value means, sending by web is forbidden.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_LIMIT_SENDBYCLI&#039;&#039;&#039; ► Restrict number of emails you can send in same sending session with emailing module from CLI script. The value &amp;quot;&amp;lt;code&amp;gt;dolibarr_mailing_limit_sendbycli&amp;lt;/code&amp;gt;&amp;quot; if defined into config file is used in priority for this limit.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Expense Report=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;EXPENSEREPORT_ALLOW_OVERLAPPING_PERIODS&#039;&#039;&#039; ► Can enter several expense reports on same or overlapping date periods. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;EXPENSEREPORT_OVERRIDE_VAT&#039;&#039;&#039; ► Setting this constant to 1 will allow expense reports to show VAT even if the global VAT setting is off ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;EXPENSEREPORT_USE_OLD_NUMBERING_RULE&#039;&#039;&#039; ► The module Expense Report use numbering rules that you can setup (like other modules do). If you need to keep the hard-coded numbering rule of expenses report used in v6.0 set this constant to 1 ► (&amp;gt;=v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_EXPENSE_IK&#039;&#039;&#039; ► This feature allows you to set index kilometres against a mileage index for different types of vehicles. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_EXPENSE_RULE&#039;&#039;&#039; ► This feature allows you to set a variety of rules per user/group/all so they can only create reports within their limits. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Export Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;EXPORT_CSV_SEPARATOR_TO_USE&#039;&#039;&#039; ► String value to use as default separator to delimit fields of exported files (by default Dolibarr uses &amp;quot;&amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;&amp;quot;). Example: EXPORT_CSV_SEPARATOR_TO_USE=&amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;EXPORT_CSV_FORCE_CHARSET&#039;&#039;&#039; ► Choose the charset used in the output file built by the CSV exporter. By default it is ISO-8859-1. Example: EXPORT_CSV_FORCE_CHARSET= &amp;lt;code&amp;gt;utf-8&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;EXPORTTOOL_CATEGORIES&#039;&#039;&#039; ► Can export categories (several lines) into one column with the &amp;quot;product export profile&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;USE_STRICT_CSV_RULES&#039;&#039;&#039; ► Use strict/real CSV format for export. Do not clean/replace CR+LF with &#039;\n&#039; but quote them using the escaping CSV char (&amp;lt;code&amp;gt;&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*&#039;&#039;&#039;EXPORTS_SHARE_MODELS&#039;&#039;&#039;  ► Share export models between users.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Foundation Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_URL_REDIRECT_SUBSCRIPTION&#039;&#039;&#039; ► Link called and shown when a member account is autocreated in member module by a guest user.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_EXT_URL_SUBSCRIPTION_INFO&#039;&#039;&#039; ► Link of external page pointed by the &amp;quot;Show here&amp;quot; link added in front of payment cell, into the page to make online subscription.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=Holiday Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;HOLIDAY_HIDE_BALANCE&#039;&#039;&#039; ► Hide the user&#039;s vacation balance on the vacation request page&lt;br /&gt;
&lt;br /&gt;
[https://wiki.dolibarr.org/Setup_Other#Top (back to top)]&lt;br /&gt;
=Interventions Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FICHINTER_CLASSIFY_BILLED&#039;&#039;&#039;► Allow to classify an intervention card as &amp;quot;Billed&amp;quot;. This add also trigger &amp;lt;code&amp;gt;FICHINTER_CLASSIFY_BILLED&amp;lt;/code&amp;gt; into list of possible automatic event into agenda.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FICHINTER_DISABLE_DETAILS&#039;&#039;&#039;► Disable entry of detail lines on intervention. Can validate with no line. Only one line will be shown per intervention on list.&lt;br /&gt;
**If set to &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; details are disabled only on intervention list ► (v21.0+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Invoice Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DEPOSIT_MULTI_TVA&#039;&#039;&#039; ► In deposits invoice, creates one line per VAT rate from the origin document ► (6.0)&lt;br /&gt;
*&#039;&#039;&#039;PDF_INVOICE_SHOW_PRICE_INCL_TAX&#039;&#039;&#039; ► In customer&#039;s invoice, add a column with the total including all taxes  ►&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_ALLOW_REUSE_OF_CREDIT_WHEN_PARTIALLY_REFUNDED&#039;&#039;&#039; ► If a credit note was partially refunded (a refund was sent to the customer), with common situation, we wait to have the remain refunded too. With this option, it is possible to convert the remain of invoice into a discount to reuse it into another invoice.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_INVOICE_ALLOW_REUSE_OF_CREDIT_WHEN_PARTIALLY_REFUNDED&#039;&#039;&#039; ► See INVOICE_ALLOW_REUSE_OF_CREDIT_WHEN_PARTIALLY_REFUNDED, but for supplier credit notes.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_CAN_BE_EDITED_EVEN_IF_PAYMENT_DONE&#039;&#039;&#039; ► Allow to edit invoices even if payment was started. Note: If the module &amp;quot;BlockedLog&amp;quot; is active (required in some countries for legal reasons), this will not change content of archived logs tracked by this module. By definition there is no way to change or remove archived records. It will just update data in your application and a new record to track your change  will be recorded into the archive log.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_CAN_ALWAYS_BE_REMOVED&#039;&#039;&#039; ► Allow to always delete invoices (even if invoice is not last one). Note: If the module &amp;quot;BlockedLog&amp;quot; is active (required by some countries for legal reason), this will not change content of archived logs tracked by this module. By definition there is no way to change or remove archived records. It will just update data in your application and a new record to track your change into the read-only archive log.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_CAN_NEVER_BE_EDITED&#039;&#039;&#039; ► Never allow to edit invoices (except draft invoices with ref like (PROV%)). See also INVOICE_CAN_NEVER_BE_REMOVED.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_CAN_NEVER_BE_REMOVED&#039;&#039;&#039; ► Never allow to delete invoices (except draft invoices with ref like (PROV%)). See also INVOICE_CAN_NEVER_BE_EDITED&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_POSITIVE_CREDIT_NOTE&#039;&#039;&#039; ► All amounts on PDF credit notes are positive.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FACTURE_DEPOSITS_ARE_JUST_PAYMENTS&#039;&#039;&#039; ► An old way to create initial payment. This treats deposit invoices as a special case and not as legal deposit invoice. Deposit invoices don&#039;t get counted on turnover. They are then applied as a payment, like a discount, on the final invoice. By default, when you include the deposit into draft of final invoice, the amount of final invoice is reduced. With this option, final amount is not reduced but a payment is registered. WARNING: In a lot of european countries, using this option is not allowed.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FACTURE_SENDBYEMAIL_FOR_ALL_STATUS&#039;&#039;&#039; ► Can send invoice by email to customer even if invoice has status &amp;quot;draft&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_CREDIT_NOTE_STANDALONE&#039;&#039;&#039; ► Start implementation to allow a credit note even without invoice (dangerous) ► (v3.9)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_USE_SITUATION&#039;&#039;&#039; ► 1=Enable the &amp;quot;situation invoice&amp;quot; feature. Warning, this feature is bugged and may not be compatible with the final version of the feature once the bug will be solved. Also, using the double-entry accountancy module is not possible when this option is on (due to the same design problem). 2=Enable the &amp;quot;situation invoice&amp;quot; feature with a rewrite. This mode should be better to become a future stable feature.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_USE_SITUATION_CREDIT_NOTE&#039;&#039;&#039; ► Enable the &amp;quot;situation credit note&amp;quot; feature (need &amp;lt;code&amp;gt;INVOICE_USE_SITUATION&amp;lt;/code&amp;gt;) ► (v8.0)&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_USE_RETAINED_WARRANTY&#039;&#039;&#039; ► Enable the retained warranty on invoice ► (v14.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_DISABLE_DEPOSIT&#039;&#039;&#039; ► Disable deposit invoices&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_DISABLE_REPLACEMENT&#039;&#039;&#039; ► Disable replacement invoices&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_DISABLE_CREDIT_NOTE&#039;&#039;&#039; ► Disable credit notes&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;bdi&amp;gt;&#039;&#039;&#039;INVOICE_ADD_EXTRAFIELD_IN_NOTE&#039;&#039;&#039; ► Add extrafields in note for canelle template ► (v17.0+)&amp;lt;/bdi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_DEFAULT_NOTE_PUBLIC&#039;&#039;&#039; &amp;lt;bdi&amp;gt;► Default text in public note&amp;lt;/bdi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: To decode a QR image of a ZATCA code: https://www.onlinebarcodereader.com/. You can also use the mobile application https://play.google.com/store/apps/details?id=com.posbankbh.einvoiceqrreader&amp;amp;gl=FR&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT&#039;&#039;&#039; ► See PDF option&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_COLUMN&#039;&#039;&#039; ► See PDF options&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;WORKFLOW_BILL_ON_SHIPMENT&#039;&#039;&#039; ► Change label of button with suitable label when you need to create invoice on shipments&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039; ► When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. Use the tag __DIRECTDOWNLOAD_URL_INVOICE__ in email template to insert it. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_POINTOFTAX_DATE&#039;&#039;&#039; ► Add Point of Tax Date on invoices for country-specific legality reasons ► (v4.0+)&lt;br /&gt;
*&#039;&#039;&#039;FACTURE_ENABLE_NEGATIVE&#039;&#039;&#039; ► Can validate an invoice when amount is negative&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FACTURE_ENABLE_NEGATIVE_LINES&#039;&#039;&#039; ► Allows to add negative lines to an invoice ► (v8.0.2+)&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_INVOICE_ENABLE_NEGATIVE&#039;&#039;&#039; ► Can validate an supplier invoice when amount is negative ► (V21 ?)&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_INVOICE_ENABLE_NEGATIVE_LINES&#039;&#039;&#039; ► Allows to add negative lines to an supplier invoice ► (V21 ?)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_USE_DEFAULT_DOCUMENT&#039;&#039;&#039; ► Allow user to select a default invoice documents models according to invoice type. On invoice create page, the model is dynamically changed on invoice type selection. ► (v9.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FACTURE_REUSE_NOTES_ON_CREATE_FROM&#039;&#039;&#039; ► Reuse the Public Note and Private note of the previous object (Proposal,...) when creating the bill.&lt;br /&gt;
*&#039;&#039;&#039;FACTUREFOURN_REUSE_NOTES_ON_CREATE_FROM&#039;&#039;&#039; ► Reuse the Public Note and Private note of the previous object when creating the supplier bill ► (V13.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_FACNUMBER_IN_DISCOUNT_LIST&#039;&#039;&#039; ► Display the reference of credit notes in discount list when creating the bill.&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_ALLOW_FREE_REF&#039;&#039;&#039; ► Capability to change reference of an invoice. This will be possible as long as the invoice has the status “Draft” and only if your country is not in Europe(V11)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_DISALLOW_REOPEN&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_MAX_FUTURE_DELAY&#039;&#039;&#039; ► Numbers of seconds allowed for billing in the future ► (V14.0)&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_AUTO_NEXT_MONTH_ON_LINES&#039;&#039;&#039; ► Increase start date and end date by one month, if an invoice line is a clone of a time based service AND if this services started on the first day of month and ended on the last day of month ► (V13.0.1)&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_KEEP_DISCOUNT_LINES_AS_IN_ORIGIN&#039;&#039;&#039; ► Does not change a line with a negative price into an absolute discount when creating an invoice ► (V16 ?)&lt;br /&gt;
*&#039;&#039;&#039;INVOICEREC_SET_AUTOFILL_DATE_START&#039;&#039;&#039; and &#039;&#039;&#039;INVOICEREC_SET_AUTOFILL_DATE_END ►&#039;&#039;&#039; Set start and end date to yes for lines of template invoice when created from a draft invoice ► (V16)&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_REC_DATE_TO_YES&#039;&#039;&#039; &#039;&#039;&#039;►&#039;&#039;&#039; Set start and end date to yes by default in add line form for template invoice ► (V16)&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_SUBTYPE_ENABLED&#039;&#039;&#039; ► Extends Dolibarr standard invoice with more invoice types used in some countries. A combo box in the new invoice creation card allows the selection of &amp;quot;subtypes&amp;quot; with values from dictionary &amp;quot;Invoice Subtypes&amp;quot; ► (v19.0+)&lt;br /&gt;
*&#039;&#039;&#039;LIST_OF_QUALIFIED_INVOICES_LIMIT_DEFINED&#039;&#039;&#039; &#039;&#039;&#039;►&#039;&#039;&#039; Perf options to limit list of invoices for &amp;quot;credit note&amp;quot; source (on form &amp;quot;create a credit note&amp;quot;), usable for big quantities of invoices for one customer like you can have with TakePos ► (V22+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Leave=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NON_WORKING_DAYS_INCLUDE_SATURDAY&#039;&#039;&#039; ► Set this value to 0 if you want to have the Saturday as a working day&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NON_WORKING_DAYS_INCLUDE_SUNDAY&#039;&#039;&#039; ► Set this value to 0 if you want to have the Sunday as a working day&lt;br /&gt;
&lt;br /&gt;
=Look or Theme=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FAVICON_URL&#039;&#039;&#039; ► favicon url&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EASTER_EGG_COMMITSTRIP&#039;&#039;&#039; ► Show a comic image from the CommitStrip website. Images are refreshed daily. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_INCLUDE_GLOBAL_STATS_IN_OPENED_DASHBOARD&#039;&#039;&#039; ► This conf will auto remove global stats box item if there are already in the new dashboard of opened elements and keep displayed stats on the opened item box (not only on mouse over) ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_TOP_MENU_SEARCH_DROPDOWN&#039;&#039;&#039; ► Actually only for eldy theme, this conf move search input  to top menu and use new design too ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THEME_AGRESSIVENESS_RATIO&#039;&#039;&#039; ► This conf can be used to increase/decrease aggressiveness of colors. Value 0 is medium, value is between -100 (light grey colors) to +100 (very flashy colors) ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THEME_SHOW_BORDER_ON_INPUT&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_GLOBAL_WORKBOARD&#039;&#039;&#039; ► Hide the work board of the main page ► (v13.0+)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_GLOBAL_BOXSTATS&#039;&#039;&#039; ► Hide the Statistic Box of the main page&lt;br /&gt;
*&#039;&#039;&#039;ALLOW_THEME_JS ►&#039;&#039;&#039; Allow JS file in theme folder (same name as theme folder)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Manifest (Progressive Web App)=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MANIFEST_APPLI_THEME_COLOR ►&#039;&#039;&#039; Theme color for manifest&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MANIFEST_APPLI_BG_COLOR ►&#039;&#039;&#039; Background color  for manifest&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MANIFEST_APPLI_LOGO_URL  ►&#039;&#039;&#039; Logo for manifest&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MANIFEST_APPLI_LOGO_URL_SIZE  ►&#039;&#039;&#039; Logo url size for app (150, 192, 512px) missing 3 configurations&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Order Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MASSACTION_CREATEBILLS_REDIRECT_IF_ONE&#039;&#039;&#039; ► If set 1, redirects to the one bill created from massaction create bills from order list ► (v20.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MASSACTION_CREATEBILLS_REDIRECT_IF_MANY&#039;&#039;&#039; ► If set to 1, redirects to the invoice list after plural invoices where generated from tho massaction create bills from order list  ► (v20.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ORDERLIST_CREATEBILLS_ONEBYTHIRD&#039;&#039;&#039; ► Allow defining value for option &amp;quot;one by thirdparty&amp;quot; in massaction create bills from orders list page (no by default, yes if set to &#039;yes&#039; or 1) ► (v20.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_PROPAL_REFCLIENT_FOR_ORDER&#039;&#039;&#039; =&amp;gt; Copy customer reference from proposal to order. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ORDER_REQUIRE_SOURCE&#039;&#039;&#039; =&amp;gt; Make the input field &amp;quot;Source of order&amp;quot; mandatory.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ORDER_VALID_AFTER_CLOSE_PROPAL&#039;&#039;&#039; =&amp;gt; When an order is created on a proposal close, the order is directly defined with status &amp;quot;Validated&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ORDER_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039; =&amp;gt; When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ORDER_ENABLE_NEGATIVE&#039;&#039;&#039; =&amp;gt; Can validate an order when amount is negative&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_PROPAGATE_EXTRAFIELDS_TO_ORDER&#039;&#039;&#039; =&amp;gt; Copy also extrafields from thirdparty to order (if name match). ► (v11.0+)&lt;br /&gt;
*&#039;&#039;&#039;ORDER_DEFAULT_NOTE_PUBLIC&#039;&#039;&#039; ► Default text in public note&lt;br /&gt;
*&#039;&#039;&#039;MAIN_REMOVE_DROPDOWN_CREATE_BUTTONS_ON_ORDER&#039;&#039;&#039; =&amp;gt; Remove the create dropdown button on order card (introduce on v19) to come back with old buttons.  &#039;&#039;&#039;►&#039;&#039;&#039; (v20.0+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=PDF Options=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ADD_PDF_BACKGROUND&#039;&#039;&#039; ► Define this constant with short name of a PDF file (example &amp;quot;&amp;lt;code&amp;gt;mypdf.pdf&amp;lt;/code&amp;gt;&amp;quot;) that must be saved into directory &amp;quot;&amp;lt;code&amp;gt;documents/mycompany&amp;lt;/code&amp;gt;&amp;quot;. This will add PDF as a background of some of your generated PDF files (proposals,invoices,orders). If you need to concat PDF, see instead [[Module Concat PDF]].&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_FORCE_SAVEAS&#039;&#039;&#039; ► If your browser always asks to save downloaded files on disk (like PDF), try this this option. File may be displayed directly in your browser. Values&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: 0= Default (file is auto downloaded), 1= For to output the file into the browser tab, 2= For to output the file into a browser tab open with target_blank&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_PDF_AUTOUPDATE&#039;&#039;&#039; ► Disable automatic generation of PDF each time we add/update/delete a product line (we can still build document by clicking on &amp;quot;Generate&amp;quot;). This option may increase interface speed on servers with low CPU.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_PDF_COMPRESSION&#039;&#039;&#039; ► Disable PDF compression.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOCUMENTS_WITH_PICTURE_WIDTH&#039;&#039;&#039; ► Can change size of picture when hidden option &amp;lt;code&amp;gt;MAIN_GENERATE_PROPOSALS_WITH_PICTURE&amp;lt;/code&amp;gt; is used. By default value is &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS&#039;&#039;&#039; ► Adding the company address at the bottom of the page. Disabled by default&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_PROPOSALS_WITH_PICTURE&#039;&#039;&#039; ► Include the first image of the product into the line of the generated PDF for customer proposals.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_ORDERS_WITH_PICTURE&#039;&#039;&#039; ► Include the first image of the product into the line of the generated PDF for customer orders.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_INVOICES_WITH_PICTURE&#039;&#039;&#039; ► Include the first image of the product into the line of the generated PDF for customer invoices.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_SUPPLIER_PROPOSAL_WITH_PICTURE&#039;&#039;&#039; ► Include the first image of the product into the line of the generated PDF for supplier proposals ► (v5.0.3+)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_SUPPLIER_ORDER_WITH_PICTURE&#039;&#039;&#039; ► Include the first image of the product into the line of the generated PDF for supplier orders&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT&#039;&#039;&#039; ► Disable VAT on generated documents. like for an association. (Works with crabe template)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_COLUMN&#039;&#039;&#039; ► Hide column with VAT information but only column not total.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_INVERT_SENDER_RECIPIENT&#039;&#039;&#039; ► Invert sender and recipient in some PDF. Note: This option is set automatically if country if Germany.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ODT_AS_PDF&#039;&#039;&#039; ► Activate ODT to PDF conversion. Value can be &amp;quot;libreoffice&amp;quot; or &amp;quot;unoconv&amp;quot;. Do not use value &#039;&#039;&#039;&amp;lt;nowiki/&amp;gt;&#039;jodconverter&#039;&amp;lt;nowiki/&amp;gt;&#039;&#039;&#039; any more, as it is declared deprecated and partly not functional, use value &#039;&#039;&#039;&amp;lt;nowiki/&amp;gt;&#039;libreoffice&#039;&#039;&#039;&#039; instead, it requires only &#039;&#039;&#039;soffice&#039;&#039;&#039; (OpenOffice or LibreOffice) installed on server (use &#039;&#039;&#039;apt install soffice libreoffice-common libreoffice-writer&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
If you got this error: javaldx failed! Warning: failed to read path from javaldx with no return to prompt when running soffice --headless -env:UserInstallation=file:&amp;quot;/tmp&amp;quot; --convert-to pdf --outdir xxx ./yyy.odt, check that directory defined into env:UserInstallation parameters exists and is writeable.&lt;br /&gt;
&lt;br /&gt;
You may also have a look at this page if your server is on Windows: [[Générer automatiquement des documents PDF à partir de fichier ODT avec Doliwamp]]&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ODT_AS_PDF_DEL_SOURCE&#039;&#039;&#039; ► For ODT generation. If set, then initial behaviour is conserved but ODT file is removed when option to convert it as PDF (see previous) is on. Disabled by default&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_FORCE_FONT&#039;&#039;&#039; ► To ignore font defined into language file and force usage of a particular font. For example &amp;quot;&amp;lt;code&amp;gt;DejaVuSans&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_FORCE_FONT_SIZE&#039;&#039;&#039; ► To force size of font (by default 10). For example &amp;quot;&amp;lt;code&amp;gt;12&amp;lt;/code&amp;gt;&amp;quot; ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_FREETEXT_HEIGHT&#039;&#039;&#039; ► Change height of space reserved to output the free text.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_TITLE_BACKGROUND_COLOR&#039;&#039;&#039; ► Can define a background color onto title line. Example: &amp;lt;code&amp;gt;220,220,200&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_USE_LARGE_LOGO&#039;&#039;&#039; ► Use the original logo with its higher resolution into the PDF instead of the small thumb. This may lead to very very large PDF !&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_BACKGROUND_ON_PDF&#039;&#039;&#039; ► Define this constant with short name of an image (example &amp;quot;&amp;lt;code&amp;gt;myimage.jpg&amp;lt;/code&amp;gt;&amp;quot;) that must be saved into directory &amp;quot;&amp;lt;code&amp;gt;documents/mycompany/logos&amp;lt;/code&amp;gt;&amp;quot;. This will add this background image into your generated PDF files.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_COMPANY_NAME_OF_CONTACT&#039;&#039;&#039; ► Use contact name and information rather than company&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_ADDALSOTARGETDETAILS&#039;&#039;&#039; ► If 1, add details of recipient on generated PDFs (email, fax, url and phone). Can be useful in cases where a printed order/invoice etc is given to a delivery driver/courier etc.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_TVAINTRA_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show VAT N° in source address of PDF to comply with legalities in certain countries. Note that VAT number should be already visible in footer of page ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING&#039;&#039;&#039; ► Add optional esign field in pdf propal ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROFID1_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 1 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROFID2_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 2 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROFID3_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 3 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROFID4_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 4 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROFID5_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 5 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROFID6_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 6 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_BANK_HIDE_NUMBER_SHOW_ONLY_BICIBAN&#039;&#039;&#039; ► Hide bank number (&amp;quot;code banque/guichet/compte&amp;quot; for France, &amp;quot;sort code/account number&amp;quot; for GB, ...) and keep only BIC/IBAN on PDF.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_BOLD_PRODUCT_REF_AND_PERIOD&#039;&#039;&#039; ► Add more visibility (bold) on product ref and period of service in desc. ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_HIDE_PRODUCT_REF_IN_SUPPLIER_LINES&#039;&#039;&#039; ► Modify the use/position of Supplier Ref/Internal Ref with the item Label (name) on PDF documents.&lt;br /&gt;
&lt;br /&gt;
Default (constant not set or Value &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;): Internal ref followed by supplier ref in brackets.&amp;quot;COMPANY-REF-001 (Vendor SKU SUPPLIER-REF-001) - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Value &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;: Supplier ref only eg.&amp;quot;SUPPLIER-REF-001 - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Value &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;: Supplier ref followed by internal ref in brackets. eg.&amp;quot;SUPPLIER-REF-001 (InternalRef COMPANY-REF-001) - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME&#039;&#039;&#039; ► Include alternative/alias name into name on PDF.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_SECURITY_ENCRYPTION&#039;&#039;&#039; ► Encrypt PDF produced by dolibarr. See additional parameters&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;:PDF_SECURITY_ENCRYPTION_RIGHTS (block &#039;modify&#039; or &#039;copy&#039;) - &#039;&#039;&#039;PDF_SECURITY_ENCRYPTION_USERPASS&#039;&#039;&#039; - &#039;&#039;&#039;PDF_SECURITY_ENCRYPTION_OWNERPASS&#039;&#039;&#039; (random if not specified) - &#039;&#039;&#039;PDF_SECURITY_ENCRYPTION_STRENGTH&#039;&#039;&#039; (0 = RC4 40 bit; 1 = RC4 128 bit; 2 = AES 128 bit; 3 = AES 256 bit) - &#039;&#039;&#039;PDF_SECURITY_ENCRYPTION_PUBKEYS&#039;&#039;&#039; Array of recipients containing public-key certificates (&#039;c&#039;) and permissions (&#039;p&#039;) - For example: array(array(&#039;c&#039; =&amp;gt; &#039;file://../examples/data/cert/tcpdf.crt&#039;, &#039;p&#039; =&amp;gt; array(&#039;print&#039;))). WARNING: if an &#039;encrypted PDF&#039; provides a protection against manual change done by mistake, it does NOT provide any protection against modification of your PDF in a security point of view: A protected PDF can still be modified by any advanced PDF editors. Don&#039;t forget this: If a software can read the PDF, this software can also rebuild it differently !&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_SHOW_PROJECT&#039;&#039;&#039; ► Show project onto PDF (supported on supplier order only for the moment)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_USE_ALSO_LANGUAGE_CODE&#039;&#039;&#039; ► The value of this constant must be a language code (&#039;fr_FR&#039;, &#039;en_US&#039;, &#039;sa_SA&#039;, ...). If set, the PDF document will contains both language (default and the one defined by the constant).&lt;br /&gt;
*&#039;&#039;&#039;DOC_SHOW_FIRST_SALES_REP&#039;&#039;&#039; ► Show the sales representant on header (at least on propal azur and rubis template)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_DASH_BETWEEN_LINES&#039;&#039;&#039;&lt;br /&gt;
*&lt;br /&gt;
*&#039;&#039;&#039;SHOW_SUBPRODUCT_REF_IN_PDF&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;PDF_HIDE_PRODUCT_LABEL_IN_SUPPLIER_LINES&#039;&#039;&#039; ► hide product label in supplier order lines (V15+)&lt;br /&gt;
*&#039;&#039;&#039;SHIPPING_PDF_DISPLAY_AMOUNT_HT&#039;&#039;&#039; ► Show HT unit price and HT total price for lines of PDF shipment&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOCUMENTS_HIDE_DESCRIPTION_FOR_FACTURE&#039;&#039;&#039; ► To Hide product description in Customer Invoice&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOCUMENTS_HIDE_DESCRIPTION_FOR_COMMANDE&#039;&#039;&#039; ► To Hide product description in Sales Order&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOCUMENTS_HIDE_DESCRIPTION_FOR_ORDER_SUPPLIER&#039;&#039;&#039; ► To Hide product description in Purchase Order&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOCUMENTS_HIDE_DESCRIPTION_FOR_INVOICE_SUPPLIER&#039;&#039;&#039; ► To Hide product description in Vendor Invoice&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_PROPAL_SHOW_PRICE_INCL_TAX&#039;&#039;&#039; ► Display price with tax on Proposal(cyan template) (V17+)&lt;br /&gt;
*&#039;&#039;&#039;PDF_ORDER_SHOW_PRICE_INCL_TAX&#039;&#039;&#039; ► Display price with tax on Order(eratosthene template) (V17+)&lt;br /&gt;
*&#039;&#039;&#039;PDF_INVOICE_SHOW_PRICE_INCL_TAX&#039;&#039;&#039; ► Display price with tax on Invoice(sponge template) (V17+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_USE_GETALIASNBPAGE_FOR_TOTAL&#039;&#039;&#039; ► Display the page number alias&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_NO_SENDER_FRAME&#039;&#039;&#039; ► Do not display the &amp;quot;sender&amp;quot; mention&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_HIDE_SENDER_NAME&#039;&#039;&#039; ► Do not display the sender name&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_NO_RECIPENT_FRAME&#039;&#039;&#039; ► Do not display BillTo&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MULTICURRENCY_SHOW_ALSO_MAIN_CURRENCY_ON_PDF&#039;&#039;&#039; ► Show the amount in the 2 currencies on PDF when using the MultiCurrency module&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_DONOTREPEAT_HEAD ►&#039;&#039;&#039; Do not repeat the header of document&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Point of Sale (POS)=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CASHDESK_SHOW_KEYPAD&#039;&#039;&#039; ► Show a mouse key pad into the &#039;Simple Point of Sale&#039; module.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;POS_ADDON&#039;&#039;&#039; ► Set this value to an existing numbering module rule (for example &#039;&amp;lt;code&amp;gt;mod_facture_terre&amp;lt;/code&amp;gt;&#039;, &#039;&amp;lt;code&amp;gt;mod_facture_mars&amp;lt;/code&amp;gt;&#039;, ...) to force the numbering module to use for invoice ref definition when invoice is created by the POS. For example setting value &amp;lt;code&amp;gt;POS_ADDON&amp;lt;/code&amp;gt; to &#039;&amp;lt;code&amp;gt;mod_facture_terre&amp;lt;/code&amp;gt;&#039; will use the numbering module &#039;&amp;lt;code&amp;gt;terre&amp;lt;/code&amp;gt;&#039; for invoice generated from POS, whatever is the numbering rule defined into invoice module setup (you can also use POS_NUMBERING_TERRE_FORCE_PREFIX and POS_NUMBERING_MARS_FORCE_PREFIX variable to change the prefix used).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;TAKEPOS_ENABLE_SUMUP&#039;&#039;&#039; ► Enable the compatibility of TakePOS with the card reader terminal [https://SumUp.fr SumUp]&lt;br /&gt;
*&#039;&#039;&#039;TAKEPOS_CAN_FORCE_BANK_ACCOUNT_DURING_PAYMENT&#039;&#039;&#039; ► Possibility to force the bank account during the payment in TakePOS  ► (v13.0)&lt;br /&gt;
*&#039;&#039;&#039;TAKEPOS_CONTROL_CASH_OPENING&#039;&#039;&#039; ► Control the cash opening&lt;br /&gt;
*&#039;&#039;&#039;TAKEPOS_NUMPAD_FORCE_PAYMENT_ICONS_LABELS&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Products Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CATEGORY_GRAPHSTATS_ON_PRODUCTS&#039;&#039;&#039; ► Show graph of products with categories and totals in Products Area screen&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PRODUCT_DISABLE_CUSTOMCOUNTRYCODE&#039;&#039;&#039; ► Avoid customs code and country of origin to be set as product description when added to Propal/Order/Invoice&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_ADD_TYPE_IN_DOCUMENTS&#039;&#039;&#039; ► Add text &amp;quot;Product&amp;quot; or &amp;quot;Service&amp;quot; at beginning of details lines on built PDF documents.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DONOTSEARCH_ANYWHERE&#039;&#039;&#039; ► When Ajax search is enabled, search is done on criteria anywhere in label of product. By adding this option, search is done only on start of label. This is really faster when you have a huge number of products.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DIRECT_STATUS_UPDATE&#039;&#039;&#039; ► Allows you to change the status of the product (&#039;&#039;for sale/not for sale for purchase/not for purchase&#039;&#039;) directly on the product page via a &#039;&#039;on/off&#039;&#039; switch button. This can be convenient for those who need to quickly disable certain statuses of products without having to go through the editing product page individually. Also can be very useful if used as a filter on the product and product search list. This option doesn&#039;t generate a MODIFY trigger, so be careful with external modules. ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SEARCH_PRODUCT_BY_FOURN_REF&#039;&#039;&#039; ►  Allow to search a product by supplier ref in document&#039;s add line form. ► (&amp;gt;= 8.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_FREE_LINES&#039;&#039;&#039; ► Disallow using free lines to add line in documents ► (&amp;gt;= 8.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_PRODUCT_ACTIVITY_TRIM&#039;&#039;&#039; ► Show Product and Services turnover before for all four quarters tax over recent years recent years on the product area ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_DESC_IN_LIST&#039;&#039;&#039; ► Show long description of product/service into lists.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_PROPAGATE_CUSTOMER_PRICES_ON_CHILD_COMPANIES&#039;&#039;&#039; ► Disable propagation of prices per customer from a customer to its child company.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_PUBLIC_URL&#039;&#039;&#039; ► Disable public url in product card ► (v14.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_STOCK_LEVELS&#039;&#039;&#039; ► Disable properties of stock limits and desired optimal value on product ► (v14.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_NATURE&#039;&#039;&#039; ► Disable nature in product card ► (v14.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_WEIGHT&#039;&#039;&#039; ► Disable weight in product card ► (v14.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_PRICES&#039;&#039;&#039; ► Disable prices in product card ► (v14.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_ACCOUNTING&#039;&#039;&#039;  ► Disable accounting in product card ► (v14.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_SIZE&#039;&#039;&#039; ► Disable size in product card.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_LENGTH&#039;&#039;&#039; ► Disable length in product card ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_SURFACE&#039;&#039;&#039; ► Disable surface in product card. ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_VOLUME&#039;&#039;&#039; ► Disable volume in product card.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_CUSTOM_INFO&#039;&#039;&#039; ► Disable custom info (custom code and country origin) in product/service card.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_MULTIPRICES_USE_VAT_PER_LEVEL&#039;&#039;&#039; ► When option to use price per level/segment is on, this allows to also set a dedicated vat for each price level.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_CUSTOMER_PRICES_BY_QTY&#039;&#039;&#039; ► If price per quantity ► &#039;&#039;Experimental&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES&#039;&#039;&#039; ► If price per quantity and customer ► &#039;&#039;Experimental&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_LOT_ENABLE_QUALITY_CONTROL&#039;&#039;&#039; ► Enable feature (Display fields for life time and quality control duration) for quality control on product and lot&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_MAX_LENGTH_COMBO&#039;&#039;&#039; ► Limit the length of the label displayed when adding lines in proposals/invoices/orders&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_MAX_VISIBLE_PHOTO&#039;&#039;&#039; ► Show a maximum number of product photos (as thumbnails) on the product main card. Example, setting this constant to &#039;&amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;&#039; will show the first five product photos found on the product card.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_PDF_MERGE_PROPAL&#039;&#039;&#039; ► Enable module Propal merge product PDF&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_USE_OLD_PATH_FOR_PHOTO&#039;&#039;&#039; ► Ask dolibarr to check also old path (before 3.7) where photos were stored.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_USE_UNITS&#039;&#039;&#039; ► Add other units on products (Use same dictionary as default unit feature) and propagate this unit on line of documents.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EDIT_LINE_ALLOW_ALL_UNIT_TYPE ►&#039;&#039;&#039; Allow the selection of other unit types when editing the document line&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;RESOURCE_ON_PRODUCTS&#039;&#039;&#039; ► Allow to affect resources on products/services ► (v10.0+)&lt;br /&gt;
*&#039;&#039;&#039;RESOURCE_ON_SERVICES&#039;&#039;&#039; ► Allow to affect resources on products/services ► (v10.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_SHOW_ORIGIN_IN_COMBO&#039;&#039;&#039; ► Show origin of products when adding lines in proposals/invoices/orders ► (v12.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_ATTRIBUTES_HIDECHILD&#039;&#039;&#039;  ► Add option hide child if variantes&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_ADD_FORM_ADD_TO&#039;&#039;&#039; ► Add a product to a draft proposal/order/invoice, from the product card.&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_SELLBY&#039;&#039;&#039; ► Hide the Sell by date ► (v13.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_EATBY&#039;&#039;&#039; ► Hide the Eat by date ► (v13.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DENY_CHANGE_PRODUCT_TYPE&#039;&#039;&#039; ► Forbid to change the product type&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_SORT_BY_CATEGORY&#039;&#039;&#039; ► Sort the product by categories instead of by ID&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_ADD_NET_MEASURE&#039;&#039;&#039; ► Support Net Measure in product&#039;s card.php (For real weight, volume or piece; needed for some business ie fruits, vegetables....). Note brut value is already available natively, use this option only if you need 2 weights, 2 volumes, ...for each product) ► (v11.0.1+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_PRICE_BASE_TYPE&#039;&#039;&#039;  ► value &#039;TTC&#039; / &#039;HT&#039; specify the default value of the price (with or without taxes) ► (v16.0.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_LOAD_EXTRAFIELD_INTO_OBJECTLINES&#039;&#039;&#039; ► Load product extrafiled on object lines&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_USE_SUB_COST_PRICES_IF_COST_PRICE_EMPTY&#039;&#039;&#039;&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: Calculate the parent product production price by child prices.&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_SEARCH_AUTO_SELECT_IF_ONLY_ONE&#039;&#039;&#039;&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: Set to 0 to disable or 1 to enable (by default) the auto select product behavior in combobox when there is only one result.(v21.0+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Projects Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_ALLOW_TO_LINK_FROM_OTHER_COMPANY&#039;&#039;&#039; ► Option related to the combo list Project on elements. It is a list of thirdparty IDs. If set, you can link an object to a project owned by one of this thirdparty in the list.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_ALLOW_COMMENT_ON_PROJECT&#039;&#039;&#039; ► Add comment feature on a project&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_ALLOW_COMMENT_ON_TASK&#039;&#039;&#039; ► Add comment feature on project task&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_ALWAYS_DISCARD_CLOSED_PROJECTS_IN_SELECT&#039;&#039;&#039; ► Discards closed projects in every select field. A closed project can&#039;t be associated to an object ► (v20.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS&#039;&#039;&#039; ► Option related to the combo list Project on elements. Can link a supplier element (vendor proposal, purchase order, vendor invoice, reception, ...) to any project even if object has a different supplier than the one of the project to link to. See also PROJECT_ALLOW_TO_LINK_FROM_OTHER_COMPANY that is different because it allows to define some given thirdparty ID to allow.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_CAN_ALWAYS_LINK_TO_ALL_CUSTOMERS&#039;&#039;&#039; ► Option related to the combo list Project on elements. Can link a custom element (proposal, sale order, vendor invoice, shipment, ...) to any project even if object has a different customer than the one of the project to link to.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_CREATE_ON_OVERVIEW_DISABLED&#039;&#039;&#039; ► Hide the &amp;quot;create ...&amp;quot; button on the overview pagec&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_DISABLE_UNLINK_FROM_OVERVIEW&#039;&#039;&#039; ► Enable removing the button from a link in the project overview. ► (&amp;gt;= v8.0.1)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_HIDE_UNSELECTABLES&#039;&#039;&#039; ► Hide into select list, all project that we can&#039;t select (closed or draft)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_HIDE_TASKS&#039;&#039;&#039; ► Hide tasks. For user using project only as an analytics key and not using tasks.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_LIST_SHOW_STARTDATE&#039;&#039;&#039; ► Shows start date of projects in project lists.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_LINK_ON_OVERWIEW_DISABLED&#039;&#039;&#039; ► Hide the &amp;quot;link to&amp;quot; form on the overview page ► (v4.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_SHOW_REF_INTO_LISTS&#039;&#039;&#039; ► Add column with project ref into list (with 3.7 list of supplier invoices only, will be expanded to other lists)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_TIME_ON_ALL_TASKS_MY_PROJECTS&#039;&#039;&#039; ► Can add time spent on tasks, even if i am not assigned to task (however, task must be a project i am a contact).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_OPEN_ALWAYS_ON_TAB&#039;&#039;&#039; ► Set to value &#039;task&#039;, or &#039;preview&#039; to always open the project on the given tab instead of main tab.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_ELEMENTS_FOR_MINUS_MARGIN&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;TIMESPENT_ALWAYS_UPDATE_THM&#039;&#039;&#039; ► when it&#039;s on always check current time of user to update it in task time line ► (v17.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_CREATE_NO_DRAFT&#039;&#039;&#039; ► when you create project status will be validate ► (v19.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_ENABLE_SUB_PROJECT&#039;&#039;&#039; ► Add support for parent projects ► (v19.0)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Proposals Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_PROPOSALS_WITH_PICTURE&#039;&#039;&#039; ► Add a picture of the product (the first one found if there are several) into the generated PDF of proposals. Note that using this will reduce the available width for the product description.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROPAL_CHOOSE_ODT_DOCUMENT&#039;&#039;&#039; ► On setup page, you&#039;ll be able to select which ODT document to use when close or cancel proposals.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING&#039;&#039;&#039; ► add optional esign field in pdf propal ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROPAL_CLONE_ON_CREATE_PAGE&#039;&#039;&#039; ► On the create proposal page, ask if we want to create the proposal by cloning an already existing one. You should use instead the &amp;quot;Clone&amp;quot; button available on existing proposals.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROPAL_DISABLE_SIGNATURE&#039;&#039;&#039; ► Do no show the box for signature.&lt;br /&gt;
*&#039;&#039;&#039;PROPAL_SIGNATURE_ON_SPECIFIC_PAGE ►&#039;&#039;&#039; Will show the signature on which page you wanted . Set to 1 will show on first page , set to -1 will show on last second page .  ( If &#039;&#039;&#039;PROPAL_SIGNATURE_ON_ALL_PAGES&#039;&#039;&#039; is enabled, the &#039;&#039;&#039;PROPAL_SIGNATURE_ON_SPECIFIC_PAGE&#039;&#039;&#039; setting will be ignored.)&lt;br /&gt;
*&#039;&#039;&#039;PROPAL_SIGNATURE_ON_ALL_PAGES ►&#039;&#039;&#039; Will show the signature on every pages .&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_PDF_MERGE_PROPAL&#039;&#039;&#039; ► When generating the proposal PDF, all PDFs linked to products linked to proposal are also included into final PDF&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROPOSAL_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039; ► When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROPOSAL_AUTO_ADD_AUTHOR_AS_CONTACT&#039;&#039;&#039; ► Add Proposal Author as user contact follow proposal&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROPOSAL_PDF_HIDE_PAYMENTTERM&#039;&#039;&#039; ► Do not show the payment term on proposal ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROPOSAL_PDF_HIDE_PAYMENTMODE&#039;&#039;&#039; ► Do not show the payment mode on proposal ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;WORKFLOW_PROPAL_CAN_CLASSIFY_BILLED_WITHOUT_INVOICES&#039;&#039;&#039; ► Button &amp;quot;Classified Billed&amp;quot; is visible on proposal even if there is no invoice linked to proposal.&lt;br /&gt;
*&#039;&#039;&#039;PROPAL_REOPEN_UNSIGNED_ONLY&#039;&#039;&#039;  ► Do not allow reopening of signed (or billed) proposals. (V15)&lt;br /&gt;
*&#039;&#039;&#039;PROPOSAL_ARE_NOT_BILLABLE&#039;&#039;&#039;  ► Disable billing button on proposals (V15)&lt;br /&gt;
*&#039;&#039;&#039;PROPAL_DEFAULT_NOTE_PUBLIC&#039;&#039;&#039; ► Default text in public note&lt;br /&gt;
*&#039;&#039;&#039;PROPAL_ENABLE_NEGATIVE&#039;&#039;&#039; ► Can validate a proposal when amount is negative&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Receptions=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;RECEPTION_STANDALONE&#039;&#039;&#039; ► Create a simple Reception not connected to supplier order, warehouse, stock e.t.c. (&amp;gt;=23.0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
= Recruitment =&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;RECRUITMENT_NEWFORM_TEXT&#039;&#039;&#039;► Add a custom text on public recruitment page&lt;br /&gt;
*&#039;&#039;&#039;MAIN_RECRUITMENT_CSS_URL ►&#039;&#039;&#039;Path of custom css file for recruitment public page&lt;br /&gt;
*&#039;&#039;&#039;RECRUITMENT_IMAGE_PUBLIC_INTERFACE ►&#039;&#039;&#039;Path of custom image for recruitment public page&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Services Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SERVICE_ARE_ECOMMERCE_200238EC&#039;&#039;&#039; ►  If seller and buyer are in Europe and buyer is not a company, use the VAT of buying country. For french speaking people, see also the page [[Loi_européenne_TVA_Vente_à_Distance_VAD_et_e-commerce_BtoC]].&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FILL_SERVICE_DATES_FROM_LAST_SERVICE_LINE&#039;&#039;&#039;  ► (v13.0) On add line form add a button to fill service dates from the last service line&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Shipments=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;STOCK_WAREHOUSE_NOT_REQUIRED_FOR_SHIPMENTS&#039;&#039;&#039; ► If set, you can add a shipment line, with no stock source defined. ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SHIPMENT_GETS_ALL_ORDER_PRODUCTS&#039;&#039;&#039; ► Add all order lines in shipment, including the one with 0 in quantity&lt;br /&gt;
*&#039;&#039;&#039;SHIPPING_PDF_HIDE_ORDERED&#039;&#039;&#039; ►Hide column quantity ordered on shipment pdf (&amp;gt;=15.0)&lt;br /&gt;
*&#039;&#039;&#039;STOCK_SUPPORTS_SERVICES&#039;&#039;&#039; ►Allow to manage services into warehouse and allow to ship services&lt;br /&gt;
*&#039;&#039;&#039;SHIPMENT_SUPPORTS_SERVICES&#039;&#039;&#039; ►Allow to ship services without stock (&amp;gt;=19.0)&lt;br /&gt;
*&#039;&#039;&#039;SHIPPING_DISPLAY_STOCK_ENTRY_DATE&#039;&#039;&#039; ►Display date entry stock exped and sort in date order (&amp;gt;=19.0)&lt;br /&gt;
*&#039;&#039;&#039;SHIPMENT_STANDALONE ►&#039;&#039;&#039;Create a simple shipment not connected to sales order, warehouse, stock e.t.c. (&amp;gt;=23.0)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=SMS= &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SMS_DEBUG&#039;&#039;&#039; ► Write content of SMS sent into file &amp;lt;code&amp;gt;dolibarr_sms.log&amp;lt;/code&amp;gt; into directory &amp;lt;code&amp;gt;dolibarr_main_data_root&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Stocks=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_DISABLE_STOCK_DISPATCH_WHEN_TOTAL_REACHED&#039;&#039;&#039; ► Disable stock dispatch when total expected was already received&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;STOCK_EXCLUDE_VIRTUAL_PRODUCTS&#039;&#039;&#039; ► If product is a virtual product, we do not manage stock for it.&lt;br /&gt;
*&#039;&#039;&#039;STOCK_ALLOW_DELETE_OF_MOVEMENT&#039;&#039;&#039; ► Enable massaction option to delete in movements list (be carefull !!).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ENTREPOT_EXTRA_STATUS&#039;&#039;&#039; ► Instead of the 2 status (Closed, Open), a Warehouse has 3 status: Closed, Open (for all movements), Open (for internal movement only). Internal movement only means you can&#039;t use the warehouse to make shipment or receptions.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_STATUS_FOR_VIRTUAL_STOCK&#039;&#039;&#039; ► For the calculation of virtual stocks, by default supplier orders with the status 3 (ordered) and 4 (partially received) are used. You can enter the list of statuses to be taken into account separated by commas for this calculation (example: 0,1,2,3)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;STOCK_MOVEMENT_LIST_HIDE_UNIT_PRICE&#039;&#039;&#039; ► to hide unit price on some pages (V15+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;DISABLE_QTY_OVERWRITE&#039;&#039;&#039; ► Disable quantity overwrites on inventories ► (v19.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_WAREHOUSE_LIST_DISPLAY_MODE&#039;&#039;&#039; ► Change warehouse select list display mode  ► (v21.0) (see github pull request [https://github.com/Dolibarr/dolibarr/pull/31013 #31013] for more info)&lt;br /&gt;
**0&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: Default behavior, display parents of warehouse&lt;br /&gt;
**1&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: Display only current warehouse label only&lt;br /&gt;
**2&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: Display last parent warehouse label&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Stripe=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;STRIPE_USE_INTENT_WITH_AUTOMATIC_CONFIRMATION&#039;&#039;&#039; ► 1 is the default mode and will use the native Stripe form for the checkout (with card only), 2 will use the native Stripe form (PaymentElement complete, multi payment modes). Note that STRIPE_USE_NEW_CHECKOUT is an abandonned alternative (so no more NEW, that does not bring real added value)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Suppliers Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FOURN_PRODUCT_AVAILABILITY&#039;&#039;&#039; ► On the Suppliers price page of the products, activate the supplier product availability. &#039;&#039;This is duplicate feature with delivery_delay introduced with 3.8.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;RELOAD_PAGE_ON_SUPPLIER_CHANGE&#039;&#039;&#039; ► On creation of a supplier order/invoice, reload form with supplier-specific details when supplier is selected from drop-down list.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_INVOICE_WITH_PREDEFINED_PRICES_ONLY&#039;&#039;&#039; ► Restrict selection of products in supplier invoice to only those with a buying price defined for that supplier. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_AUTOADD_USER_CONTACT&#039;&#039;&#039; ► Add user approving supplier order as a contact automatically.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_DEFAULT_PAYMENT_MODE_ID&#039;&#039;&#039; ► Set the default payment method for suppliers (&amp;lt;code&amp;gt;rowid&amp;lt;/code&amp;gt; in table &amp;lt;code&amp;gt;llx_c_paiement&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_USE_DISPATCH_STATUS&#039;&#039;&#039; ► Add a status on each dispatch order line when receiving products from suppliers ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_NO_DIRECT_APPROVE&#039;&#039;&#039; ► No button &amp;quot;Validate and Approve&amp;quot;. Always do step &amp;quot;Validate&amp;quot; and &amp;quot;Approve&amp;quot; in 2 steps.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_WITH_PREDEFINED_PRICES_ONLY&#039;&#039;&#039; ► Restrict selection of products in supplier order to only those with a buying price defined for that supplier. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_EDIT_BUYINGPRICE_DURING_RECEIPT&#039;&#039;&#039; ► Can modify the buying price used for PMP calculation when making a stock reception on a supplier order. ► (v6.0+)&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_PROPOSAL_WITH_PREDEFINED_PRICES_ONLY&#039;&#039;&#039; ► Restrict selection of products in supplier proposal to only those with a buying price defined for that supplier. ► (v6.0+)&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_MORE_THAN_WISHED&#039;&#039;&#039; ► The supplier order status is set to &amp;quot;Totally received&amp;quot; even if there are more products received than ordered. ► (v15.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;DISPLAY_DISCOUNTED_SUPPLIER_PRICE&#039;&#039;&#039; ► Allow to display discounted supplier price when searching product in supplier documents ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_CAN_EDIT_SUPPLIER_ON_SUPPLIER_ORDER&#039;&#039;&#039; ►  Allow to change the supplier on a draft supplier order ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_PROPOSAL_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_CAN_UPDATE_BUYINGPRICE_DURING_RECEIPT&#039;&#039;&#039; ►  Allow to change price on receipt ► (v19.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_HIDE_SUPPLIER_OBJECTLINES&#039;&#039;&#039; ►  Hide the supplier information on objectlines (invoices, etc..) ► (v19.0)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Third Parties Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;COMPANY_AQUARIUM_CLEAN_REGEX&#039;&#039;&#039; ► Add a REGEX rule on the third parties names. It applies a regex replacement pattern on generated code if COMPANY_AQUARIUM_CLEAN_REGEX is set. Value must be a regex with parenthesis. The part into parenthesis is kept, the rest removed. For example if COMPANY_AQUARIUM_CLEAN_REGEX = &#039;&amp;lt;code&amp;gt;^..(..)..(.*)&amp;lt;/code&amp;gt;&#039; the first char and second char are removed and the char 5 and 6 too ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_UNKNOWN_CUSTOMERS_ARE_COMPANIES&#039;&#039;&#039; ► See in Global options section.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_VAT_COMPANIES_IN_EEC_WITH_INVALID_VAT_ID_ARE_INDIVIDUAL&#039;&#039;&#039; ► See in Global options section.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_EMAIL_MANDATORY&#039;&#039;&#039; ► E-mail is a mandatory field when creating a thirdparty&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_DISABLE_CUSTOMERS&#039;&#039;&#039; ► Remove all menu and features related to customers&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_DISABLE_PROSPECTS&#039;&#039;&#039; ► Remove all menu and features related to prospects&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_DISABLE_PROSPECTSCUSTOMERS ►&#039;&#039;&#039; Remove the status &amp;quot;Customer/Prospect&amp;quot; when thirdparties creation or modification&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_DISABLE_STATE&#039;&#039;&#039; ► Do not use field &amp;quot;state/province&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_SORT_ON_TYPEENT&#039;&#039;&#039; ► The combo list of &amp;quot;type of third party&amp;quot; is sorted on alphabetical order instead of the field &amp;quot;position&amp;quot; that appears into dictionary instead.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_ASK_FOR_SHIPPING_METHOD&#039;&#039;&#039; ► Shipping method can be predefined on customer card and will be used as default on order creation&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_ADD_REF_IN_LIST&#039;&#039;&#039; ► Displays the code before the name in the lists  ► Value 1 -&amp;gt; Code + name + alias ou Code + name if colone alias 2 -&amp;gt; Code + alias 3 -&amp;gt; Alias&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_CAN_HAVE_CATEGORY_EVEN_IF_NOT_CUSTOMER_PROSPECT_SUPPLIER&#039;&#039;&#039; ► Possible to add Categories to third parties that are not customer, prospect or supplier.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_DEFAULT_USELOCALTAX1&#039;&#039;&#039; ► When creating a new third party, the field &amp;quot;Use second tax&amp;quot; is set to on or off depending on value of this parameter.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_DEFAULT_USELOCALTAX2&#039;&#039;&#039; ► When creating a new third party, the field &amp;quot;Use third tax&amp;quot; is set to on or off depending on value of this parameter.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_NOTCUSTOMERPROSPECT_BY_DEFAULT&#039;&#039;&#039; ► Do not set status &amp;quot;Customer/Prospect&amp;quot; to &amp;quot;on&amp;quot; when creating a new third party from menu &amp;quot;New third party&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_INCLUDE_PARENT_IN_LINKTO&#039;&#039;&#039; ► Search also for elements on parent third party when using the &amp;quot;link to&amp;quot; object feature.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_INCLUDE_PROJECT_THIRDPARY_IN_LINKTO&#039;&#039;&#039; ► Search also for elements on third party that own the project of the current element when using the &amp;quot;link to&amp;quot; object feature (if project is owned by a different thirdparty than current one).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_LOGO_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039; ► When a logo is uploaded, a share key is automatically set so the file can be downloaded using the share key.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_SUGGEST_ALSO_ADDRESS_CREATION&#039;&#039;&#039; ► Enabled contact creation on third-party create card&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_QUICKSEARCH_ON_FIELDS&#039;&#039;&#039; ► Personalized search criteria ► Example: $conf-&amp;gt;global-&amp;gt;THIRDPARTY_QUICKSEARCH_ON_FIELDS = &#039;s.nom=ThirdPartyName;s.name_alias=AliasNameShort;s.code_client=CustomerCode&#039;&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_CAN_CONVERT_CUSTOMERS_TO_MEMBERS&#039;&#039;&#039; ► Enabled member creation on third-party create card&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_DISABLE_PARENTCOMPANY&#039;&#039;&#039; ► Disables attachment to a parent company.&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_CUSTOMERPROSPECT_BY_DEFAULT&#039;&#039;&#039; ► Set the third party to customer by default&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_SUPPLIER_BY_DEFAULT&#039;&#039;&#039; ► Set the third party to supplier by default&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_CUSTOMERTYPE_BY_DEFAULT&#039;&#039;&#039; ► Set the third party type by default (3 = customer &amp;amp; prospect / 2 = prospect / 1 = customer )&lt;br /&gt;
*&#039;&#039;&#039;CONTACT_DISABLE_PERSONALINFO&#039;&#039;&#039; ► Disable Personal data on contact page&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_DISABLE_WORKFORCE&#039;&#039;&#039; ► Disable work force selector on society page&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_SHOW_VAT_IN_LIST&#039;&#039;&#039; ► display VAT number in combo list of thirdparties ► (V15+)&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_DEFAULT_CREATE_CONTACT&#039;&#039;&#039; ► When set, a contact is created at the creation of an individual third party ► (v14.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SUPPORT_SHARED_CONTACT_BETWEEN_THIRDPARTIES&#039;&#039;&#039; ► Able to share contact between several third parties&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_CUSTOMERCODE_EQUALS_MEMBERREF&#039;&#039;&#039; ► When creating third parties out of members, the customer code is set equal to the member Ref. ► (v22.0)&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_NO_SYNC_LINKED_MEMBER&#039;&#039;&#039; ► If set, changes to a third party will not be synchronized to a linked member. ► (v23.0)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Ticket Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;TICKET_SHOW_MESSAGES_ON_CARD&#039;&#039;&#039; ►Display all ticket related messages on the main ticket card. ► (&amp;gt;= 10.0)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_AUTO_ASSIGN_CONTRACT_CREATE&#039;&#039;&#039; ►Automatically create a contract linked to the ticket ► (&amp;gt;= 10.0)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_AUTO_CREATE_FICHINTER_CREATE&#039;&#039;&#039; ►Automatically create an intervention linked to the ticket ► (&amp;gt;= 10.0)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_AUTO_ASSIGN_USER_CREATE&#039;&#039;&#039; &#039;&#039;&#039;►&#039;&#039;&#039; (&amp;gt;= 21.0) 0=No auto assignement, 1=Auto assign current user if no user was set, 2=Auto assign current user even if another user was set.&lt;br /&gt;
*&#039;&#039;&#039;TICKET_CHECK_NOTIFY_THIRDPARTY_AT_CREATION&#039;&#039;&#039; ►Automatically check &amp;quot;notify thirdparty at creation&amp;quot; ( &amp;gt;=16)&lt;br /&gt;
*&#039;&#039;&#039;TICKETS_MESSAGE_FORCE_MAIL&#039;&#039;&#039; ► Pre check email sending on ticket message (&amp;gt;=15)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_SEND_PRIVATE_EMAIL ►&#039;&#039;&#039; Allow a private message to be sent by mail (&amp;gt;=17)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_LIMIT_VIEW_ASSIGNED_ONLY&#039;&#039;&#039;  &#039;&#039;&#039;►&#039;&#039;&#039; Only display tickets assigned to the user&lt;br /&gt;
*&#039;&#039;&#039;TICKET_ADD_AUTHOR_AS_CONTACT&#039;&#039;&#039; &#039;&#039;&#039;►&#039;&#039;&#039; If set to 1: Automatically adds the author as internal contact. If set to 2: Automatically adds the author as external contact if external user. (&amp;gt;=20)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_ASSIGN_CONTACT_TO_MESSAGE&#039;&#039;&#039; &#039;&#039;&#039;►&#039;&#039;&#039; If known, the external contact is assigned to the message. (&amp;gt;=19)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_ALLOW_CLASSIFICATION_MODIFICATION_EVEN_IF_CLOSED&#039;&#039;&#039; &#039;&#039;&#039;►&#039;&#039;&#039;Allow modify ticket classification even if closed. (&amp;gt;=19)&lt;br /&gt;
*&#039;&#039;&#039;WORKFLOW_TICKET_CLOSE_INTERVENTION&#039;&#039;&#039; ►On ticket close, automatically close an intervention linked to the ticket&lt;br /&gt;
*&#039;&#039;&#039;TICKET_INCLUDE_SUSPENDED_STATUS&#039;&#039;&#039; ► Use ticket suspended status (&amp;gt;=19)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_INCLUDE_LINK_TO_PUBLIC_INTERFACE_IN_MESSAGE&#039;&#039;&#039; ► Add a link in bottom of emails sent from ticket page with link to public ticket admin tool (&amp;gt;=22)&lt;br /&gt;
&lt;br /&gt;
=VAT Report=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_INCLUDE_ZERO_VAT_IN_REPORTS&#039;&#039;&#039; ► Include lines with VAT to 0% (for &amp;quot;auto-liquidation&amp;quot; in EEC) ► (v8.0.3+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Website Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;WEBSITE_USE_WEBSITE_ACCOUNTS&#039;&#039;&#039; ► Add a table and a tab to manage some accounts for websites to a third party&lt;br /&gt;
*&#039;&#039;&#039;WEBSITE_ALLOW_OVERWRITE_GIT_SOURCE&#039;&#039;&#039; ► Add a button to export a website over the GIT sources&lt;br /&gt;
*&#039;&#039;&#039;WEBSITE_ADD_CSS_TO_BODY&#039;&#039;&#039; ► Add a CSS class to the body tag of websites&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=WYSIWYG Editor=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FCKEDITOR_ENABLE_DETAILS_FULL&#039;&#039;&#039; ► Can cut and paste external images (hosted on external server) into description of proposal, orders or invoices. WARNING: PDF generation is not guaranteed with this. Also if the image is removed or renamed by the image hosting service, your proposal, order or invoice will be broken.&lt;br /&gt;
*&#039;&#039;&#039;FCKEDITOR_ALLOW_ANY_CONTENT&#039;&#039;&#039; ► Allow to enter any content. However, this will totally disable content filtering which is one of the most important CKEditor features. You can use this to keep all your tags and attributes in the html content.&lt;br /&gt;
*&#039;&#039;&#039;FCKEDITOR_ENABLE_SCAYT_AUTOSTARTUP&#039;&#039;&#039;  ► Allow to activate the SpellCheckAsYouType (SCAYT) plugins of CKEditor i.e an automatic spell checking. The value to activate this option is 1.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ALLOW_WYSIWYG_LOCAL_MEDIAS_ON_PRIVATE_NETWORK&#039;&#039;&#039;  ► By default, you can add medias links (img src or other) into the rich text content editor, but you can&#039;t add links like that use a local host like &amp;quot;https://localhost/file&amp;quot;. If you set this option to 1, you can.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ALLOW_WYSIWYG_EVEN_ON_UNSECURED_EXTERNAL_HTTP_URL&#039;&#039;&#039;  ► By default, you can add medias links (img src or other) into the rich text content editor, but not if the link is a unsecure &amp;quot;http&amp;quot; url (not https) and your Dolibarr is http. If you set this option to 1, you can.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=STRIPE Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;STRIPE_FORCE_VERSION&#039;&#039;&#039; ► Force the STRIPE version. For Example: &amp;quot;2019-09-09&amp;quot; (v11+)&lt;br /&gt;
*&#039;&#039;&#039;STRIPE_REUSE_EXISTING_INTENT_IF_FOUND&#039;&#039;&#039; ► With this, you will have idempotency key but the payment intention will be reuse and not Generate again (13+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=ClickToDial Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CLICKTODIAL_FORCENEWTARGET&#039;&#039;&#039; ► Open in new page.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=For SaaS / Cloud hosting integrators=&lt;br /&gt;
&lt;br /&gt;
The following options are useless for a common usage of Dolibarr. But they are usefull if you plan to host / provide Dolibarr instances as Software As A Service (SAAS) to your customers.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CRON_DISABLE_KEY_CHANGE&#039;&#039;&#039; ► When you provide an instance to a customer, you probably also add an entry in the cron of this user so Dolibarr batch and scheduler can work correctly. For security purpose, it may have a security key that is inside the command line into the cron entry and this entry must match the value defined into Dolibarr setup (setup of module &#039;Scheduled Jobs&#039;). Because, a customer of a Saas platform will probably have no access to edit the cron file, it is also import that he has no way to edit the key into the Dolibarr setup, so the key in the cron command line will always match the key in Dolibarr setup, and the Dolibarr batches will executed without security errors. To be sure, the customer does not change the value, you can set this constant to 1 into the table [[Table_llx_const]].&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CRON_DISABLE_TUTORIAL_CRON&#039;&#039;&#039; ► Disable the tutorial about how to install the cron script (on a SaaS hosting, this should be done by the web hosting provider)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CRON_WARNING_DELAY_HOURS&#039;&#039;&#039; ► Set this value to the frequency set for the cron script (so a warning will be shown to user to warn it about max frequency of its scheduled jobs)&lt;br /&gt;
 &lt;br /&gt;
*&#039;&#039;&#039;MAILING_NO_USING_PHPMAIL&#039;&#039;&#039; ► To avoid bad use of the emailing module, it is recommended to set this option to 1 (This option is described previously). Also you can complete the message visible by customers when they try to setup the SMTP credentials of their Dolibarr by using the constant MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS (This option is described previously). For example, you can point to a FAQ on your website.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_IN_SAME_EMAIL&#039;&#039;&#039; ► If you have set a system limit on number of recipients on your system, you can set also this option to match the same value, so users will be informed: So &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_IN_SAME_EMAIL&#039;&#039;&#039; restricts sending of 1 email message to &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; recipients for the same email message (x for To: + CC: + BCC:). If not defined, value is &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;. Required to fight against spamming that include a ton of recipients in 1 message. Note that &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_TO_IN_SAME_EMAIL&#039;&#039;&#039;, &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_CC_IN_SAME_EMAIL&#039;&#039;&#039; and &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_BCC_IN_SAME_EMAIL&#039;&#039;&#039; are also available. Note that this is not a hard limit; it is just the quantity that will be displayed on warnings on screen. For a real limit, this must be implemented into the system.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_LIMIT_SENDBYDAY&#039;&#039;&#039; ► This is a limit of number of emails, an instance can send. Note that this is not a hard limit; it is just the quantity that will be displayed on warnings on screen. For a real limit, this must be implemented into the system.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_LIMIT_WARNING_PHPMAIL&#039;&#039;&#039; ► Set this value to a translation key. Then add translation keys into the instance so user will see a message when into the email setup page. For example, you can set a message to say: &#039;&#039;Warning: To avoid abuse, when using default setup, you are restricted to 500 emails per day for all your application (account may be suspended in case of violation of this rule. You can setup application to use your own SMTP server for sending email so you want have no restriction at all (see menu Home-Setup-Emails)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ALWAYS_CREATE_LOCK_AFTER_LAST_UPGRADE&#039;&#039;&#039; ► If set, when you launch upgrades of your customer instances, you are sure that the upgrade process recreate automatically the file install.lock and remove the upgrade.unlock so the administration tools like install.php, upgrade.php and repair.php can&#039;t be used on your customer instance (until the install.lock file is deleted or the upgrade.unlock file is created).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EXTERNAL_SMTP_CLIENT_IP_ADDRESS&#039;&#039;&#039; ► (A better name of this option should be MAIN_EXTERNAL_MAIL_CLIENT_IP_ADDRESS). Set here the list of IPs where your Dolibarr instances are hosted, separated by a comma. So, when your customer go into the Email setup area:&lt;br /&gt;
**If he has chosen mail method, a message will explain him how to setup its SPF record for its email domain (showing the list of IP). This is to avoid to have its emails, sent from its Dolibarr instance, fails due to strict antispam rule of some emailing servers.&lt;br /&gt;
**If he has chosen smtp method, a message will explain him the list of IP he can use if there is restriction on IP by the SMTP agent. If you also need to add a message to help SPF setup, see option &#039;&#039;&#039;MAIN_EXTERNAL_SMTP_SPF_STRING_TO_ADD&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
You can also provide a list of URLs that return just an IP instead of a list of hardcoded IP. So you can for example set 1 url that contact a whoami service that return the public IP of server and another one doing the one on a IPv6 address, so on the setup page, the public IP adress of the server will always be uptodate for both ipv4 and ipv6 (Example: &amp;quot;https://ipv4.server.com/_service_showmyip.php,https://ipv6.server.com/_service_showmyip.php&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EXTERNAL_SMTP_SPF_STRING_TO_ADD&#039;&#039;&#039; ► Set here the string to add in the SPF record This string will be shown into a help message when the user in in the setup of email page and has choose a method using an external SMTP server.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FIRST_PING_OK_ID&#039;&#039;&#039; ► Set this value to &amp;quot;disabled&amp;quot; to remove completely any ping after a complete setup.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FILECHECK_LOCAL_SUFFIX&#039;&#039;&#039; and &#039;&#039;&#039;MAIN_FILECHECK_LOCAL_EXT&#039;&#039;&#039; ► If you offer a customized or patched version of Dolibarr, when the user will use the tool to check the integrity of files, the default xml file name used for signature checking will be the official file provided by the Dolibarr team, so it does not includes your own changes. To have the suggested signature file being your own file, you can set the constant MAIN_FILECHECK_LOCAL_SUFFIX to a suffix. For example, set this to &amp;quot;&#039;&#039;&#039;-mysaassolution&#039;&#039;&#039;&amp;quot;. So, when the user will use the file integrity tool, the default file to check for signature will be &amp;quot;&#039;&#039;&#039;/install/filelist-10.0.2-mysaassolution.xml&#039;&#039;&#039;&amp;quot; instead of &amp;quot;&#039;&#039;&#039;/install/filelist-10.0.2.xml&#039;&#039;&#039;&amp;quot;. All you have to do is generate the signature file &#039;&#039;&#039;mysaassolution&#039;&#039;&#039; using the tool &#039;&#039;&#039;build/generate_filelist_xml.php&#039;&#039;&#039; and put this file into the install directory of your customer instance. Doing this, your customer, and yourself, will be able to check if a file was modified without being disturbed by false alerts due to your customized files or patches (they will be included in the signature used for check). Also, if you want to zip the customized signature file into &amp;quot;&#039;&#039;&#039;/install/filelist-10.0.2-mysaassolution.xml.zip&#039;&#039;&#039;&amp;quot;, you can set the constant MAIN_FILECHECK_LOCAL_EXT to &#039;.zip&#039;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP&#039;&#039;&#039; ► Set to 1 by default (so warning is hidden). You can set it to 0 to show a warning to encourage admin to set its own SMTP service.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_SENDMODE_password&#039;&#039;&#039; ► To force the mode to send the email on the &amp;quot;password forgotten&amp;quot; page. So you can decide to use php mail or SMTP method for this specific use case.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING&#039;&#039;&#039; ► If set to N, the warning saying modules are not activated will be shown if number of activated module is &amp;lt; N (Having this variable not defined is same than having it set to 1). This may be usefull if you preinstall an application with some modules already loaded by default and you want to keep the warning to be sure the user will enable other modules he need, even if some modules are already enabed.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SETUP_MODULES_DESC&#039;&#039;&#039; ► If your installation is already done with activated module, the help message to explain how to enable a module on the setup page is hidden. You can keep it visible by adding this option to 1.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NO_UPGRADE_REDIRECT_ON_LEVEL_3_CHANGE&#039;&#039;&#039; ► The page to make the migration is not shown automatically when you deploy files of version X.Y.Z+delta over an  installation with a database version X.Y.Z. The upgrade page will be shown automatically only if there is a change on value of X or Y in version.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SYSLOG_DISABLE_LOGHANDLER_SYSLOG&#039;&#039;&#039; ► Set this to 1 to disable usage of syslog (having all customer instances logging in the same system file is not a good idea).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;WEBSITE_REPLACE_INFO_ABOUT_USAGE_WITH_WEBSERVER&#039;&#039;&#039; ► Put here a text or a translation key of a text to show when the user will use the feature &amp;quot;Deploy&amp;quot; when he want to deploy a website done with Dolibarr CMS. So you can, for example, show him a message that this feature is not part of its subscription and putting a website online may need a complementary subscription.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Setup_Other&amp;diff=66768</id>
		<title>Setup Other</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Setup_Other&amp;diff=66768"/>
		<updated>2026-07-27T08:05:54Z</updated>

		<summary type="html">&lt;p&gt;Iouston: /* Proposals Module */ add PROPAL_ENABLE_NEGATIVE&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- BEGIN origin interlang links --&amp;gt;&lt;br /&gt;
&amp;lt;!-- You can edit this section but do NOT remove these comments&lt;br /&gt;
     Links below will be automatically replicated on translated pages by PolyglotBot --&amp;gt;&lt;br /&gt;
[[fr:Paramétrage_Divers]]&lt;br /&gt;
[[es:Configuración_Varios]]&lt;br /&gt;
[[de:Erweiterte_Einstellungen]]&lt;br /&gt;
[[zh:其他设置]]&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Admin]]&lt;br /&gt;
{{TemplateDocUser}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Help About Screen&#039;&#039;&#039;: Other setup&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Menu Path&#039;&#039;&#039;: Home ► Setup ► Other&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Some options are not visible in the interface (often because they are deprecated or are beta features). In most cases you do not need these functions and their use may make the application unstable or may not work as expected.&lt;br /&gt;
&lt;br /&gt;
 {{warning|32px}} This page contains the list of some advanced development parameters. In most cases, they are parameters for internal usage, development, external modules, features in development not stable or that may lead to security risk. For standard usage of Dolibarr, such parameters &#039;&#039;&#039;SHOULD NOT&#039;&#039;&#039; be used. All experimental options are NOT supported. They may be removed in a future, modified at any version and break stability of your application.&lt;br /&gt;
&lt;br /&gt;
To enable/override a parameter you have to define the constant name and set it to 1 (unless otherwise stated) in &amp;lt;code&amp;gt;Home ► Setup ► Other Setup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The options here may not be documented since they are not stable and are unsupported (remember they are experimental or development options). The basic format of how the list is written is broken down in the example below:&lt;br /&gt;
&lt;br /&gt;
UNSTABLE_OR_DEV_OPTION ► &#039;&#039;Description of config and goal&#039;&#039; ► &#039;&#039;(specific version information) or values&#039;&#039;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
=Global Options=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ADD_UNSPLASH_LOGIN_BACKGROUND&#039;&#039;&#039; ► The background image will be refreshed on every login page refresh. Background image is pulled from the popular open source image website Unsplash. If an already saved static background image exists, then this code will override it (but not delete the saved image). Warning: Using this may allow this external website to steel your login credentials (the value to be put is the URL of the service, exemple&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: https://source.unsplash.com/random) ► (v10.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HIDE_POWERED_BY&#039;&#039;&#039; ► Hide the &amp;quot;Powered by Dolibarr&amp;quot; picto on public pages&lt;br /&gt;
*&#039;&#039;&#039;MAIN_APPLICATION_TITLE&#039;&#039;&#039; ► This will change the title of software (that appears on the login page by default). Warning: changing this may make Dolibarr version detection to fail by smartphone applications like [[Application Android - DoliDroid]], breaking some features when using Dolibarr from such application. If the text start with a &amp;quot;+&amp;quot;, the text will be added to the standard &amp;quot;Dolibarr&amp;quot; label instead of replacing it.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_AUTOFILL_DATE&#039;&#039;&#039; ► If this constant is defined (to something other than &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;), the date of invoice, proposal, order or payment are auto-filled with the current date. It is highly recommended to NOT ENABLE this feature. This can create a lot of input errors with data not validated by users. This leads to incorrect values saved in the database causing confusion when you have to do your accountancy reports!&lt;br /&gt;
*&#039;&#039;&#039;MAIN_AUTOFILL_DATE_PROPOSAL►&#039;&#039;&#039;If this constant is defined (to something other than 0), the date of  proposal is auto-filled with the current date.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_AUTO_TIMESTAMP_IN_PUBLIC_NOTES&#039;&#039;&#039; ► Add a timestamp and user automatically when editing the &#039;&#039;public&#039;&#039; note.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_AUTO_TIMESTAMP_IN_PRIVATE_NOTES&#039;&#039;&#039; ► Add a timestamp and user automatically when editing the &#039;&#039;private&#039;&#039; note.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DEFAULT_PAYMENT_TERM_ID&#039;&#039;&#039; ► With ID of a payment term, will use this as default payment term each time you create a new proposal, order, invoice (customer and supplier). Deprecated. Replaced with the default setup feature instead (see French page of wiki for some exemple&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: [[Paramétrage Valeurs par défaut]])&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DEFAULT_PAYMENT_TYPE_ID&#039;&#039;&#039; ► With ID of a payment type, will use this as default payment type each time you create a new proposal, order, invoice (customer and supplier). Deprecated. Replaced with the default setup feature instead (see French page of wiki for some exemple&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: [[Paramétrage Valeurs par défaut]])&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DEFAULT_LANGUAGE_FILTER&#039;&#039;&#039; ► Useful if you do not want to show &amp;lt;code&amp;gt;en_US&amp;lt;/code&amp;gt; language option in combo boxes (other languages can easily be removed in &amp;lt;code&amp;gt;langs&amp;lt;/code&amp;gt; directory but not &amp;lt;code&amp;gt;en_US&amp;lt;/code&amp;gt;) ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LANGUAGES_ALLOWED&#039;&#039;&#039; ► Is a list of languages without spaces, example&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: &amp;lt;code&amp;gt;fr_FR,en_US,de_DE,it_IT&amp;lt;/code&amp;gt; If defined, only those languages will appear in combos. ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_NOTES_TAB&#039;&#039;&#039; ► Show or hide notes tab in the card page&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_CONTACTS_TAB&#039;&#039;&#039; ► Show or hide contacts tab in the card page&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_FULL_SCANLIST&#039;&#039;&#039; ► Disables the complete scan of tables to allow the pagination to show total number of pages. May be useful to activate on systems with a very high quantity of data (tables with more than 2 000 000 records).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_JQUERY_JNOTIFY&#039;&#039;&#039; ► Disable usage of &amp;lt;code&amp;gt;JNotify&amp;lt;/code&amp;gt; to show confirm or error messages&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_AJAX_COMBOX&#039;&#039;&#039; ► If you have a large number of third parties or products, you can disable the autocomplete feature on the third parties list by setting this constant to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; ► (v3.6.0+)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_MULTIPLE_FILEUPLOAD&#039;&#039;&#039; ► Disable users to upload multiple files at once.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_TRUNC&#039;&#039;&#039; ► Disable all truncings in select list. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLEDRAFTSTATUS&#039;&#039;&#039; ► Disable the status &amp;quot;Draft&amp;quot; for some objects (project, donation, ...) so the object is directly created with status &amp;quot;Validated&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_USE_OBJECT_THIRDPARTY_NAME&#039;&#039;&#039; ► Add name of thirdparty at begin of generated document.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_USE_TIMING&#039;&#039;&#039; ► Add a timestamp at end of generated document. Value must be format of timestamp. For example: &amp;lt;code&amp;gt;%Y%m%d%H%M&amp;lt;/code&amp;gt; (only for ODT files)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_UPLOAD_NOT_RENAME_BY_DEFAULT&#039;&#039;&#039; ► Disable the auto renaming on upload file ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOL_SCRIPTS_ROOT&#039;&#039;&#039; ► Define directory who contains &#039;scripts&#039; directory (e.g. &amp;lt;code&amp;gt;/var/www/dolibarr&amp;lt;/code&amp;gt;). Value of this variable may be requested by some external script or tools.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ENABLE_LOG_TO_HTML&#039;&#039;&#039; ► If this constant is defined, it is possible to have logs inside pages by adding the parameter &amp;lt;code&amp;gt;&amp;amp;logtohtml=1&amp;lt;/code&amp;gt; into URL.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ENABLE_IMPORT_LINKED_OBJECT_LINES&#039;&#039;&#039; ► Allow to import lines into current document from &amp;quot;linked&amp;quot; compatible documents ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FIRST_TO_UPPER&#039;&#039;&#039; ► Dolibarr add uppercase to Third Parties, contacts or members names if not done. Warning: with some languages (whose words with uppercase are not same words, or pagecode does not always have an uppercase, like Cyrillic languages), this feature may alter your data.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ALL_TO_UPPER&#039;&#039;&#039; ► Dolibarr puts uppercase for Third Parties, contacts or members names if not done. Warning, with some languages (whose words with uppercase are not same words, or pagecode does not always have an uppercase, like Cyrillic languages), this feature may alter your data. ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ALL_TOWN_TO_UPPER&#039;&#039;&#039; ► Dolibarr puts uppercase for town names if not done. ► (v13.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FILESYSTEM_ENCODING&#039;&#039;&#039; ► With some PHP versions, PHP is not able to detect the page code for filesystem of the server OS. To solve this, Dolibarr assumes your OS filesystem is &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; if on Linux or OSX system, and &amp;lt;code&amp;gt;ISO-8859-1&amp;lt;/code&amp;gt; if on Windows. If not, for example on a Windows server with a NTFS &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; pagecode, you can set the variable &amp;lt;code&amp;gt;MAIN_FILESYSTEM_ENCODING&amp;lt;/code&amp;gt; to &amp;quot;&amp;lt;code&amp;gt;utf-8&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FORCELANGDIR&#039;&#039;&#039; ► Relative path of the directory holding your custom &amp;lt;code&amp;gt;langs&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HTML_TITLE&#039;&#039;&#039; ► Can be used to control how the html page title is formatted. If value contains key &#039;&amp;lt;code&amp;gt;noapp&amp;lt;/code&amp;gt;&#039;, application name will not be output. If value contains &#039;&amp;lt;code&amp;gt;thirdpartynameonly&amp;lt;/code&amp;gt;&#039;, on tab for thirdparties, only name of thirdparties are output. Value can be list of tags: &#039;&amp;lt;code&amp;gt;noapp;thirdpartynameonly&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HELPCENTER_LINKTOUSE&#039;&#039;&#039; ► Define the URL link to use as the target page for link &amp;quot;I need help&amp;quot; onto logon page&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LOGOUT_GOTO_URL&#039;&#039;&#039; ► URL to which the user will be redirected after LOGOUT&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAXTABS_IN_CARD&#039;&#039;&#039; ► Maximum number of tabs visible. Others are grouped into a combo list.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAXLIST_OVERLOAD&#039;&#039;&#039; ► Maximum number of line in space&#039;s domain.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING&#039;&#039;&#039; ► A warning saying setup of modules is not complete is shown if the number of enabled modules is lower or equal than this value (&amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; if not defined)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NO_CONCAT_DESCRIPTION&#039;&#039;&#039; ► Allow to use only input custom description in lines (proposal, order, invoice) ► (v10.0)   &amp;lt; v20.0. [ OSBOLETE since 20.0 | SEE Product module admin configuration to set the description behavior of products and services ]. This value is overwritten by PRODUCT_AUTOFILL_DESC, controled by the option in the product module admin configuration, and is no longer used. Kept in code to allow compatibility if custom modules are using it. Removed completely from v22.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_OPTIMIZE_SPEED&#039;&#039;&#039; ► Use some speed enhancements. See page [[FAQ Increase Performance]] for more information.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PASSWORD_FORGOTLINK  ►&#039;&#039;&#039; Change forgotten password link on login page. ► (v9.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROPAGATE_CONTACTS_FROM_ORIGIN&#039;&#039;&#039; ► When creating an order, contract, invoice from another object, specific contacts of objects are set as specific contact of the new object when possible. ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PUBLIC_NOTE_IN_ADDRESS&#039;&#039;&#039; ► Show public note in address block ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_REMOVE_INSTALL_WARNING&#039;&#039;&#039; ► Remove all security warnings that appear to administrator users if URL &amp;lt;code&amp;gt;/install&amp;lt;/code&amp;gt; is public. You should solve the problem if warning occurs, instead of removing the warning! For this, create a file called &amp;lt;code&amp;gt;install.lock&amp;lt;/code&amp;gt; into Dolibarr root directory. This will stop the warning but also make the page &amp;lt;code&amp;gt;/install&amp;lt;/code&amp;gt; not possible to use, to protect your installation.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_REPEATCONTACTONEACHTAB&#039;&#039;&#039; ► If added and set to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, this adds contacts on all tabs, not only main tab.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_REPLACE_TRANS_xx_XX&#039;&#039;&#039; ► Where &amp;lt;code&amp;gt;xx_XX&amp;lt;/code&amp;gt; is language code. If value is &amp;lt;code&amp;gt;string1:newstring1;string2:newstring2&amp;lt;/code&amp;gt; then replace &amp;lt;code&amp;gt;string1&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;newstring1&amp;lt;/code&amp;gt; in all translation done for language &amp;lt;code&amp;gt;xx_XX&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND&#039;&#039;&#039; ► Change way of rounding total including tax of lines, rounding first of after.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND_SUPPLIER&#039;&#039;&#039;► Change way of rounding total including tax of lines, rounding first of after.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SERVER_TZ&#039;&#039;&#039; ► If you can&#039;t set the time zone of your PHP installation, set this constant. Better is to set it to UTC. In future, this constant will be forced to &#039;&amp;lt;code&amp;gt;UTC&amp;lt;/code&amp;gt;&#039; so PHP server time zone will not have effect any more. Examples: &amp;lt;code&amp;gt;Europe/Paris&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;auto&amp;lt;/code&amp;gt;. Dolibarr will apply the timezone before saving dates in the database. Meaning that if you remove the parameter the dates saved will not change back to UTC.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SEARCH_FORM_ON_HOME_AREAS&#039;&#039;&#039; ► Show the search form on home page areas for core modules (Removed after v5 due to global search combo) ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SEARCHFORM_SUPPLIER_INVOICE_DISABLED&#039;&#039;&#039; ► Disable the supplier invoice on the search form&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE&#039;&#039;&#039; ► If only one result is found, then setting this value to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; will take you direct to the item (default method).  Setting the value to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; will show the result in the list as a single result ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SERVICES_ARE_ECOMMERCE_200238EC&#039;&#039;&#039;  ► If seller and buyer are in Europe and buyer is not a company, use the VAT of buying country. It can have value &#039;1&#039; or &#039;2&#039;. If value 2, the VATs available to select only the ones of buying country. If &#039;1&#039;, the VATs available to select mix the ones of selling country and the ones of buying country. ► (v18.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_TUNING_INFO&#039;&#039;&#039; ► Add tuning information into JavaScript console. Better when xdebug is enabled.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_TECHNICAL_ID&#039;&#039;&#039; ► Show also technical IDs on elements cards or some lists (not supported everywhere).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOWDATABASENAMEINHELPPAGESLINK&#039;&#039;&#039; ► Show database name in upper help menu ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_ALTERNATE_TRANSLATION_FOR&#039;&#039;&#039; ► List of fields per object that need an alternate translation. Example: &amp;lt;code&amp;gt;MAIN_USE_ALTERNATE_TRANSLATION_FOR=societe:name,town;contact:firstname,lastname&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_HOURMIN_IN_DATE_RANGE&#039;&#039;&#039; ► On all entities lines (invoice, order, contract...), it is possible to add hour and minutes with date on fields &amp;quot;date start&amp;quot; and &amp;quot;date end&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_JQUERY_JEDITABLE&#039;&#039;&#039; ► Allow to update from screen, directly into database, some properties of elements (invoices, proposals, ...) using Ajax. This make response time faster, but avoid using this feature, because it bypasses some business actions (updates on other data that should be done consistently) and ignores business controls on data you saved. Consequently this feature breaks consistency of data and possibly the stability of the software.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_JQUERY_MULTISELECT&#039;&#039;&#039; ► Allow to use Ajax when a choice that require multiselect is used (for the moment only external modules uses select box with multiselect values). Set the value to the jQuery plugin name to use (multiselect, multiple-select, select2…). Setting it to any other value will result in unwanted side-effects and/or bugs.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_OLD_SEARCH_FORM&#039;&#039;&#039; ► Display the old search form in left menu.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VAT_DEFAULT_IF_AUTODETECT_FAILS&#039;&#039;&#039; ► Allow to force the VAT rate to a given value (instead of higher VAT rate of country) if the VAT rate of product was not defined.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_UNKNOWN_CUSTOMERS_ARE_COMPANIES&#039;&#039;&#039; ► If we can&#039;t guess if a thirdparty is a company or individual (not VAT ID fill, no Prof ID fill, no type of thirdparty fill), then we suppose it is a company (B2B business) if 1, we suppose it is an individual (B2C business) if 0.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_VAT_COMPANIES_IN_EEC_WITH_INVALID_VAT_ID_ARE_INDIVIDUAL&#039;&#039;&#039; ► For intra CEE sales, we use by default, on proposal, order or invoice creation, a 0 VAT for customers that are companies (see MAIN_UNKNOWN_CUSTOMERS_ARE_COMPANIES to change behaviour to know if a thirdparty is a company or an individual). But if the option MAIN_USE_VAT_COMPANIES_IN_EEC_WITH_INVALID_VAT_ID_ARE_INDIVIDUAL is set, we will use the 0 VAT only if a VAT ID is defined for the customer.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_VAT_OF_PRODUCT_FOR_INDIVIDUAL_CUSTOMER_OUT_OF_EEC&#039;&#039;&#039; ► For to use the default VAT of product for individual customers that are out E.E.C. (European Economic Community) ► (v7.0+). &#039;&#039;There is no reason to use this.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VIEW_LINE_NUMBER&#039;&#039;&#039; ► Shows a line number for each line of products/services at documents like proposal / order / invoice. Only on screen, not on PDF.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VIEW_LINE_NUMBER_IN_LIST&#039;&#039;&#039; ► Shows a line number in lists ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VOLUME_DEFAULT_ROUND&#039;&#039;&#039; ► Accuracy of volume (number of decimals)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VOLUME_DEFAULT_UNIT&#039;&#039;&#039; ► Default unit for weight (&amp;lt;code&amp;gt;0=kg&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-3=g&amp;lt;/code&amp;gt;, ...)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_WEIGHT_DEFAULT_ROUND&#039;&#039;&#039; ► Accuracy of weight (number of decimals)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_WEIGHT_DEFAULT_UNIT&#039;&#039;&#039; ► Default unit for weight (&amp;lt;code&amp;gt;0=kg&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-3=g&amp;lt;/code&amp;gt;, ...)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;USER_HIDE_INACTIVE_IN_COMBOBOX&#039;&#039;&#039; ► Disable display inactive users in combobox.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_PDF_THUMBS&#039;&#039;&#039; ► Disable thumbs PDF in case of imagick bug&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_KEEP_REF_CUSTOMER_ON_CLONING&#039;&#039;&#039; ► Keep the Customer Reference on cloned object (Propal/Invoice)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DONT_KEEP_NOTE_ON_CLONING&#039;&#039;&#039; ► Remove the object notes during cloning ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_SORT_FIELD&#039;&#039;&#039; ► Set the default sorting field on document page (name by default) ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_SORT_ORDER&#039;&#039;&#039; ► Set the default sorting order (ASC or DESC) on document page (ASC by default) ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_ZIPTOWN_DICTIONNARY&#039;&#039;&#039; ► Use dictionary ZIP for create card.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_TOP_MENU_SEARCH_DROPDOWN&#039;&#039;&#039; ► Show search in top menu with theme eldy ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PHONE_SEPAR&#039;&#039;&#039; ► Separ phone number other space ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;GRAPH_USE_FISCAL_YEAR&#039;&#039;&#039; ► Widgets uses fiscal year&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SHOW_SOCINFO_ON_PRINT&#039;&#039;&#039; ► Permit to add user company information on each printed document (when click on Dolibarr print button) ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FEATURES_LEVEL&#039;&#039;&#039; ► Level of features to show: &amp;lt;code&amp;gt;-1=stable+deprecated&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0=stable only (default)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1=stable+experimental&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2=stable+experimental+development&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_TECHNICAL_ID&#039;&#039;&#039; ► Show technical id for object.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HTTP_CONTENT_SECURITY_POLICY&#039;&#039;&#039; ► Allows you to fill in the content security rules ► (v6.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_ON_SEARCH_AND_LIST_GO_ON_CUSTOMER_OR_SUPPLIER_CARD&#039;&#039;&#039; ► Allow to change the link of the third party to customer/supplier card instead of contact card on List.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MODULE_SETUP_ON_LIST_BY_DEFAULT&#039;&#039;&#039; ► If set to &amp;quot;common&amp;quot; the setup module becomes list by defaut&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PAGESIZE_CHOICES&#039;&#039;&#039;  ► Configure select field to choose number of lines displayed on listing (&amp;lt;code&amp;gt;10:10,15:15,20:20,30:30,40:40,50:50,100:100,250:250,500:500,1000:1000,5000:5000&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_TOP_MENU_QUICKADD_DROPDOWN&#039;&#039;&#039; ► Add a dropdown menu with shortcuts to create new objects ► (v13.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EMAILCOLLECTOR_MAIL_WITHOUT_HEADER&#039;&#039;&#039; ► Remove the header stored by email collector ► (v13.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_VAT_OF_PRODUCT_FOR_COMPANIES_IN_EEC_WITH_INVALID_VAT_ID&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_OPTIMIZEFORTEXTBROWSER&#039;&#039;&#039; ► Optimise interface for a text only browser. This variable is set to 1 automatically if your browser is lynx or links&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NB_OF_YEAR_IN_WIDGET_GRAPH&#039;&#039;&#039; ► Set the number of years visible on some graph of some widgets (2 is default value)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_CREATEFROM_KEEP_LINE_ORIGIN_INFORMATION&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;API_DISABLE_LOGIN_API&#039;&#039;&#039; ►(v14.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LOGIN_BADCHARUNAUTHORIZED&#039;&#039;&#039; ► Add possibility to define bad character unauthorized into login name REGEX expression (Default value is @&amp;lt;&amp;gt;&amp;quot;\&#039;)  ► (v16.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_ALL_FILES_ON_DOCUMENT_TOOLTIP&#039;&#039;&#039;  ► Add all files visible from the object to be visible from the list of object.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LIST_ALLOW_PUBLIC_NOTES&#039;&#039;&#039;  ► Display public notes on list&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LIST_ALLOW_PRIVATE_NOTES&#039;&#039;&#039;  ► Display private notes on list&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_CHECKBOX_LEFT_COLUMN&#039;&#039;&#039; ► Display private check boxes on the left ► (v17.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_STATS_GRAPHS_SHOW_N_YEARS&#039;&#039;&#039; ► Nb of years to shows in widget and graph ► (v14.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HOOK_DEBUG&#039;&#039;&#039; ► if &amp;gt;=2 the hook in the logs are more verbose ► (v18.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ENABLE_AJAX_TOOLTIP&#039;&#039;&#039; ► if 1 the tooltips are updated with AJAX request ► (v18.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NO_INPUT_PRICE_WITH_TAX&#039;&#039;&#039; ► if 1 the TTC input field is removed from propal/invoices/... ► (v17.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_SELECT2_FOCUS_PROTECTION&#039;&#039;&#039; ► if 1 disable the focus protection ► (v17.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_ADVANCED_PERMS ►&#039;&#039;&#039; Add advanced user permission&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FREE_PRODUCT_CHECKED_BY_DEFAULT ►&#039;&#039;&#039; Check &amp;quot;product&amp;quot; or &amp;quot;service&amp;quot; by default on order/invoices/propal cards (set value &amp;quot;product&amp;quot; or &amp;quot;service&amp;quot;)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LINK_BY_REF ►&#039;&#039;&#039; Allow to link documents by choosing the type and ref from the object linked option&lt;br /&gt;
*&#039;&#039;&#039;MAIN_STORE_COMPUTED_EXTRAFIELDS ►&#039;&#039;&#039; when enabled, computed extrafields have their formula result evaluated and persisted to the database on save (instead of the default behavior where the formula is re-evaluated on the fly at each display and the column is left null).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Official supported option&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The following options are not hidden option. They are available by default from the interface.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ONLY_LOGIN_ALLOWED ►&#039;&#039;&#039; Activate maintenance mode and set user that is allowed to login. Value must be user login. Available into menu Home - Admin tools - User session, it is filled with admin user when clicking on button &amp;quot;Block other session&amp;quot;. Enable &amp;lt;code&amp;gt;MAIN_STORE_COMPUTED_EXTRAFIELDS&amp;lt;/code&amp;gt; when you need to sort, filter, sum or report on a computed extrafield&#039;s value in SQL/lists: instead of recalculating the formula on every display (leaving the column null), it stores the result in the database on each save, at the cost of the value being a snapshot that only refreshes when the record is saved again.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Security Options=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SECURITY_ANTI_SSRF_SERVER_IP&#039;&#039;&#039; ► Can set a complete list of IPs of server.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SECURITY_CSRF_WITH_TOKEN&#039;&#039;&#039; ► Activate a second anti-CSRF protection on POST (so a POST from another web site can&#039;t be done). Note there is also a default protection using test on referrer that is not reliable. This second protection uses TOKEN on forms and is more powerful. Value can be: 0=CSRF protection disabled; 1=CSRF protection is on POST URLs only (default from version Dolibarr 15.0+); 2=CSRF protection is required on POST + some GET URL that contains some white listed parameters like the parameter &amp;quot;action&amp;quot; used to request database change (default from version Dolibarr 16+), 3=CSRF protection is enabled on any POST and GET URLs (a valid CSRF token is expected whatever are the parameters, warning: can be enabled on Dolibarr but some external modules developped by thirdparty may not be ready yet with this option)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MODULES_FOR_EXTERNAL&#039;&#039;&#039; ► Limit available modules for external users. By default value is &#039;&amp;lt;code&amp;gt;facture,commande,contact,propal,projet,contrat,societe,ficheinter,expedition,agenda&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ALLOW_SVG_FILES_AS_IMAGES&#039;&#039;&#039; ► Allow to use SVG file as image files. Warning: This may introduce security vulnerability (javascript can be embedded into SVG file).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_RESTRICTHTML_ONLY_VALID_HTML&#039;&#039;&#039; ► Refused parameter if value is not a valid HTML content. The content is also sanitized with Tidy.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_RESTRICTHTML_ONLY_VALID_HTML_TIDY&#039;&#039;&#039; ► Refused parameter if value is not a HTML content validated by Tidy PHP library. The content is also sanitized with Tidy.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_RESTRICTHTML_REMOVE_ALSO_BAD_ATTRIBUTES&#039;&#039;&#039; ► Sanitize also non standard attributes on HTML content.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SECURITY_SALT&#039;&#039;&#039; ► A salt string to base the hashing on. 8 strings length recommended.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SECURITY_MAX_IMG_IN_HTML_CONTENT&#039;&#039;&#039; ► Maximum number of Images on the HTML content&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SECURITY_ALLOW_UNSECURED_LABELS_WITH_HTML&#039;&#039;&#039; ► Allow HTML tags into products label&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SECURITY_FORCERP&#039;&#039;&#039; = &amp;quot;strict-origin-when-cross-origin&amp;quot; (default) so browser doesn&#039;t send any referrer when going into another web site domain / &amp;quot;same-origin&amp;quot; / &amp;quot;strict-origin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Members Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_NEWFORM_FORCEMORPHY&#039;&#039;&#039; ► Force nature of member set to &amp;quot;phy&amp;quot; for physical or to &amp;quot;mor&amp;quot; for moral ► (v12.0)&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_ALLOW_CHANGE_OF_TYPE&#039;&#039;&#039; ► Member can edit their type on public subscription page ► (v13.0)&lt;br /&gt;
*&#039;&#039;&#039;ADHERENT_DEFAULT_CREATE_THIRDPARTY&#039;&#039;&#039; ► Thirdparty is created when creating a new member ► (v13.0)&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_SUBSCRIPTION_SUGGEST_END_OF_MONTH&#039;&#039;&#039; ► If set to 1, the member subscription end date will be suggested for the end of the month ► (v18.0)&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_SUBSCRIPTION_SUGGEST_END_OF_YEAR&#039;&#039;&#039; ► If set to 1, the member subscription end date will be suggested for the end of the year ► (v18.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NB_OF_YEAR_IN_MEMBERSHIP_WIDGET_GRAPH&#039;&#039;&#039; ► If set, it limits the number of years visible on graph and widgets of membership (empty is default value to show all) ► (v18.0)&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_NO_SYNC_LINKED_THIRDPARTY ►&#039;&#039;&#039; If set, changes to a member will not be synchronized to a linked third party. ► (v23.0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Accounting Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ACCOUNTANCY_COMBO_FOR_AUX&#039;&#039;&#039; ► Add graphic option for ACCOUNTANCY_COMBO_FOR_AUX. Having this option on may slow down and even freeze the accounting features if you have a very large number of thirdparties ► (v10.0)&lt;br /&gt;
*&#039;&#039;&#039;ACCOUNTING_DEFAULT_NOT_NOTIFIED_VALIDATION_DATE&#039;&#039;&#039; ► Avoid validating the lines with the accountancy export.(1= box unchecked by default / 0 = box checked by default) ► (v14.0)&lt;br /&gt;
*&#039;&#039;&#039;ACCOUNTING_DEFAULT_NOT_NOTIFIED_EXPORT_DATE&#039;&#039;&#039; ► Avoid flagging the lines as exported with the accountancy export.(1= box unchecked by default / 0 = box checked by default) ► (v14.0)&lt;br /&gt;
*&#039;&#039;&#039;ACCOUNTANCY_USE_PRODUCT_ACCOUNT_ON_THIRDPARTY ►&#039;&#039;&#039; Add 2 fields on thirdparty card which allow you to set an account for all sells products and an other for all buying products for this customer ► (v14.0)&lt;br /&gt;
*&#039;&#039;&#039;ACCOUNTING_MANAGE_ZERO&#039;&#039;&#039; &#039;&#039;&#039;►&#039;&#039;&#039; Allow to manage char 0 in accounting account (if enabled 1 ≠ 10) ► (v14.0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Agenda Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_ALL_CALENDARS&#039;&#039;&#039; ► Change the default view of calendar pages to see all the Agenda&#039;s (instead or yours only be default)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_AUTOSET_END_DATE_WITH_DELTA_HOURS&#039;&#039;&#039; ► To automatically set end date of event to start date + delta on event creation page.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_DISABLE_LOCATION&#039;&#039;&#039; ► Disable location field in action card  ► (&amp;gt;=v5.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_MAX_EVENTS_DAY_VIEW&#039;&#039;&#039; ► Define the maximum number of visible entries for each day in agenda. Default value is 3. Value 0 means no limit.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_USE_EVENT_TYPE&#039;&#039;&#039; ► Add a mandatory field &amp;quot;Type&amp;quot; when creating an event (&#039;&#039;&#039;&#039;&#039;deprecated&#039;&#039;&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ADD_EVENT_ON_ELEMENT_CARD&#039;&#039;&#039; ► Allow to create an event from a document (proposal, order, invoice)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_SUPPORT_PRIORITY_IN_EVENTS&#039;&#039;&#039; ► Allow to have priorities in events ► (&amp;gt;=v13.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_ADDACTIONFORPHONE&#039;&#039;&#039; ► Allow you to create a event from phone number ► (=&amp;lt;v12.0) - Need to be fix for (=&amp;gt;v12.0) https://github.com/Dolibarr/dolibarr/issues/22720&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_ADDACTIONFOREMAIL&#039;&#039;&#039; ► Allow you to create a event from Email ► (=&amp;lt;v12.0) - Need to be fix for (=&amp;gt;v12.0) https://github.com/Dolibarr/dolibarr/issues/22720&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ACTIONCOM_CAN_ADD_ANY_CONTACT&#039;&#039;&#039; ► Allow you to add any contact on events if set at 1a https://github.com/Dolibarr/dolibarr/releases/tag/18.0.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
=Bank Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BANK_CAN_RECONCILIATE_CASHACCOUNT&#039;&#039;&#039; ► Can reconciliate cash accounts ► (v3.8)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BANK_DISABLE_CHECK_DEPOSIT&#039;&#039;&#039; ► Disable check deposit feature&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BANK_ASK_PAYMENT_BANK_DURING_ORDER&#039;&#039;&#039; ► Ask bank account during creation of an order&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL&#039;&#039;&#039; ► Ask bank account during creation of a proposal&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BANK_USE_OLD_VARIOUS_PAYMENT&#039;&#039;&#039; ► To allow to enter miscellaneous payments (not covered by other modules) using old method. &#039;&#039;&#039;&#039;&#039;Deprecated&#039;&#039;&#039;&#039;&#039;. Entering various payment is preferred ► (&amp;lt;=v12.0).&lt;br /&gt;
*&#039;&#039;&#039;MAIN_IBAN_IS_NEVER_MANDATORY&#039;&#039;&#039; ► IBAN and BIC informations not mandatory. (V15)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=BOM and MO Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ALLOW_USE_KITS_INTO_BOM_AND_MO&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;BOM_SUB_BOM&#039;&#039;&#039; ►Allow to add a BOM in another BOM►(v16.0)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Bookmarks Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BOOKMARKS_SHOW_IN_MENU&#039;&#039;&#039; ► Numbers of bookmark entries to be displayed (10 by default)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Inalterable Log Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BLOCKEDLOG_ADD_ACTIONS_SUPPORTED&#039;&#039;&#039; ► Can complete list of triggered action that are logged&lt;br /&gt;
*&#039;&#039;&#039;BLOCKEDLOG_USE_REMOTE_AUTHORITY&#039;&#039;&#039; ► URL of the remote authority for the blockchain&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Category-Tags Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CATEGORY_SHOW_COUNTS&#039;&#039;&#039; ► Shows nb of object by tags in tag tree&lt;br /&gt;
*&#039;&#039;&#039;CATEGORY_EDIT_IN_MENU_NOT_IN_POPUP ►&#039;&#039;&#039; Display categories menu instead of managing it only from &amp;quot;Tools&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Contracts=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CONTRACT_SUPPORT_PRODUCTS&#039;&#039;&#039; ► Products are also suggested into module contract.&lt;br /&gt;
*&#039;&#039;&#039;CONTRACT_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039; ► When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. ► (v7.0+)&lt;br /&gt;
*&#039;&#039;&#039;CONTRACT_HIDE_PLANNED_DATE_ON_PDF&#039;&#039;&#039; ► allows you to not display dates on pdf files.&lt;br /&gt;
*&#039;&#039;&#039;CONTRACT_HIDE_REAL_DATE_ON_PDF&#039;&#039;&#039; ► allows you to not display dates on pdf files.&lt;br /&gt;
*&#039;&#039;&#039;CONTRACT_HIDE_PRICE_ON_PDF&#039;&#039;&#039; ► allows you to not display price on pdf files.&lt;br /&gt;
*&#039;&#039;&#039;CONTRACT_HIDE_QTY_ON_PDF&#039;&#039;&#039; ► allows you to not quantity dates on pdf files.&lt;br /&gt;
*&#039;&#039;&#039;CONTRACT_SHOW_SIGNATURE_STATUS_WITH_SERVICE_STATUS&#039;&#039;&#039; ► Show signature status in contract card (Sign by all parties).► (v21.0+)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Cron module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CRON_DISABLE_KEY_CHANGE&#039;&#039;&#039; ► When you provide an instance to a customer, you probably also add an entry in the cron of this user so Dolibarr batch and scheduler can work correctly. For security purpose, it may have a security key that is inside the command line into the cron entry and this entry must match the value defined into Dolibarr setup (setup of module &#039;Scheduled Jobs&#039;). Because, a customer of a Saas platform will probably have no access to edit the cron file, it is also import that he has no way to edit the key into the Dolibarr setup, so the key in the cron command line will always match the key in Dolibarr setup, and the Dolibarr batches will executed without security errors. To be sure, the customer does not change the value, you can set this constant to 1 into the table [[Table_llx_const]].&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CRON_DISABLE_TUTORIAL_CRON&#039;&#039;&#039; ► Disable the tutorial about how to install the cron script (on a SaaS hosting, this should be done by the web hosting provider)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CRON_WARNING_DELAY_HOURS&#039;&#039;&#039; ► Set this value to the frequency set for the cron script (so a warning will be shown to user to warn it about max frequency of its scheduled jobs)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Direct Debit Orders=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;WITHDRAWAL_ALLOW_ANY_INVOICE_STATUS&#039;&#039;&#039; ► If this option is set, all invoices status (even already paid) may appear on the list of invoices qualified for a direct debit payment. This is the list of invoices with a payment request done, and not linked to a direct debit payment. By default, only &amp;quot;unpayed&amp;quot; invoices are used to avoid to pay twice the same invoice.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Donation Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;DONATION_USE_THIRDPARTIES&#039;&#039;&#039; ► If this option is set, a thirdparty field appear on donation forms.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
=Email=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_COPY_FILE_IN_EVENT_AUTO&#039;&#039;&#039; ► Add attachment document on event auto generated by sending email from dolibarr. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EMAIL_USE_LAYOUT&#039;&#039;&#039;► Enable the use of predefined layout when writing an email.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAILFORM_DISABLE_ENTERKEY&#039;&#039;&#039; ► Activate JavaScript code to disable the enter key in the MAIL form. ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_DEBUG&#039;&#039;&#039; ► Write content with header of last mail into file &amp;lt;code&amp;gt;dolibarr_mail.log&amp;lt;/code&amp;gt; into directory &amp;lt;code&amp;gt;dolibarr_main_data_root&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_DEBUG_ERR_WITH_DATE&#039;&#039;&#039; ► Use a different filename (by adding a prefix of date) for each email sent with error when MAIN_MAIL_DEBUG.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_DEBUG_LOG_WITH_DATE&#039;&#039;&#039; ► Use a different filename (by adding a prefix of date) to log each email sent (whatever is result) when MAIN_MAIL_DEBUG.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_FORCE_FROM&#039;&#039;&#039; ► (v19+) Can force the value into the From field of the SMTP header. Note that email sender is always saved into the &amp;quot;Reply-To&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_ALLOW_SENDMAIL_F&#039;&#039;&#039; ► On Linux or BSD system, PHP email function use the command sendmail local to server. In some cases, the sender email must be provided on command line of sendmail with option &amp;lt;code&amp;gt;-f&amp;lt;/code&amp;gt;. This option is here to ask Dolibarr to call the function mail of PHP by adding value for the option &amp;lt;code&amp;gt;-f&amp;lt;/code&amp;gt;. Note that in most cases, even with sendmail, sender email is correctly managed as it is added in the email technical header. This option is here only for setup or version of sendmail that ask the -f option to be mandatory or for sendmail setup that does not use by default the From of the header email to define the sender (with this option, the from can be forced on command line to avoid to have the from lost by sendmail).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_SENDMAIL_FORCE_BA&#039;&#039;&#039; ► On Linux or BSD system, PHP email function use the command sendmail local to server. In some case, we want to recipient to be provided to sendmail into the email content instead of its command line parameter. For this we must add the -ba parameter to sendmail. This option asks PHP to provide this parameter when sending a mail. Note that another solution is to edit the mail.force_extra_parameters=-ba into &amp;lt;code&amp;gt;php.ini&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_NO_FULL_EMAIL&#039;&#039;&#039; ► Recipient email and sender are cleaned to be on form &amp;quot;&amp;lt;email&amp;gt;&amp;quot; instead of &amp;quot;Name &amp;lt;email&amp;gt;&amp;quot;. This might solve problem of compatibility with very old mailers.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FIX_FOR_BUGGED_MTA&#039;&#039;&#039; ► Some MTA agent are bugged and add some CR chars each time they saw a LF. Because Dolibarr emails are forged to be already cleaned, if MTA agent do that, you will send an email with two CR chars. This may result in having recipient not able to read your email. To fix this, add this constant to 1. Dolibarr will then create an email that is not RFC compliant, but because the MTA agent is bugged, the email will be modified and become correct during sending, solving the problem of bad email received. Add this constant to 1 if your recipient experience problems when opening email for example users using webmail of &amp;lt;code&amp;gt;orange.fr&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;hotmail.com&amp;lt;/code&amp;gt;. Note that some users have reported that when using Exim (Exim 4), you must set this parameter to 0. Default value is 1 but may be changed to 0 in future.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_DO_NOT_USE_SIGN&#039;&#039;&#039; ► Do not add user signature at end of suggested pre-defined email&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_FORCE_NOT_SENDING_TO&#039;&#039;&#039; ► If en email is defined into this variable, emails will never be sent to this email.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIL_FORCE_DELIVERY_RECEIPT_INVOICE&#039;&#039;&#039; ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Invoice&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIL_FORCE_DELIVERY_RECEIPT_ORDER&#039;&#039;&#039; ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Order&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIL_FORCE_DELIVERY_RECEIPT_PROPAL&#039;&#039;&#039; ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Proposal&#039;&#039; module.&lt;br /&gt;
*&#039;&#039;&#039;MAIL_FORCE_DELIVERY_RECEIPT_SUPPLIER_PROPOSAL&#039;&#039;&#039; ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Supplier Proposal&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EMAIL_SUPPORT_ACK ►&#039;&#039;&#039; Restore email acknowledgment checkbox on sending emails. This feature is commonly abandoned by mailers. Active from Dolibarr V17 - see [https://github.com/Dolibarr/dolibarr/blob/33744f74da1a5c20f8aa9950018ab4e549e00205/ChangeLog#L53 changelog]&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EMAIL_USECCC&#039;&#039;&#039; ► 1 = Shows field BCC into email forms, If value is an email = Shows the BCC pre filled with the email value.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_AUTOCOPY_PROPOSAL_TO&#039;&#039;&#039;, &#039;&#039;&#039;MAIN_MAIL_AUTOCOPY_ORDER_TO&#039;&#039;&#039;, &#039;&#039;&#039;MAIN_MAIL_AUTOCOPY_INVOICE_TO&#039;&#039;&#039;, &#039;&#039;&#039;MAIN_MAIL_AUTOCOPY_SHIPMENT_TO&#039;&#039;&#039;, &#039;&#039;&#039;MAIN_MAIL_AUTOCOPY_..._TO&#039;&#039;&#039; ► Email to use as a BCC recipient when sending email for proposal, order or invoice. You can make this value visible by setting MAIN_EMAIL_USECCC (to 1 or to another email, see previous point)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EMAIL_ADD_TRACK_ID&#039;&#039;&#039; ► When value is 1 (this is also default value if option is not set): The record &amp;quot;Message-id&amp;quot; added into smtp header includes a tracking id to define where the email was sent from. When value is 2: you send an email from third party card, the sender email is completed with the email source tracking string  &amp;quot;+thiXXX&amp;quot; on email (your email will be sent with the &amp;quot;From&amp;quot; that is myname+thi123@mycompany.com). So when user receiving email will make &amp;quot;Answer&amp;quot;, email will be sent to myname@mycompany.com but with the tracking id included (into header or into target email), allowing you to know to which third party or object, the email exchange is related to.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_IN_SAME_EMAIL&#039;&#039;&#039; ► Restrict sending of 1 email message to &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; recipients for same email message (x for To: + CC: + BCC:). If not defined, value is &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;. Required to fight against spamming that include 1000 recipients in 1 message. Note that &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_TO_IN_SAME_EMAIL&#039;&#039;&#039;, &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_CC_IN_SAME_EMAIL&#039;&#039;&#039; and &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_BCC_IN_SAME_EMAIL&#039;&#039;&#039; are also available.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_FORCE_CONTENT_TYPE_TO_HTML&#039;&#039;&#039; ► Force to send all email (event with text only content) as HTML formatted email.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_USE_MULTI_PART&#039;&#039;&#039; ► Forge email content using an alternate text part ► (for 5.0.2+). By default with 6.0+&lt;br /&gt;
*&#039;&#039;&#039;MAIN_INFO_SOCIETE_MAIL_ALIASES&#039;&#039;&#039; ► add address aliases for the from field on mail. Set his value with &amp;quot;Firstname Name &amp;lt;firstname.lastname@mydomain.tld, Otherfirstname OtherlastName &amp;lt;othermail@mydomain.tld&amp;gt;,...&amp;quot; ► (v5.0.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_ADD_INLINE_IMAGES_IF_IN_MEDIAS&#039;&#039;&#039; ► If images were stored into the medias directory from CKEditor, then images into emails are replaced with &amp;quot;inline content&amp;quot;. This may increase seriously risk of being detected as SPAM.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EXTERNAL_SMTP_CLIENT_IP_ADDRESS&#039;&#039;&#039; ► (A better name of this option should be MAIN_EXTERNAL_MAIL_CLIENT_IP_ADDRESS). Set here the list of IPs where your Dolibarr instances are hosted. You can also set the URLs where to get the IP addresses, for exemple: &amp;quot;https://ipv4.urltoshowip.com/_service_showmyip.php,https://ipv6.urltoshowup.com/_service_showmyip.php. So when your customer go into the setup area of email:&lt;br /&gt;
**If he chose mail method, a message will explain him how to setup its SPF record for its email domain (showing the list of IP). This is to avoid to have its emails, sent from its Dolibarr instance, fails due to strict antispam rule of some emailing servers.&lt;br /&gt;
**If he chose smtp method, a message will explain him the list of IP he can use if there is restriction on IP by the SMTP agent. If you also need to add a message to help SPF setup, see option &#039;&#039;&#039;MAIN_EXTERNAL_SMTP_SPF_STRING_TO_ADD&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_IMAP_USE_PHPIMAP&#039;&#039;&#039; ► Use embedded PHP-imap library (not using the native php imap) instead of native php imap extension ► (v17.0+, available as official option in setup of emailcollector by default from v19)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_ENABLED_USER_DEST_SELECT&#039;&#039;&#039; ► Show also internal users into list of recipients of email in email sending form ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIL_PREFIX_FOR_EMAIL_ID&#039;&#039;&#039; ► Prefix for the mails ID. Default value is &amp;lt;code&amp;gt;$_SERVER[&amp;quot;SERVER_NAME&amp;quot;]&amp;lt;/code&amp;gt; ► (&amp;gt;= 8.0.1)&lt;br /&gt;
*&#039;&#039;&#039;MAIL_MASS_ACTION_SEARCH_MOST_RECENT_FILE_IF_NOT_FOUND&#039;&#039;&#039; ► When sending an email from a mass action. If the path saved in DB does not point to an existing file, then search for the most recent file and use it as an attahcment.► (&amp;gt;= 24.0.0)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Emailing Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_PREFIX_FOR_EMAIL_ID&#039;&#039;&#039; ► Set the value that will be used to compose the &amp;quot;Email ID&amp;quot; into email headers. If you set this value to &#039;&amp;lt;code&amp;gt;SERVER_NAME&amp;lt;/code&amp;gt;&#039;, the virtual host of web server will be used. By default, this is not defined, so a hash key, unique to each instance, is used.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_NO_USING_PHPMAIL&#039;&#039;&#039; ► If set, the module emailing can&#039;t be used with mail setup of &amp;quot;phpmail&amp;quot;. Using a thirdparty SMTP server is required. You can complete warning message by adding an email to contact for setup help with constant &amp;lt;code&amp;gt;&#039;&#039;&#039;MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS&#039;&#039;&#039;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS&#039;&#039;&#039; ► Contains the email of contact to show into the message visible to a user when he try to use emailing module without SMTP server and if option &#039;&#039;&#039;MAILING_NO_USING_PHPMAIL&#039;&#039;&#039; is set to on.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_LIMIT_WARNING_PHPMAIL&#039;&#039;&#039; ► Show a warning message (var contains the &#039;&#039;&#039;message to show&#039;&#039;&#039;, or &#039;&#039;&#039;translation key&#039;&#039;&#039;) on emailing send form if setup is on &amp;quot;phpmail&amp;quot;. Note: The application always try to translate the message considering the message is a translation key, before showing the translation or message if translation was not found.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_LIMIT_WARNING_NOPHPMAIL&#039;&#039;&#039; ► Show a warning message (var contains the &#039;&#039;&#039;message to show&#039;&#039;&#039;, or &#039;&#039;&#039;translation key&#039;&#039;&#039;) on emailing send form if setup is something else than &amp;quot;phpmail&amp;quot;. Note: The application always try to translation the message considering the message is a translation key, before showing the translation or message if translation was not found.&lt;br /&gt;
*&#039;&#039;&#039;EMAILING_USE_ADVANCED_SELECTOR&#039;&#039;&#039; ► Enable the advanced selector for recipients.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_LIMIT_SENDBYWEB&#039;&#039;&#039; ► Restrict number of emails you can send in same sending session with emailing module from GUI. The value &amp;quot;&amp;lt;code&amp;gt;dolibarr_mailing_limit_sendbyweb&amp;lt;/code&amp;gt;&amp;quot; if defined into config file is used in priority for this limit. A negative value means, sending by web is forbidden.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_LIMIT_SENDBYCLI&#039;&#039;&#039; ► Restrict number of emails you can send in same sending session with emailing module from CLI script. The value &amp;quot;&amp;lt;code&amp;gt;dolibarr_mailing_limit_sendbycli&amp;lt;/code&amp;gt;&amp;quot; if defined into config file is used in priority for this limit.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Expense Report=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;EXPENSEREPORT_ALLOW_OVERLAPPING_PERIODS&#039;&#039;&#039; ► Can enter several expense reports on same or overlapping date periods. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;EXPENSEREPORT_OVERRIDE_VAT&#039;&#039;&#039; ► Setting this constant to 1 will allow expense reports to show VAT even if the global VAT setting is off ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;EXPENSEREPORT_USE_OLD_NUMBERING_RULE&#039;&#039;&#039; ► The module Expense Report use numbering rules that you can setup (like other modules do). If you need to keep the hard-coded numbering rule of expenses report used in v6.0 set this constant to 1 ► (&amp;gt;=v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_EXPENSE_IK&#039;&#039;&#039; ► This feature allows you to set index kilometres against a mileage index for different types of vehicles. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_EXPENSE_RULE&#039;&#039;&#039; ► This feature allows you to set a variety of rules per user/group/all so they can only create reports within their limits. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Export Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;EXPORT_CSV_SEPARATOR_TO_USE&#039;&#039;&#039; ► String value to use as default separator to delimit fields of exported files (by default Dolibarr uses &amp;quot;&amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;&amp;quot;). Example: EXPORT_CSV_SEPARATOR_TO_USE=&amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;EXPORT_CSV_FORCE_CHARSET&#039;&#039;&#039; ► Choose the charset used in the output file built by the CSV exporter. By default it is ISO-8859-1. Example: EXPORT_CSV_FORCE_CHARSET= &amp;lt;code&amp;gt;utf-8&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;EXPORTTOOL_CATEGORIES&#039;&#039;&#039; ► Can export categories (several lines) into one column with the &amp;quot;product export profile&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;USE_STRICT_CSV_RULES&#039;&#039;&#039; ► Use strict/real CSV format for export. Do not clean/replace CR+LF with &#039;\n&#039; but quote them using the escaping CSV char (&amp;lt;code&amp;gt;&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*&#039;&#039;&#039;EXPORTS_SHARE_MODELS&#039;&#039;&#039;  ► Share export models between users.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Foundation Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_URL_REDIRECT_SUBSCRIPTION&#039;&#039;&#039; ► Link called and shown when a member account is autocreated in member module by a guest user.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_EXT_URL_SUBSCRIPTION_INFO&#039;&#039;&#039; ► Link of external page pointed by the &amp;quot;Show here&amp;quot; link added in front of payment cell, into the page to make online subscription.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=Holiday Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;HOLIDAY_HIDE_BALANCE&#039;&#039;&#039; ► Hide the user&#039;s vacation balance on the vacation request page&lt;br /&gt;
&lt;br /&gt;
[https://wiki.dolibarr.org/Setup_Other#Top (back to top)]&lt;br /&gt;
=Interventions Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FICHINTER_CLASSIFY_BILLED&#039;&#039;&#039;► Allow to classify an intervention card as &amp;quot;Billed&amp;quot;. This add also trigger &amp;lt;code&amp;gt;FICHINTER_CLASSIFY_BILLED&amp;lt;/code&amp;gt; into list of possible automatic event into agenda.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FICHINTER_DISABLE_DETAILS&#039;&#039;&#039;► Disable entry of detail lines on intervention. Can validate with no line. Only one line will be shown per intervention on list.&lt;br /&gt;
**If set to &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; details are disabled only on intervention list ► (v21.0+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Invoice Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DEPOSIT_MULTI_TVA&#039;&#039;&#039; ► In deposits invoice, creates one line per VAT rate from the origin document ► (6.0)&lt;br /&gt;
*&#039;&#039;&#039;PDF_INVOICE_SHOW_PRICE_INCL_TAX&#039;&#039;&#039; ► In customer&#039;s invoice, add a column with the total including all taxes  ►&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_ALLOW_REUSE_OF_CREDIT_WHEN_PARTIALLY_REFUNDED&#039;&#039;&#039; ► If a credit note was partially refunded (a refund was sent to the customer), with common situation, we wait to have the remain refunded too. With this option, it is possible to convert the remain of invoice into a discount to reuse it into another invoice.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_INVOICE_ALLOW_REUSE_OF_CREDIT_WHEN_PARTIALLY_REFUNDED&#039;&#039;&#039; ► See INVOICE_ALLOW_REUSE_OF_CREDIT_WHEN_PARTIALLY_REFUNDED, but for supplier credit notes.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_CAN_BE_EDITED_EVEN_IF_PAYMENT_DONE&#039;&#039;&#039; ► Allow to edit invoices even if payment was started. Note: If the module &amp;quot;BlockedLog&amp;quot; is active (required in some countries for legal reasons), this will not change content of archived logs tracked by this module. By definition there is no way to change or remove archived records. It will just update data in your application and a new record to track your change  will be recorded into the archive log.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_CAN_ALWAYS_BE_REMOVED&#039;&#039;&#039; ► Allow to always delete invoices (even if invoice is not last one). Note: If the module &amp;quot;BlockedLog&amp;quot; is active (required by some countries for legal reason), this will not change content of archived logs tracked by this module. By definition there is no way to change or remove archived records. It will just update data in your application and a new record to track your change into the read-only archive log.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_CAN_NEVER_BE_EDITED&#039;&#039;&#039; ► Never allow to edit invoices (except draft invoices with ref like (PROV%)). See also INVOICE_CAN_NEVER_BE_REMOVED.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_CAN_NEVER_BE_REMOVED&#039;&#039;&#039; ► Never allow to delete invoices (except draft invoices with ref like (PROV%)). See also INVOICE_CAN_NEVER_BE_EDITED&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_POSITIVE_CREDIT_NOTE&#039;&#039;&#039; ► All amounts on PDF credit notes are positive.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FACTURE_DEPOSITS_ARE_JUST_PAYMENTS&#039;&#039;&#039; ► An old way to create initial payment. This treats deposit invoices as a special case and not as legal deposit invoice. Deposit invoices don&#039;t get counted on turnover. They are then applied as a payment, like a discount, on the final invoice. By default, when you include the deposit into draft of final invoice, the amount of final invoice is reduced. With this option, final amount is not reduced but a payment is registered. WARNING: In a lot of european countries, using this option is not allowed.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FACTURE_SENDBYEMAIL_FOR_ALL_STATUS&#039;&#039;&#039; ► Can send invoice by email to customer even if invoice has status &amp;quot;draft&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_CREDIT_NOTE_STANDALONE&#039;&#039;&#039; ► Start implementation to allow a credit note even without invoice (dangerous) ► (v3.9)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_USE_SITUATION&#039;&#039;&#039; ► 1=Enable the &amp;quot;situation invoice&amp;quot; feature. Warning, this feature is bugged and may not be compatible with the final version of the feature once the bug will be solved. Also, using the double-entry accountancy module is not possible when this option is on (due to the same design problem). 2=Enable the &amp;quot;situation invoice&amp;quot; feature with a rewrite. This mode should be better to become a future stable feature.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_USE_SITUATION_CREDIT_NOTE&#039;&#039;&#039; ► Enable the &amp;quot;situation credit note&amp;quot; feature (need &amp;lt;code&amp;gt;INVOICE_USE_SITUATION&amp;lt;/code&amp;gt;) ► (v8.0)&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_USE_RETAINED_WARRANTY&#039;&#039;&#039; ► Enable the retained warranty on invoice ► (v14.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_DISABLE_DEPOSIT&#039;&#039;&#039; ► Disable deposit invoices&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_DISABLE_REPLACEMENT&#039;&#039;&#039; ► Disable replacement invoices&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_DISABLE_CREDIT_NOTE&#039;&#039;&#039; ► Disable credit notes&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;bdi&amp;gt;&#039;&#039;&#039;INVOICE_ADD_EXTRAFIELD_IN_NOTE&#039;&#039;&#039; ► Add extrafields in note for canelle template ► (v17.0+)&amp;lt;/bdi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_DEFAULT_NOTE_PUBLIC&#039;&#039;&#039; &amp;lt;bdi&amp;gt;► Default text in public note&amp;lt;/bdi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: To decode a QR image of a ZATCA code: https://www.onlinebarcodereader.com/. You can also use the mobile application https://play.google.com/store/apps/details?id=com.posbankbh.einvoiceqrreader&amp;amp;gl=FR&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT&#039;&#039;&#039; ► See PDF option&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_COLUMN&#039;&#039;&#039; ► See PDF options&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;WORKFLOW_BILL_ON_SHIPMENT&#039;&#039;&#039; ► Change label of button with suitable label when you need to create invoice on shipments&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039; ► When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. Use the tag __DIRECTDOWNLOAD_URL_INVOICE__ in email template to insert it. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_POINTOFTAX_DATE&#039;&#039;&#039; ► Add Point of Tax Date on invoices for country-specific legality reasons ► (v4.0+)&lt;br /&gt;
*&#039;&#039;&#039;FACTURE_ENABLE_NEGATIVE&#039;&#039;&#039; ► Can validate an invoice when amount is negative&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FACTURE_ENABLE_NEGATIVE_LINES&#039;&#039;&#039; ► Allows to add negative lines to an invoice ► (v8.0.2+)&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_INVOICE_ENABLE_NEGATIVE&#039;&#039;&#039; ► Can validate an supplier invoice when amount is negative ► (V21 ?)&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_INVOICE_ENABLE_NEGATIVE_LINES&#039;&#039;&#039; ► Allows to add negative lines to an supplier invoice ► (V21 ?)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_USE_DEFAULT_DOCUMENT&#039;&#039;&#039; ► Allow user to select a default invoice documents models according to invoice type. On invoice create page, the model is dynamically changed on invoice type selection. ► (v9.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FACTURE_REUSE_NOTES_ON_CREATE_FROM&#039;&#039;&#039; ► Reuse the Public Note and Private note of the previous object (Proposal,...) when creating the bill.&lt;br /&gt;
*&#039;&#039;&#039;FACTUREFOURN_REUSE_NOTES_ON_CREATE_FROM&#039;&#039;&#039; ► Reuse the Public Note and Private note of the previous object when creating the supplier bill ► (V13.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_FACNUMBER_IN_DISCOUNT_LIST&#039;&#039;&#039; ► Display the reference of credit notes in discount list when creating the bill.&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_ALLOW_FREE_REF&#039;&#039;&#039; ► Capability to change reference of an invoice. This will be possible as long as the invoice has the status “Draft” and only if your country is not in Europe(V11)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_DISALLOW_REOPEN&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_MAX_FUTURE_DELAY&#039;&#039;&#039; ► Numbers of seconds allowed for billing in the future ► (V14.0)&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_AUTO_NEXT_MONTH_ON_LINES&#039;&#039;&#039; ► Increase start date and end date by one month, if an invoice line is a clone of a time based service AND if this services started on the first day of month and ended on the last day of month ► (V13.0.1)&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_KEEP_DISCOUNT_LINES_AS_IN_ORIGIN&#039;&#039;&#039; ► Does not change a line with a negative price into an absolute discount when creating an invoice ► (V16 ?)&lt;br /&gt;
*&#039;&#039;&#039;INVOICEREC_SET_AUTOFILL_DATE_START&#039;&#039;&#039; and &#039;&#039;&#039;INVOICEREC_SET_AUTOFILL_DATE_END ►&#039;&#039;&#039; Set start and end date to yes for lines of template invoice when created from a draft invoice ► (V16)&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_REC_DATE_TO_YES&#039;&#039;&#039; &#039;&#039;&#039;►&#039;&#039;&#039; Set start and end date to yes by default in add line form for template invoice ► (V16)&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_SUBTYPE_ENABLED&#039;&#039;&#039; ► Extends Dolibarr standard invoice with more invoice types used in some countries. A combo box in the new invoice creation card allows the selection of &amp;quot;subtypes&amp;quot; with values from dictionary &amp;quot;Invoice Subtypes&amp;quot; ► (v19.0+)&lt;br /&gt;
*&#039;&#039;&#039;LIST_OF_QUALIFIED_INVOICES_LIMIT_DEFINED&#039;&#039;&#039; &#039;&#039;&#039;►&#039;&#039;&#039; Perf options to limit list of invoices for &amp;quot;credit note&amp;quot; source (on form &amp;quot;create a credit note&amp;quot;), usable for big quantities of invoices for one customer like you can have with TakePos ► (V22+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Leave=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NON_WORKING_DAYS_INCLUDE_SATURDAY&#039;&#039;&#039; ► Set this value to 0 if you want to have the Saturday as a working day&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NON_WORKING_DAYS_INCLUDE_SUNDAY&#039;&#039;&#039; ► Set this value to 0 if you want to have the Sunday as a working day&lt;br /&gt;
&lt;br /&gt;
=Look or Theme=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FAVICON_URL&#039;&#039;&#039; ► favicon url&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EASTER_EGG_COMMITSTRIP&#039;&#039;&#039; ► Show a comic image from the CommitStrip website. Images are refreshed daily. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_INCLUDE_GLOBAL_STATS_IN_OPENED_DASHBOARD&#039;&#039;&#039; ► This conf will auto remove global stats box item if there are already in the new dashboard of opened elements and keep displayed stats on the opened item box (not only on mouse over) ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_TOP_MENU_SEARCH_DROPDOWN&#039;&#039;&#039; ► Actually only for eldy theme, this conf move search input  to top menu and use new design too ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THEME_AGRESSIVENESS_RATIO&#039;&#039;&#039; ► This conf can be used to increase/decrease aggressiveness of colors. Value 0 is medium, value is between -100 (light grey colors) to +100 (very flashy colors) ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THEME_SHOW_BORDER_ON_INPUT&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_GLOBAL_WORKBOARD&#039;&#039;&#039; ► Hide the work board of the main page ► (v13.0+)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_GLOBAL_BOXSTATS&#039;&#039;&#039; ► Hide the Statistic Box of the main page&lt;br /&gt;
*&#039;&#039;&#039;ALLOW_THEME_JS ►&#039;&#039;&#039; Allow JS file in theme folder (same name as theme folder)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Manifest (Progressive Web App)=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MANIFEST_APPLI_THEME_COLOR ►&#039;&#039;&#039; Theme color for manifest&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MANIFEST_APPLI_BG_COLOR ►&#039;&#039;&#039; Background color  for manifest&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MANIFEST_APPLI_LOGO_URL  ►&#039;&#039;&#039; Logo for manifest&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MANIFEST_APPLI_LOGO_URL_SIZE  ►&#039;&#039;&#039; Logo url size for app (150, 192, 512px) missing 3 configurations&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Order Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MASSACTION_CREATEBILLS_REDIRECT_IF_ONE&#039;&#039;&#039; ► If set 1, redirects to the one bill created from massaction create bills from order list ► (v20.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MASSACTION_CREATEBILLS_REDIRECT_IF_MANY&#039;&#039;&#039; ► If set to 1, redirects to the invoice list after plural invoices where generated from tho massaction create bills from order list  ► (v20.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ORDERLIST_CREATEBILLS_ONEBYTHIRD&#039;&#039;&#039; ► Allow defining value for option &amp;quot;one by thirdparty&amp;quot; in massaction create bills from orders list page (no by default, yes if set to &#039;yes&#039; or 1) ► (v20.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_PROPAL_REFCLIENT_FOR_ORDER&#039;&#039;&#039; =&amp;gt; Copy customer reference from proposal to order. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ORDER_REQUIRE_SOURCE&#039;&#039;&#039; =&amp;gt; Make the input field &amp;quot;Source of order&amp;quot; mandatory.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ORDER_VALID_AFTER_CLOSE_PROPAL&#039;&#039;&#039; =&amp;gt; When an order is created on a proposal close, the order is directly defined with status &amp;quot;Validated&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ORDER_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039; =&amp;gt; When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ORDER_ENABLE_NEGATIVE&#039;&#039;&#039; =&amp;gt; Can validate an order when amount is negative&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_PROPAGATE_EXTRAFIELDS_TO_ORDER&#039;&#039;&#039; =&amp;gt; Copy also extrafields from thirdparty to order (if name match). ► (v11.0+)&lt;br /&gt;
*&#039;&#039;&#039;ORDER_DEFAULT_NOTE_PUBLIC&#039;&#039;&#039; ► Default text in public note&lt;br /&gt;
*&#039;&#039;&#039;MAIN_REMOVE_DROPDOWN_CREATE_BUTTONS_ON_ORDER&#039;&#039;&#039; =&amp;gt; Remove the create dropdown button on order card (introduce on v19) to come back with old buttons.  &#039;&#039;&#039;►&#039;&#039;&#039; (v20.0+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=PDF Options=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ADD_PDF_BACKGROUND&#039;&#039;&#039; ► Define this constant with short name of a PDF file (example &amp;quot;&amp;lt;code&amp;gt;mypdf.pdf&amp;lt;/code&amp;gt;&amp;quot;) that must be saved into directory &amp;quot;&amp;lt;code&amp;gt;documents/mycompany&amp;lt;/code&amp;gt;&amp;quot;. This will add PDF as a background of some of your generated PDF files (proposals,invoices,orders). If you need to concat PDF, see instead [[Module Concat PDF]].&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_FORCE_SAVEAS&#039;&#039;&#039; ► If your browser always asks to save downloaded files on disk (like PDF), try this this option. File may be displayed directly in your browser. Values&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: 0= Default (file is auto downloaded), 1= For to output the file into the browser tab, 2= For to output the file into a browser tab open with target_blank&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_PDF_AUTOUPDATE&#039;&#039;&#039; ► Disable automatic generation of PDF each time we add/update/delete a product line (we can still build document by clicking on &amp;quot;Generate&amp;quot;). This option may increase interface speed on servers with low CPU.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_PDF_COMPRESSION&#039;&#039;&#039; ► Disable PDF compression.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOCUMENTS_WITH_PICTURE_WIDTH&#039;&#039;&#039; ► Can change size of picture when hidden option &amp;lt;code&amp;gt;MAIN_GENERATE_PROPOSALS_WITH_PICTURE&amp;lt;/code&amp;gt; is used. By default value is &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS&#039;&#039;&#039; ► Adding the company address at the bottom of the page. Disabled by default&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_PROPOSALS_WITH_PICTURE&#039;&#039;&#039; ► Include the first image of the product into the line of the generated PDF for customer proposals.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_ORDERS_WITH_PICTURE&#039;&#039;&#039; ► Include the first image of the product into the line of the generated PDF for customer orders.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_INVOICES_WITH_PICTURE&#039;&#039;&#039; ► Include the first image of the product into the line of the generated PDF for customer invoices.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_SUPPLIER_PROPOSAL_WITH_PICTURE&#039;&#039;&#039; ► Include the first image of the product into the line of the generated PDF for supplier proposals ► (v5.0.3+)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_SUPPLIER_ORDER_WITH_PICTURE&#039;&#039;&#039; ► Include the first image of the product into the line of the generated PDF for supplier orders&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT&#039;&#039;&#039; ► Disable VAT on generated documents. like for an association. (Works with crabe template)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_COLUMN&#039;&#039;&#039; ► Hide column with VAT information but only column not total.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_INVERT_SENDER_RECIPIENT&#039;&#039;&#039; ► Invert sender and recipient in some PDF. Note: This option is set automatically if country if Germany.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ODT_AS_PDF&#039;&#039;&#039; ► Activate ODT to PDF conversion. Value can be &amp;quot;libreoffice&amp;quot; or &amp;quot;unoconv&amp;quot;. Do not use value &#039;&#039;&#039;&amp;lt;nowiki/&amp;gt;&#039;jodconverter&#039;&amp;lt;nowiki/&amp;gt;&#039;&#039;&#039; any more, as it is declared deprecated and partly not functional, use value &#039;&#039;&#039;&amp;lt;nowiki/&amp;gt;&#039;libreoffice&#039;&#039;&#039;&#039; instead, it requires only &#039;&#039;&#039;soffice&#039;&#039;&#039; (OpenOffice or LibreOffice) installed on server (use &#039;&#039;&#039;apt install soffice libreoffice-common libreoffice-writer&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
If you got this error: javaldx failed! Warning: failed to read path from javaldx with no return to prompt when running soffice --headless -env:UserInstallation=file:&amp;quot;/tmp&amp;quot; --convert-to pdf --outdir xxx ./yyy.odt, check that directory defined into env:UserInstallation parameters exists and is writeable.&lt;br /&gt;
&lt;br /&gt;
You may also have a look at this page if your server is on Windows: [[Générer automatiquement des documents PDF à partir de fichier ODT avec Doliwamp]]&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ODT_AS_PDF_DEL_SOURCE&#039;&#039;&#039; ► For ODT generation. If set, then initial behaviour is conserved but ODT file is removed when option to convert it as PDF (see previous) is on. Disabled by default&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_FORCE_FONT&#039;&#039;&#039; ► To ignore font defined into language file and force usage of a particular font. For example &amp;quot;&amp;lt;code&amp;gt;DejaVuSans&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_FORCE_FONT_SIZE&#039;&#039;&#039; ► To force size of font (by default 10). For example &amp;quot;&amp;lt;code&amp;gt;12&amp;lt;/code&amp;gt;&amp;quot; ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_FREETEXT_HEIGHT&#039;&#039;&#039; ► Change height of space reserved to output the free text.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_TITLE_BACKGROUND_COLOR&#039;&#039;&#039; ► Can define a background color onto title line. Example: &amp;lt;code&amp;gt;220,220,200&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_USE_LARGE_LOGO&#039;&#039;&#039; ► Use the original logo with its higher resolution into the PDF instead of the small thumb. This may lead to very very large PDF !&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_BACKGROUND_ON_PDF&#039;&#039;&#039; ► Define this constant with short name of an image (example &amp;quot;&amp;lt;code&amp;gt;myimage.jpg&amp;lt;/code&amp;gt;&amp;quot;) that must be saved into directory &amp;quot;&amp;lt;code&amp;gt;documents/mycompany/logos&amp;lt;/code&amp;gt;&amp;quot;. This will add this background image into your generated PDF files.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_COMPANY_NAME_OF_CONTACT&#039;&#039;&#039; ► Use contact name and information rather than company&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_ADDALSOTARGETDETAILS&#039;&#039;&#039; ► If 1, add details of recipient on generated PDFs (email, fax, url and phone). Can be useful in cases where a printed order/invoice etc is given to a delivery driver/courier etc.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_TVAINTRA_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show VAT N° in source address of PDF to comply with legalities in certain countries. Note that VAT number should be already visible in footer of page ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING&#039;&#039;&#039; ► Add optional esign field in pdf propal ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROFID1_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 1 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROFID2_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 2 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROFID3_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 3 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROFID4_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 4 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROFID5_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 5 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROFID6_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 6 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_BANK_HIDE_NUMBER_SHOW_ONLY_BICIBAN&#039;&#039;&#039; ► Hide bank number (&amp;quot;code banque/guichet/compte&amp;quot; for France, &amp;quot;sort code/account number&amp;quot; for GB, ...) and keep only BIC/IBAN on PDF.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_BOLD_PRODUCT_REF_AND_PERIOD&#039;&#039;&#039; ► Add more visibility (bold) on product ref and period of service in desc. ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_HIDE_PRODUCT_REF_IN_SUPPLIER_LINES&#039;&#039;&#039; ► Modify the use/position of Supplier Ref/Internal Ref with the item Label (name) on PDF documents.&lt;br /&gt;
&lt;br /&gt;
Default (constant not set or Value &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;): Internal ref followed by supplier ref in brackets.&amp;quot;COMPANY-REF-001 (Vendor SKU SUPPLIER-REF-001) - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Value &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;: Supplier ref only eg.&amp;quot;SUPPLIER-REF-001 - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Value &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;: Supplier ref followed by internal ref in brackets. eg.&amp;quot;SUPPLIER-REF-001 (InternalRef COMPANY-REF-001) - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME&#039;&#039;&#039; ► Include alternative/alias name into name on PDF.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_SECURITY_ENCRYPTION&#039;&#039;&#039; ► Encrypt PDF produced by dolibarr. See additional parameters&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;:PDF_SECURITY_ENCRYPTION_RIGHTS (block &#039;modify&#039; or &#039;copy&#039;) - &#039;&#039;&#039;PDF_SECURITY_ENCRYPTION_USERPASS&#039;&#039;&#039; - &#039;&#039;&#039;PDF_SECURITY_ENCRYPTION_OWNERPASS&#039;&#039;&#039; (random if not specified) - &#039;&#039;&#039;PDF_SECURITY_ENCRYPTION_STRENGTH&#039;&#039;&#039; (0 = RC4 40 bit; 1 = RC4 128 bit; 2 = AES 128 bit; 3 = AES 256 bit) - &#039;&#039;&#039;PDF_SECURITY_ENCRYPTION_PUBKEYS&#039;&#039;&#039; Array of recipients containing public-key certificates (&#039;c&#039;) and permissions (&#039;p&#039;) - For example: array(array(&#039;c&#039; =&amp;gt; &#039;file://../examples/data/cert/tcpdf.crt&#039;, &#039;p&#039; =&amp;gt; array(&#039;print&#039;))). WARNING: if an &#039;encrypted PDF&#039; provides a protection against manual change done by mistake, it does NOT provide any protection against modification of your PDF in a security point of view: A protected PDF can still be modified by any advanced PDF editors. Don&#039;t forget this: If a software can read the PDF, this software can also rebuild it differently !&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_SHOW_PROJECT&#039;&#039;&#039; ► Show project onto PDF (supported on supplier order only for the moment)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_USE_ALSO_LANGUAGE_CODE&#039;&#039;&#039; ► The value of this constant must be a language code (&#039;fr_FR&#039;, &#039;en_US&#039;, &#039;sa_SA&#039;, ...). If set, the PDF document will contains both language (default and the one defined by the constant).&lt;br /&gt;
*&#039;&#039;&#039;DOC_SHOW_FIRST_SALES_REP&#039;&#039;&#039; ► Show the sales representant on header (at least on propal azur and rubis template)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_DASH_BETWEEN_LINES&#039;&#039;&#039;&lt;br /&gt;
*&lt;br /&gt;
*&#039;&#039;&#039;SHOW_SUBPRODUCT_REF_IN_PDF&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;PDF_HIDE_PRODUCT_LABEL_IN_SUPPLIER_LINES&#039;&#039;&#039; ► hide product label in supplier order lines (V15+)&lt;br /&gt;
*&#039;&#039;&#039;SHIPPING_PDF_DISPLAY_AMOUNT_HT&#039;&#039;&#039; ► Show HT unit price and HT total price for lines of PDF shipment&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOCUMENTS_HIDE_DESCRIPTION_FOR_FACTURE&#039;&#039;&#039; ► To Hide product description in Customer Invoice&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOCUMENTS_HIDE_DESCRIPTION_FOR_COMMANDE&#039;&#039;&#039; ► To Hide product description in Sales Order&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOCUMENTS_HIDE_DESCRIPTION_FOR_ORDER_SUPPLIER&#039;&#039;&#039; ► To Hide product description in Purchase Order&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOCUMENTS_HIDE_DESCRIPTION_FOR_INVOICE_SUPPLIER&#039;&#039;&#039; ► To Hide product description in Vendor Invoice&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_PROPAL_SHOW_PRICE_INCL_TAX&#039;&#039;&#039; ► Display price with tax on Proposal(cyan template) (V17+)&lt;br /&gt;
*&#039;&#039;&#039;PDF_ORDER_SHOW_PRICE_INCL_TAX&#039;&#039;&#039; ► Display price with tax on Order(eratosthene template) (V17+)&lt;br /&gt;
*&#039;&#039;&#039;PDF_INVOICE_SHOW_PRICE_INCL_TAX&#039;&#039;&#039; ► Display price with tax on Invoice(sponge template) (V17+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_USE_GETALIASNBPAGE_FOR_TOTAL&#039;&#039;&#039; ► Display the page number alias&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_NO_SENDER_FRAME&#039;&#039;&#039; ► Do not display the &amp;quot;sender&amp;quot; mention&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_HIDE_SENDER_NAME&#039;&#039;&#039; ► Do not display the sender name&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_NO_RECIPENT_FRAME&#039;&#039;&#039; ► Do not display BillTo&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MULTICURRENCY_SHOW_ALSO_MAIN_CURRENCY_ON_PDF&#039;&#039;&#039; ► Show the amount in the 2 currencies on PDF when using the MultiCurrency module&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_DONOTREPEAT_HEAD ►&#039;&#039;&#039; Do not repeat the header of document&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Point of Sale (POS)=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CASHDESK_SHOW_KEYPAD&#039;&#039;&#039; ► Show a mouse key pad into the &#039;Simple Point of Sale&#039; module.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;POS_ADDON&#039;&#039;&#039; ► Set this value to an existing numbering module rule (for example &#039;&amp;lt;code&amp;gt;mod_facture_terre&amp;lt;/code&amp;gt;&#039;, &#039;&amp;lt;code&amp;gt;mod_facture_mars&amp;lt;/code&amp;gt;&#039;, ...) to force the numbering module to use for invoice ref definition when invoice is created by the POS. For example setting value &amp;lt;code&amp;gt;POS_ADDON&amp;lt;/code&amp;gt; to &#039;&amp;lt;code&amp;gt;mod_facture_terre&amp;lt;/code&amp;gt;&#039; will use the numbering module &#039;&amp;lt;code&amp;gt;terre&amp;lt;/code&amp;gt;&#039; for invoice generated from POS, whatever is the numbering rule defined into invoice module setup (you can also use POS_NUMBERING_TERRE_FORCE_PREFIX and POS_NUMBERING_MARS_FORCE_PREFIX variable to change the prefix used).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;TAKEPOS_ENABLE_SUMUP&#039;&#039;&#039; ► Enable the compatibility of TakePOS with the card reader terminal [https://SumUp.fr SumUp]&lt;br /&gt;
*&#039;&#039;&#039;TAKEPOS_CAN_FORCE_BANK_ACCOUNT_DURING_PAYMENT&#039;&#039;&#039; ► Possibility to force the bank account during the payment in TakePOS  ► (v13.0)&lt;br /&gt;
*&#039;&#039;&#039;TAKEPOS_CONTROL_CASH_OPENING&#039;&#039;&#039; ► Control the cash opening&lt;br /&gt;
*&#039;&#039;&#039;TAKEPOS_NUMPAD_FORCE_PAYMENT_ICONS_LABELS&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Products Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CATEGORY_GRAPHSTATS_ON_PRODUCTS&#039;&#039;&#039; ► Show graph of products with categories and totals in Products Area screen&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PRODUCT_DISABLE_CUSTOMCOUNTRYCODE&#039;&#039;&#039; ► Avoid customs code and country of origin to be set as product description when added to Propal/Order/Invoice&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_ADD_TYPE_IN_DOCUMENTS&#039;&#039;&#039; ► Add text &amp;quot;Product&amp;quot; or &amp;quot;Service&amp;quot; at beginning of details lines on built PDF documents.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DONOTSEARCH_ANYWHERE&#039;&#039;&#039; ► When Ajax search is enabled, search is done on criteria anywhere in label of product. By adding this option, search is done only on start of label. This is really faster when you have a huge number of products.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DIRECT_STATUS_UPDATE&#039;&#039;&#039; ► Allows you to change the status of the product (&#039;&#039;for sale/not for sale for purchase/not for purchase&#039;&#039;) directly on the product page via a &#039;&#039;on/off&#039;&#039; switch button. This can be convenient for those who need to quickly disable certain statuses of products without having to go through the editing product page individually. Also can be very useful if used as a filter on the product and product search list. This option doesn&#039;t generate a MODIFY trigger, so be careful with external modules. ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SEARCH_PRODUCT_BY_FOURN_REF&#039;&#039;&#039; ►  Allow to search a product by supplier ref in document&#039;s add line form. ► (&amp;gt;= 8.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_FREE_LINES&#039;&#039;&#039; ► Disallow using free lines to add line in documents ► (&amp;gt;= 8.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_PRODUCT_ACTIVITY_TRIM&#039;&#039;&#039; ► Show Product and Services turnover before for all four quarters tax over recent years recent years on the product area ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_DESC_IN_LIST&#039;&#039;&#039; ► Show long description of product/service into lists.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_PROPAGATE_CUSTOMER_PRICES_ON_CHILD_COMPANIES&#039;&#039;&#039; ► Disable propagation of prices per customer from a customer to its child company.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_PUBLIC_URL&#039;&#039;&#039; ► Disable public url in product card ► (v14.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_STOCK_LEVELS&#039;&#039;&#039; ► Disable properties of stock limits and desired optimal value on product ► (v14.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_NATURE&#039;&#039;&#039; ► Disable nature in product card ► (v14.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_WEIGHT&#039;&#039;&#039; ► Disable weight in product card ► (v14.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_PRICES&#039;&#039;&#039; ► Disable prices in product card ► (v14.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_ACCOUNTING&#039;&#039;&#039;  ► Disable accounting in product card ► (v14.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_SIZE&#039;&#039;&#039; ► Disable size in product card.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_LENGTH&#039;&#039;&#039; ► Disable length in product card ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_SURFACE&#039;&#039;&#039; ► Disable surface in product card. ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_VOLUME&#039;&#039;&#039; ► Disable volume in product card.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_CUSTOM_INFO&#039;&#039;&#039; ► Disable custom info (custom code and country origin) in product/service card.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_MULTIPRICES_USE_VAT_PER_LEVEL&#039;&#039;&#039; ► When option to use price per level/segment is on, this allows to also set a dedicated vat for each price level.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_CUSTOMER_PRICES_BY_QTY&#039;&#039;&#039; ► If price per quantity ► &#039;&#039;Experimental&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES&#039;&#039;&#039; ► If price per quantity and customer ► &#039;&#039;Experimental&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_LOT_ENABLE_QUALITY_CONTROL&#039;&#039;&#039; ► Enable feature (Display fields for life time and quality control duration) for quality control on product and lot&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_MAX_LENGTH_COMBO&#039;&#039;&#039; ► Limit the length of the label displayed when adding lines in proposals/invoices/orders&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_MAX_VISIBLE_PHOTO&#039;&#039;&#039; ► Show a maximum number of product photos (as thumbnails) on the product main card. Example, setting this constant to &#039;&amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;&#039; will show the first five product photos found on the product card.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_PDF_MERGE_PROPAL&#039;&#039;&#039; ► Enable module Propal merge product PDF&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_USE_OLD_PATH_FOR_PHOTO&#039;&#039;&#039; ► Ask dolibarr to check also old path (before 3.7) where photos were stored.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_USE_UNITS&#039;&#039;&#039; ► Add other units on products (Use same dictionary as default unit feature) and propagate this unit on line of documents.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EDIT_LINE_ALLOW_ALL_UNIT_TYPE ►&#039;&#039;&#039; Allow the selection of other unit types when editing the document line&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;RESOURCE_ON_PRODUCTS&#039;&#039;&#039; ► Allow to affect resources on products/services ► (v10.0+)&lt;br /&gt;
*&#039;&#039;&#039;RESOURCE_ON_SERVICES&#039;&#039;&#039; ► Allow to affect resources on products/services ► (v10.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_SHOW_ORIGIN_IN_COMBO&#039;&#039;&#039; ► Show origin of products when adding lines in proposals/invoices/orders ► (v12.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_ATTRIBUTES_HIDECHILD&#039;&#039;&#039;  ► Add option hide child if variantes&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_ADD_FORM_ADD_TO&#039;&#039;&#039; ► Add a product to a draft proposal/order/invoice, from the product card.&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_SELLBY&#039;&#039;&#039; ► Hide the Sell by date ► (v13.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_EATBY&#039;&#039;&#039; ► Hide the Eat by date ► (v13.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DENY_CHANGE_PRODUCT_TYPE&#039;&#039;&#039; ► Forbid to change the product type&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_SORT_BY_CATEGORY&#039;&#039;&#039; ► Sort the product by categories instead of by ID&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_ADD_NET_MEASURE&#039;&#039;&#039; ► Support Net Measure in product&#039;s card.php (For real weight, volume or piece; needed for some business ie fruits, vegetables....). Note brut value is already available natively, use this option only if you need 2 weights, 2 volumes, ...for each product) ► (v11.0.1+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_PRICE_BASE_TYPE&#039;&#039;&#039;  ► value &#039;TTC&#039; / &#039;HT&#039; specify the default value of the price (with or without taxes) ► (v16.0.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_LOAD_EXTRAFIELD_INTO_OBJECTLINES&#039;&#039;&#039; ► Load product extrafiled on object lines&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_USE_SUB_COST_PRICES_IF_COST_PRICE_EMPTY&#039;&#039;&#039;&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: Calculate the parent product production price by child prices.&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_SEARCH_AUTO_SELECT_IF_ONLY_ONE&#039;&#039;&#039;&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: Set to 0 to disable or 1 to enable (by default) the auto select product behavior in combobox when there is only one result.(v21.0+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Projects Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_ALLOW_TO_LINK_FROM_OTHER_COMPANY&#039;&#039;&#039; ► Option related to the combo list Project on elements. It is a list of thirdparty IDs. If set, you can link an object to a project owned by one of this thirdparty in the list.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_ALLOW_COMMENT_ON_PROJECT&#039;&#039;&#039; ► Add comment feature on a project&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_ALLOW_COMMENT_ON_TASK&#039;&#039;&#039; ► Add comment feature on project task&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_ALWAYS_DISCARD_CLOSED_PROJECTS_IN_SELECT&#039;&#039;&#039; ► Discards closed projects in every select field. A closed project can&#039;t be associated to an object ► (v20.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS&#039;&#039;&#039; ► Option related to the combo list Project on elements. Can link a supplier element (vendor proposal, purchase order, vendor invoice, reception, ...) to any project even if object has a different supplier than the one of the project to link to. See also PROJECT_ALLOW_TO_LINK_FROM_OTHER_COMPANY that is different because it allows to define some given thirdparty ID to allow.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_CAN_ALWAYS_LINK_TO_ALL_CUSTOMERS&#039;&#039;&#039; ► Option related to the combo list Project on elements. Can link a custom element (proposal, sale order, vendor invoice, shipment, ...) to any project even if object has a different customer than the one of the project to link to.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_CREATE_ON_OVERVIEW_DISABLED&#039;&#039;&#039; ► Hide the &amp;quot;create ...&amp;quot; button on the overview pagec&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_DISABLE_UNLINK_FROM_OVERVIEW&#039;&#039;&#039; ► Enable removing the button from a link in the project overview. ► (&amp;gt;= v8.0.1)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_HIDE_UNSELECTABLES&#039;&#039;&#039; ► Hide into select list, all project that we can&#039;t select (closed or draft)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_HIDE_TASKS&#039;&#039;&#039; ► Hide tasks. For user using project only as an analytics key and not using tasks.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_LIST_SHOW_STARTDATE&#039;&#039;&#039; ► Shows start date of projects in project lists.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_LINK_ON_OVERWIEW_DISABLED&#039;&#039;&#039; ► Hide the &amp;quot;link to&amp;quot; form on the overview page ► (v4.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_SHOW_REF_INTO_LISTS&#039;&#039;&#039; ► Add column with project ref into list (with 3.7 list of supplier invoices only, will be expanded to other lists)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_TIME_ON_ALL_TASKS_MY_PROJECTS&#039;&#039;&#039; ► Can add time spent on tasks, even if i am not assigned to task (however, task must be a project i am a contact).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_OPEN_ALWAYS_ON_TAB&#039;&#039;&#039; ► Set to value &#039;task&#039;, or &#039;preview&#039; to always open the project on the given tab instead of main tab.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_ELEMENTS_FOR_MINUS_MARGIN&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;TIMESPENT_ALWAYS_UPDATE_THM&#039;&#039;&#039; ► when it&#039;s on always check current time of user to update it in task time line ► (v17.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_CREATE_NO_DRAFT&#039;&#039;&#039; ► when you create project status will be validate ► (v19.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_ENABLE_SUB_PROJECT&#039;&#039;&#039; ► Add support for parent projects ► (v19.0)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Proposals Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_PROPOSALS_WITH_PICTURE&#039;&#039;&#039; ► Add a picture of the product (the first one found if there are several) into the generated PDF of proposals. Note that using this will reduce the available width for the product description.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROPAL_CHOOSE_ODT_DOCUMENT&#039;&#039;&#039; ► On setup page, you&#039;ll be able to select which ODT document to use when close or cancel proposals.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING&#039;&#039;&#039; ► add optional esign field in pdf propal ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROPAL_CLONE_ON_CREATE_PAGE&#039;&#039;&#039; ► On the create proposal page, ask if we want to create the proposal by cloning an already existing one. You should use instead the &amp;quot;Clone&amp;quot; button available on existing proposals.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROPAL_DISABLE_SIGNATURE&#039;&#039;&#039; ► Do no show the box for signature.&lt;br /&gt;
*&#039;&#039;&#039;PROPAL_SIGNATURE_ON_SPECIFIC_PAGE ►&#039;&#039;&#039; Will show the signature on which page you wanted . Set to 1 will show on first page , set to -1 will show on last second page .  ( If &#039;&#039;&#039;PROPAL_SIGNATURE_ON_ALL_PAGES&#039;&#039;&#039; is enabled, the &#039;&#039;&#039;PROPAL_SIGNATURE_ON_SPECIFIC_PAGE&#039;&#039;&#039; setting will be ignored.)&lt;br /&gt;
*&#039;&#039;&#039;PROPAL_SIGNATURE_ON_ALL_PAGES ►&#039;&#039;&#039; Will show the signature on every pages .&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_PDF_MERGE_PROPAL&#039;&#039;&#039; ► When generating the proposal PDF, all PDFs linked to products linked to proposal are also included into final PDF&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROPOSAL_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039; ► When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROPOSAL_AUTO_ADD_AUTHOR_AS_CONTACT&#039;&#039;&#039; ► Add Proposal Author as user contact follow proposal&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROPOSAL_PDF_HIDE_PAYMENTTERM&#039;&#039;&#039; ► Do not show the payment term on proposal ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROPOSAL_PDF_HIDE_PAYMENTMODE&#039;&#039;&#039; ► Do not show the payment mode on proposal ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;WORKFLOW_PROPAL_CAN_CLASSIFY_BILLED_WITHOUT_INVOICES&#039;&#039;&#039; ► Button &amp;quot;Classified Billed&amp;quot; is visible on proposal even if there is no invoice linked to proposal.&lt;br /&gt;
*&#039;&#039;&#039;PROPAL_REOPEN_UNSIGNED_ONLY&#039;&#039;&#039;  ► Do not allow reopening of signed (or billed) proposals. (V15)&lt;br /&gt;
*&#039;&#039;&#039;PROPOSAL_ARE_NOT_BILLABLE&#039;&#039;&#039;  ► Disable billing button on proposals (V15)&lt;br /&gt;
*&#039;&#039;&#039;PROPAL_DEFAULT_NOTE_PUBLIC&#039;&#039;&#039; ► Default text in public note&lt;br /&gt;
*&#039;&#039;&#039;PROPAL_ENABLE_NEGATIVE&#039;&#039;&#039; ► Can validate a proposal when amount is negative&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Receptions=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;RECEPTION_STANDALONE&#039;&#039;&#039; ► Create a simple Reception not connected to supplier order, warehouse, stock e.t.c. (&amp;gt;=23.0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Services Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SERVICE_ARE_ECOMMERCE_200238EC&#039;&#039;&#039; ►  If seller and buyer are in Europe and buyer is not a company, use the VAT of buying country. For french speaking people, see also the page [[Loi_européenne_TVA_Vente_à_Distance_VAD_et_e-commerce_BtoC]].&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FILL_SERVICE_DATES_FROM_LAST_SERVICE_LINE&#039;&#039;&#039;  ► (v13.0) On add line form add a button to fill service dates from the last service line&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Shipments=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;STOCK_WAREHOUSE_NOT_REQUIRED_FOR_SHIPMENTS&#039;&#039;&#039; ► If set, you can add a shipment line, with no stock source defined. ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SHIPMENT_GETS_ALL_ORDER_PRODUCTS&#039;&#039;&#039; ► Add all order lines in shipment, including the one with 0 in quantity&lt;br /&gt;
*&#039;&#039;&#039;SHIPPING_PDF_HIDE_ORDERED&#039;&#039;&#039; ►Hide column quantity ordered on shipment pdf (&amp;gt;=15.0)&lt;br /&gt;
*&#039;&#039;&#039;STOCK_SUPPORTS_SERVICES&#039;&#039;&#039; ►Allow to manage services into warehouse and allow to ship services&lt;br /&gt;
*&#039;&#039;&#039;SHIPMENT_SUPPORTS_SERVICES&#039;&#039;&#039; ►Allow to ship services without stock (&amp;gt;=19.0)&lt;br /&gt;
*&#039;&#039;&#039;SHIPPING_DISPLAY_STOCK_ENTRY_DATE&#039;&#039;&#039; ►Display date entry stock exped and sort in date order (&amp;gt;=19.0)&lt;br /&gt;
*&#039;&#039;&#039;SHIPMENT_STANDALONE ►&#039;&#039;&#039;Create a simple shipment not connected to sales order, warehouse, stock e.t.c. (&amp;gt;=23.0)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=SMS= &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SMS_DEBUG&#039;&#039;&#039; ► Write content of SMS sent into file &amp;lt;code&amp;gt;dolibarr_sms.log&amp;lt;/code&amp;gt; into directory &amp;lt;code&amp;gt;dolibarr_main_data_root&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Stocks=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_DISABLE_STOCK_DISPATCH_WHEN_TOTAL_REACHED&#039;&#039;&#039; ► Disable stock dispatch when total expected was already received&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;STOCK_EXCLUDE_VIRTUAL_PRODUCTS&#039;&#039;&#039; ► If product is a virtual product, we do not manage stock for it.&lt;br /&gt;
*&#039;&#039;&#039;STOCK_ALLOW_DELETE_OF_MOVEMENT&#039;&#039;&#039; ► Enable massaction option to delete in movements list (be carefull !!).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ENTREPOT_EXTRA_STATUS&#039;&#039;&#039; ► Instead of the 2 status (Closed, Open), a Warehouse has 3 status: Closed, Open (for all movements), Open (for internal movement only). Internal movement only means you can&#039;t use the warehouse to make shipment or receptions.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_STATUS_FOR_VIRTUAL_STOCK&#039;&#039;&#039; ► For the calculation of virtual stocks, by default supplier orders with the status 3 (ordered) and 4 (partially received) are used. You can enter the list of statuses to be taken into account separated by commas for this calculation (example: 0,1,2,3)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;STOCK_MOVEMENT_LIST_HIDE_UNIT_PRICE&#039;&#039;&#039; ► to hide unit price on some pages (V15+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;DISABLE_QTY_OVERWRITE&#039;&#039;&#039; ► Disable quantity overwrites on inventories ► (v19.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_WAREHOUSE_LIST_DISPLAY_MODE&#039;&#039;&#039; ► Change warehouse select list display mode  ► (v21.0) (see github pull request [https://github.com/Dolibarr/dolibarr/pull/31013 #31013] for more info)&lt;br /&gt;
**0&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: Default behavior, display parents of warehouse&lt;br /&gt;
**1&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: Display only current warehouse label only&lt;br /&gt;
**2&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: Display last parent warehouse label&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Stripe=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;STRIPE_USE_INTENT_WITH_AUTOMATIC_CONFIRMATION&#039;&#039;&#039; ► 1 is the default mode and will use the native Stripe form for the checkout (with card only), 2 will use the native Stripe form (PaymentElement complete, multi payment modes). Note that STRIPE_USE_NEW_CHECKOUT is an abandonned alternative (so no more NEW, that does not bring real added value)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Suppliers Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FOURN_PRODUCT_AVAILABILITY&#039;&#039;&#039; ► On the Suppliers price page of the products, activate the supplier product availability. &#039;&#039;This is duplicate feature with delivery_delay introduced with 3.8.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;RELOAD_PAGE_ON_SUPPLIER_CHANGE&#039;&#039;&#039; ► On creation of a supplier order/invoice, reload form with supplier-specific details when supplier is selected from drop-down list.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_INVOICE_WITH_PREDEFINED_PRICES_ONLY&#039;&#039;&#039; ► Restrict selection of products in supplier invoice to only those with a buying price defined for that supplier. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_AUTOADD_USER_CONTACT&#039;&#039;&#039; ► Add user approving supplier order as a contact automatically.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_DEFAULT_PAYMENT_MODE_ID&#039;&#039;&#039; ► Set the default payment method for suppliers (&amp;lt;code&amp;gt;rowid&amp;lt;/code&amp;gt; in table &amp;lt;code&amp;gt;llx_c_paiement&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_USE_DISPATCH_STATUS&#039;&#039;&#039; ► Add a status on each dispatch order line when receiving products from suppliers ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_NO_DIRECT_APPROVE&#039;&#039;&#039; ► No button &amp;quot;Validate and Approve&amp;quot;. Always do step &amp;quot;Validate&amp;quot; and &amp;quot;Approve&amp;quot; in 2 steps.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_WITH_PREDEFINED_PRICES_ONLY&#039;&#039;&#039; ► Restrict selection of products in supplier order to only those with a buying price defined for that supplier. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_EDIT_BUYINGPRICE_DURING_RECEIPT&#039;&#039;&#039; ► Can modify the buying price used for PMP calculation when making a stock reception on a supplier order. ► (v6.0+)&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_PROPOSAL_WITH_PREDEFINED_PRICES_ONLY&#039;&#039;&#039; ► Restrict selection of products in supplier proposal to only those with a buying price defined for that supplier. ► (v6.0+)&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_MORE_THAN_WISHED&#039;&#039;&#039; ► The supplier order status is set to &amp;quot;Totally received&amp;quot; even if there are more products received than ordered. ► (v15.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;DISPLAY_DISCOUNTED_SUPPLIER_PRICE&#039;&#039;&#039; ► Allow to display discounted supplier price when searching product in supplier documents ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_CAN_EDIT_SUPPLIER_ON_SUPPLIER_ORDER&#039;&#039;&#039; ►  Allow to change the supplier on a draft supplier order ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_PROPOSAL_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_CAN_UPDATE_BUYINGPRICE_DURING_RECEIPT&#039;&#039;&#039; ►  Allow to change price on receipt ► (v19.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_HIDE_SUPPLIER_OBJECTLINES&#039;&#039;&#039; ►  Hide the supplier information on objectlines (invoices, etc..) ► (v19.0)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Third Parties Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;COMPANY_AQUARIUM_CLEAN_REGEX&#039;&#039;&#039; ► Add a REGEX rule on the third parties names. It applies a regex replacement pattern on generated code if COMPANY_AQUARIUM_CLEAN_REGEX is set. Value must be a regex with parenthesis. The part into parenthesis is kept, the rest removed. For example if COMPANY_AQUARIUM_CLEAN_REGEX = &#039;&amp;lt;code&amp;gt;^..(..)..(.*)&amp;lt;/code&amp;gt;&#039; the first char and second char are removed and the char 5 and 6 too ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_UNKNOWN_CUSTOMERS_ARE_COMPANIES&#039;&#039;&#039; ► See in Global options section.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_VAT_COMPANIES_IN_EEC_WITH_INVALID_VAT_ID_ARE_INDIVIDUAL&#039;&#039;&#039; ► See in Global options section.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_EMAIL_MANDATORY&#039;&#039;&#039; ► E-mail is a mandatory field when creating a thirdparty&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_DISABLE_CUSTOMERS&#039;&#039;&#039; ► Remove all menu and features related to customers&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_DISABLE_PROSPECTS&#039;&#039;&#039; ► Remove all menu and features related to prospects&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_DISABLE_PROSPECTSCUSTOMERS ►&#039;&#039;&#039; Remove the status &amp;quot;Customer/Prospect&amp;quot; when thirdparties creation or modification&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_DISABLE_STATE&#039;&#039;&#039; ► Do not use field &amp;quot;state/province&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_SORT_ON_TYPEENT&#039;&#039;&#039; ► The combo list of &amp;quot;type of third party&amp;quot; is sorted on alphabetical order instead of the field &amp;quot;position&amp;quot; that appears into dictionary instead.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_ASK_FOR_SHIPPING_METHOD&#039;&#039;&#039; ► Shipping method can be predefined on customer card and will be used as default on order creation&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_ADD_REF_IN_LIST&#039;&#039;&#039; ► Displays the code before the name in the lists  ► Value 1 -&amp;gt; Code + name + alias ou Code + name if colone alias 2 -&amp;gt; Code + alias 3 -&amp;gt; Alias&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_CAN_HAVE_CATEGORY_EVEN_IF_NOT_CUSTOMER_PROSPECT_SUPPLIER&#039;&#039;&#039; ► Possible to add Categories to third parties that are not customer, prospect or supplier.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_DEFAULT_USELOCALTAX1&#039;&#039;&#039; ► When creating a new third party, the field &amp;quot;Use second tax&amp;quot; is set to on or off depending on value of this parameter.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_DEFAULT_USELOCALTAX2&#039;&#039;&#039; ► When creating a new third party, the field &amp;quot;Use third tax&amp;quot; is set to on or off depending on value of this parameter.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_NOTCUSTOMERPROSPECT_BY_DEFAULT&#039;&#039;&#039; ► Do not set status &amp;quot;Customer/Prospect&amp;quot; to &amp;quot;on&amp;quot; when creating a new third party from menu &amp;quot;New third party&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_INCLUDE_PARENT_IN_LINKTO&#039;&#039;&#039; ► Search also for elements on parent third party when using the &amp;quot;link to&amp;quot; object feature.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_INCLUDE_PROJECT_THIRDPARY_IN_LINKTO&#039;&#039;&#039; ► Search also for elements on third party that own the project of the current element when using the &amp;quot;link to&amp;quot; object feature (if project is owned by a different thirdparty than current one).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_LOGO_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039; ► When a logo is uploaded, a share key is automatically set so the file can be downloaded using the share key.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_SUGGEST_ALSO_ADDRESS_CREATION&#039;&#039;&#039; ► Enabled contact creation on third-party create card&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_QUICKSEARCH_ON_FIELDS&#039;&#039;&#039; ► Personalized search criteria ► Example: $conf-&amp;gt;global-&amp;gt;THIRDPARTY_QUICKSEARCH_ON_FIELDS = &#039;s.nom=ThirdPartyName;s.name_alias=AliasNameShort;s.code_client=CustomerCode&#039;&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_CAN_CONVERT_CUSTOMERS_TO_MEMBERS&#039;&#039;&#039; ► Enabled member creation on third-party create card&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_DISABLE_PARENTCOMPANY&#039;&#039;&#039; ► Disables attachment to a parent company.&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_CUSTOMERPROSPECT_BY_DEFAULT&#039;&#039;&#039; ► Set the third party to customer by default&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_SUPPLIER_BY_DEFAULT&#039;&#039;&#039; ► Set the third party to supplier by default&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_CUSTOMERTYPE_BY_DEFAULT&#039;&#039;&#039; ► Set the third party type by default (3 = customer &amp;amp; prospect / 2 = prospect / 1 = customer )&lt;br /&gt;
*&#039;&#039;&#039;CONTACT_DISABLE_PERSONALINFO&#039;&#039;&#039; ► Disable Personal data on contact page&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_DISABLE_WORKFORCE&#039;&#039;&#039; ► Disable work force selector on society page&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_SHOW_VAT_IN_LIST&#039;&#039;&#039; ► display VAT number in combo list of thirdparties ► (V15+)&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_DEFAULT_CREATE_CONTACT&#039;&#039;&#039; ► When set, a contact is created at the creation of an individual third party ► (v14.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SUPPORT_SHARED_CONTACT_BETWEEN_THIRDPARTIES&#039;&#039;&#039; ► Able to share contact between several third parties&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_CUSTOMERCODE_EQUALS_MEMBERREF&#039;&#039;&#039; ► When creating third parties out of members, the customer code is set equal to the member Ref. ► (v22.0)&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_NO_SYNC_LINKED_MEMBER&#039;&#039;&#039; ► If set, changes to a third party will not be synchronized to a linked member. ► (v23.0)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Ticket Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;TICKET_SHOW_MESSAGES_ON_CARD&#039;&#039;&#039; ►Display all ticket related messages on the main ticket card. ► (&amp;gt;= 10.0)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_AUTO_ASSIGN_CONTRACT_CREATE&#039;&#039;&#039; ►Automatically create a contract linked to the ticket ► (&amp;gt;= 10.0)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_AUTO_CREATE_FICHINTER_CREATE&#039;&#039;&#039; ►Automatically create an intervention linked to the ticket ► (&amp;gt;= 10.0)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_AUTO_ASSIGN_USER_CREATE&#039;&#039;&#039; &#039;&#039;&#039;►&#039;&#039;&#039; (&amp;gt;= 21.0) 0=No auto assignement, 1=Auto assign current user if no user was set, 2=Auto assign current user even if another user was set.&lt;br /&gt;
*&#039;&#039;&#039;TICKET_CHECK_NOTIFY_THIRDPARTY_AT_CREATION&#039;&#039;&#039; ►Automatically check &amp;quot;notify thirdparty at creation&amp;quot; ( &amp;gt;=16)&lt;br /&gt;
*&#039;&#039;&#039;TICKETS_MESSAGE_FORCE_MAIL&#039;&#039;&#039; ► Pre check email sending on ticket message (&amp;gt;=15)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_SEND_PRIVATE_EMAIL ►&#039;&#039;&#039; Allow a private message to be sent by mail (&amp;gt;=17)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_LIMIT_VIEW_ASSIGNED_ONLY&#039;&#039;&#039;  &#039;&#039;&#039;►&#039;&#039;&#039; Only display tickets assigned to the user&lt;br /&gt;
*&#039;&#039;&#039;TICKET_ADD_AUTHOR_AS_CONTACT&#039;&#039;&#039; &#039;&#039;&#039;►&#039;&#039;&#039; If set to 1: Automatically adds the author as internal contact. If set to 2: Automatically adds the author as external contact if external user. (&amp;gt;=20)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_ASSIGN_CONTACT_TO_MESSAGE&#039;&#039;&#039; &#039;&#039;&#039;►&#039;&#039;&#039; If known, the external contact is assigned to the message. (&amp;gt;=19)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_ALLOW_CLASSIFICATION_MODIFICATION_EVEN_IF_CLOSED&#039;&#039;&#039; &#039;&#039;&#039;►&#039;&#039;&#039;Allow modify ticket classification even if closed. (&amp;gt;=19)&lt;br /&gt;
*&#039;&#039;&#039;WORKFLOW_TICKET_CLOSE_INTERVENTION&#039;&#039;&#039; ►On ticket close, automatically close an intervention linked to the ticket&lt;br /&gt;
*&#039;&#039;&#039;TICKET_INCLUDE_SUSPENDED_STATUS&#039;&#039;&#039; ► Use ticket suspended status (&amp;gt;=19)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_INCLUDE_LINK_TO_PUBLIC_INTERFACE_IN_MESSAGE&#039;&#039;&#039; ► Add a link in bottom of emails sent from ticket page with link to public ticket admin tool (&amp;gt;=22)&lt;br /&gt;
&lt;br /&gt;
=VAT Report=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_INCLUDE_ZERO_VAT_IN_REPORTS&#039;&#039;&#039; ► Include lines with VAT to 0% (for &amp;quot;auto-liquidation&amp;quot; in EEC) ► (v8.0.3+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Website Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;WEBSITE_USE_WEBSITE_ACCOUNTS&#039;&#039;&#039; ► Add a table and a tab to manage some accounts for websites to a third party&lt;br /&gt;
*&#039;&#039;&#039;WEBSITE_ALLOW_OVERWRITE_GIT_SOURCE&#039;&#039;&#039; ► Add a button to export a website over the GIT sources&lt;br /&gt;
*&#039;&#039;&#039;WEBSITE_ADD_CSS_TO_BODY&#039;&#039;&#039; ► Add a CSS class to the body tag of websites&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=WYSIWYG Editor=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FCKEDITOR_ENABLE_DETAILS_FULL&#039;&#039;&#039; ► Can cut and paste external images (hosted on external server) into description of proposal, orders or invoices. WARNING: PDF generation is not guaranteed with this. Also if the image is removed or renamed by the image hosting service, your proposal, order or invoice will be broken.&lt;br /&gt;
*&#039;&#039;&#039;FCKEDITOR_ALLOW_ANY_CONTENT&#039;&#039;&#039; ► Allow to enter any content. However, this will totally disable content filtering which is one of the most important CKEditor features. You can use this to keep all your tags and attributes in the html content.&lt;br /&gt;
*&#039;&#039;&#039;FCKEDITOR_ENABLE_SCAYT_AUTOSTARTUP&#039;&#039;&#039;  ► Allow to activate the SpellCheckAsYouType (SCAYT) plugins of CKEditor i.e an automatic spell checking. The value to activate this option is 1.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ALLOW_WYSIWYG_LOCAL_MEDIAS_ON_PRIVATE_NETWORK&#039;&#039;&#039;  ► By default, you can add medias links (img src or other) into the rich text content editor, but you can&#039;t add links like that use a local host like &amp;quot;https://localhost/file&amp;quot;. If you set this option to 1, you can.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ALLOW_WYSIWYG_EVEN_ON_UNSECURED_EXTERNAL_HTTP_URL&#039;&#039;&#039;  ► By default, you can add medias links (img src or other) into the rich text content editor, but not if the link is a unsecure &amp;quot;http&amp;quot; url (not https) and your Dolibarr is http. If you set this option to 1, you can.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=STRIPE Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;STRIPE_FORCE_VERSION&#039;&#039;&#039; ► Force the STRIPE version. For Example: &amp;quot;2019-09-09&amp;quot; (v11+)&lt;br /&gt;
*&#039;&#039;&#039;STRIPE_REUSE_EXISTING_INTENT_IF_FOUND&#039;&#039;&#039; ► With this, you will have idempotency key but the payment intention will be reuse and not Generate again (13+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=ClickToDial Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CLICKTODIAL_FORCENEWTARGET&#039;&#039;&#039; ► Open in new page.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=For SaaS / Cloud hosting integrators=&lt;br /&gt;
&lt;br /&gt;
The following options are useless for a common usage of Dolibarr. But they are usefull if you plan to host / provide Dolibarr instances as Software As A Service (SAAS) to your customers.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CRON_DISABLE_KEY_CHANGE&#039;&#039;&#039; ► When you provide an instance to a customer, you probably also add an entry in the cron of this user so Dolibarr batch and scheduler can work correctly. For security purpose, it may have a security key that is inside the command line into the cron entry and this entry must match the value defined into Dolibarr setup (setup of module &#039;Scheduled Jobs&#039;). Because, a customer of a Saas platform will probably have no access to edit the cron file, it is also import that he has no way to edit the key into the Dolibarr setup, so the key in the cron command line will always match the key in Dolibarr setup, and the Dolibarr batches will executed without security errors. To be sure, the customer does not change the value, you can set this constant to 1 into the table [[Table_llx_const]].&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CRON_DISABLE_TUTORIAL_CRON&#039;&#039;&#039; ► Disable the tutorial about how to install the cron script (on a SaaS hosting, this should be done by the web hosting provider)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CRON_WARNING_DELAY_HOURS&#039;&#039;&#039; ► Set this value to the frequency set for the cron script (so a warning will be shown to user to warn it about max frequency of its scheduled jobs)&lt;br /&gt;
 &lt;br /&gt;
*&#039;&#039;&#039;MAILING_NO_USING_PHPMAIL&#039;&#039;&#039; ► To avoid bad use of the emailing module, it is recommended to set this option to 1 (This option is described previously). Also you can complete the message visible by customers when they try to setup the SMTP credentials of their Dolibarr by using the constant MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS (This option is described previously). For example, you can point to a FAQ on your website.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_IN_SAME_EMAIL&#039;&#039;&#039; ► If you have set a system limit on number of recipients on your system, you can set also this option to match the same value, so users will be informed: So &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_IN_SAME_EMAIL&#039;&#039;&#039; restricts sending of 1 email message to &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; recipients for the same email message (x for To: + CC: + BCC:). If not defined, value is &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;. Required to fight against spamming that include a ton of recipients in 1 message. Note that &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_TO_IN_SAME_EMAIL&#039;&#039;&#039;, &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_CC_IN_SAME_EMAIL&#039;&#039;&#039; and &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_BCC_IN_SAME_EMAIL&#039;&#039;&#039; are also available. Note that this is not a hard limit; it is just the quantity that will be displayed on warnings on screen. For a real limit, this must be implemented into the system.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_LIMIT_SENDBYDAY&#039;&#039;&#039; ► This is a limit of number of emails, an instance can send. Note that this is not a hard limit; it is just the quantity that will be displayed on warnings on screen. For a real limit, this must be implemented into the system.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_LIMIT_WARNING_PHPMAIL&#039;&#039;&#039; ► Set this value to a translation key. Then add translation keys into the instance so user will see a message when into the email setup page. For example, you can set a message to say: &#039;&#039;Warning: To avoid abuse, when using default setup, you are restricted to 500 emails per day for all your application (account may be suspended in case of violation of this rule. You can setup application to use your own SMTP server for sending email so you want have no restriction at all (see menu Home-Setup-Emails)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ALWAYS_CREATE_LOCK_AFTER_LAST_UPGRADE&#039;&#039;&#039; ► If set, when you launch upgrades of your customer instances, you are sure that the upgrade process recreate automatically the file install.lock and remove the upgrade.unlock so the administration tools like install.php, upgrade.php and repair.php can&#039;t be used on your customer instance (until the install.lock file is deleted or the upgrade.unlock file is created).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EXTERNAL_SMTP_CLIENT_IP_ADDRESS&#039;&#039;&#039; ► (A better name of this option should be MAIN_EXTERNAL_MAIL_CLIENT_IP_ADDRESS). Set here the list of IPs where your Dolibarr instances are hosted, separated by a comma. So, when your customer go into the Email setup area:&lt;br /&gt;
**If he has chosen mail method, a message will explain him how to setup its SPF record for its email domain (showing the list of IP). This is to avoid to have its emails, sent from its Dolibarr instance, fails due to strict antispam rule of some emailing servers.&lt;br /&gt;
**If he has chosen smtp method, a message will explain him the list of IP he can use if there is restriction on IP by the SMTP agent. If you also need to add a message to help SPF setup, see option &#039;&#039;&#039;MAIN_EXTERNAL_SMTP_SPF_STRING_TO_ADD&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
You can also provide a list of URLs that return just an IP instead of a list of hardcoded IP. So you can for example set 1 url that contact a whoami service that return the public IP of server and another one doing the one on a IPv6 address, so on the setup page, the public IP adress of the server will always be uptodate for both ipv4 and ipv6 (Example: &amp;quot;https://ipv4.server.com/_service_showmyip.php,https://ipv6.server.com/_service_showmyip.php&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EXTERNAL_SMTP_SPF_STRING_TO_ADD&#039;&#039;&#039; ► Set here the string to add in the SPF record This string will be shown into a help message when the user in in the setup of email page and has choose a method using an external SMTP server.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FIRST_PING_OK_ID&#039;&#039;&#039; ► Set this value to &amp;quot;disabled&amp;quot; to remove completely any ping after a complete setup.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FILECHECK_LOCAL_SUFFIX&#039;&#039;&#039; and &#039;&#039;&#039;MAIN_FILECHECK_LOCAL_EXT&#039;&#039;&#039; ► If you offer a customized or patched version of Dolibarr, when the user will use the tool to check the integrity of files, the default xml file name used for signature checking will be the official file provided by the Dolibarr team, so it does not includes your own changes. To have the suggested signature file being your own file, you can set the constant MAIN_FILECHECK_LOCAL_SUFFIX to a suffix. For example, set this to &amp;quot;&#039;&#039;&#039;-mysaassolution&#039;&#039;&#039;&amp;quot;. So, when the user will use the file integrity tool, the default file to check for signature will be &amp;quot;&#039;&#039;&#039;/install/filelist-10.0.2-mysaassolution.xml&#039;&#039;&#039;&amp;quot; instead of &amp;quot;&#039;&#039;&#039;/install/filelist-10.0.2.xml&#039;&#039;&#039;&amp;quot;. All you have to do is generate the signature file &#039;&#039;&#039;mysaassolution&#039;&#039;&#039; using the tool &#039;&#039;&#039;build/generate_filelist_xml.php&#039;&#039;&#039; and put this file into the install directory of your customer instance. Doing this, your customer, and yourself, will be able to check if a file was modified without being disturbed by false alerts due to your customized files or patches (they will be included in the signature used for check). Also, if you want to zip the customized signature file into &amp;quot;&#039;&#039;&#039;/install/filelist-10.0.2-mysaassolution.xml.zip&#039;&#039;&#039;&amp;quot;, you can set the constant MAIN_FILECHECK_LOCAL_EXT to &#039;.zip&#039;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP&#039;&#039;&#039; ► Set to 1 by default (so warning is hidden). You can set it to 0 to show a warning to encourage admin to set its own SMTP service.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_SENDMODE_password&#039;&#039;&#039; ► To force the mode to send the email on the &amp;quot;password forgotten&amp;quot; page. So you can decide to use php mail or SMTP method for this specific use case.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING&#039;&#039;&#039; ► If set to N, the warning saying modules are not activated will be shown if number of activated module is &amp;lt; N (Having this variable not defined is same than having it set to 1). This may be usefull if you preinstall an application with some modules already loaded by default and you want to keep the warning to be sure the user will enable other modules he need, even if some modules are already enabed.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SETUP_MODULES_DESC&#039;&#039;&#039; ► If your installation is already done with activated module, the help message to explain how to enable a module on the setup page is hidden. You can keep it visible by adding this option to 1.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NO_UPGRADE_REDIRECT_ON_LEVEL_3_CHANGE&#039;&#039;&#039; ► The page to make the migration is not shown automatically when you deploy files of version X.Y.Z+delta over an  installation with a database version X.Y.Z. The upgrade page will be shown automatically only if there is a change on value of X or Y in version.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SYSLOG_DISABLE_LOGHANDLER_SYSLOG&#039;&#039;&#039; ► Set this to 1 to disable usage of syslog (having all customer instances logging in the same system file is not a good idea).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;WEBSITE_REPLACE_INFO_ABOUT_USAGE_WITH_WEBSERVER&#039;&#039;&#039; ► Put here a text or a translation key of a text to show when the user will use the feature &amp;quot;Deploy&amp;quot; when he want to deploy a website done with Dolibarr CMS. So you can, for example, show him a message that this feature is not part of its subscription and putting a website online may need a complementary subscription.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Setup_Other&amp;diff=65135</id>
		<title>Setup Other</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Setup_Other&amp;diff=65135"/>
		<updated>2026-01-05T22:44:14Z</updated>

		<summary type="html">&lt;p&gt;Iouston: /* PDF Options */ add main_pdf_donotrepeat_head&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- BEGIN origin interlang links --&amp;gt;&lt;br /&gt;
&amp;lt;!-- You can edit this section but do NOT remove these comments&lt;br /&gt;
     Links below will be automatically replicated on translated pages by PolyglotBot --&amp;gt;&lt;br /&gt;
[[fr:Paramétrage_Divers]]&lt;br /&gt;
[[es:Configuración_Varios]]&lt;br /&gt;
[[de:Erweiterte_Einstellungen]]&lt;br /&gt;
[[zh:其他设置]]&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Admin]]&lt;br /&gt;
{{TemplateDocUser}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Help About Screen&#039;&#039;&#039;: Other setup&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Menu Path&#039;&#039;&#039;: Home ► Setup ► Other&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Some options are not visible in the interface (often because they are deprecated or are beta features). In most cases you do not need these functions and their use may make the application unstable or may not work as expected.&lt;br /&gt;
&lt;br /&gt;
 {{warning|32px}} This page contains the list of some advanced development parameters. In most cases, they are parameters for internal usage, development, external modules, features in development not stable or that may lead to security risk. For standard usage of Dolibarr, such parameters &#039;&#039;&#039;SHOULD NOT&#039;&#039;&#039; be used. All experimental options are NOT supported. They may be removed in a future, modified at any version and break stability of your application.&lt;br /&gt;
&lt;br /&gt;
To enable/override a parameter you have to define the constant name and set it to 1 (unless otherwise stated) in &amp;lt;code&amp;gt;Home ► Setup ► Other Setup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The options here may not be documented since they are not stable and are unsupported (remember they are experimental or development options). The basic format of how the list is written is broken down in the example below:&lt;br /&gt;
&lt;br /&gt;
UNSTABLE_OR_DEV_OPTION ► &#039;&#039;Description of config and goal&#039;&#039; ► &#039;&#039;(specific version information) or values&#039;&#039;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
=Global Options=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ADD_UNSPLASH_LOGIN_BACKGROUND&#039;&#039;&#039; ► The background image will be refreshed on every login page refresh. Background image is pulled from the popular open source image website Unsplash. If an already saved static background image exists, then this code will override it (but not delete the saved image). Warning: Using this may allow this external website to steel your login credentials (the value to be put is the URL of the service, exemple&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: https://source.unsplash.com/random) ► (v10.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HIDE_POWERED_BY&#039;&#039;&#039; ► Hide the &amp;quot;Powered by Dolibarr&amp;quot; picto on public pages&lt;br /&gt;
*&#039;&#039;&#039;MAIN_APPLICATION_TITLE&#039;&#039;&#039; ► This will change the title of software (that appears on the login page by default). Warning: changing this may make Dolibarr version detection to fail by smartphone applications like [[Application Android - DoliDroid]], breaking some features when using Dolibarr from such application. If the text start with a &amp;quot;+&amp;quot;, the text will be added to the standard &amp;quot;Dolibarr&amp;quot; label instead of replacing it.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_AUTOFILL_DATE&#039;&#039;&#039; ► If this constant is defined (to something other than &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;), the date of invoice, proposal, order or payment are auto-filled with the current date. It is highly recommended to NOT ENABLE this feature. This can create a lot of input errors with data not validated by users. This leads to incorrect values saved in the database causing confusion when you have to do your accountancy reports!&lt;br /&gt;
*&#039;&#039;&#039;MAIN_AUTOFILL_DATE_PROPOSAL►&#039;&#039;&#039;If this constant is defined (to something other than 0), the date of  proposal is auto-filled with the current date.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_AUTO_TIMESTAMP_IN_PUBLIC_NOTES&#039;&#039;&#039; ► Add a timestamp and user automatically when editing the &#039;&#039;public&#039;&#039; note.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_AUTO_TIMESTAMP_IN_PRIVATE_NOTES&#039;&#039;&#039; ► Add a timestamp and user automatically when editing the &#039;&#039;private&#039;&#039; note.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DEFAULT_PAYMENT_TERM_ID&#039;&#039;&#039; ► With ID of a payment term, will use this as default payment term each time you create a new proposal, order, invoice (customer and supplier). Deprecated. Replaced with the default setup feature instead (see French page of wiki for some exemple&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: [[Paramétrage Valeurs par défaut]])&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DEFAULT_PAYMENT_TYPE_ID&#039;&#039;&#039; ► With ID of a payment type, will use this as default payment type each time you create a new proposal, order, invoice (customer and supplier). Deprecated. Replaced with the default setup feature instead (see French page of wiki for some exemple&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: [[Paramétrage Valeurs par défaut]])&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DEFAULT_LANGUAGE_FILTER&#039;&#039;&#039; ► Useful if you do not want to show &amp;lt;code&amp;gt;en_US&amp;lt;/code&amp;gt; language option in combo boxes (other languages can easily be removed in &amp;lt;code&amp;gt;langs&amp;lt;/code&amp;gt; directory but not &amp;lt;code&amp;gt;en_US&amp;lt;/code&amp;gt;) ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LANGUAGES_ALLOWED&#039;&#039;&#039; ► Is a list of languages without spaces, example&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: &amp;lt;code&amp;gt;fr_FR,en_US,de_DE,it_IT&amp;lt;/code&amp;gt; If defined, only those languages will appear in combos. ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_NOTES_TAB&#039;&#039;&#039; ► Show or hide notes tab in the card page&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_CONTACTS_TAB&#039;&#039;&#039; ► Show or hide contacts tab in the card page&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_FULL_SCANLIST&#039;&#039;&#039; ► Disables the complete scan of tables to allow the pagination to show total number of pages. May be useful to activate on systems with a very high quantity of data (tables with more than 2 000 000 records).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_JQUERY_JNOTIFY&#039;&#039;&#039; ► Disable usage of &amp;lt;code&amp;gt;JNotify&amp;lt;/code&amp;gt; to show confirm or error messages&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_AJAX_COMBOX&#039;&#039;&#039; ► If you have a large number of third parties or products, you can disable the autocomplete feature on the third parties list by setting this constant to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; ► (v3.6.0+)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_MULTIPLE_FILEUPLOAD&#039;&#039;&#039; ► Disable users to upload multiple files at once.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_TRUNC&#039;&#039;&#039; ► Disable all truncings in select list. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLEDRAFTSTATUS&#039;&#039;&#039; ► Disable the status &amp;quot;Draft&amp;quot; for some objects (project, donation, ...) so the object is directly created with status &amp;quot;Validated&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_USE_OBJECT_THIRDPARTY_NAME&#039;&#039;&#039; ► Add name of thirdparty at begin of generated document.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_USE_TIMING&#039;&#039;&#039; ► Add a timestamp at end of generated document. Value must be format of timestamp. For example: &amp;lt;code&amp;gt;%Y%m%d%H%M&amp;lt;/code&amp;gt; (only for ODT files)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_UPLOAD_NOT_RENAME_BY_DEFAULT&#039;&#039;&#039; ► Disable the auto renaming on upload file ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOL_SCRIPTS_ROOT&#039;&#039;&#039; ► Define directory who contains &#039;scripts&#039; directory (e.g. &amp;lt;code&amp;gt;/var/www/dolibarr&amp;lt;/code&amp;gt;). Value of this variable may be requested by some external script or tools.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ENABLE_LOG_TO_HTML&#039;&#039;&#039; ► If this constant is defined, it is possible to have logs inside pages by adding the parameter &amp;lt;code&amp;gt;&amp;amp;logtohtml=1&amp;lt;/code&amp;gt; into URL.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ENABLE_IMPORT_LINKED_OBJECT_LINES&#039;&#039;&#039; ► Allow to import lines into current document from &amp;quot;linked&amp;quot; compatible documents ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FIRST_TO_UPPER&#039;&#039;&#039; ► Dolibarr add uppercase to Third Parties, contacts or members names if not done. Warning: with some languages (whose words with uppercase are not same words, or pagecode does not always have an uppercase, like Cyrillic languages), this feature may alter your data.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ALL_TO_UPPER&#039;&#039;&#039; ► Dolibarr puts uppercase for Third Parties, contacts or members names if not done. Warning, with some languages (whose words with uppercase are not same words, or pagecode does not always have an uppercase, like Cyrillic languages), this feature may alter your data. ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ALL_TOWN_TO_UPPER&#039;&#039;&#039; ► Dolibarr puts uppercase for town names if not done. ► (v13.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FILESYSTEM_ENCODING&#039;&#039;&#039; ► With some PHP versions, PHP is not able to detect the page code for filesystem of the server OS. To solve this, Dolibarr assumes your OS filesystem is &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; if on Linux or OSX system, and &amp;lt;code&amp;gt;ISO-8859-1&amp;lt;/code&amp;gt; if on Windows. If not, for example on a Windows server with a NTFS &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; pagecode, you can set the variable &amp;lt;code&amp;gt;MAIN_FILESYSTEM_ENCODING&amp;lt;/code&amp;gt; to &amp;quot;&amp;lt;code&amp;gt;utf-8&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FORCELANGDIR&#039;&#039;&#039; ► Relative path of the directory holding your custom &amp;lt;code&amp;gt;langs&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HTML_TITLE&#039;&#039;&#039; ► Can be used to control how the html page title is formatted. If value contains key &#039;&amp;lt;code&amp;gt;noapp&amp;lt;/code&amp;gt;&#039;, application name will not be output. If value contains &#039;&amp;lt;code&amp;gt;thirdpartynameonly&amp;lt;/code&amp;gt;&#039;, on tab for thirdparties, only name of thirdparties are output. Value can be list of tags: &#039;&amp;lt;code&amp;gt;noapp;thirdpartynameonly&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HELPCENTER_LINKTOUSE&#039;&#039;&#039; ► Define the URL link to use as the target page for link &amp;quot;I need help&amp;quot; onto logon page&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LOGOUT_GOTO_URL&#039;&#039;&#039; ► URL to which the user will be redirected after LOGOUT&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAXTABS_IN_CARD&#039;&#039;&#039; ► Maximum number of tabs visible. Others are grouped into a combo list.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAXLIST_OVERLOAD&#039;&#039;&#039; ► Maximum number of line in space&#039;s domain.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING&#039;&#039;&#039; ► A warning saying setup of modules is not complete is shown if the number of enabled modules is lower or equal than this value (&amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; if not defined)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NO_CONCAT_DESCRIPTION&#039;&#039;&#039; ► Allow to use only input custom description in lines (proposal, order, invoice) ► (v10.0)   &amp;lt; v20.0. [ OSBOLETE since 20.0 | SEE Product module admin configuration to set the description behavior of products and services ]. This value is overwritten by PRODUCT_AUTOFILL_DESC, controled by the option in the product module admin configuration, and is no longer used. Kept in code to allow compatibility if custom modules are using it. Removed completely from v22.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_OPTIMIZE_SPEED&#039;&#039;&#039; ► Use some speed enhancements. See page [[FAQ Increase Performance]] for more information.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PASSWORD_FORGOTLINK  ►&#039;&#039;&#039; Change forgotten password link on login page. ► (v9.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROPAGATE_CONTACTS_FROM_ORIGIN&#039;&#039;&#039; ► When creating an order, contract, invoice from another object, specific contacts of objects are set as specific contact of the new object when possible. ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PUBLIC_NOTE_IN_ADDRESS&#039;&#039;&#039; ► Show public note in address block ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_REMOVE_INSTALL_WARNING&#039;&#039;&#039; ► Remove all security warnings that appear to administrator users if URL &amp;lt;code&amp;gt;/install&amp;lt;/code&amp;gt; is public. You should solve the problem if warning occurs, instead of removing the warning! For this, create a file called &amp;lt;code&amp;gt;install.lock&amp;lt;/code&amp;gt; into Dolibarr root directory. This will stop the warning but also make the page &amp;lt;code&amp;gt;/install&amp;lt;/code&amp;gt; not possible to use, to protect your installation.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_REPEATCONTACTONEACHTAB&#039;&#039;&#039; ► If added and set to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, this adds contacts on all tabs, not only main tab.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_REPLACE_TRANS_xx_XX&#039;&#039;&#039; ► Where &amp;lt;code&amp;gt;xx_XX&amp;lt;/code&amp;gt; is language code. If value is &amp;lt;code&amp;gt;string1:newstring1;string2:newstring2&amp;lt;/code&amp;gt; then replace &amp;lt;code&amp;gt;string1&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;newstring1&amp;lt;/code&amp;gt; in all translation done for language &amp;lt;code&amp;gt;xx_XX&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND&#039;&#039;&#039; ► Change way of rounding total including tax of lines, rounding first of after.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND_SUPPLIER&#039;&#039;&#039;► Change way of rounding total including tax of lines, rounding first of after.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SERVER_TZ&#039;&#039;&#039; ► If you can&#039;t set the time zone of your PHP installation, set this constant. Better is to set it to UTC. In future, this constant will be forced to &#039;&amp;lt;code&amp;gt;UTC&amp;lt;/code&amp;gt;&#039; so PHP server time zone will not have effect any more. Examples: &amp;lt;code&amp;gt;Europe/Paris&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;auto&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SEARCH_FORM_ON_HOME_AREAS&#039;&#039;&#039; ► Show the search form on home page areas for core modules (Removed after v5 due to global search combo) ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SEARCHFORM_SUPPLIER_INVOICE_DISABLED&#039;&#039;&#039; ► Disable the supplier invoice on the search form&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE&#039;&#039;&#039; ► If only one result is found, then setting this value to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; will take you direct to the item (default method).  Setting the value to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; will show the result in the list as a single result ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SERVICES_ARE_ECOMMERCE_200238EC&#039;&#039;&#039;  ► If seller and buyer are in Europe and buyer is not a company, use the VAT of buying country. It can have value &#039;1&#039; or &#039;2&#039;. If value 2, the VATs available to select only the ones of buying country. If &#039;1&#039;, the VATs available to select mix the ones of selling country and the ones of buying country. ► (v18.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_TUNING_INFO&#039;&#039;&#039; ► Add tuning information into JavaScript console. Better when xdebug is enabled.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_TECHNICAL_ID&#039;&#039;&#039; ► Show also technical IDs on elements cards or some lists (not supported everywhere).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOWDATABASENAMEINHELPPAGESLINK&#039;&#039;&#039; ► Show database name in upper help menu ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_ALTERNATE_TRANSLATION_FOR&#039;&#039;&#039; ► List of fields per object that need an alternate translation. Example: &amp;lt;code&amp;gt;MAIN_USE_ALTERNATE_TRANSLATION_FOR=societe:name,town;contact:firstname,lastname&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_HOURMIN_IN_DATE_RANGE&#039;&#039;&#039; ► On all entities lines (invoice, order, contract...), it is possible to add hour and minutes with date on fields &amp;quot;date start&amp;quot; and &amp;quot;date end&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_JQUERY_JEDITABLE&#039;&#039;&#039; ► Allow to update from screen, directly into database, some properties of elements (invoices, proposals, ...) using Ajax. This make response time faster, but avoid using this feature, because it bypasses some business actions (updates on other data that should be done consistently) and ignores business controls on data you saved. Consequently this feature breaks consistency of data and possibly the stability of the software.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_JQUERY_MULTISELECT&#039;&#039;&#039; ► Allow to use Ajax when a choice that require multiselect is used (for the moment only external modules uses select box with multiselect values). Set the value to the jQuery plugin name to use (multiselect, multiple-select, select2…). Setting it to any other value will result in unwanted side-effects and/or bugs.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_OLD_SEARCH_FORM&#039;&#039;&#039; ► Display the old search form in left menu.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VAT_DEFAULT_IF_AUTODETECT_FAILS&#039;&#039;&#039; ► Allow to force the VAT rate to a given value (instead of higher VAT rate of country) if the VAT rate of product was not defined.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_UNKNOWN_CUSTOMERS_ARE_COMPANIES&#039;&#039;&#039; ► If we can&#039;t guess if a thirdparty is a company or individual (not VAT ID fill, no Prof ID fill, no type of thirdparty fill), then we suppose it is a company (B2B business) if 1, we suppose it is an individual (B2C business) if 0.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_VAT_COMPANIES_IN_EEC_WITH_INVALID_VAT_ID_ARE_INDIVIDUAL&#039;&#039;&#039; ► For intra CEE sales, we use by default, on proposal, order or invoice creation, a 0 VAT for customers that are companies (see MAIN_UNKNOWN_CUSTOMERS_ARE_COMPANIES to change behaviour to know if a thirdparty is a company or an individual). But if the option MAIN_USE_VAT_COMPANIES_IN_EEC_WITH_INVALID_VAT_ID_ARE_INDIVIDUAL is set, we will use the 0 VAT only if a VAT ID is defined for the customer.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_VAT_OF_PRODUCT_FOR_INDIVIDUAL_CUSTOMER_OUT_OF_EEC&#039;&#039;&#039; ► For to use the default VAT of product for individual customers that are out E.E.C. (European Economic Community) ► (v7.0+). &#039;&#039;There is no reason to use this.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VIEW_LINE_NUMBER&#039;&#039;&#039; ► Shows a line number for each line of products/services at documents like proposal / order / invoice. Only on screen, not on PDF.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VIEW_LINE_NUMBER_IN_LIST&#039;&#039;&#039; ► Shows a line number in lists ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VOLUME_DEFAULT_ROUND&#039;&#039;&#039; ► Accuracy of volume (number of decimals)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VOLUME_DEFAULT_UNIT&#039;&#039;&#039; ► Default unit for weight (&amp;lt;code&amp;gt;0=kg&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-3=g&amp;lt;/code&amp;gt;, ...)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_WEIGHT_DEFAULT_ROUND&#039;&#039;&#039; ► Accuracy of weight (number of decimals)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_WEIGHT_DEFAULT_UNIT&#039;&#039;&#039; ► Default unit for weight (&amp;lt;code&amp;gt;0=kg&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-3=g&amp;lt;/code&amp;gt;, ...)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;USER_HIDE_INACTIVE_IN_COMBOBOX&#039;&#039;&#039; ► Disable display inactive users in combobox.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_PDF_THUMBS&#039;&#039;&#039; ► Disable thumbs PDF in case of imagick bug&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_KEEP_REF_CUSTOMER_ON_CLONING&#039;&#039;&#039; ► Keep the Customer Reference on cloned object (Propal/Invoice)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DONT_KEEP_NOTE_ON_CLONING&#039;&#039;&#039; ► Remove the object notes during cloning ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_SORT_FIELD&#039;&#039;&#039; ► Set the default sorting field on document page (name by default) ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_SORT_ORDER&#039;&#039;&#039; ► Set the default sorting order (ASC or DESC) on document page (ASC by default) ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_ZIPTOWN_DICTIONNARY&#039;&#039;&#039; ► Use dictionary ZIP for create card.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_TOP_MENU_SEARCH_DROPDOWN&#039;&#039;&#039; ► Show search in top menu with theme eldy ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PHONE_SEPAR&#039;&#039;&#039; ► Separ phone number other space ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;GRAPH_USE_FISCAL_YEAR&#039;&#039;&#039; ► Widgets uses fiscal year&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SHOW_SOCINFO_ON_PRINT&#039;&#039;&#039; ► Permit to add user company information on each printed document (when click on Dolibarr print button) ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FEATURES_LEVEL&#039;&#039;&#039; ► Level of features to show: &amp;lt;code&amp;gt;-1=stable+deprecated&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0=stable only (default)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1=stable+experimental&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2=stable+experimental+development&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_TECHNICAL_ID&#039;&#039;&#039; ► Show technical id for object.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HTTP_CONTENT_SECURITY_POLICY&#039;&#039;&#039; ► Allows you to fill in the content security rules ► (v6.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_ON_SEARCH_AND_LIST_GO_ON_CUSTOMER_OR_SUPPLIER_CARD&#039;&#039;&#039; ► Allow to change the link of the third party to customer/supplier card instead of contact card on List.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MODULE_SETUP_ON_LIST_BY_DEFAULT&#039;&#039;&#039; ► If set to &amp;quot;common&amp;quot; the setup module becomes list by defaut&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PAGESIZE_CHOICES&#039;&#039;&#039;  ► Configure select field to choose number of lines displayed on listing (&amp;lt;code&amp;gt;10:10,15:15,20:20,30:30,40:40,50:50,100:100,250:250,500:500,1000:1000,5000:5000&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_TOP_MENU_QUICKADD_DROPDOWN&#039;&#039;&#039; ► Add a dropdown menu with shortcuts to create new objects ► (v13.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EMAILCOLLECTOR_MAIL_WITHOUT_HEADER&#039;&#039;&#039; ► Remove the header stored by email collector ► (v13.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_VAT_OF_PRODUCT_FOR_COMPANIES_IN_EEC_WITH_INVALID_VAT_ID&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_OPTIMIZEFORTEXTBROWSER&#039;&#039;&#039; ► Optimise interface for a text only browser. This variable is set to 1 automatically if your browser is lynx or links&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NB_OF_YEAR_IN_WIDGET_GRAPH&#039;&#039;&#039; ► Set the number of years visible on some graph of some widgets (2 is default value)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_CREATEFROM_KEEP_LINE_ORIGIN_INFORMATION&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;API_DISABLE_LOGIN_API&#039;&#039;&#039; ►(v14.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LOGIN_BADCHARUNAUTHORIZED&#039;&#039;&#039; ► Add possibility to define bad character unauthorized into login name REGEX expression (Default value is @&amp;lt;&amp;gt;&amp;quot;\&#039;)  ► (v16.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_ALL_FILES_ON_DOCUMENT_TOOLTIP&#039;&#039;&#039;  ► Add all files visible from the object to be visible from the list of object.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LIST_ALLOW_PUBLIC_NOTES&#039;&#039;&#039;  ► Display public notes on list&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LIST_ALLOW_PRIVATE_NOTES&#039;&#039;&#039;  ► Display private notes on list&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_CHECKBOX_LEFT_COLUMN&#039;&#039;&#039; ► Display private check boxes on the left ► (v17.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_STATS_GRAPHS_SHOW_N_YEARS&#039;&#039;&#039; ► Nb of years to shows in widget and graph ► (v14.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HOOK_DEBUG&#039;&#039;&#039; ► if &amp;gt;=2 the hook in the logs are more verbose ► (v18.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ENABLE_AJAX_TOOLTIP&#039;&#039;&#039; ► if 1 the tooltips are updated with AJAX request ► (v18.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NO_INPUT_PRICE_WITH_TAX&#039;&#039;&#039; ► if 1 the TTC input field is removed from propal/invoices/... ► (v17.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_SELECT2_FOCUS_PROTECTION&#039;&#039;&#039; ► if 1 disable the focus protection ► (v17.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_ADVANCED_PERMS ►&#039;&#039;&#039; Add advanced user permission&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FREE_PRODUCT_CHECKED_BY_DEFAULT ►&#039;&#039;&#039; Check &amp;quot;product&amp;quot; or &amp;quot;service&amp;quot; by default on order/invoices/propal cards (set value &amp;quot;product&amp;quot; or &amp;quot;service&amp;quot;)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LINK_BY_REF ►&#039;&#039;&#039; Allow to link documents by choosing the type and ref from the object linked option&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Official supported option&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The following options are not hidden option. They are available by default from the interface.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ONLY_LOGIN_ALLOWED ►&#039;&#039;&#039; Activate maintenance mode and set user that is allowed to login. Value must be user login. Available into menu Home - Admin tools - User session, it is filled with admin user when clicking on button &amp;quot;Block other session&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Security Options=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SECURITY_ANTI_SSRF_SERVER_IP&#039;&#039;&#039; ► Can set a complete list of IPs of server.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SECURITY_CSRF_WITH_TOKEN&#039;&#039;&#039; ► Activate a second anti-CSRF protection on POST (so a POST from another web site can&#039;t be done). Note there is also a default protection using test on referrer that is not reliable. This second protection uses TOKEN on forms and is more powerful. Value can be: 0=CSRF protection disabled; 1=CSRF protection is on POST URLs only (default from version Dolibarr 15.0+); 2=CSRF protection is required on POST + some GET URL that contains some white listed parameters like the parameter &amp;quot;action&amp;quot; used to request database change (default from version Dolibarr 16+), 3=CSRF protection is enabled on any POST and GET URLs (a valid CSRF token is expected whatever are the parameters, warning: can be enabled on Dolibarr but some external modules developped by thirdparty may not be ready yet with this option)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MODULES_FOR_EXTERNAL&#039;&#039;&#039; ► Limit available modules for external users. By default value is &#039;&amp;lt;code&amp;gt;facture,commande,contact,propal,projet,contrat,societe,ficheinter,expedition,agenda&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ALLOW_SVG_FILES_AS_IMAGES&#039;&#039;&#039; ► Allow to use SVG file as image files. Warning: This may introduce security vulnerability (javascript can be embedded into SVG file).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_RESTRICTHTML_ONLY_VALID_HTML&#039;&#039;&#039; ► Refused parameter if value is not a valid HTML content. The content is also sanitized with Tidy.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_RESTRICTHTML_ONLY_VALID_HTML_TIDY&#039;&#039;&#039; ► Refused parameter if value is not a HTML content validated by Tidy PHP library. The content is also sanitized with Tidy.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_RESTRICTHTML_REMOVE_ALSO_BAD_ATTRIBUTES&#039;&#039;&#039; ► Sanitize also non standard attributes on HTML content.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SECURITY_SALT&#039;&#039;&#039; ► A salt string to base the hashing on. 8 strings length recommended.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SECURITY_MAX_IMG_IN_HTML_CONTENT&#039;&#039;&#039; ► Maximum number of Images on the HTML content&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SECURITY_ALLOW_UNSECURED_LABELS_WITH_HTML&#039;&#039;&#039; ► Allow HTML tags into products label&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SECURITY_FORCERP&#039;&#039;&#039; = &amp;quot;strict-origin-when-cross-origin&amp;quot; (default) so browser doesn&#039;t send any referrer when going into another web site domain / &amp;quot;same-origin&amp;quot; / &amp;quot;strict-origin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Members Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_NEWFORM_FORCEMORPHY&#039;&#039;&#039; ► Force nature of member set to &amp;quot;phy&amp;quot; for physical or to &amp;quot;mor&amp;quot; for moral ► (v12.0)&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_ALLOW_CHANGE_OF_TYPE&#039;&#039;&#039; ► Member can edit their type on public subscription page ► (v13.0)&lt;br /&gt;
*&#039;&#039;&#039;ADHERENT_DEFAULT_CREATE_THIRDPARTY&#039;&#039;&#039; ► Thirdparty is created when creating a new member ► (v13.0)&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_SUBSCRIPTION_SUGGEST_END_OF_MONTH&#039;&#039;&#039; ► If set to 1, the member subscription end date will be suggested for the end of the month ► (v18.0)&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_SUBSCRIPTION_SUGGEST_END_OF_YEAR&#039;&#039;&#039; ► If set to 1, the member subscription end date will be suggested for the end of the year ► (v18.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NB_OF_YEAR_IN_MEMBERSHIP_WIDGET_GRAPH&#039;&#039;&#039; ► If set, it limits the number of years visible on graph and widgets of membership (empty is default value to show all) ► (v18.0)&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_NO_SYNC_LINKED_THIRDPARTY ►&#039;&#039;&#039; If set, changes to a member will not be synchronized to a linked third party. ► (v23.0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Accounting Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ACCOUNTANCY_COMBO_FOR_AUX&#039;&#039;&#039; ► Add graphic option for ACCOUNTANCY_COMBO_FOR_AUX. Having this option on may slow down and even freeze the accounting features if you have a very large number of thirdparties ► (v10.0)&lt;br /&gt;
*&#039;&#039;&#039;ACCOUNTING_DEFAULT_NOT_NOTIFIED_VALIDATION_DATE&#039;&#039;&#039; ► Avoid validating the lines with the accountancy export.(1= box unchecked by default / 0 = box checked by default) ► (v14.0)&lt;br /&gt;
*&#039;&#039;&#039;ACCOUNTING_DEFAULT_NOT_NOTIFIED_EXPORT_DATE&#039;&#039;&#039; ► Avoid flagging the lines as exported with the accountancy export.(1= box unchecked by default / 0 = box checked by default) ► (v14.0)&lt;br /&gt;
*&#039;&#039;&#039;ACCOUNTANCY_USE_PRODUCT_ACCOUNT_ON_THIRDPARTY ►&#039;&#039;&#039; Add 2 fields on thirdparty card which allow you to set an account for all sells products and an other for all buying products for this customer ► (v14.0)&lt;br /&gt;
*&#039;&#039;&#039;ACCOUNTING_MANAGE_ZERO&#039;&#039;&#039; &#039;&#039;&#039;►&#039;&#039;&#039; Allow to manage char 0 in accounting account (if enabled 1 ≠ 10) ► (v14.0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Agenda Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_ALL_CALENDARS&#039;&#039;&#039; ► Change the default view of calendar pages to see all the Agenda&#039;s (instead or yours only be default)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_AUTOSET_END_DATE_WITH_DELTA_HOURS&#039;&#039;&#039; ► To automatically set end date of event to start date + delta on event creation page.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_DISABLE_LOCATION&#039;&#039;&#039; ► Disable location field in action card  ► (&amp;gt;=v5.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_MAX_EVENTS_DAY_VIEW&#039;&#039;&#039; ► Define the maximum number of visible entries for each day in agenda. Default value is 3. Value 0 means no limit.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_USE_EVENT_TYPE&#039;&#039;&#039; ► Add a mandatory field &amp;quot;Type&amp;quot; when creating an event (&#039;&#039;&#039;&#039;&#039;deprecated&#039;&#039;&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ADD_EVENT_ON_ELEMENT_CARD&#039;&#039;&#039; ► Allow to create an event from a document (proposal, order, invoice)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_SUPPORT_PRIORITY_IN_EVENTS&#039;&#039;&#039; ► Allow to have priorities in events ► (&amp;gt;=v13.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_ADDACTIONFORPHONE&#039;&#039;&#039; ► Allow you to create a event from phone number ► (=&amp;lt;v12.0) - Need to be fix for (=&amp;gt;v12.0) https://github.com/Dolibarr/dolibarr/issues/22720&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_ADDACTIONFOREMAIL&#039;&#039;&#039; ► Allow you to create a event from Email ► (=&amp;lt;v12.0) - Need to be fix for (=&amp;gt;v12.0) https://github.com/Dolibarr/dolibarr/issues/22720&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ACTIONCOM_CAN_ADD_ANY_CONTACT&#039;&#039;&#039; ► Allow you to add any contact on events if set at 1a https://github.com/Dolibarr/dolibarr/releases/tag/18.0.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
=Bank Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BANK_CAN_RECONCILIATE_CASHACCOUNT&#039;&#039;&#039; ► Can reconciliate cash accounts ► (v3.8)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BANK_DISABLE_CHECK_DEPOSIT&#039;&#039;&#039; ► Disable check deposit feature&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BANK_ASK_PAYMENT_BANK_DURING_ORDER&#039;&#039;&#039; ► Ask bank account during creation of an order&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL&#039;&#039;&#039; ► Ask bank account during creation of a proposal&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BANK_USE_OLD_VARIOUS_PAYMENT&#039;&#039;&#039; ► To allow to enter miscellaneous payments (not covered by other modules) using old method. &#039;&#039;&#039;&#039;&#039;Deprecated&#039;&#039;&#039;&#039;&#039;. Entering various payment is preferred ► (&amp;lt;=v12.0).&lt;br /&gt;
*&#039;&#039;&#039;MAIN_IBAN_IS_NEVER_MANDATORY&#039;&#039;&#039; ► IBAN and BIC informations not mandatory. (V15)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=BOM and MO Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ALLOW_USE_KITS_INTO_BOM_AND_MO&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;BOM_SUB_BOM&#039;&#039;&#039; ►Allow to add a BOM in another BOM►(v16.0)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Bookmarks Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BOOKMARKS_SHOW_IN_MENU&#039;&#039;&#039; ► Numbers of bookmark entries to be displayed (10 by default)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Inalterable Log Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BLOCKEDLOG_ADD_ACTIONS_SUPPORTED&#039;&#039;&#039; ► Can complete list of triggered action that are logged&lt;br /&gt;
*&#039;&#039;&#039;BLOCKEDLOG_USE_REMOTE_AUTHORITY&#039;&#039;&#039; ► URL of the remote authority for the blockchain&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Category-Tags Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CATEGORY_SHOW_COUNTS&#039;&#039;&#039; ► Shows nb of object by tags in tag tree&lt;br /&gt;
*&#039;&#039;&#039;CATEGORY_EDIT_IN_MENU_NOT_IN_POPUP ►&#039;&#039;&#039; Display categories menu instead of managing it only from &amp;quot;Tools&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Contracts=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CONTRACT_SUPPORT_PRODUCTS&#039;&#039;&#039; ► Products are also suggested into module contract.&lt;br /&gt;
*&#039;&#039;&#039;CONTRACT_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039; ► When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. ► (v7.0+)&lt;br /&gt;
*&#039;&#039;&#039;CONTRACT_HIDE_PLANNED_DATE_ON_PDF&#039;&#039;&#039; ► allows you to not display dates on pdf files.&lt;br /&gt;
*&#039;&#039;&#039;CONTRACT_HIDE_REAL_DATE_ON_PDF&#039;&#039;&#039; ► allows you to not display dates on pdf files.&lt;br /&gt;
*&#039;&#039;&#039;CONTRACT_HIDE_PRICE_ON_PDF&#039;&#039;&#039; ► allows you to not display price on pdf files.&lt;br /&gt;
*&#039;&#039;&#039;CONTRACT_HIDE_QTY_ON_PDF&#039;&#039;&#039; ► allows you to not quantity dates on pdf files.&lt;br /&gt;
*&#039;&#039;&#039;CONTRACT_SHOW_SIGNATURE_STATUS_WITH_SERVICE_STATUS&#039;&#039;&#039; ► Show signature status in contract card (Sign by all parties).► (v21.0+)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Cron module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CRON_DISABLE_KEY_CHANGE&#039;&#039;&#039; ► When you provide an instance to a customer, you probably also add an entry in the cron of this user so Dolibarr batch and scheduler can work correctly. For security purpose, it may have a security key that is inside the command line into the cron entry and this entry must match the value defined into Dolibarr setup (setup of module &#039;Scheduled Jobs&#039;). Because, a customer of a Saas platform will probably have no access to edit the cron file, it is also import that he has no way to edit the key into the Dolibarr setup, so the key in the cron command line will always match the key in Dolibarr setup, and the Dolibarr batches will executed without security errors. To be sure, the customer does not change the value, you can set this constant to 1 into the table [[Table_llx_const]].&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CRON_DISABLE_TUTORIAL_CRON&#039;&#039;&#039; ► Disable the tutorial about how to install the cron script (on a SaaS hosting, this should be done by the web hosting provider)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CRON_WARNING_DELAY_HOURS&#039;&#039;&#039; ► Set this value to the frequency set for the cron script (so a warning will be shown to user to warn it about max frequency of its scheduled jobs)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Direct Debit Orders=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;WITHDRAWAL_ALLOW_ANY_INVOICE_STATUS&#039;&#039;&#039; ► If this option is set, all invoices status (even already paid) may appear on the list of invoices qualified for a direct debit payment. This is the list of invoices with a payment request done, and not linked to a direct debit payment. By default, only &amp;quot;unpayed&amp;quot; invoices are used to avoid to pay twice the same invoice.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Donation Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;DONATION_USE_THIRDPARTIES&#039;&#039;&#039; ► If this option is set, a thirdparty field appear on donation forms.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
=Email=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_COPY_FILE_IN_EVENT_AUTO&#039;&#039;&#039; ► Add attachment document on event auto generated by sending email from dolibarr. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EMAIL_USE_LAYOUT&#039;&#039;&#039;► Enable the use of predefined layout when writing an email.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAILFORM_DISABLE_ENTERKEY&#039;&#039;&#039; ► Activate JavaScript code to disable the enter key in the MAIL form. ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_DEBUG&#039;&#039;&#039; ► Write content with header of last mail into file &amp;lt;code&amp;gt;dolibarr_mail.log&amp;lt;/code&amp;gt; into directory &amp;lt;code&amp;gt;dolibarr_main_data_root&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_DEBUG_ERR_WITH_DATE&#039;&#039;&#039; ► Use a different filename (by adding a prefix of date) for each email sent with error when MAIN_MAIL_DEBUG.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_DEBUG_LOG_WITH_DATE&#039;&#039;&#039; ► Use a different filename (by adding a prefix of date) to log each email sent (whatever is result) when MAIN_MAIL_DEBUG.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_FORCE_FROM&#039;&#039;&#039; ► (v19+) Can force the value into the From field of the SMTP header. Note that email sender is always saved into the &amp;quot;Reply-To&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_ALLOW_SENDMAIL_F&#039;&#039;&#039; ► On Linux or BSD system, PHP email function use the command sendmail local to server. In some cases, the sender email must be provided on command line of sendmail with option &amp;lt;code&amp;gt;-f&amp;lt;/code&amp;gt;. This option is here to ask Dolibarr to call the function mail of PHP by adding value for the option &amp;lt;code&amp;gt;-f&amp;lt;/code&amp;gt;. Note that in most cases, even with sendmail, sender email is correctly managed as it is added in the email technical header. This option is here only for setup or version of sendmail that ask the -f option to be mandatory or for sendmail setup that does not use by default the From of the header email to define the sender (with this option, the from can be forced on command line to avoid to have the from lost by sendmail).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_SENDMAIL_FORCE_BA&#039;&#039;&#039; ► On Linux or BSD system, PHP email function use the command sendmail local to server. In some case, we want to recipient to be provided to sendmail into the email content instead of its command line parameter. For this we must add the -ba parameter to sendmail. This option asks PHP to provide this parameter when sending a mail. Note that another solution is to edit the mail.force_extra_parameters=-ba into &amp;lt;code&amp;gt;php.ini&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_NO_FULL_EMAIL&#039;&#039;&#039; ► Recipient email and sender are cleaned to be on form &amp;quot;&amp;lt;email&amp;gt;&amp;quot; instead of &amp;quot;Name &amp;lt;email&amp;gt;&amp;quot;. This might solve problem of compatibility with very old mailers.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FIX_FOR_BUGGED_MTA&#039;&#039;&#039; ► Some MTA agent are bugged and add some CR chars each time they saw a LF. Because Dolibarr emails are forged to be already cleaned, if MTA agent do that, you will send an email with two CR chars. This may result in having recipient not able to read your email. To fix this, add this constant to 1. Dolibarr will then create an email that is not RFC compliant but because the MTA agent is bugged, the email will be modified and become correct during sending, solving the problem of bad email received. Add this constant if your recipient experience problems when opening email for example users using webmail of &amp;lt;code&amp;gt;orange.fr&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;hotmail.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_DO_NOT_USE_SIGN&#039;&#039;&#039; ► Do not add user signature at end of suggested pre-defined email&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_FORCE_NOT_SENDING_TO&#039;&#039;&#039; ► If en email is defined into this variable, emails will never be sent to this email.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIL_FORCE_DELIVERY_RECEIPT_INVOICE&#039;&#039;&#039; ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Invoice&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIL_FORCE_DELIVERY_RECEIPT_ORDER&#039;&#039;&#039; ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Order&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIL_FORCE_DELIVERY_RECEIPT_PROPAL&#039;&#039;&#039; ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Proposal&#039;&#039; module.&lt;br /&gt;
*&#039;&#039;&#039;MAIL_FORCE_DELIVERY_RECEIPT_SUPPLIER_PROPOSAL&#039;&#039;&#039; ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Supplier Proposal&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EMAIL_SUPPORT_ACK ►&#039;&#039;&#039; Restore email acknowledgment checkbox on sending emails. This feature is commonly abandoned by mailers. Active from Dolibarr V17 - see [https://github.com/Dolibarr/dolibarr/blob/33744f74da1a5c20f8aa9950018ab4e549e00205/ChangeLog#L53 changelog]&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EMAIL_USECCC&#039;&#039;&#039; ► 1 = Shows field BCC into email forms, If value is an email = Shows the BCC pre filled with the email value.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_AUTOCOPY_PROPOSAL_TO&#039;&#039;&#039;, &#039;&#039;&#039;MAIN_MAIL_AUTOCOPY_ORDER_TO&#039;&#039;&#039;, &#039;&#039;&#039;MAIN_MAIL_AUTOCOPY_INVOICE_TO&#039;&#039;&#039;, &#039;&#039;&#039;MAIN_MAIL_AUTOCOPY_SHIPMENT_TO&#039;&#039;&#039;, &#039;&#039;&#039;MAIN_MAIL_AUTOCOPY_..._TO&#039;&#039;&#039; ► Email to use as a BCC recipient when sending email for proposal, order or invoice. You can make this value visible by setting MAIN_EMAIL_USECCC (to 1 or to another email, see previous point)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EMAIL_ADD_TRACK_ID&#039;&#039;&#039; ► When value is 1 (this is also default value if option is not set): The record &amp;quot;Message-id&amp;quot; added into smtp header includes a tracking id to define where the email was sent from. When value is 2: you send an email from third party card, the sender email is completed with the email source tracking string  &amp;quot;+thiXXX&amp;quot; on email (your email will be sent with the &amp;quot;From&amp;quot; that is myname+thi123@mycompany.com). So when user receiving email will make &amp;quot;Answer&amp;quot;, email will be sent to myname@mycompany.com but with the tracking id included (into header or into target email), allowing you to know to which third party or object, the email exchange is related to.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_IN_SAME_EMAIL&#039;&#039;&#039; ► Restrict sending of 1 email message to &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; recipients for same email message (x for To: + CC: + BCC:). If not defined, value is &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;. Required to fight against spamming that include 1000 recipients in 1 message. Note that &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_TO_IN_SAME_EMAIL&#039;&#039;&#039;, &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_CC_IN_SAME_EMAIL&#039;&#039;&#039; and &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_BCC_IN_SAME_EMAIL&#039;&#039;&#039; are also available.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_FORCE_CONTENT_TYPE_TO_HTML&#039;&#039;&#039; ► Force to send all email (event with text only content) as HTML formatted email.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_USE_MULTI_PART&#039;&#039;&#039; ► Forge email content using an alternate text part ► (for 5.0.2+). By default with 6.0+&lt;br /&gt;
*&#039;&#039;&#039;MAIN_INFO_SOCIETE_MAIL_ALIASES&#039;&#039;&#039; ► add address aliases for the from field on mail. Set his value with &amp;quot;Firstname Name &amp;lt;firstname.lastname@mydomain.tld, Otherfirstname OtherlastName &amp;lt;othermail@mydomain.tld&amp;gt;,...&amp;quot; ► (v5.0.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_ADD_INLINE_IMAGES_IF_IN_MEDIAS&#039;&#039;&#039; ► If images were stored into the medias directory from CKEditor, then images into emails are replaced with &amp;quot;inline content&amp;quot;. This may increase seriously risk of being detected as SPAM.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EXTERNAL_SMTP_CLIENT_IP_ADDRESS&#039;&#039;&#039; ► (A better name of this option should be MAIN_EXTERNAL_MAIL_CLIENT_IP_ADDRESS). Set here the list of IPs where your Dolibarr instances are hosted. You can also set the URLs where to get the IP addresses, for exemple: &amp;quot;https://ipv4.urltoshowip.com/_service_showmyip.php,https://ipv6.urltoshowup.com/_service_showmyip.php. So when your customer go into the setup area of email:&lt;br /&gt;
**If he chose mail method, a message will explain him how to setup its SPF record for its email domain (showing the list of IP). This is to avoid to have its emails, sent from its Dolibarr instance, fails due to strict antispam rule of some emailing servers.&lt;br /&gt;
**If he chose smtp method, a message will explain him the list of IP he can use if there is restriction on IP by the SMTP agent. If you also need to add a message to help SPF setup, see option &#039;&#039;&#039;MAIN_EXTERNAL_SMTP_SPF_STRING_TO_ADD&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_IMAP_USE_PHPIMAP&#039;&#039;&#039; ► Use embedded PHP-imap library (not using the native php imap) instead of native php imap extension ► (v17.0+, available as official option in setup of emailcollector by default from v19)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_ENABLED_USER_DEST_SELECT&#039;&#039;&#039; ► Show also internal users into list of recipients of email in email sending form ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIL_PREFIX_FOR_EMAIL_ID&#039;&#039;&#039; ► Prefix for the mails ID. Default value is &amp;lt;code&amp;gt;$_SERVER[&amp;quot;SERVER_NAME&amp;quot;]&amp;lt;/code&amp;gt; ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=SMS= &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SMS_DEBUG&#039;&#039;&#039; ► Write content of SMS sent into file &amp;lt;code&amp;gt;dolibarr_sms.log&amp;lt;/code&amp;gt; into directory &amp;lt;code&amp;gt;dolibarr_main_data_root&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Emailing Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_PREFIX_FOR_EMAIL_ID&#039;&#039;&#039; ► Set the value that will be used to compose the &amp;quot;Email ID&amp;quot; into email headers. If you set this value to &#039;&amp;lt;code&amp;gt;SERVER_NAME&amp;lt;/code&amp;gt;&#039;, the virtual host of web server will be used. By default, this is not defined, so a hash key, unique to each instance, is used.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_NO_USING_PHPMAIL&#039;&#039;&#039; ► If set, the module emailing can&#039;t be used with mail setup of &amp;quot;phpmail&amp;quot;. Using a thirdparty SMTP server is required. You can complete warning message by adding an email to contact for setup help with constant &amp;lt;code&amp;gt;&#039;&#039;&#039;MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS&#039;&#039;&#039;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS&#039;&#039;&#039; ► Contains the email of contact to show into the message visible to a user when he try to use emailing module without SMTP server and if option &#039;&#039;&#039;MAILING_NO_USING_PHPMAIL&#039;&#039;&#039; is set to on.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_LIMIT_WARNING_PHPMAIL&#039;&#039;&#039; ► Show a warning message (var contains the &#039;&#039;&#039;message to show&#039;&#039;&#039;, or &#039;&#039;&#039;translation key&#039;&#039;&#039;) on emailing send form if setup is on &amp;quot;phpmail&amp;quot;. Note: The application always try to translate the message considering the message is a translation key, before showing the translation or message if translation was not found.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_LIMIT_WARNING_NOPHPMAIL&#039;&#039;&#039; ► Show a warning message (var contains the &#039;&#039;&#039;message to show&#039;&#039;&#039;, or &#039;&#039;&#039;translation key&#039;&#039;&#039;) on emailing send form if setup is something else than &amp;quot;phpmail&amp;quot;. Note: The application always try to translation the message considering the message is a translation key, before showing the translation or message if translation was not found.&lt;br /&gt;
*&#039;&#039;&#039;EMAILING_USE_ADVANCED_SELECTOR&#039;&#039;&#039; ► Enable the advanced selector for recipients.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_LIMIT_SENDBYWEB&#039;&#039;&#039; ► Restrict number of emails you can send in same sending session with emailing module from GUI. The value &amp;quot;&amp;lt;code&amp;gt;dolibarr_mailing_limit_sendbyweb&amp;lt;/code&amp;gt;&amp;quot; if defined into config file is used in priority for this limit. A negative value means, sending by web is forbidden.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_LIMIT_SENDBYCLI&#039;&#039;&#039; ► Restrict number of emails you can send in same sending session with emailing module from CLI script. The value &amp;quot;&amp;lt;code&amp;gt;dolibarr_mailing_limit_sendbycli&amp;lt;/code&amp;gt;&amp;quot; if defined into config file is used in priority for this limit.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Expense Report=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;EXPENSEREPORT_ALLOW_OVERLAPPING_PERIODS&#039;&#039;&#039; ► Can enter several expense reports on same or overlapping date periods. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;EXPENSEREPORT_OVERRIDE_VAT&#039;&#039;&#039; ► Setting this constant to 1 will allow expense reports to show VAT even if the global VAT setting is off ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;EXPENSEREPORT_USE_OLD_NUMBERING_RULE&#039;&#039;&#039; ► The module Expense Report use numbering rules that you can setup (like other modules do). If you need to keep the hard-coded numbering rule of expenses report used in v6.0 set this constant to 1 ► (&amp;gt;=v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_EXPENSE_IK&#039;&#039;&#039; ► This feature allows you to set index kilometres against a mileage index for different types of vehicles. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_EXPENSE_RULE&#039;&#039;&#039; ► This feature allows you to set a variety of rules per user/group/all so they can only create reports within their limits. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Export Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;EXPORT_CSV_SEPARATOR_TO_USE&#039;&#039;&#039; ► String value to use as default separator to delimit fields of exported files (by default Dolibarr uses &amp;quot;&amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;&amp;quot;). Example: EXPORT_CSV_SEPARATOR_TO_USE=&amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;EXPORT_CSV_FORCE_CHARSET&#039;&#039;&#039; ► Choose the charset used in the output file built by the CSV exporter. By default it is ISO-8859-1. Example: EXPORT_CSV_FORCE_CHARSET= &amp;lt;code&amp;gt;utf-8&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;EXPORTTOOL_CATEGORIES&#039;&#039;&#039; ► Can export categories (several lines) into one column with the &amp;quot;product export profile&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;USE_STRICT_CSV_RULES&#039;&#039;&#039; ► Use strict/real CSV format for export. Do not clean/replace CR+LF with &#039;\n&#039; but quote them using the escaping CSV char (&amp;lt;code&amp;gt;&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*&#039;&#039;&#039;EXPORTS_SHARE_MODELS&#039;&#039;&#039;  ► Share export models between users.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Foundation Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_URL_REDIRECT_SUBSCRIPTION&#039;&#039;&#039; ► Link called and shown when a member account is autocreated in member module by a guest user.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_EXT_URL_SUBSCRIPTION_INFO&#039;&#039;&#039; ► Link of external page pointed by the &amp;quot;Show here&amp;quot; link added in front of payment cell, into the page to make online subscription.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=Holiday Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;HOLIDAY_HIDE_BALANCE&#039;&#039;&#039; ► Hide the user&#039;s vacation balance on the vacation request page&lt;br /&gt;
&lt;br /&gt;
[https://wiki.dolibarr.org/Setup_Other#Top (back to top)]&lt;br /&gt;
=Interventions Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FICHINTER_CLASSIFY_BILLED&#039;&#039;&#039;► Allow to classify an intervention card as &amp;quot;Billed&amp;quot;. This add also trigger &amp;lt;code&amp;gt;FICHINTER_CLASSIFY_BILLED&amp;lt;/code&amp;gt; into list of possible automatic event into agenda.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FICHINTER_DISABLE_DETAILS&#039;&#039;&#039;► Disable entry of detail lines on intervention. Can validate with no line. Only one line will be shown per intervention on list.&lt;br /&gt;
**If set to &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; details are disabled only on intervention list ► (v21.0+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Invoice Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DEPOSIT_MULTI_TVA&#039;&#039;&#039; ► In deposits invoice, creates one line per VAT rate from the origin document ► (6.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_ALLOW_REUSE_OF_CREDIT_WHEN_PARTIALLY_REFUNDED&#039;&#039;&#039; ► If a credit note was partially refunded (a refund was sent to the customer), with common situation, we wait to have the remain refunded too. With this option, it is possible to convert the remain of invoice into a discount to reuse it into another invoice.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_INVOICE_ALLOW_REUSE_OF_CREDIT_WHEN_PARTIALLY_REFUNDED&#039;&#039;&#039; ► See INVOICE_ALLOW_REUSE_OF_CREDIT_WHEN_PARTIALLY_REFUNDED, but for supplier credit notes.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_CAN_BE_EDITED_EVEN_IF_PAYMENT_DONE&#039;&#039;&#039; ► Allow to edit invoices even if payment was started. Note: If the module &amp;quot;BlockedLog&amp;quot; is active (required in some countries for legal reasons), this will not change content of archived logs tracked by this module. By definition there is no way to change or remove archived records. It will just update data in your application and a new record to track your change  will be recorded into the archive log.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_CAN_ALWAYS_BE_REMOVED&#039;&#039;&#039; ► Allow to always delete invoices (even if invoice is not last one). Note: If the module &amp;quot;BlockedLog&amp;quot; is active (required by some countries for legal reason), this will not change content of archived logs tracked by this module. By definition there is no way to change or remove archived records. It will just update data in your application and a new record to track your change into the read-only archive log.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_CAN_NEVER_BE_EDITED&#039;&#039;&#039; ► Never allow to edit invoices (except draft invoices with ref like (PROV%)). See also INVOICE_CAN_NEVER_BE_REMOVED.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_CAN_NEVER_BE_REMOVED&#039;&#039;&#039; ► Never allow to delete invoices (except draft invoices with ref like (PROV%)). See also INVOICE_CAN_NEVER_BE_EDITED&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_POSITIVE_CREDIT_NOTE&#039;&#039;&#039; ► All amounts on PDF credit notes are positive.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FACTURE_DEPOSITS_ARE_JUST_PAYMENTS&#039;&#039;&#039; ► An old way to create initial payment. This treats deposit invoices as a special case and not as legal deposit invoice. Deposit invoices don&#039;t get counted on turnover. They are then applied as a payment, like a discount, on the final invoice. By default, when you include the deposit into draft of final invoice, the amount of final invoice is reduced. With this option, final amount is not reduced but a payment is registered. WARNING: In a lot of european countries, using this option is not allowed.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FACTURE_SENDBYEMAIL_FOR_ALL_STATUS&#039;&#039;&#039; ► Can send invoice by email to customer even if invoice has status &amp;quot;draft&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_CREDIT_NOTE_STANDALONE&#039;&#039;&#039; ► Start implementation to allow a credit note even without invoice (dangerous) ► (v3.9)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_USE_SITUATION&#039;&#039;&#039; ► 1=Enable the &amp;quot;situation invoice&amp;quot; feature. Warning, this feature is bugged and may not be compatible with the final version of the feature once the bug will be solved. Also, using the double-entry accountancy module is not possible when this option is on (due to the same design problem). 2=Enable the &amp;quot;situation invoice&amp;quot; feature with a rewrite. This mode should be better to become a future stable feature.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_USE_SITUATION_CREDIT_NOTE&#039;&#039;&#039; ► Enable the &amp;quot;situation credit note&amp;quot; feature (need &amp;lt;code&amp;gt;INVOICE_USE_SITUATION&amp;lt;/code&amp;gt;) ► (v8.0)&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_USE_RETAINED_WARRANTY&#039;&#039;&#039; ► Enable the retained warranty on invoice ► (v14.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_DISABLE_DEPOSIT&#039;&#039;&#039; ► Disable deposit invoices&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_DISABLE_REPLACEMENT&#039;&#039;&#039; ► Disable replacement invoices&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_DISABLE_CREDIT_NOTE&#039;&#039;&#039; ► Disable credit notes&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;bdi&amp;gt;&#039;&#039;&#039;INVOICE_ADD_EXTRAFIELD_IN_NOTE&#039;&#039;&#039; ► Add extrafields in note for canelle template ► (v17.0+)&amp;lt;/bdi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_DEFAULT_NOTE_PUBLIC&#039;&#039;&#039; &amp;lt;bdi&amp;gt;► Default text in public note&amp;lt;/bdi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: To decode a QR image of a ZATCA code: https://www.onlinebarcodereader.com/. You can also use the mobile application https://play.google.com/store/apps/details?id=com.posbankbh.einvoiceqrreader&amp;amp;gl=FR&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT&#039;&#039;&#039; ► See PDF option&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_COLUMN&#039;&#039;&#039; ► See PDF options&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;WORKFLOW_BILL_ON_SHIPMENT&#039;&#039;&#039; ► Change label of button with suitable label when you need to create invoice on shipments&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039; ► When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. Use the tag __DIRECTDOWNLOAD_URL_INVOICE__ in email template to insert it. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_POINTOFTAX_DATE&#039;&#039;&#039; ► Add Point of Tax Date on invoices for country-specific legality reasons ► (v4.0+)&lt;br /&gt;
*&#039;&#039;&#039;FACTURE_ENABLE_NEGATIVE&#039;&#039;&#039; ► Can validate an invoice when amount is negative&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FACTURE_ENABLE_NEGATIVE_LINES&#039;&#039;&#039; ► Allows to add negative lines to an invoice ► (v8.0.2+)&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_INVOICE_ENABLE_NEGATIVE&#039;&#039;&#039; ► Can validate an supplier invoice when amount is negative ► (V21 ?)&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_INVOICE_ENABLE_NEGATIVE_LINES&#039;&#039;&#039; ► Allows to add negative lines to an supplier invoice ► (V21 ?)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_USE_DEFAULT_DOCUMENT&#039;&#039;&#039; ► Allow user to select a default invoice documents models according to invoice type. On invoice create page, the model is dynamically changed on invoice type selection. ► (v9.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FACTURE_REUSE_NOTES_ON_CREATE_FROM&#039;&#039;&#039; ► Reuse the Public Note and Private note of the previous object (Proposal,...) when creating the bill.&lt;br /&gt;
*&#039;&#039;&#039;FACTUREFOURN_REUSE_NOTES_ON_CREATE_FROM&#039;&#039;&#039; ► Reuse the Public Note and Private note of the previous object when creating the supplier bill ► (V13.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_FACNUMBER_IN_DISCOUNT_LIST&#039;&#039;&#039; ► Display the reference of credit notes in discount list when creating the bill.&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_ALLOW_FREE_REF&#039;&#039;&#039; ► Capability to change reference of an invoice. This will be possible as long as the invoice has the status “Draft” and only if your country is not in Europe(V11)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_DISALLOW_REOPEN&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_MAX_FUTURE_DELAY&#039;&#039;&#039; ► Numbers of seconds allowed for billing in the future ► (V14.0)&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_AUTO_NEXT_MONTH_ON_LINES&#039;&#039;&#039; ► Increase start date and end date by one month, if an invoice line is a clone of a time based service AND if this services started on the first day of month and ended on the last day of month ► (V13.0.1)&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_KEEP_DISCOUNT_LINES_AS_IN_ORIGIN&#039;&#039;&#039; ► Does not change a line with a negative price into an absolute discount when creating an invoice ► (V16 ?)&lt;br /&gt;
*&#039;&#039;&#039;INVOICEREC_SET_AUTOFILL_DATE_START&#039;&#039;&#039; and &#039;&#039;&#039;INVOICEREC_SET_AUTOFILL_DATE_END ►&#039;&#039;&#039; Set start and end date to yes for lines of template invoice when created from a draft invoice ► (V16)&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_REC_DATE_TO_YES&#039;&#039;&#039; &#039;&#039;&#039;►&#039;&#039;&#039; Set start and end date to yes by default in add line form for template invoice ► (V16)&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_SUBTYPE_ENABLED&#039;&#039;&#039; ► Extends Dolibarr standard invoice with more invoice types used in some countries. A combo box in the new invoice creation card allows the selection of &amp;quot;subtypes&amp;quot; with values from dictionary &amp;quot;Invoice Subtypes&amp;quot; ► (v19.0+)&lt;br /&gt;
*&#039;&#039;&#039;LIST_OF_QUALIFIED_INVOICES_LIMIT_DEFINED&#039;&#039;&#039; &#039;&#039;&#039;►&#039;&#039;&#039; Perf options to limit list of invoices for &amp;quot;credit note&amp;quot; source (on form &amp;quot;create a credit note&amp;quot;), usable for big quantities of invoices for one customer like you can have with TakePos ► (V22+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Leave=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NON_WORKING_DAYS_INCLUDE_SATURDAY&#039;&#039;&#039; ► Set this value to 0 if you want to have the Saturday as a working day&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NON_WORKING_DAYS_INCLUDE_SUNDAY&#039;&#039;&#039; ► Set this value to 0 if you want to have the Sunday as a working day&lt;br /&gt;
&lt;br /&gt;
=Look or Theme=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FAVICON_URL&#039;&#039;&#039; ► favicon url&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EASTER_EGG_COMMITSTRIP&#039;&#039;&#039; ► Show a comic image from the CommitStrip website. Images are refreshed daily. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_INCLUDE_GLOBAL_STATS_IN_OPENED_DASHBOARD&#039;&#039;&#039; ► This conf will auto remove global stats box item if there are already in the new dashboard of opened elements and keep displayed stats on the opened item box (not only on mouse over) ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_TOP_MENU_SEARCH_DROPDOWN&#039;&#039;&#039; ► Actually only for eldy theme, this conf move search input  to top menu and use new design too ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THEME_AGRESSIVENESS_RATIO&#039;&#039;&#039; ► This conf can be used to increase/decrease aggressiveness of colors. Value 0 is medium, value is between -100 (light grey colors) to +100 (very flashy colors) ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THEME_SHOW_BORDER_ON_INPUT&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_GLOBAL_WORKBOARD&#039;&#039;&#039; ► Hide the work board of the main page ► (v13.0+)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_GLOBAL_BOXSTATS&#039;&#039;&#039; ► Hide the Statistic Box of the main page&lt;br /&gt;
*&#039;&#039;&#039;ALLOW_THEME_JS ►&#039;&#039;&#039; Allow JS file in theme folder (same name as theme folder)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Manifest (Progressive Web App)=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MANIFEST_APPLI_THEME_COLOR ►&#039;&#039;&#039; Theme color for manifest&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MANIFEST_APPLI_BG_COLOR ►&#039;&#039;&#039; Background color  for manifest&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MANIFEST_APPLI_LOGO_URL  ►&#039;&#039;&#039; Logo for manifest&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MANIFEST_APPLI_LOGO_URL_SIZE  ►&#039;&#039;&#039; Logo url size for app (150, 192, 512px) missing 3 configurations&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Order Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MASSACTION_CREATEBILLS_REDIRECT_IF_ONE&#039;&#039;&#039; ► If set 1, redirects to the one bill created from massaction create bills from order list ► (v20.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MASSACTION_CREATEBILLS_REDIRECT_IF_MANY&#039;&#039;&#039; ► If set to 1, redirects to the invoice list after plural invoices where generated from tho massaction create bills from order list  ► (v20.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ORDERLIST_CREATEBILLS_ONEBYTHIRD&#039;&#039;&#039; ► Allow defining value for option &amp;quot;one by thirdparty&amp;quot; in massaction create bills from orders list page (no by default, yes if set to &#039;yes&#039; or 1) ► (v20.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_PROPAL_REFCLIENT_FOR_ORDER&#039;&#039;&#039; =&amp;gt; Copy customer reference from proposal to order. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ORDER_REQUIRE_SOURCE&#039;&#039;&#039; =&amp;gt; Make the input field &amp;quot;Source of order&amp;quot; mandatory.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ORDER_VALID_AFTER_CLOSE_PROPAL&#039;&#039;&#039; =&amp;gt; When an order is created on a proposal close, the order is directly defined with status &amp;quot;Validated&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ORDER_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039; =&amp;gt; When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ORDER_ENABLE_NEGATIVE&#039;&#039;&#039; =&amp;gt; Can validate an order when amount is negative&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_PROPAGATE_EXTRAFIELDS_TO_ORDER&#039;&#039;&#039; =&amp;gt; Copy also extrafields from thirdparty to order (if name match). ► (v11.0+)&lt;br /&gt;
*&#039;&#039;&#039;ORDER_DEFAULT_NOTE_PUBLIC&#039;&#039;&#039; ► Default text in public note&lt;br /&gt;
*&#039;&#039;&#039;MAIN_REMOVE_DROPDOWN_CREATE_BUTTONS_ON_ORDER&#039;&#039;&#039; =&amp;gt; Remove the create dropdown button on order card (introduce on v19) to come back with old buttons.  &#039;&#039;&#039;►&#039;&#039;&#039; (v20.0+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=PDF Options=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ADD_PDF_BACKGROUND&#039;&#039;&#039; ► Define this constant with short name of a PDF file (example &amp;quot;&amp;lt;code&amp;gt;mypdf.pdf&amp;lt;/code&amp;gt;&amp;quot;) that must be saved into directory &amp;quot;&amp;lt;code&amp;gt;documents/mycompany&amp;lt;/code&amp;gt;&amp;quot;. This will add PDF as a background of some of your generated PDF files (proposals,invoices,orders). If you need to concat PDF, see instead [[Module Concat PDF]].&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_FORCE_SAVEAS&#039;&#039;&#039; ► If your browser always asks to save downloaded files on disk (like PDF), try this this option. File may be displayed directly in your browser. Values&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: 0= Default (file is auto downloaded), 1= For to output the file into the browser tab, 2= For to output the file into a browser tab open with target_blank&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_PDF_AUTOUPDATE&#039;&#039;&#039; ► Disable automatic generation of PDF each time we add/update/delete a product line (we can still build document by clicking on &amp;quot;Generate&amp;quot;). This option may increase interface speed on servers with low CPU.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_PDF_COMPRESSION&#039;&#039;&#039; ► Disable PDF compression.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOCUMENTS_WITH_PICTURE_WIDTH&#039;&#039;&#039; ► Can change size of picture when hidden option &amp;lt;code&amp;gt;MAIN_GENERATE_PROPOSALS_WITH_PICTURE&amp;lt;/code&amp;gt; is used. By default value is &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS&#039;&#039;&#039; ► Adding the company address at the bottom of the page. Disabled by default&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_PROPOSALS_WITH_PICTURE&#039;&#039;&#039; ► Include the first image of the product into the line of the generated PDF for customer proposals.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_ORDERS_WITH_PICTURE&#039;&#039;&#039; ► Include the first image of the product into the line of the generated PDF for customer orders.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_INVOICES_WITH_PICTURE&#039;&#039;&#039; ► Include the first image of the product into the line of the generated PDF for customer invoices.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_SUPPLIER_PROPOSAL_WITH_PICTURE&#039;&#039;&#039; ► Include the first image of the product into the line of the generated PDF for supplier proposals ► (v5.0.3+)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_SUPPLIER_ORDER_WITH_PICTURE&#039;&#039;&#039; ► Include the first image of the product into the line of the generated PDF for supplier orders&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT&#039;&#039;&#039; ► Disable VAT on generated documents. like for an association. (Works with crabe template)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_COLUMN&#039;&#039;&#039; ► Hide column with VAT information but only column not total.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_INVERT_SENDER_RECIPIENT&#039;&#039;&#039; ► Invert sender and recipient in some PDF. Note: This option is set automatically if country if Germany.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ODT_AS_PDF&#039;&#039;&#039; ► Activate ODT to PDF conversion. Value can be &amp;quot;libreoffice&amp;quot; or &amp;quot;unoconv&amp;quot;. Do not use value &#039;&#039;&#039;&amp;lt;nowiki/&amp;gt;&#039;jodconverter&#039;&amp;lt;nowiki/&amp;gt;&#039;&#039;&#039; any more, as it is declared deprecated and partly not functional, use value &#039;&#039;&#039;&amp;lt;nowiki/&amp;gt;&#039;libreoffice&#039;&#039;&#039;&#039; instead, it requires only &#039;&#039;&#039;soffice&#039;&#039;&#039; (OpenOffice or LibreOffice) installed on server (use &#039;&#039;&#039;apt install soffice libreoffice-common libreoffice-writer&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
If you got this error: javaldx failed! Warning: failed to read path from javaldx with no return to prompt when running soffice --headless -env:UserInstallation=file:&amp;quot;/tmp&amp;quot; --convert-to pdf --outdir xxx ./yyy.odt, check that directory defined into env:UserInstallation parameters exists and is writeable.&lt;br /&gt;
&lt;br /&gt;
You may also have a look at this page if your server is on Windows: [[Générer automatiquement des documents PDF à partir de fichier ODT avec Doliwamp]]&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ODT_AS_PDF_DEL_SOURCE&#039;&#039;&#039; ► For ODT generation. If set, then initial behaviour is conserved but ODT file is removed when option to convert it as PDF (see previous) is on. Disabled by default&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_FORCE_FONT&#039;&#039;&#039; ► To ignore font defined into language file and force usage of a particular font. For example &amp;quot;&amp;lt;code&amp;gt;DejaVuSans&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_FORCE_FONT_SIZE&#039;&#039;&#039; ► To force size of font (by default 10). For example &amp;quot;&amp;lt;code&amp;gt;12&amp;lt;/code&amp;gt;&amp;quot; ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_FREETEXT_HEIGHT&#039;&#039;&#039; ► Change height of space reserved to output the free text.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_TITLE_BACKGROUND_COLOR&#039;&#039;&#039; ► Can define a background color onto title line. Example: &amp;lt;code&amp;gt;220,220,200&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_USE_LARGE_LOGO&#039;&#039;&#039; ► Use the original logo with its higher resolution into the PDF instead of the small thumb. This may lead to very very large PDF !&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_BACKGROUND_ON_PDF&#039;&#039;&#039; ► Define this constant with short name of an image (example &amp;quot;&amp;lt;code&amp;gt;myimage.jpg&amp;lt;/code&amp;gt;&amp;quot;) that must be saved into directory &amp;quot;&amp;lt;code&amp;gt;documents/mycompany/logos&amp;lt;/code&amp;gt;&amp;quot;. This will add this background image into your generated PDF files.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_COMPANY_NAME_OF_CONTACT&#039;&#039;&#039; ► Use contact name and information rather than company&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_ADDALSOTARGETDETAILS&#039;&#039;&#039; ► If 1, add details of recipient on generated PDFs (email, fax, url and phone). Can be useful in cases where a printed order/invoice etc is given to a delivery driver/courier etc.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_TVAINTRA_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show VAT N° in source address of PDF to comply with legalities in certain countries. Note that VAT number should be already visible in footer of page ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING&#039;&#039;&#039; ► Add optional esign field in pdf propal ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROFID1_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 1 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROFID2_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 2 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROFID3_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 3 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROFID4_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 4 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROFID5_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 5 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROFID6_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 6 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_BANK_HIDE_NUMBER_SHOW_ONLY_BICIBAN&#039;&#039;&#039; ► Hide bank number (&amp;quot;code banque/guichet/compte&amp;quot; for France, &amp;quot;sort code/account number&amp;quot; for GB, ...) and keep only BIC/IBAN on PDF.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_BOLD_PRODUCT_REF_AND_PERIOD&#039;&#039;&#039; ► Add more visibility (bold) on product ref and period of service in desc. ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_HIDE_PRODUCT_REF_IN_SUPPLIER_LINES&#039;&#039;&#039; ► Modify the use/position of Supplier Ref/Internal Ref with the item Label (name) on PDF documents.&lt;br /&gt;
&lt;br /&gt;
Default (constant not set or Value &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;): Internal ref followed by supplier ref in brackets.&amp;quot;COMPANY-REF-001 (Vendor SKU SUPPLIER-REF-001) - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Value &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;: Supplier ref only eg.&amp;quot;SUPPLIER-REF-001 - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Value &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;: Supplier ref followed by internal ref in brackets. eg.&amp;quot;SUPPLIER-REF-001 (InternalRef COMPANY-REF-001) - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME&#039;&#039;&#039; ► Include alternative/alias name into name on PDF.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_SECURITY_ENCRYPTION&#039;&#039;&#039; ► Encrypt PDF produced by dolibarr. See additional parameters&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;:PDF_SECURITY_ENCRYPTION_RIGHTS (block &#039;modify&#039; or &#039;copy&#039;) - &#039;&#039;&#039;PDF_SECURITY_ENCRYPTION_USERPASS&#039;&#039;&#039; - &#039;&#039;&#039;PDF_SECURITY_ENCRYPTION_OWNERPASS&#039;&#039;&#039; (random if not specified) - &#039;&#039;&#039;PDF_SECURITY_ENCRYPTION_STRENGTH&#039;&#039;&#039; (0 = RC4 40 bit; 1 = RC4 128 bit; 2 = AES 128 bit; 3 = AES 256 bit) - &#039;&#039;&#039;PDF_SECURITY_ENCRYPTION_PUBKEYS&#039;&#039;&#039; Array of recipients containing public-key certificates (&#039;c&#039;) and permissions (&#039;p&#039;) - For example: array(array(&#039;c&#039; =&amp;gt; &#039;file://../examples/data/cert/tcpdf.crt&#039;, &#039;p&#039; =&amp;gt; array(&#039;print&#039;))). WARNING: if an &#039;encrypted PDF&#039; provides a protection against manual change done by mistake, it does NOT provide any protection against modification of your PDF in a security point of view: A protected PDF can still be modified by any advanced PDF editors. Don&#039;t forget this: If a software can read the PDF, this software can also rebuild it differently !&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_SHOW_PROJECT&#039;&#039;&#039; ► Show project onto PDF (supported on supplier order only for the moment)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_USE_ALSO_LANGUAGE_CODE&#039;&#039;&#039; ► The value of this constant must be a language code (&#039;fr_FR&#039;, &#039;en_US&#039;, &#039;sa_SA&#039;, ...). If set, the PDF document will contains both language (default and the one defined by the constant).&lt;br /&gt;
*&#039;&#039;&#039;DOC_SHOW_FIRST_SALES_REP&#039;&#039;&#039; ► Show the sales representant on header (at least on propal azur and rubis template)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_DASH_BETWEEN_LINES&#039;&#039;&#039;&lt;br /&gt;
*&lt;br /&gt;
*&#039;&#039;&#039;SHOW_SUBPRODUCT_REF_IN_PDF&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;PDF_HIDE_PRODUCT_LABEL_IN_SUPPLIER_LINES&#039;&#039;&#039; ► hide product label in supplier order lines (V15+)&lt;br /&gt;
*&#039;&#039;&#039;SHIPPING_PDF_DISPLAY_AMOUNT_HT&#039;&#039;&#039; ► Show HT unit price and HT total price for lines of PDF shipment&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOCUMENTS_HIDE_DESCRIPTION_FOR_FACTURE&#039;&#039;&#039; ► To Hide product description in Customer Invoice&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOCUMENTS_HIDE_DESCRIPTION_FOR_COMMANDE&#039;&#039;&#039; ► To Hide product description in Sales Order&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOCUMENTS_HIDE_DESCRIPTION_FOR_ORDER_SUPPLIER&#039;&#039;&#039; ► To Hide product description in Purchase Order&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOCUMENTS_HIDE_DESCRIPTION_FOR_INVOICE_SUPPLIER&#039;&#039;&#039; ► To Hide product description in Vendor Invoice&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_PROPAL_SHOW_PRICE_INCL_TAX&#039;&#039;&#039; ► Display price with tax on Proposal(cyan template), Order(eratosthene template), Bill(sponge template) (V17+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_USE_GETALIASNBPAGE_FOR_TOTAL&#039;&#039;&#039; ► Display the page number alias&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_NO_SENDER_FRAME&#039;&#039;&#039; ► Do not display the &amp;quot;sender&amp;quot; mention&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_HIDE_SENDER_NAME&#039;&#039;&#039; ► Do not display the sender name&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_NO_RECIPENT_FRAME&#039;&#039;&#039; ► Do not display BillTo&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MULTICURRENCY_SHOW_ALSO_MAIN_CURRENCY_ON_PDF&#039;&#039;&#039; ► Show the amount in the 2 currencies on PDF when using the MultiCurrency module&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_DONOTREPEAT_HEAD ►&#039;&#039;&#039; Do not repeat the header of document&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Point of Sale (POS)=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CASHDESK_SHOW_KEYPAD&#039;&#039;&#039; ► Show a mouse key pad into the &#039;Simple Point of Sale&#039; module.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;POS_ADDON&#039;&#039;&#039; ► Set this value to an existing numbering module rule (for example &#039;&amp;lt;code&amp;gt;mod_facture_terre&amp;lt;/code&amp;gt;&#039;, &#039;&amp;lt;code&amp;gt;mod_facture_mars&amp;lt;/code&amp;gt;&#039;, ...) to force the numbering module to use for invoice ref definition when invoice is created by the POS. For example setting value &amp;lt;code&amp;gt;POS_ADDON&amp;lt;/code&amp;gt; to &#039;&amp;lt;code&amp;gt;mod_facture_terre&amp;lt;/code&amp;gt;&#039; will use the numbering module &#039;&amp;lt;code&amp;gt;terre&amp;lt;/code&amp;gt;&#039; for invoice generated from POS, whatever is the numbering rule defined into invoice module setup (you can also use POS_NUMBERING_TERRE_FORCE_PREFIX and POS_NUMBERING_MARS_FORCE_PREFIX variable to change the prefix used).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;TAKEPOS_ENABLE_SUMUP&#039;&#039;&#039; ► Enable the compatibility of TakePOS with the card reader terminal [https://SumUp.fr SumUp]&lt;br /&gt;
*&#039;&#039;&#039;TAKEPOS_CAN_FORCE_BANK_ACCOUNT_DURING_PAYMENT&#039;&#039;&#039; ► Possibility to force the bank account during the payment in TakePOS  ► (v13.0)&lt;br /&gt;
*&#039;&#039;&#039;TAKEPOS_CONTROL_CASH_OPENING&#039;&#039;&#039; ► Control the cash opening&lt;br /&gt;
*&#039;&#039;&#039;TAKEPOS_NUMPAD_FORCE_PAYMENT_ICONS_LABELS&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Products Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CATEGORY_GRAPHSTATS_ON_PRODUCTS&#039;&#039;&#039; ► Show graph of products with categories and totals in Products Area screen&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PRODUCT_DISABLE_CUSTOMCOUNTRYCODE&#039;&#039;&#039; ► Avoid customs code and country of origin to be set as product description when added to Propal/Order/Invoice&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_ADD_TYPE_IN_DOCUMENTS&#039;&#039;&#039; ► Add text &amp;quot;Product&amp;quot; or &amp;quot;Service&amp;quot; at beginning of details lines on built PDF documents.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DONOTSEARCH_ANYWHERE&#039;&#039;&#039; ► When Ajax search is enabled, search is done on criteria anywhere in label of product. By adding this option, search is done only on start of label. This is really faster when you have a huge number of products.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DIRECT_STATUS_UPDATE&#039;&#039;&#039; ► Allows you to change the status of the product (&#039;&#039;for sale/not for sale for purchase/not for purchase&#039;&#039;) directly on the product page via a &#039;&#039;on/off&#039;&#039; switch button. This can be convenient for those who need to quickly disable certain statuses of products without having to go through the editing product page individually. Also can be very useful if used as a filter on the product and product search list. This option doesn&#039;t generate a MODIFY trigger, so be careful with external modules. ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SEARCH_PRODUCT_BY_FOURN_REF&#039;&#039;&#039; ►  Allow to search a product by supplier ref in document&#039;s add line form. ► (&amp;gt;= 8.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_FREE_LINES&#039;&#039;&#039; ► Disallow using free lines to add line in documents ► (&amp;gt;= 8.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_PRODUCT_ACTIVITY_TRIM&#039;&#039;&#039; ► Show Product and Services turnover before for all four quarters tax over recent years recent years on the product area ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_DESC_IN_LIST&#039;&#039;&#039; ► Show long description of product/service into lists.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_PROPAGATE_CUSTOMER_PRICES_ON_CHILD_COMPANIES&#039;&#039;&#039; ► Disable propagation of prices per customer from a customer to its child company.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_PUBLIC_URL&#039;&#039;&#039; ► Disable public url in product card ► (v14.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_STOCK_LEVELS&#039;&#039;&#039; ► Disable properties of stock limits and desired optimal value on product ► (v14.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_NATURE&#039;&#039;&#039; ► Disable nature in product card ► (v14.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_WEIGHT&#039;&#039;&#039; ► Disable weight in product card ► (v14.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_PRICES&#039;&#039;&#039; ► Disable prices in product card ► (v14.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_ACCOUNTING&#039;&#039;&#039;  ► Disable accounting in product card ► (v14.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_SIZE&#039;&#039;&#039; ► Disable size in product card.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_LENGTH&#039;&#039;&#039; ► Disable length in product card ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_SURFACE&#039;&#039;&#039; ► Disable surface in product card. ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_VOLUME&#039;&#039;&#039; ► Disable volume in product card.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_CUSTOM_INFO&#039;&#039;&#039; ► Disable custom info (custom code and country origin) in product/service card.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_MULTIPRICES_USE_VAT_PER_LEVEL&#039;&#039;&#039; ► When option to use price per level/segment is on, this allows to also set a dedicated vat for each price level.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_CUSTOMER_PRICES_BY_QTY&#039;&#039;&#039; ► If price per quantity ► &#039;&#039;Experimental&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES&#039;&#039;&#039; ► If price per quantity and customer ► &#039;&#039;Experimental&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_LOT_ENABLE_QUALITY_CONTROL&#039;&#039;&#039; ► Enable feature (Display fields for life time and quality control duration) for quality control on product and lot&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_MAX_LENGTH_COMBO&#039;&#039;&#039; ► Limit the length of the label displayed when adding lines in proposals/invoices/orders&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_MAX_VISIBLE_PHOTO&#039;&#039;&#039; ► Show a maximum number of product photos (as thumbnails) on the product main card. Example, setting this constant to &#039;&amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;&#039; will show the first five product photos found on the product card.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_PDF_MERGE_PROPAL&#039;&#039;&#039; ► Enable module Propal merge product PDF&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_USE_OLD_PATH_FOR_PHOTO&#039;&#039;&#039; ► Ask dolibarr to check also old path (before 3.7) where photos were stored.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_USE_UNITS&#039;&#039;&#039; ► Add other units on products (Use same dictionary as default unit feature) and propagate this unit on line of documents.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EDIT_LINE_ALLOW_ALL_UNIT_TYPE ►&#039;&#039;&#039; Allow the selection of other unit types when editing the document line&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;RESOURCE_ON_PRODUCTS&#039;&#039;&#039; ► Allow to affect resources on products/services ► (v10.0+)&lt;br /&gt;
*&#039;&#039;&#039;RESOURCE_ON_SERVICES&#039;&#039;&#039; ► Allow to affect resources on products/services ► (v10.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_SHOW_ORIGIN_IN_COMBO&#039;&#039;&#039; ► Show origin of products when adding lines in proposals/invoices/orders ► (v12.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_ATTRIBUTES_HIDECHILD&#039;&#039;&#039;  ► Add option hide child if variantes&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_ADD_FORM_ADD_TO&#039;&#039;&#039; ► Add a product to a draft proposal/order/invoice, from the product card.&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_SELLBY&#039;&#039;&#039; ► Hide the Sell by date ► (v13.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_EATBY&#039;&#039;&#039; ► Hide the Eat by date ► (v13.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DENY_CHANGE_PRODUCT_TYPE&#039;&#039;&#039; ► Forbid to change the product type&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_SORT_BY_CATEGORY&#039;&#039;&#039; ► Sort the product by categories instead of by ID&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_ADD_NET_MEASURE&#039;&#039;&#039; ► Support Net Measure in product&#039;s card.php (For real weight, volume or piece; needed for some business ie fruits, vegetables....). Note brut value is already available natively, use this option only if you need 2 weights, 2 volumes, ...for each product) ► (v11.0.1+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_PRICE_BASE_TYPE&#039;&#039;&#039;  ► value &#039;TTC&#039; / &#039;HT&#039; specify the default value of the price (with or without taxes) ► (v16.0.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_LOAD_EXTRAFIELD_INTO_OBJECTLINES&#039;&#039;&#039; ► Load product extrafiled on object lines&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_USE_SUB_COST_PRICES_IF_COST_PRICE_EMPTY&#039;&#039;&#039;&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: Calculate the parent product production price by child prices.&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_SEARCH_AUTO_SELECT_IF_ONLY_ONE&#039;&#039;&#039;&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: Set to 0 to disable or 1 to enable (by default) the auto select product behavior in combobox when there is only one result.(v21.0+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Projects Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_ALLOW_TO_LINK_FROM_OTHER_COMPANY&#039;&#039;&#039; ► Option related to the combo list Project on elements. It is a list of thirdparty IDs. If set, you can link an object to a project owned by one of this thirdparty in the list.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_ALLOW_COMMENT_ON_PROJECT&#039;&#039;&#039; ► Add comment feature on a project&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_ALLOW_COMMENT_ON_TASK&#039;&#039;&#039; ► Add comment feature on project task&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_ALWAYS_DISCARD_CLOSED_PROJECTS_IN_SELECT&#039;&#039;&#039; ► Discards closed projects in every select field. A closed project can&#039;t be associated to an object ► (v20.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS&#039;&#039;&#039; ► Option related to the combo list Project on elements. Can link a supplier element (vendor proposal, purchase order, vendor invoice, reception, ...) to any project even if object has a different supplier than the one of the project to link to. See also PROJECT_ALLOW_TO_LINK_FROM_OTHER_COMPANY that is different because it allows to define some given thirdparty ID to allow.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_CAN_ALWAYS_LINK_TO_ALL_CUSTOMERS&#039;&#039;&#039; ► Option related to the combo list Project on elements. Can link a custom element (proposal, sale order, vendor invoice, shipment, ...) to any project even if object has a different customer than the one of the project to link to.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_CREATE_ON_OVERVIEW_DISABLED&#039;&#039;&#039; ► Hide the &amp;quot;create ...&amp;quot; button on the overview pagec&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_DISABLE_UNLINK_FROM_OVERVIEW&#039;&#039;&#039; ► Enable removing the button from a link in the project overview. ► (&amp;gt;= v8.0.1)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_HIDE_UNSELECTABLES&#039;&#039;&#039; ► Hide into select list, all project that we can&#039;t select (closed or draft)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_HIDE_TASKS&#039;&#039;&#039; ► Hide tasks. For user using project only as an analytics key and not using tasks.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_LIST_SHOW_STARTDATE&#039;&#039;&#039; ► Shows start date of projects in project lists.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_LINK_ON_OVERWIEW_DISABLED&#039;&#039;&#039; ► Hide the &amp;quot;link to&amp;quot; form on the overview page ► (v4.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_SHOW_REF_INTO_LISTS&#039;&#039;&#039; ► Add column with project ref into list (with 3.7 list of supplier invoices only, will be expanded to other lists)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_TIME_ON_ALL_TASKS_MY_PROJECTS&#039;&#039;&#039; ► Can add time spent on tasks, even if i am not assigned to task (however, task must be a project i am a contact).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_OPEN_ALWAYS_ON_TAB&#039;&#039;&#039; ► Set to value &#039;task&#039;, or &#039;preview&#039; to always open the project on the given tab instead of main tab.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_ELEMENTS_FOR_MINUS_MARGIN&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;TIMESPENT_ALWAYS_UPDATE_THM&#039;&#039;&#039; ► when it&#039;s on always check current time of user to update it in task time line ► (v17.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_CREATE_NO_DRAFT&#039;&#039;&#039; ► when you create project status will be validate ► (v19.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_ENABLE_SUB_PROJECT&#039;&#039;&#039; ► Add support for parent projects ► (v19.0)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Proposals Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_PROPOSALS_WITH_PICTURE&#039;&#039;&#039; ► Add a picture of the product (the first one found if there are several) into the generated PDF of proposals. Note that using this will reduce the available width for the product description.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROPAL_CHOOSE_ODT_DOCUMENT&#039;&#039;&#039; ► On setup page, you&#039;ll be able to select which ODT document to use when close or cancel proposals.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING&#039;&#039;&#039; ► add optional esign field in pdf propal ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROPAL_CLONE_ON_CREATE_PAGE&#039;&#039;&#039; ► On the create proposal page, ask if we want to create the proposal by cloning an already existing one. You should use instead the &amp;quot;Clone&amp;quot; button available on existing proposals.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROPAL_DISABLE_SIGNATURE&#039;&#039;&#039; ► Do no show the box for signature.&lt;br /&gt;
*&#039;&#039;&#039;PROPAL_SIGNATURE_ON_SPECIFIC_PAGE ►&#039;&#039;&#039; Will show the signature on which page you wanted . Set to 1 will show on first page , set to -1 will show on last second page .  ( If &#039;&#039;&#039;PROPAL_SIGNATURE_ON_ALL_PAGES&#039;&#039;&#039; is enabled, the &#039;&#039;&#039;PROPAL_SIGNATURE_ON_SPECIFIC_PAGE&#039;&#039;&#039; setting will be ignored.)&lt;br /&gt;
*&#039;&#039;&#039;PROPAL_SIGNATURE_ON_ALL_PAGES ►&#039;&#039;&#039; Will show the signature on every pages .&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_PDF_MERGE_PROPAL&#039;&#039;&#039; ► When generating the proposal PDF, all PDFs linked to products linked to proposal are also included into final PDF&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROPOSAL_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039; ► When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROPOSAL_AUTO_ADD_AUTHOR_AS_CONTACT&#039;&#039;&#039; ► Add Proposal Author as user contact follow proposal&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROPOSAL_PDF_HIDE_PAYMENTTERM&#039;&#039;&#039; ► Do not show the payment term on proposal ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROPOSAL_PDF_HIDE_PAYMENTMODE&#039;&#039;&#039; ► Do not show the payment mode on proposal ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;WORKFLOW_PROPAL_CAN_CLASSIFY_BILLED_WITHOUT_INVOICES&#039;&#039;&#039; ► Button &amp;quot;Classified Billed&amp;quot; is visible on proposal even if there is no invoice linked to proposal.&lt;br /&gt;
*&#039;&#039;&#039;PROPAL_REOPEN_UNSIGNED_ONLY&#039;&#039;&#039;  ► Do not allow reopening of signed (or billed) proposals. (V15)&lt;br /&gt;
*&#039;&#039;&#039;PROPOSAL_ARE_NOT_BILLABLE&#039;&#039;&#039;  ► Disable billing button on proposals (V15)&lt;br /&gt;
*&#039;&#039;&#039;PROPAL_DEFAULT_NOTE_PUBLIC&#039;&#039;&#039; ► Default text in public note&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Services Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SERVICE_ARE_ECOMMERCE_200238EC&#039;&#039;&#039; ►  If seller and buyer are in Europe and buyer is not a company, use the VAT of buying country. For french speaking people, see also the page [[Loi_européenne_TVA_Vente_à_Distance_VAD_et_e-commerce_BtoC]].&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FILL_SERVICE_DATES_FROM_LAST_SERVICE_LINE&#039;&#039;&#039;  ► (v13.0) On add line form add a button to fill service dates from the last service line&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Shipments=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;STOCK_WAREHOUSE_NOT_REQUIRED_FOR_SHIPMENTS&#039;&#039;&#039; ► If set, you can add a shipment line, with no stock source defined. ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SHIPMENT_GETS_ALL_ORDER_PRODUCTS&#039;&#039;&#039; ► Add all order lines in shipment, including the one with 0 in quantity&lt;br /&gt;
*&#039;&#039;&#039;SHIPPING_PDF_HIDE_ORDERED&#039;&#039;&#039; ►Hide column quantity ordered on shipment pdf (&amp;gt;=15.0)&lt;br /&gt;
*&#039;&#039;&#039;STOCK_SUPPORTS_SERVICES&#039;&#039;&#039; ►Allow to manage services into warehouse and allow to ship services&lt;br /&gt;
*&#039;&#039;&#039;SHIPMENT_SUPPORTS_SERVICES&#039;&#039;&#039; ►Allow to ship services without stock (&amp;gt;=19.0)&lt;br /&gt;
*&#039;&#039;&#039;SHIPPING_DISPLAY_STOCK_ENTRY_DATE&#039;&#039;&#039; ►Display date entry stock exped and sort in date order (&amp;gt;=19.0)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Stocks=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_DISABLE_STOCK_DISPATCH_WHEN_TOTAL_REACHED&#039;&#039;&#039; ► Disable stock dispatch when total expected was already received&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;STOCK_EXCLUDE_VIRTUAL_PRODUCTS&#039;&#039;&#039; ► If product is a virtual product, we do not manage stock for it.&lt;br /&gt;
*&#039;&#039;&#039;STOCK_ALLOW_DELETE_OF_MOVEMENT&#039;&#039;&#039; ► Enable massaction option to delete in movements list (be carefull !!).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ENTREPOT_EXTRA_STATUS&#039;&#039;&#039; ► Instead of the 2 status (Closed, Open), a Warehouse has 3 status: Closed, Open (for all movements), Open (for internal movement only). Internal movement only means you can&#039;t use the warehouse to make shipment or receptions.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_STATUS_FOR_VIRTUAL_STOCK&#039;&#039;&#039; ► For the calculation of virtual stocks, by default supplier orders with the status 3 (ordered) and 4 (partially received) are used. You can enter the list of statuses to be taken into account separated by commas for this calculation (example: 0,1,2,3)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;STOCK_MOVEMENT_LIST_HIDE_UNIT_PRICE&#039;&#039;&#039; ► to hide unit price on some pages (V15+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;DISABLE_QTY_OVERWRITE&#039;&#039;&#039; ► Disable quantity overwrites on inventories ► (v19.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_WAREHOUSE_LIST_DISPLAY_MODE&#039;&#039;&#039; ► Change warehouse select list display mode  ► (v21.0) (see github pull request [https://github.com/Dolibarr/dolibarr/pull/31013 #31013] for more info)&lt;br /&gt;
**0&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: Default behavior, display parents of warehouse&lt;br /&gt;
**1&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: Display only current warehouse label only&lt;br /&gt;
**2&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: Display last parent warehouse label&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Suppliers Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FOURN_PRODUCT_AVAILABILITY&#039;&#039;&#039; ► On the Suppliers price page of the products, activate the supplier product availability. &#039;&#039;This is duplicate feature with delivery_delay introduced with 3.8.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;RELOAD_PAGE_ON_SUPPLIER_CHANGE&#039;&#039;&#039; ► On creation of a supplier order/invoice, reload form with supplier-specific details when supplier is selected from drop-down list.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_INVOICE_WITH_PREDEFINED_PRICES_ONLY&#039;&#039;&#039; ► Restrict selection of products in supplier invoice to only those with a buying price defined for that supplier. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_AUTOADD_USER_CONTACT&#039;&#039;&#039; ► Add user approving supplier order as a contact automatically.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_DEFAULT_PAYMENT_MODE_ID&#039;&#039;&#039; ► Set the default payment method for suppliers (&amp;lt;code&amp;gt;rowid&amp;lt;/code&amp;gt; in table &amp;lt;code&amp;gt;llx_c_paiement&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_USE_DISPATCH_STATUS&#039;&#039;&#039; ► Add a status on each dispatch order line when receiving products from suppliers ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_NO_DIRECT_APPROVE&#039;&#039;&#039; ► No button &amp;quot;Validate and Approve&amp;quot;. Always do step &amp;quot;Validate&amp;quot; and &amp;quot;Approve&amp;quot; in 2 steps.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_WITH_PREDEFINED_PRICES_ONLY&#039;&#039;&#039; ► Restrict selection of products in supplier order to only those with a buying price defined for that supplier. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_EDIT_BUYINGPRICE_DURING_RECEIPT&#039;&#039;&#039; ► Can modify the buying price used for PMP calculation when making a stock reception on a supplier order. ► (v6.0+)&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_PROPOSAL_WITH_PREDEFINED_PRICES_ONLY&#039;&#039;&#039; ► Restrict selection of products in supplier proposal to only those with a buying price defined for that supplier. ► (v6.0+)&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_MORE_THAN_WISHED&#039;&#039;&#039; ► The supplier order status is set to &amp;quot;Totally received&amp;quot; even if there are more products received than ordered. ► (v15.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;DISPLAY_DISCOUNTED_SUPPLIER_PRICE&#039;&#039;&#039; ► Allow to display discounted supplier price when searching product in supplier documents ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_CAN_EDIT_SUPPLIER_ON_SUPPLIER_ORDER&#039;&#039;&#039; ►  Allow to change the supplier on a draft supplier order ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_PROPOSAL_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_CAN_UPDATE_BUYINGPRICE_DURING_RECEIPT&#039;&#039;&#039; ►  Allow to change price on receipt ► (v19.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_HIDE_SUPPLIER_OBJECTLINES&#039;&#039;&#039; ►  Hide the supplier information on objectlines (invoices, etc..) ► (v19.0)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Third Parties Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;COMPANY_AQUARIUM_CLEAN_REGEX&#039;&#039;&#039; ► Add a REGEX rule on the third parties names. It applies a regex replacement pattern on generated code if COMPANY_AQUARIUM_CLEAN_REGEX is set. Value must be a regex with parenthesis. The part into parenthesis is kept, the rest removed. For example if COMPANY_AQUARIUM_CLEAN_REGEX = &#039;&amp;lt;code&amp;gt;^..(..)..(.*)&amp;lt;/code&amp;gt;&#039; the first char and second char are removed and the char 5 and 6 too ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_UNKNOWN_CUSTOMERS_ARE_COMPANIES&#039;&#039;&#039; ► See in Global options section.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_VAT_COMPANIES_IN_EEC_WITH_INVALID_VAT_ID_ARE_INDIVIDUAL&#039;&#039;&#039; ► See in Global options section.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_EMAIL_MANDATORY&#039;&#039;&#039; ► E-mail is a mandatory field when creating a thirdparty&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_DISABLE_CUSTOMERS&#039;&#039;&#039; ► Remove all menu and features related to customers&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_DISABLE_PROSPECTS&#039;&#039;&#039; ► Remove all menu and features related to prospects&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_DISABLE_PROSPECTSCUSTOMERS ►&#039;&#039;&#039; Remove the status &amp;quot;Customer/Prospect&amp;quot; when thirdparties creation or modification&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_DISABLE_STATE&#039;&#039;&#039; ► Do not use field &amp;quot;state/province&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_SORT_ON_TYPEENT&#039;&#039;&#039; ► The combo list of &amp;quot;type of third party&amp;quot; is sorted on alphabetical order instead of the field &amp;quot;position&amp;quot; that appears into dictionary instead.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_ASK_FOR_SHIPPING_METHOD&#039;&#039;&#039; ► Shipping method can be predefined on customer card and will be used as default on order creation&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_ADD_REF_IN_LIST&#039;&#039;&#039; ► Displays the code before the name in the lists  ► Value 1 -&amp;gt; Code + name + alias ou Code + name if colone alias 2 -&amp;gt; Code + alias 3 -&amp;gt; Alias&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_CAN_HAVE_CATEGORY_EVEN_IF_NOT_CUSTOMER_PROSPECT_SUPPLIER&#039;&#039;&#039; ► Possible to add Categories to third parties that are not customer, prospect or supplier.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_DEFAULT_USELOCALTAX1&#039;&#039;&#039; ► When creating a new third party, the field &amp;quot;Use second tax&amp;quot; is set to on or off depending on value of this parameter.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_DEFAULT_USELOCALTAX2&#039;&#039;&#039; ► When creating a new third party, the field &amp;quot;Use third tax&amp;quot; is set to on or off depending on value of this parameter.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_NOTCUSTOMERPROSPECT_BY_DEFAULT&#039;&#039;&#039; ► Do not set status &amp;quot;Customer/Prospect&amp;quot; to &amp;quot;on&amp;quot; when creating a new third party from menu &amp;quot;New third party&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_INCLUDE_PARENT_IN_LINKTO&#039;&#039;&#039; ► Search also for elements on parent third party when using the &amp;quot;link to&amp;quot; object feature.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_INCLUDE_PROJECT_THIRDPARY_IN_LINKTO&#039;&#039;&#039; ► Search also for elements on third party that own the project of the current element when using the &amp;quot;link to&amp;quot; object feature (if project is owned by a different thirdparty than current one).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_LOGO_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039; ► When a logo is uploaded, a share key is automatically set so the file can be downloaded using the share key.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_SUGGEST_ALSO_ADDRESS_CREATION&#039;&#039;&#039; ► Enabled contact creation on third-party create card&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_QUICKSEARCH_ON_FIELDS&#039;&#039;&#039; ► Personalized search criteria ► Example: $conf-&amp;gt;global-&amp;gt;THIRDPARTY_QUICKSEARCH_ON_FIELDS = &#039;s.nom=ThirdPartyName;s.name_alias=AliasNameShort;s.code_client=CustomerCode&#039;&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_CAN_CONVERT_CUSTOMERS_TO_MEMBERS&#039;&#039;&#039; ► Enabled member creation on third-party create card&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_DISABLE_PARENTCOMPANY&#039;&#039;&#039; ► Disables attachment to a parent company.&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_CUSTOMERPROSPECT_BY_DEFAULT&#039;&#039;&#039; ► Set the third party to customer by default&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_SUPPLIER_BY_DEFAULT&#039;&#039;&#039; ► Set the third party to supplier by default&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_CUSTOMERTYPE_BY_DEFAULT&#039;&#039;&#039; ► Set the third party type by default (3 = customer &amp;amp; prospect / 2 = prospect / 1 = customer )&lt;br /&gt;
*&#039;&#039;&#039;CONTACT_DISABLE_PERSONALINFO&#039;&#039;&#039; ► Disable Personal data on contact page&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_DISABLE_WORKFORCE&#039;&#039;&#039; ► Disable work force selector on society page&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_SHOW_VAT_IN_LIST&#039;&#039;&#039; ► display VAT number in combo list of thirdparties ► (V15+)&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_DEFAULT_CREATE_CONTACT&#039;&#039;&#039; ► When set, a contact is created at the creation of an individual third party ► (v14.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SUPPORT_SHARED_CONTACT_BETWEEN_THIRDPARTIES&#039;&#039;&#039; ► Able to share contact between several third parties&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_CUSTOMERCODE_EQUALS_MEMBERREF&#039;&#039;&#039; ► When creating third parties out of members, the customer code is set equal to the member Ref. ► (v22.0)&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_NO_SYNC_LINKED_MEMBER&#039;&#039;&#039; ► If set, changes to a third party will not be synchronized to a linked member. ► (v23.0)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Ticket Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;TICKET_SHOW_MESSAGES_ON_CARD&#039;&#039;&#039; ►Display all ticket related messages on the main ticket card. ► (&amp;gt;= 10.0)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_AUTO_ASSIGN_CONTRACT_CREATE&#039;&#039;&#039; ►Automatically create a contract linked to the ticket ► (&amp;gt;= 10.0)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_AUTO_CREATE_FICHINTER_CREATE&#039;&#039;&#039; ►Automatically create an intervention linked to the ticket ► (&amp;gt;= 10.0)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_AUTO_ASSIGN_USER_CREATE&#039;&#039;&#039; &#039;&#039;&#039;►&#039;&#039;&#039; (&amp;gt;= 21.0) 0=No auto assignement, 1=Auto assign current user if no user was set, 2=Auto assign current user even if another user was set.&lt;br /&gt;
*&#039;&#039;&#039;TICKET_CHECK_NOTIFY_THIRDPARTY_AT_CREATION&#039;&#039;&#039; ►Automatically check &amp;quot;notify thirdparty at creation&amp;quot; ( &amp;gt;=16)&lt;br /&gt;
*&#039;&#039;&#039;TICKETS_MESSAGE_FORCE_MAIL&#039;&#039;&#039; ► Pre check email sending on ticket message (&amp;gt;=15)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_SEND_PRIVATE_EMAIL ►&#039;&#039;&#039; Allow a private message to be sent by mail (&amp;gt;=17)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_LIMIT_VIEW_ASSIGNED_ONLY&#039;&#039;&#039;  &#039;&#039;&#039;►&#039;&#039;&#039; Only display tickets assigned to the user&lt;br /&gt;
*&#039;&#039;&#039;TICKET_ADD_AUTHOR_AS_CONTACT&#039;&#039;&#039; &#039;&#039;&#039;►&#039;&#039;&#039; If set to 1: Automatically adds the author as internal contact. If set to 2: Automatically adds the author as external contact if external user. (&amp;gt;=20)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_ASSIGN_CONTACT_TO_MESSAGE&#039;&#039;&#039; &#039;&#039;&#039;►&#039;&#039;&#039; If known, the external contact is assigned to the message. (&amp;gt;=19)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_ALLOW_CLASSIFICATION_MODIFICATION_EVEN_IF_CLOSED&#039;&#039;&#039; &#039;&#039;&#039;►&#039;&#039;&#039;Allow modify ticket classification even if closed. (&amp;gt;=19)&lt;br /&gt;
*&#039;&#039;&#039;WORKFLOW_TICKET_CLOSE_INTERVENTION&#039;&#039;&#039; ►On ticket close, automatically close an intervention linked to the ticket&lt;br /&gt;
*&#039;&#039;&#039;TICKET_INCLUDE_SUSPENDED_STATUS&#039;&#039;&#039; ► Use ticket suspended status (&amp;gt;=19)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_INCLUDE_LINK_TO_PUBLIC_INTERFACE_IN_MESSAGE&#039;&#039;&#039; ► Add a link in bottom of emails sent from ticket page with link to public ticket admin tool (&amp;gt;=22)&lt;br /&gt;
&lt;br /&gt;
=VAT Report=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_INCLUDE_ZERO_VAT_IN_REPORTS&#039;&#039;&#039; ► Include lines with VAT to 0% (for &amp;quot;auto-liquidation&amp;quot; in EEC) ► (v8.0.3+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Website Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;WEBSITE_USE_WEBSITE_ACCOUNTS&#039;&#039;&#039; ► Add a table and a tab to manage some accounts for websites to a third party&lt;br /&gt;
*&#039;&#039;&#039;WEBSITE_ALLOW_OVERWRITE_GIT_SOURCE&#039;&#039;&#039; ► Add a button to export a website over the GIT sources&lt;br /&gt;
*&#039;&#039;&#039;WEBSITE_ADD_CSS_TO_BODY&#039;&#039;&#039; ► Add a CSS class to the body tag of websites&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=WYSIWYG Editor=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FCKEDITOR_ENABLE_DETAILS_FULL&#039;&#039;&#039; ► Can cut and paste external images (hosted on external server) into description of proposal, orders or invoices. WARNING: PDF generation is not guaranteed with this. Also if the image is removed or renamed by the image hosting service, your proposal, order or invoice will be broken.&lt;br /&gt;
*&#039;&#039;&#039;FCKEDITOR_ALLOW_ANY_CONTENT&#039;&#039;&#039; ► Allow to enter any content. However, this will totally disable content filtering which is one of the most important CKEditor features. You can use this to keep all your tags and attributes in the html content.&lt;br /&gt;
*&#039;&#039;&#039;FCKEDITOR_ENABLE_SCAYT_AUTOSTARTUP&#039;&#039;&#039;  ► Allow to activate the SpellCheckAsYouType (SCAYT) plugins of CKEditor i.e an automatic spell checking. The value to activate this option is 1.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ALLOW_WYSIWYG_LOCAL_MEDIAS_ON_PRIVATE_NETWORK&#039;&#039;&#039;  ► By default, you can add medias links (img src or other) into the rich text content editor, but you can&#039;t add links like that use a local host like &amp;quot;https://localhost/file&amp;quot;. If you set this option to 1, you can.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ALLOW_WYSIWYG_EVEN_ON_UNSECURED_EXTERNAL_HTTP_URL&#039;&#039;&#039;  ► By default, you can add medias links (img src or other) into the rich text content editor, but not if the link is a unsecure &amp;quot;http&amp;quot; url (not https) and your Dolibarr is http. If you set this option to 1, you can.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=STRIPE Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;STRIPE_FORCE_VERSION&#039;&#039;&#039; ► Force the STRIPE version. For Example: &amp;quot;2019-09-09&amp;quot; (v11+)&lt;br /&gt;
*&#039;&#039;&#039;STRIPE_REUSE_EXISTING_INTENT_IF_FOUND&#039;&#039;&#039; ► With this, you will have idempotency key but the payment intention will be reuse and not Generate again (13+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=ClickToDial Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CLICKTODIAL_FORCENEWTARGET&#039;&#039;&#039; ► Open in new page.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=For SaaS / Cloud hosting integrators=&lt;br /&gt;
&lt;br /&gt;
The following options are useless for a common usage of Dolibarr. But they are usefull if you plan to host / provide Dolibarr instances as Software As A Service (SAAS) to your customers.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CRON_DISABLE_KEY_CHANGE&#039;&#039;&#039; ► When you provide an instance to a customer, you probably also add an entry in the cron of this user so Dolibarr batch and scheduler can work correctly. For security purpose, it may have a security key that is inside the command line into the cron entry and this entry must match the value defined into Dolibarr setup (setup of module &#039;Scheduled Jobs&#039;). Because, a customer of a Saas platform will probably have no access to edit the cron file, it is also import that he has no way to edit the key into the Dolibarr setup, so the key in the cron command line will always match the key in Dolibarr setup, and the Dolibarr batches will executed without security errors. To be sure, the customer does not change the value, you can set this constant to 1 into the table [[Table_llx_const]].&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CRON_DISABLE_TUTORIAL_CRON&#039;&#039;&#039; ► Disable the tutorial about how to install the cron script (on a SaaS hosting, this should be done by the web hosting provider)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CRON_WARNING_DELAY_HOURS&#039;&#039;&#039; ► Set this value to the frequency set for the cron script (so a warning will be shown to user to warn it about max frequency of its scheduled jobs)&lt;br /&gt;
 &lt;br /&gt;
*&#039;&#039;&#039;MAILING_NO_USING_PHPMAIL&#039;&#039;&#039; ► To avoid bad use of the emailing module, it is recommended to set this option to 1 (This option is described previously). Also you can complete the message visible by customers when they try to setup the SMTP credentials of their Dolibarr by using the constant MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS (This option is described previously). For example, you can point to a FAQ on your website.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_IN_SAME_EMAIL&#039;&#039;&#039; ► If you have set a system limit on number of recipients on your system, you can set also this option to match the same value, so users will be informed: So &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_IN_SAME_EMAIL&#039;&#039;&#039; restricts sending of 1 email message to &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; recipients for the same email message (x for To: + CC: + BCC:). If not defined, value is &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;. Required to fight against spamming that include a ton of recipients in 1 message. Note that &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_TO_IN_SAME_EMAIL&#039;&#039;&#039;, &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_CC_IN_SAME_EMAIL&#039;&#039;&#039; and &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_BCC_IN_SAME_EMAIL&#039;&#039;&#039; are also available. Note that this is not a hard limit; it is just the quantity that will be displayed on warnings on screen. For a real limit, this must be implemented into the system.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_LIMIT_SENDBYDAY&#039;&#039;&#039; ► This is a limit of number of emails, an instance can send. Note that this is not a hard limit; it is just the quantity that will be displayed on warnings on screen. For a real limit, this must be implemented into the system.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_LIMIT_WARNING_PHPMAIL&#039;&#039;&#039; ► Set this value to a translation key. Then add translation keys into the instance so user will see a message when into the email setup page. For example, you can set a message to say: &#039;&#039;Warning: To avoid abuse, when using default setup, you are restricted to 500 emails per day for all your application (account may be suspended in case of violation of this rule. You can setup application to use your own SMTP server for sending email so you want have no restriction at all (see menu Home-Setup-Emails)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ALWAYS_CREATE_LOCK_AFTER_LAST_UPGRADE&#039;&#039;&#039; ► If set, when you launch upgrades of your customer instances, you are sure that the upgrade process recreate automatically the file install.lock and remove the upgrade.unlock so the administration tools like install.php, upgrade.php and repair.php can&#039;t be used on your customer instance (until the install.lock file is deleted or the upgrade.unlock file is created).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EXTERNAL_SMTP_CLIENT_IP_ADDRESS&#039;&#039;&#039; ► (A better name of this option should be MAIN_EXTERNAL_MAIL_CLIENT_IP_ADDRESS). Set here the list of IPs where your Dolibarr instances are hosted, separated by a comma. So, when your customer go into the Email setup area:&lt;br /&gt;
**If he has chosen mail method, a message will explain him how to setup its SPF record for its email domain (showing the list of IP). This is to avoid to have its emails, sent from its Dolibarr instance, fails due to strict antispam rule of some emailing servers.&lt;br /&gt;
**If he has chosen smtp method, a message will explain him the list of IP he can use if there is restriction on IP by the SMTP agent. If you also need to add a message to help SPF setup, see option &#039;&#039;&#039;MAIN_EXTERNAL_SMTP_SPF_STRING_TO_ADD&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
You can also provide a list of URLs that return just an IP instead of a list of hardcoded IP. So you can for example set 1 url that contact a whoami service that return the public IP of server and another one doing the one on a IPv6 address, so on the setup page, the public IP adress of the server will always be uptodate for both ipv4 and ipv6 (Example: &amp;quot;https://ipv4.server.com/_service_showmyip.php,https://ipv6.server.com/_service_showmyip.php&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EXTERNAL_SMTP_SPF_STRING_TO_ADD&#039;&#039;&#039; ► Set here the string to add in the SPF record This string will be shown into a help message when the user in in the setup of email page and has choose a method using an external SMTP server.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FIRST_PING_OK_ID&#039;&#039;&#039; ► Set this value to &amp;quot;disabled&amp;quot; to remove completely any ping after a complete setup.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FILECHECK_LOCAL_SUFFIX&#039;&#039;&#039; and &#039;&#039;&#039;MAIN_FILECHECK_LOCAL_EXT&#039;&#039;&#039; ► If you offer a customized or patched version of Dolibarr, when the user will use the tool to check the integrity of files, the default xml file name used for signature checking will be the official file provided by the Dolibarr team, so it does not includes your own changes. To have the suggested signature file being your own file, you can set the constant MAIN_FILECHECK_LOCAL_SUFFIX to a suffix. For example, set this to &amp;quot;&#039;&#039;&#039;-mysaassolution&#039;&#039;&#039;&amp;quot;. So, when the user will use the file integrity tool, the default file to check for signature will be &amp;quot;&#039;&#039;&#039;/install/filelist-10.0.2-mysaassolution.xml&#039;&#039;&#039;&amp;quot; instead of &amp;quot;&#039;&#039;&#039;/install/filelist-10.0.2.xml&#039;&#039;&#039;&amp;quot;. All you have to do is generate the signature file &#039;&#039;&#039;mysaassolution&#039;&#039;&#039; using the tool &#039;&#039;&#039;build/generate_filelist_xml.php&#039;&#039;&#039; and put this file into the install directory of your customer instance. Doing this, your customer, and yourself, will be able to check if a file was modified without being disturbed by false alerts due to your customized files or patches (they will be included in the signature used for check). Also, if you want to zip the customized signature file into &amp;quot;&#039;&#039;&#039;/install/filelist-10.0.2-mysaassolution.xml.zip&#039;&#039;&#039;&amp;quot;, you can set the constant MAIN_FILECHECK_LOCAL_EXT to &#039;.zip&#039;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP&#039;&#039;&#039; ► Set to 1 by default (so warning is hidden). You can set it to 0 to show a warning to encourage admin to set its own SMTP service.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_SENDMODE_password&#039;&#039;&#039; ► To force the mode to send the email on the &amp;quot;password forgotten&amp;quot; page. So you can decide to use php mail or SMTP method for this specific use case.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING&#039;&#039;&#039; ► If set to N, the warning saying modules are not activated will be shown if number of activated module is &amp;lt; N (Having this variable not defined is same than having it set to 1). This may be usefull if you preinstall an application with some modules already loaded by default and you want to keep the warning to be sure the user will enable other modules he need, even if some modules are already enabed.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SETUP_MODULES_DESC&#039;&#039;&#039; ► If your installation is already done with activated module, the help message to explain how to enable a module on the setup page is hidden. You can keep it visible by adding this option to 1.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NO_UPGRADE_REDIRECT_ON_LEVEL_3_CHANGE&#039;&#039;&#039; ► The page to make the migration is not shown automatically when you deploy files of version X.Y.Z+delta over an  installation with a database version X.Y.Z. The upgrade page will be shown automatically only if there is a change on value of X or Y in version.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SYSLOG_DISABLE_LOGHANDLER_SYSLOG&#039;&#039;&#039; ► Set this to 1 to disable usage of syslog (having all customer instances logging in the same system file is not a good idea).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;WEBSITE_REPLACE_INFO_ABOUT_USAGE_WITH_WEBSERVER&#039;&#039;&#039; ► Put here a text or a translation key of a text to show when the user will use the feature &amp;quot;Deploy&amp;quot; when he want to deploy a website done with Dolibarr CMS. So you can, for example, show him a message that this feature is not part of its subscription and putting a website online may need a complementary subscription.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Verticaux_Dolibarr&amp;diff=64863</id>
		<title>Verticaux Dolibarr</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Verticaux_Dolibarr&amp;diff=64863"/>
		<updated>2025-11-28T15:44:37Z</updated>

		<summary type="html">&lt;p&gt;Iouston: /* Sciences - Recherche */ mise en page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- BEGIN origin interlang links --&amp;gt;&lt;br /&gt;
&amp;lt;!-- You can edit this section but do NOT remove these comments&lt;br /&gt;
     Links below will be automatically replicated on translated pages by PolyglotBot --&amp;gt;&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
{{TemplateDocDevFr}}&lt;br /&gt;
{{TemplateDocUtil}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;opacitymedium&amp;quot;&amp;gt;Le but de cette page est de recenser les différents solutions &amp;quot;Verticales&amp;quot; (solutions ultra spécialisées couvrant les besoins d&#039;un métier en particulier) et basée sur Dolibarr, que ce soit sous son propre nom ou simplement en tant que module complémentaires.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Médical - Santé=&lt;br /&gt;
==DoliMed==&lt;br /&gt;
DoliMed est un module transformant Dolibarr pour gérer un cabinet médical, à destination du ou des médecins, kiné, infirmières, ...&lt;br /&gt;
&lt;br /&gt;
Site Web: [https://www.dolimed.com DoliMed]&lt;br /&gt;
&lt;br /&gt;
Lien vers le module: https://www.dolistore.com/product.php?id=1764&amp;amp;title=cabinet-medical&lt;br /&gt;
&lt;br /&gt;
=Gestion des risques - Document unique=&lt;br /&gt;
==DiGiRisk==&lt;br /&gt;
Site web: [https://www.digirisk.com/ DigiRisk]&lt;br /&gt;
&lt;br /&gt;
Lien vers lemodule: https://www.dolistore.com/product.php?id=1034&amp;amp;title=digirisk&lt;br /&gt;
&lt;br /&gt;
=Gestion de Garage=&lt;br /&gt;
==Garage==&lt;br /&gt;
Lien vers le module: https://www.dolistore.com/product.php?id=2553&lt;br /&gt;
&lt;br /&gt;
=Gestion de locations immobiliaires=&lt;br /&gt;
==UltimateImmo==&lt;br /&gt;
Module permettant la gestion des biens immobiliers, suivi des locations, ...&lt;br /&gt;
&lt;br /&gt;
Lien vers le module: https://www.dolistore.com/product.php?id=2488&amp;amp;title=ultimateimmo-22-0-0&lt;br /&gt;
&lt;br /&gt;
=Gestion de locations de matériel=&lt;br /&gt;
==DoliRent==&lt;br /&gt;
Module permettant la gestion de location de matériel.&lt;br /&gt;
&lt;br /&gt;
Lien vers le module: https://www.dolistore.com/product.php?id=448&lt;br /&gt;
&lt;br /&gt;
=Agence de location de véhicule=&lt;br /&gt;
==Gestion des véhicules==&lt;br /&gt;
Lien vers le module: https://www.dolistore.com/product.php?id=747&lt;br /&gt;
&lt;br /&gt;
=Centre de formation=&lt;br /&gt;
==AgeFodd==&lt;br /&gt;
Site web: https://solutions.atm-consulting.fr/dolibarr-module/agefodd-gestion-de-formations&lt;br /&gt;
&lt;br /&gt;
Lien vers le module: https://www.dolistore.com/product.php?id=2379&lt;br /&gt;
&lt;br /&gt;
=Sciences - Recherche=&lt;br /&gt;
&lt;br /&gt;
== Signalement tique&amp;lt;span&amp;gt; | Tiquothèque&amp;lt;/span&amp;gt; ==&lt;br /&gt;
Recensement contextualisé des signalement de piqûres de tiques sur les humains et les animaux dans le cadre d&#039;un programme de recherche participative citoyenne, gestion des échantillons de tiques piqueuses dans le cadre de la bio banque pour fournir aux chercheurs le contexte de la piqûre et la tique responsable de la piqûre.&lt;br /&gt;
&lt;br /&gt;
Site web&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: https://www.citique.fr&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Verticaux_Dolibarr&amp;diff=64862</id>
		<title>Verticaux Dolibarr</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Verticaux_Dolibarr&amp;diff=64862"/>
		<updated>2025-11-28T15:43:48Z</updated>

		<summary type="html">&lt;p&gt;Iouston: /* Sciences - Recherche */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- BEGIN origin interlang links --&amp;gt;&lt;br /&gt;
&amp;lt;!-- You can edit this section but do NOT remove these comments&lt;br /&gt;
     Links below will be automatically replicated on translated pages by PolyglotBot --&amp;gt;&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
{{TemplateDocDevFr}}&lt;br /&gt;
{{TemplateDocUtil}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;opacitymedium&amp;quot;&amp;gt;Le but de cette page est de recenser les différents solutions &amp;quot;Verticales&amp;quot; (solutions ultra spécialisées couvrant les besoins d&#039;un métier en particulier) et basée sur Dolibarr, que ce soit sous son propre nom ou simplement en tant que module complémentaires.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Médical - Santé=&lt;br /&gt;
==DoliMed==&lt;br /&gt;
DoliMed est un module transformant Dolibarr pour gérer un cabinet médical, à destination du ou des médecins, kiné, infirmières, ...&lt;br /&gt;
&lt;br /&gt;
Site Web: [https://www.dolimed.com DoliMed]&lt;br /&gt;
&lt;br /&gt;
Lien vers le module: https://www.dolistore.com/product.php?id=1764&amp;amp;title=cabinet-medical&lt;br /&gt;
&lt;br /&gt;
=Gestion des risques - Document unique=&lt;br /&gt;
==DiGiRisk==&lt;br /&gt;
Site web: [https://www.digirisk.com/ DigiRisk]&lt;br /&gt;
&lt;br /&gt;
Lien vers lemodule: https://www.dolistore.com/product.php?id=1034&amp;amp;title=digirisk&lt;br /&gt;
&lt;br /&gt;
=Gestion de Garage=&lt;br /&gt;
==Garage==&lt;br /&gt;
Lien vers le module: https://www.dolistore.com/product.php?id=2553&lt;br /&gt;
&lt;br /&gt;
=Gestion de locations immobiliaires=&lt;br /&gt;
==UltimateImmo==&lt;br /&gt;
Module permettant la gestion des biens immobiliers, suivi des locations, ...&lt;br /&gt;
&lt;br /&gt;
Lien vers le module: https://www.dolistore.com/product.php?id=2488&amp;amp;title=ultimateimmo-22-0-0&lt;br /&gt;
&lt;br /&gt;
=Gestion de locations de matériel=&lt;br /&gt;
==DoliRent==&lt;br /&gt;
Module permettant la gestion de location de matériel.&lt;br /&gt;
&lt;br /&gt;
Lien vers le module: https://www.dolistore.com/product.php?id=448&lt;br /&gt;
&lt;br /&gt;
=Agence de location de véhicule=&lt;br /&gt;
==Gestion des véhicules==&lt;br /&gt;
Lien vers le module: https://www.dolistore.com/product.php?id=747&lt;br /&gt;
&lt;br /&gt;
=Centre de formation=&lt;br /&gt;
==AgeFodd==&lt;br /&gt;
Site web: https://solutions.atm-consulting.fr/dolibarr-module/agefodd-gestion-de-formations&lt;br /&gt;
&lt;br /&gt;
Lien vers le module: https://www.dolistore.com/product.php?id=2379&lt;br /&gt;
&lt;br /&gt;
=Sciences - Recherche=&lt;br /&gt;
Signalement tique&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: Recensement contextualisé des signalement de piqûres de tiques sur les humains et les animaux dans le cadre d&#039;un programme de recherche participative citoyenne, gestion des échantillons de tiques piqueuses dans le cadre de la bio banque pour fournir aux chercheurs le contexte de la piqûre et la tique responsable de la piqûre.&lt;br /&gt;
&lt;br /&gt;
Site web&amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;: https://www.citique.fr /&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Verticaux_Dolibarr&amp;diff=64861</id>
		<title>Verticaux Dolibarr</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Verticaux_Dolibarr&amp;diff=64861"/>
		<updated>2025-11-28T15:43:04Z</updated>

		<summary type="html">&lt;p&gt;Iouston: Ajout de la section science et recherche avec signalement tique / citique&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- BEGIN origin interlang links --&amp;gt;&lt;br /&gt;
&amp;lt;!-- You can edit this section but do NOT remove these comments&lt;br /&gt;
     Links below will be automatically replicated on translated pages by PolyglotBot --&amp;gt;&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
{{TemplateDocDevFr}}&lt;br /&gt;
{{TemplateDocUtil}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;opacitymedium&amp;quot;&amp;gt;Le but de cette page est de recenser les différents solutions &amp;quot;Verticales&amp;quot; (solutions ultra spécialisées couvrant les besoins d&#039;un métier en particulier) et basée sur Dolibarr, que ce soit sous son propre nom ou simplement en tant que module complémentaires.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Médical - Santé=&lt;br /&gt;
==DoliMed==&lt;br /&gt;
DoliMed est un module transformant Dolibarr pour gérer un cabinet médical, à destination du ou des médecins, kiné, infirmières, ...&lt;br /&gt;
&lt;br /&gt;
Site Web: [https://www.dolimed.com DoliMed]&lt;br /&gt;
&lt;br /&gt;
Lien vers le module: https://www.dolistore.com/product.php?id=1764&amp;amp;title=cabinet-medical&lt;br /&gt;
&lt;br /&gt;
=Gestion des risques - Document unique=&lt;br /&gt;
==DiGiRisk==&lt;br /&gt;
Site web: [https://www.digirisk.com/ DigiRisk]&lt;br /&gt;
&lt;br /&gt;
Lien vers lemodule: https://www.dolistore.com/product.php?id=1034&amp;amp;title=digirisk&lt;br /&gt;
&lt;br /&gt;
=Gestion de Garage=&lt;br /&gt;
==Garage==&lt;br /&gt;
Lien vers le module: https://www.dolistore.com/product.php?id=2553&lt;br /&gt;
&lt;br /&gt;
=Gestion de locations immobiliaires=&lt;br /&gt;
==UltimateImmo==&lt;br /&gt;
Module permettant la gestion des biens immobiliers, suivi des locations, ...&lt;br /&gt;
&lt;br /&gt;
Lien vers le module: https://www.dolistore.com/product.php?id=2488&amp;amp;title=ultimateimmo-22-0-0&lt;br /&gt;
&lt;br /&gt;
=Gestion de locations de matériel=&lt;br /&gt;
==DoliRent==&lt;br /&gt;
Module permettant la gestion de location de matériel.&lt;br /&gt;
&lt;br /&gt;
Lien vers le module: https://www.dolistore.com/product.php?id=448&lt;br /&gt;
&lt;br /&gt;
=Agence de location de véhicule=&lt;br /&gt;
==Gestion des véhicules==&lt;br /&gt;
Lien vers le module: https://www.dolistore.com/product.php?id=747&lt;br /&gt;
&lt;br /&gt;
=Centre de formation=&lt;br /&gt;
==AgeFodd==&lt;br /&gt;
Site web: https://solutions.atm-consulting.fr/dolibarr-module/agefodd-gestion-de-formations&lt;br /&gt;
&lt;br /&gt;
Lien vers le module: https://www.dolistore.com/product.php?id=2379&lt;br /&gt;
&lt;br /&gt;
== Sciences - Recherche ==&lt;br /&gt;
Signalement tique : Recensement contextualisé des signalement de piqûres de tiques sur les humains et les animaux dans le cadre d&#039;un programme de recherche participative citoyenne, gestion des échantillons de tiques piqueuses dans le cadre de la bio banque pour fournir aux chercheurs le contexte de la piqûre et la tique responsable de la piqûre.&lt;br /&gt;
&lt;br /&gt;
Site web : https://www.citique.fr /&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Syst%C3%A8me_de_substitution_de_variables&amp;diff=63753</id>
		<title>Système de substitution de variables</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Syst%C3%A8me_de_substitution_de_variables&amp;diff=63753"/>
		<updated>2025-07-17T07:39:13Z</updated>

		<summary type="html">&lt;p&gt;Iouston: add an example for mymodule_completesubstitutionarray() function&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- BEGIN interlang links --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Do NOT edit this section&lt;br /&gt;
     Links below are automatically managed by PolyglotBot&lt;br /&gt;
     You can edit links on the English source page : Variable_substitution_system --&amp;gt;&lt;br /&gt;
[[en:Variable_substitution_system]]&lt;br /&gt;
[[zh:变量替换系统]]&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{TemplateDocUtil}}&lt;br /&gt;
{{TemplateDocDev}}&lt;br /&gt;
&lt;br /&gt;
Les variables de substitutions sont des mots clés qui peuvent être utilisés à de nombreux endroits dans Dolibarr pour être remplacés ultérieurement.&lt;br /&gt;
On s&#039;en sert par exemple dans les modèles d&#039;emails ou de texte de configuration pour qu&#039;un texte soit personnalisé au moment de son affichage ou de son envoi pour les emails.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Variables de substitution disponibles=&lt;br /&gt;
&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Variable&lt;br /&gt;
!Valeur Affichée&lt;br /&gt;
!Note&lt;br /&gt;
!Dolibarr Mini&lt;br /&gt;
|-&lt;br /&gt;
|__USER_SIGNATURE__&lt;br /&gt;
|Ma super signature&lt;br /&gt;
|Signature de l&#039;utilisateur&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__USER_ID__&lt;br /&gt;
|1&lt;br /&gt;
|ID de l&#039;utilisateur&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__USER_LOGIN__&lt;br /&gt;
|doli9&lt;br /&gt;
|Login de l&#039;utilisateur&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__USER_LASTNAME__&lt;br /&gt;
|Admin&lt;br /&gt;
|Nom de l&#039;utilisateur&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__USER_FIRSTNAME__&lt;br /&gt;
|Super&lt;br /&gt;
|Prénom de l&#039;utilisateur&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__USER_FULLNAME__&lt;br /&gt;
|SuperAdmin&lt;br /&gt;
|Nom complet de l&#039;utilisateur&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__USER_SUPERVISOR_ID__&lt;br /&gt;
|1&lt;br /&gt;
|ID du superviseur&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__USER_REMOTE_IP__&lt;br /&gt;
|xxx.xxx.xxx.xxx&lt;br /&gt;
|IP de l&#039;utilisateur&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MYCOMPANY_NAME__&lt;br /&gt;
|Ma petite entreprise&lt;br /&gt;
|Nom de l&#039;entreprise&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MYCOMPANY_EMAIL__&lt;br /&gt;
|contact@monentreprise.fr&lt;br /&gt;
|Adresse email de contact de mon entreprise&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MYCOMPANY_PROFID1__&lt;br /&gt;
|12345678&lt;br /&gt;
|Id. prof. 1 (TIN)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MYCOMPANY_PROFID2__&lt;br /&gt;
|12345678&lt;br /&gt;
|Id. prof. 2 (PAN)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MYCOMPANY_PROFID3__&lt;br /&gt;
|12345678&lt;br /&gt;
|Id. prof. 3 (SRVC TAX)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MYCOMPANY_PROFID4__&lt;br /&gt;
|12345678&lt;br /&gt;
|Id. prof. 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MYCOMPANY_PROFID5__&lt;br /&gt;
|12345678&lt;br /&gt;
|Id. prof. 5&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MYCOMPANY_PROFID6__&lt;br /&gt;
|FR12345678&lt;br /&gt;
|Numéro de TVA&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MYCOMPANY_CAPITAL__&lt;br /&gt;
|10000&lt;br /&gt;
|Capital de mon entreprise&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MYCOMPANY_FULLADDRESS__&lt;br /&gt;
|12 rue laurent 75001 Paris France&lt;br /&gt;
|Adresse complète de mon entreprise&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MYCOMPANY_ADDRESS__&lt;br /&gt;
|12 rue laurent&lt;br /&gt;
|Rue et numéro de rue de mon entreprise&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MYCOMPANY_ZIP__&lt;br /&gt;
|75001&lt;br /&gt;
|Code postale de mon entreprise&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MYCOMPANY_TOWN__&lt;br /&gt;
|Paris&lt;br /&gt;
|Ville de mon entreprise&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MYCOMPANY_COUNTRY__&lt;br /&gt;
|France&lt;br /&gt;
|Pays de mon entreprise&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MYCOMPANY_COUNTRY_ID__&lt;br /&gt;
|1&lt;br /&gt;
|Identifiant du pays de mon entreprise&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MYCOMPANY_CURRENCY_CODE__&lt;br /&gt;
|EUR&lt;br /&gt;
|Devise principale de mon entreprise&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__ID__&lt;br /&gt;
|1&lt;br /&gt;
|ID de l&#039;object&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__REF__&lt;br /&gt;
|1234&lt;br /&gt;
|Référence de l&#039;objet&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__REF_CLIENT__&lt;br /&gt;
|1234&lt;br /&gt;
|Référence client de l&#039;objet&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__REF_SUPPLIER__&lt;br /&gt;
|1234&lt;br /&gt;
|Référence fournisseur de l&#039;objet&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__EXTRAFIELD_XXX__&lt;br /&gt;
|?????&lt;br /&gt;
|Attribut supplémentaire de l&#039;object (XXX doit être remplacé par le code de l&#039;attribut)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__THIRDPARTY_ID__&lt;br /&gt;
|1&lt;br /&gt;
|ID du tiers&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__THIRDPARTY_NAME__&lt;br /&gt;
|MonClient&lt;br /&gt;
|Nom du tiers&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__THIRDPARTY_NAME_ALIAS__&lt;br /&gt;
|MonC&lt;br /&gt;
|Alias du tiers&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__THIRDPARTY_EMAIL__&lt;br /&gt;
|contact@monclient.com&lt;br /&gt;
|Adresse email du tiers&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__CONTACT_NAME_CUSTOMER__&lt;br /&gt;
|civilité prénom nom&lt;br /&gt;
|Genre prénom et nom du contact de type &#039;contact suivi proposition&#039; d&#039;une proposition commerciale&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__PROJECT_ID__&lt;br /&gt;
|1&lt;br /&gt;
|ID du projet de l&#039;objet&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__PROJECT_REF__&lt;br /&gt;
|1234&lt;br /&gt;
|Référence du projet de l&#039;objet&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__PROJECT_NAME__&lt;br /&gt;
|MonProjet&lt;br /&gt;
|Nom du projet de l&#039;objet&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__CONTRACT_HIGHEST_PLANNED_START_DATE__&lt;br /&gt;
|01/01/2020&lt;br /&gt;
|Date la plus tardive prévue pour le démarrage du contrat&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__CONTRACT_HIGHEST_PLANNED_START_DATETIME__&lt;br /&gt;
|1/1/2020 13h&lt;br /&gt;
|Date et heure la plus tardive prévue pour le démarrage du contrat&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__CONTRACT_LOWEST_EXPIRATION_DATE__&lt;br /&gt;
|01/01/2020&lt;br /&gt;
|Date la plus proche pour l&#039;expiration du contrat&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__CONTRACT_LOWEST_EXPIRATION_DATETIME__&lt;br /&gt;
|1/1/2020 13h&lt;br /&gt;
|Date et heure la plus proche pour l&#039;expiration du contrat&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__ONLINE_PAYMENT_URL__&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;https://mondoli.com/payment&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Adresse du paiement en ligne (si applicable)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__ONLINE_PAYMENT_TEXT_AND_URL__&lt;br /&gt;
|Cliquez pour payer&lt;br /&gt;
|Texte et adresse du paiement en ligne (si applicable)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__SECUREKEYPAYMENT__&lt;br /&gt;
|&lt;br /&gt;
|Clé de sécurité pour le paiement (si la clé n&#039;est pas unique par enregistrement)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__SECUREKEYPAYMENT_MEMBER__&lt;br /&gt;
|&lt;br /&gt;
|Clé de sécurité pour le paiement de l&#039;abonnement d&#039;un membre (une clé par membre)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__SECUREKEYPAYMENT_ORDER__&lt;br /&gt;
|&lt;br /&gt;
|Clé de sécurité pour le paiement d&#039;une commande&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__SECUREKEYPAYMENT_INVOICE__&lt;br /&gt;
|&lt;br /&gt;
|Clé de sécurité pour le paiement d&#039;une facture&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__SECUREKEYPAYMENT_CONTRACTLINE__&lt;br /&gt;
|&lt;br /&gt;
|Clé de sécurité pour le paiement d&#039;un contrat&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__DIRECTDOWNLOAD_URL_PROPOSAL__&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;https://mondoli.com/devis.pdf&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|URL de téléchargement direct d&#039;un devis&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__DIRECTDOWNLOAD_URL_ORDER__&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;http://mondoli.com/commande.pdf&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|URL de téléchargement direct d&#039;une commande&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__DIRECTDOWNLOAD_URL_INVOICE__&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;http://mondoli.com/facture.pdf&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|URL de téléchargement direct d&#039;une facture. Pour cela, il faut que le paramètre INVOICE_ALLOW_EXTERNAL_DOWNLOAD soit configuré pour permettre de générer le lien.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__SHIPPINGTRACKNUM__&lt;br /&gt;
|XXXXX&lt;br /&gt;
|Numéro de suivi du colis&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__SHIPPINGTRACKNUMURL__&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;http://trackingcompagny.com/XXXXX&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|URL de suivi du colis&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__DATE_YMD__&lt;br /&gt;
|01/01/2020&lt;br /&gt;
|Date d&#039;aujourd&#039;hui&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__DATE_DUE_YMD__&lt;br /&gt;
|01/01/2020&lt;br /&gt;
|Date d&#039;échéance&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__AMOUNT__ -&amp;gt;&lt;br /&gt;
|1243,34&lt;br /&gt;
|Montant total&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__AMOUNT_EXCL_TAX__ -&amp;gt; __AMOUNT_EXCL_TAX__&lt;br /&gt;
|1234,45&lt;br /&gt;
|Montant total hors taxe&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__AMOUNT_VAT__ -&amp;gt; __AMOUNT_VAT__&lt;br /&gt;
|123,4&lt;br /&gt;
|Montant TVA&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__AMOUNT_FORMATED__&lt;br /&gt;
|1243,34 €&lt;br /&gt;
|Montant total formaté&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__AMOUNT_EXCL_TAX_FORMATED__&lt;br /&gt;
|1234,45 €&lt;br /&gt;
|Montant total hors taxe formaté&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__AMOUNT_VAT_FORMATED__ -&amp;gt; __AMOUNT_VAT_FORMATED__&lt;br /&gt;
|123,4 €&lt;br /&gt;
|Montant TVA formaté&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__DAY__&lt;br /&gt;
|12&lt;br /&gt;
|Jours actuel (chiffre)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__DAY_TEXT__&lt;br /&gt;
|Mardi&lt;br /&gt;
|Jours actuel (texte)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__DAY_TEXT_SHORT__&lt;br /&gt;
|Ma&lt;br /&gt;
|Jours actuel en texte abrégé&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__DAY_TEXT_MIN__&lt;br /&gt;
|M&lt;br /&gt;
|Jours actuel en texte en une lettre&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MONTH__&lt;br /&gt;
|3&lt;br /&gt;
|Mois actuel (chiffre)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MONTH_TEXT__&lt;br /&gt;
|Mars&lt;br /&gt;
|Mois actuel (texte)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MONTH_TEXT_SHORT__&lt;br /&gt;
|Ma.&lt;br /&gt;
|Mois actuel en texte abrégé&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MONTH_TEXT_MIN__&lt;br /&gt;
|M&lt;br /&gt;
|Mois actuel en texte en une lettre&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__YEAR__&lt;br /&gt;
|2020&lt;br /&gt;
|Année actuelle&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__PREVIOUS_DAY__&lt;br /&gt;
|11&lt;br /&gt;
|Hier (chiffre)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__PREVIOUS_MONTH__&lt;br /&gt;
|2&lt;br /&gt;
|Mois précédent (chiffre)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__PREVIOUS_YEAR__&lt;br /&gt;
|2019&lt;br /&gt;
|Année précédente&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__NEXT_DAY__&lt;br /&gt;
|13&lt;br /&gt;
|Demain (chiffre)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__NEXT_MONTH__&lt;br /&gt;
|4&lt;br /&gt;
|Mois prochain&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__NEXT_YEAR__&lt;br /&gt;
|2021&lt;br /&gt;
|Année prochaine&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__DOL_MAIN_URL_ROOT__&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;http://mondolibarr.fr/htdocs&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Adresse de mon dolibarr&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__(Clédetraduction)__&lt;br /&gt;
|Clé traduite&lt;br /&gt;
|N&#039;importe qu&#039;elle clé de traduction&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__[constante]__&lt;br /&gt;
|Valeure de la constante&lt;br /&gt;
|N&#039;importe qu&#039;elle constante&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__DATE_DELIVERY__&lt;br /&gt;
|21/09/1974&lt;br /&gt;
|Date de livraison de la Propal&lt;br /&gt;
|V14&lt;br /&gt;
|-&lt;br /&gt;
|__CONTACT_NAME_XXX__&lt;br /&gt;
|Mr T&lt;br /&gt;
|Civilité/titre prénom et nom du contact&lt;br /&gt;
XXX est le type de contact défini dans Accueil&amp;gt;configuration&amp;gt;dictionnaires&amp;gt;Types de contacts/adresses (par exemple : __CONTACT_NAME_BILLING__ pour le contact client désigné comme responsable de la facturation sur une facture)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__CONTACT_LASTNAME_XXX__&lt;br /&gt;
|Nom patronymique du contact&lt;br /&gt;
|Nom du contact&lt;br /&gt;
&lt;br /&gt;
XXX est le type de contact défini dans Accueil&amp;gt;configuration&amp;gt;dictionnaires&amp;gt;Types de contacts/adresses (par exemple : __CONTACT_NAME_BILLING__ pour le contact client désigné comme responsable de la facturation sur une facture)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__CONTACT_FIRSTNAME_XXX__&lt;br /&gt;
|Prénom du contact&lt;br /&gt;
|Prénom du contact&lt;br /&gt;
&lt;br /&gt;
XXX est le type de contact défini dans Accueil&amp;gt;configuration&amp;gt;dictionnaires&amp;gt;Types de contacts/adresses (par exemple : __CONTACT_NAME_BILLING__ pour le contact client désigné comme responsable de la facturation sur une facture)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__CONTACT_TITLE_XXX__&lt;br /&gt;
|Titre de civilité du contact&lt;br /&gt;
|Titre/civilité du contact&lt;br /&gt;
&lt;br /&gt;
XXX est le type de contact défini dans Accueil&amp;gt;configuration&amp;gt;dictionnaires&amp;gt;Types de contacts/adresses (par exemple : __CONTACT_NAME_BILLING__ pour le contact client désigné comme responsable de la facturation sur une facture)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__UNSUBSCRIBE__&lt;br /&gt;
|&lt;br /&gt;
|Lien de désinscription dans les emailings. Insère le terme &amp;quot;Désinscription&amp;quot; dans l&#039;emailing avec un lien pour enregistrer une désinscription. Le texte peut être modifié via les traductions des clés &lt;br /&gt;
- MailUnsubcribe = la mention de désinscription insérée dans l&#039;email&lt;br /&gt;
&lt;br /&gt;
- YourMailUnsubcribeOK = la mention qui s&#039;affiche sur la page web de confirmation de la désinscription&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__CHECK_READ__&lt;br /&gt;
|&lt;br /&gt;
|Dans les emailings, insère une fonction permettant le comptage des emails lus (en anglais &amp;quot;blank image with a callback URL to Dolibarr (/public/emailing/mailing-read.php?tag=)&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Variables de substitution Personnalisées de modules externes=&lt;br /&gt;
&lt;br /&gt;
Un module peut ajouter ses propres variables de substitutions.&lt;br /&gt;
Pour cela, le module doit embarquer un fichier avec le nom  &#039;&#039;&#039;monmodule/core/substitutions/functions_monmodule.lib.php&#039;&#039;&#039; et en définissant le&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$this-&amp;gt;module_parts[&#039;substitutions&#039;] = 1 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
dans le descripteur de module.&lt;br /&gt;
&lt;br /&gt;
Le fichier &#039;&#039;&#039;functions_monmodule.lib.php&#039;&#039;&#039; doit contenir une fonction nommée&lt;br /&gt;
&lt;br /&gt;
où la variable $substitutionarray[&#039;_NOM_DE_MA_VAR_DE_SUBSTITUTION__&#039;] = &#039;sa valeur&#039;;&lt;br /&gt;
&lt;br /&gt;
ce qui peut donner quelque chose comme :&lt;br /&gt;
 function monmodule_completesubstitutionarray(&amp;amp;$substitutionarray,$outputlangs,$object,$parameters){&lt;br /&gt;
&lt;br /&gt;
  $substitutionarray[&#039;_NOM_DE_MA_VARIABLE_DE_SUBSTITUTION__&#039;] = &#039;sa valeur&#039;;&lt;br /&gt;
&lt;br /&gt;
 return 1;&lt;br /&gt;
&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=D%C3%A9veloppement_module&amp;diff=62589</id>
		<title>Développement module</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=D%C3%A9veloppement_module&amp;diff=62589"/>
		<updated>2025-02-20T08:27:21Z</updated>

		<summary type="html">&lt;p&gt;Iouston: ajout d&amp;#039;un lien vers la page du fichier de conf pour mettre en avant la variable $dolibarr_allow_download_external_modules&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- BEGIN interlang links --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Do NOT edit this section&lt;br /&gt;
     Links below are automatically managed by PolyglotBot&lt;br /&gt;
     You can edit links on the English source page : Module_development --&amp;gt;&lt;br /&gt;
[[en:Module_development]]&lt;br /&gt;
[[es:Desarrollo_de_un_módulo]]&lt;br /&gt;
[[de:Modul_Entwicklung]]&lt;br /&gt;
[[zh:模块开发]]&lt;br /&gt;
[[ja:モジュール_開発]]&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Noyau]]&lt;br /&gt;
{{TemplateDocDev}}&lt;br /&gt;
Pour créer un nouveau module, il existe plusieurs étapes. Ce didacticiel a pour but de vous décrire chacune d&#039;elles afin d&#039;ajouter un module permettant d&#039;étendre les possibilités de Dolibarr, comme par exemple ajouter une ou plusieurs des fonctionnalités suivantes:&lt;br /&gt;
&lt;br /&gt;
*Ajouter de nouvelles tables en base.&lt;br /&gt;
*Ajouter vos propres entrées dans les menus.&lt;br /&gt;
*Ajouter des objets et des écrans de saisie/consultation de nouvelle tables.&lt;br /&gt;
*Ajouter ou supprimer des onglets sur les pages de vues/édition des objets (facture, produit, commande, événement, ...)&lt;br /&gt;
*Ajouter des exports prédéfinis pour la fonction export.&lt;br /&gt;
*Ajouter de nouvelles boites/widgets pour la home page.&lt;br /&gt;
*Ajouter des variables de substitution.&lt;br /&gt;
*Définir de nouvelles permissions.&lt;br /&gt;
*Déclencher du code automatiquement sur une action Dolibarr particulière.&lt;br /&gt;
*Insérer votre code aux emplacements hooks de Dolibarr&lt;br /&gt;
*Ajouter un modèle de numérotation de la référence des objets créés.&lt;br /&gt;
*Ajouter un modèle de document PDF.&lt;br /&gt;
*Ajouter un nouveau thème.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les chapitres suivants vous présentent comment réaliser tout cela en manuel de manière simple.&lt;br /&gt;
&lt;br /&gt;
=[[File:Art.png]] Création de Module avec le générateur de module=&lt;br /&gt;
Depuis Dolibarr 9.0 il est possible de créer les fichiers principaux de votre module avec le &amp;quot;Générateur de module&amp;quot; (aussi appelé &amp;quot;Module Builder&amp;quot;). Pour l&#039;activer :&lt;br /&gt;
&lt;br /&gt;
*Activez le module &amp;quot;Générateur de Module&amp;quot; (ou &amp;quot;Module builder&amp;quot;) dans la section &amp;quot;Outils multi-modules&amp;quot; de Configuration &amp;gt; Modules/Applications&lt;br /&gt;
&lt;br /&gt;
[[File:Mod_builder_2.png|400px]]&lt;br /&gt;
&lt;br /&gt;
*Puis cliquez sur l’icône &amp;quot;bug&amp;quot; qui est apparue dans la barre de menu en haut à droite&lt;br /&gt;
&lt;br /&gt;
[[File:Mod_builder_3.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=[[File:Art.png]] Exemple de modèle de module externe=&lt;br /&gt;
Un bon modèle/squelette de module externe Dolibarr est disponible ici : [https://github.com/Dolibarr/dolibarr/tree/develop/htdocs/modulebuilder/template GitHub Dolibarr Module Modèle]&lt;br /&gt;
&lt;br /&gt;
Vous trouverez aussi un exemple de réalisation de module via un cas pratique : la création d&#039;un module afin de créer un calendrier des commandes fournisseurs : [[Exemple de cas pratique de Module Builder]]&lt;br /&gt;
&lt;br /&gt;
=[[File:Art.png]] Créer un module=&lt;br /&gt;
Les sous chapitres suivant décrivent les actions à faire pour créer un module Dolibarr. Les premiers chapitres sont obligatoires quelle que soit la vocation du module, les suivants dépendront de ce que doit faire le module.&lt;br /&gt;
&lt;br /&gt;
==Créer un descripteur de Module (obligatoire)==&lt;br /&gt;
&#039;&#039;&#039;Quand&#039;&#039;&#039; : Obligatoire dès qu&#039;une extension est développée, quelle que soit sa vocation.&lt;br /&gt;
&#039;&#039;&#039;Depuis Dolibarr 9.0, il est possible de créer le descripteur de votre module avec le &amp;quot;Générateur de module&amp;quot;&#039;&#039;&#039;. Cet outil est encore encours de développement et de maturité mais peut d&#039;ores et déjà être utilisé.&lt;br /&gt;
&lt;br /&gt;
===Créer votre descripteur avec le générateur de module===&lt;br /&gt;
&lt;br /&gt;
*Lancez le générateur de module en cliquant sur l’icône &amp;quot;bug&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[File:Mod_builder_3.png|400px]]&lt;br /&gt;
&lt;br /&gt;
*Entrez le nom de votre module sans espaces (le nom de votre module NE DOIT PAS CONTENIR le caractère underscore ou tiret bas : _) et cliquez sur Créer.&lt;br /&gt;
&lt;br /&gt;
[[File:Mod_builder_4.png|400px]]&lt;br /&gt;
&lt;br /&gt;
*Un module avec ses premiers fichiers a été initialisé. Vous pouvez alors modifier les paramètres du descripteur du module :&lt;br /&gt;
&lt;br /&gt;
[[File:Mod_builder_5.png|400px]]&lt;br /&gt;
&lt;br /&gt;
===Alternative : créer votre descripteur manuellement (sans utiliser le générateur de module)===&lt;br /&gt;
La première étape est donc de créer un fichier de description du module (descripteur). Pour cela:&lt;br /&gt;
&lt;br /&gt;
*Créez le répertoire &#039;&#039;&#039;/htdocs/&#039;&#039;monmodule&#039;&#039;/core/modules&#039;&#039;&#039;. Puis, allez dans le répertoire &#039;&#039;&#039;dev/skeletons&#039;&#039;&#039; et recopiez le fichier modMyModule.class.php dans ce répertoire &#039;&#039;&#039;htdocs/&#039;&#039;monmodule&#039;&#039;/core/modules&#039;&#039;&#039;.&lt;br /&gt;
*Renommez le fichier mod&#039;&#039;&#039;MyModule&#039;&#039;&#039;.class.php en modifiant seulement la partie &#039;&#039;&#039;MyModule&#039;&#039;&#039; (le fichier doit commencer par mod)&lt;br /&gt;
&lt;br /&gt;
Ensuite, modifiez le contenu de ce fichier afin de remplacer :&lt;br /&gt;
&lt;br /&gt;
*les &#039;&#039;modMyModule&#039;&#039; en une valeur qui corresponde à la vocation de votre module. Cette valeur doit toujours commencer par &#039;&amp;lt;nowiki/&amp;gt;&#039;&#039;&#039;mod&#039;&#039;&#039;&#039; et ne contenir que des &#039;&#039;&#039;caractères alphabétiques&#039;&#039;&#039;.&lt;br /&gt;
*$this-&amp;gt;numero = &#039;&#039;100000&#039;&#039; par un numéro de module libre. Pour éviter tout conflit, vous pouvez consulter la page suivante pour retrouver les numéros déjà alloués : [[List of modules id|Liste des id de modules]].&lt;br /&gt;
*Modifier éventuellement les autres variables définies dans le constructeurs (Voir le commentaire dans le code du squelette pour leur signification).&lt;br /&gt;
&lt;br /&gt;
Le descripteur de votre module est alors en place.&lt;br /&gt;
&lt;br /&gt;
===Tester votre descripteur===&lt;br /&gt;
&lt;br /&gt;
Lancez Dolibarr et allez sur la page &#039;&#039;&#039;Configuration-&amp;gt;module&#039;&#039;&#039;, vous devez voir apparaître une nouvelle ligne avec votre nouveau module et la possibilité de l&#039;activer ou non (parcourez tous les onglets de chaque catégories de modules jusqu&#039;à le retrouver).&lt;br /&gt;
C&#039;est la valeur de $this-&amp;gt;special qui détermine dans quel onglet se trouve votre module.&lt;br /&gt;
&lt;br /&gt;
===Nom de module===&lt;br /&gt;
&lt;br /&gt;
Le nom de votre module NE DOIT PAS CONTENIR le caractère underscore ou tiret bas : _&lt;br /&gt;
&lt;br /&gt;
==Arborescence d&#039;un nouveau module==&lt;br /&gt;
Voici l&#039;arborescence à respecter pour l&#039;organisation des fichiers d&#039;un module (cette arborescence sera celle prise d&#039;office si vous générer les fichiers à l&#039;aide de ModuleBuilder).&lt;br /&gt;
&lt;br /&gt;
{{TemplateModuleTreeSimple}}&lt;br /&gt;
&lt;br /&gt;
Un bon modèle/squelette de module externe Dolibarr est disponible ici : [https://github.com/Dolibarr/dolibarr/tree/develop/htdocs/modulebuilder/template GitHub Dolibarr Module Modèle]&lt;br /&gt;
&lt;br /&gt;
==Créer vos tables SQL et les classes PHP DAO (optionnel)==&lt;br /&gt;
&#039;&#039;&#039;Quand&#039;&#039;&#039; : Si votre module a besoin de gérer des données qui lui sont propres&lt;br /&gt;
&lt;br /&gt;
===Créer vos fichiers .sql===&lt;br /&gt;
Si votre module a vocation à gérer des données bien à lui, qui n&#039;existent pas en base dans la version standard de Dolibarr, il est nécessaire de définir des tables SQL pour stocker ces données.&lt;br /&gt;
&lt;br /&gt;
Créer un sous-répertoire &#039;&#039;&#039;sql&#039;&#039;&#039; dans le répertoire de votre module (&#039;&#039;&#039;monmodule/sql&#039;&#039;&#039;) afin d&#039;y placer les scripts sql que vous allez créer (Avec ModuleBuilder cette étape sera réalisée automatiquement suite à la création d&#039;un nouvel Objet depuis l&#039;onglet Objet).&lt;br /&gt;
&lt;br /&gt;
Ensuite, vérifiez dans votre fichier descripteur de module, dans la fonction &#039;&#039;&#039;init&#039;&#039;&#039; que la ligne&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$this-&amp;gt;_load_tables(&#039;/mymodule/sql/&#039;);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
n&#039;est pas commentée.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Règles à respecter:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Ajoutez les fichiers d&#039;ordre de création de vos tables sur le principe de 1 fichier par table, nommé &#039;&#039;&#039;llx_matable.sql&#039;&#039;&#039; (pour la table), accompagné éventuellement du fichier &#039;&#039;&#039;llx_matable.key.sql&#039;&#039;&#039; (pour les index ou clé étrangères). Voir les exemples dans les fichiers existants dans &#039;&#039;&#039;install/mysql/tables&#039;&#039;&#039; pour exemple.&lt;br /&gt;
*Les types et noms recommandés pour les champs SQL sont définis sur la page [[https://wiki.dolibarr.org/index.php/Langages_et_normes#R.C3.A8gles_de_codage_SQL]].&lt;br /&gt;
*Pour ce qui est des commandes permettant d&#039;ajouter/manipuler des données, elles doivent toutes se trouver dans un fichier nommé &#039;&#039;&#039;data.sql&#039;&#039;&#039; situé dans le même répertoire &#039;&#039;&#039;/monmodule/sql/&#039;&#039;&#039;.&lt;br /&gt;
*N&#039;utilisez pas &amp;quot;chaine&amp;quot; mais &#039;chaine&#039; car les guillemets doubles (&amp;quot;) ont une signification particulière en PostGreSQL&lt;br /&gt;
&lt;br /&gt;
Exemple de contenu de fichier data.sql&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 delete from llx_const where name=&#039;MONMODULE_IT_WORKS&#039; and entity=&#039;__ENTITY__&#039;;&lt;br /&gt;
 insert into llx_const (name, value, type, note, visible, entity) values (&#039;MONMODULE_IT_WORKS&#039;,&#039;1&#039;,&#039;chaine&#039;,&#039;A constant for my module&#039;,1,&#039;__ENTITY__&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les ordres SQL des fichiers doivent être opérationnels pour la base de données &#039;&#039;&#039;mysql&#039;&#039;&#039;.&lt;br /&gt;
Rem: Les fichiers des autres types de bases ne sont pas à maintenir. Ils sont lus et convertis à la volée par le driver de la base de données.&lt;br /&gt;
&lt;br /&gt;
===Tester vos fichiers .sql===&lt;br /&gt;
&lt;br /&gt;
Une fois les fichiers prêts, vous pouvez retourner dans l&#039;écran de gestion des modules de Dolibarr puis désactiver le module, dropper les tables en base (si elles existent déjà) et réactiver le module.&lt;br /&gt;
Les tables doivent alors être recréées par l&#039;activation du module.&lt;br /&gt;
Si tel n&#039;est pas le cas, vérifiez vos scripts en les passant à la main, ou consultez les logs Dolibarr.&lt;br /&gt;
&lt;br /&gt;
===Générer la classe PHP DAO d&#039;accès aux tables===&lt;br /&gt;
&lt;br /&gt;
Le fichier de classe DAO PHP d&#039;un object est généré automatiquement avec ModuleBuilder lors de la création d&#039;un Object.&lt;br /&gt;
&lt;br /&gt;
À défaut d&#039;utiliser le générateur de module, vous trouverez des exemples dans le squelette de module, fichier &#039;&#039;&#039;htdocs/modulebuilder/templates/class/myobject.class.php&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Dans cette classe, se trouvent des méthodes CRUD (Create/Read/Update/Delete) déjà opérationnelles pour faire un insert, un fetch (select), un update, un delete d&#039;une ligne de la table. Éditer le fichier pour utiliser le bon nom de module, de tables et placer ce fichier dans le sous-répertoire de &#039;&#039;&#039;class&#039;&#039;&#039; du module. Le Module Builder permet de faire cela en quelques clics de souris.&lt;br /&gt;
&lt;br /&gt;
==Affichage des onglets (optionnel)==&lt;br /&gt;
&lt;br /&gt;
===Ajouter ou supprimer des onglets sur les fiches objets===&lt;br /&gt;
&#039;&#039;&#039;Quand&#039;&#039;&#039; : Pour ajouter votre propre onglet parmi les onglets d&#039;un object standard (facture, commande, proposition commercial, adhérent...)&lt;br /&gt;
&lt;br /&gt;
Pour cela, allez dans le fichier descripteur de module précédemment créé et modifiez le tableau $this-&amp;gt;tabs:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
	// Array to add new pages in new tabs or remove existing one&lt;br /&gt;
	$this-&amp;gt;tabs = array(&#039;objecttype:+tabname1:Title1:mylangfile@monmodule:$user-&amp;gt;rights-&amp;gt;monmodule-&amp;gt;read:/monmodule/mapagetab1.php?id=__ID__&#039;    // To add a new tab identified by code tabname1&lt;br /&gt;
                            &#039;objecttype:+tabname2:Title2:mylangfile@monmodule:$user-&amp;gt;rights-&amp;gt;monmodule-&amp;gt;read:/monmodule/mapagetab2.php?id=__ID__&#039;,   // To add a new tab identified by code tabname2&lt;br /&gt;
                            &#039;objecttype:-tabname&#039;);                                                     // To remove an existing tab identified by code tabname&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le tableau doit contenir une liste de chaîne, chaque chaîne représentant un nouvel onglet.&lt;br /&gt;
Le format de la chaîne étant composé de 6 parties séparées par &amp;quot;:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*Partie 1 : le type d&#039;élément (objecttype) dans lequel doit apparaître l&#039;onglet qui est une valeur parmi celle-ci:&lt;br /&gt;
{{TemplateModuleTabs-fr}}&lt;br /&gt;
&lt;br /&gt;
*Partie 2 : nom de code pour l&#039;onglet à ajouter (commence par +) ou à enlever (commence par -)&lt;br /&gt;
*Partie 3 : le titre de l&#039;onglet. Cela peut être un libellé en dur ou mieux un code traduction présent dans un fichier lang.&lt;br /&gt;
*Partie 4 : le nom du fichier .lang (sans l&#039;extension .lang) qui contient la correspondance entre le code traduction et le libellé à afficher. Si ce com est suivi de @monmodule, Dolibarr cherche le fichier dans le répertoire lang propre au module, c&#039;est à dire htdocs/monmodule/langs/code_CODE/monmodule.lang, sinon Dolibarr cherche le fichier traduction dans htdocs/langs/code_CODE/mylangfile.lang&lt;br /&gt;
*Partie 5 : une condition à tester pour savoir si l&#039;onglet doit être visible ou pas. Mettre &#039;1&#039; pour qu&#039;il soit toujours visible.&lt;br /&gt;
*Partie 6 : l&#039;url de la page à afficher quand on clique sur l&#039;onglet. La chaine __ID__ sera remplacée automatiquement par l&#039;Id de l&#039;entité concernée.&lt;br /&gt;
&lt;br /&gt;
Pour que la déclaration soit effective, il faut désactiver et réactiver le module.&lt;br /&gt;
&lt;br /&gt;
Pour alimenter le contenu de l&#039;onglet avec des données issues de la base, voir le chapitre suivant.&lt;br /&gt;
&lt;br /&gt;
===Ajouter les onglets standard d&#039;un objet sur sa propre page d&#039;onglet===&lt;br /&gt;
&#039;&#039;&#039;Quand&#039;&#039;&#039; : Pour afficher les onglets existant d&#039;un objet standard (produit, tiers, etc.) sur votre nouvelle page onglet.&lt;br /&gt;
&lt;br /&gt;
Il faut appliquer la procédure suivante :&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Inclure les fichiers définissant les fonctions utiles dans vos fichiers&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Pour chaque fiche entité, il y a deux fichiers à inclure avec l&#039;instruction&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;require_once($url_fichier) ;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voici quelques exemples de fichiers à inclure (DOL_DOCUMENT_ROOT correspond au dossier dolibarr/htdocs/) :&lt;br /&gt;
&lt;br /&gt;
*Entité tiers (thirdparty) :&lt;br /&gt;
**DOL_DOCUMENT_ROOT/societe/class/societe.class.php&lt;br /&gt;
**DOL_DOCUMENT_ROOT/core/lib/company.lib.php&lt;br /&gt;
*Entité produit (product) :&lt;br /&gt;
**DOL_DOCUMENT_ROOT/product/class/product.class.php&lt;br /&gt;
**DOL_DOCUMENT_ROOT/core/lib/product.lib.php&lt;br /&gt;
*Entité facture (invoice) :&lt;br /&gt;
**DOL_DOCUMENT_ROOT/compta/facture/facture.class.php&lt;br /&gt;
**DOL_DOCUMENT_ROOT/core/lib/invoice.lib.php&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Créer et charger l&#039;objet à afficher dans votre onglet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Créez l&#039;objet de la classe voulue, et récupérez les données de l&#039;objet à partir de la base de données. Pour cela il faut utiliser les fonctions fetch() de la classe correspondante, en passant en paramètre l&#039;identifiant de l&#039;objet que vous récupérez depuis l&#039;url (ex : /mononglet.php?id=1).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Exemple :&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$id=GETPOST(&#039;id&#039;,&#039;int&#039;);&lt;br /&gt;
$ref=GETPOST(&#039;ref&#039;,&#039;alpha&#039;);&lt;br /&gt;
$product = new Product($db) ;&lt;br /&gt;
$result = $product-&amp;gt;fetch($id, $ref) ; //Tester $result pour vérifier que l&#039;accès à la base s&#039;est bien passée&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Récupérer la liste des onglets correspondant à l&#039;entité choisie&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Utilisez la fonction XXX_prepare_head($obj), ou XXX est le nom de l&#039;entité, permettant de créer un tableau contenant les définitions des onglets à afficher. Le paramètre à passer est l&#039;objet pour lequel vous voulez afficher les onglets.&lt;br /&gt;
&lt;br /&gt;
Le tableau retourné est composé de la façon suivante :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$head        // Tableau des onglets&lt;br /&gt;
$head[$h]    // Élément décrivant un onglet. Il y aura autant de $h que d&#039;onglets à afficher&lt;br /&gt;
$head[$h][0] // Url de la page affichée quand on clique sur l&#039;onglet&lt;br /&gt;
$head[$h][1] // Titre de l’onglet&lt;br /&gt;
$head[$h][2] // Code de l&#039;onglet, à utiliser pour choisir quel onglet sera &#039;actif&#039; (voir paragraphe suivant)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Exemple :&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$head = product_prepare_head($product, $user) ; //le paramètre $user n&#039;est pas présent sur certaines fonctions&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Afficher les onglets sur votre page onglet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Utilisez la fonction dol_fiche_head() qui affiche les onglets contenus dans le tableau $head retourné par XX_prepare_head().&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
dol_fiche_head($links, $active=&#039;0&#039;, $title=&#039;&#039;, $notab=0, $picto=&#039;&#039;)&lt;br /&gt;
//$links  // Tableau des onglets, appelé $head plus haut.&lt;br /&gt;
//$active // Onglet actif (mettre le nom de l&#039;onglet défini dans votre fichier de module, ou un nom contenu dans $head[$h][2]). Cet onglet sera mis en surbrillance&lt;br /&gt;
//$title  // ?&lt;br /&gt;
//$notab  // Mettre ce paramètre à 1 permet de ne pas afficher de zone bleue en dessous des onglets.&lt;br /&gt;
//$picto  // Nom de l&#039;image à utiliser au début de la barre des onglet. Les choix suivant sont possibles :&lt;br /&gt;
//            product&lt;br /&gt;
//            service&lt;br /&gt;
//            company&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette fonction affiche les onglets voulus et ouvre un élément &#039;&#039;&amp;lt; div class=&amp;quot;&amp;quot; &amp;gt;&#039;&#039; qui correspond à la zone bleue sous les onglets (si paramètre $notab = 0). Pour fermer la zone bleue, il suffit de fermer l&#039;élément &#039;&#039;&amp;lt; /div &amp;gt;&#039;&#039; dans le code PHP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Remarque&#039;&#039; :&lt;br /&gt;
Pour plus de détail, se référer à la [http://www.dolibarr.fr/doxygen/ documentation Doxygen] ou directement au code de Dolibarr.&lt;br /&gt;
&lt;br /&gt;
==Créer vos pages écran PHP (optionnel)==&lt;br /&gt;
&#039;&#039;&#039;Quand&#039;&#039;&#039; : Si l&#039;objet de votre module est d&#039;ajouter des fonctionnalités qui nécessitent de nouveaux écrans.&lt;br /&gt;
&lt;br /&gt;
===Créer une page écran PHP brute===&lt;br /&gt;
Vous pouvez ensuite créer vos pages PHP, qui se basent sur les données de vos tables, en utilisant les squelettes fournis comme exemple dans le répertoire &#039;&#039;&#039;modulebuilder&#039;&#039;&#039; (Pour le développement d&#039;un script en ligne de commande, voir [[Développement de scripts]]). La encore, si vous avez utilisez ModuleBuilder, des cas de pages (liste, page de création, onglet notes, etc...) auront été créés automatiquement lors de l&#039;initialisation de l&#039;objet.&lt;br /&gt;
&lt;br /&gt;
Pour créer une nouvelle page écran utilisateur, créez un sous-répertoire de &#039;&#039;&#039;htdocs&#039;&#039;&#039; (si non déjà fait) propre à votre module (Dans &#039;&#039;&#039;htdocs/monmodule&#039;&#039;&#039; par exemple) afin d&#039;y placer les pages que vous allez créer.&lt;br /&gt;
&lt;br /&gt;
Y recopier le fichier &#039;&#039;&#039;myobject_page.php&#039;&#039;&#039; qui va servir de point de départ.&lt;br /&gt;
Modifiez le fichier afin que le main.inc.php soit trouvé&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Load Dolibarr environment&lt;br /&gt;
$res=0;&lt;br /&gt;
// Try main.inc.php into web root known defined into CONTEXT_DOCUMENT_ROOT (not always defined)&lt;br /&gt;
if (! $res &amp;amp;&amp;amp; ! empty($_SERVER[&amp;quot;CONTEXT_DOCUMENT_ROOT&amp;quot;])) $res=@include($_SERVER[&amp;quot;CONTEXT_DOCUMENT_ROOT&amp;quot;].&amp;quot;/main.inc.php&amp;quot;);&lt;br /&gt;
// Try main.inc.php into web root detected using web root calculated from SCRIPT_FILENAME&lt;br /&gt;
$tmp=empty($_SERVER[&#039;SCRIPT_FILENAME&#039;])?&#039;&#039;:$_SERVER[&#039;SCRIPT_FILENAME&#039;];$tmp2=realpath(__FILE__); $i=strlen($tmp)-1; $j=strlen($tmp2)-1;&lt;br /&gt;
while($i &amp;gt; 0 &amp;amp;&amp;amp; $j &amp;gt; 0 &amp;amp;&amp;amp; isset($tmp[$i]) &amp;amp;&amp;amp; isset($tmp2[$j]) &amp;amp;&amp;amp; $tmp[$i]==$tmp2[$j]) { $i--; $j--; }&lt;br /&gt;
if (! $res &amp;amp;&amp;amp; $i &amp;gt; 0 &amp;amp;&amp;amp; file_exists(substr($tmp, 0, ($i+1)).&amp;quot;/main.inc.php&amp;quot;)) $res=@include(substr($tmp, 0, ($i+1)).&amp;quot;/main.inc.php&amp;quot;);&lt;br /&gt;
if (! $res &amp;amp;&amp;amp; $i &amp;gt; 0 &amp;amp;&amp;amp; file_exists(dirname(substr($tmp, 0, ($i+1))).&amp;quot;/main.inc.php&amp;quot;)) $res=@include(dirname(substr($tmp, 0, ($i+1))).&amp;quot;/main.inc.php&amp;quot;);&lt;br /&gt;
// Try main.inc.php using relative path&lt;br /&gt;
if (! $res &amp;amp;&amp;amp; file_exists(&amp;quot;../main.inc.php&amp;quot;)) $res=@include(&amp;quot;../main.inc.php&amp;quot;);&lt;br /&gt;
if (! $res &amp;amp;&amp;amp; file_exists(&amp;quot;../../main.inc.php&amp;quot;)) $res=@include(&amp;quot;../../main.inc.php&amp;quot;);&lt;br /&gt;
if (! $res &amp;amp;&amp;amp; file_exists(&amp;quot;../../../main.inc.php&amp;quot;)) $res=@include(&amp;quot;../../../main.inc.php&amp;quot;);&lt;br /&gt;
if (! $res) die(&amp;quot;Include of main fails&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Comme vous pouvez le constater, plusieurs tentatives de chargement du fichier main.inc.php (ou master.inc.php) ont été tentées. Le but est de réussir dans le plus grand nombre de cas possibles. Le minimum est de 2 lignes: une pour essayer de charger le fichier master / main.inc.php dans le répertoire racine de dolibarr et une autre pour essayer de charger le fichier afin de prendre en charge le cas où le module est déployé dans le répertoire &amp;quot;custom&amp;quot;. Mais vous pouvez avoir à gérer plus de situations. L&#039;exemple fourni devrait pouvoir charger le fichier main / master.inc.php dans presque toutes les situations / configurations.&lt;br /&gt;
&lt;br /&gt;
Notez que vous pouvez ajouter plus &amp;quot;../&amp;quot; en fonction de la profondeur du fichier par rapport à l&#039;arborescence de votre module.&lt;br /&gt;
&lt;br /&gt;
C&#039;est dans le main qu&#039;est chargé l&#039;environnement technique ainsi que les habilitations. Les variables objets suivantes sont alors positionnées:&lt;br /&gt;
&lt;br /&gt;
*$user    L&#039;objet qui contient les caractéristiques de l&#039;utilisateur + ses droits.&lt;br /&gt;
*$conf    L&#039;objet qui contient la configuration de Dolibarr.&lt;br /&gt;
*$db      L&#039;objet qui contient le handler de connexion à la base de données.&lt;br /&gt;
*$langs   L&#039;objet qui contient la langue de l&#039;utilisateur.&lt;br /&gt;
&lt;br /&gt;
*L&#039;inclusion d&#039;une classe ou librairie dédiée au module, sans savoir d&#039;où le fichier sera appelé, se fait en utilisant une fonction de Dolibarr (et non en utilisant directement le include_once)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Exemple :&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
dol_include_once(&#039;/monmodule/class/maclasse.class.php&#039;, &#039;MaClasse&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*L&#039;appel des classes fournies en standard avec Dolibarr se fera par contre par le require_once directe avec la syntaxe suivante:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Exemple :&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
require_once DOL_DOCUMENT_ROOT.&#039;/core/class/doli.class.php&#039;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
La raison est que si le dol_include_once est pratique car il scanne chaque répertoire de chemin alternatif pour trouver le fichier, il est aussi moins performant car génère des accès et recherches disque à chaque appel (en effet, PHP intègre un cache des fichiers lus mais n&#039;intègre pas un cache des fichiers &amp;quot;non trouvés&amp;quot;. Et comme un fichier donné n&#039;est que dans une seule arborescence, il y a toujours une arborescence alternative où il ne se trouve pas et qui génère des accès superflus au disque dur, pénalisant en terme de performance. Comme pour les fichiers internes à Dolibarr, on connait toujours le chemin exacte, le require_once avec ce chemin direct doit être préféré).&lt;br /&gt;
&lt;br /&gt;
===Accès à la base===&lt;br /&gt;
Si vous avez besoin de réaliser des modifications en base dans votre propre table ajoutée, utilisez la classe générée plus haut qui contient les méthodes pour cela.&lt;br /&gt;
&lt;br /&gt;
Si toutefois vous voulez faire des accès dans des tables sans objet PHP dédié, ceci reste possible (par exemple pour récupérer une liste d&#039;enregistrement). Dans ce cas, pensez à suivre ces exemples:&lt;br /&gt;
&lt;br /&gt;
Pour un insert, update ou delete :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db-&amp;gt;begin();   // Debut transaction&lt;br /&gt;
$db-&amp;gt;query(&amp;quot;Ma requete insert, update ou delete&amp;quot;);&lt;br /&gt;
$db-&amp;gt;commit();       // Valide&lt;br /&gt;
ou $db-&amp;gt;rollback()  // Annule&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour une lecture :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$resql=$db-&amp;gt;query(&amp;quot;Ma requete select&amp;quot;);&lt;br /&gt;
if ($resql)&lt;br /&gt;
{&lt;br /&gt;
	$num = $db-&amp;gt;num_rows($resql);&lt;br /&gt;
	$i = 0;&lt;br /&gt;
	if ($num)&lt;br /&gt;
	{&lt;br /&gt;
		while ($i &amp;lt; $num)&lt;br /&gt;
		{&lt;br /&gt;
			$obj = $db-&amp;gt;fetch_object($resql);&lt;br /&gt;
			if ($obj)&lt;br /&gt;
			{&lt;br /&gt;
				// You can use here results&lt;br /&gt;
				print $obj-&amp;gt;field1;&lt;br /&gt;
				print $obj-&amp;gt;field2;&lt;br /&gt;
			}&lt;br /&gt;
			$i++;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Définition du style===&lt;br /&gt;
Pour que le look de la page soit aligné avec le thème Dolibarr, il est nécessaire d&#039;utiliser les styles des CSS de Dolibarr.&lt;br /&gt;
&lt;br /&gt;
Par exemple :&lt;br /&gt;
&lt;br /&gt;
*class=&amp;quot;&#039;&#039;&#039;liste_titre&#039;&#039;&#039;&amp;quot; sur les balises &#039;&#039;tr&#039;&#039; et &#039;&#039;td&#039;&#039; pour une ligne de titre de tableau.&lt;br /&gt;
*class=&amp;quot;&#039;&#039;&#039;pair&#039;&#039;&#039;&amp;quot; ou class=&amp;quot;&#039;&#039;&#039;impair&#039;&#039;&#039;&amp;quot; sur les balises &#039;&#039;tr&#039;&#039; et &#039;&#039;td&#039;&#039; des lignes de données de tableau.&lt;br /&gt;
*class=&amp;quot;&#039;&#039;&#039;flat&#039;&#039;&#039;&amp;quot; sur tous les champs de saisie (&#039;&#039;input, select, textarea&#039;&#039;...).&lt;br /&gt;
*class=&amp;quot;&#039;&#039;&#039;button&#039;&#039;&#039;&amp;quot; sur les objets de type &#039;&#039;input type=&amp;quot;submit&amp;quot;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Utilisez le sélecteur de date de Dolibarr===&lt;br /&gt;
Si vous le désirez, vous pouvez profiter du sélecteur de date dans des écrans Dolibarr. Pour cela, utilisez la ligne suivante:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$form=new Form($db);&lt;br /&gt;
$form-&amp;gt;select_date(&#039;&#039;,&#039;mykey&#039;,0,0,0,&amp;quot;myform&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
La chaîne mykey identifie la zone date. Il faut y mettre une valeur différente s&#039;il y a plusieurs zones.&lt;br /&gt;
La chaine myform est le nom de la zone FORM (dans form name=&amp;quot;myform&amp;quot; de la page HTML).&lt;br /&gt;
L&#039;affichage d&#039;un sélecteur de date doit donc être intégré dans une zone FORM Html.&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur, à l&#039;issu du POST, la commande est:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$mydate = dol_mktime(12, 0 , 0, GETPOST(&#039;mykeymonth&#039;, &#039;int&#039;), GETPOST(&#039;mykeyday&#039;, &#039;int&#039;), GETPOST(&#039;mykeyyear&#039;, &#039;int&#039;));&lt;br /&gt;
print strftime(&#039;%A %d %B %Y&#039;, $mydate);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Définir votre page de configuration (optionnel)==&lt;br /&gt;
&#039;&#039;&#039;Quand&#039;&#039;&#039; : si votre module offre plusieurs options paramétrables.&lt;br /&gt;
&lt;br /&gt;
===Créez votre page d&#039;édition de configuration===&lt;br /&gt;
Si votre module offre plusieurs options paramétrables, il est nécessaire de créer une page PHP pour éditer les options (qui sont stockées dans la [[Table llx_const|table &#039;&#039;&#039;llx_const&#039;&#039;&#039;]]).&lt;br /&gt;
Créez une page PHP nommée &#039;&#039;&#039;monmodule_setupapage.php&#039;&#039;&#039; qui affiche les options possibles et les met à jour.&lt;br /&gt;
Il est nécessaire de prendre exemple sur une page dans &#039;&#039;&#039;/admin&#039;&#039;&#039; qui vous montre la méthode pour lire ou sauvegarder en base votre option.&lt;br /&gt;
Placez cette page de configuration dans le répertoire &#039;&#039;&#039;/admin&#039;&#039;&#039; également.&lt;br /&gt;
Ensuite dans le descripteur de module, modifiez la variable pour indiquer le nom de cette page PHP (sans le chemin qui n&#039;est pas nécessaire, la page étant forcément dans le rep admin).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$this-&amp;gt;config_page_url = array(&amp;quot;setup.php@mymodule&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Testez votre page===&lt;br /&gt;
Allez sur la page &#039;&#039;&#039;Configuration-&amp;gt;module&#039;&#039;&#039;, vous devez voir apparaître une icône qui permet d&#039;accéder à la page de configuration et vous devez être capable de modifier ces options et les voir conservées en base.&lt;br /&gt;
&lt;br /&gt;
==Définir vos entrées de menu (optionnel)==&lt;br /&gt;
&#039;&#039;&#039;Quand&#039;&#039;&#039; : si vous avez créé des pages PHP, il est nécessaire que ces écrans soient accessibles depuis le menu Dolibarr.&lt;br /&gt;
&lt;br /&gt;
===Définissez vos entrées menus===&lt;br /&gt;
Pour cela, il vous faut définir dans le fichier descripteur de module, le tableau this-&amp;gt;menu qui déclare les menus.&lt;br /&gt;
Ce tableau contient toutes les entrées qui apparaîtront dans les menus une fois le module activé.&lt;br /&gt;
Le fichier de descripteur de module exemple &#039;&#039;&#039;modMonModule.class.php&#039;&#039;&#039; possède un exemple de déclaration de menu haut ainsi que de ses entrées menu gauche associées.&lt;br /&gt;
&lt;br /&gt;
Voici un exemple de déclaration d&#039;entrées de menu dans le fichier descripteur:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Main menu entries&lt;br /&gt;
$this-&amp;gt;menu = array();			// List of menus to add&lt;br /&gt;
$r=0;&lt;br /&gt;
&lt;br /&gt;
// Add here entries to declare new menus&lt;br /&gt;
// Example to declare the Top Menu entry:&lt;br /&gt;
$this-&amp;gt;menu[$r]=array(	&#039;fk_menu&#039;=&amp;gt;0,			// Put 0 if this is a top menu&lt;br /&gt;
			&#039;type&#039;=&amp;gt;&#039;top&#039;,			// This is a Top menu entry&lt;br /&gt;
			&#039;titre&#039;=&amp;gt;&#039;MonModule top menu&#039;,&lt;br /&gt;
			&#039;mainmenu&#039;=&amp;gt;&#039;monmodule&#039;,&lt;br /&gt;
			&#039;leftmenu&#039;=&amp;gt;&#039;monmodule&#039;,&lt;br /&gt;
			&#039;url&#039;=&amp;gt;&#039;/monmodule/pagetop.php&#039;,&lt;br /&gt;
			&#039;langs&#039;=&amp;gt;&#039;mylangfile&#039;,	// Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.&lt;br /&gt;
			&#039;position&#039;=&amp;gt;100,&lt;br /&gt;
			&#039;enabled&#039;=&amp;gt;&#039;1&#039;,			// Define condition to show or hide menu entry. Use &#039;$conf-&amp;gt;monmodule-&amp;gt;enabled&#039; if entry must be visible if module is enabled.&lt;br /&gt;
			&#039;perms&#039;=&amp;gt;&#039;1&#039;,			// Use &#039;perms&#039;=&amp;gt;&#039;$user-&amp;gt;rights-&amp;gt;monmodule-&amp;gt;level1-&amp;gt;level2&#039; if you want your menu with a permission rules&lt;br /&gt;
			&#039;target&#039;=&amp;gt;&#039;&#039;,&lt;br /&gt;
			&#039;user&#039;=&amp;gt;2);				// 0=Menu for internal users, 1=external users, 2=both&lt;br /&gt;
$r++;&lt;br /&gt;
&lt;br /&gt;
// Example to declare a Left Menu entry:&lt;br /&gt;
$this-&amp;gt;menu[$r]=array(	&#039;fk_menu&#039;=&amp;gt;&#039;fk_mainmenu=xxx&#039;,	// Use &#039;fk_mainmenu=xxx&#039; or &#039;fk_mainmenu=xxx,fk_leftmenu=yyy&#039; where xxx is mainmenucode and yyy is a leftmenucode of parent menu&lt;br /&gt;
			&#039;type&#039;=&amp;gt;&#039;left&#039;,			// This is a Left menu entry&lt;br /&gt;
			&#039;titre&#039;=&amp;gt;&#039;MonModule left menu 1&#039;,&lt;br /&gt;
			&#039;mainmenu&#039;=&amp;gt;&#039;xxx&#039;,&lt;br /&gt;
                        &#039;leftmenu&#039;=&amp;gt;&#039;yyy&#039;,&lt;br /&gt;
			&#039;url&#039;=&amp;gt;&#039;/monmodule/pagelevel1.php&#039;,&lt;br /&gt;
			&#039;langs&#039;=&amp;gt;&#039;mylangfile&#039;,	// Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.&lt;br /&gt;
			&#039;position&#039;=&amp;gt;100,&lt;br /&gt;
			&#039;enabled&#039;=&amp;gt;&#039;1&#039;,			// Define condition to show or hide menu entry. Use &#039;$conf-&amp;gt;monmodule-&amp;gt;enabled&#039; if entry must be visible if module is enabled.&lt;br /&gt;
			&#039;perms&#039;=&amp;gt;&#039;1&#039;,			// Use &#039;perms&#039;=&amp;gt;&#039;$user-&amp;gt;rights-&amp;gt;monmodule-&amp;gt;level1-&amp;gt;level2&#039; if you want your menu with a permission rules&lt;br /&gt;
			&#039;target&#039;=&amp;gt;&#039;&#039;,&lt;br /&gt;
			&#039;user&#039;=&amp;gt;2);				// 0=Menu for internal users,1=external users, 2=both&lt;br /&gt;
$r++;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour conditionner l&#039;accès au menu selon des permission, modifier la propriété &#039;&#039;&#039;perms&#039;&#039;&#039; du tableau. Voir le chapitre sur les permissions un peu plus loin pour savoir comment ajouter des permissions.&lt;br /&gt;
&lt;br /&gt;
===Testez vos entrées menus===&lt;br /&gt;
Désactiver et réactiver votre module sous Dolibarr, les entrées menus doivent alors apparaître (si la condition dans &#039;enabled&#039; est vraie).&lt;br /&gt;
&lt;br /&gt;
==Définir vos propres permissions (optionnel)==&lt;br /&gt;
&#039;&#039;&#039;Quand&#039;&#039;&#039; : Si vous voulez ajouter de nouvelles permissions.&lt;br /&gt;
&lt;br /&gt;
La définition des permissions que gérera votre module se fait dans le fichier descripteur créé dans la première étape.&lt;br /&gt;
Modifier la ligne &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$this-&amp;gt;rights_class = &#039;monmodule&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
pour y mettre la bonne valeur de monmodule.&lt;br /&gt;
&lt;br /&gt;
Ensuite remplissez le tableau $this-&amp;gt;rights avec autant d&#039;entrées que de permissions différentes à gérer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$this-&amp;gt;rights[$r][0] = 10001;&lt;br /&gt;
$this-&amp;gt;rights[$r][1] = &#039;Libelle par défaut de ma permission&#039;;&lt;br /&gt;
$this-&amp;gt;rights[$r][3] = 1;&lt;br /&gt;
$this-&amp;gt;rights[$r][4] = &#039;action&#039;;&lt;br /&gt;
$this-&amp;gt;rights[$r][5] = &#039;sousaction&#039;;&lt;br /&gt;
$r++;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans $this-&amp;gt;rights[$r][0], mettre un id de permission non déjà pris (Voir dans le menu &#039;&#039;&#039;Infos Système&#039;&#039;&#039; sur une installation de Dolibarr opérationnelle pour connaître les id déjà utilisés.&lt;br /&gt;
Dans $this-&amp;gt;rights[$r][3], mettre 1 si cette permission est attribué d&#039;office par défaut quand un utilisateur est créé.&lt;br /&gt;
Dans $this-&amp;gt;rights[$r][1], mettre un libellé par défaut (il sera affiché si aucune traduction n&#039;est trouvé pour votre permission dans le fichier &#039;&#039;&#039;admin.lang&#039;&#039;&#039;. La clé de traduction dit être &amp;quot;Permission10001=Description de ma super permission&#039;&#039;&#039;&amp;quot;&#039;&#039;&#039;).&lt;br /&gt;
Dans $this-&amp;gt;rights[$r][4] et $this-&amp;gt;rights[$r][5], mettre une chaîne action et sous action sans espace. Vous pourrez alors tester dans le code PHP si un utilisateurs a bien les droits par la séquence suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if ($user-&amp;gt;rights-&amp;gt;monmodule-&amp;gt;action-&amp;gt;sousaction) ...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Définir vos propres box/widgets (optionnel)==&lt;br /&gt;
&#039;&#039;&#039;Quand&#039;&#039;&#039; : si votre module amène avec lui une ou plusieurs Boxes.&lt;br /&gt;
&lt;br /&gt;
===Définissez vos box===&lt;br /&gt;
Pour cela, modifiez les tableaux $this-&amp;gt;boxes du fichier descripteur de module.&lt;br /&gt;
Il suffit d&#039;ajouter 2 lignes par fichier box que vous allez créer dans le répertoire &#039;&#039;&#039;htdocs/monmodule/core/boxes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Exemple :&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$this-&amp;gt;boxes[0][&#039;file&#039;]=&#039;mabox0.php@monmodule&#039;&lt;br /&gt;
$this-&amp;gt;boxes[0][&#039;note&#039;]=&#039;Ma box 0&#039;&lt;br /&gt;
 ...&lt;br /&gt;
$this-&amp;gt;boxes[n][&#039;file&#039;]=&#039;maboxn.php@monmodule&#039;&lt;br /&gt;
$this-&amp;gt;boxes[n][&#039;note&#039;]=&#039;Ma box n&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite créez les fichiers &#039;&#039;&#039;htdocs/monmodule/core/boxes/mabox0.php&#039;&#039;&#039;, &#039;&#039;&#039;htdocs/monmodule/core/boxes/maboxn.php&#039;&#039;&#039;... en prenant exemple sur des box existantes (exemple dans le répertoire &#039;&#039;&#039;htdocs/core/boxes&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
===Testez la présence de vos box dans Dolibarr===&lt;br /&gt;
Désactivez et réactivez le module.&lt;br /&gt;
&lt;br /&gt;
Allez dans le menu &#039;&#039;&#039;Accueil - Configuration - Widgets&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Vos box doivent apparaître dans la liste des box activables. Activez les puis allez sur la page d&#039;accueil et vérifiez qu&#039;elles s&#039;affichent correctement.&lt;br /&gt;
&lt;br /&gt;
==Définir vos propres exports (optionnel)==&lt;br /&gt;
&#039;&#039;&#039;Quand&#039;&#039;&#039; : si votre module amène avec lui des exports prédéfinis de données (pour ces propres tables ou des tables déjà existantes d&#039;un autre module de Dolibarr).&lt;br /&gt;
&lt;br /&gt;
===Définissez l&#039;export===&lt;br /&gt;
Pour cela, décommentez et modifiez les tableaux $this-&amp;gt;export_xxx du votre fichier descripteur de module.&lt;br /&gt;
&lt;br /&gt;
===Testez votre export===&lt;br /&gt;
Allez dans le menu outils -&amp;gt; export de Dolibarr. Votre export doit apparaitre dans la liste des exports prédéfinis disponibles (si votre module est bien activé).&lt;br /&gt;
Le choisir, vous devez alors voir les champs possibles définis dans le tableau à l&#039;étape précédente.&lt;br /&gt;
Choissez quelques champs et tentez une génération du fichier export.&lt;br /&gt;
&lt;br /&gt;
==Définir vos styles CSS (optionnel)==&lt;br /&gt;
&#039;&#039;&#039;Quand&#039;&#039;&#039; : lorsque dans vos écrans PHP, vous utiliser des classes de styles qui ne sont pas celle des thèmes de Dolibarr (non recommandé).&lt;br /&gt;
&lt;br /&gt;
Cette fonctionnalité est décrite mais pas encore opérationnel en 2.4&lt;br /&gt;
&lt;br /&gt;
===Créez et déclarez votre feuille de style===&lt;br /&gt;
Créez un fichier de style css nommé &#039;&#039;&#039;monmodule.css&#039;&#039;&#039; ou &#039;&#039;&#039;monmodule.css.php&#039;&#039;&#039; et placez le dans le répertoire &#039;&#039;&#039;&#039;&#039;monmodule&#039;&#039;&#039;&#039;&#039; dans &#039;&#039;&#039;htdocs&#039;&#039;&#039;. Il ne peut y avoir qu&#039;un fichier css propre à chaque module.&lt;br /&gt;
Rappelons qu&#039;il vaut mieux utiliser les styles déjà existant de Dolibarr (le fichier css utilisé par Dolibarr étant le fichier &#039;&#039;&#039;themes/nomtheme/&#039;&#039;nomtheme&#039;&#039;.css.php&#039;&#039;&#039;). Ne créez un fichier css propre à votre module que si vous devez absolument gérer des styles non déjà existants.&lt;br /&gt;
Une fois votre feuille de style prête, déclarez la dans votre fichier descripteur de module en modifiant la propriété &#039;&#039;&#039;$this-&amp;gt;module_parts&#039;&#039;&#039;.&lt;br /&gt;
La valeur à renseigner ici doit être le chemin relatif de l&#039;URL de votre fichier css.&lt;br /&gt;
Par exemple&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$this-&amp;gt;module_parts = array(&#039;css&#039; =&amp;gt; array(&#039;/monmodule/css/monmodule.css.php&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Testez votre feuille de style===&lt;br /&gt;
Désactivez et réactivez votre module.&lt;br /&gt;
&lt;br /&gt;
Appelez la page d&#039;accueil de Dolibarr. Affichez la source de la page HTML.&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir dans l&#039;entête HTML, une ligne déclarant votre feuille de style.&lt;br /&gt;
&lt;br /&gt;
==Définir vos fonctions Javascript (optionnel)==&lt;br /&gt;
&#039;&#039;&#039;Quand&#039;&#039;&#039; : lorsque dans vos écrans PHP, vous utiliser des fonctions javascript non dispo en standard (fichier lib_head.js)&lt;br /&gt;
&lt;br /&gt;
Si dans vos écrans PHP, vous utilisez des fonctions javascript, il est nécessaire de faire en sorte que vos fonctions déclarées dans un fichier javascript &#039;&#039;&#039;htdocs/monmodule/js/monmodule.js&#039;&#039;&#039; soit chargées dans l&#039;entête head html.&lt;br /&gt;
Pour demander à Dolibarr qui gère la génération de la section header d&#039;inclure un de vos fichiers javascript, il est nécessaire de fournir en paramètre de la fonction llxHeader() appelée au début de votre page, d&#039;inclure le paramètre qui contient l&#039;URL vers le js à inclure.&lt;br /&gt;
&lt;br /&gt;
Exemple pour la page /htdocs/monmodule/mapage.php :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
require(&#039;../main.inc.php&#039;);&lt;br /&gt;
$morejs=array(&amp;quot;/monmodule/js/monmodule.js&amp;quot;);&lt;br /&gt;
llxHeader(&#039;&#039;,&#039;Titre&#039;,&#039;&#039;,&#039;&#039;,&#039;&#039;,&#039;&#039;,$morejs,&#039;&#039;,0,0); &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Déclencher du code sur un évènement Dolibarr (optionnel)==&lt;br /&gt;
&#039;&#039;&#039;Quand&#039;&#039;&#039; : lorsque vous voulez que des actions particulières s&#039;exécutent suite au déclenchement d&#039;actions standards de Dolibarr (exemple : je veux mettre à jour une table de mon module quand une facture se crée dans Dolibarr), il vous faut créer un fichier de &#039;&#039;&#039;triggers&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Voir aussi [[Interfaces_Dolibarr_vers_exterieur|Interfaces de Dolibarr vers l&#039;exterieur]]&lt;br /&gt;
et [[Interfaces_Exterieur_vers_Dolibarr|Interfaces exterieures vers Dolibarr]]&lt;br /&gt;
&lt;br /&gt;
==Insérer votre code aux emplacement hooks de Dolibarr (optionnel)==&lt;br /&gt;
&#039;&#039;&#039;Quand&#039;&#039;&#039; : lorsque vous voulez modifier ou ajouter du code autrement que lors d&#039;un événement métier (voir le chapitre précédent pour cela).&lt;br /&gt;
&lt;br /&gt;
Voir la page [[Système de Hooks]].&lt;br /&gt;
&lt;br /&gt;
==Ajouter un module de numérotation (optionnel)==&lt;br /&gt;
&#039;&#039;&#039;Quand&#039;&#039;&#039; : lorsque vous voulez ajouter une règle de numérotation non couverte par les modules par défaut.&lt;br /&gt;
&lt;br /&gt;
Voir la page [[Créer un module de numérotation]].&lt;br /&gt;
&lt;br /&gt;
==Ajouter un nouveau modèle de document (optionnel)==&lt;br /&gt;
&#039;&#039;&#039;Quand&#039;&#039;&#039; : lorsque vous voulez ajouter un nouveau modèle de document.&lt;br /&gt;
&lt;br /&gt;
La documentation au sujet de la génération de documents depuis des modèles est disponible sur la page [[Créer un modèle de document PDF]] ou [[Créer un modèle de document ODT]].&lt;br /&gt;
&lt;br /&gt;
==Ajouter un thème (optionnel)==&lt;br /&gt;
&#039;&#039;&#039;Quand&#039;&#039;&#039;: Lorsque vous voulez une interface aux couleurs personnalisées à votre cas.&lt;br /&gt;
&lt;br /&gt;
Voir la page [[Themes]].&lt;br /&gt;
&lt;br /&gt;
==Ajouter un bouton (optionnel)==&lt;br /&gt;
Si vous souhaitez ajouter des boutons à vos enregistrements.&lt;br /&gt;
&lt;br /&gt;
Voir la page [[Création de boutons]].&lt;br /&gt;
&lt;br /&gt;
=[[File:Art.png]] Quelques règles de codage et fonctions pour développeurs=&lt;br /&gt;
Les règles de codage à suivre sont définis dans la [[Documentation Développeur|Documentation développeur]], rubrique &amp;quot;Informations Générales - Langage et normes de développement&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
De nombreuses fonctions prédéfinies pour les développeurs sont disponibles et décrites sur la page [[Documentation Développeur|Documentation développeur]] sous la section &amp;quot;Les couches techniques de Dolibarr&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=[[File:Art.png]] Créer un package pour livrer et installer votre module=&lt;br /&gt;
Cette procédure doit être utilisée pour fabriquer un package afin de le soumettre sur la place de marché http://www.dolistore.com.&lt;br /&gt;
Mais vous pouvez aussi l&#039;utiliser pour distribuer facillement votre module via votre propre réseau de distribution.&lt;br /&gt;
&lt;br /&gt;
*Allez dans le répertoire &#039;&#039;&#039;/build&#039;&#039;&#039; et recopiez le fichier &#039;&#039;&#039;makepack-dolibarrmodules.conf&#039;&#039;&#039; en &#039;&#039;&#039;makepack-monmodule.conf&#039;&#039;&#039;. Attention, ce répertoire peut ne pas être fourni dans les packages de versions stables. Si c&#039;est le cas, il peut être récupéré dans le snapshot disponible en téléchargement sur le site web Dolibarr dans la rubrique Version de développement (prenez dans ce cas tout le répertoire build qui est un répertoire autonome et indépendant de la version).&lt;br /&gt;
&lt;br /&gt;
Saisissez dans ce fichier la liste des noms des nouveaux fichiers que vous avez créé pour votre module (descripteur de module, nouveaux fichiers sql de tables, page php, images, etc...)&lt;br /&gt;
&lt;br /&gt;
*Lancer le script via Perl (besoin de la version Perl 5.0 ou +):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
perl makepack-dolibarrmodule.pl&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Le script vous demande le nom de votre module, sa version majeure et mineure.&lt;br /&gt;
Un fichier &#039;&#039;&#039;monmodule.zip&#039;&#039;&#039; va alors être fabriqué contenant votre module prêt pour être déployé.&lt;br /&gt;
&lt;br /&gt;
*La personne qui reçoit votre module doit alors placer le fichier dans son répertoire racine d&#039;installation de Dolibarr et réaliser la commande :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
tar -xvf monmodule.zip&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Si vous désirez que votre module profite à tous, vous pouvez le soumettre (le fichier zip) sur la place de marché des modules complémentaires: {{LinkToPluginDownload}} (vous devez avoir créé un compte auparavant et utiliser le lien &amp;quot;Soumettre un module/produit&amp;quot;).&lt;br /&gt;
**Si votre module a été fabriqué correctement, le fichier sera validé rapidement.&lt;br /&gt;
**Si la qualité est suffisante, que la licence le permet et que la fonctionnalité du module s&#039;avère être d&#039;un intérêt général, le code pourra être ajouté au code source de Dolibarr (sauf si vous ne le désirez pas).&lt;br /&gt;
&lt;br /&gt;
Il également possible récupérer votre module au format .zip en ayant activé la variable [[Fichier de configuration|$dolibarr_allow_download_external_modules à 1 dans le fichier conf.php]]. &lt;br /&gt;
&lt;br /&gt;
=[[File:Art.png]] Dépôt et validation du module externe sur Dolistore=&lt;br /&gt;
&lt;br /&gt;
Voir [[Module_Dolistore_Validation_Regles|Règles de Validation]]&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Setup_Other&amp;diff=61265</id>
		<title>Setup Other</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Setup_Other&amp;diff=61265"/>
		<updated>2024-09-05T04:04:01Z</updated>

		<summary type="html">&lt;p&gt;Iouston: add holiday module section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- BEGIN origin interlang links --&amp;gt;&lt;br /&gt;
&amp;lt;!-- You can edit this section but do NOT remove these comments&lt;br /&gt;
     Links below will be automatically replicated on translated pages by PolyglotBot --&amp;gt;&lt;br /&gt;
[[fr:Paramétrage_Divers]]&lt;br /&gt;
[[es:Configuración_Varios]]&lt;br /&gt;
[[de:Erweiterte_Einstellungen]]&lt;br /&gt;
[[zh:其他设置]]&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Admin]]&lt;br /&gt;
{{TemplateDocUser}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Help About Screen&#039;&#039;&#039;: Other setup&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Menu Path&#039;&#039;&#039;: Home ► Setup ► Other&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Some options are not visible in the interface (often because they are deprecated or are beta features). In most cases you do not need these functions and their use may make the application unstable or may not work as expected.&lt;br /&gt;
&lt;br /&gt;
 {{warning|32px}} This page contains the list of some advanced development parameters. In most cases, it is parameters for internal usage, development, external modules, features in development not stable or that may lead to security risk. For standard usage of Dolibarr, such parameters &#039;&#039;&#039;SHOULD NOT&#039;&#039;&#039; be used. All experimental options are NOT supported. They may be removed in a future, modified at any version and break stability of your application.&lt;br /&gt;
&lt;br /&gt;
To enable/override a parameter you have to define the constant name and set it to 1 (unless otherwise stated) in &amp;lt;code&amp;gt;Home ► Setup ► Other Setup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The options here may not be documented since they are not stable and are unsupported (remember they are experimental or development options). The basic format of how the list is written is broken down in the example below:&lt;br /&gt;
&lt;br /&gt;
UNSTABLE_OR_DEV_OPTION ► &#039;&#039;Description of config and goal&#039;&#039; ► &#039;&#039;(specific version information) or values&#039;&#039;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
=Global Options=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ADD_UNSPLASH_LOGIN_BACKGROUND&#039;&#039;&#039; ► The background image will be refreshed on every login page refresh. Background image is pulled from the popular open source image website Unsplash. If an already saved static background image exists, then this code will override it (but not delete the saved image). Warning: Using this may allow this external website to steel your login credentials (the value to be put is the URL of the service, exemple : https://source.unsplash.com/random) ► (v10.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HIDE_POWERED_BY&#039;&#039;&#039; ► Hide the &amp;quot;Powered by Dolibarr&amp;quot; picto on public pages&lt;br /&gt;
*&#039;&#039;&#039;MAIN_APPLICATION_TITLE&#039;&#039;&#039; ► This will change the title of software (that appears on the login page by default). Warning: changing this may make Dolibarr version detection fail by smartphone applications like [[Application Android - DoliDroid]] breaking some features when using Dolibarr from this application.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_AUTOFILL_DATE&#039;&#039;&#039; ► If this constant is defined (to something other than &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;), the date of invoice, proposal, order or payment are auto-filled with the current date. It is highly recommended to NOT ENABLE this feature. This can create a lot of input errors with data not validated by users. This leads to incorrect values saved in the database causing confusion when you have to do your accountancy reports!&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_AUTO_TIMESTAMP_IN_PUBLIC_NOTES&#039;&#039;&#039; ► Add a timestamp and user automatically when editing the &#039;&#039;public&#039;&#039; note.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_AUTO_TIMESTAMP_IN_PRIVATE_NOTES&#039;&#039;&#039; ► Add a timestamp and user automatically when editing the &#039;&#039;private&#039;&#039; note.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_COUNTRIES_IN_EEC&#039;&#039;&#039; ► Country list in European Area (For VAT purpose) ► (v10.0-v13.0). From v14, do not use this any more (remove the constant if you set it and instead set if the country is in Europe or not from the DB for V14 - V15  and from dictionary of countries in V16 and more).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DEFAULT_PAYMENT_TERM_ID&#039;&#039;&#039; ► With ID of a payment term, will use this as default payment term each time you create a new proposal, order, invoice (customer and supplier). Deprecated. Replaced with the default setup feature instead.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DEFAULT_PAYMENT_TYPE_ID&#039;&#039;&#039; ► With ID of a payment type, will use this as default payment type each time you create a new proposal, order, invoice (customer and supplier). Deprecated. Replaced with the default setup feature instead.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DEFAULT_LANGUAGE_FILTER&#039;&#039;&#039; ► Useful if you do not want to show &amp;lt;code&amp;gt;en_US&amp;lt;/code&amp;gt; language option in combo boxes (other languages can easily be removed in &amp;lt;code&amp;gt;langs&amp;lt;/code&amp;gt; directory but not &amp;lt;code&amp;gt;en_US&amp;lt;/code&amp;gt;) ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LANGUAGES_ALLOWED&#039;&#039;&#039; ► Is a list of languages without spaces, example : &amp;lt;code&amp;gt;fr_FR,en_US,de_DE,it_IT&amp;lt;/code&amp;gt; If defined, only those languages will appear in combos. ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_NOTES_TAB&#039;&#039;&#039; ► Show or hide notes tab in the card page&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_CONTACTS_TAB&#039;&#039;&#039; ► Show or hide contacts tab in the card page&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_FULL_SCANLIST&#039;&#039;&#039; ► Disables the complete scan of tables to allow the pagination to show total number of pages. May be useful to activate on systems with a very high quantity of data (tables with more than 2 000 000 records).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_JQUERY_JNOTIFY&#039;&#039;&#039; ► Disable usage of &amp;lt;code&amp;gt;JNotify&amp;lt;/code&amp;gt; to show confirm or error messages&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_AJAX_COMBOX&#039;&#039;&#039; ► If you have a large number of third parties or products, you can disable the autocomplete feature on the third parties list by setting this constant to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; ► (v3.6.0+)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_MULTIPLE_FILEUPLOAD&#039;&#039;&#039; ► Disable users to upload multiple files at once.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_TRUNC&#039;&#039;&#039; ► Disable all truncings in select list. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLEDRAFTSTATUS&#039;&#039;&#039; ► Disable the status &amp;quot;Draft&amp;quot; for some objects (project, donation, ...) so the object is directly created with status &amp;quot;Validated&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_USE_OBJECT_THIRDPARTY_NAME&#039;&#039;&#039; ► Add name of thirdparty at begin of generated document.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_USE_TIMING&#039;&#039;&#039; ► Add a timestamp at end of generated document. Value must be format of timestamp. For example: &amp;lt;code&amp;gt;%Y%m%d%H%M&amp;lt;/code&amp;gt; (only for ODT files)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_UPLOAD_NOT_RENAME_BY_DEFAULT&#039;&#039;&#039; ► Disable the auto renaming on upload file ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOL_SCRIPTS_ROOT&#039;&#039;&#039; ► Define directory who contains &#039;scripts&#039; directory (e.g. &amp;lt;code&amp;gt;/var/www/dolibarr&amp;lt;/code&amp;gt;). Value of this variable may be requested by some external script or tools.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ENABLE_LOG_TO_HTML&#039;&#039;&#039; ► If this constant is defined, it is possible to have logs inside pages by adding the parameter &amp;lt;code&amp;gt;&amp;amp;logtohtml=1&amp;lt;/code&amp;gt; into URL.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ENABLE_IMPORT_LINKED_OBJECT_LINES&#039;&#039;&#039; ► Allow to import lines into current document from &amp;quot;linked&amp;quot; compatible documents ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FIRST_TO_UPPER&#039;&#039;&#039; ► Dolibarr add uppercase to Third Parties, contacts or members names if not done. Warning: with some languages (whose words with uppercase are not same words, or pagecode does not always have an uppercase, like Cyrillic languages), this feature may alter your data.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ALL_TO_UPPER&#039;&#039;&#039; ► Dolibarr puts uppercase for Third Parties, contacts or members names if not done. Warning, with some languages (whose words with uppercase are not same words, or pagecode does not always have an uppercase, like Cyrillic languages), this feature may alter your data. ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ALL_TOWN_TO_UPPER&#039;&#039;&#039; ► Dolibarr puts uppercase for town names if not done. ► (v13.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FILESYSTEM_ENCODING&#039;&#039;&#039; ► With some PHP versions, PHP is not able to detect the page code for filesystem of the server OS. To solve this, Dolibarr assumes your OS filesystem is &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; if on Linux or OSX system, and &amp;lt;code&amp;gt;ISO-8859-1&amp;lt;/code&amp;gt; if on Windows. If not, for example on a Windows server with a NTFS &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; pagecode, you can set the variable &amp;lt;code&amp;gt;MAIN_FILESYSTEM_ENCODING&amp;lt;/code&amp;gt; to &amp;quot;&amp;lt;code&amp;gt;utf-8&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FORCELANGDIR&#039;&#039;&#039; ► Relative path of the directory holding your custom &amp;lt;code&amp;gt;langs&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HTML_TITLE&#039;&#039;&#039; ► Can be used to control how the html page title is formatted. If value contains key &#039;&amp;lt;code&amp;gt;noapp&amp;lt;/code&amp;gt;&#039;, application name will not be output. If value contains &#039;&amp;lt;code&amp;gt;thirdpartynameonly&amp;lt;/code&amp;gt;&#039;, on tab for thirdparties, only name of thirdparties are output. Value can be list of tags: &#039;&amp;lt;code&amp;gt;noapp;thirdpartynameonly&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HELPCENTER_LINKTOUSE&#039;&#039;&#039; ► Define the URL link to use as the target page for link &amp;quot;I need help&amp;quot; onto logon page&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LOGOUT_GOTO_URL&#039;&#039;&#039; ► URL to which the user will be redirected after LOGOUT&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAXTABS_IN_CARD&#039;&#039;&#039; ► Maximum number of tabs visible. Others are grouped into a combo list.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAXLIST_OVERLOAD&#039;&#039;&#039; ► Maximum number of line in space&#039;s domain.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING&#039;&#039;&#039; ► A warning saying setup of modules is not complete is shown if the number of enabled modules is lower or equal than this value (&amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; if not defined)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NO_CONCAT_DESCRIPTION&#039;&#039;&#039; ► Allow to use only input custom description in lines (proposal, order, invoice) ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_OPTIMIZE_SPEED&#039;&#039;&#039; ► Use some speed enhancements. See page [[FAQ Increase Performance]] for more information.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROPAGATE_CONTACTS_FROM_ORIGIN&#039;&#039;&#039; ► When creating an order, contract, invoice from another object, specific contacts of objects are set as specific contact of the new object when possible. ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PUBLIC_NOTE_IN_ADDRESS&#039;&#039;&#039; ► Show public note in address block ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_REMOVE_INSTALL_WARNING&#039;&#039;&#039; ► Remove all security warnings that appear to administrator users if URL &amp;lt;code&amp;gt;/install&amp;lt;/code&amp;gt; is public. You should solve the problem if warning occurs, instead of removing the warning! For this, create a file called &amp;lt;code&amp;gt;install.lock&amp;lt;/code&amp;gt; into Dolibarr root directory. This will stop the warning but also make the page &amp;lt;code&amp;gt;/install&amp;lt;/code&amp;gt; not possible to use, to protect your installation.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_REPEATCONTACTONEACHTAB&#039;&#039;&#039; ► If added and set to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, this adds contacts on all tabs, not only main tab.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_REPLACE_TRANS_xx_XX&#039;&#039;&#039; ► Where &amp;lt;code&amp;gt;xx_XX&amp;lt;/code&amp;gt; is language code. If value is &amp;lt;code&amp;gt;string1:newstring1;string2:newstring2&amp;lt;/code&amp;gt; then replace &amp;lt;code&amp;gt;string1&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;newstring1&amp;lt;/code&amp;gt; in all translation done for language &amp;lt;code&amp;gt;xx_XX&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND&#039;&#039;&#039; ► Change way of rounding total TTC lines, rounding first of after.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SERVER_TZ&#039;&#039;&#039; ► If you can&#039;t set the time zone of your PHP installation, set this constant. Better is to set it to UTC. In future, this constant will be forced to &#039;&amp;lt;code&amp;gt;UTC&amp;lt;/code&amp;gt;&#039; so PHP server time zone will not have effect any more. Examples: &amp;lt;code&amp;gt;Europe/Paris&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;auto&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SEARCH_FORM_ON_HOME_AREAS&#039;&#039;&#039; ► Show the search form on home page areas for core modules (Removed after v5 due to global search combo) ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SEARCHFORM_SUPPLIER_INVOICE_DISABLED&#039;&#039;&#039; ► Disable the supplier invoice on the search form&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE&#039;&#039;&#039; ► If only one result is found, then setting this value to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; will take you direct to the item (default method).  Setting the value to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; will show the result in the list as a single result ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SERVICES_ARE_ECOMMERCE_200238EC&#039;&#039;&#039; ► If seller and buyer are in Europe and buyer is not a company, use the VAT of buying country.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_TUNING_INFO&#039;&#039;&#039; ► Add tuning information into JavaScript console. Better when xdebug is enabled.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_TECHNICAL_ID&#039;&#039;&#039; ► Show also technical IDs on elements cards or some lists (not supported everywhere).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOWDATABASENAMEINHELPPAGESLINK&#039;&#039;&#039; ► Show database name in upper help menu ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_ALTERNATE_TRANSLATION_FOR&#039;&#039;&#039; ► List of fields per object that need an alternate translation. Example: &amp;lt;code&amp;gt;MAIN_USE_ALTERNATE_TRANSLATION_FOR=societe:name,town;contact:firstname,lastname&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_HOURMIN_IN_DATE_RANGE&#039;&#039;&#039; ► On all entities lines (invoice, order, contract...), it is possible to add hour and minutes with date on fields &amp;quot;date start&amp;quot; and &amp;quot;date end&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_JQUERY_JEDITABLE&#039;&#039;&#039; ► Allow to update from screen, directly into database, some properties of elements (invoices, proposals, ...) using Ajax. This make response time faster, but avoid using this feature, because it bypasses some business actions (updates on other data that should be done consistently) and ignores business controls on data you saved. Consequently this feature breaks consistency of data and possibly the stability of the software.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_JQUERY_MULTISELECT&#039;&#039;&#039; ► Allow to use Ajax when a choice that require multiselect is used (for the moment only external modules uses select box with multiselect values). Set the value to the jQuery plugin name to use (multiselect, multiple-select, select2…). Setting it to any other value will result in unwanted side-effects and/or bugs.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_OLD_SEARCH_FORM&#039;&#039;&#039; ► Display the old search form in left menu.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VAT_DEFAULT_IF_AUTODETECT_FAILS&#039;&#039;&#039; ► Allow to force the VAT rate to a given value (instead of higher VAT rate of country) if the VAT rate of product was not defined.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_UNKNOWN_CUSTOMERS_ARE_COMPANIES&#039;&#039;&#039; ► If we can&#039;t guess if a thirdparty is a company or individual (not VAT ID fill, no Prof ID fill, no type of thirdparty fill), then we suppose it is a company (B2B business) instead of an individual (B2C business).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_VAT_COMPANIES_IN_EEC_WITH_INVALID_VAT_ID_ARE_INDIVIDUAL&#039;&#039;&#039; ► For intra CEE sales, we use by default, on proposal, order or invoice creation, a 0 VAT for customers that are companies (see MAIN_UNKNOWN_CUSTOMERS_ARE_COMPANIES to change behaviour to know if a thirdparty is a company or an individual). But if the option MAIN_USE_VAT_COMPANIES_IN_EEC_WITH_INVALID_VAT_ID_ARE_INDIVIDUAL is set, we will use the 0 VAT only if a VAT ID is defined for the customer.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_VAT_OF_PRODUCT_FOR_INDIVIDUAL_CUSTOMER_OUT_OF_EEC&#039;&#039;&#039; ► For to use the default VAT of product for individual customers that are out E.E.C. (European Economic Community) ► (v7.0+). &#039;&#039;There is no reason to use this.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VIEW_LINE_NUMBER&#039;&#039;&#039; ► Shows a line number for each line of products/services at documents like proposal / order / invoice. Only on screen, not on PDF.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VIEW_LINE_NUMBER_IN_LIST&#039;&#039;&#039; ► Shows a line number in lists ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VOLUME_DEFAULT_ROUND&#039;&#039;&#039; ► Accuracy of volume (number of decimals)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VOLUME_DEFAULT_UNIT&#039;&#039;&#039; ► Default unit for weight (&amp;lt;code&amp;gt;0=kg&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-3=g&amp;lt;/code&amp;gt;, ...)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_WEIGHT_DEFAULT_ROUND&#039;&#039;&#039; ► Accuracy of weight (number of decimals)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_WEIGHT_DEFAULT_UNIT&#039;&#039;&#039; ► Default unit for weight (&amp;lt;code&amp;gt;0=kg&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-3=g&amp;lt;/code&amp;gt;, ...)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;USER_HIDE_INACTIVE_IN_COMBOBOX&#039;&#039;&#039; ► Disable display inactive users in combobox.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_PDF_THUMBS&#039;&#039;&#039; ► Disable thumbs PDF in case of imagick bug&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_KEEP_REF_CUSTOMER_ON_CLONING&#039;&#039;&#039; ► Keep the Customer Reference on cloned object (Propal/Invoice)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DONT_KEEP_NOTE_ON_CLONING&#039;&#039;&#039; ► Remove the object notes during cloning ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_SORT_FIELD&#039;&#039;&#039; ► Set the default sorting field on document page (name by default) ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_SORT_ORDER&#039;&#039;&#039; ► Set the default sorting order (ASC or DESC) on document page (ASC by default) ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_ZIPTOWN_DICTIONNARY&#039;&#039;&#039; ► Use dictionary ZIP for create card.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_TOP_MENU_SEARCH_DROPDOWN&#039;&#039;&#039; ► Show search in top menu with theme eldy ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PHONE_SEPAR&#039;&#039;&#039; ► Separ phone number other space ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;GRAPH_USE_FISCAL_YEAR&#039;&#039;&#039; ► Widgets uses fiscal year&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SHOW_SOCINFO_ON_PRINT&#039;&#039;&#039; ► Permit to add user company information on each printed document (when click on Dolibarr print button) ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FEATURES_LEVEL&#039;&#039;&#039; ► Level of features to show: &amp;lt;code&amp;gt;-1=stable+deprecated&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0=stable only (default)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1=stable+experimental&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2=stable+experimental+development&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_TECHNICAL_ID&#039;&#039;&#039; ► Show technical id for object.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HTTP_CONTENT_SECURITY_POLICY&#039;&#039;&#039; ► Allows you to fill in the content security rules ► (v6.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_ON_SEARCH_AND_LIST_GO_ON_CUSTOMER_OR_SUPPLIER_CARD&#039;&#039;&#039; ► Allow to change the link of the third party to customer/supplier card instead of contact card on List.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MODULE_SETUP_ON_LIST_BY_DEFAULT&#039;&#039;&#039; ► If set to &amp;quot;common&amp;quot; the setup module becomes list by defaut&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PAGESIZE_CHOICES&#039;&#039;&#039;  ► Configure select field to choose number of lines displayed on listing (&amp;lt;code&amp;gt;10:10,15:15,20:20,30:30,40:40,50:50,100:100,250:250,500:500,1000:1000,5000:5000&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_TOP_MENU_QUICKADD_DROPDOWN&#039;&#039;&#039; ► Add a dropdown menu with shortcuts to create new objects ► (v13.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EMAILCOLLECTOR_MAIL_WITHOUT_HEADER&#039;&#039;&#039; ► Remove the header stored by email collector ► (v13.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_VAT_OF_PRODUCT_FOR_COMPANIES_IN_EEC_WITH_INVALID_VAT_ID&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_OPTIMIZEFORTEXTBROWSER&#039;&#039;&#039; ► Optimise interface for a text only browser. This variable is set to 1 automatically if your browser is lynx or links&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NB_OF_YEAR_IN_WIDGET_GRAPH&#039;&#039;&#039; ► Set the number of years visible on some graph of some widgets (2 is default value)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_CREATEFROM_KEEP_LINE_ORIGIN_INFORMATION&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;API_DISABLE_LOGIN_API&#039;&#039;&#039; ►(v14.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LOGIN_BADCHARUNAUTHORIZED&#039;&#039;&#039; ► Add possibility to define bad character unauthorized into login name REGEX expression (Default value is @&amp;lt;&amp;gt;&amp;quot;\&#039;)  ► (v16.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_ALL_FILES_ON_DOCUMENT_TOOLTIP&#039;&#039;&#039;  ► Add all files visible from the object to be visible from the list of object.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LIST_ALLOW_PUBLIC_NOTES&#039;&#039;&#039;  ► Display public notes on list&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LIST_ALLOW_PRIVATE_NOTES&#039;&#039;&#039;  ► Display private notes on list&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_CHECKBOX_LEFT_COLUMN&#039;&#039;&#039; ► Display private check boxes on the left ► (v17.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_STATS_GRAPHS_SHOW_N_YEARS&#039;&#039;&#039; ► Nb of years to shows in widget and graph ► (v14.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HOOK_DEBUG&#039;&#039;&#039; ► if &amp;gt;=2 the hook in the logs are more verbose ► (v18.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ENABLE_AJAX_TOOLTIP&#039;&#039;&#039; ► if 1 the tooltips are updated with AJAX request ► (v18.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NO_INPUT_PRICE_WITH_TAX&#039;&#039;&#039; ► if 1 the TTC input field is removed from propal/invoices/... ► (v17.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_SELECT2_FOCUS_PROTECTION&#039;&#039;&#039; ► if 1 disable the focus protection ► (v17.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_ADVANCED_PERMS ►&#039;&#039;&#039; Add advanced user permission&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FREE_PRODUCT_CHECKED_BY_DEFAULT ►&#039;&#039;&#039; Check &amp;quot;product&amp;quot; or &amp;quot;service&amp;quot; by default on order/invoices/propal cards (set value &amp;quot;product&amp;quot; or &amp;quot;service&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Security Options=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SECURITY_ANTI_SSRF_SERVER_IP&#039;&#039;&#039; ► Can set a complete list of IPs of server.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SECURITY_CSRF_WITH_TOKEN&#039;&#039;&#039; ► Activate a second anti-CSRF protection on POST (so a POST from another web site can&#039;t be done). Note there is already a default protection using test on referrer. This second protection uses TOKEN on forms and is more powerful. ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MODULES_FOR_EXTERNAL&#039;&#039;&#039; ► Limit available modules for external users. By default value is &#039;&amp;lt;code&amp;gt;facture,commande,contact,propal,projet,contrat,societe,ficheinter,expedition,agenda&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ALLOW_SVG_FILES_AS_IMAGES&#039;&#039;&#039; ► Allow to use SVG file as image files. Warning: This may introduce security vulnerability (javascript can be embedded into SVG file).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_RESTRICTHTML_ONLY_VALID_HTML&#039;&#039;&#039; ► Refused parameter if value is not a valid HTML content.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_RESTRICTHTML_REMOVE_ALSO_BAD_ATTRIBUTES&#039;&#039;&#039; ► Sanitize also non standard attributes on HTML content.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SECURITY_SALT&#039;&#039;&#039; ► A salt string to base the hashing on. 8 strings length recommended.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SECURITY_MAX_IMG_IN_HTML_CONTENT&#039;&#039;&#039; ► Maximum number of Images on the HTML content&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SECURITY_ALLOW_UNSECURED_LABELS_WITH_HTML&#039;&#039;&#039; ► Allow HTML tags into products label&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SECURITY_FORCERP&#039;&#039;&#039; = &amp;quot;strict-origin-when-cross-origin&amp;quot; (default) so browser doesn&#039;t send any referrer when going into another web site domain / &amp;quot;same-origin&amp;quot; / &amp;quot;strict-origin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Adherent Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_NEWFORM_FORCEMORPHY&#039;&#039;&#039; ► Force nature of member set to &amp;quot;phy&amp;quot; for physical or to &amp;quot;mor&amp;quot; for moral ► (v12.0)&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_ALLOW_CHANGE_OF_TYPE&#039;&#039;&#039; ► Member can edit their type on public subscription page ► (v13.0)&lt;br /&gt;
*&#039;&#039;&#039;ADHERENT_DEFAULT_CREATE_THIRDPARTY&#039;&#039;&#039; ► Thirdparty is created when creating a new member ► (v13.0)&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_SUBSCRIPTION_SUGGEST_END_OF_MONTH&#039;&#039;&#039; ► If set to 1, the member subscription end date will be suggested for the end of the month ► (v18.0)&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_SUBSCRIPTION_SUGGEST_END_OF_YEAR&#039;&#039;&#039; ► If set to 1, the member subscription end date will be suggested for the end of the year ► (v18.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NB_OF_YEAR_IN_MEMBERSHIP_WIDGET_GRAPH&#039;&#039;&#039; ► If set, it limits the number of years visible on graph and widgets of membership (empty is default value to show all) ► (v18.0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Accountancy Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ACCOUNTANCY_COMBO_FOR_AUX&#039;&#039;&#039; ► Add graphic option for ACCOUNTANCY_COMBO_FOR_AUX. Having this option on may slow down and even freeze the accounting features if you have a very large number of thirdparties ► (v10.0)&lt;br /&gt;
*&#039;&#039;&#039;ACCOUNTING_DEFAULT_NOT_NOTIFIED_VALIDATION_DATE&#039;&#039;&#039; ► Avoid validating the lines with the accountancy export.(1= box unchecked by default / 0 = box checked by default) ► (v14.0)&lt;br /&gt;
*&#039;&#039;&#039;ACCOUNTING_DEFAULT_NOT_NOTIFIED_EXPORT_DATE&#039;&#039;&#039; ► Avoid flagging the lines as exported with the accountancy export.(1= box unchecked by default / 0 = box checked by default) ► (v14.0)&lt;br /&gt;
*&#039;&#039;&#039;ACCOUNTANCY_USE_PRODUCT_ACCOUNT_ON_THIRDPARTY ►&#039;&#039;&#039; Add 2 fields on thirdparty card which allow you to set an account for all sells products and an other for all buying products for this customer ► (v14.0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Agenda Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_ALL_CALENDARS&#039;&#039;&#039; ► Change the default view of calendar pages to see all the Agenda&#039;s (instead or yours only be default)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_AUTOSET_END_DATE_WITH_DELTA_HOURS&#039;&#039;&#039; ► To automatically set end date of event to start date + delta on event creation page.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_DISABLE_LOCATION&#039;&#039;&#039; ► Disable location field in action card  ► (&amp;gt;=v5.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_MAX_EVENTS_DAY_VIEW&#039;&#039;&#039; ► Define the maximum number of visible entries for each day in agenda. Default value is 3. Value 0 means no limit.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_USE_EVENT_TYPE&#039;&#039;&#039; ► Add a mandatory field &amp;quot;Type&amp;quot; when creating an event (&#039;&#039;&#039;&#039;&#039;deprecated&#039;&#039;&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ADD_EVENT_ON_ELEMENT_CARD&#039;&#039;&#039; ► Allow to create an event from a document (proposal, order, invoice)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_SUPPORT_PRIORITY_IN_EVENTS&#039;&#039;&#039; ► Allow to have priorities in events ► (&amp;gt;=v13.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_ADDACTIONFORPHONE&#039;&#039;&#039; ► Allow you to create a event from phone number ► (=&amp;lt;v12.0) - Need to be fix for (=&amp;gt;v12.0) https://github.com/Dolibarr/dolibarr/issues/22720&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_ADDACTIONFOREMAIL&#039;&#039;&#039; ► Allow you to create a event from Email ► (=&amp;lt;v12.0) - Need to be fix for (=&amp;gt;v12.0) https://github.com/Dolibarr/dolibarr/issues/22720&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
=Bank Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BANK_CAN_RECONCILIATE_CASHACCOUNT&#039;&#039;&#039; ► Can reconciliate cash accounts ► (v3.8)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BANK_DISABLE_CHECK_DEPOSIT&#039;&#039;&#039; ► Disable check deposit feature&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BANK_ASK_PAYMENT_BANK_DURING_ORDER&#039;&#039;&#039; ► Ask bank account during creation of an order&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL&#039;&#039;&#039; ► Ask bank account during creation of a proposal&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BANK_USE_OLD_VARIOUS_PAYMENT&#039;&#039;&#039; ► To allow to enter miscellaneous payments (not covered by other modules) using old method. &#039;&#039;&#039;&#039;&#039;Deprecated&#039;&#039;&#039;&#039;&#039;. Entering various payment is preferred ► (&amp;lt;=v12.0).&lt;br /&gt;
*&#039;&#039;&#039;MAIN_IBAN_IS_NEVER_MANDATORY&#039;&#039;&#039; ► IBAN and BIC informations not mandatory. (V15)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=BOM and MO Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ALLOW_USE_KITS_INTO_BOM_AND_MO&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;BOM_SUB_BOM&#039;&#039;&#039; ►Allow to add a BOM in another BOM►(v16.0)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Bookmarks Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BOOKMARKS_SHOW_IN_MENU&#039;&#039;&#039; ► Numbers of bookmark entries to be displayed (10 by default)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Inalterable Log Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BLOCKEDLOG_ADD_ACTIONS_SUPPORTED&#039;&#039;&#039; ► Can complete list of triggered action that are logged&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Category-Tags Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CATEGORY_SHOW_COUNTS&#039;&#039;&#039; ► Shows nb of object by tags in tag tree&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Contracts=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CONTRACT_SUPPORT_PRODUCTS&#039;&#039;&#039; ► Products are also suggested into module contract.&lt;br /&gt;
*&#039;&#039;&#039;CONTRACT_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039; ► When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. ► (v7.0+)&lt;br /&gt;
*&#039;&#039;&#039;CONTRACT_HIDE_PLANNED_DATE_ON_PDF&#039;&#039;&#039; ► allows you to not display dates on pdf files.&lt;br /&gt;
*&#039;&#039;&#039;CONTRACT_HIDE_REAL_DATE_ON_PDF&#039;&#039;&#039; ► allows you to not display dates on pdf files.&lt;br /&gt;
*&#039;&#039;&#039;CONTRACT_HIDE_PRICE_ON_PDF&#039;&#039;&#039; ► allows you to not display price on pdf files.&lt;br /&gt;
*&#039;&#039;&#039;CONTRACT_HIDE_QTY_ON_PDF&#039;&#039;&#039; ► allows you to not quantity dates on pdf files.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Cron module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CRON_DISABLE_KEY_CHANGE&#039;&#039;&#039; ► When you provide an instance to a customer, you probably also add an entry in the cron of this user so Dolibarr batch and scheduler can work correctly. For security purpose, it may have a security key that is inside the command line into the cron entry and this entry must match the value defined into Dolibarr setup (setup of module &#039;Scheduled Jobs&#039;). Because, a customer of a Saas platform will probably have no access to edit the cron file, it is also import that he has no way to edit the key into the Dolibarr setup, so the key in the cron command line will always match the key in Dolibarr setup, and the Dolibarr batches will executed without security errors. To be sure, the customer does not change the value, you can set this constant to 1 into the table [[Table_llx_const]].&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CRON_DISABLE_TUTORIAL_CRON&#039;&#039;&#039; ► Disable the tutorial about how to install the cron script (on a SaaS hosting, this should be done by the web hosting provider)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CRON_WARNING_DELAY_HOURS&#039;&#039;&#039; ► Set this value to the frequency set for the cron script (so a warning will be shown to user to warn it about max frequency of its scheduled jobs)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Direct Debit Orders=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;WITHDRAWAL_ALLOW_ANY_INVOICE_STATUS&#039;&#039;&#039; ► If this option is set, all invoices status (even already paid) may appear on the list of invoices qualified for a direct debit payment. This is the list of invoices with a payment request done, and not linked to a direct debit payment. By default, only &amp;quot;unpayed&amp;quot; invoices are used to avoid to pay twice the same invoice.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Donation Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;DONATION_USE_THIRDPARTIES&#039;&#039;&#039; ► If this option is set, a thirdparty field appear on donation forms.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
=Email=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_COPY_FILE_IN_EVENT_AUTO&#039;&#039;&#039; ► Add attachment document on event auto generated by sending email from dolibarr. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EMAIL_USE_LAYOUT&#039;&#039;&#039;► Enable the use of predefined layout when writing an email.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAILFORM_DISABLE_ENTERKEY&#039;&#039;&#039; ► Activate JavaScript code to disable the enter key in the MAIL form. ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_DEBUG&#039;&#039;&#039; ► Write content with header of last mail into file &amp;lt;code&amp;gt;dolibarr_mail.log&amp;lt;/code&amp;gt; into directory &amp;lt;code&amp;gt;dolibarr_main_data_root&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_DEBUG_ERR_WITH_DATE&#039;&#039;&#039; ► Use a different filename (by adding a prefix of date) for each email sent with error when MAIN_MAIL_DEBUG.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_DEBUG_LOG_WITH_DATE&#039;&#039;&#039; ► Use a different filename (by adding a prefix of date) to log each email sent (whatever is result) when MAIN_MAIL_DEBUG.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_FORCE_FROM&#039;&#039;&#039; ► (v19+) Can force the value into the From field of the SMTP header. Note that email sender is always saved into the &amp;quot;Reply-To&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_ALLOW_SENDMAIL_F&#039;&#039;&#039; ► On Linux or BSD system, PHP email function use the command sendmail local to server. In some cases, the sender email must be provided on command line of sendmail with option &amp;lt;code&amp;gt;-f&amp;lt;/code&amp;gt;. This option is here to ask Dolibarr to call the function mail of PHP by adding value for the option &amp;lt;code&amp;gt;-f&amp;lt;/code&amp;gt;. Note that in most cases, even with sendmail, sender email is correctly managed as it is added in the email technical header. This option is here only for setup or version of sendmail that ask the -f option to be mandatory or for sendmail setup that does not use by default the From of the header email to define the sender (with this option, the from can be forced on command line to avoid to have the from lost by sendmail).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_SENDMAIL_FORCE_BA&#039;&#039;&#039; ► On Linux or BSD system, PHP email function use the command sendmail local to server. In some case, we want to recipient to be provided to sendmail into the email content instead of its command line parameter. For this we must add the -ba parameter to sendmail. This option asks PHP to provide this parameter when sending a mail. Note that another solution is to edit the mail.force_extra_parameters=-ba into &amp;lt;code&amp;gt;php.ini&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_NO_FULL_EMAIL&#039;&#039;&#039; ► Recipient email and sender are cleaned to be on form &amp;quot;&amp;lt;email&amp;gt;&amp;quot; instead of &amp;quot;Name &amp;lt;email&amp;gt;&amp;quot;. This might solve problem of compatibility with very old mailers.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FIX_FOR_BUGGED_MTA&#039;&#039;&#039; ► Some MTA agent are bugged and add some CR chars each time they saw a LF. Because Dolibarr emails are forged to be already cleaned, if MTA agent do that, you will send an email with two CR chars. This may result in having recipient not able to read your email. To fix this, add this constant to 1. Dolibarr will then create an email that is not RFC compliant but because the MTA agent is bugged, the email will be modified and become correct during sending, solving the problem of bad email received. Add this constant if your recipient experience problems when opening email for example users using webmail of &amp;lt;code&amp;gt;orange.fr&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;hotmail.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_DO_NOT_USE_SIGN&#039;&#039;&#039; ► Do not add user signature at end of suggested pre-defined email&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_FORCE_NOT_SENDING_TO&#039;&#039;&#039; ► If en email is defined into this variable, emails will never be sent to this email.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIL_FORCE_DELIVERY_RECEIPT_INVOICE&#039;&#039;&#039; ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Invoice&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIL_FORCE_DELIVERY_RECEIPT_ORDER&#039;&#039;&#039; ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Order&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIL_FORCE_DELIVERY_RECEIPT_PROPAL&#039;&#039;&#039; ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Proposal&#039;&#039; module.&lt;br /&gt;
*&#039;&#039;&#039;MAIL_FORCE_DELIVERY_RECEIPT_SUPPLIER_PROPOSAL&#039;&#039;&#039; ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Supplier Proposal&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EMAIL_SUPPORT_ACK ►&#039;&#039;&#039; Restore email acknowledgment checkbox on sending emails. This feature is commonly abandoned by mailers. Active from Dolibarr V17 - see [https://github.com/Dolibarr/dolibarr/blob/33744f74da1a5c20f8aa9950018ab4e549e00205/ChangeLog#L53 changelog]&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EMAIL_USECCC&#039;&#039;&#039; ► 1 = Shows field BCC into email forms, If value is an email = Shows the BCC pre filled with the email value.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_AUTOCOPY_PROPOSAL_TO&#039;&#039;&#039;, &#039;&#039;&#039;MAIN_MAIL_AUTOCOPY_ORDER_TO&#039;&#039;&#039;, &#039;&#039;&#039;MAIN_MAIL_AUTOCOPY_INVOICE_TO&#039;&#039;&#039;, &#039;&#039;&#039;MAIN_MAIL_AUTOCOPY_SHIPMENT_TO&#039;&#039;&#039;, &#039;&#039;&#039;MAIN_MAIL_AUTOCOPY_..._TO&#039;&#039;&#039; ► Email to use as a BCC recipient when sending email for proposal, order or invoice. You can make this value visible by setting MAIN_EMAIL_USECCC (to 1 or to another email, see previous point)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EMAIL_ADD_TRACK_ID&#039;&#039;&#039; ► When value is 1 (this is also default value if option is not set): The record &amp;quot;Message-id&amp;quot; added into smtp header includes a tracking id to define where the email was sent from. When value is 2: you send an email from third party card, the sender email is completed with the email source tracking string  &amp;quot;+thiXXX&amp;quot; on email (your email will be sent with the &amp;quot;From&amp;quot; that is myname+thi123@mycompany.com). So when user receiving email will make &amp;quot;Answer&amp;quot;, email will be sent to myname@mycompany.com but with the tracking id included (into header or into target email), allowing you to know to which third party or object, the email exchange is related to.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_IN_SAME_EMAIL&#039;&#039;&#039; ► Restrict sending of 1 email message to &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; recipients for same email message (x for To: + CC: + BCC:). If not defined, value is &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;. Required to fight against spamming that include 1000 recipients in 1 message. Note that &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_TO_IN_SAME_EMAIL&#039;&#039;&#039;, &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_CC_IN_SAME_EMAIL&#039;&#039;&#039; and &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_BCC_IN_SAME_EMAIL&#039;&#039;&#039; are also available.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_FORCE_CONTENT_TYPE_TO_HTML&#039;&#039;&#039; ► Force to send all email (event with text only content) as HTML formatted email.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_USE_MULTI_PART&#039;&#039;&#039; ► Forge email content using an alternate text part ► (for 5.0.2+). By default with 6.0+&lt;br /&gt;
*&#039;&#039;&#039;MAIN_INFO_SOCIETE_MAIL_ALIASES&#039;&#039;&#039; ► add address aliases for the from field on mail. Set his value with &amp;quot;Firstname Name &amp;lt;firstname.lastname@mydomain.tld, Otherfirstname OtherlastName &amp;lt;othermail@mydomain.tld&amp;gt;,...&amp;quot; ► (v5.0.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_ADD_INLINE_IMAGES_IF_IN_MEDIAS&#039;&#039;&#039; ► If images were stored into the medias directory from CKEditor, then images into emails are replaced with &amp;quot;inline content&amp;quot;. This may increase seriously risk of being detected as SPAM.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EXTERNAL_SMTP_CLIENT_IP_ADDRESS&#039;&#039;&#039; ► (A better name of this option should be MAIN_EXTERNAL_MAIL_CLIENT_IP_ADDRESS). Set here the list of IPs where your Dolibarr instances are hosted. So when your customer go into the setup area of email:&lt;br /&gt;
**If he chose mail method, a message will explain him how to setup its SPF record for its email domain (showing the list of IP). This is to avoid to have its emails, sent from its Dolibarr instance, fails due to strict antispam rule of some emailing servers.&lt;br /&gt;
**If he chose smtp method, a message will explain him the list of IP he can use if there is restriction on IP by the SMTP agent. If you also need to add a message to help SPF setup, see option &#039;&#039;&#039;MAIN_EXTERNAL_SMTP_SPF_STRING_TO_ADD&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_IMAP_USE_PHPIMAP&#039;&#039;&#039; ► Use embedded PHP-imap library (not using the native php imap) instead of native php imap extension ► (v17.0+, available as official option in setup of emailcollector by default from v19)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_ENABLED_USER_DEST_SELECT&#039;&#039;&#039; ► Show also internal users into list of recipients of email in email sending form ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIL_PREFIX_FOR_EMAIL_ID&#039;&#039;&#039; ► Prefix for the mails ID. Default value is &amp;lt;code&amp;gt;$_SERVER[&amp;quot;SERVER_NAME&amp;quot;]&amp;lt;/code&amp;gt; ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=SMS= &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SMS_DEBUG&#039;&#039;&#039; ► Write content of SMS sent into file &amp;lt;code&amp;gt;dolibarr_sms.log&amp;lt;/code&amp;gt; into directory &amp;lt;code&amp;gt;dolibarr_main_data_root&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Emailing Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_PREFIX_FOR_EMAIL_ID&#039;&#039;&#039; ► Set the value that will be used to compose the &amp;quot;Email ID&amp;quot; into email headers. If you set this value to &#039;&amp;lt;code&amp;gt;SERVER_NAME&amp;lt;/code&amp;gt;&#039;, the virtual host of web server will be used. By default, this is not defined, so a hash key, unique to each instance, is used.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_NO_USING_PHPMAIL&#039;&#039;&#039; ► If set, the module emailing can&#039;t be used with mail setup of &amp;quot;phpmail&amp;quot;. Using a thirdparty SMTP server is required. You can complete warning message by adding an email to contact for setup help with constant &amp;lt;code&amp;gt;&#039;&#039;&#039;MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS&#039;&#039;&#039;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS&#039;&#039;&#039; ► Contains the email of contact to show into the message visible to a user when he try to use emailing module without SMTP server and if option &#039;&#039;&#039;MAILING_NO_USING_PHPMAIL&#039;&#039;&#039; is set to on.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_LIMIT_WARNING_PHPMAIL&#039;&#039;&#039; ► Show a warning message (var contains the &#039;&#039;&#039;message to show&#039;&#039;&#039;, or &#039;&#039;&#039;translation key&#039;&#039;&#039;) on emailing send form if setup is on &amp;quot;phpmail&amp;quot;. Note: The application always try to translation the message considering the message is a translation key, before showing the translation or message if translation was not found.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_LIMIT_WARNING_NOPHPMAIL&#039;&#039;&#039; ► Show a warning message (var contains the &#039;&#039;&#039;message to show&#039;&#039;&#039;, or &#039;&#039;&#039;translation key&#039;&#039;&#039;) on emailing send form if setup is something else than &amp;quot;phpmail&amp;quot;. Note: The application always try to translation the message considering the message is a translation key, before showing the translation or message if translation was not found.&lt;br /&gt;
*&#039;&#039;&#039;EMAILING_USE_ADVANCED_SELECTOR&#039;&#039;&#039; ► Enable the advanced selector for recipients.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_LIMIT_SENDBYWEB&#039;&#039;&#039; ► Restrict number of emails you can send in same sending session with emailing module from GUI. The value &amp;quot;&amp;lt;code&amp;gt;dolibarr_mailing_limit_sendbyweb&amp;lt;/code&amp;gt;&amp;quot; if defined into config file is used in priority for this limit. A negative value means, sending by web is forbidden.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_LIMIT_SENDBYCLI&#039;&#039;&#039; ► Restrict number of emails you can send in same sending session with emailing module from CLI script. The value &amp;quot;&amp;lt;code&amp;gt;dolibarr_mailing_limit_sendbycli&amp;lt;/code&amp;gt;&amp;quot; if defined into config file is used in priority for this limit.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Expense Report=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;EXPENSEREPORT_ALLOW_OVERLAPPING_PERIODS&#039;&#039;&#039; ► Can enter several expense reports on same or overlapping date periods. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;EXPENSEREPORT_OVERRIDE_VAT&#039;&#039;&#039; ► Setting this constant to 1 will allow expense reports to show VAT even if the global VAT setting is off ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;EXPENSEREPORT_USE_OLD_NUMBERING_RULE&#039;&#039;&#039; ► The module Expense Report use numbering rules that you can setup (like other modules do). If you need to keep the hard-coded numbering rule of expenses report used in v6.0 set this constant to 1 ► (&amp;gt;=v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_EXPENSE_IK&#039;&#039;&#039; ► This feature allows you to set index kilometres against a mileage index for different types of vehicles. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_EXPENSE_RULE&#039;&#039;&#039; ► This feature allows you to set a variety of rules per user/group/all so they can only create reports within their limits. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Export Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;EXPORT_CSV_SEPARATOR_TO_USE&#039;&#039;&#039; ► String value to use as default separator to delimit fields of exported files (by default Dolibarr uses &amp;quot;&amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;&amp;quot;). Example: EXPORT_CSV_SEPARATOR_TO_USE=&amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;EXPORT_CSV_FORCE_CHARSET&#039;&#039;&#039; ► Choose the charset used in the output file built by the CSV exporter. By default it is ISO-8859-1. Example: EXPORT_CSV_FORCE_CHARSET= &amp;lt;code&amp;gt;utf-8&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;EXPORTTOOL_CATEGORIES&#039;&#039;&#039; ► Can export categories (several lines) into one column with the &amp;quot;product export profile&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;USE_STRICT_CSV_RULES&#039;&#039;&#039; ► Use strict/real CSV format for export. Do not clean/replace CR+LF with &#039;\n&#039; but quote them using the escaping CSV char (&amp;lt;code&amp;gt;&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*&#039;&#039;&#039;EXPORTS_SHARE_MODELS&#039;&#039;&#039;  ► Share export models between users.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Foundation Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_URL_REDIRECT_SUBSCRIPTION&#039;&#039;&#039; ► Link called and shown when a member account is autocreated in member module by a guest user.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_EXT_URL_SUBSCRIPTION_INFO&#039;&#039;&#039; ► Link of external page pointed by the &amp;quot;Show here&amp;quot; link added in front of payment cell, into the page to make online subscription.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=Holiday Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;HOLIDAY_HIDE_BALANCE&#039;&#039;&#039; ► Hide the user&#039;s vacation balance on the vacation request page&lt;br /&gt;
&lt;br /&gt;
[https://wiki.dolibarr.org/Setup_Other#Top (back to top)]&lt;br /&gt;
=Interventions Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FICHINTER_CLASSIFY_BILLED&#039;&#039;&#039;► Allow to classify an intervention card as &amp;quot;Billed&amp;quot;. This add also trigger &amp;lt;code&amp;gt;FICHINTER_CLASSIFY_BILLED&amp;lt;/code&amp;gt; into list of possible automatic event into agenda.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FICHINTER_DISABLE_DETAILS&#039;&#039;&#039;► Disable entry of details line on intervention. Can validate with no line.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Invoice Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DEPOSIT_MULTI_TVA&#039;&#039;&#039; ► In deposits invoice, creates one line per VAT rate from the origin document ► (6.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_ALLOW_REUSE_OF_CREDIT_WHEN_PARTIALLY_REFUNDED&#039;&#039;&#039; ► If a credit note was partially refunded (a refund was sent to the customer), with common situation, we wait to have the remain refunded too. With this option, it is possible to convert the remain of invoice into a discount to reuse it into another invoice.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_INVOICE_ALLOW_REUSE_OF_CREDIT_WHEN_PARTIALLY_REFUNDED&#039;&#039;&#039; ► See INVOICE_ALLOW_REUSE_OF_CREDIT_WHEN_PARTIALLY_REFUNDED, but for supplier credit notes.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_CAN_ALWAYS_BE_EDITED&#039;&#039;&#039; changed in version 15 or 16 to &#039;&#039;&#039;INVOICE_CAN_BE_EDITED_EVEN_IF_PAYMENT_DONE&#039;&#039;&#039; ► Allow to edit invoices even if payment was started. Note: If the module &amp;quot;BlockedLog&amp;quot; is active (required in some countries for legal reasons), this will not change content of archived logs tracked by this module. By definition there is no way to change or remove archived records. It will just update data in your application and a new record to track your change into the read-only archive log.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_CAN_ALWAYS_BE_REMOVED&#039;&#039;&#039; ► Allow to always delete invoices (even if invoice is not last one). Note: If the module &amp;quot;BlockedLog&amp;quot; is active (required by some countries for legal reason), this will not change content of archived logs tracked by this module. By definition there is no way to change or remove archived records. It will just update data in your application and a new record to track your change into the read-only archive log.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_CAN_NEVER_BE_REMOVED&#039;&#039;&#039; ► Never allow to delete invoices (except draft invoices with ref like (PROV%)).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_POSITIVE_CREDIT_NOTE&#039;&#039;&#039; ► All amounts on PDF credit notes are positive.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FACTURE_DEPOSITS_ARE_JUST_PAYMENTS&#039;&#039;&#039; ► An old way to create initial payment. This treats deposit invoices as a special case and not as legal deposit invoice. Deposit invoices don&#039;t get counted on turnover. They are then applied as a payment, like a discount, on the final invoice. By default, when you include the deposit into draft of final invoice, the amount of final invoice is reduced. With this option, final amount is not reduced but a payment is registered. WARNING: In a lot of european countries, using this option is not allowed.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FACTURE_SENDBYEMAIL_FOR_ALL_STATUS&#039;&#039;&#039; ► Can send invoice by email to customer even if invoice has status &amp;quot;draft&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_CREDIT_NOTE_STANDALONE&#039;&#039;&#039; ► Start implementation to allow a credit note even without invoice (dangerous) ► (v3.9)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_USE_SITUATION&#039;&#039;&#039; ► 1=Enable the &amp;quot;situation invoice&amp;quot; feature. Warning, this feature is bugged and may not be compatible with the final version of the feature once the bug will be solved. Also, using the double-entry accountancy module is not possible when this option is on (due to the same design problem). 2=Enable the &amp;quot;situation invoice&amp;quot; feature with a rewrite. This mode should be better to become a future stable feature.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_USE_SITUATION_CREDIT_NOTE&#039;&#039;&#039; ► Enable the &amp;quot;situation credit note&amp;quot; feature (need &amp;lt;code&amp;gt;INVOICE_USE_SITUATION&amp;lt;/code&amp;gt;) ► (v8.0)&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_USE_RETAINED_WARRANTY&#039;&#039;&#039; ► Enable the retained warranty on invoice ► (v14.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_DISABLE_DEPOSIT&#039;&#039;&#039; ► Disable deposit invoices&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_DISABLE_REPLACEMENT&#039;&#039;&#039; ► Disable replacement invoices&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_DISABLE_CREDIT_NOTE&#039;&#039;&#039; ► Disable credit notes&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_ADD_ZATCA_QR_CODE&#039;&#039;&#039; ► Add a QR code with format ZATCA (for Saudi Arabia) on PDF of invoices.&lt;br /&gt;
*&amp;lt;bdi&amp;gt;&#039;&#039;&#039;INVOICE_ADD_EXTRAFIELD_IN_NOTE&#039;&#039;&#039; ► Add extrafields in note for canelle template ► (v17.0+)&amp;lt;/bdi&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_DEFAULT_NOTE_PUBLIC&#039;&#039;&#039; &amp;lt;bdi&amp;gt;► Default text in public note&amp;lt;/bdi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: To decode a QR image of a ZATCA code: https://www.onlinebarcodereader.com/. You can also use the mobile application https://play.google.com/store/apps/details?id=com.posbankbh.einvoiceqrreader&amp;amp;gl=FR&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT&#039;&#039;&#039; ► See PDF option&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_COLUMN&#039;&#039;&#039; ► See PDF options&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;WORKFLOW_BILL_ON_SHIPMENT&#039;&#039;&#039; ► Change label of button with suitable label when you need to create invoice on shipments&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039; ► When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. Use the tag __DIRECTDOWNLOAD_URL_INVOICE__ in email template to insert it. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_POINTOFTAX_DATE&#039;&#039;&#039; ► Add Point of Tax Date on invoices for country-specific legality reasons ► (v4.0+)&lt;br /&gt;
*&#039;&#039;&#039;FACTURE_ENABLE_NEGATIVE&#039;&#039;&#039; ► Can validate an invoice when amount is negative&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FACTURE_ENABLE_NEGATIVE_LINES&#039;&#039;&#039; ► Allows to add negative lines to an invoice ► (v8.0.2+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_USE_DEFAULT_DOCUMENT&#039;&#039;&#039; ► Allow user to select a default invoice documents models according to invoice type. On invoice create page, the model is dynamically changed on invoice type selection. ► (v9.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FACTURE_REUSE_NOTES_ON_CREATE_FROM&#039;&#039;&#039; ► Reuse the Public Note and Private note of the previous object (Proposal,...) when creating the bill.&lt;br /&gt;
*&#039;&#039;&#039;FACTUREFOURN_REUSE_NOTES_ON_CREATE_FROM&#039;&#039;&#039; ► Reuse the Public Note and Private note of the previous object when creating the supplier bill ► (V13.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_FACNUMBER_IN_DISCOUNT_LIST&#039;&#039;&#039; ► Display the reference of credit notes in discount list when creating the bill.&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_ALLOW_FREE_REF&#039;&#039;&#039; ► Capability to change reference of an invoice. This will be possible as long as the invoice has the status “Draft” and only if your country is not in Europe(V11)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_DISALLOW_REOPEN&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_MAX_FUTURE_DELAY&#039;&#039;&#039; ► Numbers of seconds allowed for billing in the future ► (V14.0)&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_AUTO_NEXT_MONTH_ON_LINES&#039;&#039;&#039; ► Increase start date and end date by one month, if an invoice line is a clone of a time based service AND if this services started on the first day of month and ended on the last day of month ► (V13.0.1)&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_KEEP_DISCOUNT_LINES_AS_IN_ORIGIN&#039;&#039;&#039; ► Does not change a line with a negative price into an absolute discount when creating an invoice ► (V16 ?)&lt;br /&gt;
*&#039;&#039;&#039;INVOICEREC_SET_AUTOFILL_DATE_START&#039;&#039;&#039; and &#039;&#039;&#039;INVOICEREC_SET_AUTOFILL_DATE_END ►&#039;&#039;&#039; Set start and end date to yes for lines of template invoice when created from a draft invoice ► (V16)&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_REC_DATE_TO_YES&#039;&#039;&#039; &#039;&#039;&#039;►&#039;&#039;&#039; Set start and end date to yes by default in add line form for template invoice ► (V16)&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_SUBTYPE_ENABLED&#039;&#039;&#039; ► Extends Dolibarr standard invoice with more invoice types used in some countries. A combo box in the new invoice creation card allows the selection of &amp;quot;subtypes&amp;quot; with values from dictionary &amp;quot;Invoice Subtypes&amp;quot; ► (v19.0+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Leave=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NON_WORKING_DAYS_INCLUDE_SATURDAY&#039;&#039;&#039; ► Set this value to 0 if you want to have the Saturday as a working day&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NON_WORKING_DAYS_INCLUDE_SUNDAY&#039;&#039;&#039; ► Set this value to 0 if you want to have the Sunday as a working day&lt;br /&gt;
&lt;br /&gt;
=Look or Theme=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FAVICON_URL&#039;&#039;&#039; ► favicon url&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EASTER_EGG_COMMITSTRIP&#039;&#039;&#039; ► Show a comic image from the CommitStrip website. Images are refreshed daily. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_STATUS_USES_CSS&#039;&#039;&#039; ►  Change status design using new style ► (v10.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_INCLUDE_GLOBAL_STATS_IN_OPENED_DASHBOARD&#039;&#039;&#039; ► This conf will auto remove global stats box item if there are already in the new dashboard of opened elements and keep displayed stats on the opened item box (not only on mouse over) ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_TOP_MENU_SEARCH_DROPDOWN&#039;&#039;&#039; ► Actually only for eldy theme, this conf move search input  to top menu and use new design too ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THEME_AGRESSIVENESS_RATIO&#039;&#039;&#039; ► This conf can be used to increase/decrease aggressiveness of colors. Value 0 is medium, value is between -100 (light grey colors) to +100 (very flashy colors) ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THEME_SHOW_BORDER_ON_INPUT&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_GLOBAL_WORKBOARD&#039;&#039;&#039; ► Hide the work board of the main page ► (v13.0+)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_GLOBAL_BOXSTATS&#039;&#039;&#039; ► Hide the Statistic Box of the main page&lt;br /&gt;
*&#039;&#039;&#039;ALLOW_THEME_JS ►&#039;&#039;&#039; Allow JS file in theme folder (same name as theme folder)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Manifest (Progressive Web App)=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MANIFEST_APPLI_THEME_COLOR ►&#039;&#039;&#039; Theme color for manifest&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MANIFEST_APPLI_BG_COLOR ►&#039;&#039;&#039; Background color  for manifest&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MANIFEST_APPLI_LOGO_URL  ►&#039;&#039;&#039; Logo for manifest&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MANIFEST_APPLI_LOGO_URL_SIZE  ►&#039;&#039;&#039; Logo url size for app (150, 192, 512px) missing 3 configurations&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Order Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MASSACTION_CREATEBILLS_REDIRECT_IF_ONE&#039;&#039;&#039; ► If set 1, redirects to the one bill created from massaction create bills from order list ► (v20.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MASSACTION_CREATEBILLS_REDIRECT_IF_MANY&#039;&#039;&#039; ► If set to 1, redirects to the invoice list after plural invoices where generated from tho massaction create bills from order list  ► (v20.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ORDERLIST_CREATEBILLS_ONEBYTHIRD&#039;&#039;&#039; ► Allow defining value for option &amp;quot;one by thirdparty&amp;quot; in massaction create bills from orders list page (no by default, yes if set to &#039;yes&#039; or 1) ► (v20.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_PROPAL_REFCLIENT_FOR_ORDER&#039;&#039;&#039; =&amp;gt; Copy customer reference from proposal to order. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ORDER_REQUIRE_SOURCE&#039;&#039;&#039; =&amp;gt; Make the input field &amp;quot;Source of order&amp;quot; mandatory.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ORDER_VALID_AFTER_CLOSE_PROPAL&#039;&#039;&#039; =&amp;gt; When an order is created on a proposal close, the order is directly defined with status &amp;quot;Validated&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ORDER_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039; =&amp;gt; When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ORDER_ENABLE_NEGATIVE&#039;&#039;&#039; =&amp;gt; Can validate an order when amount is negative&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_PROPAGATE_EXTRAFIELDS_TO_ORDER&#039;&#039;&#039; =&amp;gt; Copy also extrafields from thirdparty to order (if name match). ► (v11.0+)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_REMOVE_DROPDOWN_CREATE_BUTTONS_ON_ORDER&#039;&#039;&#039; =&amp;gt; Remove the create dropdown button on order card (introduce on v19) to come back with old buttons.  &#039;&#039;&#039;►&#039;&#039;&#039; (v20.0+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=PDF Options=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ADD_PDF_BACKGROUND&#039;&#039;&#039; ► Define this constant with short name of a PDF file (example &amp;quot;&amp;lt;code&amp;gt;mypdf.pdf&amp;lt;/code&amp;gt;&amp;quot;) that must be saved into directory &amp;quot;&amp;lt;code&amp;gt;documents/mycompany&amp;lt;/code&amp;gt;&amp;quot;. This will add PDF as a background of some of your generated PDF files (proposals,invoices,orders). If you need to concat PDF, see instead [[Module Concat PDF]].&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_FORCE_SAVEAS&#039;&#039;&#039; ► If your browser always asks to save downloaded files on disk (like PDF), try this this option. File may be displayed directly in your browser. Values : 0= Default (file is auto downloaded), 1= For to output the file into the browser tab, 2= For to output the file into a browser tab open with target_blank&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_PDF_AUTOUPDATE&#039;&#039;&#039; ► Disable automatic generation of PDF each time we add/update/delete a product line (we can still build document by clicking on &amp;quot;Generate&amp;quot;). This option may increase interface speed on servers with low CPU.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_PDF_COMPRESSION&#039;&#039;&#039; ► Disable PDF compression.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOCUMENTS_WITH_PICTURE_WIDTH&#039;&#039;&#039; ► Can change size of picture when hidden option &amp;lt;code&amp;gt;MAIN_GENERATE_PROPOSALS_WITH_PICTURE&amp;lt;/code&amp;gt; is used. By default value is &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS&#039;&#039;&#039; ► Adding the company address at the bottom of the page. Disabled by default&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_PROPOSALS_WITH_PICTURE&#039;&#039;&#039; ► Include the first image of the product into the line of the generated PDF for customer proposals.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_ORDERS_WITH_PICTURE&#039;&#039;&#039; ► Include the first image of the product into the line of the generated PDF for customer orders.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_INVOICES_WITH_PICTURE&#039;&#039;&#039; ► Include the first image of the product into the line of the generated PDF for customer invoices.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_SUPPLIER_PROPOSAL_WITH_PICTURE&#039;&#039;&#039; ► Include the first image of the product into the line of the generated PDF for supplier proposals ► (v5.0.3+)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_SUPPLIER_ORDER_WITH_PICTURE&#039;&#039;&#039; ► Include the first image of the product into the line of the generated PDF for supplier orders&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT&#039;&#039;&#039; ► Disable VAT on generated documents. like for an association. (Works with crabe template)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_COLUMN&#039;&#039;&#039; ► Hide column with VAT information but only column not total.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_INVERT_SENDER_RECIPIENT&#039;&#039;&#039; ► Invert sender and recipient in some PDF. Note: This option is set automatically if country if Germany.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ODT_AS_PDF&#039;&#039;&#039; ► Activate ODT to PDF conversion. Value can be &amp;quot;libreoffice&amp;quot; or &amp;quot;unoconv&amp;quot;. Do not use value &#039;&#039;&#039;&amp;lt;nowiki/&amp;gt;&#039;jodconverter&#039;&amp;lt;nowiki/&amp;gt;&#039;&#039;&#039; any more, as it is declared deprecated and partly not functional, use value &#039;&#039;&#039;&amp;lt;nowiki/&amp;gt;&#039;libreoffice&#039;&#039;&#039;&#039; instead, it requires only &#039;&#039;&#039;soffice&#039;&#039;&#039; (OpenOffice or LibreOffice) installed on server (use &#039;&#039;&#039;apt install soffice libreoffice-common libreoffice-writer&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
If you got this error: javaldx failed! Warning: failed to read path from javaldx with no return to prompt when running soffice --headless -env:UserInstallation=file:&amp;quot;/tmp&amp;quot; --convert-to pdf --outdir xxx ./yyy.odt, check that directory defined into env:UserInstallation parameters exists and is writeable.&lt;br /&gt;
&lt;br /&gt;
You may also have a look at this page if your server is on Windows: [[Générer automatiquement des documents PDF à partir de fichier ODT avec Doliwamp]]&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ODT_AS_PDF_DEL_SOURCE&#039;&#039;&#039; ► For ODT generation. If set, then initial behaviour is conserved but ODT file is removed when option to convert it as PDF (see previous) is on. Disabled by default&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_FORCE_FONT&#039;&#039;&#039; ► To ignore font defined into language file and force usage of a particular font. For example &amp;quot;&amp;lt;code&amp;gt;DejaVuSans&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_FORCE_FONT_SIZE&#039;&#039;&#039; ► To force size of font (by default 10). For example &amp;quot;&amp;lt;code&amp;gt;12&amp;lt;/code&amp;gt;&amp;quot; ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_FREETEXT_HEIGHT&#039;&#039;&#039; ► Change height of space reserved to output the free text.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_TITLE_BACKGROUND_COLOR&#039;&#039;&#039; ► Can define a background color onto title line. Example: &amp;lt;code&amp;gt;220,220,200&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_USE_LARGE_LOGO&#039;&#039;&#039; ► Use the original logo with its higher resolution into the PDF instead of the small thumb. This may lead to very very large PDF !&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_BACKGROUND_ON_PDF&#039;&#039;&#039; ► Define this constant with short name of an image (example &amp;quot;&amp;lt;code&amp;gt;myimage.jpg&amp;lt;/code&amp;gt;&amp;quot;) that must be saved into directory &amp;quot;&amp;lt;code&amp;gt;documents/mycompany/logos&amp;lt;/code&amp;gt;&amp;quot;. This will add this background image into your generated PDF files.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_COMPANY_NAME_OF_CONTACT&#039;&#039;&#039; ► Use contact name and information rather than company&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_ADDALSOTARGETDETAILS&#039;&#039;&#039; ► If 1, add details of recipient on generated PDFs (email, fax, url and phone). Can be useful in cases where a printed order/invoice etc is given to a delivery driver/courier etc.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_TVAINTRA_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show VAT N° in source address of PDF to comply with legalities in certain countries. Note that VAT number should be already visible in footer of page ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING&#039;&#039;&#039; ► Add optional esign field in pdf propal ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROFID1_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 1 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROFID2_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 2 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROFID3_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 3 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROFID4_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 4 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROFID5_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 5 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROFID6_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 6 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_BANK_HIDE_NUMBER_SHOW_ONLY_BICIBAN&#039;&#039;&#039; ► Hide bank number (&amp;quot;code banque/guichet/compte&amp;quot; for France, &amp;quot;sort code/account number&amp;quot; for GB, ...) and keep only BIC/IBAN on PDF.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_BOLD_PRODUCT_REF_AND_PERIOD&#039;&#039;&#039; ► Add more visibility (bold) on product ref and period of service in desc. ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_HIDE_PRODUCT_REF_IN_SUPPLIER_LINES&#039;&#039;&#039; ► Modify the use/position of Supplier Ref/Internal Ref with the item Label (name) on PDF documents.&lt;br /&gt;
&lt;br /&gt;
Default (constant not set or Value &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;): Internal ref followed by supplier ref in brackets.&amp;quot;COMPANY-REF-001 (Vendor SKU SUPPLIER-REF-001) - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Value &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;: Supplier ref only eg.&amp;quot;SUPPLIER-REF-001 - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Value &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;: Supplier ref followed by internal ref in brackets. eg.&amp;quot;SUPPLIER-REF-001 (InternalRef COMPANY-REF-001) - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME&#039;&#039;&#039; ► Include alternative/alias name into name on PDF.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_SECURITY_ENCRYPTION&#039;&#039;&#039; ► Encrypt PDF produced by dolibarr ► (v?) . See additional parameters :PDF_SECURITY_ENCRYPTION_RIGHTS (block &#039;modify&#039; or &#039;copy&#039;) - &#039;&#039;&#039;PDF_SECURITY_ENCRYPTION_USERPASS&#039;&#039;&#039; - &#039;&#039;&#039;PDF_SECURITY_ENCRYPTION_OWNERPASS&#039;&#039;&#039; (random if not specified) - &#039;&#039;&#039;PDF_SECURITY_ENCRYPTION_STRENGTH&#039;&#039;&#039; (0 = RC4 40 bit; 1 = RC4 128 bit; 2 = AES 128 bit; 3 = AES 256 bit) - &#039;&#039;&#039;PDF_SECURITY_ENCRYPTION_PUBKEYS&#039;&#039;&#039; Array of recipients containing public-key certificates (&#039;c&#039;) and permissions (&#039;p&#039;) - For example: array(array(&#039;c&#039; =&amp;gt; &#039;file://../examples/data/cert/tcpdf.crt&#039;, &#039;p&#039; =&amp;gt; array(&#039;print&#039;)))&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_SHOW_PROJECT&#039;&#039;&#039; ► Show project onto PDF (supported on supplier order only for the moment)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_USE_ALSO_LANGUAGE_CODE&#039;&#039;&#039; ► The value of this constant must be a language code (&#039;fr_FR&#039;, &#039;en_US&#039;, &#039;sa_SA&#039;, ...). If set, the PDF document will contains both language (default and the one defined by the constant).&lt;br /&gt;
*&#039;&#039;&#039;DOC_SHOW_FIRST_SALES_REP&#039;&#039;&#039; ► Show the sales representant on header (at least on propal azur and rubis template)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_DASH_BETWEEN_LINES&#039;&#039;&#039;&lt;br /&gt;
*&lt;br /&gt;
*&#039;&#039;&#039;SHOW_SUBPRODUCT_REF_IN_PDF&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;PDF_HIDE_PRODUCT_LABEL_IN_SUPPLIER_LINES&#039;&#039;&#039; ► hide product label in supplier order lines (V15+)&lt;br /&gt;
*&#039;&#039;&#039;SHIPPING_PDF_DISPLAY_AMOUNT_HT&#039;&#039;&#039; ► Show HT unit price and HT total price for lines of PDF shipment&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOCUMENTS_HIDE_DESCRIPTION_FOR_FACTURE&#039;&#039;&#039; ► To Hide product description in Customer Invoice&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOCUMENTS_HIDE_DESCRIPTION_FOR_COMMANDE&#039;&#039;&#039; ► To Hide product description in Sales Order&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOCUMENTS_HIDE_DESCRIPTION_FOR_ORDER_SUPPLIER&#039;&#039;&#039; ► To Hide product description in Purchase Order&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOCUMENTS_HIDE_DESCRIPTION_FOR_INVOICE_SUPPLIER&#039;&#039;&#039; ► To Hide product description in Vendor Invoice&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_PROPAL_SHOW_PRICE_INCL_TAX&#039;&#039;&#039; ► Display price with tax on Proposal(cyan template), Order(eratosthene template), Bill(sponge template) (V17+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Point of Sale (POS)=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CASHDESK_SHOW_KEYPAD&#039;&#039;&#039; ► Show a mouse key pad into the &#039;Simple Point of Sale&#039; module.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;POS_ADDON&#039;&#039;&#039; ► Set this value to an existing numbering module rule (for example &#039;&amp;lt;code&amp;gt;mod_facture_terre&amp;lt;/code&amp;gt;&#039;, &#039;&amp;lt;code&amp;gt;mod_facture_mars&amp;lt;/code&amp;gt;&#039;, ...) to force the numbering module to use for invoice ref definition when invoice is created by the POS. For example setting value &amp;lt;code&amp;gt;POS_ADDON&amp;lt;/code&amp;gt; to &#039;&amp;lt;code&amp;gt;mod_facture_terre&amp;lt;/code&amp;gt;&#039; will use the numbering module &#039;&amp;lt;code&amp;gt;terre&amp;lt;/code&amp;gt;&#039; for invoice generated from POS, whatever is the numbering rule defined into invoice module setup (you can also use POS_NUMBERING_TERRE_FORCE_PREFIX and POS_NUMBERING_MARS_FORCE_PREFIX variable to change the prefix used).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;TAKEPOS_ENABLE_SUMUP&#039;&#039;&#039; ► Enable the compatibility of TakePOS with the card reader terminal [https://SumUp.fr SumUp]&lt;br /&gt;
*&#039;&#039;&#039;TAKEPOS_CAN_FORCE_BANK_ACCOUNT_DURING_PAYMENT&#039;&#039;&#039; ► Possibility to force the bank account during the payment in TakePOS  ► (v13.0)&lt;br /&gt;
*&#039;&#039;&#039;TAKEPOS_CONTROL_CASH_OPENING&#039;&#039;&#039; ► Control the cash opening&lt;br /&gt;
*&#039;&#039;&#039;TAKEPOS_NUMPAD_FORCE_PAYMENT_ICONS_LABELS&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Products Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CATEGORY_GRAPHSTATS_ON_PRODUCTS&#039;&#039;&#039; ► Show graph of products with categories and totals in Products Area screen&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PRODUCT_DISABLE_CUSTOMCOUNTRYCODE&#039;&#039;&#039; ► Avoid customs code and country of origin to be set as product description when added to Propal/Order/Invoice&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_ADD_TYPE_IN_DOCUMENTS&#039;&#039;&#039; ► Add text &amp;quot;Product&amp;quot; or &amp;quot;Service&amp;quot; at beginning of details lines on built PDF documents.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DONOTSEARCH_ANYWHERE&#039;&#039;&#039; ► When Ajax search is enabled, search is done on criteria anywhere in label of product. By adding this option, search is done only on start of label. This is really faster when you have a huge number of products.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DIRECT_STATUS_UPDATE&#039;&#039;&#039; ► Allows you to change the status of the product (&#039;&#039;for sale/not for sale for purchase/not for purchase&#039;&#039;) directly on the product page via a &#039;&#039;on/off&#039;&#039; switch button. This can be convenient for those who need to quickly disable certain statuses of products without having to go through the editing product page individually. Also can be very useful if used as a filter on the product and product search list. This option doesn&#039;t generate a MODIFY trigger, so be careful with external modules. ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SEARCH_PRODUCT_BY_FOURN_REF&#039;&#039;&#039; ►  Allow to search a product by supplier ref in document&#039;s add line form. ► (&amp;gt;= 8.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_FREE_LINES&#039;&#039;&#039; ► Disallow using free lines to add line in documents ► (&amp;gt;= 8.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_PRODUCT_ACTIVITY_TRIM&#039;&#039;&#039; ► Show Product and Services turnover before for all four quarters tax over recent years recent years on the product area ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_DESC_IN_LIST&#039;&#039;&#039; ► Show long description of product/service into lists.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_PROPAGATE_CUSTOMER_PRICES_ON_CHILD_COMPANIES&#039;&#039;&#039; ► Disable propagation of prices per customer from a customer to its child company.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_PUBLIC_URL&#039;&#039;&#039; ► Disable public url in product card ► (v14.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_STOCK_LEVELS&#039;&#039;&#039; ► Disable properties of stock limits and desired optimal value on product ► (v14.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_NATURE&#039;&#039;&#039; ► Disable nature in product card ► (v14.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_WEIGHT&#039;&#039;&#039; ► Disable weight in product card ► (v14.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_PRICES&#039;&#039;&#039; ► Disable prices in product card ► (v14.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_ACCOUNTING&#039;&#039;&#039;  ► Disable accounting in product card ► (v14.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_SIZE&#039;&#039;&#039; ► Disable size in product card.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_LENGTH&#039;&#039;&#039; ► Disable length in product card ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_SURFACE&#039;&#039;&#039; ► Disable surface in product card. ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_VOLUME&#039;&#039;&#039; ► Disable volume in product card.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_CUSTOM_INFO&#039;&#039;&#039; ► Disable custom info (custom code and country origin) in product/service card.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_MULTIPRICES_USE_VAT_PER_LEVEL&#039;&#039;&#039; ► When option to use price per level/segment is on, this allows to also set a dedicated vat for each price level.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_CUSTOMER_PRICES_BY_QTY&#039;&#039;&#039; ► If price per quantity ► &#039;&#039;Experimental&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES&#039;&#039;&#039; ► If price per quantity and customer ► &#039;&#039;Experimental&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_LOT_ENABLE_QUALITY_CONTROL&#039;&#039;&#039; ► Enable feature (Display fields for life time and quality control duration) for quality control on product and lot&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_MAX_LENGTH_COMBO&#039;&#039;&#039; ► Limit the length of the label displayed when adding lines in proposals/invoices/orders&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_MAX_VISIBLE_PHOTO&#039;&#039;&#039; ► Show a maximum number of product photos (as thumbnails) on the product main card. Example, setting this constant to &#039;&amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;&#039; will show the first five product photos found on the product card.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_PDF_MERGE_PROPAL&#039;&#039;&#039; ► Enable module Propal merge product PDF&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_USE_OLD_PATH_FOR_PHOTO&#039;&#039;&#039; ► Ask dolibarr to check also old path (before 3.7) where photos were stored.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_USE_UNITS&#039;&#039;&#039; ► Add other units on products (Use same dictionary as default unit feature) and propagate this unit on line of documents.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EDIT_LINE_ALLOW_ALL_UNIT_TYPE ►&#039;&#039;&#039; Allow the selection of other unit types when editing the document line&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;RESOURCE_ON_PRODUCTS&#039;&#039;&#039; ► Allow to affect resources on products/services ► (v10.0+)&lt;br /&gt;
*&#039;&#039;&#039;RESOURCE_ON_SERVICES&#039;&#039;&#039; ► Allow to affect resources on products/services ► (v10.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_SHOW_ORIGIN_IN_COMBO&#039;&#039;&#039; ► Show origin of products when adding lines in proposals/invoices/orders ► (v12.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_ATTRIBUTES_HIDECHILD&#039;&#039;&#039;  ► Add option hide child if variantes&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_ADD_FORM_ADD_TO&#039;&#039;&#039; ► Add a product to a draft proposal/order/invoice, from the product card.&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_SELLBY&#039;&#039;&#039; ► Hide the Sell by date ► (v13.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_EATBY&#039;&#039;&#039; ► Hide the Eat by date ► (v13.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DENY_CHANGE_PRODUCT_TYPE&#039;&#039;&#039; ► Forbid to change the product type&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_SORT_BY_CATEGORY&#039;&#039;&#039; ► Sort the product by categories instead of by ID&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_ADD_NET_MEASURE&#039;&#039;&#039; ► Support Net Measure in product&#039;s card.php (For real weight, volume or piece; needed for some business ie fruits, vegetables....). Note brut value is already available natively, use this option only if you need 2 weights, 2 volumes, ...for each product) ► (v11.0.1+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_PRICE_BASE_TYPE&#039;&#039;&#039;  ► value &#039;TTC&#039; / &#039;HT&#039; specify the default value of the price (with or without taxes) ► (v16.0.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_LOAD_EXTRAFIELD_INTO_OBJECTLINES&#039;&#039;&#039; ► Load product extrafiled on object lines&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_USE_SUB_COST_PRICES_IF_COST_PRICE_EMPTY&#039;&#039;&#039; : Calculate the parent product production price by child prices.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Projects Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_ALLOW_TO_LINK_FROM_OTHER_COMPANY&#039;&#039;&#039; ► Option related to the combo list Project on elements. It is a list of thirdparty IDs. If set, you can link an object to a project owned by one of this thirdparty in the list.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_ALLOW_COMMENT_ON_PROJECT&#039;&#039;&#039; ► Add comment feature on a project&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_ALLOW_COMMENT_ON_TASK&#039;&#039;&#039; ► Add comment feature on project task&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_ALWAYS_DISCARD_CLOSED_PROJECTS_IN_SELECT&#039;&#039;&#039; ► Discards closed projects in every select field. A closed project can&#039;t be associated to an object ► (v20.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS&#039;&#039;&#039; ► Option related to the combo list Project on elements. Can link an element (purhcase invoice, purchase order, reception, ...) to any project even if object has a different supplier than the one of the project to link to. See also PROJECT_ALLOW_TO_LINK_FROM_OTHER_COMPANY that is different because it allows to define some given thirdparty ID to allow.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_CREATE_ON_OVERVIEW_DISABLED&#039;&#039;&#039; ► Hide the &amp;quot;create ...&amp;quot; button on the overview pagec&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_DISABLE_UNLINK_FROM_OVERVIEW&#039;&#039;&#039; ► Enable removing the button from a link in the project overview. ► (&amp;gt;= v8.0.1)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_HIDE_UNSELECTABLES&#039;&#039;&#039; ► Hide into select list, all project that we can&#039;t select (closed or draft)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_HIDE_TASKS&#039;&#039;&#039; ► Hide tasks. For user using project only as an analytics key and not using tasks.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_LIST_SHOW_STARTDATE&#039;&#039;&#039; ► Shows start date of projects in project lists.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_LINK_ON_OVERWIEW_DISABLED&#039;&#039;&#039; ► Hide the &amp;quot;link to&amp;quot; form on the overview page ► (v4.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_SHOW_REF_INTO_LISTS&#039;&#039;&#039; ► Add column with project ref into list (with 3.7 list of supplier invoices only, will be expanded to other lists)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_TIME_ON_ALL_TASKS_MY_PROJECTS&#039;&#039;&#039; ► Can add time spent on tasks, even if i am not assigned to task (however, task must be a project i am a contact).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_OPEN_ALWAYS_ON_TAB&#039;&#039;&#039; ► Set to value &#039;task&#039;, or &#039;preview&#039; to always open the project on the given tab instead of main tab.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_ELEMENTS_FOR_MINUS_MARGIN&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;TIMESPENT_ALWAYS_UPDATE_THM&#039;&#039;&#039; ► when it&#039;s on always check current time of user to update it in task time line ► (v17.0)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Proposals Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_PROPOSALS_WITH_PICTURE&#039;&#039;&#039; ► Add a picture of the product (the first one found if there are several) into the generated PDF of proposals. Note that using this will reduce the available width for the product description.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROPAL_CHOOSE_ODT_DOCUMENT&#039;&#039;&#039; ► On setup page, you&#039;ll be able to select which ODT document to use when close or cancel proposals.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING&#039;&#039;&#039; ► add optional esign field in pdf propal ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROPAL_CLONE_ON_CREATE_PAGE&#039;&#039;&#039; ► On the create proposal page, ask if we want to create the proposal by cloning an already existing one. You should use instead the &amp;quot;Clone&amp;quot; button available on existing proposals.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROPAL_DISABLE_SIGNATURE&#039;&#039;&#039; ► Do no show the box for signature.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_PDF_MERGE_PROPAL&#039;&#039;&#039; ► When generating the proposal PDF, all PDFs linked to products linked to proposal are also included into final PDF&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROPOSAL_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039; ► When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROPOSAL_AUTO_ADD_AUTHOR_AS_CONTACT&#039;&#039;&#039; ► Add Proposal Author as user contact follow proposal&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROPOSAL_PDF_HIDE_PAYMENTTERM&#039;&#039;&#039; ► Do not show the payment term on proposal ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROPOSAL_PDF_HIDE_PAYMENTMODE&#039;&#039;&#039; ► Do not show the payment mode on proposal ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;WORKFLOW_PROPAL_CAN_CLASSIFY_BILLED_WITHOUT_INVOICES&#039;&#039;&#039; ► Button &amp;quot;Classified Billed&amp;quot; is visible on proposal even if there is no invoice linked to proposal.&lt;br /&gt;
*&#039;&#039;&#039;PROPAL_REOPEN_UNSIGNED_ONLY&#039;&#039;&#039;  ► Do not allow reopening of signed (or billed) proposals. (V15)&lt;br /&gt;
*&#039;&#039;&#039;PROPOSAL_ARE_NOT_BILLABLE&#039;&#039;&#039;  ► Disable billing button on proposals (V15)&lt;br /&gt;
*&#039;&#039;&#039;PROPAL_DEFAULT_NOTE_PUBLIC&#039;&#039;&#039; ► Default text in public note&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Services Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SERVICE_ARE_ECOMMERCE_200238EC&#039;&#039;&#039; ►  If seller and buyer are in Europe and buyer is not a company, use the VAT of buying country. For french speaking people, see also the page [[Loi_européenne_TVA_Vente_à_Distance_VAD_et_e-commerce_BtoC]].&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FILL_SERVICE_DATES_FROM_LAST_SERVICE_LINE&#039;&#039;&#039;  ► (v13.0) On add line form add a button to fill service dates from the last service line&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Shipments=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;STOCK_WAREHOUSE_NOT_REQUIRED_FOR_SHIPMENTS&#039;&#039;&#039; ► If set, you can add a shipment line, with no stock source defined. ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SHIPMENT_GETS_ALL_ORDER_PRODUCTS&#039;&#039;&#039; ► Add all order lines in shipment, including the one with 0 in quantity&lt;br /&gt;
*&#039;&#039;&#039;SHIPPING_PDF_HIDE_ORDERED&#039;&#039;&#039; ►Hide column quantity ordered on shipment pdf (&amp;gt;=15.0)&lt;br /&gt;
*&#039;&#039;&#039;STOCK_SUPPORTS_SERVICES&#039;&#039;&#039; ►Allow to manage services into warehouse and allow to ship services&lt;br /&gt;
*&#039;&#039;&#039;SHIPMENT_SUPPORTS_SERVICES&#039;&#039;&#039; ►Allow to ship services without stock (&amp;gt;=19.0)&lt;br /&gt;
*&#039;&#039;&#039;SHIPPING_DISPLAY_STOCK_ENTRY_DATE&#039;&#039;&#039; ►Display date entry stock exped and sort in date order (&amp;gt;=19.0)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Stocks=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_DISABLE_STOCK_DISPATCH_WHEN_TOTAL_REACHED&#039;&#039;&#039; ► Disable stock dispatch when total expected was already received&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;STOCK_EXCLUDE_VIRTUAL_PRODUCTS&#039;&#039;&#039; ► If product is a virtual product, we do not manage stock for it.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ENTREPOT_EXTRA_STATUS&#039;&#039;&#039; ► Instead of the 2 status (Closed, Open), a Warehouse has 3 status: Closed, Open (for all movements), Open (for internal movement only). Internal movement only means you can&#039;t use the warehouse to make shipment or receptions.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_STATUS_FOR_VIRTUAL_STOCK&#039;&#039;&#039; ► For the calculation of virtual stocks, by default supplier orders with the status 3 (ordered) and 4 (partially received) are used. You can enter the list of statuses to be taken into account separated by commas for this calculation (example: 0,1,2,3)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;STOCK_MOVEMENT_LIST_HIDE_UNIT_PRICE&#039;&#039;&#039; ► to hide unit price on some pages (V15+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;DISABLE_QTY_OVERWRITE&#039;&#039;&#039; ► Disable quantity overwrites on inventories ► (v19.0)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Suppliers Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FOURN_PRODUCT_AVAILABILITY&#039;&#039;&#039; ► On the Suppliers price page of the products, activate the supplier product availability. &#039;&#039;This is duplicate feature with delivery_delay introduced with 3.8.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;RELOAD_PAGE_ON_SUPPLIER_CHANGE&#039;&#039;&#039; ► On creation of a supplier order/invoice, reload form with supplier-specific details when supplier is selected from drop-down list.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_INVOICE_WITH_PREDEFINED_PRICES_ONLY&#039;&#039;&#039; ► Restrict selection of products in supplier invoice to only those with a buying price defined for that supplier. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_AUTOADD_USER_CONTACT&#039;&#039;&#039; ► Add user approving supplier order as a contact automatically.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_DEFAULT_PAYMENT_MODE_ID&#039;&#039;&#039; ► Set the default payment method for suppliers (&amp;lt;code&amp;gt;rowid&amp;lt;/code&amp;gt; in table &amp;lt;code&amp;gt;llx_c_paiement&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_USE_DISPATCH_STATUS&#039;&#039;&#039; ► Add a status on each dispatch order line when receiving products from suppliers ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_NO_DIRECT_APPROVE&#039;&#039;&#039; ► No button &amp;quot;Validate and Approve&amp;quot;. Always do step &amp;quot;Validate&amp;quot; and &amp;quot;Approve&amp;quot; in 2 steps.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_WITH_PREDEFINED_PRICES_ONLY&#039;&#039;&#039; ► Restrict selection of products in supplier order to only those with a buying price defined for that supplier. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_EDIT_BUYINGPRICE_DURING_RECEIPT&#039;&#039;&#039; ► Can modify the buying price used for PMP calculation when making a stock reception on a supplier order. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_PROPOSAL_WITH_PREDEFINED_PRICES_ONLY&#039;&#039;&#039; ► Restrict selection of products in supplier proposal to only those with a buying price defined for that supplier. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;DISPLAY_DISCOUNTED_SUPPLIER_PRICE&#039;&#039;&#039; ► Allow to display discounted supplier price when searching product in supplier documents ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_CAN_EDIT_SUPPLIER_ON_SUPPLIER_ORDER&#039;&#039;&#039; ►  Allow to change the supplier on a draft supplier order ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_PROPOSAL_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_CAN_UPDATE_BUYINGPRICE_DURING_RECEIPT&#039;&#039;&#039; ►  Allow to change price on receipt ► (v19.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_HIDE_SUPPLIER_OBJECTLINES&#039;&#039;&#039; ►  Hide the supplier information on objectlines (invoices, etc..) ► (v19.0)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Third Parties Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;COMPANY_AQUARIUM_CLEAN_REGEX&#039;&#039;&#039; ► Add a REGEX rule on the third parties names. It applies a regex replacement pattern on generated code if COMPANY_AQUARIUM_CLEAN_REGEX is set. Value must be a regex with parenthesis. The part into parenthesis is kept, the rest removed. For example if COMPANY_AQUARIUM_CLEAN_REGEX = &#039;&amp;lt;code&amp;gt;^..(..)..(.*)&amp;lt;/code&amp;gt;&#039; the first char and second char are removed and the char 5 and 6 too ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_UNKNOWN_CUSTOMERS_ARE_COMPANIES&#039;&#039;&#039; ► See in Global options section.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_VAT_COMPANIES_IN_EEC_WITH_INVALID_VAT_ID_ARE_INDIVIDUAL&#039;&#039;&#039; ► See in Global options section.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_EMAIL_MANDATORY&#039;&#039;&#039; ► E-mail is a mandatory field when creating a thirdparty&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_DISABLE_CUSTOMERS&#039;&#039;&#039; ► Remove all menu and features related to customers&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_DISABLE_PROSPECTS&#039;&#039;&#039; ► Remove all menu and features related to prospects&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_DISABLE_PROSPECTSCUSTOMERS ►&#039;&#039;&#039; Remove the status &amp;quot;Customer/Prospect&amp;quot; when thirdparties creation or modification&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_DISABLE_STATE&#039;&#039;&#039; ► Do not use field &amp;quot;state/province&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_SORT_ON_TYPEENT&#039;&#039;&#039; ► The combo list of &amp;quot;type of third party&amp;quot; is sorted on alphabetical order instead of the field &amp;quot;position&amp;quot; that appears into dictionary instead.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_ASK_FOR_SHIPPING_METHOD&#039;&#039;&#039; ► Shipping method can be predefined on customer card and will be used as default on order creation&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_ADD_REF_IN_LIST&#039;&#039;&#039; ► Displays the code before the name in the lists  ► Value 1 -&amp;gt; Code + name + alias ou Code + name if colone alias 2 -&amp;gt; Code + alias 3 -&amp;gt; Alias&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_CAN_HAVE_CATEGORY_EVEN_IF_NOT_CUSTOMER_PROSPECT_SUPPLIER&#039;&#039;&#039; ► Possible to add Categories to third parties that are not customer, prospect or supplier.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_DEFAULT_USELOCALTAX1&#039;&#039;&#039; ► When creating a new third party, the field &amp;quot;Use second tax&amp;quot; is set to on or off depending on value of this parameter.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_DEFAULT_USELOCALTAX2&#039;&#039;&#039; ► When creating a new third party, the field &amp;quot;Use third tax&amp;quot; is set to on or off depending on value of this parameter.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_NOTCUSTOMERPROSPECT_BY_DEFAULT&#039;&#039;&#039; ► Do not set status &amp;quot;Customer/Prospect&amp;quot; to &amp;quot;on&amp;quot; when creating a new third party from menu &amp;quot;New third party&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_INCLUDE_PARENT_IN_LINKTO&#039;&#039;&#039; ► Search also for elements on parent third party when using the &amp;quot;link to&amp;quot; object feature.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_INCLUDE_PROJECT_THIRDPARY_IN_LINKTO&#039;&#039;&#039; ► Search also for elements on third party that own the project of the current element when using the &amp;quot;link to&amp;quot; object feature (if project is owned by a different thirdparty than current one).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_LOGO_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039; ► When a logo is uploaded, a share key is automatically set so the file can be downloaded using the share key.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_SUGGEST_ALSO_ADDRESS_CREATION&#039;&#039;&#039; ► Enabled contact creation on third-party create card&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_QUICKSEARCH_ON_FIELDS&#039;&#039;&#039; ► Personalized search criteria ► Example: $conf-&amp;gt;global-&amp;gt;THIRDPARTY_QUICKSEARCH_ON_FIELDS = &#039;s.nom=ThirdPartyName;s.name_alias=AliasNameShort;s.code_client=CustomerCode&#039;&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_CAN_CONVERT_CUSTOMERS_TO_MEMBERS&#039;&#039;&#039; ► Enabled member creation on third-party create card&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_DISABLE_PARENTCOMPANY&#039;&#039;&#039; ► Disables attachment to a parent company.&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_CUSTOMERPROSPECT_BY_DEFAULT&#039;&#039;&#039; ► Set the third party to customer by default&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_SUPPLIER_BY_DEFAULT&#039;&#039;&#039; ► Set the third party to supplier by default&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_CUSTOMERTYPE_BY_DEFAULT&#039;&#039;&#039; ► Set the third party type by default (3 = customer &amp;amp; prospect / 2 = prospect / 1 = customer )&lt;br /&gt;
*&#039;&#039;&#039;CONTACT_DISABLE_PERSONALINFO&#039;&#039;&#039; ► Disable Personal data on contact page&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_DISABLE_WORKFORCE&#039;&#039;&#039; ► Disable work force selector on society page&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_SHOW_VAT_IN_LIST&#039;&#039;&#039; ► display VAT number in combo list of thirdparties ► (V15+)&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_DEFAULT_CREATE_CONTACT&#039;&#039;&#039; ► When set, a contact is created at the creation of an individual third party ► (v14.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SUPPORT_SHARED_CONTACT_BETWEEN_THIRDPARTIES&#039;&#039;&#039; ► Able to share contact between several third parties&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Ticket Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;TICKET_SHOW_MESSAGES_ON_CARD&#039;&#039;&#039; ►Display all ticket related messages on the main ticket card. ► (&amp;gt;= 10.0)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_AUTO_ASSIGN_CONTRACT_CREATE&#039;&#039;&#039; ►Automatically create a contract linked to the ticket ► (&amp;gt;= 10.0)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_AUTO_CREATE_FICHINTER_CREATE&#039;&#039;&#039; ►Automatically create an intervention linked to the ticket ► (&amp;gt;= 10.0)&lt;br /&gt;
*&#039;&#039;&#039;WORKFLOW_TICKET_CLOSE_INTERVENTION&#039;&#039;&#039; ►On ticket close, automatically close an intervention linked to the ticket&lt;br /&gt;
*&#039;&#039;&#039;TICKET_CHECK_NOTIFY_THIRDPARTY_AT_CREATION&#039;&#039;&#039; ►Automatically check &amp;quot;notify thirdparty at creation&amp;quot; ( &amp;gt;=16)&lt;br /&gt;
*&#039;&#039;&#039;TICKETS_MESSAGE_FORCE_MAIL&#039;&#039;&#039; ► Pre check email sending on ticket message (&amp;gt;=15)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_SEND_PRIVATE_EMAIL ►&#039;&#039;&#039; Allow a private message to be sent by mail (&amp;gt;=17)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_LIMIT_VIEW_ASSIGNED_ONLY&#039;&#039;&#039;  &#039;&#039;&#039;►&#039;&#039;&#039; Only display tickets assigned to the user&lt;br /&gt;
*&#039;&#039;&#039;TICKET_ADD_AUTHOR_AS_CONTACT&#039;&#039;&#039; &#039;&#039;&#039;►&#039;&#039;&#039; If set to 1: Automatically adds the author as internal contact. If set to 2: Automatically adds the author as external contact if external user. (&amp;gt;=20)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_ASSIGN_CONTACT_TO_MESSAGE&#039;&#039;&#039; &#039;&#039;&#039;►&#039;&#039;&#039; If known, the external contact is assigned to the message. (&amp;gt;=19)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_ALLOW_CLASSIFICATION_MODIFICATION_EVEN_IF_CLOSED&#039;&#039;&#039; &#039;&#039;&#039;►&#039;&#039;&#039;Allow modify ticket classification even if closed. (&amp;gt;=19)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=VAT Report=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_INCLUDE_ZERO_VAT_IN_REPORTS&#039;&#039;&#039; ► Include lines with VAT to 0% (for &amp;quot;auto-liquidation&amp;quot; in EEC) ► (v8.0.3+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Website Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;WEBSITE_USE_WEBSITE_ACCOUNTS&#039;&#039;&#039; ► Add a table and a tab to manage some accounts for websites to a third party&lt;br /&gt;
*&#039;&#039;&#039;WEBSITE_ALLOW_OVERWRITE_GIT_SOURCE&#039;&#039;&#039; ► Add a button to export a website over the GIT sources&lt;br /&gt;
*&#039;&#039;&#039;WEBSITE_ADD_CSS_TO_BODY&#039;&#039;&#039; ► Add a CSS class to the body tag of websites&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=WYSIWYG Editor=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FCKEDITOR_ENABLE_DETAILS_FULL&#039;&#039;&#039; ► Can cut and paste external images (hosted on external server) into description of proposal, orders or invoices. WARNING: PDF generation is not guaranteed with this. Also if the image is removed or renamed by the image hosting service, your proposal, order or invoice will be broken.&lt;br /&gt;
*&#039;&#039;&#039;FCKEDITOR_ALLOW_ANY_CONTENT&#039;&#039;&#039; ► Allow to enter any content. However, this will totally disable content filtering which is one of the most important CKEditor features. You can use this to keep all your tags and attributes in the html content.&lt;br /&gt;
*&#039;&#039;&#039;FCKEDITOR_ENABLE_SCAYT_AUTOSTARTUP ►&#039;&#039;&#039; Allow to activate the SpellCheckAsYouType (SCAYT) plugins of CKEditor i.e an automatic spell checking. The value to activate this option is 1.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=STRIPE Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;STRIPE_FORCE_VERSION&#039;&#039;&#039; ► Force the STRIPE version. For Example: &amp;quot;2019-09-09&amp;quot; (v11+)&lt;br /&gt;
*&#039;&#039;&#039;STRIPE_REUSE_EXISTING_INTENT_IF_FOUND&#039;&#039;&#039; ► With this, you will have idempotency key but the payment intention will be reuse and not Generate again (13+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=ClickToDial Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CLICKTODIAL_FORCENEWTARGET&#039;&#039;&#039; ► Open in new page.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=For SaaS / Cloud hosting integrators=&lt;br /&gt;
&lt;br /&gt;
The following options are useless for a common usage of Dolibarr. But they are usefull if you plan to host / provide Dolibarr instances as Software As A Service (SAAS) to your customers.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CRON_DISABLE_KEY_CHANGE&#039;&#039;&#039; ► When you provide an instance to a customer, you probably also add an entry in the cron of this user so Dolibarr batch and scheduler can work correctly. For security purpose, it may have a security key that is inside the command line into the cron entry and this entry must match the value defined into Dolibarr setup (setup of module &#039;Scheduled Jobs&#039;). Because, a customer of a Saas platform will probably have no access to edit the cron file, it is also import that he has no way to edit the key into the Dolibarr setup, so the key in the cron command line will always match the key in Dolibarr setup, and the Dolibarr batches will executed without security errors. To be sure, the customer does not change the value, you can set this constant to 1 into the table [[Table_llx_const]].&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CRON_DISABLE_TUTORIAL_CRON&#039;&#039;&#039; ► Disable the tutorial about how to install the cron script (on a SaaS hosting, this should be done by the web hosting provider)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CRON_WARNING_DELAY_HOURS&#039;&#039;&#039; ► Set this value to the frequency set for the cron script (so a warning will be shown to user to warn it about max frequency of its scheduled jobs)&lt;br /&gt;
 &lt;br /&gt;
*&#039;&#039;&#039;MAILING_NO_USING_PHPMAIL&#039;&#039;&#039; ► To avoid bad use of the emailing module, it is recommended to set this option to 1 (This option is described previously). Also you can complete the message visible by customers when they try to setup the SMTP credentials of their Dolibarr by using the constant MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS (This option is described previously). For example, you can point to a FAQ on your website.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_IN_SAME_EMAIL&#039;&#039;&#039; ► If you have set a system limit on number of recipients on your system, you can set also this option to match the same value, so users will be informed: So &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_IN_SAME_EMAIL&#039;&#039;&#039; restricts sending of 1 email message to &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; recipients for the same email message (x for To: + CC: + BCC:). If not defined, value is &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;. Required to fight against spamming that include a ton of recipients in 1 message. Note that &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_TO_IN_SAME_EMAIL&#039;&#039;&#039;, &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_CC_IN_SAME_EMAIL&#039;&#039;&#039; and &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_BCC_IN_SAME_EMAIL&#039;&#039;&#039; are also available. Note that this is not a hard limit; it is just the quantity that will be displayed on warnings on screen. For a real limit, this must be implemented into the system.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_LIMIT_SENDBYDAY&#039;&#039;&#039; ► This is a limit of number of emails, an instance can send. Note that this is not a hard limit; it is just the quantity that will be displayed on warnings on screen. For a real limit, this must be implemented into the system.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_LIMIT_WARNING_PHPMAIL&#039;&#039;&#039; ► Set this value to a translation key. Then add translation keys into the instance so user will see a message when into the email setup page. For example, you can set a message to say &#039;&#039;Warning: To avoid abuse, when using default setup, you are restricted to 500 emails per day for all your application (account may be suspended in case of violation of this rule. You can setup application to use your own SMTP server for sending email so you want have no restriction at all (see menu Home-Setup-Emails)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ALWAYS_CREATE_LOCK_AFTER_LAST_UPGRADE&#039;&#039;&#039; ► If set, when you launch upgrades of your customer instances, you are sure that the upgrade process recreate automatically the file install.lock and remove the upgrade.unlock so the administration tools like install.php, upgrade.php and repair.php can&#039;t be used on your customer instance (until the install.lock file is deleted or the upgrade.unlock file is created).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EXTERNAL_SMTP_CLIENT_IP_ADDRESS&#039;&#039;&#039; ► (A better name of this option should be MAIN_EXTERNAL_MAIL_CLIENT_IP_ADDRESS). Set here the list of IPs where your Dolibarr instances are hosted. So when your customer go into the setup area of email:&lt;br /&gt;
**If he chose mail method, a message will explain him how to setup its SPF record for its email domain (showing the list of IP). This is to avoid to have its emails, sent from its Dolibarr instance, fails due to strict antispam rule of some emailing servers.&lt;br /&gt;
**If he chose smtp method, a message will explain him the list of IP he can use if there is restriction on IP by the SMTP agent. If you also need to add a message to help SPF setup, see option &#039;&#039;&#039;MAIN_EXTERNAL_SMTP_SPF_STRING_TO_ADD&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EXTERNAL_SMTP_SPF_STRING_TO_ADD&#039;&#039;&#039; ► Set here the string to add in the SPF record This string will be shown into a help message when the user in in the setup of email page and has choose a method using an external SMTP server.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FIRST_PING_OK_ID&#039;&#039;&#039; ► Set this value to &amp;quot;disabled&amp;quot; to remove completely any ping after a complete setup.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FILECHECK_LOCAL_SUFFIX&#039;&#039;&#039; and &#039;&#039;&#039;MAIN_FILECHECK_LOCAL_EXT&#039;&#039;&#039; ► If you offer a customized or patched version of Dolibarr, when the user will use the tool to check the integrity of files, the default xml file name used for signature checking will be the official file provided by the Dolibarr team, so it does not includes your own changes. To have the suggested signature file being your own file, you can set the constant MAIN_FILECHECK_LOCAL_SUFFIX to a suffix. For example, set this to &amp;quot;&#039;&#039;&#039;-mysaassolution&#039;&#039;&#039;&amp;quot;. So, when the user will use the file integrity tool, the default file to check for signature will be &amp;quot;&#039;&#039;&#039;/install/filelist-10.0.2-mysaassolution.xml&#039;&#039;&#039;&amp;quot; instead of &amp;quot;&#039;&#039;&#039;/install/filelist-10.0.2.xml&#039;&#039;&#039;&amp;quot;. All you have to do is generate the signature file &#039;&#039;&#039;mysaassolution&#039;&#039;&#039; using the tool &#039;&#039;&#039;build/generate_filelist_xml.php&#039;&#039;&#039; and put this file into the install directory of your customer instance. Doing this, your customer, and yourself, will be able to check if a file was modified without being disturbed by false alerts due to your customized files or patches (they will be included in the signature used for check). Also, if you want to zip the customized signature file into &amp;quot;&#039;&#039;&#039;/install/filelist-10.0.2-mysaassolution.xml.zip&#039;&#039;&#039;&amp;quot;, you can set the constant MAIN_FILECHECK_LOCAL_EXT to &#039;.zip&#039;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP&#039;&#039;&#039; ► Set to 1 by default (so warning is hidden). You can set it to 0 to show a warning to encourage admin to set its own SMTP service.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_SENDMODE_password&#039;&#039;&#039; ► To force the mode to send the email on the &amp;quot;password forgotten&amp;quot; page. So you can decide to use php mail or SMTP method for this specific use case.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING&#039;&#039;&#039; ► If set to N, the warning saying modules are not activated will be shown if number of activated module is &amp;lt; N (Having this variable not defined is same than having it set to 1). This may be usefull if you preinstall an application with some modules already loaded by default and you want to keep the warning to be sure the user will enable other modules he need, even if some modules are already enabed.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NO_UPGRADE_REDIRECT_ON_LEVEL_3_CHANGE&#039;&#039;&#039; ► The page to make the migration is not shown automatically when you deploy files of version X.Y.Z+delta over an  installation with a database version X.Y.Z. The upgrade page will be shown automatically only if there is a change on value of X or Y in version.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SYSLOG_DISABLE_LOGHANDLER_SYSLOG&#039;&#039;&#039; ► Set this to 1 to disable usage of syslog (having all customer instances logging in the same system file is not a good idea).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;WEBSITE_REPLACE_INFO_ABOUT_USAGE_WITH_WEBSERVER&#039;&#039;&#039; ► Put here a text or a translation key of a text to show when the user will use the feature &amp;quot;Deploy&amp;quot; when he want to deploy a website done with Dolibarr CMS. So you can, for example, show him a message that this feature is not part of its subscription and putting a website online may need a complementary subscription.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Fichier_de_configuration&amp;diff=60521</id>
		<title>Fichier de configuration</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Fichier_de_configuration&amp;diff=60521"/>
		<updated>2024-06-11T15:51:02Z</updated>

		<summary type="html">&lt;p&gt;Iouston: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- BEGIN interlang links --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Do NOT edit this section&lt;br /&gt;
     Links below are automatically managed by PolyglotBot&lt;br /&gt;
     You can edit links on the English source page : Configuration_file --&amp;gt;&lt;br /&gt;
[[en:Configuration_file]]&lt;br /&gt;
[[es:Fichero_de_configuración]]&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Admin fr]]&lt;br /&gt;
{{TemplateDocDev}}&lt;br /&gt;
&lt;br /&gt;
Le fichier de configuration de Dolibarr est &#039;&#039;&#039;conf/conf.php&#039;&#039;&#039;. Il est écrit par la procédure d&#039;installation automatisée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Contenu=&lt;br /&gt;
Le contenu du fichier standard est :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$dolibarr_main_document_root=&amp;quot;/home/www/dolibarr/htdocs&amp;quot;;&lt;br /&gt;
$dolibarr_main_url_root=&amp;quot;http://mondomaine.com/dolibarr&amp;quot;;&lt;br /&gt;
$dolibarr_main_db_type=&amp;quot;mysql&amp;quot;;&lt;br /&gt;
$dolibarr_main_db_host=&amp;quot;localhost&amp;quot;;&lt;br /&gt;
$dolibarr_main_db_port=&amp;quot;3306&amp;quot;;&lt;br /&gt;
$dolibarr_main_db_name=&amp;quot;dolibarr&amp;quot;;&lt;br /&gt;
$dolibarr_main_db_user=&amp;quot;dolibarr&amp;quot;;&lt;br /&gt;
$dolibarr_main_db_pass=&amp;quot;&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Autres options :&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$dolibarr_main_demo=&amp;quot;demologin,demopass&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
-&amp;gt; Désactive certaines fonctions pour rendre l&#039;application figée à certains niveaux. Ceci est requis si Dolibarr est en accès comme site de démo à des utilisateurs qui aiment un peu trop faire n&#039;importe quoi.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$dolibarr_main_prod=&amp;quot;1&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
-&amp;gt; Quand cette option est définie, les messages d&#039;erreurs internes à Dolibarr ne sont plus remontée à l&#039;écran. Cette option est conçue pour les environnements de production afin de ne pas divulguer d&#039;informations aux hackers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$dolibarr_main_authentication=&amp;quot;dolibarr&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
-&amp;gt; Permet de changer la manière dont le mot de passe est controlé:&lt;br /&gt;
&lt;br /&gt;
*La valeur &amp;quot;dolibarr&amp;quot; s&#039;appuie sur le mot de passe en base de donnée.&lt;br /&gt;
*&amp;quot;ldap&amp;quot; permet de se baser sur un annuaire LDAP (dans ce cas il faut renseigner les autres parametres LDAP (vor ficiher conf.php.example).&lt;br /&gt;
*&amp;quot;http&amp;quot; utilise l&#039;authentification du protocol HTTP Basic (il est nécesssaire de configurer votre serveur web pour avoir Dolibarr dans une session d&#039;authentification HTTP Basic).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$dolibarr_main_authentication=&amp;quot;dolibarr&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$dolibarr_allow_download_external_modules=1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
-&amp;gt; Permet d&#039;afficher un lien de téléchargement du fichier zip d&#039;un module externe placé dans le dossier custom. Le lien de téléchargement est accessible après avoir cliqué sur l&#039;icone d&#039;aide &#039;?&#039; depuis la liste des modules.&lt;br /&gt;
&lt;br /&gt;
Dolibarr fournit un fichier conf modèle nommé &#039;&#039;&#039;conf/conf.php.example&#039;&#039;&#039; où chaque paramètre est commenté.&lt;br /&gt;
&lt;br /&gt;
=Lecture/Ecriture du fichier=&lt;br /&gt;
Ce fichier ne doit pas jamais être ni lu directement, ni modifié par aucune fonctionnalité de Dolibarr.&lt;br /&gt;
&lt;br /&gt;
Il est créé par la procédure d&#039;installation ou de mise a jour de Dolibarr (install/index.php) qui est la seule habilitée à effectuer des actions sur ce fichier.&lt;br /&gt;
&lt;br /&gt;
=Utilisation dans le code=&lt;br /&gt;
Le contenu de ce fichier est accessible au développeur au travers de constantes ou de l&#039;objet &#039;&#039;&#039;$conf&#039;&#039;&#039; déjà chargés par le code présent dans &#039;&#039;&#039;master.inc.php&#039;&#039;&#039; ou &#039;&#039;&#039;main.inc.php&#039;&#039;&#039; (ces fichiers doivent etre inclus au début de tout programme PHP Dolibarr: master.inc.php pour les scripts et main.inc.php pour les pages). Votre code ne doit jamais ouvrir le fichier de configuration directement. Ce n&#039;est pas nécessaire.&lt;br /&gt;
&lt;br /&gt;
Ainsi:&lt;br /&gt;
&lt;br /&gt;
*$dolibarr_main_data_root est connu dans le code grâce à la constante: DOL_DATA_ROOT (indique l&#039;emplacement physique des fichiers uploadés ou temporaires crées dans Dolibarr)&lt;br /&gt;
*$dolibarr_main_document_root est connu dans le code grâce à la constante: DOL_DOCUMENT_ROOT (mais aussi dans le tableau $conf-&amp;gt;file-&amp;gt;dol_document_root[]. Indique l&#039;emplacement physique des fichiers programmes Dolibarr)&lt;br /&gt;
*$dolibarr_main_url_root est connu dans le code grâce à la constante: DOL_URL_ROOT (indique le chemin URL racine de Dolibarr)&lt;br /&gt;
*$dolibarr_main_db_type est accessible par $conf-&amp;gt;db-&amp;gt;type&lt;br /&gt;
*$dolibarr_main_db_host est accessible par $conf-&amp;gt;db-&amp;gt;host&lt;br /&gt;
*$dolibarr_main_db_port est accessible par $conf-&amp;gt;db-&amp;gt;port&lt;br /&gt;
*$dolibarr_main_db_name est accessible par $conf-&amp;gt;db-&amp;gt;name&lt;br /&gt;
*$dolibarr_main_db_user est accessible par $conf-&amp;gt;db-&amp;gt;login&lt;br /&gt;
*$dolibarr_main_db_pass n&#039;est pas accessible. Il est lu par &#039;&#039;&#039;master.inc.php&#039;&#039;&#039; (appelé par tout fichier PHP) qui crée un connexion &#039;&#039;&#039;$db&#039;&#039;&#039; puis efface de sa mémoire le mot de passe.&lt;br /&gt;
&lt;br /&gt;
Voir les tutoriaux sur le [[Developpement_module|Développements de modules]] ou [[Développement de scripts]] pour plus d&#039;information.&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Fichier_de_configuration&amp;diff=60520</id>
		<title>Fichier de configuration</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Fichier_de_configuration&amp;diff=60520"/>
		<updated>2024-06-11T15:49:57Z</updated>

		<summary type="html">&lt;p&gt;Iouston: add $dolibarr_allow_download_external_modules&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- BEGIN interlang links --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Do NOT edit this section&lt;br /&gt;
     Links below are automatically managed by PolyglotBot&lt;br /&gt;
     You can edit links on the English source page : Configuration_file --&amp;gt;&lt;br /&gt;
[[en:Configuration_file]]&lt;br /&gt;
[[es:Fichero_de_configuración]]&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Admin fr]]&lt;br /&gt;
{{TemplateDocDev}}&lt;br /&gt;
&lt;br /&gt;
Le fichier de configuration de Dolibarr est &#039;&#039;&#039;conf/conf.php&#039;&#039;&#039;. Il est écrit par la procédure d&#039;installation automatisée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Contenu=&lt;br /&gt;
Le contenu du fichier standard est :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$dolibarr_main_document_root=&amp;quot;/home/www/dolibarr/htdocs&amp;quot;;&lt;br /&gt;
$dolibarr_main_url_root=&amp;quot;http://mondomaine.com/dolibarr&amp;quot;;&lt;br /&gt;
$dolibarr_main_db_type=&amp;quot;mysql&amp;quot;;&lt;br /&gt;
$dolibarr_main_db_host=&amp;quot;localhost&amp;quot;;&lt;br /&gt;
$dolibarr_main_db_port=&amp;quot;3306&amp;quot;;&lt;br /&gt;
$dolibarr_main_db_name=&amp;quot;dolibarr&amp;quot;;&lt;br /&gt;
$dolibarr_main_db_user=&amp;quot;dolibarr&amp;quot;;&lt;br /&gt;
$dolibarr_main_db_pass=&amp;quot;&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Autres options :&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$dolibarr_main_demo=&amp;quot;demologin,demopass&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
-&amp;gt; Désactive certaines fonctions pour rendre l&#039;application figée à certains niveaux. Ceci est requis si Dolibarr est en accès comme site de démo à des utilisateurs qui aiment un peu trop faire n&#039;importe quoi.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$dolibarr_main_prod=&amp;quot;1&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
-&amp;gt; Quand cette option est définie, les messages d&#039;erreurs internes à Dolibarr ne sont plus remontée à l&#039;écran. Cette option est conçue pour les environnements de production afin de ne pas divulguer d&#039;informations aux hackers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$dolibarr_main_authentication=&amp;quot;dolibarr&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
-&amp;gt; Permet de changer la manière dont le mot de passe est controlé:&lt;br /&gt;
&lt;br /&gt;
*La valeur &amp;quot;dolibarr&amp;quot; s&#039;appuie sur le mot de passe en base de donnée.&lt;br /&gt;
*&amp;quot;ldap&amp;quot; permet de se baser sur un annuaire LDAP (dans ce cas il faut renseigner les autres parametres LDAP (vor ficiher conf.php.example).&lt;br /&gt;
*&amp;quot;http&amp;quot; utilise l&#039;authentification du protocol HTTP Basic (il est nécesssaire de configurer votre serveur web pour avoir Dolibarr dans une session d&#039;authentification HTTP Basic).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$dolibarr_main_authentication=&amp;quot;dolibarr&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$dolibarr_main_authentication=&amp;quot;dolibarr&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
-&amp;gt; Permet d&#039;afficher un lien de téléchargement du fichier zip d&#039;un module externe placé dans le dossier custom. Le lien de téléchargement est accessible après avoir cliqué sur l&#039;icone d&#039;aide &#039;?&#039; depuis la liste des modules.&lt;br /&gt;
&lt;br /&gt;
Dolibarr fournit un fichier conf modèle nommé &#039;&#039;&#039;conf/conf.php.example&#039;&#039;&#039; où chaque paramètre est commenté.&lt;br /&gt;
&lt;br /&gt;
=Lecture/Ecriture du fichier=&lt;br /&gt;
Ce fichier ne doit pas jamais être ni lu directement, ni modifié par aucune fonctionnalité de Dolibarr.&lt;br /&gt;
&lt;br /&gt;
Il est créé par la procédure d&#039;installation ou de mise a jour de Dolibarr (install/index.php) qui est la seule habilitée à effectuer des actions sur ce fichier.&lt;br /&gt;
&lt;br /&gt;
=Utilisation dans le code=&lt;br /&gt;
Le contenu de ce fichier est accessible au développeur au travers de constantes ou de l&#039;objet &#039;&#039;&#039;$conf&#039;&#039;&#039; déjà chargés par le code présent dans &#039;&#039;&#039;master.inc.php&#039;&#039;&#039; ou &#039;&#039;&#039;main.inc.php&#039;&#039;&#039; (ces fichiers doivent etre inclus au début de tout programme PHP Dolibarr: master.inc.php pour les scripts et main.inc.php pour les pages). Votre code ne doit jamais ouvrir le fichier de configuration directement. Ce n&#039;est pas nécessaire.&lt;br /&gt;
&lt;br /&gt;
Ainsi:&lt;br /&gt;
&lt;br /&gt;
*$dolibarr_main_data_root est connu dans le code grâce à la constante: DOL_DATA_ROOT (indique l&#039;emplacement physique des fichiers uploadés ou temporaires crées dans Dolibarr)&lt;br /&gt;
*$dolibarr_main_document_root est connu dans le code grâce à la constante: DOL_DOCUMENT_ROOT (mais aussi dans le tableau $conf-&amp;gt;file-&amp;gt;dol_document_root[]. Indique l&#039;emplacement physique des fichiers programmes Dolibarr)&lt;br /&gt;
*$dolibarr_main_url_root est connu dans le code grâce à la constante: DOL_URL_ROOT (indique le chemin URL racine de Dolibarr)&lt;br /&gt;
*$dolibarr_main_db_type est accessible par $conf-&amp;gt;db-&amp;gt;type&lt;br /&gt;
*$dolibarr_main_db_host est accessible par $conf-&amp;gt;db-&amp;gt;host&lt;br /&gt;
*$dolibarr_main_db_port est accessible par $conf-&amp;gt;db-&amp;gt;port&lt;br /&gt;
*$dolibarr_main_db_name est accessible par $conf-&amp;gt;db-&amp;gt;name&lt;br /&gt;
*$dolibarr_main_db_user est accessible par $conf-&amp;gt;db-&amp;gt;login&lt;br /&gt;
*$dolibarr_main_db_pass n&#039;est pas accessible. Il est lu par &#039;&#039;&#039;master.inc.php&#039;&#039;&#039; (appelé par tout fichier PHP) qui crée un connexion &#039;&#039;&#039;$db&#039;&#039;&#039; puis efface de sa mémoire le mot de passe.&lt;br /&gt;
&lt;br /&gt;
Voir les tutoriaux sur le [[Developpement_module|Développements de modules]] ou [[Développement de scripts]] pour plus d&#039;information.&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Setup_Other&amp;diff=60361</id>
		<title>Setup Other</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Setup_Other&amp;diff=60361"/>
		<updated>2024-05-13T15:22:12Z</updated>

		<summary type="html">&lt;p&gt;Iouston: Add ACCOUNTANCY_USE_PRODUCT_ACCOUNT_ON_THIRDPARTY&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- BEGIN origin interlang links --&amp;gt;&lt;br /&gt;
&amp;lt;!-- You can edit this section but do NOT remove these comments&lt;br /&gt;
     Links below will be automatically replicated on translated pages by PolyglotBot --&amp;gt;&lt;br /&gt;
[[fr:Paramétrage_Divers]]&lt;br /&gt;
[[es:Configuración_Varios]]&lt;br /&gt;
[[de:Erweiterte_Einstellungen]]&lt;br /&gt;
[[zh:其他设置]]&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Admin]]&lt;br /&gt;
{{TemplateDocUser}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Help About Screen&#039;&#039;&#039;: Other setup&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Menu Path&#039;&#039;&#039;: Home ► Setup ► Other&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Some options are not visible in the interface (often because they are deprecated or are beta features). In most cases you do not need these functions and their use may make the application unstable.&lt;br /&gt;
&lt;br /&gt;
 {{warning|32px}} This page contains the list of some advanced development parameters. In most cases, it is parameters for internal usage, development, external modules, features in development not stable or that may lead to security risk. For standard usage of Dolibarr, such parameters &#039;&#039;&#039;SHOULD NOT&#039;&#039;&#039; be used. All experimental options are NOT supported. They may be removed in a future, modified at any version and break stability of your application.&lt;br /&gt;
&lt;br /&gt;
To enable/override a parameter you have to define the constant name and set it to 1 (unless otherwise stated) in &amp;lt;code&amp;gt;Home ► Setup ► Other Setup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The options here may not be documented since they are not stable and unsupported (remember they are experimental or development options). The basic format of how the list is written is broken down in the example below:&lt;br /&gt;
&lt;br /&gt;
UNSTABLE_OR_DEV_OPTION ► &#039;&#039;Description of config and goal&#039;&#039; ► &#039;&#039;(specific version information) or values&#039;&#039;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
=Global Options=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ADD_UNSPLASH_LOGIN_BACKGROUND&#039;&#039;&#039; ► The background image will be refreshed on every login page refresh. Background image is pulled from the popular open source image website Unsplash. If an already saved static background image exists, then this code will override it (but not delete the saved image). Warning: Using this may allow this external website to steel your login credentials (the value to be put is the URL of the service, exemple : https://source.unsplash.com/random) ► (v10.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HIDE_POWERED_BY&#039;&#039;&#039; ► Hide the &amp;quot;Powered by Dolibarr&amp;quot;&lt;br /&gt;
*&#039;&#039;&#039;MAIN_APPLICATION_TITLE&#039;&#039;&#039; ► This will change the title of software (that appears on the login page by default). Warning: changing this may make Dolibarr version detection fail by smartphone applications like [[Application Android - DoliDroid]] breaking some features when using Dolibarr from this application.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_AUTOFILL_DATE&#039;&#039;&#039; ► If this constant is defined (to something other than &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;), the date of invoice, proposal, order or payment are auto-filled with the current date. It is highly recommended to NOT ENABLE this feature. This can create a lot of input errors with data not validated by users. This leads to incorrect values saved in the database causing confusion when you have to do your accountancy reports!&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_AUTO_TIMESTAMP_IN_PUBLIC_NOTES&#039;&#039;&#039; ► Add a timestamp and user automatically when editing the &#039;&#039;public&#039;&#039; note.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_AUTO_TIMESTAMP_IN_PRIVATE_NOTES&#039;&#039;&#039; ► Add a timestamp and user automatically when editing the &#039;&#039;private&#039;&#039; note.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_COUNTRIES_IN_EEC&#039;&#039;&#039; ► Country list in European Area (For VAT purpose) ► (v10.0-v13.0). From v14, do not use this any more (remove the constant if you set it and instead set if the country is in Europe or not from the DB for V14 - V15  and from dictionary of countries in V16 and more).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DEFAULT_PAYMENT_TERM_ID&#039;&#039;&#039; ► With ID of a payment term, will use this as default payment term each time you create a new proposal, order, invoice (customer and supplier). Deprecated. Replaced with the default setup feature instead.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DEFAULT_PAYMENT_TYPE_ID&#039;&#039;&#039; ► With ID of a payment type, will use this as default payment type each time you create a new proposal, order, invoice (customer and supplier). Deprecated. Replaced with the default setup feature instead.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DEFAULT_LANGUAGE_FILTER&#039;&#039;&#039; ► Useful if you do not want to show &amp;lt;code&amp;gt;en_US&amp;lt;/code&amp;gt; language option in combo boxes (other languages can easily be removed in &amp;lt;code&amp;gt;langs&amp;lt;/code&amp;gt; directory but not &amp;lt;code&amp;gt;en_US&amp;lt;/code&amp;gt;) ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LANGUAGES_ALLOWED&#039;&#039;&#039; ► Is a list of languages without spaces, example : &amp;lt;code&amp;gt;fr_FR,en_US,de_DE,it_IT&amp;lt;/code&amp;gt; If defined, only those languages will appear in combos. ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_NOTES_TAB&#039;&#039;&#039; ► Show or hide notes tab in the card page&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_CONTACTS_TAB&#039;&#039;&#039; ► Show or hide contacts tab in the card page&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_FULL_SCANLIST&#039;&#039;&#039; ► Disables the complete scan of tables to allow the pagination to show total number of pages. May be useful to activate on systems with a very high quantity of data (tables with more than 2 000 000 records).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_JQUERY_JNOTIFY&#039;&#039;&#039; ► Disable usage of &amp;lt;code&amp;gt;JNotify&amp;lt;/code&amp;gt; to show confirm or error messages&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_AJAX_COMBOX&#039;&#039;&#039; ► If you have a large number of third parties or products, you can disable the autocomplete feature on the third parties list by setting this constant to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; ► (v3.6.0+)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_MULTIPLE_FILEUPLOAD&#039;&#039;&#039; ► Disable users to upload multiple files at once.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_TRUNC&#039;&#039;&#039; ► Disable all truncings in select list. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLEDRAFTSTATUS&#039;&#039;&#039; ► Disable the status &amp;quot;Draft&amp;quot; for some objects (project, donation, ...) so the object is directly created with status &amp;quot;Validated&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_USE_OBJECT_THIRDPARTY_NAME&#039;&#039;&#039; ► Add name of thirdparty at begin of generated document.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_USE_TIMING&#039;&#039;&#039; ► Add a timestamp at end of generated document. Value must be format of timestamp. For example: &amp;lt;code&amp;gt;%Y%m%d%H%M&amp;lt;/code&amp;gt; (only for ODT files)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_UPLOAD_NOT_RENAME_BY_DEFAULT&#039;&#039;&#039; ► Disable the auto renaming on upload file ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOL_SCRIPTS_ROOT&#039;&#039;&#039; ► Define directory who contains &#039;scripts&#039; directory (e.g. &amp;lt;code&amp;gt;/var/www/dolibarr&amp;lt;/code&amp;gt;). Value of this variable may be requested by some external script or tools.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ENABLE_LOG_TO_HTML&#039;&#039;&#039; ► If this constant is defined, it is possible to have logs inside pages by adding the parameter &amp;lt;code&amp;gt;&amp;amp;logtohtml=1&amp;lt;/code&amp;gt; into URL.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ENABLE_IMPORT_LINKED_OBJECT_LINES&#039;&#039;&#039; ► Allow to import lines into current document from &amp;quot;linked&amp;quot; compatible documents ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FIRST_TO_UPPER&#039;&#039;&#039; ► Dolibarr add uppercase to Third Parties, contacts or members names if not done. Warning: with some languages (whose words with uppercase are not same words, or pagecode does not always have an uppercase, like Cyrillic languages), this feature may alter your data.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ALL_TO_UPPER&#039;&#039;&#039; ► Dolibarr puts uppercase for Third Parties, contacts or members names if not done. Warning, with some languages (whose words with uppercase are not same words, or pagecode does not always have an uppercase, like Cyrillic languages), this feature may alter your data. ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ALL_TOWN_TO_UPPER&#039;&#039;&#039; ► Dolibarr puts uppercase for town names if not done. ► (v13.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FILESYSTEM_ENCODING&#039;&#039;&#039; ► With some PHP versions, PHP is not able to detect the page code for filesystem of the server OS. To solve this, Dolibarr assumes your OS filesystem is &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; if on Linux or OSX system, and &amp;lt;code&amp;gt;ISO-8859-1&amp;lt;/code&amp;gt; if on Windows. If not, for example on a Windows server with a NTFS &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; pagecode, you can set the variable &amp;lt;code&amp;gt;MAIN_FILESYSTEM_ENCODING&amp;lt;/code&amp;gt; to &amp;quot;&amp;lt;code&amp;gt;utf-8&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FORCELANGDIR&#039;&#039;&#039; ► Relative path of the directory holding your custom &amp;lt;code&amp;gt;langs&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HTML_TITLE&#039;&#039;&#039; ► Can be used to control how the html page title is formatted. If value contains key &#039;&amp;lt;code&amp;gt;noapp&amp;lt;/code&amp;gt;&#039;, application name will not be output. If value contains &#039;&amp;lt;code&amp;gt;thirdpartynameonly&amp;lt;/code&amp;gt;&#039;, on tab for thirdparties, only name of thirdparties are output. Value can be list of tags: &#039;&amp;lt;code&amp;gt;noapp;thirdpartynameonly&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HELPCENTER_LINKTOUSE&#039;&#039;&#039; ► Define the URL link to use as the target page for link &amp;quot;I need help&amp;quot; onto logon page&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LOGOUT_GOTO_URL&#039;&#039;&#039; ► URL to which the user will be redirected after LOGOUT&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAXTABS_IN_CARD&#039;&#039;&#039; ► Maximum number of tabs visible. Others are grouped into a combo list.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAXLIST_OVERLOAD&#039;&#039;&#039; ► Maximum number of line in space&#039;s domain.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING&#039;&#039;&#039; ► A warning saying setup of modules is not complete is shown if the number of enabled modules is lower or equal than this value (&amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; if not defined)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NO_CONCAT_DESCRIPTION&#039;&#039;&#039; ► Allow to use only input custom description in lines (proposal, order, invoice) ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_OPTIMIZE_SPEED&#039;&#039;&#039; ► Use some speed enhancements. See page [[FAQ Increase Performance]] for more information.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROPAGATE_CONTACTS_FROM_ORIGIN&#039;&#039;&#039; ► When creating an order, contract, invoice from another object, specific contacts of objects are set as specific contact of the new object when possible. ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PUBLIC_NOTE_IN_ADDRESS&#039;&#039;&#039; ► Show public note in address block ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_REMOVE_INSTALL_WARNING&#039;&#039;&#039; ► Remove all security warnings that appear to administrator users if URL &amp;lt;code&amp;gt;/install&amp;lt;/code&amp;gt; is public. You should solve the problem if warning occurs, instead of removing the warning! For this, create a file called &amp;lt;code&amp;gt;install.lock&amp;lt;/code&amp;gt; into Dolibarr root directory. This will stop the warning but also make the page &amp;lt;code&amp;gt;/install&amp;lt;/code&amp;gt; not possible to use, to protect your installation.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_REPEATCONTACTONEACHTAB&#039;&#039;&#039; ► If added and set to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, this adds contacts on all tabs, not only main tab.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_REPLACE_TRANS_xx_XX&#039;&#039;&#039; ► Where &amp;lt;code&amp;gt;xx_XX&amp;lt;/code&amp;gt; is language code. If value is &amp;lt;code&amp;gt;string1:newstring1;string2:newstring2&amp;lt;/code&amp;gt; then replace &amp;lt;code&amp;gt;string1&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;newstring1&amp;lt;/code&amp;gt; in all translation done for language &amp;lt;code&amp;gt;xx_XX&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND&#039;&#039;&#039; ► Change way of rounding total TTC lines, rounding first of after.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SERVER_TZ&#039;&#039;&#039; ► If you can&#039;t set the time zone of your PHP installation, set this constant. Better is to set it to UTC. In future, this constant will be forced to &#039;&amp;lt;code&amp;gt;UTC&amp;lt;/code&amp;gt;&#039; so PHP server time zone will not have effect any more. Examples: &amp;lt;code&amp;gt;Europe/Paris&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;auto&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SEARCH_FORM_ON_HOME_AREAS&#039;&#039;&#039; ► Show the search form on home page areas for core modules (Removed after v5 due to global search combo) ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SEARCHFORM_SUPPLIER_INVOICE_DISABLED&#039;&#039;&#039; ► Disable the supplier invoice on the search form&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE&#039;&#039;&#039; ► If only one result is found, then setting this value to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; will take you direct to the item (default method).  Setting the value to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; will show the result in the list as a single result ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SERVICES_ARE_ECOMMERCE_200238EC&#039;&#039;&#039; ► If seller and buyer are in Europe and buyer is not a company, use the VAT of buying country.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_TUNING_INFO&#039;&#039;&#039; ► Add tuning information into JavaScript console. Better when xdebug is enabled.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_TECHNICAL_ID&#039;&#039;&#039; ► Show also technical IDs on elements cards or some lists (not supported everywhere).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOWDATABASENAMEINHELPPAGESLINK&#039;&#039;&#039; ► Show database name in upper help menu ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_ALTERNATE_TRANSLATION_FOR&#039;&#039;&#039; ► List of fields per object that need an alternate translation. Example: &amp;lt;code&amp;gt;MAIN_USE_ALTERNATE_TRANSLATION_FOR=societe:name,town;contact:firstname,lastname&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_HOURMIN_IN_DATE_RANGE&#039;&#039;&#039; ► On all entities lines (invoice, order, contract...), it is possible to add hour and minutes with date on fields &amp;quot;date start&amp;quot; and &amp;quot;date end&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_JQUERY_JEDITABLE&#039;&#039;&#039; ► Allow to update from screen, directly into database, some properties of elements (invoices, proposals, ...) using Ajax. This make response time faster, but avoid using this feature, because it bypasses some business actions (updates on other data that should be done consistently) and ignores business controls on data you saved. Consequently this feature breaks consistency of data and possibly the stability of the software.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_JQUERY_MULTISELECT&#039;&#039;&#039; ► Allow to use Ajax when a choice that require multiselect is used (for the moment only external modules uses select box with multiselect values). Set the value to the jQuery plugin name to use (multiselect, multiple-select, select2…). Setting it to any other value will result in unwanted side-effects and/or bugs.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_OLD_SEARCH_FORM&#039;&#039;&#039; ► Display the old search form in left menu.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VAT_DEFAULT_IF_AUTODETECT_FAILS&#039;&#039;&#039; ► Allow to force the VAT rate to a given value (instead of higher VAT rate of country) if the VAT rate of product was not defined.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_UNKNOWN_CUSTOMERS_ARE_COMPANIES&#039;&#039;&#039; ► If we can&#039;t guess if a thirdparty is a company or individual (not VAT ID fill, no Prof ID fill, no type of thirdparty fill), then we suppose it is a company (B2B business) instead of an individual (B2C business).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_VAT_COMPANIES_IN_EEC_WITH_INVALID_VAT_ID_ARE_INDIVIDUAL&#039;&#039;&#039; ► For intra CEE sales, we use by default, on proposal, order or invoice creation, a 0 VAT for customers that are companies (see MAIN_UNKNOWN_CUSTOMERS_ARE_COMPANIES to change behaviour to know if a thirdparty is a company or an individual). But if the option MAIN_USE_VAT_COMPANIES_IN_EEC_WITH_INVALID_VAT_ID_ARE_INDIVIDUAL is set, we will use the 0 VAT only if a VAT ID is defined for the customer.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_VAT_OF_PRODUCT_FOR_INDIVIDUAL_CUSTOMER_OUT_OF_EEC&#039;&#039;&#039; ► For to use the default VAT of product for individual customers that are out E.E.C. (European Economic Community) ► (v7.0+). &#039;&#039;There is no reason to use this.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VIEW_LINE_NUMBER&#039;&#039;&#039; ► Shows a line number for each line of products/services at documents like proposal / order / invoice. Only on screen, not on PDF.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VIEW_LINE_NUMBER_IN_LIST&#039;&#039;&#039; ► Shows a line number in lists ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VOLUME_DEFAULT_ROUND&#039;&#039;&#039; ► Accuracy of volume (number of decimals)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VOLUME_DEFAULT_UNIT&#039;&#039;&#039; ► Default unit for weight (&amp;lt;code&amp;gt;0=kg&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-3=g&amp;lt;/code&amp;gt;, ...)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_WEIGHT_DEFAULT_ROUND&#039;&#039;&#039; ► Accuracy of weight (number of decimals)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_WEIGHT_DEFAULT_UNIT&#039;&#039;&#039; ► Default unit for weight (&amp;lt;code&amp;gt;0=kg&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-3=g&amp;lt;/code&amp;gt;, ...)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;USER_HIDE_INACTIVE_IN_COMBOBOX&#039;&#039;&#039; ► Disable display inactive users in combobox.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_PDF_THUMBS&#039;&#039;&#039; ► Disable thumbs PDF in case of imagick bug&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_KEEP_REF_CUSTOMER_ON_CLONING&#039;&#039;&#039; ► Keep the Customer Reference on cloned object (Propal/Invoice)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DONT_KEEP_NOTE_ON_CLONING&#039;&#039;&#039; ► Remove the object notes during cloning ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_SORT_FIELD&#039;&#039;&#039; ► Set the default sorting field on document page (name by default) ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_SORT_ORDER&#039;&#039;&#039; ► Set the default sorting order (ASC or DESC) on document page (ASC by default) ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_ZIPTOWN_DICTIONNARY&#039;&#039;&#039; ► Use dictionary ZIP for create card.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_TOP_MENU_SEARCH_DROPDOWN&#039;&#039;&#039; ► Show search in top menu with theme eldy ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PHONE_SEPAR&#039;&#039;&#039; ► Separ phone number other space ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;GRAPH_USE_FISCAL_YEAR&#039;&#039;&#039; ► Widgets uses fiscal year&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SHOW_SOCINFO_ON_PRINT&#039;&#039;&#039; ► Permit to add user company information on each printed document (when click on Dolibarr print button) ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FEATURES_LEVEL&#039;&#039;&#039; ► Level of features to show: &amp;lt;code&amp;gt;-1=stable+deprecated&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0=stable only (default)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1=stable+experimental&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2=stable+experimental+development&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_TECHNICAL_ID&#039;&#039;&#039; ► Show technical id for object.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HTTP_CONTENT_SECURITY_POLICY&#039;&#039;&#039; ► Allows you to fill in the content security rules ► (v6.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_ON_SEARCH_AND_LIST_GO_ON_CUSTOMER_OR_SUPPLIER_CARD&#039;&#039;&#039; ► Allow to change the link of the third party to customer/supplier card instead of contact card on List.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MODULE_SETUP_ON_LIST_BY_DEFAULT&#039;&#039;&#039; ► If set to &amp;quot;common&amp;quot; the setup module becomes list by defaut&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PAGESIZE_CHOICES&#039;&#039;&#039;  ► Configure select field to choose number of lines displayed on listing (&amp;lt;code&amp;gt;10:10,15:15,20:20,30:30,40:40,50:50,100:100,250:250,500:500,1000:1000,5000:5000&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_TOP_MENU_QUICKADD_DROPDOWN&#039;&#039;&#039; ► Add a dropdown menu with shortcuts to create new objects ► (v13.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EMAILCOLLECTOR_MAIL_WITHOUT_HEADER&#039;&#039;&#039; ► Remove the header stored by email collector ► (v13.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_VAT_OF_PRODUCT_FOR_COMPANIES_IN_EEC_WITH_INVALID_VAT_ID&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_OPTIMIZEFORTEXTBROWSER&#039;&#039;&#039; ► Optimise interface for a text only browser. This variable is set to 1 automatically if your browser is lynx or links&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NB_OF_YEAR_IN_WIDGET_GRAPH&#039;&#039;&#039; ► Set the number of years visible on some graph of some widgets (2 is default value)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_CREATEFROM_KEEP_LINE_ORIGIN_INFORMATION&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;API_DISABLE_LOGIN_API&#039;&#039;&#039; ►(v14.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LOGIN_BADCHARUNAUTHORIZED&#039;&#039;&#039; ► Add possibility to define bad character unauthorized into login name REGEX expression (Default value is @&amp;lt;&amp;gt;&amp;quot;\&#039;)  ► (v16.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_ALL_FILES_ON_DOCUMENT_TOOLTIP&#039;&#039;&#039;  ► Add all files visible from the object to be visible from the list of object.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LIST_ALLOW_PUBLIC_NOTES&#039;&#039;&#039;  ► Display public notes on list&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LIST_ALLOW_PRIVATE_NOTES&#039;&#039;&#039;  ► Display private notes on list&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_CHECKBOX_LEFT_COLUMN&#039;&#039;&#039; ► Display private check boxes on the left ► (v17.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_STATS_GRAPHS_SHOW_N_YEARS&#039;&#039;&#039; ► Nb of years to shows in widget and graph ► (v14.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HOOK_DEBUG&#039;&#039;&#039; ► if &amp;gt;=2 the hook in the logs are more verbose ► (v18.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ENABLE_AJAX_TOOLTIP&#039;&#039;&#039; ► if 1 the tooltips are updated with AJAX request ► (v18.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NO_INPUT_PRICE_WITH_TAX&#039;&#039;&#039; ► if 1 the TTC input field is removed from propal/invoices/... ► (v17.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_SELECT2_FOCUS_PROTECTION&#039;&#039;&#039; ► if 1 disable the focus protection ► (v17.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_ADVANCED_PERMS ►&#039;&#039;&#039; Add advanced user permission&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Security Options=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SECURITY_ANTI_SSRF_SERVER_IP&#039;&#039;&#039; ► Can set a complete list of IPs of server.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SECURITY_CSRF_WITH_TOKEN&#039;&#039;&#039; ► Activate a second anti-CSRF protection on POST (so a POST from another web site can&#039;t be done). Note there is already a default protection using test on referrer. This second protection uses TOKEN on forms and is more powerful. ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MODULES_FOR_EXTERNAL&#039;&#039;&#039; ► Limit available modules for external users. By default value is &#039;&amp;lt;code&amp;gt;facture,commande,contact,propal,projet,contrat,societe,ficheinter,expedition,agenda&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ALLOW_SVG_FILES_AS_IMAGES&#039;&#039;&#039; ► Allow to use SVG file as image files. Warning: This may introduce security vulnerability (javascript can be embedded into SVG file).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_RESTRICTHTML_ONLY_VALID_HTML&#039;&#039;&#039; ► Refused parameter if value is not a valid HTML content.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_RESTRICTHTML_REMOVE_ALSO_BAD_ATTRIBUTES&#039;&#039;&#039; ► Sanitize also non standard attributes on HTML content.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SECURITY_SALT&#039;&#039;&#039; ► A salt string to base the hashing on. 8 strings length recommended.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SECURITY_MAX_IMG_IN_HTML_CONTENT&#039;&#039;&#039; ► Maximum number of Images on the HTML content&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SECURITY_ALLOW_UNSECURED_LABELS_WITH_HTML&#039;&#039;&#039; ► Allow HTML tags into products label&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Adherent Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_NEWFORM_FORCEMORPHY&#039;&#039;&#039; ► Force nature of member set to &amp;quot;phy&amp;quot; for physical or to &amp;quot;mor&amp;quot; for moral ► (v12.0)&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_ALLOW_CHANGE_OF_TYPE&#039;&#039;&#039; ► Member can edit their type on public subscription page ► (v13.0)&lt;br /&gt;
*&#039;&#039;&#039;ADHERENT_DEFAULT_CREATE_THIRDPARTY&#039;&#039;&#039; ► Thirdparty is created when creating a new member ► (v13.0)&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_SUBSCRIPTION_SUGGEST_END_OF_MONTH&#039;&#039;&#039; ► If set to 1, the member subscription end date will be suggested for the end of the month ► (v18.0)&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_SUBSCRIPTION_SUGGEST_END_OF_YEAR&#039;&#039;&#039; ► If set to 1, the member subscription end date will be suggested for the end of the year ► (v18.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NB_OF_YEAR_IN_MEMBERSHIP_WIDGET_GRAPH&#039;&#039;&#039; ► If set, it limits the number of years visible on graph and widgets of membership (empty is default value to show all) ► (v18.0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Accountancy Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ACCOUNTANCY_COMBO_FOR_AUX&#039;&#039;&#039; ► Add graphic option for ACCOUNTANCY_COMBO_FOR_AUX. Having this option on may slow down and even freeze the accounting features if you have a very large number of thirdparties ► (v10.0)&lt;br /&gt;
*&#039;&#039;&#039;ACCOUNTING_DEFAULT_NOT_NOTIFIED_VALIDATION_DATE&#039;&#039;&#039; ► Avoid validating the lines with the accountancy export.(1= box unchecked by default / 0 = box checked by default) ► (v14.0)&lt;br /&gt;
*&#039;&#039;&#039;ACCOUNTING_DEFAULT_NOT_NOTIFIED_EXPORT_DATE&#039;&#039;&#039; ► Avoid flagging the lines as exported with the accountancy export.(1= box unchecked by default / 0 = box checked by default) ► (v14.0)&lt;br /&gt;
*&#039;&#039;&#039;ACCOUNTANCY_USE_PRODUCT_ACCOUNT_ON_THIRDPARTY ►&#039;&#039;&#039; Add 2 fields on thirdparty card which allow you to set an account for all sells products and an other for all buying products for this customer ► (v14.0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Agenda Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_ALL_CALENDARS&#039;&#039;&#039; ► Change the default view of calendar pages to see all the Agenda&#039;s (instead or yours only be default)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_AUTOSET_END_DATE_WITH_DELTA_HOURS&#039;&#039;&#039; ► To automatically set end date of event to start date + delta on event creation page.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_DISABLE_LOCATION&#039;&#039;&#039; ► Disable location field in action card  ► (&amp;gt;=v5.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_MAX_EVENTS_DAY_VIEW&#039;&#039;&#039; ► Define the maximum number of visible entries for each day in agenda. Default value is 3. Value 0 means no limit.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_USE_EVENT_TYPE&#039;&#039;&#039; ► Add a mandatory field &amp;quot;Type&amp;quot; when creating an event (&#039;&#039;&#039;&#039;&#039;deprecated&#039;&#039;&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ADD_EVENT_ON_ELEMENT_CARD&#039;&#039;&#039; ► Allow to create an event from a document (proposal, order, invoice)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_SUPPORT_PRIORITY_IN_EVENTS&#039;&#039;&#039; ► Allow to have priorities in events ► (&amp;gt;=v13.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_ADDACTIONFORPHONE&#039;&#039;&#039; ► Allow you to create a event from phone number ► (=&amp;lt;v12.0) - Need to be fix for (=&amp;gt;v12.0) https://github.com/Dolibarr/dolibarr/issues/22720&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;AGENDA_ADDACTIONFOREMAIL&#039;&#039;&#039; ► Allow you to create a event from Email ► (=&amp;lt;v12.0) - Need to be fix for (=&amp;gt;v12.0) https://github.com/Dolibarr/dolibarr/issues/22720&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
=Bank Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BANK_CAN_RECONCILIATE_CASHACCOUNT&#039;&#039;&#039; ► Can reconciliate cash accounts ► (v3.8)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BANK_DISABLE_CHECK_DEPOSIT&#039;&#039;&#039; ► Disable check deposit feature&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BANK_ASK_PAYMENT_BANK_DURING_ORDER&#039;&#039;&#039; ► Ask bank account during creation of an order&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL&#039;&#039;&#039; ► Ask bank account during creation of a proposal&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BANK_USE_OLD_VARIOUS_PAYMENT&#039;&#039;&#039; ► To allow to enter miscellaneous payments (not covered by other modules) using old method. &#039;&#039;&#039;&#039;&#039;Deprecated&#039;&#039;&#039;&#039;&#039;. Entering various payment is preferred ► (&amp;lt;=v12.0).&lt;br /&gt;
*&#039;&#039;&#039;MAIN_IBAN_IS_NEVER_MANDATORY&#039;&#039;&#039; ► IBAN and BIC informations not mandatory. (V15)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=BOM and MO Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ALLOW_USE_KITS_INTO_BOM_AND_MO&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;BOM_SUB_BOM&#039;&#039;&#039; ►Allow to add a BOM in another BOM►(v16.0)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Bookmarks Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BOOKMARKS_SHOW_IN_MENU&#039;&#039;&#039; ► Numbers of bookmark entries to be displayed (10 by default)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Inalterable Log Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;BLOCKEDLOG_ADD_ACTIONS_SUPPORTED&#039;&#039;&#039; ► Can complete list of triggered action that are logged&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Category-Tags Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CATEGORY_SHOW_COUNTS&#039;&#039;&#039; ► Shows nb of object by tags in tag tree&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Contracts=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CONTRACT_SUPPORT_PRODUCTS&#039;&#039;&#039; ► Products are also suggested into module contract.&lt;br /&gt;
*&lt;br /&gt;
*&#039;&#039;&#039;CONTRACT_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039; ► When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. ► (v7.0+)&lt;br /&gt;
*&#039;&#039;&#039;CONTRACT_HIDE_PLANNED_DATE_ON_PDF&#039;&#039;&#039; ► allows you to not display dates on pdf files.&lt;br /&gt;
*&#039;&#039;&#039;CONTRACT_HIDE_REAL_DATE_ON_PDF&#039;&#039;&#039; ► allows you to not display dates on pdf files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Cron module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CRON_DISABLE_KEY_CHANGE&#039;&#039;&#039; ► When you provide an instance to a customer, you probably also add an entry in the cron of this user so Dolibarr batch and scheduler can work correctly. For security purpose, it may have a security key that is inside the command line into the cron entry and this entry must match the value defined into Dolibarr setup (setup of module &#039;Scheduled Jobs&#039;). Because, a customer of a Saas platform will probably have no access to edit the cron file, it is also import that he has no way to edit the key into the Dolibarr setup, so the key in the cron command line will always match the key in Dolibarr setup, and the Dolibarr batches will executed without security errors. To be sure, the customer does not change the value, you can set this constant to 1 into the table [[Table_llx_const]].&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CRON_DISABLE_TUTORIAL_CRON&#039;&#039;&#039; ► Disable the tutorial about how to install the cron script (on a SaaS hosting, this should be done by the web hosting provider)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CRON_WARNING_DELAY_HOURS&#039;&#039;&#039; ► Set this value to the frequency set for the cron script (so a warning will be shown to user to warn it about max frequency of its scheduled jobs)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Direct Debit Orders=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;WITHDRAWAL_ALLOW_ANY_INVOICE_STATUS&#039;&#039;&#039; ► If this option is set, all invoices status (even already paid) may appear on the list of invoices qualified for a direct debit payment. This is the list of invoices with a payment request done, and not linked to a direct debit payment. By default, only &amp;quot;unpayed&amp;quot; invoices are used to avoid to pay twice the same invoice.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Donation Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;DONATION_USE_THIRDPARTIES&#039;&#039;&#039; ► If this option is set, a thirdparty field appear on donation forms.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
=Email=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAILFORM_DISABLE_ENTERKEY&#039;&#039;&#039; ► Activate JavaScript code to disable the enter key in the MAIL form. ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIL_PREFIX_FOR_EMAIL_ID&#039;&#039;&#039; ► Prefix for the mails ID. Default value is &amp;lt;code&amp;gt;$_SERVER[&amp;quot;SERVER_NAME&amp;quot;]&amp;lt;/code&amp;gt; ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_DEBUG&#039;&#039;&#039; ► Write content with header of last mail into file &amp;lt;code&amp;gt;dolibarr_mail.log&amp;lt;/code&amp;gt; into directory &amp;lt;code&amp;gt;dolibarr_main_data_root&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_DEBUG_ERR_WITH_DATE&#039;&#039;&#039; ► Use a different filename (by adding a prefix of date) for each email sent with error when MAIN_MAIL_DEBUG.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_DEBUG_LOG_WITH_DATE&#039;&#039;&#039; ► Use a different filename (by adding a prefix of date) to log each email sent (whatever is result) when MAIN_MAIL_DEBUG.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_FORCE_FROM&#039;&#039;&#039; ► (v19+) Can force the value into the From field of the SMTP header. Note that email sender is always saved into the &amp;quot;Reply-To&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_ALLOW_SENDMAIL_F&#039;&#039;&#039; ► On Linux or BSD system, PHP email function use the command sendmail local to server. In some cases, the sender email must be provided on command line of sendmail with option &amp;lt;code&amp;gt;-f&amp;lt;/code&amp;gt;. This option is here to ask Dolibarr to call the function mail of PHP by adding value for the option &amp;lt;code&amp;gt;-f&amp;lt;/code&amp;gt;. Note that in most cases, even with sendmail, sender email is correctly managed as it is added in the email technical header. This option is here only for setup or version of sendmail that ask the -f option to be mandatory or for sendmail setup that does not use by default the From of the header email to define the sender (with this option, the from can be forced on command line to avoid to have the from lost by sendmail).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_SENDMAIL_FORCE_BA&#039;&#039;&#039; ► On Linux or BSD system, PHP email function use the command sendmail local to server. In some case, we want to recipient to be provided to sendmail into the email content instead of its command line parameter. For this we must add the -ba parameter to sendmail. This option asks PHP to provide this parameter when sending a mail. Note that another solution is to edit the mail.force_extra_parameters=-ba into &amp;lt;code&amp;gt;php.ini&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_NO_FULL_EMAIL&#039;&#039;&#039; ► Recipient email and sender are cleaned to be on form &amp;quot;&amp;lt;email&amp;gt;&amp;quot; instead of &amp;quot;Name &amp;lt;email&amp;gt;&amp;quot;. This might solve problem of compatibility with very old mailers.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FIX_FOR_BUGGED_MTA&#039;&#039;&#039; ► Some MTA agent are bugged and add some CR chars each time they saw a LF. Because Dolibarr emails are forged to be already cleaned, if MTA agent do that, you will send an email with two CR chars. This may result in having recipient not able to read your email. To fix this, add this constant to 1. Dolibarr will then create an email that is not RFC compliant but because the MTA agent is bugged, the email will be modified and become correct during sending, solving the problem of bad email received. Add this constant if your recipient experience problems when opening email for example users using webmail of &amp;lt;code&amp;gt;orange.fr&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;hotmail.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_DO_NOT_USE_SIGN&#039;&#039;&#039; ► Do not add user signature at end of suggested pre-defined email&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_FORCE_NOT_SENDING_TO&#039;&#039;&#039; ► If en email is defined into this variable, emails will never be sent to this email.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIL_FORCE_DELIVERY_RECEIPT_INVOICE&#039;&#039;&#039; ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Invoice&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIL_FORCE_DELIVERY_RECEIPT_ORDER&#039;&#039;&#039; ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Order&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIL_FORCE_DELIVERY_RECEIPT_PROPAL&#039;&#039;&#039; ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Proposal&#039;&#039; module.&lt;br /&gt;
*&#039;&#039;&#039;MAIL_FORCE_DELIVERY_RECEIPT_SUPPLIER_PROPOSAL&#039;&#039;&#039; ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Supplier Proposal&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EMAIL_SUPPORT_ACK ►&#039;&#039;&#039; Restore email acknowledgment checkbox on sending emails. This feature is commonly abandoned by mailers. Active from Dolibarr V17 - see [https://github.com/Dolibarr/dolibarr/blob/33744f74da1a5c20f8aa9950018ab4e549e00205/ChangeLog#L53 changelog]&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EMAIL_USECCC&#039;&#039;&#039; ► 1 = Shows field BCC into email forms, If value is an email = Shows the BCC pre filled with the email value.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_AUTOCOPY_PROPOSAL_TO&#039;&#039;&#039;, &#039;&#039;&#039;MAIN_MAIL_AUTOCOPY_ORDER_TO&#039;&#039;&#039;, &#039;&#039;&#039;MAIN_MAIL_AUTOCOPY_INVOICE_TO&#039;&#039;&#039;, &#039;&#039;&#039;MAIN_MAIL_AUTOCOPY_SHIPMENT_TO&#039;&#039;&#039;, &#039;&#039;&#039;MAIN_MAIL_AUTOCOPY_..._TO&#039;&#039;&#039; ► Email to use as a BCC recipient when sending email for proposal, order or invoice. You can make this value visible by setting MAIN_EMAIL_USECCC (to 1 or to another email, see previous point)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EMAIL_ADD_TRACK_ID&#039;&#039;&#039; ► When value is 1 (this is also default value if option is not set): The record &amp;quot;Message-id&amp;quot; added into smtp header includes a tracking id to define where the email was sent from. When value is 2: you send an email from third party card, the sender email is completed with the email source tracking string  &amp;quot;+thiXXX&amp;quot; on email (your email will be sent with the &amp;quot;From&amp;quot; that is myname+thi123@mycompany.com). So when user receiving email will make &amp;quot;Answer&amp;quot;, email will be sent to myname@mycompany.com but with the tracking id included (into header or into target email), allowing you to know to which third party or object, the email exchange is related to.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_IN_SAME_EMAIL&#039;&#039;&#039; ► Restrict sending of 1 email message to &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; recipients for same email message (x for To: + CC: + BCC:). If not defined, value is &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;. Required to fight against spamming that include 1000 recipients in 1 message. Note that &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_TO_IN_SAME_EMAIL&#039;&#039;&#039;, &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_CC_IN_SAME_EMAIL&#039;&#039;&#039; and &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_BCC_IN_SAME_EMAIL&#039;&#039;&#039; are also available.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_FORCE_CONTENT_TYPE_TO_HTML&#039;&#039;&#039; ► Force to send all email (event with text only content) as HTML formatted email.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_USE_MULTI_PART&#039;&#039;&#039; ► Forge email content using an alternate text part ► (for 5.0.2+). By default with 6.0+&lt;br /&gt;
*&#039;&#039;&#039;MAIN_INFO_SOCIETE_MAIL_ALIASES&#039;&#039;&#039; ► add address aliases for the from field on mail. Set his value with &amp;quot;Firstname Name &amp;lt;firstname.lastname@mydomain.tld, Otherfirstname OtherlastName &amp;lt;othermail@mydomain.tld&amp;gt;,...&amp;quot; ► (v5.0.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_ADD_INLINE_IMAGES_IF_IN_MEDIAS&#039;&#039;&#039; ► If images were stored into the medias directory from CKEditor, then images into emails are replaced with &amp;quot;inline content&amp;quot;. This may increase seriously risk of being detected as SPAM.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_COPY_FILE_IN_EVENT_AUTO&#039;&#039;&#039; ► Add attachment document on event auto generated by sending email from dolibarr. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EXTERNAL_SMTP_CLIENT_IP_ADDRESS&#039;&#039;&#039; ► (A better name of this option should be MAIN_EXTERNAL_MAIL_CLIENT_IP_ADDRESS). Set here the list of IPs where your Dolibarr instances are hosted. So when your customer go into the setup area of email:&lt;br /&gt;
**If he chose mail method, a message will explain him how to setup its SPF record for its email domain (showing the list of IP). This is to avoid to have its emails, sent from its Dolibarr instance, fails due to strict antispam rule of some emailing servers.&lt;br /&gt;
**If he chose smtp method, a message will explain him the list of IP he can use if there is restriction on IP by the SMTP agent. If you also need to add a message to help SPF setup, see option &#039;&#039;&#039;MAIN_EXTERNAL_SMTP_SPF_STRING_TO_ADD&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_ENABLED_USER_DEST_SELECT&#039;&#039;&#039; ► Show also internal users into list of recipients of email in email sending form ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=SMS= &lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SMS_DEBUG&#039;&#039;&#039; ► Write content of SMS sent into file &amp;lt;code&amp;gt;dolibarr_sms.log&amp;lt;/code&amp;gt; into directory &amp;lt;code&amp;gt;dolibarr_main_data_root&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Emailing Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_PREFIX_FOR_EMAIL_ID&#039;&#039;&#039; ► Set the value that will be used to compose the &amp;quot;Email ID&amp;quot; into email headers. If you set this value to &#039;&amp;lt;code&amp;gt;SERVER_NAME&amp;lt;/code&amp;gt;&#039;, the virtual host of web server will be used. By default, this is not defined, so a hash key, unique to each instance, is used.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_NO_USING_PHPMAIL&#039;&#039;&#039; ► If set, the module emailing can&#039;t be used with mail setup of &amp;quot;phpmail&amp;quot;. Using a thirdparty SMTP server is required. You can complete warning message by adding an email to contact for setup help with constant &amp;lt;code&amp;gt;&#039;&#039;&#039;MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS&#039;&#039;&#039;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS&#039;&#039;&#039; ► Contains the email of contact to show into the message visible to a user when he try to use emailing module without SMTP server and if option &#039;&#039;&#039;MAILING_NO_USING_PHPMAIL&#039;&#039;&#039; is set to on.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_LIMIT_WARNING_PHPMAIL&#039;&#039;&#039; ► Show a warning message (var contains the &#039;&#039;&#039;message to show&#039;&#039;&#039;, or &#039;&#039;&#039;translation key&#039;&#039;&#039;) on emailing send form if setup is on &amp;quot;phpmail&amp;quot;. Note: The application always try to translation the message considering the message is a translation key, before showing the translation or message if translation was not found.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_LIMIT_WARNING_NOPHPMAIL&#039;&#039;&#039; ► Show a warning message (var contains the &#039;&#039;&#039;message to show&#039;&#039;&#039;, or &#039;&#039;&#039;translation key&#039;&#039;&#039;) on emailing send form if setup is something else than &amp;quot;phpmail&amp;quot;. Note: The application always try to translation the message considering the message is a translation key, before showing the translation or message if translation was not found.&lt;br /&gt;
*&#039;&#039;&#039;EMAILING_USE_ADVANCED_SELECTOR&#039;&#039;&#039; ► Enable the advanced selector for recipients.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_LIMIT_SENDBYWEB&#039;&#039;&#039; ► Restrict number of emails you can send in same sending session with emailing module from GUI. The value &amp;quot;&amp;lt;code&amp;gt;dolibarr_mailing_limit_sendbyweb&amp;lt;/code&amp;gt;&amp;quot; if defined into config file is used in priority for this limit. A negative value means, sending by web is forbidden.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_LIMIT_SENDBYCLI&#039;&#039;&#039; ► Restrict number of emails you can send in same sending session with emailing module from CLI script. The value &amp;quot;&amp;lt;code&amp;gt;dolibarr_mailing_limit_sendbycli&amp;lt;/code&amp;gt;&amp;quot; if defined into config file is used in priority for this limit.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Expense Report=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;EXPENSEREPORT_ALLOW_OVERLAPPING_PERIODS&#039;&#039;&#039; ► Can enter several expense reports on same or overlapping date periods. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;EXPENSEREPORT_OVERRIDE_VAT&#039;&#039;&#039; ► Setting this constant to 1 will allow expense reports to show VAT even if the global VAT setting is off ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;EXPENSEREPORT_USE_OLD_NUMBERING_RULE&#039;&#039;&#039; ► The module Expense Report use numbering rules that you can setup (like other modules do). If you need to keep the hard-coded numbering rule of expenses report used in v6.0 set this constant to 1 ► (&amp;gt;=v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_EXPENSE_IK&#039;&#039;&#039; ► This feature allows you to set index kilometres against a mileage index for different types of vehicles. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_EXPENSE_RULE&#039;&#039;&#039; ► This feature allows you to set a variety of rules per user/group/all so they can only create reports within their limits. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Export Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;EXPORT_CSV_SEPARATOR_TO_USE&#039;&#039;&#039; ► String value to use as default separator to delimit fields of exported files (by default Dolibarr uses &amp;quot;&amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;&amp;quot;). Example: EXPORT_CSV_SEPARATOR_TO_USE=&amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;EXPORT_CSV_FORCE_CHARSET&#039;&#039;&#039; ► Choose the charset used in the output file built by the CSV exporter. By default it is ISO-8859-1. Example: EXPORT_CSV_FORCE_CHARSET= &amp;lt;code&amp;gt;utf-8&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;EXPORTTOOL_CATEGORIES&#039;&#039;&#039; ► Can export categories (several lines) into one column with the &amp;quot;product export profile&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;USE_STRICT_CSV_RULES&#039;&#039;&#039; ► Use strict/real CSV format for export. Do not clean/replace CR+LF with &#039;\n&#039; but quote them using the escaping CSV char (&amp;lt;code&amp;gt;&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*&#039;&#039;&#039;EXPORTS_SHARE_MODELS&#039;&#039;&#039;  ► Share export models between users.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Foundation Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_URL_REDIRECT_SUBSCRIPTION&#039;&#039;&#039; ► Link called and shown when a member account is autocreated in member module by a guest user.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_EXT_URL_SUBSCRIPTION_INFO&#039;&#039;&#039; ► Link of external page pointed by the &amp;quot;Show here&amp;quot; link added in front of payment cell, into the page to make online subscription.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Interventions Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FICHINTER_CLASSIFY_BILLED&#039;&#039;&#039;► Allow to classify an intervention card as &amp;quot;Billed&amp;quot;. This add also trigger &amp;lt;code&amp;gt;FICHINTER_CLASSIFY_BILLED&amp;lt;/code&amp;gt; into list of possible automatic event into agenda.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FICHINTER_DISABLE_DETAILS&#039;&#039;&#039;► Disable entry of details line on intervention. Can validate with no line.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Invoice Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DEPOSIT_MULTI_TVA&#039;&#039;&#039; ► In deposits invoice, creates one line per VAT rate from the origin document ► (6.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_ALLOW_REUSE_OF_CREDIT_WHEN_PARTIALLY_REFUNDED&#039;&#039;&#039; ► If a credit note was partially refunded (a refund was sent to the customer), with common situation, we wait to have the remain refunded too. With this option, it is possible to convert the remain of invoice into a discount to reuse it into another invoice.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_INVOICE_ALLOW_REUSE_OF_CREDIT_WHEN_PARTIALLY_REFUNDED&#039;&#039;&#039; ► See INVOICE_ALLOW_REUSE_OF_CREDIT_WHEN_PARTIALLY_REFUNDED, but for supplier credit notes.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_CAN_ALWAYS_BE_EDITED&#039;&#039;&#039; changed in version 15 or 16 to &#039;&#039;&#039;INVOICE_CAN_BE_EDITED_EVEN_IF_PAYMENT_DONE&#039;&#039;&#039; ► Allow to edit invoices even if payment was started. Note: If the module &amp;quot;BlockedLog&amp;quot; is active (required in some countries for legal reasons), this will not change content of archived logs tracked by this module. By definition there is no way to change or remove archived records. It will just update data in your application and a new record to track your change into the read-only archive log.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_CAN_ALWAYS_BE_REMOVED&#039;&#039;&#039; ► Allow to always delete invoices (even if invoice is not last one). Note: If the module &amp;quot;BlockedLog&amp;quot; is active (required by some countries for legal reason), this will not change content of archived logs tracked by this module. By definition there is no way to change or remove archived records. It will just update data in your application and a new record to track your change into the read-only archive log.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_CAN_NEVER_BE_REMOVED&#039;&#039;&#039; ► Never allow to delete invoices (except draft invoices with ref like (PROV%)).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_POSITIVE_CREDIT_NOTE&#039;&#039;&#039; ► All amounts on PDF credit notes are positive.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FACTURE_DEPOSITS_ARE_JUST_PAYMENTS&#039;&#039;&#039; ► An old way to create initial payment. This treats deposit invoices as a special case and not as legal deposit invoice. Deposit invoices don&#039;t get counted on turnover. They are then applied as a payment, like a discount, on the final invoice. By default, when you include the deposit into draft of final invoice, the amount of final invoice is reduced. With this option, final amount is not reduced but a payment is registered. WARNING: In a lot of european countries, using this option is not allowed.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FACTURE_SENDBYEMAIL_FOR_ALL_STATUS&#039;&#039;&#039; ► Can send invoice by email to customer even if invoice has status &amp;quot;draft&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_CREDIT_NOTE_STANDALONE&#039;&#039;&#039; ► Start implementation to allow a credit note even without invoice (dangerous) ► (v3.9)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_USE_SITUATION&#039;&#039;&#039; ► Enable the &amp;quot;situation invoice&amp;quot; feature. Warning, this feature is bugged and may not be compatible with the final version of the feature once the bug will be solved. Also, using the double-entry accountancy module is not possible when this option is on (due to the same design problem).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_USE_SITUATION_CREDIT_NOTE&#039;&#039;&#039; ► Enable the &amp;quot;situation credit note&amp;quot; feature (need &amp;lt;code&amp;gt;INVOICE_USE_SITUATION&amp;lt;/code&amp;gt;) ► (v8.0)&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_USE_RETAINED_WARRANTY&#039;&#039;&#039; ► Enable the retained warranty on invoice ► (v14.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_DISABLE_DEPOSIT&#039;&#039;&#039; ► Disable deposit invoices&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_DISABLE_REPLACEMENT&#039;&#039;&#039; ► Disable replacement invoices&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_DISABLE_CREDIT_NOTE&#039;&#039;&#039; ► Disable credit notes&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_ADD_ZATCA_QR_CODE&#039;&#039;&#039; ► Add a QR code with format ZATCA (for Saudi Arabia) on PDF of invoices.&lt;br /&gt;
*&amp;lt;bdi&amp;gt;&#039;&#039;&#039;INVOICE_ADD_EXTRAFIELD_IN_NOTE&#039;&#039;&#039; ► Add extrafields in note for canelle template ► (v17.0+)&amp;lt;/bdi&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_DEFAULT_NOTE_PUBLIC&#039;&#039;&#039; &amp;lt;bdi&amp;gt;► Default text in public note&amp;lt;/bdi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: To decode a QR image of a ZATCA code: https://www.onlinebarcodereader.com/. You can also use the mobile application https://play.google.com/store/apps/details?id=com.posbankbh.einvoiceqrreader&amp;amp;gl=FR&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT&#039;&#039;&#039; ► See PDF option&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_COLUMN&#039;&#039;&#039; ► See PDF options&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;WORKFLOW_BILL_ON_SHIPMENT&#039;&#039;&#039; ► Change label of button with suitable label when you need to create invoice on shipments&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039; ► When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. Use the tag __DIRECTDOWNLOAD_URL_INVOICE__ in email template to insert it. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_POINTOFTAX_DATE&#039;&#039;&#039; ► Add Point of Tax Date on invoices for country-specific legality reasons ► (v4.0+)&lt;br /&gt;
*&#039;&#039;&#039;FACTURE_ENABLE_NEGATIVE&#039;&#039;&#039; ► Can validate an invoice when amount is negative&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FACTURE_ENABLE_NEGATIVE_LINES&#039;&#039;&#039; ► Allows to add negative lines to an invoice ► (v8.0.2+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_USE_DEFAULT_DOCUMENT&#039;&#039;&#039; ► Allow user to select a default invoice documents models according to invoice type. On invoice create page, the model is dynamically changed on invoice type selection. ► (v9.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FACTURE_REUSE_NOTES_ON_CREATE_FROM&#039;&#039;&#039; ► Reuse the Public Note and Private note of the previous object (Proposal,...) when creating the bill.&lt;br /&gt;
*&#039;&#039;&#039;FACTUREFOURN_REUSE_NOTES_ON_CREATE_FROM&#039;&#039;&#039; ► Reuse the Public Note and Private note of the previous object when creating the supplier bill ► (V13.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_FACNUMBER_IN_DISCOUNT_LIST&#039;&#039;&#039; ► Display the reference of credit notes in discount list when creating the bill.&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_ALLOW_FREE_REF&#039;&#039;&#039; ► Capability to change reference of an invoice. This will be possible as long as the invoice has the status “Draft” and only if your country is not in Europe(V11)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_DISALLOW_REOPEN&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_MAX_FUTURE_DELAY&#039;&#039;&#039; ► Numbers of seconds allowed for billing in the future ► (V14.0)&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_AUTO_NEXT_MONTH_ON_LINES&#039;&#039;&#039; ► Increase start date and end date by one month, if an invoice line is a clone of a time based service AND if this services started on the first day of month and ended on the last day of month ► (V13.0.1)&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_KEEP_DISCOUNT_LINES_AS_IN_ORIGIN&#039;&#039;&#039; ► Does not change a line with a negative price into an absolute discount when creating an invoice ► (V16 ?)&lt;br /&gt;
*&#039;&#039;&#039;INVOICEREC_SET_AUTOFILL_DATE_START&#039;&#039;&#039; and &#039;&#039;&#039;INVOICEREC_SET_AUTOFILL_DATE_END ►&#039;&#039;&#039; Set start and end date to yes for lines of template invoice when created from a draft invoice ► (V16)&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_REC_DATE_TO_YES&#039;&#039;&#039; &#039;&#039;&#039;►&#039;&#039;&#039; Set start and end date to yes by default in add line form for template invoice ► (V16)&lt;br /&gt;
*&#039;&#039;&#039;INVOICE_SUBTYPE_ENABLED&#039;&#039;&#039; ► Extends Dolibarr standard invoice with more invoice types used in some countries. A combo box in the new invoice creation card allows the selection of &amp;quot;subtypes&amp;quot; with values from dictionary &amp;quot;Invoice Subtypes&amp;quot; ► (v19.0+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Leave=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NON_WORKING_DAYS_INCLUDE_SATURDAY&#039;&#039;&#039; ► Set this value to 0 if you want to have the Saturday as a working day&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NON_WORKING_DAYS_INCLUDE_SUNDAY&#039;&#039;&#039; ► Set this value to 0 if you want to have the Sunday as a working day&lt;br /&gt;
&lt;br /&gt;
=Look or Theme=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FAVICON_URL&#039;&#039;&#039; ► favicon url&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EASTER_EGG_COMMITSTRIP&#039;&#039;&#039; ► Show a comic image from the CommitStrip website. Images are refreshed daily. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_STATUS_USES_CSS&#039;&#039;&#039; ►  Change status design using new style ► (v10.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_INCLUDE_GLOBAL_STATS_IN_OPENED_DASHBOARD&#039;&#039;&#039; ► This conf will auto remove global stats box item if there are already in the new dashboard of opened elements and keep displayed stats on the opened item box (not only on mouse over) ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_TOP_MENU_SEARCH_DROPDOWN&#039;&#039;&#039; ► Actually only for eldy theme, this conf move search input  to top menu and use new design too ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THEME_AGRESSIVENESS_RATIO&#039;&#039;&#039; ► This conf can be used to increase/decrease aggressiveness of colors. Value 0 is medium, value is between -100 (light grey colors) to +100 (very flashy colors) ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THEME_SHOW_BORDER_ON_INPUT&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_GLOBAL_WORKBOARD&#039;&#039;&#039; ► Hide the work board of the main page ► (v13.0+)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_GLOBAL_BOXSTATS&#039;&#039;&#039; ► Hide the Statistic Box of the main page&lt;br /&gt;
*&#039;&#039;&#039;ALLOW_THEME_JS ►&#039;&#039;&#039; Allow JS file in theme folder (same name as theme folder)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Manifest (Progressive Web App)=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MANIFEST_APPLI_THEME_COLOR ►&#039;&#039;&#039; Theme color for manifest&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MANIFEST_APPLI_BG_COLOR ►&#039;&#039;&#039; Background color  for manifest&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MANIFEST_APPLI_LOGO_URL  ►&#039;&#039;&#039; Logo for manifest&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MANIFEST_APPLI_LOGO_URL_SIZE  ►&#039;&#039;&#039; Logo url size for app (150, 192, 512px) missing 3 configurations&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Order Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MASSACTION_CREATEBILLS_REDIRECT_IF_ONE&#039;&#039;&#039; ► If set 1, redirects to the one bill created from massaction create bills from order list ► (v20.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MASSACTION_CREATEBILLS_REDIRECT_IF_MANY&#039;&#039;&#039; ► If set to 1, redirects to the invoice list after plural invoices where generated from tho massaction create bills from order list  ► (v20.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ORDERLIST_CREATEBILLS_ONEBYTHIRD&#039;&#039;&#039; ► Allow defining value for option &amp;quot;one by thirdparty&amp;quot; in massaction create bills from orders list page (no by default, yes if set to &#039;yes&#039; or 1) ► (v20.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_PROPAL_REFCLIENT_FOR_ORDER&#039;&#039;&#039; =&amp;gt; Copy customer reference from proposal to order. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ORDER_REQUIRE_SOURCE&#039;&#039;&#039; =&amp;gt; Make the input field &amp;quot;Source of order&amp;quot; mandatory.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ORDER_VALID_AFTER_CLOSE_PROPAL&#039;&#039;&#039; =&amp;gt; When an order is created on a proposal close, the order is directly defined with status &amp;quot;Validated&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ORDER_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039; =&amp;gt; When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ORDER_ENABLE_NEGATIVE&#039;&#039;&#039; =&amp;gt; Can validate an order when amount is negative&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_PROPAGATE_EXTRAFIELDS_TO_ORDER&#039;&#039;&#039; =&amp;gt; Copy also extrafields from thirdparty to order (if name match). ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=PDF Options=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ADD_PDF_BACKGROUND&#039;&#039;&#039; ► Define this constant with short name of a PDF file (example &amp;quot;&amp;lt;code&amp;gt;mypdf.pdf&amp;lt;/code&amp;gt;&amp;quot;) that must be saved into directory &amp;quot;&amp;lt;code&amp;gt;documents/mycompany&amp;lt;/code&amp;gt;&amp;quot;. This will add PDF as a background of some of your generated PDF files (proposals,invoices,orders). If you need to concat PDF, see instead [[Module Concat PDF]].&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_FORCE_SAVEAS&#039;&#039;&#039; ► If your browser always asks to save downloaded files on disk (like PDF), try this this option. File may be displayed directly in your browser. Values : 0= Default (file is auto downloaded), 1= For to output the file into the browser tab, 2= For to output the file into a browser tab open with target_blank&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_PDF_AUTOUPDATE&#039;&#039;&#039; ► Disable automatic generation of PDF each time we add/update/delete a product line (we can still build document by clicking on &amp;quot;Generate&amp;quot;). This option may increase interface speed on servers with low CPU.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_PDF_COMPRESSION&#039;&#039;&#039; ► Disable PDF compression.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOCUMENTS_WITH_PICTURE_WIDTH&#039;&#039;&#039; ► Can change size of picture when hidden option &amp;lt;code&amp;gt;MAIN_GENERATE_PROPOSALS_WITH_PICTURE&amp;lt;/code&amp;gt; is used. By default value is &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS&#039;&#039;&#039; ► Adding the company address at the bottom of the page. Disabled by default&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_PROPOSALS_WITH_PICTURE&#039;&#039;&#039; ► Include the first image of the product into the line of the generated PDF for customer proposals.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_ORDERS_WITH_PICTURE&#039;&#039;&#039; ► Include the first image of the product into the line of the generated PDF for customer orders.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_INVOICES_WITH_PICTURE&#039;&#039;&#039; ► Include the first image of the product into the line of the generated PDF for customer invoices.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_SUPPLIER_PROPOSAL_WITH_PICTURE&#039;&#039;&#039; ► Include the first image of the product into the line of the generated PDF for supplier proposals ► (v5.0.3+)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_SUPPLIER_ORDER_WITH_PICTURE&#039;&#039;&#039; ► Include the first image of the product into the line of the generated PDF for supplier orders&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT&#039;&#039;&#039; ► Disable VAT on generated documents. like for an association. (Works with crabe template)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_COLUMN&#039;&#039;&#039; ► Hide column with VAT information but only column not total.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_INVERT_SENDER_RECIPIENT&#039;&#039;&#039; ► Invert sender and recipient in some PDF. Note: This option is set automatically if country if Germany.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ODT_AS_PDF&#039;&#039;&#039; ► Activate ODT to PDF conversion. Value can be &amp;quot;libreoffice&amp;quot; or &amp;quot;unoconv&amp;quot;. Do not use value &#039;&#039;&#039;&amp;lt;nowiki/&amp;gt;&#039;jodconverter&#039;&amp;lt;nowiki/&amp;gt;&#039;&#039;&#039; any more, as it is declared deprecated and partly not functional, use value &#039;&#039;&#039;&amp;lt;nowiki/&amp;gt;&#039;libreoffice&#039;&#039;&#039;&#039; instead, it requires only &#039;&#039;&#039;soffice&#039;&#039;&#039; (OpenOffice or LibreOffice) installed on server (use &#039;&#039;&#039;apt install soffice libreoffice-common libreoffice-writer&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
If you got this error: javaldx failed! Warning: failed to read path from javaldx with no return to prompt when running soffice --headless -env:UserInstallation=file:&amp;quot;/tmp&amp;quot; --convert-to pdf --outdir xxx ./yyy.odt, check that directory defined into env:UserInstallation parameters exists and is writeable.&lt;br /&gt;
&lt;br /&gt;
You may also have a look at this page if your server is on Windows: [[Générer automatiquement des documents PDF à partir de fichier ODT avec Doliwamp]]&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ODT_AS_PDF_DEL_SOURCE&#039;&#039;&#039; ► For ODT generation. If set, then initial behaviour is conserved but ODT file is removed when option to convert it as PDF (see previous) is on. Disabled by default&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_FORCE_FONT&#039;&#039;&#039; ► To ignore font defined into language file and force usage of a particular font. For example &amp;quot;&amp;lt;code&amp;gt;DejaVuSans&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_FORCE_FONT_SIZE&#039;&#039;&#039; ► To force size of font (by default 10). For example &amp;quot;&amp;lt;code&amp;gt;12&amp;lt;/code&amp;gt;&amp;quot; ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_FREETEXT_HEIGHT&#039;&#039;&#039; ► Change height of space reserved to output the free text.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_TITLE_BACKGROUND_COLOR&#039;&#039;&#039; ► Can define a background color onto title line. Example: &amp;lt;code&amp;gt;220,220,200&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_USE_LARGE_LOGO&#039;&#039;&#039; ► Use the original logo with its higher resolution into the PDF instead of the small thumb. This may lead to very very large PDF !&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_BACKGROUND_ON_PDF&#039;&#039;&#039; ► Define this constant with short name of an image (example &amp;quot;&amp;lt;code&amp;gt;myimage.jpg&amp;lt;/code&amp;gt;&amp;quot;) that must be saved into directory &amp;quot;&amp;lt;code&amp;gt;documents/mycompany/logos&amp;lt;/code&amp;gt;&amp;quot;. This will add this background image into your generated PDF files.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_COMPANY_NAME_OF_CONTACT&#039;&#039;&#039; ► Use contact name and information rather than company&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_ADDALSOTARGETDETAILS&#039;&#039;&#039; ► If 1, add details of recipient on generated PDFs (email, fax, url and phone). Can be useful in cases where a printed order/invoice etc is given to a delivery driver/courier etc.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_TVAINTRA_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show VAT N° in source address of PDF to comply with legalities in certain countries. Note that VAT number should be already visible in footer of page ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING&#039;&#039;&#039; ► Add optional esign field in pdf propal ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROFID1_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 1 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROFID2_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 2 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROFID3_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 3 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROFID4_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 4 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROFID5_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 5 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROFID6_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 6 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_BANK_HIDE_NUMBER_SHOW_ONLY_BICIBAN&#039;&#039;&#039; ► Hide bank number (&amp;quot;code banque/guichet/compte&amp;quot; for France, &amp;quot;sort code/account number&amp;quot; for GB, ...) and keep only BIC/IBAN on PDF.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_BOLD_PRODUCT_REF_AND_PERIOD&#039;&#039;&#039; ► Add more visibility (bold) on product ref and period of service in desc. ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_HIDE_PRODUCT_REF_IN_SUPPLIER_LINES&#039;&#039;&#039; ► Modify the use/position of Supplier Ref/Internal Ref with the item Label (name) on PDF documents.&lt;br /&gt;
&lt;br /&gt;
Default (constant not set or Value &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;): Internal ref followed by supplier ref in brackets.&amp;quot;COMPANY-REF-001 (Vendor SKU SUPPLIER-REF-001) - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Value &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;: Supplier ref only eg.&amp;quot;SUPPLIER-REF-001 - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Value &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;: Supplier ref followed by internal ref in brackets. eg.&amp;quot;SUPPLIER-REF-001 (InternalRef COMPANY-REF-001) - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME&#039;&#039;&#039; ► Include alternative/alias name into name on PDF.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_SECURITY_ENCRYPTION&#039;&#039;&#039; ► Encrypt PDF produced by dolibarr ► (v?) . See additional parameters :PDF_SECURITY_ENCRYPTION_RIGHTS (block &#039;modify&#039; or &#039;copy&#039;) - &#039;&#039;&#039;PDF_SECURITY_ENCRYPTION_USERPASS&#039;&#039;&#039; - &#039;&#039;&#039;PDF_SECURITY_ENCRYPTION_OWNERPASS&#039;&#039;&#039; (random if not specified) - &#039;&#039;&#039;PDF_SECURITY_ENCRYPTION_STRENGTH&#039;&#039;&#039; (0 = RC4 40 bit; 1 = RC4 128 bit; 2 = AES 128 bit; 3 = AES 256 bit) - &#039;&#039;&#039;PDF_SECURITY_ENCRYPTION_PUBKEYS&#039;&#039;&#039; Array of recipients containing public-key certificates (&#039;c&#039;) and permissions (&#039;p&#039;) - For example: array(array(&#039;c&#039; =&amp;gt; &#039;file://../examples/data/cert/tcpdf.crt&#039;, &#039;p&#039; =&amp;gt; array(&#039;print&#039;)))&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_SHOW_PROJECT&#039;&#039;&#039; ► Show project onto PDF (supported on supplier order only for the moment)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_USE_1A&#039;&#039;&#039; ► PDF files produced by dolibarr respect PDF/A standard ► (v?)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_USE_ALSO_LANGUAGE_CODE&#039;&#039;&#039; ► The value of this constant must be a language code (&#039;fr_FR&#039;, &#039;en_US&#039;, &#039;sa_SA&#039;, ...). If set, the PDF document will contains both language (default and the one defined by the constant).&lt;br /&gt;
*&#039;&#039;&#039;DOC_SHOW_FIRST_SALES_REP&#039;&#039;&#039; ► Show the sales representant on header (at least on propal azur and rubis template)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_DASH_BETWEEN_LINES&#039;&#039;&#039;&lt;br /&gt;
*&lt;br /&gt;
*&#039;&#039;&#039;SHOW_SUBPRODUCT_REF_IN_PDF&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;PDF_HIDE_PRODUCT_LABEL_IN_SUPPLIER_LINES&#039;&#039;&#039; ► hide product label in supplier order lines (V15+)&lt;br /&gt;
*&#039;&#039;&#039;SHIPPING_PDF_DISPLAY_AMOUNT_HT&#039;&#039;&#039; ► Show HT unit price and HT total price for lines of PDF shipment&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOCUMENTS_HIDE_DESCRIPTION_FOR_FACTURE&#039;&#039;&#039; ► To Hide product description in Customer Invoice&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOCUMENTS_HIDE_DESCRIPTION_FOR_COMMANDE&#039;&#039;&#039; ► To Hide product description in Sales Order&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOCUMENTS_HIDE_DESCRIPTION_FOR_ORDER_SUPPLIER&#039;&#039;&#039; ► To Hide product description in Purchase Order&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOCUMENTS_HIDE_DESCRIPTION_FOR_INVOICE_SUPPLIER&#039;&#039;&#039; ► To Hide product description in Vendor Invoice&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PDF_PROPAL_SHOW_PRICE_INCL_TAX&#039;&#039;&#039; ► Display price with tax on Proposal(cyan template), Order(eratosthene template), Bill(sponge template) (V17+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Point of Sale (POS)=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CASHDESK_SHOW_KEYPAD&#039;&#039;&#039; ► Show a mouse key pad into the &#039;Simple Point of Sale&#039; module.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;POS_ADDON&#039;&#039;&#039; ► Set this value to an existing numbering module rule (for example &#039;&amp;lt;code&amp;gt;mod_facture_terre&amp;lt;/code&amp;gt;&#039;, &#039;&amp;lt;code&amp;gt;mod_facture_mars&amp;lt;/code&amp;gt;&#039;, ...) to force the numbering module to use for invoice ref definition when invoice is created by the POS. For example setting value &amp;lt;code&amp;gt;POS_ADDON&amp;lt;/code&amp;gt; to &#039;&amp;lt;code&amp;gt;mod_facture_terre&amp;lt;/code&amp;gt;&#039; will use the numbering module &#039;&amp;lt;code&amp;gt;terre&amp;lt;/code&amp;gt;&#039; for invoice generated from POS, whatever is the numbering rule defined into invoice module setup (you can also use POS_NUMBERING_TERRE_FORCE_PREFIX and POS_NUMBERING_MARS_FORCE_PREFIX variable to change the prefix used).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;TAKEPOS_ENABLE_SUMUP&#039;&#039;&#039; ► Enable the compatibility of TakePOS with the card reader terminal [https://SumUp.fr SumUp]&lt;br /&gt;
*&#039;&#039;&#039;TAKEPOS_CAN_FORCE_BANK_ACCOUNT_DURING_PAYMENT&#039;&#039;&#039; ► Possibility to force the bank account during the payment in TakePOS  ► (v13.0)&lt;br /&gt;
*&#039;&#039;&#039;TAKEPOS_CONTROL_CASH_OPENING&#039;&#039;&#039; ► Control the cash opening&lt;br /&gt;
*&#039;&#039;&#039;TAKEPOS_NUMPAD_FORCE_PAYMENT_ICONS_LABELS&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Products Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CATEGORY_GRAPHSTATS_ON_PRODUCTS&#039;&#039;&#039; ► Show graph of products with categories and totals in Products Area screen&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PRODUCT_DISABLE_CUSTOMCOUNTRYCODE&#039;&#039;&#039; ► Avoid customs code and country of origin to be set as product description when added to Propal/Order/Invoice&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_ADD_TYPE_IN_DOCUMENTS&#039;&#039;&#039; ► Add text &amp;quot;Product&amp;quot; or &amp;quot;Service&amp;quot; at beginning of details lines on built PDF documents.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DONOTSEARCH_ANYWHERE&#039;&#039;&#039; ► When Ajax search is enabled, search is done on criteria anywhere in label of product. By adding this option, search is done only on start of label. This is really faster when you have a huge number of products.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DIRECT_STATUS_UPDATE&#039;&#039;&#039; ► Allows you to change the status of the product (&#039;&#039;for sale/not for sale for purchase/not for purchase&#039;&#039;) directly on the product page via a &#039;&#039;on/off&#039;&#039; switch button. This can be convenient for those who need to quickly disable certain statuses of products without having to go through the editing product page individually. Also can be very useful if used as a filter on the product and product search list. This option doesn&#039;t generate a MODIFY trigger, so be careful with external modules. ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SEARCH_PRODUCT_BY_FOURN_REF&#039;&#039;&#039; ►  Allow to search a product by supplier ref in document&#039;s add line form. ► (&amp;gt;= 8.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_FREE_LINES&#039;&#039;&#039; ► Disallow using free lines to add line in documents ► (&amp;gt;= 8.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_PRODUCT_ACTIVITY_TRIM&#039;&#039;&#039; ► Show Product and Services turnover before for all four quarters tax over recent years recent years on the product area ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_DESC_IN_LIST&#039;&#039;&#039; ► Show long description of product/service into lists.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_PROPAGATE_CUSTOMER_PRICES_ON_CHILD_COMPANIES&#039;&#039;&#039; ► Disable propagation of prices per customer from a customer to its child company.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_PUBLIC_URL&#039;&#039;&#039; ► Disable public url in product card ► (v14.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_STOCK_LEVELS&#039;&#039;&#039; ► Disable properties of stock limits and desired optimal value on product ► (v14.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_NATURE&#039;&#039;&#039; ► Disable nature in product card ► (v14.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_WEIGHT&#039;&#039;&#039; ► Disable weight in product card ► (v14.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_PRICES&#039;&#039;&#039; ► Disable prices in product card ► (v14.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_ACCOUNTING&#039;&#039;&#039;  ► Disable accounting in product card ► (v14.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_SIZE&#039;&#039;&#039; ► Disable size in product card.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_LENGTH&#039;&#039;&#039; ► Disable length in product card ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_SURFACE&#039;&#039;&#039; ► Disable surface in product card. ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_VOLUME&#039;&#039;&#039; ► Disable volume in product card.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_CUSTOM_INFO&#039;&#039;&#039; ► Disable custom info (custom code and country origin) in product/service card.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_MULTIPRICES_USE_VAT_PER_LEVEL&#039;&#039;&#039; ► When option to use price per level/segment is on, this allows to also set a dedicated vat for each price level.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_CUSTOMER_PRICES_BY_QTY&#039;&#039;&#039; ► If price per quantity ► &#039;&#039;Experimental&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES&#039;&#039;&#039; ► If price per quantity and customer ► &#039;&#039;Experimental&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_LOT_ENABLE_QUALITY_CONTROL&#039;&#039;&#039; ► Enable feature (Display fields for life time and quality control duration) for quality control on product and lot&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_MAX_LENGTH_COMBO&#039;&#039;&#039; ► Limit the length of the label displayed when adding lines in proposals/invoices/orders&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_MAX_VISIBLE_PHOTO&#039;&#039;&#039; ► Show a maximum number of product photos (as thumbnails) on the product main card. Example, setting this constant to &#039;&amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;&#039; will show the first five product photos found on the product card.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_PDF_MERGE_PROPAL&#039;&#039;&#039; ► Enable module Propal merge product PDF&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_USE_OLD_PATH_FOR_PHOTO&#039;&#039;&#039; ► Ask dolibarr to check also old path (before 3.7) where photos were stored.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_USE_UNITS&#039;&#039;&#039; ► Add other units on products (Use same dictionary as default unit feature) and propagate this unit on line of documents.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EDIT_LINE_ALLOW_ALL_UNIT_TYPE ►&#039;&#039;&#039; Allow the selection of other unit types when editing the document line&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;RESOURCE_ON_PRODUCTS&#039;&#039;&#039; ► Allow to affect resources on products/services ► (v10.0+)&lt;br /&gt;
*&#039;&#039;&#039;RESOURCE_ON_SERVICES&#039;&#039;&#039; ► Allow to affect resources on products/services ► (v10.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_SHOW_ORIGIN_IN_COMBO&#039;&#039;&#039; ► Show origin of products when adding lines in proposals/invoices/orders ► (v12.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_ATTRIBUTES_HIDECHILD&#039;&#039;&#039;  ► Add option hide child if variantes&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_ADD_FORM_ADD_TO&#039;&#039;&#039; ► Add a product to a draft proposal/order/invoice, from the product card.&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_SELLBY&#039;&#039;&#039; ► Hide the Sell by date ► (v13.0+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DISABLE_EATBY&#039;&#039;&#039; ► Hide the Eat by date ► (v13.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_DENY_CHANGE_PRODUCT_TYPE&#039;&#039;&#039; ► Forbid to change the product type&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_SORT_BY_CATEGORY&#039;&#039;&#039; ► Sort the product by categories instead of by ID&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_ADD_NET_MEASURE&#039;&#039;&#039; ► Support Net Measure in product&#039;s card.php (For real weight, volume or piece; needed for some business ie fruits, vegetables....). Note brut value is already available natively, use this option only if you need 2 weights, 2 volumes, ...for each product) ► (v11.0.1+)&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_PRICE_BASE_TYPE&#039;&#039;&#039;  ► value &#039;TTC&#039; / &#039;HT&#039; specify the default value of the price (with or without taxes) ► (v16.0.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_LOAD_EXTRAFIELD_INTO_OBJECTLINES&#039;&#039;&#039; ► Load product extrafiled on object lines&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUCT_USE_SUB_COST_PRICES_IF_COST_PRICE_EMPTY&#039;&#039;&#039; : Calculate the parent product production price by child prices.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Projects Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_ALLOW_TO_LINK_FROM_OTHER_COMPANY&#039;&#039;&#039; ► Option related to the combo list Project on elements. It is a list of thirdparty IDs. If set, you can link an object to a project owned by one of this thirdparty in the list.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_ALLOW_COMMENT_ON_PROJECT&#039;&#039;&#039; ► Add comment feature on a project&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_ALLOW_COMMENT_ON_TASK&#039;&#039;&#039; ► Add comment feature on project task&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_ALWAYS_DISCARD_CLOSED_PROJECTS_IN_SELECT&#039;&#039;&#039; ► Discards closed projects in every select field. A closed project can&#039;t be associated to an object ► (v20.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS&#039;&#039;&#039; ► Option related to the combo list Project on elements. Can link an element (purhcase invoice, purchase order, reception, ...) to any project even if object has a different supplier than the one of the project to link to. See also PROJECT_ALLOW_TO_LINK_FROM_OTHER_COMPANY that is different because it allows to define some given thirdparty ID to allow.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_CREATE_ON_OVERVIEW_DISABLED&#039;&#039;&#039; ► Hide the &amp;quot;create ...&amp;quot; button on the overview page ► (v4.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_DISABLE_UNLINK_FROM_OVERVIEW&#039;&#039;&#039; ► Enable removing the button from a link in the project overview. ► (&amp;gt;= v8.0.1)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_HIDE_UNSELECTABLES&#039;&#039;&#039; ► Hide into select list, all project that we can&#039;t select (closed or draft)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_HIDE_TASKS&#039;&#039;&#039; ► Hide tasks. For user using project only as an analytics key and not using tasks.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_LIST_SHOW_STARTDATE&#039;&#039;&#039; ► Shows start date of projects in project lists.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_LINK_ON_OVERWIEW_DISABLED&#039;&#039;&#039; ► Hide the &amp;quot;link to&amp;quot; form on the overview page ► (v4.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_SHOW_REF_INTO_LISTS&#039;&#039;&#039; ► Add column with project ref into list (with 3.7 list of supplier invoices only, will be expanded to other lists)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_TIME_ON_ALL_TASKS_MY_PROJECTS&#039;&#039;&#039; ► Can add time spent on tasks, even if i am not assigned to task (however, task must be a project i am a contact).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_OPEN_ALWAYS_ON_TAB&#039;&#039;&#039; ► Set to value &#039;task&#039;, or &#039;preview&#039; to always open the project on the given tab instead of main tab.&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&#039;&#039;&#039;PROJECT_ELEMENTS_FOR_MINUS_MARGIN&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Proposals Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_GENERATE_PROPOSALS_WITH_PICTURE&#039;&#039;&#039; ► Add a picture of the product (the first one found if there are several) into the generated PDF of proposals. Note that using this will reduce the available width for the product description.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROPAL_CHOOSE_ODT_DOCUMENT&#039;&#039;&#039; ► On setup page, you&#039;ll be able to select which ODT document to use when close or cancel proposals.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING&#039;&#039;&#039; ► add optional esign field in pdf propal ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROPAL_CLONE_ON_CREATE_PAGE&#039;&#039;&#039; ► On the create proposal page, ask if we want to create the proposal by cloning an already existing one. You should use instead the &amp;quot;Clone&amp;quot; button available on existing proposals.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROPAL_DISABLE_SIGNATURE&#039;&#039;&#039; ► Do no show the box for signature.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PRODUIT_PDF_MERGE_PROPAL&#039;&#039;&#039; ► When generating the proposal PDF, all PDFs linked to products linked to proposal are also included into final PDF&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROPOSAL_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039; ► When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROPOSAL_AUTO_ADD_AUTHOR_AS_CONTACT&#039;&#039;&#039; ► Add Proposal Author as user contact follow proposal&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROPOSAL_PDF_HIDE_PAYMENTTERM&#039;&#039;&#039; ► Do not show the payment term on proposal ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;PROPOSAL_PDF_HIDE_PAYMENTMODE&#039;&#039;&#039; ► Do not show the payment mode on proposal ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;WORKFLOW_PROPAL_CAN_CLASSIFY_BILLED_WITHOUT_INVOICES&#039;&#039;&#039; ► Button &amp;quot;Classified Billed&amp;quot; is visible on proposal even if there is no invoice linked to proposal.&lt;br /&gt;
*&#039;&#039;&#039;PROPAL_REOPEN_UNSIGNED_ONLY&#039;&#039;&#039;  ► Do not allow reopening of signed (or billed) proposals. (V15)&lt;br /&gt;
*&#039;&#039;&#039;PROPOSAL_ARE_NOT_BILLABLE&#039;&#039;&#039;  ► Disable billing button on proposals (V15)&lt;br /&gt;
*&#039;&#039;&#039;PROPAL_DEFAULT_NOTE_PUBLIC&#039;&#039;&#039; ► Default text in public note&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Services Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SERVICE_ARE_ECOMMERCE_200238EC&#039;&#039;&#039; ►  If seller and buyer are in Europe and buyer is not a company, use the VAT of buying country. For french speaking people, see also the page [[Loi_européenne_TVA_Vente_à_Distance_VAD_et_e-commerce_BtoC]].&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FILL_SERVICE_DATES_FROM_LAST_SERVICE_LINE&#039;&#039;&#039;  ► (v13.0) On add line form add a button to fill service dates from the last service line&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Shipments=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;STOCK_WAREHOUSE_NOT_REQUIRED_FOR_SHIPMENTS&#039;&#039;&#039; ► If set, you can add a shipment line, with no stock source defined. ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SHIPMENT_GETS_ALL_ORDER_PRODUCTS&#039;&#039;&#039; ► Add all order lines in shipment, including the one with 0 in quantity&lt;br /&gt;
*&#039;&#039;&#039;SHIPPING_PDF_HIDE_ORDERED&#039;&#039;&#039; ►Hide column quantity ordered on shipment pdf (&amp;gt;=15.0)&lt;br /&gt;
*&#039;&#039;&#039;STOCK_SUPPORTS_SERVICES&#039;&#039;&#039; ►Allow to manage services into warehouse and allow to ship services&lt;br /&gt;
*&#039;&#039;&#039;SHIPMENT_SUPPORTS_SERVICES&#039;&#039;&#039; ►Allow to ship services without stock (&amp;gt;=19.0)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Stocks=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_DISABLE_STOCK_DISPATCH_WHEN_TOTAL_REACHED&#039;&#039;&#039; ► Disable stock dispatch when total expected was already received&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;STOCK_EXCLUDE_VIRTUAL_PRODUCTS&#039;&#039;&#039; ► If product is a virtual product, we do not manage stock for it.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ENTREPOT_EXTRA_STATUS&#039;&#039;&#039; ► Instead of the 2 status (Closed, Open), a Warehouse has 3 status: Closed, Open (for all movements), Open (for internal movement only). Internal movement only means you can&#039;t use the warehouse to make shipment or receptions.&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_STATUS_FOR_VIRTUAL_STOCK&#039;&#039;&#039; ► For the calculation of virtual stocks, by default supplier orders with the status 3 (ordered) and 4 (partially received) are used. You can enter the list of statuses to be taken into account separated by commas for this calculation (example: 0,1,2,3)&lt;br /&gt;
*&#039;&#039;&#039;STOCK_MOVEMENT_LIST_HIDE_UNIT_PRICE&#039;&#039;&#039; ► to hide unit price on some pages (V15+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Suppliers Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FOURN_PRODUCT_AVAILABILITY&#039;&#039;&#039; ► On the Suppliers price page of the products, activate the supplier product availability. &#039;&#039;This is duplicate feature with delivery_delay introduced with 3.8.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;RELOAD_PAGE_ON_SUPPLIER_CHANGE&#039;&#039;&#039; ► On creation of a supplier order/invoice, reload form with supplier-specific details when supplier is selected from drop-down list.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_INVOICE_WITH_PREDEFINED_PRICES_ONLY&#039;&#039;&#039; ► Restrict selection of products in supplier invoice to only those with a buying price defined for that supplier. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_AUTOADD_USER_CONTACT&#039;&#039;&#039; ► Add user approving supplier order as a contact automatically.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_DEFAULT_PAYMENT_MODE_ID&#039;&#039;&#039; ► Set the default payment method for suppliers (&amp;lt;code&amp;gt;rowid&amp;lt;/code&amp;gt; in table &amp;lt;code&amp;gt;llx_c_paiement&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_USE_DISPATCH_STATUS&#039;&#039;&#039; ► Add a status on each dispatch order line when receiving products from suppliers ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_NO_DIRECT_APPROVE&#039;&#039;&#039; ► No button &amp;quot;Validate and Approve&amp;quot;. Always do step &amp;quot;Validate&amp;quot; and &amp;quot;Approve&amp;quot; in 2 steps.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_WITH_PREDEFINED_PRICES_ONLY&#039;&#039;&#039; ► Restrict selection of products in supplier order to only those with a buying price defined for that supplier. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_ORDER_EDIT_BUYINGPRICE_DURING_RECEIPT&#039;&#039;&#039; ► Can modify the buying price used for PMP calculation when making a stock reception on a supplier order. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_PROPOSAL_WITH_PREDEFINED_PRICES_ONLY&#039;&#039;&#039; ► Restrict selection of products in supplier proposal to only those with a buying price defined for that supplier. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;DISPLAY_DISCOUNTED_SUPPLIER_PRICE&#039;&#039;&#039; ► Allow to display discounted supplier price when searching product in supplier documents ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_CAN_EDIT_SUPPLIER_ON_SUPPLIER_ORDER&#039;&#039;&#039; ►  Allow to change the supplier on a draft supplier order ► (v10.0)&lt;br /&gt;
*&lt;br /&gt;
*&#039;&#039;&#039;SUPPLIER_PROPOSAL_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Third Parties Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;COMPANY_AQUARIUM_CLEAN_REGEX&#039;&#039;&#039; ► Add a REGEX rule on the third parties names. It applies a regex replacement pattern on generated code if COMPANY_AQUARIUM_CLEAN_REGEX is set. Value must be a regex with parenthesis. The part into parenthesis is kept, the rest removed. For example if COMPANY_AQUARIUM_CLEAN_REGEX = &#039;&amp;lt;code&amp;gt;^..(..)..(.*)&amp;lt;/code&amp;gt;&#039; the first char and second char are removed and the char 5 and 6 too ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_UNKNOWN_CUSTOMERS_ARE_COMPANIES&#039;&#039;&#039; ► See in Global options section.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_VAT_COMPANIES_IN_EEC_WITH_INVALID_VAT_ID_ARE_INDIVIDUAL&#039;&#039;&#039; ► See in Global options section.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_EMAIL_MANDATORY&#039;&#039;&#039; ► E-mail is a mandatory field when creating a thirdparty&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_DISABLE_CUSTOMERS&#039;&#039;&#039; ► Remove all menu and features related to customers&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_DISABLE_PROSPECTS&#039;&#039;&#039; ► Remove all menu and features related to prospects&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_DISABLE_PROSPECTSCUSTOMERS ►&#039;&#039;&#039; Remove the status &amp;quot;Customer/Prospect&amp;quot; when thirdparties creation or modification&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_DISABLE_STATE&#039;&#039;&#039; ► Do not use field &amp;quot;state/province&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_SORT_ON_TYPEENT&#039;&#039;&#039; ► The combo list of &amp;quot;type of third party&amp;quot; is sorted on alphabetical order instead of the field &amp;quot;position&amp;quot; that appears into dictionary instead.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_ASK_FOR_SHIPPING_METHOD&#039;&#039;&#039; ► Shipping method can be predefined on customer card and will be used as default on order creation&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_ADD_REF_IN_LIST&#039;&#039;&#039; ► Displays the code before the name in the lists  ► Value 1 -&amp;gt; Code + name + alias ou Code + name if colone alias 2 -&amp;gt; Code + alias 3 -&amp;gt; Alias&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_CAN_HAVE_CATEGORY_EVEN_IF_NOT_CUSTOMER_PROSPECT_SUPPLIER&#039;&#039;&#039; ► Possible to add Categories to third parties that are not customer, prospect or supplier.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_DEFAULT_USELOCALTAX1&#039;&#039;&#039; ► When creating a new third party, the field &amp;quot;Use second tax&amp;quot; is set to on or off depending on value of this parameter.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_DEFAULT_USELOCALTAX2&#039;&#039;&#039; ► When creating a new third party, the field &amp;quot;Use third tax&amp;quot; is set to on or off depending on value of this parameter.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_NOTCUSTOMERPROSPECT_BY_DEFAULT&#039;&#039;&#039; ► Do not set status &amp;quot;Customer/Prospect&amp;quot; to &amp;quot;on&amp;quot; when creating a new third party from menu &amp;quot;New third party&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_INCLUDE_PARENT_IN_LINKTO&#039;&#039;&#039; ► Search also for elements on parent third party when using the &amp;quot;link to&amp;quot; object feature.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_INCLUDE_PROJECT_THIRDPARY_IN_LINKTO&#039;&#039;&#039; ► Search also for elements on third party that own the project of the current element when using the &amp;quot;link to&amp;quot; object feature (if project is owned by a different thirdparty than current one).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_LOGO_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039; ► When a logo is uploaded, a share key is automatically set so the file can be downloaded using the share key.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_SUGGEST_ALSO_ADDRESS_CREATION&#039;&#039;&#039; ► Enabled contact creation on third-party create card&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_QUICKSEARCH_ON_FIELDS&#039;&#039;&#039; ► Personalized search criteria ► Example: $conf-&amp;gt;global-&amp;gt;THIRDPARTY_QUICKSEARCH_ON_FIELDS = &#039;s.nom=ThirdPartyName;s.name_alias=AliasNameShort;s.code_client=CustomerCode&#039;&lt;br /&gt;
*&#039;&#039;&#039;MEMBER_CAN_CONVERT_CUSTOMERS_TO_MEMBERS&#039;&#039;&#039; ► Enabled member creation on third-party create card&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_DISABLE_PARENTCOMPANY&#039;&#039;&#039; ► Disables attachment to a parent company.&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_CUSTOMERPROSPECT_BY_DEFAULT&#039;&#039;&#039; ► Set the third party to customer by default&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_SUPPLIER_BY_DEFAULT&#039;&#039;&#039; ► Set the third party to supplier by default&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_CUSTOMERTYPE_BY_DEFAULT&#039;&#039;&#039; ► Set the third party type by default (3 = customer &amp;amp; prospect / 2 = prospect / 1 = customer )&lt;br /&gt;
*&#039;&#039;&#039;CONTACT_DISABLE_PERSONALINFO&#039;&#039;&#039; ► Disable Personal data on contact page&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_DISABLE_WORKFORCE&#039;&#039;&#039; ► Disable work force selector on society page&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_SHOW_VAT_IN_LIST&#039;&#039;&#039; ► display VAT number in combo list of thirdparties ► (V15+)&lt;br /&gt;
*&#039;&#039;&#039;THIRDPARTY_DEFAULT_CREATE_CONTACT&#039;&#039;&#039; ► When set, a contact is created at the creation of an individual third party ► (v14.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SUPPORT_SHARED_CONTACT_BETWEEN_THIRDPARTIES&#039;&#039;&#039; ► Able to share contact between several third parties&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Ticket Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;TICKET_SHOW_MESSAGES_ON_CARD&#039;&#039;&#039; ►Display all ticket related messages on the main ticket card. ► (&amp;gt;= 10.0)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_AUTO_ASSIGN_CONTRACT_CREATE&#039;&#039;&#039; ►Automatically create a contract linked to the ticket ► (&amp;gt;= 10.0)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_AUTO_CREATE_FICHINTER_CREATE&#039;&#039;&#039; ►Automatically create an intervention linked to the ticket ► (&amp;gt;= 10.0)&lt;br /&gt;
*&#039;&#039;&#039;WORKFLOW_TICKET_CLOSE_INTERVENTION&#039;&#039;&#039; ►On ticket close, automatically close an intervention linked to the ticket&lt;br /&gt;
*&#039;&#039;&#039;TICKET_CHECK_NOTIFY_THIRDPARTY_AT_CREATION&#039;&#039;&#039; ►Automatically check &amp;quot;notify thirdparty at creation&amp;quot; ( &amp;gt;=16)&lt;br /&gt;
*&#039;&#039;&#039;TICKETS_MESSAGE_FORCE_MAIL&#039;&#039;&#039; ► Pre check email sending on ticket message (&amp;gt;=15)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_SEND_PRIVATE_EMAIL ►&#039;&#039;&#039; Allow a private message to be sent by mail (&amp;gt;=17)&lt;br /&gt;
*&#039;&#039;&#039;TICKET_LIMIT_VIEW_ASSIGNED_ONLY&#039;&#039;&#039;  &#039;&#039;&#039;►&#039;&#039;&#039; Only display tickets assigned to the user&lt;br /&gt;
*&#039;&#039;&#039;TICKET_ADD_AUTHOR_AS_CONTACT&#039;&#039;&#039; &#039;&#039;&#039;►&#039;&#039;&#039; If set to 1: Automatically adds the author as internal contact. If set to 2: Automatically adds the author as external contact if external user. (&amp;gt;=20)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=VAT Report=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_INCLUDE_ZERO_VAT_IN_REPORTS&#039;&#039;&#039; ► Include lines with VAT to 0% (for &amp;quot;auto-liquidation&amp;quot; in EEC) ► (v8.0.3+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Website Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;WEBSITE_USE_WEBSITE_ACCOUNTS&#039;&#039;&#039; ► Add a table and a tab to manage some accounts for websites to a third party&lt;br /&gt;
*&#039;&#039;&#039;WEBSITE_ALLOW_OVERWRITE_GIT_SOURCE&#039;&#039;&#039; ► Add a button to export a website over the GIT sources&lt;br /&gt;
*&#039;&#039;&#039;WEBSITE_ADD_CSS_TO_BODY&#039;&#039;&#039; ► Add a CSS class to the body tag of websites&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=WYSIWYG Editor=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;FCKEDITOR_ENABLE_DETAILS_FULL&#039;&#039;&#039; ► Can cut and paste external images (hosted on external server) into description of proposal, orders or invoices. WARNING: PDF generation is not guaranteed with this. Also if the image is removed or renamed by the image hosting service, your proposal, order or invoice will be broken.&lt;br /&gt;
*&#039;&#039;&#039;FCKEDITOR_ALLOW_ANY_CONTENT&#039;&#039;&#039; ► Allow to enter any content. However, this will totally disable content filtering which is one of the most important CKEditor features. You can use this to keep all your tags and attributes in the html content.&lt;br /&gt;
*&#039;&#039;&#039;FCKEDITOR_ENABLE_SCAYT_AUTOSTARTUP ►&#039;&#039;&#039; Allow to activate the SpellCheckAsYouType (SCAYT) plugins of CKEditor i.e an automatic spell checking. The value to activate this option is 1.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=STRIPE Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;STRIPE_FORCE_VERSION&#039;&#039;&#039; ► Force the STRIPE version. For Example: &amp;quot;2019-09-09&amp;quot; (v11+)&lt;br /&gt;
*&#039;&#039;&#039;STRIPE_REUSE_EXISTING_INTENT_IF_FOUND&#039;&#039;&#039; ► With this, you will have idempotency key but the payment intention will be reuse and not Generate again (13+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=ClickToDial Module=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CLICKTODIAL_FORCENEWTARGET&#039;&#039;&#039; ► Open in new page.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=For SaaS / Cloud hosting integrators=&lt;br /&gt;
&lt;br /&gt;
The following options are useless for a common usage of Dolibarr. But they are usefull if you plan to host / provide Dolibarr instances as Software As A Service (SAAS) to your customers.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CRON_DISABLE_KEY_CHANGE&#039;&#039;&#039; ► When you provide an instance to a customer, you probably also add an entry in the cron of this user so Dolibarr batch and scheduler can work correctly. For security purpose, it may have a security key that is inside the command line into the cron entry and this entry must match the value defined into Dolibarr setup (setup of module &#039;Scheduled Jobs&#039;). Because, a customer of a Saas platform will probably have no access to edit the cron file, it is also import that he has no way to edit the key into the Dolibarr setup, so the key in the cron command line will always match the key in Dolibarr setup, and the Dolibarr batches will executed without security errors. To be sure, the customer does not change the value, you can set this constant to 1 into the table [[Table_llx_const]].&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CRON_DISABLE_TUTORIAL_CRON&#039;&#039;&#039; ► Disable the tutorial about how to install the cron script (on a SaaS hosting, this should be done by the web hosting provider)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;CRON_WARNING_DELAY_HOURS&#039;&#039;&#039; ► Set this value to the frequency set for the cron script (so a warning will be shown to user to warn it about max frequency of its scheduled jobs)&lt;br /&gt;
 &lt;br /&gt;
*&#039;&#039;&#039;MAILING_NO_USING_PHPMAIL&#039;&#039;&#039; ► To avoid bad use of the emailing module, it is recommended to set this option to 1 (This option is described previously). Also you can complete the message visible by customers when they try to setup the SMTP credentials of their Dolibarr by using the constant MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS (This option is described previously). For example, you can point to a FAQ on your website.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_IN_SAME_EMAIL&#039;&#039;&#039; ► If you have set a system limit on number of recipients on your system, you can set also this option to match the same value, so users will be informed: So &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_IN_SAME_EMAIL&#039;&#039;&#039; restricts sending of 1 email message to &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; recipients for the same email message (x for To: + CC: + BCC:). If not defined, value is &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;. Required to fight against spamming that include a ton of recipients in 1 message. Note that &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_TO_IN_SAME_EMAIL&#039;&#039;&#039;, &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_CC_IN_SAME_EMAIL&#039;&#039;&#039; and &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_BCC_IN_SAME_EMAIL&#039;&#039;&#039; are also available. Note that this is not a hard limit; it is just the quantity that will be displayed on warnings on screen. For a real limit, this must be implemented into the system.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_LIMIT_SENDBYDAY&#039;&#039;&#039; ► This is a limit of number of emails, an instance can send. Note that this is not a hard limit; it is just the quantity that will be displayed on warnings on screen. For a real limit, this must be implemented into the system.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAILING_LIMIT_WARNING_PHPMAIL&#039;&#039;&#039; ► Set this value to a translation key. Then add translation keys into the instance so user will see a message when into the email setup page. For example, you can set a message to say &#039;&#039;Warning: To avoid abuse, when using default setup, you are restricted to 500 emails per day for all your application (account may be suspended in case of violation of this rule. You can setup application to use your own SMTP server for sending email so you want have no restriction at all (see menu Home-Setup-Emails)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ALWAYS_CREATE_LOCK_AFTER_LAST_UPGRADE&#039;&#039;&#039; ► If set, when you launch upgrades of your customer instances, you are sure that the upgrade process recreate automatically the file install.lock and remove the upgrade.unlock so the administration tools like install.php, upgrade.php and repair.php can&#039;t be used on your customer instance (until the install.lock file is deleted or the upgrade.unlock file is created).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EXTERNAL_SMTP_CLIENT_IP_ADDRESS&#039;&#039;&#039; ► (A better name of this option should be MAIN_EXTERNAL_MAIL_CLIENT_IP_ADDRESS). Set here the list of IPs where your Dolibarr instances are hosted. So when your customer go into the setup area of email:&lt;br /&gt;
**If he chose mail method, a message will explain him how to setup its SPF record for its email domain (showing the list of IP). This is to avoid to have its emails, sent from its Dolibarr instance, fails due to strict antispam rule of some emailing servers.&lt;br /&gt;
**If he chose smtp method, a message will explain him the list of IP he can use if there is restriction on IP by the SMTP agent. If you also need to add a message to help SPF setup, see option &#039;&#039;&#039;MAIN_EXTERNAL_SMTP_SPF_STRING_TO_ADD&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EXTERNAL_SMTP_SPF_STRING_TO_ADD&#039;&#039;&#039; ► Set here the string to add in the SPF record This string will be shown into a help message when the user in in the setup of email page and has choose a method using an external SMTP server.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FIRST_PING_OK_ID&#039;&#039;&#039; ► Set this value to &amp;quot;disabled&amp;quot; to remove completely any ping after a complete setup.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FILECHECK_LOCAL_SUFFIX&#039;&#039;&#039; and &#039;&#039;&#039;MAIN_FILECHECK_LOCAL_EXT&#039;&#039;&#039; ► If you offer a customized or patched version of Dolibarr, when the user will use the tool to check the integrity of files, the default xml file name used for signature checking will be the official file provided by the Dolibarr team, so it does not includes your own changes. To have the suggested signature file being your own file, you can set the constant MAIN_FILECHECK_LOCAL_SUFFIX to a suffix. For example, set this to &amp;quot;&#039;&#039;&#039;-mysaassolution&#039;&#039;&#039;&amp;quot;. So, when the user will use the file integrity tool, the default file to check for signature will be &amp;quot;&#039;&#039;&#039;/install/filelist-10.0.2-mysaassolution.xml&#039;&#039;&#039;&amp;quot; instead of &amp;quot;&#039;&#039;&#039;/install/filelist-10.0.2.xml&#039;&#039;&#039;&amp;quot;. All you have to do is generate the signature file &#039;&#039;&#039;mysaassolution&#039;&#039;&#039; using the tool &#039;&#039;&#039;build/generate_filelist_xml.php&#039;&#039;&#039; and put this file into the install directory of your customer instance. Doing this, your customer, and yourself, will be able to check if a file was modified without being disturbed by false alerts due to your customized files or patches (they will be included in the signature used for check). Also, if you want to zip the customized signature file into &amp;quot;&#039;&#039;&#039;/install/filelist-10.0.2-mysaassolution.xml.zip&#039;&#039;&#039;&amp;quot;, you can set the constant MAIN_FILECHECK_LOCAL_EXT to &#039;.zip&#039;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP&#039;&#039;&#039; ► Set to 1 by default (so warning is hidden). You can set it to 0 to show a warning to encourage admin to set its own SMTP service.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAIL_SENDMODE_password&#039;&#039;&#039; ► To force the mode to send the email on the &amp;quot;password forgotten&amp;quot; page. So you can decide to use php mail or SMTP method for this specific use case.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING&#039;&#039;&#039; ► If set to N, the warning saying modules are not activated will be shown if number of activated module is &amp;lt; N (Having this variable not defined is same than having it set to 1). This may be usefull if you preinstall an application with some modules already loaded by default and you want to keep the warning to be sure the user will enable other modules he need, even if some modules are already enabed.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NO_UPGRADE_REDIRECT_ON_LEVEL_3_CHANGE&#039;&#039;&#039; ► The page to make the migration is not shown automatically when you deploy files of version X.Y.Z+delta over an  installation with a database version X.Y.Z. The upgrade page will be shown automatically only if there is a change on value of X or Y in version.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SYSLOG_DISABLE_LOGHANDLER_SYSLOG&#039;&#039;&#039; ► Set this to 1 to disable usage of syslog (having all customer instances logging in the same system file is not a good idea).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;WEBSITE_REPLACE_INFO_ABOUT_USAGE_WITH_WEBSERVER&#039;&#039;&#039; ► Put here a text or a translation key of a text to show when the user will use the feature &amp;quot;Deploy&amp;quot; when he want to deploy a website done with Dolibarr CMS. So you can, for example, show him a message that this feature is not part of its subscription and putting a website online may need a complementary subscription.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Module_Factures_Clients&amp;diff=57605</id>
		<title>Module Factures Clients</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Module_Factures_Clients&amp;diff=57605"/>
		<updated>2023-09-04T11:43:38Z</updated>

		<summary type="html">&lt;p&gt;Iouston: /* Escompte */ Complétion de ce paragraphe&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- BEGIN interlang links --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Do NOT edit this section&lt;br /&gt;
     Links below are automatically managed by PolyglotBot&lt;br /&gt;
     You can edit links on the English source page : Module_Customers_Invoices --&amp;gt;&lt;br /&gt;
[[en:Module_Customers_Invoices]]&lt;br /&gt;
[[es:Módulo_Facturas_a_clientes]]&lt;br /&gt;
[[pt:Módulo_Faturas_de_Clientes]]&lt;br /&gt;
[[zh:客户发票模块]]&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{TemplateDocUtil}}&lt;br /&gt;
{{TemplateModFR}}&lt;br /&gt;
[[Category:Facture]]&lt;br /&gt;
{{BasculeDevUser|&lt;br /&gt;
nom=Factures|&lt;br /&gt;
num=30|&lt;br /&gt;
devdoc=[[Module Factures Clients (développeur)]]|&lt;br /&gt;
userdoc=Cette page|}}&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Le module Factures Clients permet de saisir, modifier ou créer une facture composée de lignes de factures. &lt;br /&gt;
C&#039;est également ce module qui permet de saisir les paiements réalisés sur une facture.&lt;br /&gt;
Il inclut également les fonctions de génération d&#039;une facture dans un format de document comme un PDF.&lt;br /&gt;
&lt;br /&gt;
Les factures fournisseurs sont gérées par le [[Module Fournisseurs Factures]].&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
{{NoInstallModuleFr}}&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
{{ActivationModuleFr}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La page [[Configuration module facture]] vous explique comment configurer le module Facturation et donne quelques exemples de modèles de factures.&lt;br /&gt;
&lt;br /&gt;
=Création de facture=&lt;br /&gt;
&lt;br /&gt;
Dolibarr vous permet d&#039;établir des factures aux clients que vous avez préalablement saisis (voir [[Module Tiers]]).&lt;br /&gt;
&lt;br /&gt;
Vous pouvez créer une facture directement à partir d&#039;une fiche client, depuis une proposition commerciale classée acceptée, ou à partir d&#039;une commande clôturée à l&#039;état &amp;quot;accepté&amp;quot;, ou encore depuis un contrat de service.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Types de factures&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Si vous créez une facture depuis une fiche client, vous pouvez choisir 4 types de factures:&lt;br /&gt;
&lt;br /&gt;
*Les factures de &amp;quot;doit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Il s&#039;agit d&#039;une facture standard.&lt;br /&gt;
Il n&#039;y a aucun prérequis.&lt;br /&gt;
&lt;br /&gt;
*Les factures de &amp;quot;doit&amp;quot; de remplacement&lt;br /&gt;
&lt;br /&gt;
Une facture de remplacement permet de refaire une facture sur laquelle il y aurait des erreurs et sur laquelle rien n&#039;aurait été fait (aucun paiement saisi).&lt;br /&gt;
&lt;br /&gt;
On ne peut créer qu&#039;une seule facture de remplacement pour une facture de &amp;quot;doit&amp;quot; donnée. Quand on créé une facture de remplacement R, on choisit la facture de doit F qui doit être remplacée. Il n&#039;est alors plus possible de faire d&#039;actions sur la facture F, bien que cette dernière ne change pas de statut après que la facture de remplacement R ait été créée au statut &#039;&#039;&#039;brouillon&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Si la facture de remplacement R est supprimée, la facture F reprends son état initial et le cycle de vie de la facture F peut reprendre.&lt;br /&gt;
&lt;br /&gt;
Si la facture de remplacement R est &#039;&#039;&#039;validée&#039;&#039;&#039;, la facture F passe alors au statut &#039;&#039;&#039;abandonnée&#039;&#039;&#039; automatiquement. Le cycle de vie continue sur la facture R.&lt;br /&gt;
&lt;br /&gt;
*Les factures d&#039;avoir&lt;br /&gt;
&lt;br /&gt;
On crée une facture d&#039;avoir sur une facture de &amp;quot;doit&amp;quot;.&lt;br /&gt;
On peut créer plusieurs factures d&#039;avoir sur une facture donnée. La facture d&#039;avoir est transformée en réduction qui sert à réduire le paiement de n&#039;importe quelle autre facture en attente de paiement.&lt;br /&gt;
&lt;br /&gt;
*Les factures d&#039;acomptes&lt;br /&gt;
&lt;br /&gt;
Vous pouvez créer autant de facture d&#039;acompte que désiré. Une facture d&#039;acompte sera ensuite convertie en réduction (déjà payé) pour une autre facture (la facture définitive) sur laquelle porte l&#039;acompte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Procédure&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Une fois une facture créée (en mode &#039;&#039;brouillon&#039;&#039;), vous devez intégrer, dans la facture, des Produits ou Services déjà définis dans Dolibarr ou bien dont vous saisissez directement l&#039;intitulé, le taux de TVA, le prix unitaire.&lt;br /&gt;
Pour chaque ligne de la facture vous définissez aussi une quantité et éventuellement une remise (pourcentage).&lt;br /&gt;
&lt;br /&gt;
Une fois la facture prête vous devez la valider. Quand vous validez la facture un numéro lui est attribué selon le modèle de numérotation que vous avez choisi dans la configuration du module Facture.&lt;br /&gt;
Si une erreur est détectée après avoir validé la facture, vous pouvez modifier la facture en cliquant sur le bouton &#039;&#039;&#039;modifier&#039;&#039;&#039; en bas de la fiche facture ( si la facture n&#039;a pas atteint le status Payé), ou ré-ouvrir le facture pour la modification avec le bouton &#039;&#039;&#039;réouvrir&#039;&#039;&#039; en bas de la fiche facture( si la facture a atteint le statut Payé).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Règles de calcul de la TVA&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Les règles de calculs de la TVA sont expliquées sur la page: [[Règles de calcul et arrondi de TVA]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Timbre fiscal&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Certains pays (comme la tunisie) sont soumis à un timbre fiscal (montant d&#039;une taxe fixe pour chaque facture produite). La liste des pays et montants concernés se paramètre dans la [[Table_llx_c_revenuestamp]]. Si le pays de la société fait partie de cette configuration, alors un champ &amp;quot;Timbre fiscal&amp;quot; apparait sur les écrans et documents de facture.&lt;br /&gt;
&lt;br /&gt;
=Réduire le montant total et/ou le solde à payer=&lt;br /&gt;
Il est possible de réduire le montant total et/ou le solde à payer d&#039;une facture, mais il convient de faire une distinction entre une remise et une réduction, bien que ces deux termes soient un peu amalgamés par endroits.&lt;br /&gt;
==Réduction==&lt;br /&gt;
Une &#039;&#039;&#039;réduction&#039;&#039;&#039; est une réduction relative (pourcentage) du prix de vente d&#039;un ou de plusieurs produits ou services détaillés dans la facture. Cette réduction doit être définie ligne par ligne lors de l&#039;édition de la facture et être comprise entre 0% et 100% (NB : le pourcentage de remise est remplacé dans le cas 100% de réduction par la mention &#039;&#039;offert&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
==Remise==&lt;br /&gt;
Une &#039;&#039;&#039;remise&#039;&#039;&#039; est une réduction du prix total de la facture. Elle peut être définie de deux manières selon qu&#039;elle est ou non associée à une autre facture, c&#039;est-à-dire à un versement déjà perçus ou non. &lt;br /&gt;
===Remise associée à un trop perçu===&lt;br /&gt;
Les factures d&#039;avoir et factures d&#039;acompte, qui sont saisies pour tracer des versements perçus (en trop pour la facture avoir ou en avance pour l&#039;acompte), peuvent être &#039;&#039;converties en réduction future&#039;&#039;. Après conversion en réduction, elles apparaissent dans la section &#039;&#039;Remises fixes&#039;&#039; du tiers. Il sera alors possible de l&#039;attribuer à une autre facture pour en réduire le montant. &lt;br /&gt;
&lt;br /&gt;
Le trop-perçu, lié au règlement d&#039;une facture supérieur au montant de la facture, apparaît également dans les remises.&lt;br /&gt;
&lt;br /&gt;
Lorsque le montant de la remise est supérieur à celui de la facture à régler, depuis la liste des remises, on sépare la remise en deux (bouton à droite de la ligne) avec un premier montant correspondant à la facture, puis le solde. On peut alors utiliser une partie de cette remise pour l&#039;appliquer au règlement de la facture qui peut alors être classer &amp;quot;Réglée&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Dans le cas de l&#039;utilisation d&#039;une remise dans une nouvelle facture, elle sera mentionnée soit sous forme de paiement réduisant le reste à payer, soit sous forme d&#039;une ligne de détail de la facture.&lt;br /&gt;
Par défaut, il s&#039;agit d&#039;une ligne de détail ajouté à la facture et donc réduisant le montant total de cette nouvelle facture.&lt;br /&gt;
&lt;br /&gt;
Rem: L&#039;option cachée FACTURE_DEPOSITS_ARE_JUST_PAYMENTS permet d&#039;avoir cette déduction qui apparaît comme montant déjà payé et non comme diminution du montant total de la facture finale. Dans ce cas, les factures acomptes ne sont pas incluses dans les calculs de chiffre d&#039;affaires (puisqu&#039;inclut dans le montant total de la facture finale). Le bon choix de cette option dépendra des règles comptable de votre pays, mais les 2 sont en général acceptés.&lt;br /&gt;
&lt;br /&gt;
===Remise non associée à un versement déjà perçu===&lt;br /&gt;
Il est aussi possible de définir une remise qui n&#039;est pas relative à un versement déjà perçu. Dans ce cas, il faut aller sur la fiche du client, onglet &#039;&#039;client&#039;&#039;, et définir la ou les remises fixes (montant) ou relatives (pourcentage) qu&#039;on attribue à ce client, et pourquoi (geste commercial, compensation suite à retard de livraison, etc). Une fois ces remises attribuées au client, elles seront disponibles lors de l&#039;édition de n&#039;importe quelle facture de ce client, dans la rubrique &#039;&#039;&#039;Remises&#039;&#039;&#039; en haut de page. A l&#039;inverse des remises consécutives à des versements déjà perçus, celles-ci seront mentionnées comme des lignes négatives dans le détail de la facture, et réduiront donc le montant total de celle-ci, avant déduction des versements éventuellement déjà perçus. Mais ces remises ne sont PAS associées à une facture avoir ou d&#039;acompte.&lt;br /&gt;
&lt;br /&gt;
==Rabais==&lt;br /&gt;
A compléter&lt;br /&gt;
&lt;br /&gt;
==Escompte==&lt;br /&gt;
Un escompte est une remise accordée, sur une facture donnée, à un client car ce dernier a réalisé son règlement avant l&#039;échéance. Ce choix est possible si votre facture indique une mention adéquate, par exemple : escompte pour règlement anticipé : 2%. A l&#039;inverse vous pouvez indiquer : Escompte pour règlement anticipé : 0%.&lt;br /&gt;
&lt;br /&gt;
Pour enregistrer un escompte dans dolibarr :&lt;br /&gt;
&lt;br /&gt;
* Saisissez un paiement sur une facture (par exemple 980€ pour une facture de 1000€).&lt;br /&gt;
* Une fois le règlement enregistré, cliquez sur le bouton &amp;quot;classez payée partiellement&amp;quot;.&lt;br /&gt;
* Une fenêtre modale s&#039;ouvre et vous propose plusieurs motifs permettant de justifier le paiement partiel.&lt;br /&gt;
* Sélectionnez le choix &amp;quot;Escompte pour règlement anticipé&amp;quot; et valider.&lt;br /&gt;
* La facture est désormais passée au statut &#039;payée partiellement&#039;.&lt;br /&gt;
* Après avoir généré le pdf, l&#039;escompte apparait sur le pdf de la facture.&lt;br /&gt;
&lt;br /&gt;
==Résumé== &lt;br /&gt;
Il y a donc 3 possibilités pour réduire le prix d&#039;une facture : &lt;br /&gt;
&lt;br /&gt;
*attribuer une &#039;&#039;&#039;réduction&#039;&#039;&#039; en pourcentage sur certains produits/service détaillés dans la facture, ce qui aura pour effet de définir un &#039;&#039;&#039;montant total&#039;&#039;&#039; plus bas que normalement prévu;&lt;br /&gt;
*attribuer au client une &#039;&#039;&#039;remise globale&#039;&#039;&#039;, non associée à une facture avoir ou d&#039;acompte, et qui sera alors ajoutée comme une ligne de montant négatif qui réduira le &#039;&#039;&#039;montant total&#039;&#039;&#039; de la facture;&lt;br /&gt;
*mentionner, via des &#039;&#039;&#039;factures avoir ou d&#039;acompte&#039;&#039;&#039; transformées en réduction future, que des versements anticipés ont déjà été perçus, ce qui réduira le &#039;&#039;&#039;solde à payer&#039;&#039;&#039; mais pas le montant total de la facture;&lt;br /&gt;
&lt;br /&gt;
=Génération PDF, Impression, Envoi=&lt;br /&gt;
Lorsqu&#039;un document est généré, il est fabriqué suivant un modèle choisi parmi une liste activée dans les écrans Accueil - Configuration - Modules - Facture&lt;br /&gt;
&lt;br /&gt;
Pour que le document intègre le numéro de compte bancaire de votre société ou l&#039;adresse de paiement par chèque (ou les 2), il convient de :&lt;br /&gt;
&lt;br /&gt;
#activer le module Banques/Caisses&lt;br /&gt;
#Créer le compte de votre société&lt;br /&gt;
#Paramétrer le module Factures et Avoirs en allant dans &#039;&#039;&#039;Configuration - Modules - Factures et Avoirs&#039;&#039;&#039; puis cliquer sur l’icône configuration, choisir dans la rubrique &amp;quot;Mode de règlement&amp;quot; le compte créé à l&#039;étape 2 ci-dessus, où l&#039;adresse à utiliser pour le paiement par chèque, et valider le changement en cliquant sur le bouton &amp;quot;Modifier&amp;quot; de la rubrique.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez maintenant régénérer votre facture, et vous verrez, pour le modèle crabe, le RIB ou les coordonnées s&#039;afficher sous les conditions de paiement.&lt;br /&gt;
&lt;br /&gt;
Si vous avez activé l&#039;envoi par e-mail, un bouton spécifique &amp;quot;Envoyer par email&amp;quot; est disponible. Il fait apparaître en bas de la fenêtre un formulaire d&#039;envoi, avec la facture en pièce jointe. Vous pouvez également définir un modèle de rappel pour les factures impayées.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d&#039;une ligne provenant d&#039;un produit ou d&#039;un service enregistré, la référence, le libellé et la description sont affichés par défaut. Si vous souhaitez masquer la référence ou la description, vous pouvez le faire en passant par &#039;&#039;&#039;Accueil - Configuration - PDF&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Vous avez deux options que vous pouvez modifier :&lt;br /&gt;
&lt;br /&gt;
*Cacher la description des produits sur les PDF générés&lt;br /&gt;
*Cacher la référence des produits sur les PDF générés&lt;br /&gt;
&lt;br /&gt;
Ce paramétrage s&#039;applique aussi aux propositions commerciales et aux commandes&lt;br /&gt;
==Impression en nombre==&lt;br /&gt;
Si vous souhaitez imprimer plusieurs factures en une seule fois, vous pouvez générer un document PDF rassemblant les documents à imprimer, puis ouvrir et imprimer ce document.&lt;br /&gt;
&lt;br /&gt;
Pour cela, à partir de &#039;&#039;&#039;Facturation|Paiement - Factures clients - Liste&#039;&#039;&#039;, &lt;br /&gt;
&lt;br /&gt;
*appliquer un filtre qui vous convient pour faire apparaître toutes les factures à imprimer ensemble,&lt;br /&gt;
*cocher globalement (case à cocher en haut de colonne à droite) ou individuellement les documents souhaités,&lt;br /&gt;
*&#039;&#039;&#039;-- Sélectionner l&#039;action-- - Fusion PDF&#039;&#039;&#039; dans la liste déroulante qui apparaît à partir de la coche d&#039;au moins une case, et&lt;br /&gt;
*appuyer sur &#039;&#039;&#039;Confirmer&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Un lien vers un document PDF est ajouté dans une liste qui se trouve sous le tableau (appuyer sur &#039;&#039;&#039;Afficher la liste des fichiers générés en masse&#039;&#039;&#039; si nécessaire).&lt;br /&gt;
&lt;br /&gt;
=Saisir les paiements=&lt;br /&gt;
Les paiements ne peuvent s&#039;effectuer que sur des factures validées.&lt;br /&gt;
&lt;br /&gt;
Si un avoir est disponible, il pourra être imputé sur une facture d&#039;un montant total inférieur à celui de l&#039;avoir.&lt;br /&gt;
&lt;br /&gt;
Après la saisie du paiement, il est possible de régénérer le PDF de la facture pour y faire apparaître le règlement effectué et le solde à payer.&lt;br /&gt;
&lt;br /&gt;
=Clore une facture=&lt;br /&gt;
&lt;br /&gt;
Une facture validée peut être définitivement classée à l&#039;état:&lt;br /&gt;
&lt;br /&gt;
*Payé (Si la somme des paiements est supérieure ou égale au montant réclamé).&lt;br /&gt;
*Payé partiellement (Si la somme des paiements est supérieure à 0 mais strictement inférieure au montant réclamé).&lt;br /&gt;
*Abandonné (Si aucun paiement n&#039;a eu lieu).&lt;br /&gt;
&lt;br /&gt;
=Exporter les factures=&lt;br /&gt;
&lt;br /&gt;
Dolibarr fournit un outil générique vous permettant d&#039;exporter les données de vos factures.&lt;br /&gt;
Pour cela, il faut utiliser l&#039;assistant Export qui se trouve dans le menu &#039;&#039;&#039;Outils - Nouvel export&#039;&#039;&#039; (Si le [[Module Exports]] a été activé).&lt;br /&gt;
&lt;br /&gt;
Voir la page [[Module Exports]] pour plus d&#039;informations.&lt;br /&gt;
&lt;br /&gt;
=Factures pré-définies=&lt;br /&gt;
Dans Dolibarr, une facture désignée comme pré-définie est simplement une facture dont on réutilise la plupart des données pour émettre d&#039;autres factures sur base de ces informations, ce qui permet un gain de temps non-négligeable à la saisie&lt;br /&gt;
&lt;br /&gt;
Dans le cas de la mise en oeuvre des contrats, une facture prédéfinies peut être définie et correspondant aux éléments récurrents du contrat. Ceci est très intéressant. &lt;br /&gt;
Le seul bémol, la période indiquée pour chaque élément de la facture résultante couvre toute la période du contrat. Elle ne devrait porter que sur le mois de facturation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Videos sur le sujet=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;280&amp;quot;&amp;gt;MFaXoooysEo&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les factures:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;280&amp;quot;&amp;gt;7BVKHt91jrI&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les paiements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;280&amp;quot;&amp;gt;ii8kdfa9BxA&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Exemples de cas d&#039;utilisations=&lt;br /&gt;
==Acomptes==&lt;br /&gt;
{{ExamplesCaseFr&lt;br /&gt;
|nom=UCIN01: Réception d&#039;un acompte de 10 pour une commande de 100 puis facture finale&lt;br /&gt;
|situation=Réception acompte à commande puis facture finale&lt;br /&gt;
|actions=Je reçois un règlement d&#039;acompte de mon client.&lt;br /&gt;
Je crée &#039;&#039;&#039;de zéro&#039;&#039;&#039; pour ce client une &#039;&#039;&#039;facture d&#039;acompte&#039;&#039;&#039; du montant effectivement &#039;&#039;&#039;reçu&#039;&#039;&#039; de 10 avec, par exemple, le libellé &amp;quot;&#039;&#039;Acompte sur prestation/produit/facture/commande/... n° XXXX&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Je &#039;&#039;&#039;convertis&#039;&#039;&#039; ensuite cette facture en &#039;&#039;&#039;réduction future&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
La facture de doit, complète, éventuellement créée à partir de la proposition ou de la commande précédente, peut avoir été générée avant ou après, cela est indépendant. &lt;br /&gt;
&lt;br /&gt;
Dans cette facture de doit, j&#039;inclus la réduction de l&#039;acompte, ce qui réduit le reste à payer. La facture de doit se retrouve à un total de 90.&lt;br /&gt;
&lt;br /&gt;
Rem: si l&#039;option cachée FACTURE_DEPOSITS_ARE_JUST_PAYMENTS est définie, elle vaudra 100 mais dans ce cas, les factures acomptes ne seront pas incluses dans le calcul des chiffres d&#039;affaire.&lt;br /&gt;
&lt;br /&gt;
J&#039;envoie ou réenvoie la facture de doit générée qui indique qu&#039;un (ou plusieurs) acompte a déjà été reçu.&lt;br /&gt;
}}&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
==Facturation et paiements==&lt;br /&gt;
{{ExamplesCaseFr&lt;br /&gt;
|nom=UCIN02: Facturation et paiement intégral&#039;&#039;&#039;&lt;br /&gt;
|situation=Je crée une facture.&lt;br /&gt;
Je reçois l&#039;intégralité des paiements.&lt;br /&gt;
|actions=Je saisis tous les paiement sur la facture. Le solde devient à 0.&lt;br /&gt;
Je peux classer la facture à &#039;&#039;&#039;Payée&#039;&#039;&#039;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ExamplesCaseFr&lt;br /&gt;
|nom=UCIN03: Facturation et paiement supérieur reçu&lt;br /&gt;
|situation=Je crée une facture.&lt;br /&gt;
Je reçois un paiement supérieur au montant réclamé.&lt;br /&gt;
|actions=Je saisis le montant reçu.&lt;br /&gt;
Je clos la facture à l&#039;état &#039;&#039;&#039;Payé&#039;&#039;&#039;.&lt;br /&gt;
Je crée un avoir du trop perçu.&lt;br /&gt;
Rem: L&#039;action reste à étudier car ne semble pas ok: Voir http://www.dolibarr.fr/forum/12-howto--aide/35761-trop-percu/post?do=reply avec proposition de solution.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ExamplesCaseFr&lt;br /&gt;
|nom=UCIN04: Facturation et paiement intégral puis produit retourné&lt;br /&gt;
|situation=Je crée une facture.&lt;br /&gt;
Je reçois l&#039;intégralité des paiements. Je les saisis et le solde devient 0.&lt;br /&gt;
Je clos la facture à l&#039;état &#039;&#039;&#039;Payé&#039;&#039;&#039;.&lt;br /&gt;
Plus tard, je reçois un retour de produit suite à rétractation légale.&lt;br /&gt;
|actions=Je saisis un avoir sur cette facture.&lt;br /&gt;
Cet avoir peut etre converti en réduction pour la prochaine facture ou remboursé en monétaire.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ExamplesCaseFr&lt;br /&gt;
|nom=UCIN05: Facturation et paiement intégral puis erreur détecté sur la ligne produit&#039;&#039;&#039;&lt;br /&gt;
|situation=Je crée une facture.&lt;br /&gt;
Je reçois l&#039;intégralité des paiements. Je les saisis et le solde devient 0.&lt;br /&gt;
Je clos la facture à l&#039;état &#039;&#039;&#039;Payé&#039;&#039;&#039;.&lt;br /&gt;
Plus tard, je découvre une erreur de produit.&lt;br /&gt;
|actions=Je saisis un avoir sur cette facture qui contient le produit en erreur.&lt;br /&gt;
Je convertis cet avoir en réduction. &lt;br /&gt;
Je crée une nouvelle facture avec le bon produit. J&#039;intègre l&#039;avoir dans cette nouvelle facture.&lt;br /&gt;
Eventuellement si j&#039;utilise le module stock, je corrige le stock en manuel.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ExamplesCaseFr&lt;br /&gt;
|nom=UCIN06: Facturation et paiement partiel car anticipé (escompte)&lt;br /&gt;
|situation=Je crée une facture.&lt;br /&gt;
Je reçois un paiement du montant de la facture moins un escompte accordé pour paiement anticipé.&lt;br /&gt;
|actions=Je saisis le paiment reçu de la valeur reçue.&lt;br /&gt;
Je classe la facture à &#039;&#039;&#039;Payé partiellement&#039;&#039;&#039; et renseigne le motif &amp;quot;Le manque est un &#039;&#039;&#039;Escompte&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ExamplesCaseFr&lt;br /&gt;
|nom=UCIN07: Facturation et paiement partiel ou nul puis retour produit et attente correction anomalie ou erreur infine tolerable&#039;&#039;&#039;&lt;br /&gt;
|situation=Je crée une facture.&lt;br /&gt;
Si je reçois un paiement partiel, je le saisis.&lt;br /&gt;
Je reçois un retour d&#039;une partie des produits (retractation du client) ou ne reçois plus les quelques centimes manquant.&lt;br /&gt;
Eventuellement, le client attend un avoir pour payer la fin de la facture.&lt;br /&gt;
|actions=Je saisis un avoir sur la facture.&lt;br /&gt;
J&#039;envoie l&#039;avoir.&lt;br /&gt;
Ensuite, je convertis cet avoir en reduction pour le client.&lt;br /&gt;
Je saisis eventuellement la suite des paiements reçus.&lt;br /&gt;
Eventuellement j&#039;inclus l&#039;avoir dans la liste des paiements de la facture (sinon il pourra être inclu dans une autre facture).&lt;br /&gt;
Je classe la facture à l&#039;état &#039;&#039;&#039;Payé&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TODO&#039;&#039;&#039; Contrôle a inclure en plus : Quand l&#039;avoir est fait sur une facture au statut &#039;Réglement commencé&#039;, il faut mettre un message disant &amp;quot;Attention, ne créer un avoir sur une facture en cours de paiement que si le client a cessé le paiement et attend cet avoir pour poursuivre la suite ou parce que vous fermez la facture&amp;quot;.&lt;br /&gt;
Ensuite il faut vérifier que le montant de l&#039;avoir est inférieur au montant de la facture auquel il s&#039;applique - montant déja reçu. Sinon, refuser création avoir.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ExamplesCaseFr&lt;br /&gt;
|nom=UCIN08: Facturation et paiement partiel car mauvais payeur&lt;br /&gt;
|situation=Je crée une facture.&lt;br /&gt;
Je reçois un paiement partiel, je le saisis.&lt;br /&gt;
Après une longue attente, la suite des paiements n&#039;est pas reçue et j&#039;abandonne tout espoir.&lt;br /&gt;
|actions=Je classe la facture à l&#039;état &#039;&#039;&#039;Payé partiellement&#039;&#039;&#039; et renseigne le motif &#039;&#039;&#039;Mauvais payeur&#039;&#039;&#039;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ExamplesCaseFr&lt;br /&gt;
|nom=UCIN09: Facturation et aucun paiement reçu car mauvais payeur&#039;&#039;&#039;&lt;br /&gt;
|situation=Je crée une facture.&lt;br /&gt;
Après une longue attente, la suite des paiements n&#039;est pas reçu et j&#039;abandonne tout espoir.&lt;br /&gt;
|actions=Je classe la facture à l&#039;état &#039;&#039;&#039;Abandonnée&#039;&#039;&#039; et renseigne le motif &#039;&#039;&#039;Mauvais payeur&#039;&#039;&#039;.&lt;br /&gt;
}}&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
==Correction des erreurs de facturation==&lt;br /&gt;
{{ExamplesCaseFr&lt;br /&gt;
|nom=UCIN00: Erreur sur le contenu de la facture corrigée par facture remplacement&lt;br /&gt;
|situation=Je crée une facture.&lt;br /&gt;
Je valide.&lt;br /&gt;
Je me rend compte de l&#039;erreur sur le contenu (montant, descriptif) après validation (voir use case UCIN10 en cas d&#039;erreur sur client).&lt;br /&gt;
|actions=Je classe la facture abandonnée pour motif &#039;Autre&#039; (opération non obligatoire car automatique avec étape suivante).&lt;br /&gt;
Je crée une nouvelle facture en choisissant &#039;&#039;&#039;Facture de remplacement&#039;&#039;&#039; et en selectionnant la facture remplacée comme facture.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ExamplesCaseFr&lt;br /&gt;
|nom=UCIN10: Erreur sur le client détecté après validation mais avant paiement&lt;br /&gt;
|situation=Je crée une facture.&lt;br /&gt;
Je valide.&lt;br /&gt;
Je me rend compte que la facture a été crée sur le mauvais client.&lt;br /&gt;
|actions=Je classe la facture abandonnée pour motif &#039;Autre&#039; et je renseigne le motif &amp;quot;Erreur saisie sur mauvais client&amp;quot;.&lt;br /&gt;
Je crée une nouvelle facture sur le bon client.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TODO&#039;&#039;&#039;: Faire confirmer par expert que possible si c&#039;est fait avant envoi.&lt;br /&gt;
Si pas possible, interdire la possibilité et utiliser le cas suivant.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ExamplesCaseFr&lt;br /&gt;
|nom=UCIN10: Erreur sur le client (ou facture saisie 2 fois) détecté après envoi facture mais avant paiement&lt;br /&gt;
|situation=Je crée une facture.&lt;br /&gt;
Je valide et l&#039;envoie au client.&lt;br /&gt;
Je me rend compte que la facture a été crée sur le mauvais client ou facture en doublon avec une autre deja envoyée.&lt;br /&gt;
|actions=Je crée un avoir sur la facture qui n&#039;a pas encore de paiement, du montant inverse exacte.&lt;br /&gt;
Je convertit l&#039;avoir en réduction. L&#039;avoir se retrouve ainsi &amp;quot;traité&amp;quot;, je peux l&#039;envoyer au client si je le désire.&lt;br /&gt;
Je retourne sur la fiche facture en erreur et j&#039;applique la réduction issue de l&#039;avoir. &lt;br /&gt;
Le du devient alors zéro et je la classe à &#039;&#039;&#039;Payée complètement&#039;&#039;&#039; (paiement de 0).&lt;br /&gt;
Que le client ait reçu ou non la facture initiale, cette dernière a été annulée et fermé par l&#039;avoir.&lt;br /&gt;
Je resaisi la facture sur le bon client.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ExamplesCaseFr&lt;br /&gt;
|nom=UCIN10: Erreur sur le libellé client détecté après saisie de paiement&#039;&#039;&#039;&lt;br /&gt;
|situation=Je crée une facture sur le client de libellé X.&lt;br /&gt;
Je valide.&lt;br /&gt;
Je saisi les paiements.&lt;br /&gt;
Je classe la facture payée.&lt;br /&gt;
Je me rend compte que la facture a été crée sur le mauvais client et le client me demande une contrefacture sur l&#039;ancien nom X et une nouvelle sur le nouveau nom Y.&lt;br /&gt;
|actions=Je crée un avoir sur la facture en erreur avec toutes les lignes en inverse.&lt;br /&gt;
Je transforme l&#039;avoir en réduction. L&#039;avoir se retrouve ainsi &amp;quot;traité&amp;quot;.&lt;br /&gt;
J&#039;édite la fiche client pour corriger le libellé client X par Y.&lt;br /&gt;
Je crée la nouvelle facture sur le nouveau client Y en incluant toutes les lignes.&lt;br /&gt;
Je la valide.&lt;br /&gt;
J&#039;inclut le paiement issue de l&#039;avoir.&lt;br /&gt;
Le solde passe alors à 0 (aucun du).&lt;br /&gt;
Je peux classer la facture à &#039;&#039;&#039;Payée&#039;&#039;&#039; sans saisir d&#039;autres réglements (le client a déjà payé).&lt;br /&gt;
}}&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Factures pré-définies==&lt;br /&gt;
&lt;br /&gt;
{{ExamplesCaseFr&lt;br /&gt;
|nom=UCRIN01: Création d&#039;une facture pré-définie&lt;br /&gt;
|situation=Création d&#039;une facture pré-définie&lt;br /&gt;
|actions=Il n&#039;est pas possible de créer une facture récurrente en partant de rien. Il s&#039;agit d&#039;une facture standard de doit que l&#039;on convertie et réutilise par la suite. Voir cas d&#039;utilisation suivant donc.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ExamplesCaseFr&lt;br /&gt;
|nom=UCRIN02: Transformation d&#039;une facture standard en facture prédéfinie&lt;br /&gt;
|situation=Transformation d&#039;une facture standard en facture prédéfinie&lt;br /&gt;
|actions=Je crée ou ouvre une facture brouillon. Je clique sur le bouton &amp;quot;Convertir en récurrente&amp;quot;. J&#039;entre un titre (par exemple, &amp;quot;Mise-à-jour trimestrielle&amp;quot;) et éventuellement une note, qui pourrait être une explication de la raison de la répétition de cette facture. Ma facture est à présent une facture récurrente. Cela ne sera visible que si je demande l&#039;affichage des factures récurrentes ou que je crée une nouvelle facture.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ExamplesCaseFr&lt;br /&gt;
|nom=UCRIN03: Utilisation d&#039;une facture prédéfinie pour la création d&#039;une nouvelle facture&lt;br /&gt;
|situation=Utilisation d&#039;une facture prédéfinie pour la création d&#039;une nouvelle facture&lt;br /&gt;
|actions=Je crée une nouvelle facture (&amp;quot;Créer facture&amp;quot;), et j&#039;utilise la boîte de sélection en bas de page pour sélectionner la facture récurrente que je veux utiliser comme gabarit (template). Ma nouvelle facture est pré-remplie, les modifications à apporter sont mineures.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Template:ListOfContexts&amp;diff=56335</id>
		<title>Template:ListOfContexts</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Template:ListOfContexts&amp;diff=56335"/>
		<updated>2023-04-19T12:23:09Z</updated>

		<summary type="html">&lt;p&gt;Iouston: add userlist&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;adherents\card.php(111):					membercard&amp;lt;br&amp;gt;&lt;br /&gt;
adherents\type.php(73):						membertypecard&amp;lt;br&amp;gt;&lt;br /&gt;
categories\categorie.php(96):				categorycard&amp;lt;br&amp;gt;&lt;br /&gt;
comm\card.php(72):							commcard&amp;lt;br&amp;gt;&lt;br /&gt;
comm\propal.php(99):						propalcard&amp;lt;br&amp;gt;&lt;br /&gt;
comm\action\card.php(85):					actioncard&amp;lt;br&amp;gt;&lt;br /&gt;
comm\action\index.php(112):					agenda&amp;lt;br&amp;gt;&lt;br /&gt;
comm\mailing\card.php(55):					mailingcard&amp;lt;br&amp;gt;&lt;br /&gt;
commande\card.php(93):						ordercard&amp;lt;br&amp;gt;&lt;br /&gt;
compta\facture.php(105):					invoicecard&amp;lt;br&amp;gt;&lt;br /&gt;
compta\paiement.php(70):					paiementcard&amp;lt;br&amp;gt;&lt;br /&gt;
compta\deplacement\card.php(50):			tripsandexpensescard&amp;lt;br&amp;gt;&lt;br /&gt;
compta\dons\card.php(53):					doncard&amp;lt;br&amp;gt;&lt;br /&gt;
compta\localtax\clients.php(172):			externalbalance&amp;lt;br&amp;gt;&lt;br /&gt;
compta\salaries\card.php(47):				salarycard&amp;lt;br&amp;gt;&lt;br /&gt;
compta\tva\card.php(45):					taxvatcard&amp;lt;br&amp;gt;&lt;br /&gt;
contact\card.php(77):						contactcard&amp;lt;br&amp;gt;&lt;br /&gt;
contrat\card.php(70):						contractcard&amp;lt;br&amp;gt;&lt;br /&gt;
expedition\card.php(85):					expeditioncard&amp;lt;br&amp;gt;&lt;br /&gt;
fichinter\card.php(80):						interventioncard&amp;lt;br&amp;gt;&lt;br /&gt;
fourn\card.php(54):							suppliercard&amp;lt;br&amp;gt;&lt;br /&gt;
fourn\commande\card.php(80):				ordersuppliercard&amp;lt;br&amp;gt;&lt;br /&gt;
fourn\commande\orderstoinvoice.php(88):		orderstoinvoicesupplier&amp;lt;br&amp;gt;&lt;br /&gt;
fourn\facture\card.php(72):					invoicesuppliercard&amp;lt;br&amp;gt;&lt;br /&gt;
fourn\facture\paiement.php(71):				paymentsupplier&amp;lt;br&amp;gt;&lt;br /&gt;
livraison\card.php(68):						deliverycard&amp;lt;br&amp;gt;&lt;br /&gt;
product\card.php(91):						productcard&amp;lt;br&amp;gt;&lt;br /&gt;
product\fournisseurs.php(62):				pricesuppliercard&amp;lt;br&amp;gt;&lt;br /&gt;
product\stats\commande.php(45):				productstatsorder&amp;lt;br&amp;gt;&lt;br /&gt;
product\stats\commande_fournisseur.php(45):	productstatssupplyorder&amp;lt;br&amp;gt;&lt;br /&gt;
product\stats\contrat.php(45):				productstatscontract&amp;lt;br&amp;gt;&lt;br /&gt;
product\stats\facture.php(48):				productstatsinvoice&amp;lt;br&amp;gt;&lt;br /&gt;
product\stats\facture_fournisseur.php(47):	productstatssupplyinvoice&amp;lt;br&amp;gt;&lt;br /&gt;
product\stats\propal.php(45):				productstatspropal&amp;lt;br&amp;gt;&lt;br /&gt;
product\stock\card.php(54):					warehousecard&amp;lt;br&amp;gt;&lt;br /&gt;
projet\card.php(48):						projectcard&amp;lt;br&amp;gt;&lt;br /&gt;
projet\tasks.php(67):						projecttaskcard&amp;lt;br&amp;gt;&lt;br /&gt;
resource\card.php(60):						resource_card&amp;lt;br&amp;gt;&lt;br /&gt;
resource\element_resource.php(58):			element_resource&amp;lt;br&amp;gt;&lt;br /&gt;
societe\agenda.php(41):						agendathirdparty&amp;lt;br&amp;gt;&lt;br /&gt;
societe\commerciaux.php(40):				salesrepresentativescard&amp;lt;br&amp;gt;&lt;br /&gt;
societe\consumption.php(80):				consumptionthirdparty&amp;lt;br&amp;gt;&lt;br /&gt;
societe\info.php(41):						infothirdparty&amp;lt;br&amp;gt;&lt;br /&gt;
societe\soc.php(80):						thirdpartycard&amp;lt;br&amp;gt;&lt;br /&gt;
user\card.php(93):							usercard&amp;lt;br&amp;gt;&lt;br /&gt;
user\list.php(72):							userlist&amp;lt;br&amp;gt;&lt;br /&gt;
user\passwordforgotten.php(56):				passwordforgottenpage&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Syst%C3%A8me_de_substitution_de_variables&amp;diff=56115</id>
		<title>Système de substitution de variables</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Syst%C3%A8me_de_substitution_de_variables&amp;diff=56115"/>
		<updated>2023-03-20T09:24:29Z</updated>

		<summary type="html">&lt;p&gt;Iouston: add __CONTACT_NAME_CUSTOMER__&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- BEGIN interlang links --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Do NOT edit this section&lt;br /&gt;
     Links below are automatically managed by PolyglotBot&lt;br /&gt;
     You can edit links on the English source page : Variable_substitution_system --&amp;gt;&lt;br /&gt;
[[en:Variable_substitution_system]]&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{TemplateDocUtil}}&lt;br /&gt;
{{TemplateDocDev}}&lt;br /&gt;
&lt;br /&gt;
Les variables de substitutions sont des mots clés qui peuvent être utilisés à de nombreux endroits dans Dolibarr pour être remplacés ultérieurement.&lt;br /&gt;
On s&#039;en sert par exemple dans les modèles d&#039;emails ou de texte de configuration pour qu&#039;un texte soit personnalisé au moment de son affichage ou de son envoi pour les emails.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Variables de substitution disponibles=&lt;br /&gt;
&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Variable&lt;br /&gt;
!Valeur Affichée&lt;br /&gt;
!Note&lt;br /&gt;
!Dolibarr Mini&lt;br /&gt;
|-&lt;br /&gt;
|__USER_SIGNATURE__&lt;br /&gt;
|Ma super signature&lt;br /&gt;
|Signature de l&#039;utilisateur&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__USER_ID__&lt;br /&gt;
|1&lt;br /&gt;
|ID de l&#039;utilisateur&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__USER_LOGIN__&lt;br /&gt;
|doli9&lt;br /&gt;
|Login de l&#039;utilisateur&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__USER_LASTNAME__&lt;br /&gt;
|Admin&lt;br /&gt;
|Nom de l&#039;utilisateur&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__USER_FIRSTNAME__&lt;br /&gt;
|Super&lt;br /&gt;
|Prénom de l&#039;utilisateur&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__USER_FULLNAME__&lt;br /&gt;
|SuperAdmin&lt;br /&gt;
|Nom complet de l&#039;utilisateur&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__USER_SUPERVISOR_ID__&lt;br /&gt;
|1&lt;br /&gt;
|ID du superviseur&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__USER_REMOTE_IP__&lt;br /&gt;
|xxx.xxx.xxx.xxx&lt;br /&gt;
|IP de l&#039;utilisateur&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MYCOMPANY_NAME__&lt;br /&gt;
|Ma petite entreprise&lt;br /&gt;
|Nom de l&#039;entreprise&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MYCOMPANY_EMAIL__&lt;br /&gt;
|contact@monentreprise.fr&lt;br /&gt;
|Adresse email de contact de mon entreprise&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MYCOMPANY_PROFID1__&lt;br /&gt;
|12345678&lt;br /&gt;
|Id. prof. 1 (TIN)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MYCOMPANY_PROFID2__&lt;br /&gt;
|12345678&lt;br /&gt;
|Id. prof. 2 (PAN)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MYCOMPANY_PROFID3__&lt;br /&gt;
|12345678&lt;br /&gt;
|Id. prof. 3 (SRVC TAX)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MYCOMPANY_PROFID4__&lt;br /&gt;
|12345678&lt;br /&gt;
|Id. prof. 4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MYCOMPANY_PROFID5__&lt;br /&gt;
|12345678&lt;br /&gt;
|Id. prof. 5&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MYCOMPANY_PROFID6__&lt;br /&gt;
|FR12345678&lt;br /&gt;
|Numéro de TVA&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MYCOMPANY_CAPITAL__&lt;br /&gt;
|10000&lt;br /&gt;
|Capital de mon entreprise&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MYCOMPANY_FULLADDRESS__&lt;br /&gt;
|12 rue laurent 75001 Paris France&lt;br /&gt;
|Adresse complète de mon entreprise&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MYCOMPANY_ADDRESS__&lt;br /&gt;
|12 rue laurent&lt;br /&gt;
|Rue et numéro de rue de mon entreprise&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MYCOMPANY_ZIP__&lt;br /&gt;
|75001&lt;br /&gt;
|Code postale de mon entreprise&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MYCOMPANY_TOWN__&lt;br /&gt;
|Paris&lt;br /&gt;
|Ville de mon entreprise&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MYCOMPANY_COUNTRY__&lt;br /&gt;
|France&lt;br /&gt;
|Pays de mon entreprise&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MYCOMPANY_COUNTRY_ID__&lt;br /&gt;
|1&lt;br /&gt;
|Identifiant du pays de mon entreprise&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MYCOMPANY_CURRENCY_CODE__&lt;br /&gt;
|EUR&lt;br /&gt;
|Devise principale de mon entreprise&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__ID__&lt;br /&gt;
|1&lt;br /&gt;
|ID de l&#039;object&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__REF__&lt;br /&gt;
|1234&lt;br /&gt;
|Référence de l&#039;objet&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__REF_CLIENT__&lt;br /&gt;
|1234&lt;br /&gt;
|Référence client de l&#039;objet&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__REF_SUPPLIER__&lt;br /&gt;
|1234&lt;br /&gt;
|Référence fournisseur de l&#039;objet&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__EXTRAFIELD_XXX__&lt;br /&gt;
|?????&lt;br /&gt;
|Attribut supplémentaire de l&#039;object (XXX doit être remplacé par le code de l&#039;attribut)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__THIRDPARTY_ID__&lt;br /&gt;
|1&lt;br /&gt;
|ID du tiers&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__THIRDPARTY_NAME__&lt;br /&gt;
|MonClient&lt;br /&gt;
|Nom du tiers&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__THIRDPARTY_NAME_ALIAS__&lt;br /&gt;
|MonC&lt;br /&gt;
|Alias du tiers&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__THIRDPARTY_EMAIL__&lt;br /&gt;
|contact@monclient.com&lt;br /&gt;
|Adresse email du tiers&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__CONTACT_NAME_CUSTOMER__&lt;br /&gt;
|civilité prénom nom&lt;br /&gt;
|Genre prénom et nom du contact de type &#039;contact suivi proposition&#039; d&#039;une proposition commerciale&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__PROJECT_ID__&lt;br /&gt;
|1&lt;br /&gt;
|ID du projet de l&#039;objet&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__PROJECT_REF__&lt;br /&gt;
|1234&lt;br /&gt;
|Référence du projet de l&#039;objet&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__PROJECT_NAME__&lt;br /&gt;
|MonProjet&lt;br /&gt;
|Nom du projet de l&#039;objet&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__CONTRACT_HIGHEST_PLANNED_START_DATE__&lt;br /&gt;
|01/01/2020&lt;br /&gt;
|Date la plus tardive prévue pour le démarrage du contrat&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__CONTRACT_HIGHEST_PLANNED_START_DATETIME__&lt;br /&gt;
|1/1/2020 13h&lt;br /&gt;
|Date et heure la plus tardive prévue pour le démarrage du contrat&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__CONTRACT_LOWEST_EXPIRATION_DATE__&lt;br /&gt;
|01/01/2020&lt;br /&gt;
|Date la plus proche pour l&#039;expiration du contrat&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__CONTRACT_LOWEST_EXPIRATION_DATETIME__&lt;br /&gt;
|1/1/2020 13h&lt;br /&gt;
|Date et heure la plus proche pour l&#039;expiration du contrat&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__ONLINE_PAYMENT_URL__&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;https://mondoli.com/payment&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Adresse du paiement en ligne (si applicable)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__ONLINE_PAYMENT_TEXT_AND_URL__&lt;br /&gt;
|Cliquez pour payer&lt;br /&gt;
|Texte et adresse du paiement en ligne (si applicable)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__SECUREKEYPAYMENT__&lt;br /&gt;
|&lt;br /&gt;
|Clé de sécurité pour le paiement (si la clé n&#039;est pas unique par enregistrement)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__SECUREKEYPAYMENT_MEMBER__&lt;br /&gt;
|&lt;br /&gt;
|Clé de sécurité pour le paiement de l&#039;abonnement d&#039;un membre (une clé par membre)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__SECUREKEYPAYMENT_ORDER__&lt;br /&gt;
|&lt;br /&gt;
|Clé de sécurité pour le paiement d&#039;une commande&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__SECUREKEYPAYMENT_INVOICE__&lt;br /&gt;
|&lt;br /&gt;
|Clé de sécurité pour le paiement d&#039;une facture&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__SECUREKEYPAYMENT_CONTRACTLINE__&lt;br /&gt;
|&lt;br /&gt;
|Clé de sécurité pour le paiement d&#039;un contrat&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__DIRECTDOWNLOAD_URL_PROPOSAL__&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;https://mondoli.com/devis.pdf&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|URL de téléchargement direct d&#039;un devis&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__DIRECTDOWNLOAD_URL_ORDER__&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;http://mondoli.com/commande.pdf&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|URL de téléchargement direct d&#039;une commande&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__DIRECTDOWNLOAD_URL_INVOICE__&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;http://mondoli.com/facture.pdf&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|URL de téléchargement direct d&#039;une facture. Pour cela, il faut que le paramètre INVOICE_ALLOW_EXTERNAL_DOWNLOAD soit configuré pour permettre de générer le lien.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__SHIPPINGTRACKNUM__&lt;br /&gt;
|XXXXX&lt;br /&gt;
|Numéro de suivi du colis&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__SHIPPINGTRACKNUMURL__&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;http://trackingcompagny.com/XXXXX&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|URL de suivi du colis&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__DATE_YMD__&lt;br /&gt;
|01/01/2020&lt;br /&gt;
|Date d&#039;aujourd&#039;hui&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__DATE_DUE_YMD__&lt;br /&gt;
|01/01/2020&lt;br /&gt;
|Date d&#039;échéance&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__AMOUNT__ -&amp;gt;&lt;br /&gt;
|1243,34&lt;br /&gt;
|Montant total&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__AMOUNT_EXCL_TAX__ -&amp;gt; __AMOUNT_EXCL_TAX__&lt;br /&gt;
|1234,45&lt;br /&gt;
|Montant total hors taxe&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__AMOUNT_VAT__ -&amp;gt; __AMOUNT_VAT__&lt;br /&gt;
|123,4&lt;br /&gt;
|Montant TVA&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__AMOUNT_FORMATED__&lt;br /&gt;
|1243,34 €&lt;br /&gt;
|Montant total formaté&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__AMOUNT_EXCL_TAX_FORMATED__&lt;br /&gt;
|1234,45 €&lt;br /&gt;
|Montant total hors taxe formaté&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__AMOUNT_VAT_FORMATED__ -&amp;gt; __AMOUNT_VAT_FORMATED__&lt;br /&gt;
|123,4 €&lt;br /&gt;
|Montant TVA formaté&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__DAY__&lt;br /&gt;
|12&lt;br /&gt;
|Jours actuel (chiffre)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__DAY_TEXT__&lt;br /&gt;
|Mardi&lt;br /&gt;
|Jours actuel (texte)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__DAY_TEXT_SHORT__&lt;br /&gt;
|Ma&lt;br /&gt;
|Jours actuel en texte abrégé&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__DAY_TEXT_MIN__&lt;br /&gt;
|M&lt;br /&gt;
|Jours actuel en texte en une lettre&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MONTH__&lt;br /&gt;
|3&lt;br /&gt;
|Mois actuel (chiffre)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MONTH_TEXT__&lt;br /&gt;
|Mars&lt;br /&gt;
|Mois actuel (texte)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MONTH_TEXT_SHORT__&lt;br /&gt;
|Ma.&lt;br /&gt;
|Mois actuel en texte abrégé&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__MONTH_TEXT_MIN__&lt;br /&gt;
|M&lt;br /&gt;
|Mois actuel en texte en une lettre&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__YEAR__&lt;br /&gt;
|2020&lt;br /&gt;
|Année actuelle&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__PREVIOUS_DAY__&lt;br /&gt;
|11&lt;br /&gt;
|Hier (chiffre)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__PREVIOUS_MONTH__&lt;br /&gt;
|2&lt;br /&gt;
|Mois précédent (chiffre)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__PREVIOUS_YEAR__&lt;br /&gt;
|2019&lt;br /&gt;
|Année précédente&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__NEXT_DAY__&lt;br /&gt;
|13&lt;br /&gt;
|Demain (chiffre)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__NEXT_MONTH__&lt;br /&gt;
|4&lt;br /&gt;
|Mois prochain&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__NEXT_YEAR__&lt;br /&gt;
|2021&lt;br /&gt;
|Année prochaine&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__DOL_MAIN_URL_ROOT__&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;http://mondolibarr.fr/htdocs&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Adresse de mon dolibarr&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__(Clédetraduction)__&lt;br /&gt;
|Clé traduite&lt;br /&gt;
|N&#039;importe qu&#039;elle clé de traduction&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__[constante]__&lt;br /&gt;
|Valeure de la constante&lt;br /&gt;
|N&#039;importe qu&#039;elle constante&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__DATE_DELIVERY__&lt;br /&gt;
|21/09/1974&lt;br /&gt;
|Date de livraison de la Propal&lt;br /&gt;
|V14&lt;br /&gt;
|-&lt;br /&gt;
|__CONTACT_NAME_XXX__&lt;br /&gt;
|Mr T&lt;br /&gt;
|XXX est le type de contact défini dans Accueil&amp;gt;configuration&amp;gt;dictionnaires&amp;gt;Types de contacts/adresses (par exemple : __CONTACT_NAME_BILLING__ pour le contact client désigné comme responsable de la facturation sur une facture). Contient Titre+Nom+Prénom&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|__UNSUBSCRIBE__&lt;br /&gt;
|&lt;br /&gt;
|Lien de désinscription&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Variables de substitution Personnalisées=&lt;br /&gt;
Un module peut ajouter ses propres variables de substitutions.&lt;br /&gt;
Pour cela, le module doit embarquer un fichier avec le nom  &#039;&#039;&#039;monmodule/core/substitutions/functions_monmodule.lib.php&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Setup_EMails&amp;diff=54841</id>
		<title>Setup EMails</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Setup_EMails&amp;diff=54841"/>
		<updated>2022-10-11T08:29:18Z</updated>

		<summary type="html">&lt;p&gt;Iouston: /* Several smtp logins or servers */  remove link to dolistore multi smtp plugin which don&amp;#039;t exist&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- BEGIN origin interlang links --&amp;gt;&lt;br /&gt;
&amp;lt;!-- You can edit this section but do NOT remove these comments&lt;br /&gt;
     Links below will be automatically replicated on translated pages by PolyglotBot --&amp;gt;&lt;br /&gt;
[[fr:Paramétrage_EMails]]&lt;br /&gt;
[[es:Configuración_EMails]]&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Admin]]&lt;br /&gt;
{{TemplateDocUser}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Help about screen:&#039;&#039;&#039; EMail setup&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Menu path:&#039;&#039;&#039; Home ► Setup ► EMails&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The EMails setup screen allows you to setup Dolibarr to send EMails and to test your setup.&lt;br /&gt;
&lt;br /&gt;
=E-Mails setup parameters=&lt;br /&gt;
[[File:Emails Setup EN.png|alt=Emails Setup|thumb|Emails Setup]]&lt;br /&gt;
This is explanation of all setup parameters:&lt;br /&gt;
&lt;br /&gt;
==Disable globally all emails sendings (test mode or demo)==&lt;br /&gt;
Set this to No. If you set to yes (for a demo system for example), no more mail will be sent.&lt;br /&gt;
&lt;br /&gt;
==Send all emails to (instead of real recipients, for test purposes)==&lt;br /&gt;
Enter an email address. All the outgoing emails will be sent to that address. For test purpose.&lt;br /&gt;
&lt;br /&gt;
==Suggest emails of employees==&lt;br /&gt;
Suggest emails of employees (if defined) into the list of predefined recipient when writing a new email &lt;br /&gt;
&lt;br /&gt;
==Method to send emails==&lt;br /&gt;
&lt;br /&gt;
*The default method is &#039;&#039;&#039;PHP mail function&#039;&#039;&#039;. This means that Dolibarr use your PHP to send emails. This suppose your PHP setup is complete. If you don&#039;t know how to setup PHP for email sending, prefer next method.&lt;br /&gt;
*If your email sending server needs authentication, or if you don&#039;t have permission or knowledge to setup your PHP, choose the second method: &#039;&#039;&#039;SMTP/SMTPS socket library&#039;&#039;&#039; (or &#039;&#039;&#039;Swift Mailer socket library&#039;&#039;&#039; if you fails to make the previous one working with your email provider).&lt;br /&gt;
&lt;br /&gt;
[[File:Warning.png]] WARNING&lt;br /&gt;
&lt;br /&gt;
Some email provider (like Yahoo) does not allow you to send an email from another server than the Yahoo server if the email address used as a sender is a Yahoo email (for example myemail@yahoo.com, myemail@yahoo.fr, ...). If you use the PHPmail method, it means you will use the server of your application to send emails, so some recipients (the one compatible with DMARC protocol), will ask Yahoo if they can accept your email and Yahoo will respond &amp;quot;no&amp;quot; because the server is not a Yahoo server, and some of your Emails may not be received.&amp;lt;br&amp;gt;&lt;br /&gt;
If like Yahoo, your Email provider has this restriction, you must set this setup to choose the other method &amp;quot;SMTP/SMTPS socket library&amp;quot; and enter here the SMTP server and credentials provided&lt;br /&gt;
by your Email provider.&lt;br /&gt;
&lt;br /&gt;
==Hostname or ip address of SMTP/SMTPS sending server==&lt;br /&gt;
Name or IP address of the server that send mail. It is usually an name like smtp.xxx.zzz provided by your Internet Service Provider.&lt;br /&gt;
&lt;br /&gt;
For example: &lt;br /&gt;
&lt;br /&gt;
*smtp.aol.com&lt;br /&gt;
*smtp.free.fr&lt;br /&gt;
*smtp.myprovider.com&lt;br /&gt;
*smtp.gmail.com (with login/pass of gmail or gmail for works account)&lt;br /&gt;
*smtp-relay.gmail.com (with mode relay of gmail for works)&lt;br /&gt;
&lt;br /&gt;
==Port of SMTP/SMTPS sending server==&lt;br /&gt;
If the email sending server use the standard port (25), you can let the field empty.&lt;br /&gt;
&lt;br /&gt;
Other examples: &lt;br /&gt;
&lt;br /&gt;
*25 (SMTP standard)&lt;br /&gt;
*465 (SMTPS gmail of free Gmail or Gmail Suite)&lt;br /&gt;
*25, 465 or 587 (SMTP gmail with the mode relay available with Gmail Suite, depending on setup)&lt;br /&gt;
&lt;br /&gt;
==SMTP Authentification ID==&lt;br /&gt;
Visible if you have choose &#039;&#039;&#039;SMTP/SMTPS socket library&#039;&#039;&#039; as sending method. Put here your login.&lt;br /&gt;
&lt;br /&gt;
==SMTP Authentification Password==&lt;br /&gt;
Visible if you have choose &#039;&#039;&#039;SMTP/SMTPS socket library&#039;&#039;&#039; as sending method. Put here your password.&lt;br /&gt;
&lt;br /&gt;
==Usage of TLS (SSL)==&lt;br /&gt;
Some emails servers require encrypted communication (For example the SMTP server of Google smtp.gmail.com. It&#039;s SMTPS).&lt;br /&gt;
&lt;br /&gt;
The only method that support this protocol is &#039;&#039;&#039;SMTP/SMTPS socket library&#039;&#039;&#039;. You must enable cryptography by setting this method if you need such encryption.&lt;br /&gt;
&lt;br /&gt;
Note: SSL functions must be available in your PHP. If not, you probably forget to install the &#039;&#039;&#039;openssl&#039;&#039;&#039; module of PHP.&lt;br /&gt;
&lt;br /&gt;
Note: There is 2 different types of SMTP secured encoding:&lt;br /&gt;
&lt;br /&gt;
*Sending SMTP protocol inside a crypted stream (&#039;&#039;&#039;SSL&#039;&#039;&#039; or &#039;&#039;&#039;non standard TLS&#039;&#039;&#039;). Server is often running on port &#039;&#039;&#039;465&#039;&#039;&#039;.&lt;br /&gt;
*Sending crypted data inside SMTP (&#039;&#039;&#039;TLS using STARTTLS&#039;&#039;&#039;). Server is often running on port &#039;&#039;&#039;587&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
More information on difference between TLS and STARTTLS here: https://www.fastmail.com/help/technical/ssltlsstarttls.html&lt;br /&gt;
&lt;br /&gt;
==EMail used as sender for automatic emails==&lt;br /&gt;
Set here the eMail that will be used by default by Dolibarr as eMail sender, if sender is not explicitly defined.&lt;br /&gt;
&lt;br /&gt;
==Default sender email for manual sending==&lt;br /&gt;
You can use User email or Company email&lt;br /&gt;
&lt;br /&gt;
==Email used for error returns emails==&lt;br /&gt;
Set an error returns email address (fields &#039;Errors-To&#039; in emails sent). All the emails that has not been properly received, will be sent back to this address&lt;br /&gt;
&lt;br /&gt;
==Copy (Bcc) all sent emails to==&lt;br /&gt;
If you want to have all the Dolibarr outgoing email sent in copy to a general mail address&lt;br /&gt;
&lt;br /&gt;
==Examples for common Mail server setup==&lt;br /&gt;
&lt;br /&gt;
This is some examples of values (for common email providers) to use to setup your emails with the SMTPs method and use the SMTP server of your email provider. Contact your email provider if it is not in this list or if you are not sure of which value to use to ask him the credentials (SMTP server, port, Use of TLS or not).&lt;br /&gt;
&lt;br /&gt;
===Gmail (with login/pass or login/pass of application)===&lt;br /&gt;
&lt;br /&gt;
*SMTP server: smtp.gmail.com&lt;br /&gt;
*Port: 465&lt;br /&gt;
*SMTP Username: Your Gmail login (xxx@gmail.com or xxx@yourdomain.com)&lt;br /&gt;
*SMTP Password: A generated application password (not your GMail password, see later)&lt;br /&gt;
*Use TLS (SSL) encrypt: yes&lt;br /&gt;
*Use TLS (STARTTLS) encrypt: no&lt;br /&gt;
&lt;br /&gt;
[[File:warning.png]] Because using this SMTPS access need to store a login/pass into the application, this access is classified by Google as a &amp;quot;less secured access&amp;quot;. So check that such access is enabled for your Google account: Take a look at your dashboard for parameter: &amp;quot;Access for less secured application&amp;quot; on https://www.google.com/settings/security/lesssecureapps.  &lt;br /&gt;
&lt;br /&gt;
You must enable the 2-steps authentication on your Google account. Once done, you must create a dedicated alternative password for your account. This can be done on: https://myaccount.google.com/security, menu &amp;quot;Application password&amp;quot;. Create the alternative password. You must then use it instead of your standard Gmail password into setup (the login that is the main email does not change).&lt;br /&gt;
&lt;br /&gt;
[[File:warning.png]] If you have email aliases on your account, be sure to set as login, the main username/email and not the alias.&lt;br /&gt;
&lt;br /&gt;
[[File:warning.png]] Note also that when sending email with google smtps, if the email of sender is not the google email, neither a declared alias, google will replace the &amp;quot;From&amp;quot; visible by the recipient with your default email alias (but the reply to will still be the sender email even if not declared)&lt;br /&gt;
&lt;br /&gt;
Note: With this mode, all sent emails are automatically added into &amp;quot;Sent&amp;quot; folder of the &#039;&#039;&#039;main account&#039;&#039;&#039;. If your are a Gsuite user with several users/mailboxes, prefer to use the next method.&lt;br /&gt;
&lt;br /&gt;
===Gmail (with mode relay of Gmail with Google Workspace - GSuite)===&lt;br /&gt;
&lt;br /&gt;
*SMTP server: smtp-relay.gmail.com&lt;br /&gt;
*Port: 25, 465 or 587&lt;br /&gt;
*Use TLS: Depend on relay setup&lt;br /&gt;
*Login/Pass: Keep login/pass empty (Choice A). In such case, on your Google console for email, you must set &amp;quot;Allow some IP addresses only&amp;quot; and enter the public IP of your Dolibarr server (see later). Or (choice B) enter your GSuite email account and an &amp;quot;application&amp;quot; password that is not the password of your account but a second password generated from https://myaccount.google.com/security).&lt;br /&gt;
&lt;br /&gt;
Note 1: You must first setup your Google account to relay outgoing email and to set the list of ip of your SMTP clients (https://admin.google.com, Application - GSuite - GMail - Advanced setup - Routing). Then choose &amp;quot;Accept all emails from my domain&amp;quot; or &amp;quot;Accept all&amp;quot;, Choose &amp;quot;Enable TLS&amp;quot; and choose &amp;quot;SMTP authentication required&amp;quot; to no (Choice A) or yes (Choice B). &lt;br /&gt;
&lt;br /&gt;
*If you made Choice A, you must also enter the public ip address of the server of your Dolibarr in &amp;quot;Allow some IP addresses only&amp;quot;.&lt;br /&gt;
*If you made Choice B, you must create an &amp;quot;application password&amp;quot; from https://myaccount.google.com/security and use this one. (2FA needs to be enabled in order to be able to create &amp;quot;application passwords&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Whatever is the choice (A or B), you will never have to enter the password of your Google account when using the GMail relay solution.&lt;br /&gt;
&lt;br /&gt;
Note 2: With this mode, emails sent can also be saved into the &amp;quot;Sent&amp;quot; folder if option &amp;quot;Stock a copy of all emails sent...&amp;quot; is on.&lt;br /&gt;
&lt;br /&gt;
If your are a Gsuite user with several users/mailboxes, this mode is required if you want to have each user having its sent mails automatically stored into its own &amp;quot;Sent&amp;quot; directory of Gmail.&lt;br /&gt;
&lt;br /&gt;
===iCloud===&lt;br /&gt;
&lt;br /&gt;
iCloud does not support SSL/TLS, only TLS with STARTTLS.&lt;br /&gt;
&lt;br /&gt;
Setup would be:&lt;br /&gt;
&lt;br /&gt;
*Server: smtp.mail.me.com&lt;br /&gt;
*User name: Your iCloud Mail email address (Do include the domain name—what follows &amp;quot;@&amp;quot; in your iCloud Mail address; if your iCloud Mail email address is &amp;quot;me@icloud.com&amp;quot;, for instance, do use &amp;quot;me@icloud.com&amp;quot; as the user name.)&lt;br /&gt;
*Password: iCloud Mail SMTP password: Your iCloud Mail password or an app-specific password (with two-step authentication enabled)&lt;br /&gt;
*Port: 587&lt;br /&gt;
*Use TLS (SSL) encrypt: no&lt;br /&gt;
*Use TLS (STARTTLS) encrypt: yes&lt;br /&gt;
&lt;br /&gt;
===Gandi===&lt;br /&gt;
&lt;br /&gt;
Setup would be:&lt;br /&gt;
&lt;br /&gt;
*Server: mail.gandi.net&lt;br /&gt;
*User name: Your email address of your Gandi account&lt;br /&gt;
*Password: Your password of your Gandi account&lt;br /&gt;
*Port: 587&lt;br /&gt;
*Use TLS (SSL) encrypt: no&lt;br /&gt;
*Use TLS (STARTTLS) encrypt: yes&lt;br /&gt;
&lt;br /&gt;
===Orange===&lt;br /&gt;
&lt;br /&gt;
Setup would be:&lt;br /&gt;
&lt;br /&gt;
*Server: smtp.orange.fr&lt;br /&gt;
*User name: Your email address of your Orange account (ex:  myname@wanadoo.fr)&lt;br /&gt;
*Password: Your password of your Orange account&lt;br /&gt;
*Port: 25&lt;br /&gt;
*Use TLS (SSL) encrypt: no&lt;br /&gt;
*Use TLS (STARTTLS) encrypt: no&lt;br /&gt;
&lt;br /&gt;
===Outlook / Office365 / Exchange server (with login/pass)===&lt;br /&gt;
&lt;br /&gt;
This mode is not compatible with the two factor authentication. It is also called the SMTP AUTH method or Option 1 in this [https://docs.microsoft.com/en-us/exchange/mail-flow-best-practices/how-to-set-up-a-multifunction-device-or-application-to-send-email-using-microsoft-365-or-office-365#option-3-configure-a-connector-to-send-mail-using-microsoft-365-or-office-365-smtp-relay Microsoft Tutorial]. Warning, according to Microsoft doc, this method is limited: It supports only 1 possible sender. Any other accounts will appear as the same sender.&lt;br /&gt;
&lt;br /&gt;
Setup may be:&lt;br /&gt;
&lt;br /&gt;
*Server: smtp.office365.com (Microsoft Office 365, Exchange Server) and smtp-mail.outlook.com&lt;br /&gt;
*User name: Your email account&lt;br /&gt;
*Password: Your password account (If you enabled the Double Authentication Method, you must create an &amp;quot;Application password&amp;quot; from menu https://account.microsoft.com/security/ -&amp;gt; &amp;quot;More security options&amp;quot; and use it as the password instead of your common password)&lt;br /&gt;
*Port: 587&lt;br /&gt;
*Use TLS (SSL) encrypt: no&lt;br /&gt;
*Use TLS (STARTTLS) encrypt: yes&lt;br /&gt;
&lt;br /&gt;
Note: Outlook and Office365 are the worst platforms we know to manage emails. It is not compliant with most web and emails standard so the setup is often difficult with this platform. Documentation about SMTP credential is also poor. It depends on a lot of parameters saved into your Outlook platform. Ask the parameters to use the SMTP server of your Outlook/Office365 platform to your Outlook/Office365 provider. Only your Outlook/Office365 provider is able to give you those parameters. If you can&#039;t contact him, I&#039;m afraid, trying any combination of parameters is the only solution to find the good one with this email platform but the one suggested in this wiki should works in 90% of the cases (note that some other parameters specific to Office365 may also be expected by the platform, ask your Microsoft integrator).&lt;br /&gt;
&lt;br /&gt;
Note: Some users has reported that you may solve trouble in the user/password validation by adding a rule in Office365 to accept SMTP e-mail without authentication keeping a restriction on the IP address of the server hosting your Dolibarr application.&lt;br /&gt;
&lt;br /&gt;
===Outlook / Office365 / Exchange server (with mode relay)===&lt;br /&gt;
&lt;br /&gt;
This method needs a complex Microsoft Office365 setup (creation of a &amp;quot;Microsoft SMTP Connector&amp;quot;). Also, with this method, Office365 is not able to keep the email sent into the directory &amp;quot;Sent&amp;quot; of the user that send the email. This is a serious limitation for companies with several mailboxes. We recommend using another email provider if you need this (for example gmail that has not this limit).&lt;br /&gt;
This mode is compatible with the two factor authentication. More information available on Option 3 variante 2 of this [https://docs.microsoft.com/en-us/exchange/mail-flow-best-practices/how-to-set-up-a-multifunction-device-or-application-to-send-email-using-microsoft-365-or-office-365#option-3-configure-a-connector-to-send-mail-using-microsoft-365-or-office-365-smtp-relay Microsoft Tutorial]&lt;br /&gt;
&lt;br /&gt;
Setup may be (see however note after):&lt;br /&gt;
&lt;br /&gt;
*Server: yourdomainname.mail.protection.outlook.com&lt;br /&gt;
*User name: Keep empty&lt;br /&gt;
*Password: Keep empty&lt;br /&gt;
*Port: 25&lt;br /&gt;
*Use TLS (SSL) encrypt: no&lt;br /&gt;
*Use TLS (STARTTLS) encrypt: no or yes&lt;br /&gt;
&lt;br /&gt;
Note: You must add a rule in office365 to accept SMTP e-mail without authentication but with a restriction on the IP address of the server hosting your Dolibarr application.&lt;br /&gt;
&lt;br /&gt;
===OVH===&lt;br /&gt;
Setup would be:&lt;br /&gt;
&lt;br /&gt;
*Server: exX.mail.ovh.net     (ask OVH to know value of X)&lt;br /&gt;
*User name: Your email&lt;br /&gt;
*Password: Your email password (not your OVH account password)&lt;br /&gt;
*Port: 587&lt;br /&gt;
*Use TLS (SSL) encrypt: no&lt;br /&gt;
*Use TLS (STARTTLS) encrypt: yes&lt;br /&gt;
&lt;br /&gt;
Some uses also succeed with:&lt;br /&gt;
&lt;br /&gt;
*Server: sslX.ovh.net     (ask OVH to know value of X)&lt;br /&gt;
*User name: Your email&lt;br /&gt;
*Password: Your email password (not your OVH account password)&lt;br /&gt;
*Port: 465&lt;br /&gt;
*Use TLS (SSL) encrypt: yes&lt;br /&gt;
*Use TLS (STARTTLS) encrypt: no&lt;br /&gt;
&lt;br /&gt;
===SendGrid===&lt;br /&gt;
&lt;br /&gt;
Setup would be:&lt;br /&gt;
&lt;br /&gt;
*Server: smtp.sendgrid.net&lt;br /&gt;
*User name: Your SendGrid api key&lt;br /&gt;
*Password: Your SendGrid api pass&lt;br /&gt;
*Port: 2525&lt;br /&gt;
*Use TLS (SSL) encrypt: no&lt;br /&gt;
*Use TLS (STARTTLS) encrypt: yes&lt;br /&gt;
&lt;br /&gt;
===Yahoo (with login/pass)===&lt;br /&gt;
&lt;br /&gt;
*SMTP server: smtp.mail.yahoo.com&lt;br /&gt;
*Port: 465&lt;br /&gt;
*SMTP Username: Your Yahoo login (xxx@yahoo.com)&lt;br /&gt;
*SMTP Password: The alternative application password, see later&lt;br /&gt;
*Use TLS (SSL) encrypt: yes&lt;br /&gt;
*Use TLS (STARTTLS) encrypt: no&lt;br /&gt;
&lt;br /&gt;
[[File:warning.png]] Because using this smtps access need to store your login/pass into application, this access is classified by Yahoo as a &amp;quot;less secured access&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You need to create a dedicated password for the application : on Yahoo go on &amp;quot;Personal Information&amp;quot;-&amp;gt;&amp;quot;Account Security&amp;quot;-&amp;gt;&amp;quot;Manage application passwords&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In the list, select an application of your choice for Dolibarr, for exempel &amp;quot;Android Mail&amp;quot; then  click on &amp;quot;generate&amp;quot;&lt;br /&gt;
In the new window that opens copy the password and paste it on the Dolibarr Email setup&lt;br /&gt;
&lt;br /&gt;
===Several smtp logins or servers===&lt;br /&gt;
At this time there is nos solution for that.&lt;br /&gt;
&lt;br /&gt;
Note that in most cases, even if each user has its own email address and its own mailbox and &amp;quot;Sent&amp;quot; directory, using several SMTP login/servers is not required (see for example the comment for Gmail setup using the &amp;quot;relay&amp;quot; mode).&lt;br /&gt;
&lt;br /&gt;
=Actions=&lt;br /&gt;
==Test server availability==&lt;br /&gt;
This button is to test if you can communicate with the server. This allow you validate the parameter:&lt;br /&gt;
&lt;br /&gt;
*Hostname or ip address of SMTP/SMTPS sending server&lt;br /&gt;
*Port of SMTP/SMTPS sending server&lt;br /&gt;
*Usage of TLS (SSL)&lt;br /&gt;
&lt;br /&gt;
==Test send email==&lt;br /&gt;
This button is to test what happens when you send an email with simple text content.&lt;br /&gt;
&lt;br /&gt;
==Test send email HTML==&lt;br /&gt;
This button is to test what happens when you send an email with HTML content.&lt;br /&gt;
&lt;br /&gt;
==SPAM troubles==&lt;br /&gt;
If your email is set as SPAM by your EMail reader, you can test to send en email to this service to get more information why your email is set as SPAM: https://www.mail-tester.com/&lt;br /&gt;
&lt;br /&gt;
=Outgoing email setup (for module EMailing)=&lt;br /&gt;
This tab allows you to change the email setting of the Mass EMailing module. By default, it uses the same settings defined in the previous tab.&lt;br /&gt;
&lt;br /&gt;
=Email templates=&lt;br /&gt;
[[File:Email Template Setup EN.png|alt=Email Template Setup |thumb|Email Template Setup ]]&lt;br /&gt;
This tab allows you to create email template that will be proposed on specific modules or globally.&lt;br /&gt;
You can either create new template or modify existing templates.&lt;br /&gt;
&lt;br /&gt;
==Create an email template==&lt;br /&gt;
To create an email template, you have several fields to fill :&lt;br /&gt;
&lt;br /&gt;
*Code of the template : Code is free to define&lt;br /&gt;
*Language : Language of the template&lt;br /&gt;
*Type of template : Email template can be dedicated to modules or visible globally&lt;br /&gt;
*Owner of the template&lt;br /&gt;
*Private : If set to private, only the owner will see the template&lt;br /&gt;
*Position : Position of the template on the list (1 being the top position)&lt;br /&gt;
*Subject of the email : [[Variable substitution system]] can be used&lt;br /&gt;
*Attach file : If the email is sent from a screen where a document is available, the document will be immediately added to mail if you enter &amp;quot;1&amp;quot;.&lt;br /&gt;
*Content of the email : [[Variable substitution system]] can be used&lt;br /&gt;
&lt;br /&gt;
==Modify an existing email template==&lt;br /&gt;
On the email template list, you can :&lt;br /&gt;
&lt;br /&gt;
*See the resume of the template&lt;br /&gt;
*Activate or deactivate the template by clicking on the Status column&lt;br /&gt;
*Modify the template by clicking on the pencil icon&lt;br /&gt;
*Delete the template by clicking on the garbage icon&lt;br /&gt;
&lt;br /&gt;
=Emails sender profiles=&lt;br /&gt;
You can keep this section empty. If you enter some emails here, they will be added to the list of possible senders into the combobox when your write a new email.&lt;br /&gt;
&lt;br /&gt;
=Emails Tracking=&lt;br /&gt;
Like most modern ERP and email clients, all emails sent by Dolibarr contains a header line &amp;quot;Reference&amp;quot; with a tracking information to know from which source element the email were sent. This tracking informations will also be present into the emails answer, but only if the reader has sent the answer using the &amp;quot;Reply / Answer&amp;quot; feature of its email reader and not by creating a new email from scratch of course.&lt;br /&gt;
This tracking id can be used by the [[Module EMail Collector]] that scan your mailbox and can automatically store the answer or email sent as en event, lead, ticket or candidature in your Dolibarr, at the good place (so it is automatically linked to the related customer and/or quotation for example).&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Setup_Other&amp;diff=54254</id>
		<title>Setup Other</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Setup_Other&amp;diff=54254"/>
		<updated>2022-07-25T11:34:09Z</updated>

		<summary type="html">&lt;p&gt;Iouston: MAIN_COUNTRIES_IN_EEC - ad a precision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- BEGIN origin interlang links --&amp;gt;&lt;br /&gt;
&amp;lt;!-- You can edit this section but do NOT remove these comments&lt;br /&gt;
     Links below will be automatically replicated on translated pages by PolyglotBot --&amp;gt;&lt;br /&gt;
[[fr:Paramétrage_Divers]]&lt;br /&gt;
[[es:Configuración_Varios]]&lt;br /&gt;
[[de:Erweiterte_Einstellungen]]&lt;br /&gt;
[[zh:其他设置]]&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Admin]]&lt;br /&gt;
{{TemplateDocUser}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Help About Screen&#039;&#039;&#039;: Other setup&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Menu Path&#039;&#039;&#039;: Home ► Setup ► Other&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Some options are not visible in the interface (often because they are deprecated or are beta features). In most cases you do not need these functions and their use may make the application unstable.&lt;br /&gt;
&lt;br /&gt;
 {{warning|32px}} This page contains the list of some advanced development parameters. In most cases, it is parameters for internal usage, development, external modules, features in development not stable or that may lead to security risk. For standard usage of Dolibarr, such parameters &#039;&#039;&#039;SHOULD NOT&#039;&#039;&#039; be used. All experimental options are NOT supported. They may be removed in a future, modified at any version and break stability of your application.&lt;br /&gt;
&lt;br /&gt;
To enable/override a parameter you have to define the constant name and set it to 1 (unless otherwise stated) in &amp;lt;code&amp;gt;Home ► Setup ► Other Setup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The options here may not be documented since they are not stable and unsupported (remember they are experimental or development options). The basic format of how the list is written is broken down in the example below:&lt;br /&gt;
&lt;br /&gt;
HIDDEN_CONFIG ► &#039;&#039;Description of config and goal&#039;&#039; ► &#039;&#039;(specific version information) or values&#039;&#039;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
=Global Options=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ADD_UNSPLASH_LOGIN_BACKGROUND&#039;&#039;&#039; ► The background image will be refreshed on every login page refresh. Background image is pulled from the popular open source image website Unsplash. If an already saved static background image exists, then this code will override it (but not delete the saved image). Warning: Using this may allow this external website to steel your login credentials ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_APPLICATION_TITLE&#039;&#039;&#039; ► This will change the title of software (that appears on the login page by default). Warning: changing this may make Dolibarr version detection fail by smartphone applications like [[Application Android - DoliDroid]] breaking some features when using Dolibarr from this application.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_AUTOFILL_DATE&#039;&#039;&#039; ► If this constant is defined (to something other than &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;), the date of invoice, proposal, order or payment are auto-filled with the current date. It is highly recommended to NOT ENABLE this feature. This can create a lot of input errors with data not validated by users. This leads to incorrect values saved in the database causing confusion when you have to do your accountancy reports!&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_AUTO_TIMESTAMP_IN_PUBLIC_NOTES&#039;&#039;&#039; ► Add a timestamp and user automatically when editing the &#039;&#039;public&#039;&#039; note.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_AUTO_TIMESTAMP_IN_PRIVATE_NOTES&#039;&#039;&#039; ► Add a timestamp and user automatically when editing the &#039;&#039;private&#039;&#039; note.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_COUNTRIES_IN_EEC&#039;&#039;&#039; ► Country list in European Area (For VAT purpose) ► (v10.0-v13.0). From v14, do not use this anymore (remove the constant if you set it and instead set if the country is in Europe or not from the DB for V14 - V15  and from dictionary of countries in V16 and more).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DEFAULT_PAYMENT_TERM_ID&#039;&#039;&#039; ► With ID of a payment term, will use this as default payment term each time you create a new proposal, order, invoice (customer and supplier)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DEFAULT_PAYMENT_TYPE_ID&#039;&#039;&#039; ► With ID of a payment type, will use this as default payment type each time you create a new proposal, order, invoice (customer and supplier) ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DEFAULT_LANGUAGE_FILTER&#039;&#039;&#039; ► Useful if you do not want to show &amp;lt;code&amp;gt;en_US&amp;lt;/code&amp;gt; language option in combo boxes (other languages can easily be removed in &amp;lt;code&amp;gt;langs&amp;lt;/code&amp;gt; directory but not &amp;lt;code&amp;gt;en_US&amp;lt;/code&amp;gt;) ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LANGUAGES_ALLOWED&#039;&#039;&#039; ► Is a list of languages without spaces, example : &amp;lt;code&amp;gt;fr_FR,en_US,de_DE,it_IT&amp;lt;/code&amp;gt; If defined, only those languages will appear in combos. ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_NOTES_TAB&#039;&#039;&#039; ► Show or hide notes tab in the card page&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_CONTACTS_TAB&#039;&#039;&#039; ► Show or hide contacts tab in the card page&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_FULL_SCANLIST&#039;&#039;&#039; ► Disables the complete scan of tables to allow the pagination to show total number of pages. May be useful to activate on systems with a very high quantity of data (tables with more than 2 000 000 records).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_JQUERY_JNOTIFY&#039;&#039;&#039; ► Disable usage of &amp;lt;code&amp;gt;JNotify&amp;lt;/code&amp;gt; to show confirm or error messages&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_AJAX_COMBOX&#039;&#039;&#039; ► If you have a large number of third parties or products, you can disable the autocomplete feature on the third parties list by setting this constant to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; ► (v3.6.0+)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_MULTIPLE_FILEUPLOAD&#039;&#039;&#039; ► Disable users to upload multiple files at once.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_TRUNC&#039;&#039;&#039; ► Disable all truncings in select list. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLEDRAFTSTATUS&#039;&#039;&#039; ► Disable the status &amp;quot;Draft&amp;quot; for some objects (project, donation, ...) so the object is directly created with status &amp;quot;Validated&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_USE_OBJECT_THIRDPARTY_NAME&#039;&#039;&#039; ► Add name of thirdparty at begin of generated document.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_USE_TIMING&#039;&#039;&#039; ► Add a timestamp at end of generated document. Value must be format of timestamp. For example: &amp;lt;code&amp;gt;%Y%m%d%H%M&amp;lt;/code&amp;gt; (only for ODT files)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_UPLOAD_NOT_RENAME_BY_DEFAULT&#039;&#039;&#039; ► Disable the auto renaming on upload file ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOL_SCRIPTS_ROOT&#039;&#039;&#039; ► Define directory who contains &#039;scripts&#039; directory (e.g. &amp;lt;code&amp;gt;/var/www/dolibarr&amp;lt;/code&amp;gt;). Value of this variable may be requested by some external script or tools.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ENABLE_LOG_TO_HTML&#039;&#039;&#039; ► If this constant is defined, it is possible to have logs inside pages by adding the parameter &amp;lt;code&amp;gt;&amp;amp;logtohtml=1&amp;lt;/code&amp;gt; into URL.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ENABLE_IMPORT_LINKED_OBJECT_LINES&#039;&#039;&#039; ► Allow to import lines into current document from &amp;quot;linked&amp;quot; compatible documents ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FIRST_TO_UPPER&#039;&#039;&#039; ► Dolibarr add uppercase to Third Parties, contacts or members names if not done. Warning: with some languages (whose words with uppercase are not same words, or pagecode does not always have an uppercase, like cyrillic languages), this feature may alter your data.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ALL_TO_UPPER&#039;&#039;&#039; ► Dolibarr puts uppercase for Third Parties, contacts or members names if not done. Warning, with some languages (whose words with uppercase are not same words, or pagecode does not always have an uppercase, like cyrillic languages), this feature may alter your data. ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ALL_TOWN_TO_UPPER&#039;&#039;&#039; ► Dolibarr puts uppercase for town names if not done. ► (v13.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FILESYSTEM_ENCODING&#039;&#039;&#039; ► With some PHP versions, PHP is not able to detect the page code for filesystem of the server OS. To solve this, Dolibarr assumes your OS filesystem is &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; if on Linux or OSX system, and &amp;lt;code&amp;gt;ISO-8859-1&amp;lt;/code&amp;gt; if on Windows. If not, for example on a Windows server with a NTFS &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; pagecode, you can set the variable &amp;lt;code&amp;gt;MAIN_FILESYSTEM_ENCODING&amp;lt;/code&amp;gt; to &amp;quot;&amp;lt;code&amp;gt;utf-8&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FORCELANGDIR&#039;&#039;&#039; ► Relative path of the directory holding your custom &amp;lt;code&amp;gt;langs&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HTML_TITLE&#039;&#039;&#039; ► Can be used to control how the html page title is formatted. If value contains key &#039;&amp;lt;code&amp;gt;noapp&amp;lt;/code&amp;gt;&#039;, application name will not be output. If value contains &#039;&amp;lt;code&amp;gt;thirdpartynameonly&amp;lt;/code&amp;gt;&#039;, on tab for thirdparties, only name of thirdparties are output. Value can be list of tags: &#039;&amp;lt;code&amp;gt;noapp;thirdpartynameonly&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HELPCENTER_LINKTOUSE&#039;&#039;&#039; ► Define the URL link to use as the target page for link &amp;quot;I need help&amp;quot; onto logon page&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LANDING_PAGE&#039;&#039;&#039; ► Can choose the first page to show after login (the landing page). This option works as a global option (&amp;lt;code&amp;gt;llx_const&amp;lt;/code&amp;gt;) and per user option (&amp;lt;code&amp;gt;llx_user_param&amp;lt;/code&amp;gt;). ► (v3.9+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LOGOUT_GOTO_URL&#039;&#039;&#039; ► URL to which the user will be redirected after LOGOUT&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAXTABS_IN_CARD&#039;&#039;&#039; ► Maximum number of tabs visible. Others are grouped into a combo list.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAXLIST_OVERLOAD&#039;&#039;&#039; ► Maximum number of line in space&#039;s domain.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING&#039;&#039;&#039; ► A warning saying setup of modules is not complete is shown if the number of enabled modules is lower or equal than this value (&amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; if not defined)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NO_CONCAT_DESCRIPTION&#039;&#039;&#039; ► Allow to use only input custom description in lines (propale, order, invoice) ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ONLY_LOGIN_ALLOWED&#039;&#039;&#039; ► Only the specified login is allowed to log in Dolibarr (maintenance mode).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_OPTIMIZE_SPEED&#039;&#039;&#039; ► Use some speed enhancements. See page [[FAQ Increase Performance]] for more information.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROPAGATE_CONTACTS_FROM_ORIGIN&#039;&#039;&#039; ► When creating an order, contract, invoice from another object, specific contacts of objects are set as specific contact of the new object when possible. ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PUBLIC_NOTE_IN_ADDRESS&#039;&#039;&#039; ► Show public note in address block ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_REMOVE_INSTALL_WARNING&#039;&#039;&#039; ► Remove all security warnings that appear to administrator users if URL &amp;lt;code&amp;gt;/install&amp;lt;/code&amp;gt; is public. You should solve the problem if warning occurs, instead of removing the warning! For this, create a file called &amp;lt;code&amp;gt;install.lock&amp;lt;/code&amp;gt; into Dolibarr root directory. This will stop the warning but also make the page &amp;lt;code&amp;gt;/install&amp;lt;/code&amp;gt; not possible to use, to protect your installation.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_REPEATCONTACTONEACHTAB&#039;&#039;&#039; ► If added and set to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, this adds contacts on all tabs, not only main tab.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_REPLACE_TRANS_xx_XX&#039;&#039;&#039; ► Where &amp;lt;code&amp;gt;xx_XX&amp;lt;/code&amp;gt; is language code. If value is &amp;lt;code&amp;gt;string1:newstring1;string2:newstring2&amp;lt;/code&amp;gt; then replace &amp;lt;code&amp;gt;string1&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;newstring1&amp;lt;/code&amp;gt; in all translation done for language &amp;lt;code&amp;gt;xx_XX&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND&#039;&#039;&#039; ► Change way of rounding total TTC lines, rounding first of after.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SERVER_TZ&#039;&#039;&#039; ► If you can&#039;t set the timezone of your PHP installation, set this constant. Better is to set it to UTC. In future, this constant will be forced to &#039;&amp;lt;code&amp;gt;UTC&amp;lt;/code&amp;gt;&#039; so PHP server timezone will not have effect anymore. Examples: &amp;lt;code&amp;gt;Europe/Paris&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;auto&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SEARCH_FORM_ON_HOME_AREAS&#039;&#039;&#039; ► Show the search form on home page areas for core modules (Removed after v5 due to global search combo) ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SEARCHFORM_SUPPLIER_INVOICE_DISABLED&#039;&#039;&#039; ► Disable the supplier invoice on the search form&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE&#039;&#039;&#039; ► If only one result is found, then setting this value to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; will take you direct to the item (default method).  Setting the value to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; will show the result in the list as a single result ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SERVICES_ARE_ECOMMERCE_200238EC&#039;&#039;&#039; ► If seller and buyer are in Europe and buyer is not a company, use the VAT of buying country.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_TUNING_INFO&#039;&#039;&#039; ► Add tuning information into javascript console. Better when xdebug is enabled.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_TECHNICAL_ID&#039;&#039;&#039; ► Show also technical IDs on elements cards or some lists (not supported everywhere).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOWDATABASENAMEINHELPPAGESLINK&#039;&#039;&#039; ► Show database name in upper help menu ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_ALTERNATE_TRANSLATION_FOR&#039;&#039;&#039; ► List of fields per object that need an alternate translation. Example: &amp;lt;code&amp;gt;MAIN_USE_ALTERNATE_TRANSLATION_FOR=societe:name,town;contact:firstname,lastname&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_HOURMIN_IN_DATE_RANGE&#039;&#039;&#039; ► On all entities lines (invoice, order, contract...), it is possible to add hour and minutes with date on fields &amp;quot;date start&amp;quot; and &amp;quot;date end&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_JQUERY_JEDITABLE&#039;&#039;&#039; ► Allow to update from screen, directly into database, some properties of elements (invoices, proposals, ...) using Ajax. This make response time faster, but avoid using this feature, because it bypasses some business actions (updates on other data that should be done consistently) and ignores business controls on data you saved. Consequently this feature breaks consistency of data and possibly the stability of the software.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_JQUERY_MULTISELECT&#039;&#039;&#039; ► Allow to use Ajax when a choice that require multiselect is used (for the moment only external modules uses select box with multiselect values). Set the value to the jQuery plugin name to use (multiselect, multiple-select, select2…). Setting it to any other value will result in unwanted side-effects and/or bugs.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_OLD_SEARCH_FORM&#039;&#039;&#039; ► Display the old search form in left menu.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VAT_DEFAULT_IF_AUTODETECT_FAILS&#039;&#039;&#039; ► Allow to force the VAT rate to a given value (instead of higher VAT rate of country) if the VAT rate of product was not defined.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_VAT_COMPANIES_IN_EEC_WITH_INVALID_VAT_ID_ARE_INDIVIDUAL&#039;&#039;&#039; ► If the buyer is a company that is in Europe but has no valid intracommunautary VAT ID, it is processed like if it is an individual, not a company. TODO: Must be implemented into accountancy module too instead of being set to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; systematically into accountancy module.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_VAT_OF_PRODUCT_FOR_INDIVIDUAL_CUSTOMER_OUT_OF_EEC&#039;&#039;&#039; ► For to use the default VAT of product for individual customers that are out E.E.C. (European Economic Community) ► (v7.0+). &#039;&#039;There is no reason to use this.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VIEW_LINE_NUMBER&#039;&#039;&#039; ► Shows a line number for each line of products/services at documents like proposal / order / invoice. Only on screen, not on PDF.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VIEW_LINE_NUMBER_IN_LIST&#039;&#039;&#039; ► Shows a line number in lists ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VOLUME_DEFAULT_ROUND&#039;&#039;&#039; ► Accuracy of volume (number of decimals)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VOLUME_DEFAULT_UNIT&#039;&#039;&#039; ► Default unit for weight (&amp;lt;code&amp;gt;0=kg&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-3=g&amp;lt;/code&amp;gt;, ...)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_WEIGHT_DEFAULT_ROUND&#039;&#039;&#039; ► Accuracy of weight (number of decimals)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_WEIGHT_DEFAULT_UNIT&#039;&#039;&#039; ► Default unit for weight (&amp;lt;code&amp;gt;0=kg&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-3=g&amp;lt;/code&amp;gt;, ...)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;USER_HIDE_INACTIVE_IN_COMBOBOX&#039;&#039;&#039; ► Disable display inactive users in combobox.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_PDF_THUMBS&#039;&#039;&#039; ► Disable thumbs PDF in case of imagick bug&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_KEEP_REF_CUSTOMER_ON_CLONING&#039;&#039;&#039; ► Keep the Customer Reference on cloned object (Propal/Invoice)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DONT_KEEP_NOTE_ON_CLONING&#039;&#039;&#039; ► Remove the object notes during cloning ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_SORT_FIELD&#039;&#039;&#039; ► Set the default sorting field on document page (name by default) ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_SORT_ORDER&#039;&#039;&#039; ► Set the default sorting order (ASC or DESC) on document page (ASC by default) ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_ZIPTOWN_DICTIONNARY&#039;&#039;&#039; ► Use dictionary ZIP for create card.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_TOP_MENU_SEARCH_DROPDOWN&#039;&#039;&#039; ► Show search in top menu with theme eldy ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PHONE_SEPAR&#039;&#039;&#039; ► Separ phone number other space ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;GRAPH_USE_FISCAL_YEAR&#039;&#039;&#039; ► Widgets uses fiscal year&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SHOW_SOCINFO_ON_PRINT&#039;&#039;&#039; ► Permit to add user company information on each printed document (when click on Dolibarr print button) ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FEATURES_LEVEL&#039;&#039;&#039; ► Level of features to show: &amp;lt;code&amp;gt;-1=stable+deprecated&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0=stable only (default)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1=stable+experimental&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2=stable+experimental+development&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_TECHNICAL_ID&#039;&#039;&#039; ► Show technical id for object.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HTTP_CONTENT_SECURITY_POLICY&#039;&#039;&#039; ► Allows you to fill in the content security rules ► (v6.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_ON_SEARCH_AND_LIST_GO_ON_CUSTOMER_OR_SUPPLIER_CARD&#039;&#039;&#039; ► Allow to change the link of the third party to customer/supplier card instead of contact card on List.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MODULE_SETUP_ON_LIST_BY_DEFAULT&#039;&#039;&#039; ► If set to &amp;quot;common&amp;quot; the setup module becomes list by defaut&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PAGESIZE_CHOICES&#039;&#039;&#039;  ► Configure select field to choose number of lines displayed on listing (&amp;lt;code&amp;gt;10:10,15:15,20:20,30:30,40:40,50:50,100:100,250:250,500:500,1000:1000,5000:5000&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_TOP_MENU_QUICKADD_DROPDOWN&#039;&#039;&#039; ► Add a dropdown menu with shortcuts to create new objects ► (v13.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EMAILCOLLECTOR_MAIL_WITHOUT_HEADER&#039;&#039;&#039; ► Remove the header stored by email collector ► (v13.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_VAT_OF_PRODUCT_FOR_COMPANIES_IN_EEC_WITH_INVALID_VAT_ID&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_OPTIMIZEFORTEXTBROWSER&#039;&#039;&#039; ► Optimise interface for a text only browser. This variable is set to 1 automatically if your browser is lynx or links&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NB_OF_YEAR_IN_WIDGET_GRAPH&#039;&#039;&#039; ► Set the number of years visible on some graph of some widgets (2 is default value)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_CREATEFROM_KEEP_LINE_ORIGIN_INFORMATION&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;API_DISABLE_LOGIN_API&#039;&#039;&#039; ►(v14.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LOGIN_BADCHARUNAUTHORIZED&#039;&#039;&#039; ► Add possibility to define bad character unauthorized into login name REGEX expression (Default value is @&amp;lt;&amp;gt;&amp;quot;\&#039;)  ► (v16.0)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_ALL_FILES_ON_DOCUMENT_TOOLTIP  ►&#039;&#039;&#039; Add all files visible from the object to be visible from the list of object.&lt;br /&gt;
&lt;br /&gt;
=Security Options=&lt;br /&gt;
&lt;br /&gt;
*MAIN_SECURITY_ANTI_SSRF_SERVER_IP ► Can set a complete list of IPs of server.&lt;br /&gt;
&lt;br /&gt;
*MAIN_SECURITY_CSRF_WITH_TOKEN ► Activate a second anti-CSRF protection on POST (so a POST from another web site can&#039;t be done). Note there is already a default protection using test on referrer. This second protection uses TOKEN on forms and is more powerful. ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_MODULES_FOR_EXTERNAL ► Limit available modules for external users. By default value is &#039;&amp;lt;code&amp;gt;facture,commande,contact,propal,projet,contrat,societe,ficheinter,expedition,agenda&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
*MAIN_ALLOW_SVG_FILES_AS_IMAGES ► Allow to use SVG file as image files. Warning: This may introduce security vulnerability (javascript can be embedded into SVG file).&lt;br /&gt;
&lt;br /&gt;
*MAIN_RESTRICTHTML_ONLY_VALID_HTML ► Refused parameter if value is not a valid HTML content.&lt;br /&gt;
&lt;br /&gt;
*MAIN_RESTRICTHTML_REMOVE_ALSO_BAD_ATTRIBUTES ► Sanitize also non standard attributes on HTML content.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Accountancy Module=&lt;br /&gt;
&lt;br /&gt;
*ACCOUNTANCY_COMBO_FOR_AUX ► Add graphic option for ACCOUNTANCY_COMBO_FOR_AUX. Having this option on may slow down and even freeze the accounting features if you have a very large number of thirdparties ► (v10.0)&lt;br /&gt;
*ACCOUNTING_DEFAULT_NOT_NOTIFIED_VALIDATION_DATE ► Avoid validating the lines with the accountancy export.(1= box unchecked by default / 0 = box checked by default) ► (v14.0)&lt;br /&gt;
*ACCOUNTING_DEFAULT_NOTIFIED_EXPORT_DATE ► Avoid flaging the lines as exported with the accountancy export.(1= box unchecked by default / 0 = box checked by default) ► (v15.0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Agenda Module=&lt;br /&gt;
&lt;br /&gt;
*AGENDA_ALL_CALENDARS ► Change the default view of calendar pages to see all the Agenda&#039;s (instead or yours only be default)&lt;br /&gt;
&lt;br /&gt;
*AGENDA_AUTOSET_END_DATE_WITH_DELTA_HOURS ► To automatically set end date of event to start date + delta on event creation page.&lt;br /&gt;
&lt;br /&gt;
*AGENDA_DISABLE_LOCATION ► Disable location field in action card  ► (&amp;gt;=v5.0)&lt;br /&gt;
&lt;br /&gt;
*AGENDA_MAX_EVENTS_DAY_VIEW ► Define the maximum number of visible entries for each day in agenda. Default value is 3. Value 0 means no limit.&lt;br /&gt;
&lt;br /&gt;
*AGENDA_USE_EVENT_TYPE ► Add a mandatory field &amp;quot;Type&amp;quot; when creating an event (&#039;&#039;&#039;&#039;&#039;deprecated&#039;&#039;&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
*MAIN_ADD_EVENT_ON_ELEMENT_CARD ► Allow to create an event from a document (proposal, order, invoice)&lt;br /&gt;
&lt;br /&gt;
*AGENDA_SUPPORT_PRIORITY_IN_EVENTS ► Allow to have priorities in events ► (&amp;gt;=v13.0)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Bank Module=&lt;br /&gt;
&lt;br /&gt;
*BANK_CAN_RECONCILIATE_CASHACCOUNT ► Can reconciliate cash accounts ► (v3.8)&lt;br /&gt;
&lt;br /&gt;
*BANK_DISABLE_CHECK_DEPOSIT ► Disable check deposit feature&lt;br /&gt;
&lt;br /&gt;
*BANK_ASK_PAYMENT_BANK_DURING_ORDER ► Ask bank account during creation of an order&lt;br /&gt;
&lt;br /&gt;
*BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL ► Ask bank account during creation of a proposal&lt;br /&gt;
&lt;br /&gt;
*BANK_USE_OLD_VARIOUS_PAYMENT ► To allow to enter miscellaneous payments (not covered by other modules) using old method. &#039;&#039;&#039;&#039;&#039;Deprecated&#039;&#039;&#039;&#039;&#039;. Entering various payment is preferred ► (&amp;lt;=v12.0).&lt;br /&gt;
*MAIN_IBAN_IS_NEVER_MANDATORY ► IBAN and BIC informations not mandatory. (V15)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=BOM and MO Module=&lt;br /&gt;
&lt;br /&gt;
*ALLOW_USE_KITS_INTO_BOM_AND_MO&lt;br /&gt;
*BOM_SUB_BOM ►Allow to add a BOM in another BOM►(v16.0)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Inalterable Log Module=&lt;br /&gt;
&lt;br /&gt;
*BLOCKEDLOG_ADD_ACTIONS_SUPPORTED ► Can complete list of triggered action that are logged&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Contracts=&lt;br /&gt;
&lt;br /&gt;
*CONTRACT_SUPPORT_PRODUCTS ► Products are also suggested into module contract.&lt;br /&gt;
*&lt;br /&gt;
*CONTRACT_ALLOW_EXTERNAL_DOWNLOAD&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Cron module=&lt;br /&gt;
&lt;br /&gt;
*CRON_DISABLE_KEY_CHANGE ► When you provide an instance to a customer, you probably also add an entry in the cron of this user so Dolibarr batch and scheduler can work correctly. For security purpose, it may have a security key that is inside the command line into the cron entry and this entry must match the value defined into Dolibarr setup (setup of module &#039;Scheduled Jobs&#039;). Because, a customer of a Saas platform will probably have no access to edit the cron file, it is also import that he has no way to edit the key into the Dolibarr setup, so the key in the cron command line will always match the key in Dolibarr setup, and the Dolibarr batches will executed without security errors. To be sure, the customer does not change the value, you can set this constant to 1 into the table [[Table_llx_const]].&lt;br /&gt;
&lt;br /&gt;
*CRON_DISABLE_TUTORIAL_CRON ► Disable the tutorial about how to install the cron script (on a SaaS hosting, this should be done by the web hosting provider)&lt;br /&gt;
&lt;br /&gt;
*CRON_WARNING_DELAY_HOURS ► Set this value to the frequency set for the cron script (so a warning will be shown to user to warn it about max frequency of its scheduled jobs)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Direct Debit Orders=&lt;br /&gt;
&lt;br /&gt;
*WITHDRAWAL_ALLOW_ANY_INVOICE_STATUS ► If this option is set, all invoices status (even already paid) may appear on the list of invoices qualified for a direct debit payment. This is the list of invoices with a payment request done, and not linked to a direct debit payment. By default, only &amp;quot;unpayed&amp;quot; invoices are used to avoid to pay twice the same invoice.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Donation Module=&lt;br /&gt;
&lt;br /&gt;
*DONATION_USE_THIRDPARTIES ► If this option is set, a thirdparty field appear on donation forms.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
=Email and SMS=&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAILFORM_DISABLE_ENTERKEY ► Activate javascript code to disable the enter key in the MAIL form. ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*MAIL_PREFIX_FOR_EMAIL_ID ► Prefix for the mails ID. Default value is &amp;lt;code&amp;gt;$_SERVER[&amp;quot;SERVER_NAME&amp;quot;]&amp;lt;/code&amp;gt; ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_DEBUG ► Write content with header of last mail into file &amp;lt;code&amp;gt;dolibarr_mail.log&amp;lt;/code&amp;gt; into directory &amp;lt;code&amp;gt;dolibarr_main_data_root&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_SMS_DEBUG ► Write content of SMS sent into file &amp;lt;code&amp;gt;dolibarr_sms.log&amp;lt;/code&amp;gt; into directory &amp;lt;code&amp;gt;dolibarr_main_data_root&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_ALLOW_SENDMAIL_F ► On Linux or BSD system, PHP email function use the command sendmail local to server. In some cases, the sender email must be provided on command line of sendmail with option &amp;lt;code&amp;gt;-f&amp;lt;/code&amp;gt;. This option is here to ask Dolibarr to call the function mail of PHP by adding value for the option &amp;lt;code&amp;gt;-f&amp;lt;/code&amp;gt;. Note that in most cases, even with sendmail, sender email is correctly managed as it is added in the email technical header. This option is here only for rare setup of sendmail that ask the -f option to be mandatory or for sendmail setup that does not use by default the Return-path of header email to define the sender (with this option, the return-path will be provided also on command line and not lost by sendmail).&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_SENDMAIL_FORCE_BA ► On Linux or BSD system, PHP email function use the command sendmail local to server. In some case, we want to recipient to be provided to sendmail into the email content instead of its command line parameter. For this we must add the -ba parameter to sendmail. This option asks PHP to provide this parameter when sending a mail. Note that another solution is to edit the mail.force_extra_parameters=-ba into &amp;lt;code&amp;gt;php.ini&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_NO_FULL_EMAIL ► Recipient email and sender are cleaned to be on form &amp;quot;&amp;lt;email&amp;gt;&amp;quot; instead of &amp;quot;Name &amp;lt;email&amp;gt;&amp;quot;. This might solve problem of compatibility with very old mailers.&lt;br /&gt;
&lt;br /&gt;
*MAIN_FIX_FOR_BUGGED_MTA ► Some MTA agent are bugged and add some CR chars each time they saw a LF. Because Dolibarr emails are forged to be already cleaned, if MTA agent do that, you will send an email with two CR chars. This may result in having recipient not able to read your email. To fix this, add this constant to 1. Dolibarr will then create an email that is not RFC compliant but because the MTA agent is bugged, the email will be modified and become correct during sending, solving the problem of bad email received. Add this constant if your recipient experience problems when opening email for example users using webmail of &amp;lt;code&amp;gt;orange.fr&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;hotmail.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_DO_NOT_USE_SIGN ► Do not add user signature at end of suggested pre-defined email&lt;br /&gt;
&lt;br /&gt;
*MAIL_FORCE_DELIVERY_RECEIPT_INVOICE ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Invoice&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*MAIL_FORCE_DELIVERY_RECEIPT_ORDER ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Order&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*MAIL_FORCE_DELIVERY_RECEIPT_PROPAL ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Proposal&#039;&#039; module.&lt;br /&gt;
*MAIL_FORCE_DELIVERY_RECEIPT_SUPPLIER_PROPOSAL ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Supplier Proposal&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*MAIN_EMAIL_USECCC ► 1 = Show field BCC into email forms, If email = Show BCC prefilled with email.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_AUTOCOPY_PROPOSAL_TO, MAIN_MAIL_AUTOCOPY_ORDER_TO, MAIN_MAIL_AUTOCOPY_INVOICE_TO ► Email to use as a BCC recipient when sending email for proposal, order or invoice. You can make this value visible by setting MAIN_EMAIL_USECCC (to 1 or to another email, see previous point)&lt;br /&gt;
&lt;br /&gt;
*MAIN_EMAIL_ADD_TRACK_ID ► When value is 1 (this is also default value if option is not set): The record &amp;quot;Message-id&amp;quot; added into smtp header includes a tracking id to define where the email was sent from. When value is 2: you send an email from third party card, the sender email is completed with the email source tracking string  &amp;quot;+thiXXX&amp;quot; on email (your email will be sent with the &amp;quot;From&amp;quot; that is myname+thi123@mycompany.com). So when user receiving email will make &amp;quot;Answer&amp;quot;, email will be sent to myname@mycompany.com but with the tracking id included (into header or into target email), allowing you to know to which third party or object, the email exchange is related to.&lt;br /&gt;
&lt;br /&gt;
*MAIL_MAX_NB_OF_RECIPIENTS_IN_SAME_EMAIL ► Restrict sending of 1 email message to &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; recipients for same email message (x for To: + CC: + BCC:). If not defined, value is &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;. Required to fight against spamming that include 1000 recipients in 1 message. Note that MAIL_MAX_NB_OF_RECIPIENTS_TO_IN_SAME_EMAIL, MAIL_MAX_NB_OF_RECIPIENTS_CC_IN_SAME_EMAIL and MAIL_MAX_NB_OF_RECIPIENTS_BCC_IN_SAME_EMAIL are also available.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_FORCE_CONTENT_TYPE_TO_HTML ► Force to send all email (event with text only content) as HTML formatted email.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_USE_MULTI_PART ► Forge email content using an alternate text part ► (for 5.0.2+). By default with 6.0+&lt;br /&gt;
*MAIN_INFO_SOCIETE_MAIL_ALIASES ► add address aliases for the from field on mail. Set his value with &amp;quot;Firstname Name &amp;lt;firstname.lastname@mydomain.tld, Otherfirstname OtherlastName &amp;lt;othermail@mydomain.tld&amp;gt;,...&amp;quot; ► (v5.0.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_ADD_INLINE_IMAGES_IF_IN_MEDIAS ► If images were stored into the medias directory from CKEditor, then images into emails are replaced with &amp;quot;inline content&amp;quot;. This may increase seriously risk of being detected as SPAM.&lt;br /&gt;
&lt;br /&gt;
*MAIN_COPY_FILE_IN_EVENT_AUTO ► Add attachement document on event auto generated by sending email from dolibarr. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_EXTERNAL_SMTP_CLIENT_IP_ADDRESS ► (A better name of this option should be MAIN_EXTERNAL_MAIL_CLIENT_IP_ADDRESS). Set here the list of IPs where your Dolibarr instances are hosted. So when your customer go into the setup area of email:&lt;br /&gt;
**If he chose mail method, a message will explain him how to setup its SPF record for its email domain (showing the list of IP). This is to avoid to have its emails, sent from its Dolibarr instance, fails due to strict antispam rule of some emailing servers.&lt;br /&gt;
**If he chose smtp method, a message will explain him the list of IP he can use if there is restriction on IP by the SMTP agent. If you also need to add a message to help SPF setup, see option MAIN_EXTERNAL_SMTP_SPF_STRING_TO_ADD.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_ENABLED_USER_DEST_SELECT ► Show also internal users into list of recipients of email in email sending form ► (v8.0+)&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Emailing Module=&lt;br /&gt;
&lt;br /&gt;
*MAILING_PREFIX_FOR_EMAIL_ID ► Set the value that will be used to compose the &amp;quot;Email ID&amp;quot; into email headers. If you set this value to &#039;&amp;lt;code&amp;gt;SERVER_NAME&amp;lt;/code&amp;gt;&#039;, the virtual host of web server will be used. By default, this is not defined, so a hash key, unique to each instance, is used.&lt;br /&gt;
&lt;br /&gt;
*MAILING_NO_USING_PHPMAIL ► If set, the module emailing can&#039;t be used with mail setup of &amp;quot;phpmail&amp;quot;. Using a thirdparty SMTP server is required. You can complete warning message by adding an email to contact for setup help with constant &amp;lt;code&amp;gt;MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS ► Contains the email of contact to show into the message visible to a user when he try to use emailing module without SMTP server and if option MAILING_NO_USING_PHPMAIL is set to on.&lt;br /&gt;
&lt;br /&gt;
*MAILING_LIMIT_WARNING_PHPMAIL ► Show a warning message (var contains the &#039;&#039;&#039;message to show&#039;&#039;&#039;, or &#039;&#039;&#039;translation key&#039;&#039;&#039;) on emailing send form if setup is on &amp;quot;phpmail&amp;quot;. Note: The application always try to translation the message considering the message is a translation key, before showing the translation or message if translation was not found.&lt;br /&gt;
&lt;br /&gt;
*MAILING_LIMIT_WARNING_NOPHPMAIL ► Show a warning message (var contains the &#039;&#039;&#039;message to show&#039;&#039;&#039;, or &#039;&#039;&#039;translation key&#039;&#039;&#039;) on emailing send form if setup is something else than &amp;quot;phpmail&amp;quot;. Note: The application always try to translation the message considering the message is a translation key, before showing the translation or message if translation was not found.&lt;br /&gt;
*EMAILING_USE_ADVANCED_SELECTOR ► Enable the advanced selector for recipients.&lt;br /&gt;
&lt;br /&gt;
*MAILING_LIMIT_SENDBYWEB ► Restrict number of emails you can send in same sending session with emailing module from GUI. The value &amp;quot;&amp;lt;code&amp;gt;dolibarr_mailing_limit_sendbyweb&amp;lt;/code&amp;gt;&amp;quot; if defined into config file is used in priority for this limit. A negative value means, sending by web is forbidden.&lt;br /&gt;
&lt;br /&gt;
*MAILING_LIMIT_SENDBYCLI ► Restrict number of emails you can send in same sending session with emailing module from CLI script. The value &amp;quot;&amp;lt;code&amp;gt;dolibarr_mailing_limit_sendbycli&amp;lt;/code&amp;gt;&amp;quot; if defined into config file is used in priority for this limit.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Expense Report=&lt;br /&gt;
&lt;br /&gt;
*EXPENSEREPORT_ALLOW_OVERLAPPING_PERIODS ► Can enter several expense reports on same or overlapping date periods. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*EXPENSEREPORT_OVERRIDE_VAT ► Setting this constant to 1 will allow expense reports to show VAT even if the global VAT setting is off ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*EXPENSEREPORT_USE_OLD_NUMBERING_RULE ► The module Expense Report use numbering rules that you can setup (like other modules do). If you need to keep the hard-coded numbering rule of expenses report used in v6.0 set this constant to 1 ► (&amp;gt;=v7.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_EXPENSE_IK ► This feature allows you to set index kilometers against a mileage index for different types of vehicles. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_EXPENSE_RULE ► This feature allows you to set a variety of rules per user/group/all so they can only create reports within their limits. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Export Module=&lt;br /&gt;
&lt;br /&gt;
*EXPORT_CSV_SEPARATOR_TO_USE ► String value to use as default separator to delimit fields of exported files (by default Dolibarr uses &amp;quot;&amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;&amp;quot;). Example: EXPORT_CSV_SEPARATOR_TO_USE=&amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*EXPORT_CSV_FORCE_CHARSET ► Choose the charset used in the output file built by the CSV exporter. By default it is ISO-8859-1. Example: EXPORT_CSV_FORCE_CHARSET= &amp;lt;code&amp;gt;utf-8&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*EXPORTTOOL_CATEGORIES ► Can export categories (several lines) into one column with the &amp;quot;product export profile&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*USE_STRICT_CSV_RULES ► Use strict/real CSV format for export. Do not clean/replace CR+LF with &#039;\n&#039; but quote them using the escaping CSV char (&amp;lt;code&amp;gt;&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*EXPORTS_SHARE_MODELS  ► Share export models between users.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Foundation Module=&lt;br /&gt;
&lt;br /&gt;
*MEMBER_URL_REDIRECT_SUBSCRIPTION ► Link called and shown when a member account is autocreated in member module by a guest user.&lt;br /&gt;
&lt;br /&gt;
*MEMBER_EXT_URL_SUBSCRIPTION_INFO ► Link of external page pointed by the &amp;quot;Show here&amp;quot; link added in front of payment cell, into the page to make online subscription.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Interventions Module=&lt;br /&gt;
&lt;br /&gt;
*FICHINTER_CLASSIFY_BILLED► Allow to classify an intervention card as &amp;quot;Billed&amp;quot;. This add also trigger &amp;lt;code&amp;gt;FICHINTER_CLASSIFY_BILLED&amp;lt;/code&amp;gt; into list of possible automatic event into agenda.&lt;br /&gt;
&lt;br /&gt;
*FICHINTER_DISABLE_DETAILS► Disable entry of details line on intervention. Can validate with no line.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Invoice Module=&lt;br /&gt;
&lt;br /&gt;
*MAIN_DEPOSIT_MULTI_TVA ► In deposits invoice, creates one line per VAT rate from the origin document ► (6.0)&lt;br /&gt;
&lt;br /&gt;
*INVOICE_ALLOW_REUSE_OF_CREDIT_WHEN_PARTIALLY_REFUNDED* ► If a credit note was partially refunded (a refund was sent to the customer), with common situation, we wait to have the remain refunded too. With this option, it is possible to convert the remain of invoice into a discount to reuse it into another invoice.&lt;br /&gt;
&lt;br /&gt;
*SUUPLIER_INVOICE_ALLOW_REUSE_OF_CREDIT_WHEN_PARTIALLY_REFUNDED* ► See INVOICE_ALLOW_REUSE_OF_CREDIT_WHEN_PARTIALLY_REFUNDED, but for supplier credit notes.&lt;br /&gt;
&lt;br /&gt;
*INVOICE_CAN_ALWAYS_BE_EDITED ► Allow to edit invoices even if payment was started. Note: If the module &amp;quot;BlockedLog&amp;quot; is active (required in some countries for legal reasons), this will not change content of archived logs tracked by this module. By definition there is no way to change or remove archived records. It will just update data in your application and a new record to track your change into the read-only archive log.&lt;br /&gt;
&lt;br /&gt;
*INVOICE_CAN_ALWAYS_BE_REMOVED ► Allow to always delete invoices (even if invoice is not last one). Note: If the module &amp;quot;BlockedLog&amp;quot; is active (required by some countries for legal reason), this will not change content of archived logs tracked by this module. By definition there is no way to change or remove archived records. It will just update data in your application and a new record to track your change into the read-only archive log.&lt;br /&gt;
&lt;br /&gt;
*INVOICE_CAN_NEVER_BE_REMOVED ► Never allow to delete invoices (except draft invoices).&lt;br /&gt;
&lt;br /&gt;
*INVOICE_POSITIVE_CREDIT_NOTE ► All amounts on PDF credit notes are positive.&lt;br /&gt;
&lt;br /&gt;
*FACTURE_DEPOSITS_ARE_JUST_PAYMENTS ► An old way to create initial payment. This treats deposit invoices as a special case and not as legal deposit invoice. Deposit invoices don&#039;t get counted on turnover. They are then applied as a payment, like a discount, on the final invoice. By default, when you include the deposit into draft of final invoice, the amount of final invoice is reduced. With this option, final amount is not reduced but a payment is registered. WARNING: In a lot of european countries, using this option is not allowed.&lt;br /&gt;
&lt;br /&gt;
*FACTURE_SENDBYEMAIL_FOR_ALL_STATUS ► Can send invoice by email to customer even if invoice has status &amp;quot;draft&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*INVOICE_CREDIT_NOTE_STANDALONE ► Start implementation to allow a credit note even without invoice (dangerous) ► (v3.9)&lt;br /&gt;
&lt;br /&gt;
*INVOICE_USE_SITUATION ► Enable the &amp;quot;situation invoice&amp;quot; feature. Warning, this feature is bugged and may not be compatible with the final version of the feature once the bug will be solved. Also, using the double-entry accountancy module is not possible when this option is on (due to the same design problem).&lt;br /&gt;
&lt;br /&gt;
*INVOICE_USE_SITUATION_CREDIT_NOTE ► Enable the &amp;quot;situation credit note&amp;quot; feature (need &amp;lt;code&amp;gt;INVOICE_USE_SITUATION&amp;lt;/code&amp;gt;) ► (v8.0)&lt;br /&gt;
*INVOICE_USE_RETAINED_WARRANTY ► Enable the retained warranty on invoice ► (v14.0)&lt;br /&gt;
&lt;br /&gt;
*INVOICE_DISABLE_DEPOSIT ► Disable deposit invoices&lt;br /&gt;
&lt;br /&gt;
*INVOICE_DISABLE_REPLACEMENT ► Disable replacement invoices&lt;br /&gt;
&lt;br /&gt;
*INVOICE_DISABLE_CREDIT_NOTE ► Disable credit notes&lt;br /&gt;
&lt;br /&gt;
*INVOICE_ADD_ZATCA_QR_CODE ► Add a QR code with format ZATCA (for Saudi Arabia) on PDF of invoices.&lt;br /&gt;
&lt;br /&gt;
Note: To decode a QR image of a ZATCA code: https://www.onlinebarcodereader.com/. You can also use the mobile application https://play.google.com/store/apps/details?id=com.posbankbh.einvoiceqrreader&amp;amp;gl=FR&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT ► See PDF option&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_COLUMN ► See PDF options&lt;br /&gt;
&lt;br /&gt;
*WORKFLOW_BILL_ON_SHIPMENT ► Change label of button with suitable label when you need to create invoice on shipments&lt;br /&gt;
&lt;br /&gt;
*INVOICE_ALLOW_EXTERNAL_DOWNLOAD ► When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. Use the tag __DIRECTDOWNLOAD_URL_INVOICE__ in email template to insert it. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*INVOICE_POINTOFTAX_DATE ► Add Point of Tax Date on invoices for country-specific legality reasons ► (v4.0+)&lt;br /&gt;
*FACTURE_ENABLE_NEGATIVE ► Can validate an invoice when amount is negative&lt;br /&gt;
&lt;br /&gt;
*FACTURE_ENABLE_NEGATIVE_LINES ► Allows to add negative lines to an invoice ► (v8.0.2+)&lt;br /&gt;
&lt;br /&gt;
*INVOICE_USE_DEFAULT_DOCUMENT ► Allow user to select a default invoice documents models according to invoice type. On invoice create page, the model is dynamically changed on invoice type selection. ► (v9.0+)&lt;br /&gt;
&lt;br /&gt;
*FACTURE_REUSE_NOTES_ON_CREATE_FROM ► Reuse the Public Note and Private note of the previous object (Proposal,...) when creating the bill.&lt;br /&gt;
*FACTUREFOURN_REUSE_NOTES_ON_CREATE_FROM ► Reuse the Public Note and Private note of the previous object when creating the supplier bill ► (V13.0)&lt;br /&gt;
*MAIN_SHOW_FACNUMBER_IN_DISCOUNT_LIST ► Display the reference of credit notes in discount list when creating the bill.&lt;br /&gt;
*INVOICE_ALLOW_FREE_REF ► Capability to change reference of an invoice. This will be possible as long as the invoice has the status “Draft” and only if your country is not in Europe(V11)&lt;br /&gt;
&lt;br /&gt;
*INVOICE_DISALLOW_REOPEN&lt;br /&gt;
&lt;br /&gt;
*INVOICE_MAX_FUTURE_DELAY ► Numbers of seconds allowed for billing in the future ► (V14.0)&lt;br /&gt;
*INVOICE_AUTO_NEXT_MONTH_ON_LINES ► Increase start date and end date by one month, if an invoice line is a clone of a time based service AND if this services started on the first day of month and ended on the last day of month ► (V13.0.1)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Leave=&lt;br /&gt;
&lt;br /&gt;
*MAIN_NON_WORKING_DAYS_INCLUDE_SATURDAY ► Set this value to 0 if you want to have the saturday as a working day&lt;br /&gt;
*MAIN_NON_WORKING_DAYS_INCLUDE_SUNDAY ► Set this value to 0 if you want to have the sunday as a working day&lt;br /&gt;
&lt;br /&gt;
=Look or Theme=&lt;br /&gt;
&lt;br /&gt;
*MAIN_FAVICON_URL ► favicon url&lt;br /&gt;
&lt;br /&gt;
*MAIN_EASTER_EGG_COMMITSTRIP ► Show a comic image from the CommitStrip website. Images are refreshed daily. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_STATUS_USES_CSS ►  Change status design using new style ► (v10.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_INCLUDE_GLOBAL_STATS_IN_OPENED_DASHBOARD ► This conf will auto remove global stats box item if there are already in the new dashboard of opened elements and keep displayed stats on the opened item box (not only on mouse over) ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_TOP_MENU_SEARCH_DROPDOWN ► Actually only for eldy theme, this conf move search input  to top menu and use new design too ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*THEME_AGRESSIVENESS_RATIO ► This conf can be used to increase/decrease agressiveness of colors. Value 0 is medium, value is between -100 (light grey colors) to +100 (very flashy colors) ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*THEME_SHOW_BORDER_ON_INPUT&lt;br /&gt;
*MAIN_DISABLE_GLOBAL_WORKBOARD ► Hide the workboard of the main page ► (v13.0+)&lt;br /&gt;
*MAIN_DISABLE_GLOBAL_BOXSTATS ► Hide the Statistic Box of the main page&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=MultiCurrency=&lt;br /&gt;
&lt;br /&gt;
*MAIN_MULTICURRENCY_ALLOW_SYNCHRONIZATION ► Enable CurrencyLayer API synchronization&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Order Module=&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_PROPAL_REFCLIENT_FOR_ORDER =&amp;gt; Copy customer reference from proposal to order. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*ORDER_REQUIRE_SOURCE =&amp;gt; Make the input field &amp;quot;Source of order&amp;quot; mandatory.&lt;br /&gt;
&lt;br /&gt;
*ORDER_VALID_AFTER_CLOSE_PROPAL =&amp;gt; When an order is created on a proposal close, the order is directly defined with status &amp;quot;Validated&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*ORDER_ALLOW_EXTERNAL_DOWNLOAD =&amp;gt; When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*ORDER_ENABLE_NEGATIVE =&amp;gt; Can validate an order when amount is negative&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_PROPAGATE_EXTRAFIELDS_TO_ORDER =&amp;gt; Copy also extrafields from thirdparty to order (if name match). ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=PDF Options=&lt;br /&gt;
&lt;br /&gt;
*MAIN_ADD_PDF_BACKGROUND ► Define this constant with short name of a PDF file (example &amp;quot;&amp;lt;code&amp;gt;mypdf.pdf&amp;lt;/code&amp;gt;&amp;quot;) that must be saved into directory &amp;quot;&amp;lt;code&amp;gt;documents/mycompany&amp;lt;/code&amp;gt;&amp;quot;. This will add PDF as a background of some of your generated PDF files (proposals,invoices,orders). If you need to concat PDF, see instead [[Module Concat PDF]].&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_FORCE_SAVEAS ► If your browser always asks to save downloaded files on disk (like PDF), try this this option. File may be displayed directly in your browser.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_PDF_AUTOUPDATE ► Disable automatic generation of PDF each time we add/update/delete a product line (we can still build document by clicking on &amp;quot;Generate&amp;quot;). This option may increase interface speed on servers with low CPU.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_PDF_COMPRESSION ► Disable PDF compression.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DOCUMENTS_WITH_PICTURE_WIDTH ► Can change size of picture when hidden option &amp;lt;code&amp;gt;MAIN_GENERATE_PROPOSALS_WITH_PICTURE&amp;lt;/code&amp;gt; is used. By default value is &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS ► Adding the company address at the bottom of the page. Disabled by default&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_PROPOSALS_WITH_PICTURE ► Include the first image of the product into the line of the generated PDF for customer proposals.&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_INVOICES_WITH_PICTURE ► Include the first image of the product into the line of the generated PDF for customer invoices.&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_SUPPLIER_PROPOSAL_WITH_PICTURE ► Include the first image of the product into the line of the generated PDF for supplier proposals ► (v5.0.3+)&lt;br /&gt;
*MAIN_GENERATE_SUPPLIER_ORDER_WITH_PICTURE ► Include the first image of the product into the line of the generated PDF for supplier orders&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT ► Disable VAT on generated documents. like for an association. (Works with crabe template)&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_COLUMN ► Hide column with VAT information but only column not total.&lt;br /&gt;
&lt;br /&gt;
*MAIN_INVERT_SENDER_RECIPIENT ► Invert sender and recipient in some PDF. Note: This option is set automatically if country if Germany.&lt;br /&gt;
&lt;br /&gt;
*MAIN_ODT_AS_PDF ► Activate ODT to PDF conversion. Value can be &amp;quot;libreoffice&amp;quot; or &amp;quot;unoconv&amp;quot;. Do not use value &#039;&#039;&#039;&amp;lt;nowiki/&amp;gt;&#039;jodconverter&#039;&amp;lt;nowiki/&amp;gt;&#039;&#039;&#039; any more, as it is declared deprecated and partly not functional, use value &#039;&#039;&#039;&amp;lt;nowiki/&amp;gt;&#039;libreoffice&#039;&#039;&#039;&#039; instead, it requires only &#039;&#039;&#039;soffice&#039;&#039;&#039; (OpenOffice or LibreOffice) installed on server (use &#039;&#039;&#039;apt install soffice libreoffice-common libreoffice-writer&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
If you got this error: javaldx failed! Warning: failed to read path from javaldx with no return to prompt when running soffice --headless -env:UserInstallation=file:&amp;quot;/tmp&amp;quot; --convert-to pdf --outdir xxx ./yyy.odt, check that directory defined into env:UserInstallation parameters exists and is writeable.&lt;br /&gt;
&lt;br /&gt;
You may also have a look at this page if your server is on Windows: [[Générer automatiquement des documents PDF à partir de fichier ODT avec Doliwamp]]&lt;br /&gt;
&lt;br /&gt;
*MAIN_ODT_AS_PDF_DEL_SOURCE ► For ODT generation. If set, then initial behaviour is conserved but ODT file is removed when option to convert it as PDF (see previous) is on. Disabled by default&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_FORCE_FONT ► To ignore font defined into language file and force usage of a particular font. For example &amp;quot;&amp;lt;code&amp;gt;DejaVuSans&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_FORCE_FONT_SIZE ► To force size of font (by default 10). For example &amp;quot;&amp;lt;code&amp;gt;12&amp;lt;/code&amp;gt;&amp;quot; ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_FREETEXT_HEIGHT ► Change height of space reserved to output the free text.&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_TITLE_BACKGROUND_COLOR ► Can define a background color onto title line. Example: &amp;lt;code&amp;gt;220,220,200&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_USE_LARGE_LOGO ► Use the original logo with its higher resolution into the PDF instead of the small thumb. This may lead to very very large PDF !&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_BACKGROUND_ON_PDF ► Define this constant with short name of an image (example &amp;quot;&amp;lt;code&amp;gt;myimage.jpg&amp;lt;/code&amp;gt;&amp;quot;) that must be saved into directory &amp;quot;&amp;lt;code&amp;gt;documents/mycompany/logos&amp;lt;/code&amp;gt;&amp;quot;. This will add this background image into your generated PDF files.&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_COMPANY_NAME_OF_CONTACT ► Use contact name and information rather than company&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_ADDALSOTARGETDETAILS ► If 1, add details of reipient on generated PDFs (email, fax, url and phone). Can be useful in cases where a printed order/invoice etc is given to a delivery driver/courier etc.&lt;br /&gt;
&lt;br /&gt;
*MAIN_TVAINTRA_IN_SOURCE_ADDRESS ► Show VAT N° in source address of PDF to comply with legalities in certain countries. Note that VAT number should be already visible in footer of page ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING ► Add optional esign field in pdf propal ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID1_IN_SOURCE_ADDRESS ► Show Professional ID 1 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID2_IN_SOURCE_ADDRESS ► Show Professional ID 2 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID3_IN_SOURCE_ADDRESS ► Show Professional ID 3 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID4_IN_SOURCE_ADDRESS ► Show Professional ID 4 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID5_IN_SOURCE_ADDRESS ► Show Professional ID 5 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID6_IN_SOURCE_ADDRESS ► Show Professional ID 6 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*PDF_BANK_HIDE_NUMBER_SHOW_ONLY_BICIBAN ► Hide bank number (&amp;quot;code banque/guichet/compte&amp;quot; for France, &amp;quot;sort code/account number&amp;quot; for GB, ...) and keep only BIC/IBAN on PDF.&lt;br /&gt;
&lt;br /&gt;
*PDF_BOLD_PRODUCT_REF_AND_PERIOD ► Add more visibility (bold) on product ref and period of service in desc. ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*PDF_HIDE_PRODUCT_REF_IN_SUPPLIER_LINES ► Modify the use/position of Supplier Ref/Internal Ref with the item Label (name) on PDF documents.&lt;br /&gt;
&lt;br /&gt;
Default (constant not set or Value &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;): Internal ref followed by supplier ref in brackets.&amp;quot;COMPANY-REF-001 (Vendor SKU SUPPLIER-REF-001) - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Value &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;: Supplier ref only eg.&amp;quot;SUPPLIER-REF-001 - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Value &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;: Supplier ref followed by internal ref in brackets. eg.&amp;quot;SUPPLIER-REF-001 (InternalRef COMPANY-REF-001) - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME ► Include alternative/alias name into name on PDF.&lt;br /&gt;
&lt;br /&gt;
*PDF_SECURITY_ENCRYPTION ► Encrypt PDF produced by dolibarr ► (v?) . See additional parameters :PDF_SECURITY_ENCRYPTION_RIGHTS (block &#039;modify&#039; or &#039;copy&#039;) - PDF_SECURITY_ENCRYPTION_USERPASS - PDF_SECURITY_ENCRYPTION_OWNERPASS (random if not specified) - PDF_SECURITY_ENCRYPTION_STRENGTH (0 = RC4 40 bit; 1 = RC4 128 bit; 2 = AES 128 bit; 3 = AES 256 bit) - PDF_SECURITY_ENCRYPTION_PUBKEYS Array of recipients containing public-key certificates (&#039;c&#039;) and permissions (&#039;p&#039;) - For example: array(array(&#039;c&#039; =&amp;gt; &#039;file://../examples/data/cert/tcpdf.crt&#039;, &#039;p&#039; =&amp;gt; array(&#039;print&#039;)))&lt;br /&gt;
&lt;br /&gt;
*PDF_SHOW_PROJECT ► Show project onto PDF (supported on supplier order only for the moment)&lt;br /&gt;
&lt;br /&gt;
*PDF_USE_1A ► PDF files produced by dolibarr respect PDF/A standard ► (v?)&lt;br /&gt;
&lt;br /&gt;
*PDF_USE_ALSO_LANGUAGE_CODE ► The value of this constant must be a language code (&#039;fr_FR&#039;, &#039;en_US&#039;, &#039;sa_SA&#039;, ...). If set, the PDF document will contains both language (default and the one defined by the constant).&lt;br /&gt;
*DOC_SHOW_FIRST_SALES_REP ► Show the sales representant on header (at least on propal azur and rubis template)&lt;br /&gt;
*MAIN_PDF_DASH_BETWEEN_LINES&lt;br /&gt;
*&lt;br /&gt;
*SHOW_SUBPRODUCT_REF_IN_PDF&lt;br /&gt;
*PDF_HIDE_PRODUCT_LABEL_IN_SUPPLIER_LINES ► hide product label in supplier order lines (V15+)&lt;br /&gt;
*SHIPPING_PDF_DISPLAY_AMOUNT_HT ► Show HT unit price and HT total price for lines of PDF shipment&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Point of Sale (POS)=&lt;br /&gt;
&lt;br /&gt;
*CASHDESK_SHOW_KEYPAD ► Show a mouse key pad into the &#039;Simple Point of Sale&#039; module.&lt;br /&gt;
&lt;br /&gt;
*POS_ADDON ► Set this value to an existing numbering module rule (for example &#039;&amp;lt;code&amp;gt;mod_facture_terre&amp;lt;/code&amp;gt;&#039;, &#039;&amp;lt;code&amp;gt;mod_facture_mars&amp;lt;/code&amp;gt;&#039;, ...) to force the numbering module to use for invoice ref definition when invoice is created by the POS. For example setting value &amp;lt;code&amp;gt;POS_ADDON&amp;lt;/code&amp;gt; to &#039;&amp;lt;code&amp;gt;mod_facture_terre&amp;lt;/code&amp;gt;&#039; will use the numbering module &#039;&amp;lt;code&amp;gt;terre&amp;lt;/code&amp;gt;&#039; for invoice generated from POS, whatever is the numbering rule defined into invoice module setup (you can also use POS_NUMBERING_TERRE_FORCE_PREFIX and POS_NUMBERING_MARS_FORCE_PREFIX variable to change the prefix used).&lt;br /&gt;
&lt;br /&gt;
*TAKEPOS_ENABLE_SUMUP ► Enable the compatibility of TakePOS with the card reader terminal [https://SumUp.fr SumUp]&lt;br /&gt;
*TAKEPOS_CAN_FORCE_BANK_ACCOUNT_DURING_PAYMENT ► Possibility to force the bank account during the payment in TakePOS  ► (v13.0)&lt;br /&gt;
*TAKEPOS_CONTROL_CASH_OPENING ► Control the cash openning&lt;br /&gt;
*TAKEPOS_NUMPAD_FORCE_PAYMENT_ICONS_LABELS&lt;br /&gt;
 &lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Products Module=&lt;br /&gt;
&lt;br /&gt;
*CATEGORY_GRAPHSTATS_ON_PRODUCTS ► Show graph of products with categories and totals in Products Area screen&lt;br /&gt;
&lt;br /&gt;
*MAIN_PRODUCT_DISABLE_CUSTOMCOUNTRYCODE ► Avoid customs code and country of origin to be set as product description when added to Propal/Order/Invoice&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_ADD_TYPE_IN_DOCUMENTS ► Add text &amp;quot;Product&amp;quot; or &amp;quot;Service&amp;quot; at beginning of details lines on built PDF documents.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DONOTSEARCH_ANYWHERE ► When Ajax search is enabled, search is done on criteria anywhere in label of product. By adding this option, search is done only on start of label. This is really faster when you have a huge number of products.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DIRECT_STATUS_UPDATE ► Allows you to change the status of the product (&#039;&#039;for sale/not for sale for purchase/not for purchase&#039;&#039;) directly on the product page via a &#039;&#039;on/off&#039;&#039; switch button. This can be convenient for those who need to quickly disable certain statuses of products without having to go through the editing product page individually. Also can be very useful if used as a filter on the product and product search list. This option doesn&#039;t generate a MODIFY trigger, so be careful with external modules. ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_SEARCH_PRODUCT_BY_FOURN_REF ►  Allow to search a product by supplier ref in document&#039;s add line form. ► (&amp;gt;= 8.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_FREE_LINES ► Disallow using free lines to add line in documents ► (&amp;gt;= 8.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_SHOW_PRODUCT_ACTIVITY_TRIM ► Show Product and Services turnover before for all four quarters tax over recent years recent years on the product area ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
*PRODUIT_DESC_IN_LIST ► Show long description of product/service into lists.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_PROPAGATE_CUSTOMER_PRICES_ON_CHILD_COMPANIES ► Disable propagation of prices per customer from a customer to its child company.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_PUBLIC_URL ► Disable public url in product card ► (v14.0+)&lt;br /&gt;
*PRODUCT_DISABLE_STOCK_LEVELS ► Disable properties of stock limits and desired optimal value on product ► (v14.0+)&lt;br /&gt;
*PRODUCT_DISABLE_NATURE ► Disable nature in product card ► (v14.0+)&lt;br /&gt;
*PRODUCT_DISABLE_WEIGHT ► Disable weight in product card ► (v14.0+)&lt;br /&gt;
*PRODUCT_DISABLE_PRICES ► Disable prices in product card ► (v14.0+)&lt;br /&gt;
*PRODUCT_DISABLE_ACCOUNTING  ► Disable accounting in product card ► (v14.0+)&lt;br /&gt;
*PRODUCT_DISABLE_SIZE ► Disable size in product card.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_LENGTH ► Disable length in product card ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_SURFACE ► Disable surface in product card. ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_VOLUME ► Disable volume in product card.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_CUSTOM_INFO ► Disable custom info (custom code and country origin) in product/service card.&lt;br /&gt;
&lt;br /&gt;
*PRODUIT_MULTIPRICES_USE_VAT_PER_LEVEL ► When option to use price per level/segment is on, this allows to also set a dedicated vat for each price level.&lt;br /&gt;
&lt;br /&gt;
*PRODUIT_CUSTOMER_PRICES_BY_QTY ► If price per quantity ► &#039;&#039;Experimental&#039;&#039;&lt;br /&gt;
*PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES ► If price per quantity and customer ► &#039;&#039;Experimental&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_LOT_ENABLE_QUALITY_CONTROL ► Enable feature for control quality on Lot&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_MAX_LENGTH_COMBO ► Limit the length of the label displayed when adding lines in proposals/invoices/orders&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_MAX_VISIBLE_PHOTO ► Show a maximum number of product photos (as thumbnails) on the product main card. Example, setting this constant to &#039;&amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;&#039; will show the first five product photos found on the product card.&lt;br /&gt;
&lt;br /&gt;
*PRODUIT_PDF_MERGE_PROPAL ► Enable module Propal merge product PDF&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_USE_OLD_PATH_FOR_PHOTO ► Ask dolibarr to check also old path (before 3.7) where photos were stored.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_USE_UNITS ► Add another units on products (Use same dictionnary as default unit feature) and propagate this unit on line of documents.&lt;br /&gt;
&lt;br /&gt;
*RESOURCE_ON_PRODUCTS_RESOURCE_ON_SERVICES ► Allow to affect ressources on products/services ► (v10.0+)&lt;br /&gt;
*PRODUCT_SHOW_ORIGIN_IN_COMBO ► Show origin of products when adding lines in proposals/invoices/orders ► (v12.0+)&lt;br /&gt;
*PRODUIT_ATTRIBUTES_HIDECHILD  ► Add option hide child if variantes&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_ADD_FORM_ADD_TO ► Add a product to a draft proposal/order/invoice, from the product card.&lt;br /&gt;
*PRODUCT_DISABLE_SELLBY ► Hide the Sell by date ► (v13.0+)&lt;br /&gt;
*PRODUCT_DISABLE_EATBY ► Hide the Eat by date ► (v13.0+)&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DENY_CHANGE_PRODUCT_TYPE ► Forbid to change the product type&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_SORT_BY_CATEGORY ► Sort the product by categories instead of by ID&lt;br /&gt;
*PRODUCT_ADD_NET_MEASURE ► Support Net Measure in product&#039;s card.php (For real weight, volume or piece; needed for some business ie fruits, vegetables....). Note brut value is already available natively, use this option only if you need 2 weights, 2 volumes, ...for each product) ► (v11.0.1+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Projects Module=&lt;br /&gt;
&lt;br /&gt;
*PROJECT_ALLOW_TO_LINK_FROM_OTHER_COMPANY ► Can link an object to a project of another thirdparty&lt;br /&gt;
*PROJECT_ALLOW_COMMENT_ON_PROJECT ► Add comment feature on a project&lt;br /&gt;
&lt;br /&gt;
*PROJECT_ALLOW_COMMENT_ON_TASK ► Add comment feature on project task&lt;br /&gt;
&lt;br /&gt;
*PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS ► Enable linking a project to any supplier even when using the third party link feature. Note: Set to 1 by default from 3.7.&lt;br /&gt;
&lt;br /&gt;
*PROJECT_CREATE_ON_OVERVIEW_DISABLED ► Hide the &amp;quot;create ...&amp;quot; button on the overview page ► (v4.0)&lt;br /&gt;
&lt;br /&gt;
*PROJECT_DISABLE_UNLINK_FROM_OVERVIEW ► Enable removing the button from a link in the project overview. ► (&amp;gt;= v8.0.1)&lt;br /&gt;
&lt;br /&gt;
*PROJECT_HIDE_UNSELECTABLES ► Hide into select list, all project that we can&#039;t select (closed or draft)&lt;br /&gt;
&lt;br /&gt;
*PROJECT_HIDE_TASKS ► Hide tasks. For user using project only as an analytics key and not using tasks.&lt;br /&gt;
&lt;br /&gt;
*PROJECT_LIST_SHOW_STARTDATE ► Shows start date of projects in project lists.&lt;br /&gt;
&lt;br /&gt;
*PROJECT_LINK_ON_OVERWIEW_DISABLED ► Hide the &amp;quot;link to&amp;quot; form on the overview page ► (v4.0)&lt;br /&gt;
&lt;br /&gt;
*PROJECT_SHOW_REF_INTO_LISTS ► Add column with project ref into list (with 3.7 list of supplier invoices only, will be expanded to other lists)&lt;br /&gt;
&lt;br /&gt;
*PROJECT_TIME_ON_ALL_TASKS_MY_PROJECTS ► Can add time spent on tasks, even if i am not assigned to task (however, task must be a project i am a contact).&lt;br /&gt;
&lt;br /&gt;
*PROJECT_OPEN_ALWAYS_ON_TAB ► Set to value &#039;task&#039;, or &#039;preview&#039; to always open the project on the given tab instead of main tab.&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*PROJECT_ELEMENTS_FOR_MINUS_MARGIN&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Proposals Module=&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_PROPOSALS_WITH_PICTURE ► Add a picture of the product (the first one found if there are several) into the generated PDF of proposals. Note that using this will reduce the available width for the product description.&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROPAL_CHOOSE_ODT_DOCUMENT ► On setup page, you&#039;ll be able to select which ODT document to use when close or cancel proposals.&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING ► add optional esign field in pdf propal ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*PROPAL_CLONE_ON_CREATE_PAGE ► On the create proposal page, ask if we want to create the proposal by cloning an already existing one. You should use instead the &amp;quot;Clone&amp;quot; button available on existing proposals.&lt;br /&gt;
&lt;br /&gt;
*PROPAL_DISABLE_SIGNATURE ► Do no show the box for signature.&lt;br /&gt;
&lt;br /&gt;
*PRODUIT_PDF_MERGE_PROPAL ► When generating the proposal PDF, all PDFs linked to products linked to proposal are also included into final PDF&lt;br /&gt;
&lt;br /&gt;
*PROPOSAL_ALLOW_EXTERNAL_DOWNLOAD ► When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*PROPOSAL_AUTO_ADD_AUTHOR_AS_CONTACT ► Add Proposal Author as user contact follow proposal&lt;br /&gt;
&lt;br /&gt;
*PROPOSAL_PDF_HIDE_PAYMENTTERM ► Do not show the payment term on proposal ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*PROPOSAL_PDF_HIDE_PAYMENTMODE ► Do not show the payment mode on proposal ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*WORKFLOW_PROPAL_CAN_CLASSIFY_BILLED_WITHOUT_INVOICES ► Button &amp;quot;Classified Billed&amp;quot; is visible on proposal even if there is no invoice linked to proposal.&lt;br /&gt;
*PROPAL_REOPEN_UNSIGNED_ONLY  ► Do not allow reopening of signed (or billed) proposals. (V15)&lt;br /&gt;
*PROPOSAL_ARE_NOT_BILLABLE  ► Disable billing button on proposals (V15)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Services Module=&lt;br /&gt;
&lt;br /&gt;
*SERVICE_ARE_ECOMMERCE_200238EC ►  If seller and buyer are in Europe and buyer is not a company, use the VAT of buying country. For french speaking people, see also the page [[Loi_européenne_TVA_Vente_à_Distance_VAD_et_e-commerce_BtoC]].&lt;br /&gt;
&lt;br /&gt;
*MAIN_FILL_SERVICE_DATES_FROM_LAST_SERVICE_LINE  ► (v13.0) On add line form add a button to fill service dates from the last service line&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Shipments=&lt;br /&gt;
&lt;br /&gt;
*STOCK_WAREHOUSE_NOT_REQUIRED_FOR_SHIPMENTS ► If set, you can add a shipment line, with no stock source defined. ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*SHIPMENT_GETS_ALL_ORDER_PRODUCTS ► Add all order lines in shipment, including the one with 0 in quantity&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Stocks=&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_DISABLE_STOCK_DISPATCH_WHEN_TOTAL_REACHED ► Disable stock dispatch when total expected was already received&lt;br /&gt;
&lt;br /&gt;
*STOCK_EXCLUDE_VIRTUAL_PRODUCTS ► If product is a virtual product, we do not manage stock for it.&lt;br /&gt;
&lt;br /&gt;
*ENTREPOT_EXTRA_STATUS ► Instead of the 2 status (Closed, Open), a Warehouse has 3 status: Closed, Open (for all movements), Open (for internal movement only). Internal movement only means you can&#039;t use the warehouse to make shipment or receptions.&lt;br /&gt;
*SUPPLIER_ORDER_STATUS_FOR_VIRTUAL_STOCK ► For the calculation of virtual stocks, by default supplier orders with the status 3 (ordered) and 4 (partially received) are used. You can enter the list of statuses to be taken into account separated by commas for this calculation (example: 0,1,2,3)&lt;br /&gt;
*STOCK_MOVEMENT_LIST_HIDE_UNIT_PRICE ► to hide unit price on some pages (V15+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Suppliers Module=&lt;br /&gt;
&lt;br /&gt;
*FOURN_PRODUCT_AVAILABILITY ► On the Suppliers price page of the products, activate the supplier product availability. &#039;&#039;This is duplicate feature with delivery_delay introduced with 3.8.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*RELOAD_PAGE_ON_SUPPLIER_CHANGE ► On creation of a supplier order/invoice, reload form with supplier-specific details when supplier is selected from drop-down list.&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_INVOICE_WITH_PREDEFINED_PRICES_ONLY ► Restrict selection of products in supplier invoice to only those with a buying price defined for that supplier. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_AUTOADD_USER_CONTACT ► Add user approving supplier order as a contact automatically.&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_DEFAULT_PAYMENT_MODE_ID ► Set the default payment method for suppliers (&amp;lt;code&amp;gt;rowid&amp;lt;/code&amp;gt; in table &amp;lt;code&amp;gt;llx_c_paiement&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_USE_DISPATCH_STATUS ► Add a status on each dispatch order line when receiving products from suppliers ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_NO_DIRECT_APPROVE ► No button &amp;quot;Validate and Approve&amp;quot;. Always do step &amp;quot;Validate&amp;quot; and &amp;quot;Approve&amp;quot; in 2 steps.&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_WITH_PREDEFINED_PRICES_ONLY ► Restrict selection of products in supplier order to only those with a buying price defined for that supplier. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_EDIT_BUYINGPRICE_DURING_RECEIPT ► Can modify the buying price used for PMP calculation when making a stock reception on a supplier order. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_PROPOSAL_WITH_PREDEFINED_PRICES_ONLY ► Restrict selection of products in supplier proposal to only those with a buying price defined for that supplier. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*DISPLAY_DISCOUNTED_SUPPLIER_PRICE ► Allow to display discounted supplier price when searching product in supplier documents ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_CAN_EDIT_SUPPLIER_ON_SUPPLIER_ORDER ►  Allow to change the supplier on a draft supplier order ► (v10.0)&lt;br /&gt;
*&lt;br /&gt;
*SUPPLIER_PROPOSAL_ALLOW_EXTERNAL_DOWNLOAD&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Third Parties Module=&lt;br /&gt;
&lt;br /&gt;
*COMPANY_AQUARIUM_CLEAN_REGEX ► Add a REGEX rule on the third parties names. It applies a regex replacement pattern on generated code if COMPANY_AQUARIUM_CLEAN_REGEX is set. Value must be a regex with parenthesis. The part into parenthesis is kept, the rest removed. For example if COMPANY_AQUARIUM_CLEAN_REGEX = &#039;&amp;lt;code&amp;gt;^..(..)..(.*)&amp;lt;/code&amp;gt;&#039; the first char and second char are removed and the char 5 and 6 too ► (&amp;gt;= 8.0.1)&lt;br /&gt;
*SOCIETE_EMAIL_MANDATORY ► E-mail is a mandatory field when creating a thirdparty&lt;br /&gt;
&lt;br /&gt;
*SOCIETE_DISABLE_CUSTOMERS ► Remove all menu and features related to customers&lt;br /&gt;
&lt;br /&gt;
*SOCIETE_DISABLE_PROSPECTS ► Remove all menu and features related to prospects&lt;br /&gt;
&lt;br /&gt;
*SOCIETE_DISABLE_STATE ► Do not use field &amp;quot;state/province&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*SOCIETE_SORT_ON_TYPEENT ► The combo list of &amp;quot;type of third party&amp;quot; is sorted on alphabetical order instead of the field &amp;quot;position&amp;quot; that appears into dictionary instead.&lt;br /&gt;
&lt;br /&gt;
*SOCIETE_ASK_FOR_SHIPPING_METHOD ► Shipping method can be predefined on customer card and will be used as default on order creation&lt;br /&gt;
*SOCIETE_ADD_REF_IN_LIST ► Displays the code before the name in the lists  ► Value 1 -&amp;gt; Code + name + alias ou Code + name if colone alias 2 -&amp;gt; Code + alias 3 -&amp;gt; Alias&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_CAN_HAVE_CATEGORY_EVEN_IF_NOT_CUSTOMER_PROSPECT_SUPPLIER ► Possible to add Categories to third parties that are not customer, prospect or supplier.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_DEFAULT_USELOCALTAX1 ► When creating a new third party, the field &amp;quot;Use second tax&amp;quot; is set to on or off depending on value of this parameter.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_DEFAULT_USELOCALTAX2 ► When creating a new third party, the field &amp;quot;Use third tax&amp;quot; is set to on or off depending on value of this parameter.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_NOTCUSTOMERPROSPECT_BY_DEFAULT ► Do not set status &amp;quot;Customer/Prospect&amp;quot; to &amp;quot;on&amp;quot; when creating a new third party from menu &amp;quot;New third party&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_INCLUDE_PARENT_IN_LINKTO ► Search also for elements on parent third party when using the &amp;quot;link to&amp;quot; object feature.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_INCLUDE_PROJECT_THIRDPARY_IN_LINKTO ► Search also for elements on third party that own the project of the current element when using the &amp;quot;link to&amp;quot; object feature (if project is owned by a different thirdparty than current one).&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_LOGO_ALLOW_EXTERNAL_DOWNLOAD ► When a logo is uploaded, a share key is automatically set so the file can be downloaded using the share key.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_SUGGEST_ALSO_ADDRESS_CREATION ► Enabled contact creation on third-party create card&lt;br /&gt;
*THIRDPARTY_QUICKSEARCH_ON_FIELDS ► Personalized search criterias ► Example: $conf-&amp;gt;global-&amp;gt;THIRDPARTY_QUICKSEARCH_ON_FIELDS = &#039;s.nom=ThirdPartyName;s.name_alias=AliasNameShort;s.code_client=CustomerCode&#039;&lt;br /&gt;
*MEMBER_CAN_CONVERT_CUSTOMERS_TO_MEMBERS ► Enabled member creation on third-party create card&lt;br /&gt;
*SOCIETE_DISABLE_PARENTCOMPANY ► Disables attachment to a parent company.&lt;br /&gt;
*THIRDPARTY_CUSTOMERPROSPECT_BY_DEFAULT ► Set the third party to customer by default&lt;br /&gt;
*THIRDPARTY_SUPPLIER_BY_DEFAULT ► Set the third party to supplier by default&lt;br /&gt;
*THIRDPARTY_CUSTOMERTYPE_BY_DEFAULT ► Set the third party type by default (3 = customer &amp;amp; prospect / 2 = prospect / 1 = customer )&lt;br /&gt;
*CONTACT_DISABLE_PERSONALINFO ► Disable Personal data on contact page&lt;br /&gt;
*SOCIETE_DISABLE_WORKFORCE ► Disable work force selector on society page&lt;br /&gt;
*SOCIETE_SHOW_VAT_IN_LIST ► display VAT number in combo list of thirdparties (V15+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Ticket Module=&lt;br /&gt;
&lt;br /&gt;
*TICKET_SHOW_MESSAGES_ON_CARD ►Display all ticket related messages on the main ticket card. ► (&amp;gt;= 10.0)&lt;br /&gt;
*TICKET_AUTO_ASSIGN_CONTRACT_CREATE ►Automatically create a contract linked to the ticket ► (&amp;gt;= 10.0)&lt;br /&gt;
*TICKET_AUTO_CREATE_FICHINTER_CREATE ►Automatically create an intervention linked to the ticket ► (&amp;gt;= 10.0)&lt;br /&gt;
*WORKFLOW_TICKET_CLOSE_INTERVENTION ►On ticlet close, automatically close an intervention linked to the ticket&lt;br /&gt;
*TICKET_CHECK_NOTIFY_THIRDPARTY_AT_CREATION ►Automatically check &amp;quot;notify thirdparty at creation&amp;quot; ( &amp;gt;=16)&lt;br /&gt;
*TICKETS_MESSAGE_FORCE_MAIL ► Precheck email sending on ticket message (&amp;gt;=15)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=VAT Report=&lt;br /&gt;
&lt;br /&gt;
*MAIN_INCLUDE_ZERO_VAT_IN_REPORTS ► Include lines with VAT to 0% (for &amp;quot;auto-liquidation&amp;quot; in EEC) ► (v8.0.3+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Website Module=&lt;br /&gt;
&lt;br /&gt;
*WEBSITE_USE_WEBSITE_ACCOUNTS ► Add a table and a tab to manage some accounts for websites to a third party&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*WEBSITE_ADD_CSS_TO_BODY&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=WYSIWYG Editor=&lt;br /&gt;
&lt;br /&gt;
*FCKEDITOR_ENABLE_DETAILS_FULL ► Can cut and paste external images (hosted on external server) into description of proposal, orders or invoices. WARNING: PDF generation is not guaranteed with this. Also if the image is removed or renamed by the image hosting service, your proposal, order or invoice will be broken.&lt;br /&gt;
*FCKEDITOR_ALLOW_ANY_CONTENT ► Allow to enter any content. However, this will totally disable content filtering which is one of the most important CKEditor features. You can use this to keep all your tags and attributes in the html content.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=STRIPE Module=&lt;br /&gt;
&lt;br /&gt;
*STRIPE_FORCE_VERSION ► Force the STRIPE version. For Example: &amp;quot;2019-09-09&amp;quot; (v11+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=ClickToDial Module=&lt;br /&gt;
&lt;br /&gt;
*CLICKTODIAL_FORCENEWTARGET ► Open in new page.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=For SaaS / Cloud hosting integrators=&lt;br /&gt;
&lt;br /&gt;
The following options are useless for a common usage of Dolibarr. But they are usefull if you plan to host / provide Dolibarr instances as Software As A Service (SAAS) to your customers.&lt;br /&gt;
&lt;br /&gt;
*CRON_DISABLE_KEY_CHANGE ► When you provide an instance to a customer, you probably also add an entry in the cron of this user so Dolibarr batch and scheduler can work correctly. For security purpose, it may have a security key that is inside the command line into the cron entry and this entry must match the value defined into Dolibarr setup (setup of module &#039;Scheduled Jobs&#039;). Because, a customer of a Saas platform will probably have no access to edit the cron file, it is also import that he has no way to edit the key into the Dolibarr setup, so the key in the cron command line will always match the key in Dolibarr setup, and the Dolibarr batches will executed without security errors. To be sure, the customer does not change the value, you can set this constant to 1 into the table [[Table_llx_const]].&lt;br /&gt;
&lt;br /&gt;
*CRON_DISABLE_TUTORIAL_CRON ► Disable the tutorial about how to install the cron script (on a SaaS hosting, this should be done by the web hosting provider)&lt;br /&gt;
&lt;br /&gt;
*CRON_WARNING_DELAY_HOURS ► Set this value to the frequency set for the cron script (so a warning will be shown to user to warn it about max frequency of its scheduled jobs)&lt;br /&gt;
 &lt;br /&gt;
*To avoid bad use of the emailing module, it is recommended to set the option MAILING_NO_USING_PHPMAIL to 1 (This option is described previously). Also you can complete the message visible by customers when they try to setup the SMTP credentials of their Dolibarr by using the constant MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS (This option is described previously). For example, you can point to a FAQ on your website.&lt;br /&gt;
&lt;br /&gt;
*If you set a system limit on number of recipient, you can set some option to match the same values so users will be informed: MAIL_MAX_NB_OF_RECIPIENTS_IN_SAME_EMAIL ► Restrict sending of 1 email message to &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; recipients for same email message (x for To: + CC: + BCC:). If not defined, value is &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;. Required to fight against spamming that include 1000 recipients in 1 message. Note that MAIL_MAX_NB_OF_RECIPIENTS_TO_IN_SAME_EMAIL, MAIL_MAX_NB_OF_RECIPIENTS_CC_IN_SAME_EMAIL and MAIL_MAX_NB_OF_RECIPIENTS_BCC_IN_SAME_EMAIL are also available.&lt;br /&gt;
&lt;br /&gt;
*MAIN_ALWAYS_CREATE_LOCK_AFTER_LAST_UPGRADE ► If set, when you launch upgrades of your customer instances, you are sure that the upgrade process recreate automatically the file install.lock so the administration tools like install.php and repair.php can&#039;t be used on your customer instance (until the lock file is deleted).&lt;br /&gt;
&lt;br /&gt;
*MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP ► Set to 1 by default. You can set it to 0 to show a warning to encourage admin to set its own SMTP service.&lt;br /&gt;
&lt;br /&gt;
*MAILING_LIMIT_WARNING_PHPMAIL ► Set this value to a translation key. Then add translation keys into the instance so user will see a message when into the email setup page. For example, you can set a message to say &#039;&#039;Warning: To avoid abuse, when using default setup, you are restricted to 500 emails per day for all your application (account may be suspended in case of violation of this rule. You can setup application to use your own SMTP server for sending email so you want have no restriction at all (see menu Home-Setup-Emails)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*MAIN_EXTERNAL_SMTP_CLIENT_IP_ADDRESS ► (A better name of this option should be MAIN_EXTERNAL_MAIL_CLIENT_IP_ADDRESS). Set here the list of IPs where your Dolibarr instances are hosted. So when your customer go into the setup area of email:&lt;br /&gt;
**If he chose mail method, a message will explain him how to setup its SPF record for its email domain (showing the list of IP). This is to avoid to have its emails, sent from its Dolibarr instance, fails due to strict antispam rule of some emailing servers.&lt;br /&gt;
**If he chose smtp method, a message will explain him the list of IP he can use if there is restriction on IP by the SMTP agent. If you also need to add a message to help SPF setup, see option MAIN_EXTERNAL_SMTP_SPF_STRING_TO_ADD.&lt;br /&gt;
&lt;br /&gt;
*MAIN_EXTERNAL_SMTP_SPF_STRING_TO_ADD ► Set here the string to add in the SPF record This string will be shown into a help message when the user in in the setup of email page and has choose a method using an external SMTP server.&lt;br /&gt;
&lt;br /&gt;
*MAIN_FIRST_PING_OK_ID ► Set this value to &amp;quot;disabled&amp;quot; to remove completely any ping after a complete setup.&lt;br /&gt;
&lt;br /&gt;
*MAIN_FILECHECK_LOCAL_SUFFIX and MAIN_FILECHECK_LOCAL_EXT ► If you offer a customized or patched version of Dolibarr, when the user will use the tool to check the integrity of files, the default xml file name used for signature checking will be the official file provided by the Dolibarr team, so it does not includes your own changes. To have the suggested signature file being your own file, you can set the constant MAIN_FILECHECK_LOCAL_SUFFIX to a suffix. For example, set this to &amp;quot;&#039;&#039;&#039;-mysaassolution&#039;&#039;&#039;&amp;quot;. So, when the user will use the file integrity tool, the default file to check for signature will be &amp;quot;&#039;&#039;&#039;/install/filelist-10.0.2-mysaassolution.xml&#039;&#039;&#039;&amp;quot; instead of &amp;quot;&#039;&#039;&#039;/install/filelist-10.0.2.xml&#039;&#039;&#039;&amp;quot;. All you have to do is generate the signature file &#039;&#039;&#039;mysaassolution&#039;&#039;&#039; using the tool &#039;&#039;&#039;build/generate_filelist_xml.php&#039;&#039;&#039; and put this file into the install directory of your customer instance. Doing this, your customer, and yourself, will be able to check if a file was modified without being disturbed by false alerts due to your customized files or patches (they will be included in the signature used for check). Also, if you want to zip the customized signature file into &amp;quot;&#039;&#039;&#039;/install/filelist-10.0.2-mysaassolution.xml.zip&#039;&#039;&#039;&amp;quot;, you can set the constant MAIN_FILECHECK_LOCAL_EXT to &#039;.zip&#039;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING ► If set to N, the warning saying modules are not activated will be shown if number of activated module is &amp;lt; N (Having this variable not defined is same than having it set to 1). This may be usefull if you preinstall an application with some modules already loaded by default and you want to keep the warning to be sure the user will enable other modules he need, even if some modules are already enabed.&lt;br /&gt;
&lt;br /&gt;
*SYSLOG_DISABLE_LOGHANDLER_SYSLOG ► Set this to 1 to disable usage of syslog (having all customer instances logging in the same system file is not a good idea).&lt;br /&gt;
&lt;br /&gt;
*WEBSITE_REPLACE_INFO_ABOUT_USAGE_WITH_WEBSERVER ► Put here a text or a translation key of a text to show when the user will use the feature &amp;quot;Deploy&amp;quot; when he want to deploy a website done with Dolibarr CMS. So you can, for example, show him a message that this feature is not part of its subscription and putting a website online may need a complementary subscription.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Langages_et_normes&amp;diff=54071</id>
		<title>Langages et normes</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Langages_et_normes&amp;diff=54071"/>
		<updated>2022-06-27T07:24:16Z</updated>

		<summary type="html">&lt;p&gt;Iouston: suppression correction car il duplique plusieurs fois...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- BEGIN interlang links --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Do NOT edit this section&lt;br /&gt;
     Links below are automatically managed by PolyglotBot&lt;br /&gt;
     You can edit links on the English source page : Language_and_development_rules --&amp;gt;&lt;br /&gt;
[[en:Language_and_development_rules]]&lt;br /&gt;
[[de:Sprachen_und_Programmierregeln]]&lt;br /&gt;
[[es:Lenguaje_y_Normas_de_Desarrollo]]&lt;br /&gt;
[[zh:语言和开发规则]]&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{TemplateDocDev}}&lt;br /&gt;
&lt;br /&gt;
Voici les quelques règles sur le langage, la syntaxe et normes de développement en vigueur pour le projet Dolibarr :&lt;br /&gt;
&lt;br /&gt;
=Versions=&lt;br /&gt;
&lt;br /&gt;
*Dolibarr doit fonctionner sur:&lt;br /&gt;
&lt;br /&gt;
#Tous OS (Windows, Linux, MACOS...)&lt;br /&gt;
#PHP {{PHPMinVersion}} (Doit fonctionner sans aucun module PHP complémentaire hors les modules d&#039;accès base de donnée).&lt;br /&gt;
#Mysql {{MySqlMinVersion}}&lt;br /&gt;
&lt;br /&gt;
=Normes Copyright=&lt;br /&gt;
&lt;br /&gt;
*Tout fichier PHP doit avoir un en-tête selon le masque suivant&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/* Copyright (C) YYYY John Doe  &amp;lt;email@email.com&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 * Licence information&lt;br /&gt;
 */&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Quand vous éditez un fichier existant du projet, ajouter une ligne Copyright sous celles existantes.&lt;br /&gt;
&lt;br /&gt;
=Normes PHP=&lt;br /&gt;
&lt;br /&gt;
==PHP==&lt;br /&gt;
&lt;br /&gt;
*Dolibarr est écrit en PHP et supporte toutes versions PHP supérieures à la {{PHPMinVersion}}. Les fichiers doivent tous comporter l&#039;extension .php&lt;br /&gt;
&lt;br /&gt;
*L&#039;appel aux variables superglobales PHP doit passer par les opérateurs dédiés $_COOKIES, $_SERVER, $_ENV. Mais pour récupérer les contenus de $_GET ou $_POST, il faut passer par la fonction dolibarr [[Fonctions utiles Dolibarr|GETPOST()]] .&lt;br /&gt;
&lt;br /&gt;
Les autres opérateurs ($HTTP_SERVER_GET, ...) ayant été passés en deprecated au sein de PHP, ne doivent plus être utilisés. Ainsi le code doit fonctionner y compris quand l&#039;option &#039;&#039;&#039;register_long_arrays&#039;&#039;&#039; est à off.&lt;br /&gt;
De plus, le code doit fonctionner aussi bien quand l&#039;option PHP &#039;&#039;&#039;register_globals&#039;&#039;&#039; est à off (recommandé par PHP)  que quand l&#039;option &#039;&#039;&#039;register_globals&#039;&#039;&#039; est à on (par défaut sur de nombreuses installations).&lt;br /&gt;
&lt;br /&gt;
*Pas d&#039;utilisation de la variable &#039;&#039;&#039;PHP_SELF&#039;&#039;&#039;. Utiliser à la place $_SERVER[&amp;quot;PHP_SELF&amp;quot;]. Notez aussi que le framework Dolibarr passe une routine pour rendre plus sûr le contenu du $_SERVER[&amp;quot;PHP_SELF&amp;quot;] (dans le fichier main.inc.php, donc avant tout traitement métier)&lt;br /&gt;
&lt;br /&gt;
*Quand plusieurs variables doivent être initialisées avec la même valeur, il faut utiliser plusieurs instructions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$var1 = 1; $var2 = 1; $var3 = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
plutôt que&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$var1 = $var2 = $var3 = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
qui est moins performant.&lt;br /&gt;
&lt;br /&gt;
*Les chaines doivent avoir les variables sorties de la chaine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
print &amp;quot;Mon texte affiche ma &amp;quot;.$variable.&amp;quot; !\n&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Les commentaires doivent suivre la syntaxe C, ie un double antislash pour un commentaire d&#039;une ligne et utilisation slash-étoile pour ouvrir un bloc de plusieurs lignes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
/* Bloc de commentaire&lt;br /&gt;
 *&lt;br /&gt;
 * Fin du bloc&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
$monobjet = new MonObjet($db);&lt;br /&gt;
$result=$monobjet-&amp;gt;fetch($idobject);&lt;br /&gt;
&lt;br /&gt;
for ($i = 1 , $i &amp;lt; 2 ; $i++)&lt;br /&gt;
{&lt;br /&gt;
  // commentaire sur une ligne&lt;br /&gt;
  print $i;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Les fonctions doivent retourner une valeur strictement &amp;gt; à 0 en cas de succès, et un nombre &amp;lt; à 0 en cas d&#039;erreur.&lt;br /&gt;
&lt;br /&gt;
*Pas de code mort (non utilisé) dans le code principal de Dolibarr (le code utilisé uniquement par un module externe doit être inclus dans le module externe).&lt;br /&gt;
&lt;br /&gt;
*Utiliser &amp;quot;include_once&amp;quot; pour l&#039;inclusion de tout fichier contenant des définitions de fonction ou de classes (donc fichiers *.class.php et *.lib.php), utiliser &amp;quot;include&amp;quot; pour tout inclusion de fichier de type template ou contenant un mixte de HTML et PHP (donc fichiers *.inc.php et *.tpl.php).&lt;br /&gt;
&lt;br /&gt;
*Le style de code a utiliser est le PSR-12 (https://www.php-fig.org/psr/psr-12/). Seules les règles &amp;quot;MUST&amp;quot; sont imposées. Notez aussi les points/exceptions suivants:&lt;br /&gt;
**La longueur des lignes: PSR-12 indique que la longueur des lignes a une limite &amp;quot;soft&amp;quot; à 120. Il est en effet préférable d&#039;avoir de longues lignes de données de déclaration plutôt que de longues pages car ce code ne contient aucune logique intéressante ou utile, toutefois une limite &amp;quot;hard&amp;quot; a été instauré à &#039;&#039;&#039;1000&#039;&#039;&#039; caractères. Du code qui ira au delà provoquera des erreurs dans la plateforme d&#039;Intégration Continue.&lt;br /&gt;
**Les tabulations sont acceptées : L&#039;autre exception est qu&#039;on ne remplace pas les tabulations systématiquement par des espaces. L&#039;utilisation des tabulations simplifie la vie de certains développeurs. De plus, l&#039;utilisation d&#039;espaces rend certaines fonctions d&#039;autoformatage défectueuses (comme sur certaines versions d&#039;Eclipse, lors de copier-coller).&lt;br /&gt;
**Note 1: Les règles suivantes sont particulièrement importantes :&lt;br /&gt;
***Les fichiers doivent être sauvés en format Unix (LF) et non Windows (CR/LF). Le format Unix étant compatible sur les OS Unix like, Windows, Mac, alors que le format fichier texte Windows pose problème sous certains PHP sous Unix.&lt;br /&gt;
***Les smart tags PHP ne sont pas utilisés. Les sections de code doivent commencer par &#039;&#039;&#039;&amp;lt;?php&#039;&#039;&#039;&lt;br /&gt;
**Note 2: Vous pouvez utiliser le fichier &#039;&#039;&#039;dev/setup/codesniffer/ruleset.xml&#039;&#039;&#039; comme fichier de contrôle pour vérifier votre style de code avec PHPCodeSniffer.&lt;br /&gt;
**Note 3: Vous pouvez utiliser le fichier &#039;&#039;&#039;dev/setup/eclipse/PSR-12 [built-in].xml&#039;&#039;&#039; comme fichier de règles de syntax pour configurer Eclipse.&lt;br /&gt;
**Note 4: Vous remarquerez que le code actuel ne suit pas forcément tout cela. La raison est historique. La règle fut instaurée en cours de route, aussi, si vous trouvez du code non respectueux de ce standard, n&#039;hésitez pas à le corriger.&lt;br /&gt;
&lt;br /&gt;
==Structures des classes et champs==&lt;br /&gt;
&lt;br /&gt;
Certaines propriétés de classes se retrouvent dans de nombreuses classes. Pour homogénéité, on utilisera les noms suivants:&lt;br /&gt;
{{TemplatePHPFields}}&lt;br /&gt;
&lt;br /&gt;
=Normes SQL=&lt;br /&gt;
&lt;br /&gt;
==Structure des tables et champs==&lt;br /&gt;
&lt;br /&gt;
*Toutes les tables sont préfixées pour éviter les conflits de nommage. Aujourd&#039;hui, le préfixe est modifiable au moment de l&#039;installation. Sa valeur par défaut est &amp;lt;tt&amp;gt;llx_&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Structure des tables.&lt;br /&gt;
&lt;br /&gt;
Lorsque vous créez une table, il est recommandé de prendre les même conventions de nommages de tables que les autres tables Dolibarr. Avec, à minima les champs suivant:&lt;br /&gt;
 - rowid INTEGER AUTO_INCREMENT PRIMARY KEY    qui est l&#039;id technique&lt;br /&gt;
 - entity INTEGER default 1                    that is id for the multicompany feature&lt;br /&gt;
 - date_creation   datetime                    that is the creation date&lt;br /&gt;
 - tms             timestamp                   qui sera un champ contenant la date de chaque mise à jour (la base de donnée le gère tout seul, pas besoin de le gérer par le code)&lt;br /&gt;
 - import_key      varchar(32)                 qui contiendra le code d&#039;import YYYYMMDDHHMMSS si vous faites des imports en masse dans la table.&lt;br /&gt;
 - status          smallint                    pour stocker le status d&#039;un object&lt;br /&gt;
&lt;br /&gt;
Eventuellement&lt;br /&gt;
 - fk_user_creat  integer qui est l&#039;id du user de création (fk_user_author also found)&lt;br /&gt;
 - fk_user_modif  integer qui est l&#039;id du user de modification&lt;br /&gt;
 - fk_user_valid  integer qui est l&#039;id du user de validation&lt;br /&gt;
 - fk_soc integer qui est l&#039;id du tiers (si applicable)&lt;br /&gt;
&lt;br /&gt;
*Type des champs&lt;br /&gt;
&lt;br /&gt;
Dans la pratique, afin d&#039;être compatible avec toutes les précisions des pays, syntaxes des bases, on utilisera uniquement les types suivants:&lt;br /&gt;
 - integer pour tout nombre entier, id ou clé étrangère (bigint éventuellement accepté pour les id des très grosses tables)&lt;br /&gt;
 - smallint pour tout numérique entier de petite taille (comme pour stocker un code de status)&lt;br /&gt;
 - double(24,8) pour tout montant&lt;br /&gt;
 - double(6,3) pour les taux de tva&lt;br /&gt;
 - real pour une quantité&lt;br /&gt;
 - varchar pour une chaîne (y compris de longueur 1, le type char est de plus en plus déprécié)&lt;br /&gt;
 - timestamp pour un champ date+heure devant être mis a jour automatiquement&lt;br /&gt;
 - datetime pour un champ date+heure&lt;br /&gt;
 - date pour un champ date&lt;br /&gt;
&lt;br /&gt;
==Clé primaire==&lt;br /&gt;
La clé primaire d&#039;une table s&#039;appelle &amp;lt;tt&amp;gt;rowid&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Il y a quelques tables qui échappent à cette règle actuellement (ex [[Table llx_c_actioncomm]]), pour des raisons historiques. Une évolution pourra être étudiée pour une prochaine version.&lt;br /&gt;
&lt;br /&gt;
==Clés étrangères==&lt;br /&gt;
Le nom d&#039;une clé étrangère commence par le préfixe &amp;lt;tt&amp;gt;fk_&amp;lt;/tt&amp;gt; suivi du nom de la table liée (requis pour éviter doublons globales à la base, problématiques sous certains SGBD comme postgresql) puis du champ lié (pour permettre plusieurs clés étrangères différentes sur une même table).&lt;br /&gt;
&lt;br /&gt;
Exemple:&lt;br /&gt;
fk_facture_fourn_fk_soc&lt;br /&gt;
&lt;br /&gt;
Note: Si vous développez votre propre module externe, il ne doit pas y avoir de clé étrangère depuis vos tables qui pointent sur les tables standards de Dolibarr. Ceci casserait les fonctionnalités de mise à jour, de réparation, de sauvegardes et de restauration.&lt;br /&gt;
&lt;br /&gt;
==Clés alternatives==&lt;br /&gt;
Parfois, il n&#039;y a pas que la clé primaire qui doit être unique. On peut donc ajouter aussi un index clé alternative unique. Un tel index est nommé par un nom qui commence par le préfixe &amp;lt;tt&amp;gt;uk_&amp;lt;/tt&amp;gt; suivi du nom de la table (requis pour éviter doublons d&#039;index globals à la base, problématiques sous certains SGBD comme postgresql) puis d&#039;un suffixe qui caractérise la clé (pour permettre plusieurs index uniques sur une même table).&lt;br /&gt;
&lt;br /&gt;
Exemple:&lt;br /&gt;
uk_societe_code_client&lt;br /&gt;
&lt;br /&gt;
==Index performance==&lt;br /&gt;
Certains champs sont souvent utilisés comme critère de recherche, de tri ou de jointure. Il convient dans ce cas, d&#039;y mettre un index de performance. De tels indexes seront nommés avec un préfix &amp;lt;tt&amp;gt;idx_&amp;lt;/tt&amp;gt; puis le nom de la table et le nom du champ sur lequel porte l&#039;index.&lt;br /&gt;
&lt;br /&gt;
Exemple:&lt;br /&gt;
idx_societe_user_creat&lt;br /&gt;
&lt;br /&gt;
==Format de fichier DDL==&lt;br /&gt;
Les fichiers qui contiennent la définition de la structure de la base (DDL) doivent être au nombre de 2 par tables:&lt;br /&gt;
Chaque table est définie dans son propre fichier dont le nom est &amp;lt;tt&amp;gt;llx_&#039;&#039;matable&#039;&#039;.sql&amp;lt;/tt&amp;gt;. &lt;br /&gt;
On mettra un commentaire à côté de chaque champ pour en expliquer la signification.&lt;br /&gt;
Les clés étrangères et index de performance ou autres contraintes d&#039;unicité sont définies dans un fichier séparé dont le nom est &amp;lt;tt&amp;gt;llx_&#039;&#039;matable&#039;&#039;.key.sql&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ces fichiers sont placés dans le répertoire &#039;&#039;&#039;install/mysql/tables&#039;&#039;&#039; pour les fichiers standards ou &#039;&#039;&#039;monmodule/tables&#039;&#039;&#039; pour les tables amenées par un module.&lt;br /&gt;
&lt;br /&gt;
Exemple &#039;&#039;&#039;fichier table llx_matable.sql&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
-- Copyright (C) 2008 Author &amp;lt;email@author.com&amp;gt;&lt;br /&gt;
-- &lt;br /&gt;
-- This program is free software; you can redistribute it and/or modify&lt;br /&gt;
-- it under the terms of the GNU General Public License as published by&lt;br /&gt;
-- the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
-- (at your option) any later version.&lt;br /&gt;
--&lt;br /&gt;
-- This program is distributed in the hope that it will be useful,&lt;br /&gt;
-- but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
-- GNU General Public License for more details.&lt;br /&gt;
--&lt;br /&gt;
-- You should have received a copy of the GNU General Public License&lt;br /&gt;
-- along with this program. If not, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
&lt;br /&gt;
create table llx_matable&lt;br /&gt;
(&lt;br /&gt;
  rowid       integer AUTO_INCREMENT PRIMARY KEY,&lt;br /&gt;
  field_one   integer,&lt;br /&gt;
  field_two   integer NOT NULL,&lt;br /&gt;
  fk_field    integer,&lt;br /&gt;
  field_date  datetime,&lt;br /&gt;
  tms         timestamp&lt;br /&gt;
)ENGINE=innodb;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple &#039;&#039;&#039;fichier clés/index llx_matable.key.sql&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
-- Copyright (C) 2008 Author &amp;lt;email@author.com&amp;gt;&lt;br /&gt;
-- &lt;br /&gt;
-- This program is free software; you can redistribute it and/or modify&lt;br /&gt;
-- it under the terms of the GNU General Public License as published by&lt;br /&gt;
-- the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
-- (at your option) any later version.&lt;br /&gt;
--&lt;br /&gt;
-- This program is distributed in the hope that it will be useful,&lt;br /&gt;
-- but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
-- GNU General Public License for more details.&lt;br /&gt;
--&lt;br /&gt;
-- You should have received a copy of the GNU General Public License&lt;br /&gt;
-- along with this program. If not, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE llx_matable ADD UNIQUE uk_matable_field(field_one, field_two);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE llx_matable ADD CONSTRAINT fk_matable_fk_field FOREIGN KEY (fk_field) REFERENCES llx_matablepere (rowid);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Règles de codage SQL==&lt;br /&gt;
&lt;br /&gt;
*Utilisation des alias/nommage de champs&lt;br /&gt;
&lt;br /&gt;
Dans le cas des select on pourra utiliser les alias pour simplifier l&#039;écriture des requêtes:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
select chp1, chpxxx2 as chp2 from table2 as t1, table2 as t2 where t1.chpx = t2.chpy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Toutefois, il ne faut pas utiliser ces alias sur des requêtes update car non compatible avec mysql 3.1.&lt;br /&gt;
&lt;br /&gt;
*Les SELECT * sont interdits ! Chaque SELECT doit spécifier la liste complète des champs à récupérer. Cela permet d&#039;éviter les confusions. Exemple:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT field_a, field_b, field_c FROM table_1 WHERE field_d = &#039;$id&#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Dans les requêtes SQL, on quote les champs mais pas les numériques qui contiennent des montants destinés à être stockés dans des champs de type double ou real. Les quotes sur les numériques de type float provoquent parfois un stockage d&#039;une valeur différente. Par exemple 412.62 dans le insert sera en fait stocké avec la valeur 412.61999512 en base (suite à des conversions chaines-numériques implicites) si le champ est de type double(24,8). Et seul le PHP voit 412.61999512. Les autres outils verront 412.62 donnant l&#039;impression qu&#039;il n&#039;y a pas de problème. Et c&#039;est le PHP qui a raison, il y a problème en base. En supprimant les quotes sur les numériques, cela va mieux.&lt;br /&gt;
&lt;br /&gt;
Exemple:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
Bon:     INSERT INTO table_1 (field_txt, field_num) VALUES (&#039;txt&#039;, 412.62)&lt;br /&gt;
Mauvais: INSERT INTO table_1 (field_txt, field_num) VALUES (&#039;txt&#039;, &#039;412.62&#039;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarque, le problème des float est général et pas seulement sur les accès base, il est présent dans tous les languages quand on travaille sur des nombres réels, aussi ils doivent être, dès que affectés, nettoyés par la fonction price2num avec le 2eme paramètre renseigné à:&lt;br /&gt;
&#039;MU&#039; (si il s&#039;agit d&#039;un prix unitaire), &#039;MT&#039; (s&#039;il s&#039;agit d&#039;un prix total) ou &#039;MS&#039; (autres cas) selon le besoin.&lt;br /&gt;
Voir aussi le chapitre &amp;quot;Les nombres réels, montants et calculs&amp;quot; plus bas.&lt;br /&gt;
&lt;br /&gt;
*Les fonctions NOW, SYSDATE ou DATEDIFF sont interdites au sein des ordres SQL. S&#039;il faut saisir la date du moment dans un champ, la valeur doit venir du PHP, par exemple par la fonction dol_now(), et non du moteur de base de données. Ceci afin d&#039;avoir une meilleure portabilité du code mais surtout d&#039;avoir une gestion correcte des TimeZone et ne pas dépendre du TimeZone de la base de donnée.&lt;br /&gt;
&lt;br /&gt;
Par exemple, on ne fera pas:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$sql=&amp;quot;SELECT rowid FROM table where datefield = NOW()&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
mais:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$sql=&amp;quot;SELECT rowid FROM table where datefield = &#039;&amp;quot;.$this-&amp;gt;db-&amp;gt;idate(dol_now()).&amp;quot;&#039;&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple, on ne fera pas:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$sql=&amp;quot;SELECT rowid FROM table where DATEDIFF(table.datefield, NOW()) &amp;gt; 7&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
mais:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$sql=&amp;quot;SELECT rowid FROM table where datefield &amp;lt; &#039;&amp;quot;.$this-&amp;gt;db-&amp;gt;idate(dol_now() - (7 * 24 * 3600)).&amp;quot;&#039;&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un autre avantage de cette règle est que la requête peut bénéficier de l&#039;utilisation de l&#039;index puisqu&#039;on compare datefield à une valeur fixe. Dans le cas du datediff, on applique un traitement sur le champ avant comparaison, rendant impossible l&#039;utilisation de l&#039;index de ce champ. Les conséquences sont des performances très dégradées par rapport à la version sans datediff.&lt;br /&gt;
&lt;br /&gt;
==Règles de migration de base==&lt;br /&gt;
&lt;br /&gt;
*Les scripts de migration de structure sont les fichiers de type &#039;&#039;&#039;install/mysql/migration/a.b.c-x.y.z.sql&#039;&#039;&#039;. Dans un fichier de migration de n vers n+1, on ne détruit une table (DROP TABLE) qui n&#039;est plus utilisée en n+1 que lors de la migration de la version n+1 vers n+2. Ceci afin de toujours conserver les tables deprecated le temps d&#039;une version pour réparer une situation en cas d&#039;erreur de migration.&lt;br /&gt;
&lt;br /&gt;
==Spécificités MySQL==&lt;br /&gt;
&lt;br /&gt;
*Les tables doivent être au format InnoDB.&lt;br /&gt;
&lt;br /&gt;
En effet, ce format gère les clés étrangères, les éventuelles restrictions qui y sont attachées et la notion d&#039;intégrité de transactions requise pour avoir des données en base cohérente entre tables.&lt;br /&gt;
&lt;br /&gt;
*Dolibarr DOIT fonctionner même avec les options &#039;&#039;&#039;strict&#039;&#039;&#039; de Mysql active.&lt;br /&gt;
&lt;br /&gt;
Pour l&#039;activer (fortement recommandé en développement), ajouter la ligne suivante dans le fichier config du serveur Mysql (my.cnf ou my.ini)&lt;br /&gt;
{{MySqlStrictMode}}&lt;br /&gt;
&lt;br /&gt;
==Spécificités PostgreSQL==&lt;br /&gt;
Seuls les fichiers pour Mysql doivent être maintenus.&lt;br /&gt;
Les fichiers pour les autres bases sont convertis &amp;quot;à la volée&amp;quot; par le driver Dolibarr de la base.&lt;br /&gt;
&lt;br /&gt;
Il existe une exception.&lt;br /&gt;
Les requêtes &amp;quot;UPDATE FROM&amp;quot; : &lt;br /&gt;
Syntax MySQL :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
UPDATE table_taget as target, table_source as source SET fieldtarget=source.fieldsource&lt;br /&gt;
WHERE source.rowid=target.rowid;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Syntax PgSQL:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
UPDATE table_taget as target SET fieldtarget=source.fieldsource&lt;br /&gt;
FROM table_source as source WHERE source.rowid=target.rowid;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il n&#039;en existe pas dans Dolibarr, mais pour vos modules Vous devriez faire tel que :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
if ($this-&amp;gt;db-&amp;gt;type==&#039;pgsql&#039;) {&lt;br /&gt;
$sql=&amp;quot;UPDATE table_taget as target SET fieldtarget=source.fieldsource&lt;br /&gt;
FROM table_source as source WHERE source.rowid=target.rowid&amp;quot;;&lt;br /&gt;
} else {&lt;br /&gt;
$sql= &amp;quot;UPDATE table_taget as target, table_source as source SET fieldtarget=source.fieldsource&lt;br /&gt;
WHERE source.rowid=target.rowid&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Normes HTML=&lt;br /&gt;
&lt;br /&gt;
*Tous les attributs dans les balises HTML doivent être *en minuscule* et quotés avec des *doubles quote*.&lt;br /&gt;
&lt;br /&gt;
*Les liens href doivent être absolus en se basant sur la fonction dol_buildpath() pour obtenir un chemin absolu depuis un chemin relatif au répertoire htdocs. Pour les tags img, il faut faire appel à la fonction img_picto().&lt;br /&gt;
&lt;br /&gt;
Par example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
print &#039;&amp;lt;a href=&amp;quot;&#039;.dol_buildpath(&#039;/monrep/mapage.php&#039;).&#039;&amp;quot;&amp;gt;&#039;.img_picto(&#039;Texte alt&#039;,&#039;nompictopng&#039;,&#039;&#039;).&#039;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Les tables HTML doivent avoir des colonnes sans valeurs forcées, excepté pour les colonnes qui contiennent une information dont la longueur est non variable. Par exemple, une colonne avec un picto peut être forcée à with=&amp;quot;20px&amp;quot;. Dans les autres cas, il faut éviter de forcer la largeur des colonnes. La raison est que, dans la plupart des cas, le navigateur fait un meilleur travail pour définir automatiquement la bonne largeur des colonnes qu&#039;en forçant manuellement les largeurs. Et ceci marche quelle que soit la résolution de l&#039;écran.&lt;br /&gt;
&lt;br /&gt;
*Le javascript/ajax et l&#039;appel aux scripts java dans les pages php est à proscrire. Si toutefois du code javascript est inclus, il doit être conditionné par le test sur &amp;quot;$conf-&amp;gt;use_javascript_ajax&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
if ($conf-&amp;gt;use_javascript_ajax) {&lt;br /&gt;
...  // Le code php qui génère du javascript est ici&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Les popups windows ne doivent pas être utilisées, sauf pour des tooltips (et restent conditionnées par le point ci-dessus).&lt;br /&gt;
&lt;br /&gt;
*Les scripts externes sont écrits en Perl s&#039;ils ne peuvent l&#039;être en php, l&#039;utilisation d&#039;un autre langage n&#039;est pas interdit mais doit être discuté au préalable dans la mailing list des développeurs.&lt;br /&gt;
&lt;br /&gt;
=Normes Dolibarr et squelettes de code=&lt;br /&gt;
&lt;br /&gt;
==Squelettes de code==&lt;br /&gt;
Afin d&#039;uniformiser le code et d&#039;accélérer le développement de nouveaux composants dans Dolibarr, se trouvent dans le répertoire &#039;&#039;&#039;htdocs/modulebuilder/templates&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Par exemple:&lt;br /&gt;
&lt;br /&gt;
*1 fichier qui sert d&#039;exemple de descripteur de module: &#039;&#039;&#039;myModule.class.php&#039;&#039;&#039;&lt;br /&gt;
*1 fichier qui sert d&#039;exemple de code pour faire une nouvelle classe: &#039;&#039;&#039;skeleton_class.class.php&#039;&#039;&#039;&lt;br /&gt;
*1 fichier qui sert d&#039;exemple de code pour faire une nouvelle page: &#039;&#039;&#039;skeleton_page.php&#039;&#039;&#039;&lt;br /&gt;
*1 fichier qui sert d&#039;exemple de code pour faire un script à exécuter en ligne de commande: &#039;&#039;&#039;skeleton_script.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Servez-vous en comme exemple.&lt;br /&gt;
Notons que ces squelettes sont aussi utilisés par le générateur de code PHP ([[Module ModuleBuilder]]) qui est décrit dans la chapitre de développement de module Dolibarr pour accélérer vos développements.&lt;br /&gt;
&lt;br /&gt;
==Les dates et TimeZone==&lt;br /&gt;
Dolibarr se veut une application multi-utilisateur et multi-localisation. Il convient donc de stocker les dates dans le bon format. Pour éviter les problèmes de conversion, les règles suivantes doivent être appliquées:&lt;br /&gt;
&lt;br /&gt;
*Une date en mémoire doit être au format Timestamp GMT.&lt;br /&gt;
*Une date stockée en base de données contient le Timestamp issue de la date soumise dans la requête en heure &amp;lt;b&amp;gt;locale du serveur PHP&amp;lt;/b&amp;gt;. Cela ne concerne pas les dates mises à jour automatiquement par la base (champ &#039;&#039;&#039;tms&#039;&#039;&#039; en base).&lt;br /&gt;
&lt;br /&gt;
Ainsi le 1er janvier 1970, 3 heures à Paris (TZ=+1) = 1er janvier 1970, 2 heures à Greenwich (TZ=0) sera stocké en mémoire par 7200 et sera soumis à la base de données avec la chaine &#039;19700101030000&#039; (PHP convertit en heure de son TZ et la base déconvertit avec son TZ qui est le même que celui de PHP).&lt;br /&gt;
&lt;br /&gt;
Les méthodes select doivent donc traduire les champs dates lus qui sont au format chaine TZ de la base (&#039;19700101030000&#039;) par appel de la méthode db-&amp;gt;jdate afin de récupérer une information en mémoire au format Timestamp GMT. Et les méthodes insert doivent lors de la génération de la requête convertir la date mémoire connue en variable, par la méthode db-&amp;gt;idate (Voir exemples générés par le squelette).&lt;br /&gt;
&lt;br /&gt;
*Les dates mises à jour automatiquement par la base (champ &#039;&#039;&#039;tms&#039;&#039;&#039; en base) contiennent le Timestamp où la modification est faite selon le timezone de la base de donnée. Les méthodes select récupèrent cette donnée en mémoire au format Timestamp GMT en appliquant également le db-&amp;gt;jdate. Si le timezone de la base de donnée diffère de celui du PHP (un des 2 est mal réglé), il peut donc y avoir des écarts entre date de création et modification.&lt;br /&gt;
&lt;br /&gt;
*La manipulation de dates en PHP doit être faite en utilisant les fonctions dates de Dolibarr: &#039;&#039;&#039;dol_now(), dol_mktime(), dol_stringtotime(), dol_getdate(), dol_time_plus_duree()&#039;&#039;&#039;. Vous trouverez également d&#039;autres fonctions prêtes à l&#039;emploi dans le fichier &#039;&#039;&#039;date.lib.php&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==L&#039;encodage UTF8/ISO==&lt;br /&gt;
Dolibarr stocke les informations de manière suivante:&lt;br /&gt;
&lt;br /&gt;
*En base de donnée, les données sont en UTF8 ou ISO. Cela dépend du pagecode de la base, donc des options à la création de cette base. Dans tous les cas le driver d&#039;accès base Dolibarr (dans /lib/database) s&#039;arrange à la lecture et insertion pour convertir vers et depuis de l&#039;UTF8.&lt;br /&gt;
*Les données en mémoires sont donc stockées en UTF8 (instances d&#039;objets PHP).&lt;br /&gt;
*Les pages web affichées à l&#039;écran sont au format UTF8&lt;br /&gt;
&lt;br /&gt;
==Les nombres réels, montants et calculs==&lt;br /&gt;
En PHP comme dans d&#039;autres langages (Java par exemple), les données non entières (float, real, double) ne sont pas fiables.&lt;br /&gt;
Essayer de faire par exemple &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
print 239.2 - 229.3 - 9.9;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Vous n&#039;obtiendrez pas zéro mais un nombre très petit en puissance de 10 négative. Si vous obtenez zéro, vous pourrez trouvez d&#039;autres exemples qui ne fonctionnent pas.&lt;br /&gt;
Le problème des float est général, une variable résultante de calcul de nombre réels doit SYSTEMATIQUEMENT être nettoyée par la fonction &#039;&#039;&#039;price2num()&#039;&#039;&#039; avec le 2eme paramètre renseigné à: &#039;MU&#039;, &#039;MT&#039; ou &#039;MS&#039; selon le besoin (voir doc fonction).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
print price2num(239.2 - 229.3 - 9.9, &#039;MT&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
S&#039;il ne s&#039;agit pas d&#039;un prix sur lequel s&#039;adapte les paramètres MU, MT ou MS, il faut utiliser la fonction &#039;&#039;&#039;round()&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Création de tables==&lt;br /&gt;
Ne pas créer de table à l&#039;utilisation, c&#039;est-à-dire à la &#039;&#039;&#039;première utilisation&#039;&#039;&#039; du module.&lt;br /&gt;
Si vous créez un module qui utilise des tables qui ne sont pas intégrées en standard dans le code de Dolibarr, veillez à suivre le didacticiel [[Développement module]] qui explique comment joindre des tables qui se créent à l&#039;activation du module et non à son utilisation (voir plus haut).&lt;br /&gt;
&lt;br /&gt;
==Comparer la version==&lt;br /&gt;
&lt;br /&gt;
Si votre code a besoin de faire des choses différentes selon la version de Dolibarr, vous pouvez utiliser le truc suivant pour comparer les versions&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$version=preg_split(&#039;/[\.-]/&#039;,DOL_VERSION);&lt;br /&gt;
if (versioncompare($version,array(5,0,-4)) &amp;gt;= 0) { //mycode for 5.0 only; }	// For dolibarr 5.0.* (the -4 means we include also alpha, beta, rc and rcX)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mais cette solution requiert de faire un include avoir la fonction versioncompare. Une alternative est d&#039;utiliser le test suivant :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
if ((float) DOL_VERSION &amp;gt;= 5.0) { //mycode for 5.0 only; }	// For dolibarr 5.0.*&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Logs==&lt;br /&gt;
Ajouter des traces dans votre code avec la fonction&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
dol_syslog($yourmessage, LOG_INFO|LOG_DEBUG|LOG_WARNING|LOG_ERR);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Répertoires de travail==&lt;br /&gt;
Si vous avez besoin de créer un répertoire de travail, dans votre code, faites référence à ce répertoire par&lt;br /&gt;
&#039;&#039;&#039;DOL_DATA_ROOT.&#039;/monmodule&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le répertoire peut être créé dans votre code à l&#039;exécution par le code suivant:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$mymoduledir=DOL_DATA_ROOT.&#039;/monmodule&#039;;&lt;br /&gt;
dol_mkdir($mymoduledir);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous avez besoin d&#039;un répertoire qui contiendra des données temporaires, ce répertoire doit être&#039;&#039;&#039; DOL_DATA_ROOT.&#039;/monmodule/temp&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Design patterns et programmation objet=&lt;br /&gt;
&lt;br /&gt;
==Design patterns de Création (GoF)==&lt;br /&gt;
Design patterns définis par le Gang Of Four (voir la wikipédia sur les [[wikipedia:Patron de conception|Design patterns]]).&lt;br /&gt;
Dans Dolibarr, pas de mise en oeuvre de design patterns de comportement particulier.&lt;br /&gt;
On trouve des objets proches des Singletons et Fabriques conformes à 100% dans l&#039;esprit mais pas dans la syntaxe, ceci afin d’être compatible avec la plus large plage possible de versions de PHP.&lt;br /&gt;
&lt;br /&gt;
==Design patterns d&#039;entreprises (Martin Fowler)==&lt;br /&gt;
&lt;br /&gt;
===Mode d&#039;organisation du code===&lt;br /&gt;
[[wikipedia:Martin_Fowler|Martin Fowler]] a identifié 3 méthodes d&#039;organisation du code appelées &#039;&#039;&#039;patterns&#039;&#039;&#039; (&#039;&#039;&#039;motifs&#039;&#039;&#039;):&lt;br /&gt;
&lt;br /&gt;
*Le &#039;&#039;&#039;Transaction Script&#039;&#039;&#039; (Le code est linéaire en fonction d&#039;une action utilisateur).&lt;br /&gt;
&lt;br /&gt;
C&#039;est le motif à l&#039;ancienne utilisé dans les langages procéduraux.&lt;br /&gt;
Inconvénient: Redondance du code. Nécessité de connaitre le modèle physique pour développer les parties métiers.&lt;br /&gt;
&lt;br /&gt;
*Le &#039;&#039;&#039;Domain Model&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C&#039;est un concept possible depuis les langages objets. Ce sont les procédures métiers (qui doivent être identifiés avant) qui servent de bases pour les classes objets.&lt;br /&gt;
Inconvénient : Motif complexe à maintenir.&lt;br /&gt;
&lt;br /&gt;
*Le &#039;&#039;&#039;Table Module&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un intermédiaire entre les 2 précédents où l&#039;on a une instance unique de classe par table de la base de données.&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Comme le montre les squelettes de code (voir point précédent), Dolibarr se base sur le principe du &#039;&#039;&#039;Table Module&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Communication Logique métier - Données (ORM)===&lt;br /&gt;
Il existe 3 modes de liaisons:&lt;br /&gt;
&lt;br /&gt;
*Le &#039;&#039;&#039;Table And Row Data Gateway&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C&#039;est le plus simple. On crée une classe par table et chaque classe est un pont avec la table correspondante et propose les méthodes CRUD sur cette table (Create, Read, Update, Delete). Une instance de classe étant alors un enregistrement de la table. La classe ne contient que du code d&#039;accès aux lignes ou colonnes de tables. Le code métier doit alors être ajouté dans d&#039;autres classes. Les liens entre ces classes tables et les classes métiers devant être connues ou déduites de la connaissance du développeur.&lt;br /&gt;
&lt;br /&gt;
Exemple: C&#039;est le mode mis en oeuvre quand on utilise certains Frameworks d&#039;ORM comme &#039;&#039;&#039;iBatis&#039;&#039;&#039; (http://ibatis.apache.org/).&lt;br /&gt;
&lt;br /&gt;
*Le &#039;&#039;&#039;Active Record&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Identique au précédent, mais on se permet d&#039;ajouter quelques fonctions métiers sur la classe, à condition que ces fonctions soient bien  propres à la table ou à la notion métier portée par l&#039;enregistrement. C&#039;est le pattern qui offre le meilleur rapport fonctionnalité/complexité.&lt;br /&gt;
&lt;br /&gt;
Exemple: C&#039;est le mode choisi pour les développements Dolibarr et de nombreuses autres applications PHP qui ont leur propre framework et pratiques de développement.&lt;br /&gt;
&lt;br /&gt;
*Le &#039;&#039;&#039;Data Mapper&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les classes représentent les entités du problème et non les données. Il faut donc doubler, tripler... ces classes avec des classes Mapper pour accéder aux données.&lt;br /&gt;
Plus &amp;quot;puriste&amp;quot; sur le papier car plus proche du métier, ce mode a aussi l&#039;inconvénient d&#039;être très complexe et difficile à maintenir dans la réalité (l&#039;expérience pratique constatée ne rejoignant pas les promesses de la théorie).&lt;br /&gt;
&lt;br /&gt;
Exemple: C&#039;est le choix si on utilise le Framework d&#039;ORM &#039;&#039;&#039;Propel&#039;&#039;&#039; (http://propel.phpdb.org/trac/). On le trouve donc sur des applications plus lourdes basées sur cet ORM entre autres.&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Pour les développements Dolibarr, il est recommandé d&#039;utiliser le mode de liaison &#039;&#039;&#039;Active Record&#039;&#039;&#039; qui offre les avantages d&#039;un modèle proche du métier sans en avoir la complexité et sans trop masquer non plus la technique. C&#039;est dans ce mode que le développement, la compréhension du code et la maintenance technique et/ou fonctionnelle semble la plus productive (ceci est toutefois un éternel débat entre les puristes et les pragmatiques, débat dans lequel personne ne peut vraiment avoir raison, car tout dépend des objectifs à atteindre).&lt;br /&gt;
&lt;br /&gt;
==Design Pattern d&#039;Interface Graphique (MVC)==&lt;br /&gt;
Il existe plusieurs design pattern pour les interfaces utilisateurs (MVC, MVP, MVVM).&lt;br /&gt;
Beaucoup confonde ce design pattern avec celui consistant à utiliser un framework de templates. C&#039;est sans rapport. Un framework de template (voir point précédent) n&#039;est en lien qu&#039;avec la partie &amp;quot;V&amp;quot; de ces modèles.&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Dolibarr utilise le Design Pattern &#039;&#039;&#039;MVC&#039;&#039;&#039;. La partie M est matérialisée par une classe DAO contenant les méthode CRUD (Create-Read-Update-Delete) d&#039;accès à la table.&lt;br /&gt;
Beaucoup de frameworks ont fait le choix de mettre la partie de code C (Controller) et la partie de code du V (vue) dans des fichiers, voir même répertoires séparés. La maintenance semble plus aisé sur la papier, en pratique, il faut sans arrêt jonglé entre n fichiers, le C étant fortement lié au V. Aussi dans Dolibarr, la séparation est faite par une simple section de commentaire. La partie de code C (Controller) est donc le code qui se trouve sont la balise&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 * Actions&lt;br /&gt;
 */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Elle est suivi par la partie de code V (Vue), bien séparé du C par la balise&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 * View&lt;br /&gt;
 */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce mode de séparation a eu un effet neutre sur les nouveaux développement mais a permis de réduire de manière si importante le temps requis pour la maintenance et correction de bugs qu&#039;il n&#039;est pas envisagé de basculer vers un autre type de séparation (oui les constats fait dans la vraie vie ne sont pas toujours ceux attendus par la théorie scolaire). L&#039;important reste qu&#039;il y ait toujours séparation entre le C et le V, peut importe comment est matérialisé cette séparation, du moment qu&#039;elle l&#039;est (Rappel: Ne pas confondre la notion de séparation du C et du V avec la notion de séparation du code pour alimenter la données d&#039;une Vue et du code pour formater la Vue, ceci un principe de séparation relevant du Design Pattern de Vue, voir point suivant).&lt;br /&gt;
&lt;br /&gt;
==Design Pattern de Vue - Présentation==&lt;br /&gt;
Il existe des frameworks spécialisés dans le Design Pattern de Vue, la partie qui consiste à formater l&#039;écran vue par l&#039;utilisateur.&lt;br /&gt;
Les vieilles versions de Dolibarr utilisaient Smarty. Ce framework est une surcouche à un Framework, déjà très puissant, de formatage d&#039;écran nommé... PHP. Les bénéfices étant très inférieurs aux inconvénients, il a été abandonné au profit de templates PHP (fichier .tpl.php) qui restent le plus simple, le plus universel, le plus évolutif et le plus performant, des frameworks de présentation. &lt;br /&gt;
&lt;br /&gt;
Son seul défaut est qu&#039;il ne peut garantir à 100% les écarts d&#039;un développeur qui irait intégrer dans la Vue, une logique sans rapport avec la présentation (donc autre que du code à vocation de génération, de formatage, de sortie HTML, de logique de test ou de boucle). Ce point est toutefois contrôlé par le mécanisme de validation du code des chefs de projets.&lt;br /&gt;
&lt;br /&gt;
La encore, c&#039;est l&#039;expérience et le constat &amp;quot;sur le terrain&amp;quot; d&#039;un meilleur rendement de productivité qui a motivé l&#039;abandon des frameworks de Présentation externes au profit du framework PHP.&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Langages_et_normes&amp;diff=54070</id>
		<title>Langages et normes</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Langages_et_normes&amp;diff=54070"/>
		<updated>2022-06-27T07:23:43Z</updated>

		<summary type="html">&lt;p&gt;Iouston: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- BEGIN interlang links --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Do NOT edit this section&lt;br /&gt;
     Links below are automatically managed by PolyglotBot&lt;br /&gt;
     You can edit links on the English source page : Language_and_development_rules --&amp;gt;&lt;br /&gt;
[[en:Language_and_development_rules]]&lt;br /&gt;
[[de:Sprachen_und_Programmierregeln]]&lt;br /&gt;
[[es:Lenguaje_y_Normas_de_Desarrollo]]&lt;br /&gt;
[[zh:语言和开发规则]]&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{TemplateDocDev}}&lt;br /&gt;
&lt;br /&gt;
Voici les quelques règles sur le langage, la syntaxe et normes de développement en vigueur pour le projet Dolibarr :&lt;br /&gt;
&lt;br /&gt;
=Versions=&lt;br /&gt;
&lt;br /&gt;
*Dolibarr doit fonctionner sur:&lt;br /&gt;
&lt;br /&gt;
#Tous OS (Windows, Linux, MACOS...)&lt;br /&gt;
#PHP {{PHPMinVersion}} (Doit fonctionner sans aucun module PHP complémentaire hors les modules d&#039;accès base de donnée).&lt;br /&gt;
#Mysql {{MySqlMinVersion}}&lt;br /&gt;
&lt;br /&gt;
=Normes Copyright=&lt;br /&gt;
&lt;br /&gt;
*Tout fichier PHP doit avoir un en-tête selon le masque suivant&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/* Copyright (C) YYYY John Doe  &amp;lt;email@email.com&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 * Licence information&lt;br /&gt;
 */&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Quand vous éditez un fichier existant du projet, ajouter une ligne Copyright sous celles existantes.&lt;br /&gt;
&lt;br /&gt;
=Normes PHP=&lt;br /&gt;
&lt;br /&gt;
==PHP==&lt;br /&gt;
&lt;br /&gt;
*Dolibarr est écrit en PHP et supporte toutes versions PHP supérieures à la {{PHPMinVersion}}. Les fichiers doivent tous comporter l&#039;extension .php&lt;br /&gt;
&lt;br /&gt;
*L&#039;appel aux variables superglobales PHP doit passer par les opérateurs dédiés $_COOKIES, $_SERVER, $_ENV. Mais pour récupérer les contenus de $_GET ou $_POST, il faut passer par la fonction dolibarr [[Fonctions utiles Dolibarr|GETPOST()]] .&lt;br /&gt;
&lt;br /&gt;
Les autres opérateurs ($HTTP_SERVER_GET, ...) ayant été passés en deprecated au sein de PHP, ne doivent plus être utilisés. Ainsi le code doit fonctionner y compris quand l&#039;option &#039;&#039;&#039;register_long_arrays&#039;&#039;&#039; est à off.&lt;br /&gt;
De plus, le code doit fonctionner aussi bien quand l&#039;option PHP &#039;&#039;&#039;register_globals&#039;&#039;&#039; est à off (recommandé par PHP)  que quand l&#039;option &#039;&#039;&#039;register_globals&#039;&#039;&#039; est à on (par défaut sur de nombreuses installations).&lt;br /&gt;
&lt;br /&gt;
*Pas d&#039;utilisation de la variable &#039;&#039;&#039;PHP_SELF&#039;&#039;&#039;. Utiliser à la place $_SERVER[&amp;quot;PHP_SELF&amp;quot;]. Notez aussi que le framework Dolibarr passe une routine pour rendre plus sûr le contenu du $_SERVER[&amp;quot;PHP_SELF&amp;quot;] (dans le fichier main.inc.php, donc avant tout traitement métier)&lt;br /&gt;
&lt;br /&gt;
*Quand plusieurs variables doivent être initialisées avec la même valeur, il faut utiliser plusieurs instructions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$var1 = 1; $var2 = 1; $var3 = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
plutôt que&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$var1 = $var2 = $var3 = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
qui est moins performant.&lt;br /&gt;
&lt;br /&gt;
*Les chaines doivent avoir les variables sorties de la chaine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
print &amp;quot;Mon texte affiche ma &amp;quot;.$variable.&amp;quot; !\n&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Les commentaires doivent suivre la syntaxe C, ie un double antislash pour un commentaire d&#039;une ligne et utilisation slash-étoile pour ouvrir un bloc de plusieurs lignes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
/* Bloc de commentaire&lt;br /&gt;
 *&lt;br /&gt;
 * Fin du bloc&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
$monobjet = new MonObjet($db);&lt;br /&gt;
$result=$monobjet-&amp;gt;fetch($idobject);&lt;br /&gt;
&lt;br /&gt;
for ($i = 1 , $i &amp;lt; 2 ; $i++)&lt;br /&gt;
{&lt;br /&gt;
  // commentaire sur une ligne&lt;br /&gt;
  print $i;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Les fonctions doivent retourner une valeur strictement &amp;gt; à 0 en cas de succès, et un nombre &amp;lt; à 0 en cas d&#039;erreur.&lt;br /&gt;
&lt;br /&gt;
*Pas de code mort (non utilisé) dans le code principal de Dolibarr (le code utilisé uniquement par un module externe doit être inclus dans le module externe).&lt;br /&gt;
&lt;br /&gt;
*Utiliser &amp;quot;include_once&amp;quot; pour l&#039;inclusion de tout fichier contenant des définitions de fonction ou de classes (donc fichiers *.class.php et *.lib.php), utiliser &amp;quot;include&amp;quot; pour tout inclusion de fichier de type template ou contenant un mixte de HTML et PHP (donc fichiers *.inc.php et *.tpl.php).&lt;br /&gt;
&lt;br /&gt;
*Le style de code a utiliser est le PSR-12 (https://www.php-fig.org/psr/psr-12/). Seules les règles &amp;quot;MUST&amp;quot; sont imposées. Notez aussi les points/exceptions suivants:&lt;br /&gt;
**La longueur des lignes: PSR-12 indique que la longueur des lignes a une limite &amp;quot;soft&amp;quot; à 120. Il est en effet préférable d&#039;avoir de longues lignes de données de déclaration plutôt que de longues pages car ce code ne contient aucune logique intéressante ou utile, toutefois une limite &amp;quot;hard&amp;quot; a été instauré à &#039;&#039;&#039;1000&#039;&#039;&#039; caractères. Du code qui ira au delà provoquera des erreurs dans la plateforme d&#039;Intégration Continue.&lt;br /&gt;
**Les tabulations sont acceptées : L&#039;autre exception est qu&#039;on ne remplace pas les tabulations systématiquement par des espaces. L&#039;utilisation des tabulations simplifie la vie de certains développeurs. De plus, l&#039;utilisation d&#039;espaces rend certaines fonctions d&#039;autoformatage défectueuses (comme sur certaines versions d&#039;Eclipse, lors de copier-coller).&lt;br /&gt;
**Note 1: Les règles suivantes sont particulièrement importantes :&lt;br /&gt;
***Les fichiers doivent être sauvés en format Unix (LF) et non Windows (CR/LF). Le format Unix étant compatible sur les OS Unix like, Windows, Mac, alors que le format fichier texte Windows pose problème sous certains PHP sous Unix.&lt;br /&gt;
***Les smart tags PHP ne sont pas utilisés. Les sections de code doivent commencer par &#039;&#039;&#039;&amp;lt;?php&#039;&#039;&#039;&lt;br /&gt;
**Note 2: Vous pouvez utiliser le fichier &#039;&#039;&#039;dev/setup/codesniffer/ruleset.xml&#039;&#039;&#039; comme fichier de contrôle pour vérifier votre style de code avec PHPCodeSniffer.&lt;br /&gt;
**Note 3: Vous pouvez utiliser le fichier &#039;&#039;&#039;dev/setup/eclipse/PSR-12 [built-in].xml&#039;&#039;&#039; comme fichier de règles de syntax pour configurer Eclipse.&lt;br /&gt;
**Note 4: Vous remarquerez que le code actuel ne suit pas forcément tout cela. La raison est historique. La règle fut instaurée en cours de route, aussi, si vous trouvez du code non respectueux de ce standard, n&#039;hésitez pas à le corriger.&lt;br /&gt;
&lt;br /&gt;
==Structures des classes et champs==&lt;br /&gt;
&lt;br /&gt;
Certaines propriétés de classes se retrouvent dans de nombreuses classes. Pour homogénéité, on utilisera les noms suivants:&lt;br /&gt;
{{TemplatePHPFields}}&lt;br /&gt;
&lt;br /&gt;
=Normes SQL=&lt;br /&gt;
&lt;br /&gt;
==Structure des tables et champs==&lt;br /&gt;
&lt;br /&gt;
*Toutes les tables sont préfixées pour éviter les conflits de nommage. Aujourd&#039;hui, le préfixe est modifiable au moment de l&#039;installation. Sa valeur par défaut est &amp;lt;tt&amp;gt;llx_&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Structure des tables.&lt;br /&gt;
&lt;br /&gt;
Lorsque vous créez une table, il est recommandé de prendre les même conventions de nommages de tables que les autres tables Dolibarr. Avec, à minima les champs suivant:&lt;br /&gt;
 - rowid INTEGER AUTO_INCREMENT PRIMARY KEY    qui est l&#039;id technique&lt;br /&gt;
 - entity INTEGER default 1                    that is id for the multicompany feature&lt;br /&gt;
 - date_creation   datetime                    that is the creation date&lt;br /&gt;
 - tms             timestamp                   qui sera un champ contenant la date de chaque mise à jour (la base de donnée le gère tout seul, pas besoin de le gérer par le code)&lt;br /&gt;
 - import_key      varchar(32)                 qui contiendra le code d&#039;import YYYYMMDDHHMMSS si vous faites des imports en masse dans la table.&lt;br /&gt;
 - status          smallint                    pour stocker le status d&#039;un object&lt;br /&gt;
&lt;br /&gt;
Eventuellement&lt;br /&gt;
 - fk_user_creat  integer qui est l&#039;id du user de création (fk_user_author also found)&lt;br /&gt;
 - fk_user_modif  integer qui est l&#039;id du user de modification&lt;br /&gt;
 - fk_user_valid  integer qui est l&#039;id du user de validation&lt;br /&gt;
 - fk_soc integer qui est l&#039;id du tiers (si applicable)&lt;br /&gt;
&lt;br /&gt;
*Type des champs&lt;br /&gt;
&lt;br /&gt;
Dans la pratique, afin d&#039;être compatible avec toutes les précisions des pays, syntaxes des bases, on utilisera uniquement les types suivants:&lt;br /&gt;
 - integer pour tout nombre entier, id ou clé étrangère (bigint éventuellement accepté pour les id des très grosses tables)&lt;br /&gt;
 - smallint pour tout numérique entier de petite taille (comme pour stocker un code de status)&lt;br /&gt;
 - double(24,8) pour tout montant&lt;br /&gt;
 - double(6,3) pour les taux de tva&lt;br /&gt;
 - real pour une quantité&lt;br /&gt;
 - varchar pour une chaîne (y compris de longueur 1, le type char est de plus en plus déprécié)&lt;br /&gt;
 - timestamp pour un champ date+heure devant être mis a jour automatiquement&lt;br /&gt;
 - datetime pour un champ date+heure&lt;br /&gt;
 - date pour un champ date&lt;br /&gt;
&lt;br /&gt;
==Clé primaire==&lt;br /&gt;
La clé primaire d&#039;une table s&#039;appelle &amp;lt;tt&amp;gt;rowid&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Il y a quelques tables qui échappent à cette règle actuellement (ex [[Table llx_c_actioncomm]]), pour des raisons historiques. Une évolution pourra être étudiée pour une prochaine version.&lt;br /&gt;
&lt;br /&gt;
==Clés étrangères==&lt;br /&gt;
Le nom d&#039;une clé étrangère commence par le préfixe &amp;lt;tt&amp;gt;fk_&amp;lt;/tt&amp;gt; suivi du nom de la table liée (requis pour éviter doublons globales à la base, problématiques sous certains SGBD comme postgresql) puis du champ lié (pour permettre plusieurs clés étrangères différentes sur une même table).&lt;br /&gt;
&lt;br /&gt;
Exemple:&lt;br /&gt;
fk_facture_fourn_fk_soc&lt;br /&gt;
&lt;br /&gt;
Note: Si vous développez votre propre module externe, il ne doit pas y avoir de clé étrangère depuis vos tables qui pointent sur les tables standards de Dolibarr. Ceci casserait les fonctionnalités de mise à jour, de réparation, de sauvegardes et de restauration.&lt;br /&gt;
&lt;br /&gt;
==Clés alternatives==&lt;br /&gt;
Parfois, il n&#039;y a pas que la clé primaire qui doit être unique. On peut donc ajouter aussi un index clé alternative unique. Un tel index est nommé par un nom qui commence par le préfixe &amp;lt;tt&amp;gt;uk_&amp;lt;/tt&amp;gt; suivi du nom de la table (requis pour éviter doublons d&#039;index globals à la base, problématiques sous certains SGBD comme postgresql) puis d&#039;un suffixe qui caractérise la clé (pour permettre plusieurs index uniques sur une même table).&lt;br /&gt;
&lt;br /&gt;
Exemple:&lt;br /&gt;
uk_societe_code_client&lt;br /&gt;
&lt;br /&gt;
==Index performance==&lt;br /&gt;
Certains champs sont souvent utilisés comme critère de recherche, de tri ou de jointure. Il convient dans ce cas, d&#039;y mettre un index de performance. De tels indexes seront nommés avec un préfix &amp;lt;tt&amp;gt;idx_&amp;lt;/tt&amp;gt; puis le nom de la table et le nom du champ sur lequel porte l&#039;index.&lt;br /&gt;
&lt;br /&gt;
Exemple:&lt;br /&gt;
idx_societe_user_creat&lt;br /&gt;
&lt;br /&gt;
==Format de fichier DDL==&lt;br /&gt;
Les fichiers qui contiennent la définition de la structure de la base (DDL) doivent être au nombre de 2 par tables:&lt;br /&gt;
Chaque table est définie dans son propre fichier dont le nom est &amp;lt;tt&amp;gt;llx_&#039;&#039;matable&#039;&#039;.sql&amp;lt;/tt&amp;gt;. &lt;br /&gt;
On mettra un commentaire à côté de chaque champ pour en expliquer la signification.&lt;br /&gt;
Les clés étrangères et index de performance ou autres contraintes d&#039;unicité sont définies dans un fichier séparé dont le nom est &amp;lt;tt&amp;gt;llx_&#039;&#039;matable&#039;&#039;.key.sql&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ces fichiers sont placés dans le répertoire &#039;&#039;&#039;install/mysql/tables&#039;&#039;&#039; pour les fichiers standards ou &#039;&#039;&#039;monmodule/tables&#039;&#039;&#039; pour les tables amenées par un module.&lt;br /&gt;
&lt;br /&gt;
Exemple &#039;&#039;&#039;fichier table llx_matable.sql&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
-- Copyright (C) 2008 Author &amp;lt;email@author.com&amp;gt;&lt;br /&gt;
-- &lt;br /&gt;
-- This program is free software; you can redistribute it and/or modify&lt;br /&gt;
-- it under the terms of the GNU General Public License as published by&lt;br /&gt;
-- the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
-- (at your option) any later version.&lt;br /&gt;
--&lt;br /&gt;
-- This program is distributed in the hope that it will be useful,&lt;br /&gt;
-- but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
-- GNU General Public License for more details.&lt;br /&gt;
--&lt;br /&gt;
-- You should have received a copy of the GNU General Public License&lt;br /&gt;
-- along with this program. If not, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
&lt;br /&gt;
create table llx_matable&lt;br /&gt;
(&lt;br /&gt;
  rowid       integer AUTO_INCREMENT PRIMARY KEY,&lt;br /&gt;
  field_one   integer,&lt;br /&gt;
  field_two   integer NOT NULL,&lt;br /&gt;
  fk_field    integer,&lt;br /&gt;
  field_date  datetime,&lt;br /&gt;
  tms         timestamp&lt;br /&gt;
)ENGINE=innodb;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple &#039;&#039;&#039;fichier clés/index llx_matable.key.sql&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
-- Copyright (C) 2008 Author &amp;lt;email@author.com&amp;gt;&lt;br /&gt;
-- &lt;br /&gt;
-- This program is free software; you can redistribute it and/or modify&lt;br /&gt;
-- it under the terms of the GNU General Public License as published by&lt;br /&gt;
-- the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
-- (at your option) any later version.&lt;br /&gt;
--&lt;br /&gt;
-- This program is distributed in the hope that it will be useful,&lt;br /&gt;
-- but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
-- GNU General Public License for more details.&lt;br /&gt;
--&lt;br /&gt;
-- You should have received a copy of the GNU General Public License&lt;br /&gt;
-- along with this program. If not, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE llx_matable ADD UNIQUE uk_matable_field(field_one, field_two);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE llx_matable ADD CONSTRAINT fk_matable_fk_field FOREIGN KEY (fk_field) REFERENCES llx_matablepere (rowid);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Règles de codage SQL==&lt;br /&gt;
&lt;br /&gt;
*Utilisation des alias/nommage de champs&lt;br /&gt;
&lt;br /&gt;
Dans le cas des select on pourra utiliser les alias pour simplifier l&#039;écriture des requêtes:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
select chp1, chpxxx2 as chp2 from table2 as t1, table2 as t2 where t1.chpx = t2.chpy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Toutefois, il ne faut pas utiliser ces alias sur des requêtes update car non compatible avec mysql 3.1.&lt;br /&gt;
&lt;br /&gt;
*Les SELECT * sont interdits ! Chaque SELECT doit spécifier la liste complète des champs à récupérer. Cela permet d&#039;éviter les confusions. Exemple:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT field_a, field_b, field_c FROM table_1 WHERE field_d = &#039;$id&#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Dans les requêtes SQL, on quote les champs mais pas les numériques qui contiennent des montants destinés à être stockés dans des champs de type double ou real. Les quotes sur les numériques de type float provoquent parfois un stockage d&#039;une valeur différente. Par exemple 412.62 dans le insert sera en fait stocké avec la valeur 412.61999512 en base (suite à des conversions chaines-numériques implicites) si le champ est de type double(24,8). Et seul le PHP voit 412.61999512. Les autres outils verront 412.62 donnant l&#039;impression qu&#039;il n&#039;y a pas de problème. Et c&#039;est le PHP qui a raison, il y a problème en base. En supprimant les quotes sur les numériques, cela va mieux.&lt;br /&gt;
&lt;br /&gt;
Exemple:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
Bon:     INSERT INTO table_1 (field_txt, field_num) VALUES (&#039;txt&#039;, 412.62)&lt;br /&gt;
Mauvais: INSERT INTO table_1 (field_txt, field_num) VALUES (&#039;txt&#039;, &#039;412.62&#039;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarque, le problème des float est général et pas seulement sur les accès base, il est présent dans tous les languages quand on travaille sur des nombres réels, aussi ils doivent être, dès que affectés, nettoyés par la fonction price2num avec le 2eme paramètre renseigné à:&lt;br /&gt;
&#039;MU&#039; (si il s&#039;agit d&#039;un prix unitaire), &#039;MT&#039; (s&#039;il s&#039;agit d&#039;un prix total) ou &#039;MS&#039; (autres cas) selon le besoin.&lt;br /&gt;
Voir aussi le chapitre &amp;quot;Les nombres réels, montants et calculs&amp;quot; plus bas.&lt;br /&gt;
&lt;br /&gt;
*Les fonctions NOW, SYSDATE ou DATEDIFF sont interdites au sein des ordres SQL. S&#039;il faut saisir la date du moment dans un champ, la valeur doit venir du PHP, par exemple par la fonction dol_now(), et non du moteur de base de données. Ceci afin d&#039;avoir une meilleure portabilité du code mais surtout d&#039;avoir une gestion correcte des TimeZone et ne pas dépendre du TimeZone de la base de donnée.&lt;br /&gt;
&lt;br /&gt;
Par exemple, on ne fera pas:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$sql=&amp;quot;SELECT rowid FROM table where datefield = NOW()&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
mais:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$sql=&amp;quot;SELECT rowid FROM table where datefield = &#039;&amp;quot;.$this-&amp;gt;db-&amp;gt;idate(dol_now()).&amp;quot;&#039;&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple, on ne fera pas:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$sql=&amp;quot;SELECT rowid FROM table where DATEDIFF(table.datefield, NOW()) &amp;gt; 7&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
mais:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$sql=&amp;quot;SELECT rowid FROM table where datefield &amp;lt; &#039;&amp;quot;.$this-&amp;gt;db-&amp;gt;idate(dol_now() - (7 * 24 * 3600)).&amp;quot;&#039;&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un autre avantage de cette règle est que la requête peut bénéficier de l&#039;utilisation de l&#039;index puisqu&#039;on compare datefield à une valeur fixe. Dans le cas du datediff, on applique un traitement sur le champ avant comparaison, rendant impossible l&#039;utilisation de l&#039;index de ce champ. Les conséquences sont des performances très dégradées par rapport à la version sans datediff.&lt;br /&gt;
&lt;br /&gt;
==Règles de migration de base==&lt;br /&gt;
&lt;br /&gt;
*Les scripts de migration de structure sont les fichiers de type &#039;&#039;&#039;install/mysql/migration/a.b.c-x.y.z.sql&#039;&#039;&#039;. Dans un fichier de migration de n vers n+1, on ne détruit une table (DROP TABLE) qui n&#039;est plus utilisée en n+1 que lors de la migration de la version n+1 vers n+2. Ceci afin de toujours conserver les tables deprecated le temps d&#039;une version pour réparer une situation en cas d&#039;erreur de migration.&lt;br /&gt;
&lt;br /&gt;
==Spécificités MySQL==&lt;br /&gt;
&lt;br /&gt;
*Les tables doivent être au format InnoDB.&lt;br /&gt;
&lt;br /&gt;
En effet, ce format gère les clés étrangères, les éventuelles restrictions qui y sont attachées et la notion d&#039;intégrité de transactions requise pour avoir des données en base cohérente entre tables.&lt;br /&gt;
&lt;br /&gt;
*Dolibarr DOIT fonctionner même avec les options &#039;&#039;&#039;strict&#039;&#039;&#039; de Mysql active.&lt;br /&gt;
&lt;br /&gt;
Pour l&#039;activer (fortement recommandé en développement), ajouter la ligne suivante dans le fichier config du serveur Mysql (my.cnf ou my.ini)&lt;br /&gt;
{{MySqlStrictMode}}&lt;br /&gt;
&lt;br /&gt;
==Spécificités PostgreSQL==&lt;br /&gt;
Seuls les fichiers pour Mysql doivent être maintenus.&lt;br /&gt;
Les fichiers pour les autres bases sont convertis &amp;quot;à la volée&amp;quot; par le driver Dolibarr de la base.&lt;br /&gt;
&lt;br /&gt;
Il existe une exception.&lt;br /&gt;
Les requêtes &amp;quot;UPDATE FROM&amp;quot; : &lt;br /&gt;
Syntax MySQL :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
UPDATE table_taget as target, table_source as source SET fieldtarget=source.fieldsource&lt;br /&gt;
WHERE source.rowid=target.rowid;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Syntax PgSQL:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
UPDATE table_taget as target SET fieldtarget=source.fieldsource&lt;br /&gt;
FROM table_source as source WHERE source.rowid=target.rowid;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il n&#039;en existe pas dans Dolibarr, mais pour vos modules Vous devriez faire tel que :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
if ($this-&amp;gt;db-&amp;gt;type==&#039;pgsql&#039;) {&lt;br /&gt;
$sql=&amp;quot;UPDATE table_taget as target SET fieldtarget=source.fieldsource&lt;br /&gt;
FROM table_source as source WHERE source.rowid=target.rowid&amp;quot;;&lt;br /&gt;
} else {&lt;br /&gt;
$sql= &amp;quot;UPDATE table_taget as target, table_source as source SET fieldtarget=source.fieldsource&lt;br /&gt;
WHERE source.rowid=target.rowid&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Normes HTML=&lt;br /&gt;
&lt;br /&gt;
*Tous les attributs dans les balises HTML doivent être *en minuscule* et quotés avec des *doubles quote*.&lt;br /&gt;
&lt;br /&gt;
*Les liens href doivent être absolus en se basant sur la fonction dol_buildpath() pour obtenir un chemin absolu depuis un chemin relatif au répertoire htdocs. Pour les tags img, il faut faire appel à la fonction img_picto().&lt;br /&gt;
&lt;br /&gt;
Par example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
print &#039;&amp;lt;a href=&amp;quot;&#039;.dol_buildpath(&#039;/monrep/mapage.php&#039;).&#039;&amp;quot;&amp;gt;&#039;.img_picto(&#039;Texte alt&#039;,&#039;nompictopng&#039;,&#039;&#039;).&#039;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Les tables HTML doivent avoir des colonnes sans valeurs forcées, excepté pour les colonnes qui contiennent une information dont la longueur est non variable. Par exemple, une colonne avec un picto peut être forcée à with=&amp;quot;20px&amp;quot;. Dans les autres cas, il faut éviter de forcer la largeur des colonnes. La raison est que, dans la plupart des cas, le navigateur fait un meilleur travail pour définir automatiquement la bonne largeur des colonnes qu&#039;en forçant manuellement les largeurs. Et ceci marche quelle que soit la résolution de l&#039;écran.&lt;br /&gt;
&lt;br /&gt;
*Le javascript/ajax et l&#039;appel aux scripts java dans les pages php est à proscrire. Si toutefois du code javascript est inclus, il doit être conditionné par le test sur &amp;quot;$conf-&amp;gt;use_javascript_ajax&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
if ($conf-&amp;gt;use_javascript_ajax) {&lt;br /&gt;
...  // Le code php qui génère du javascript est ici&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Les popups windows ne doivent pas être utilisées, sauf pour des tooltips (et restent conditionnées par le point ci-dessus).&lt;br /&gt;
&lt;br /&gt;
*Les scripts externes sont écrits en Perl s&#039;ils ne peuvent l&#039;être en php, l&#039;utilisation d&#039;un autre langage n&#039;est pas interdit mais doit être discuté au préalable dans la mailing list des développeurs.&lt;br /&gt;
&lt;br /&gt;
=Normes Dolibarr et squelettes de code=&lt;br /&gt;
&lt;br /&gt;
==Squelettes de code==&lt;br /&gt;
Afin d&#039;uniformiser le code et d&#039;accélérer le développement de nouveaux composants dans Dolibarr, se trouvent dans le répertoire &#039;&#039;&#039;htdocs/modulebuilder/templates&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Par exemple:&lt;br /&gt;
&lt;br /&gt;
*1 fichier qui sert d&#039;exemple de descripteur de module: &#039;&#039;&#039;myModule.class.php&#039;&#039;&#039;&lt;br /&gt;
*1 fichier qui sert d&#039;exemple de code pour faire une nouvelle classe: &#039;&#039;&#039;skeleton_class.class.php&#039;&#039;&#039;&lt;br /&gt;
*1 fichier qui sert d&#039;exemple de code pour faire une nouvelle page: &#039;&#039;&#039;skeleton_page.php&#039;&#039;&#039;&lt;br /&gt;
*1 fichier qui sert d&#039;exemple de code pour faire un script à exécuter en ligne de commande: &#039;&#039;&#039;skeleton_script.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Servez-vous en comme exemple.&lt;br /&gt;
Notons que ces squelettes sont aussi utilisés par le générateur de code PHP ([[Module ModuleBuilder]]) qui est décrit dans la chapitre de développement de module Dolibarr pour accélérer vos développements.&lt;br /&gt;
&lt;br /&gt;
==Les dates et TimeZone==&lt;br /&gt;
Dolibarr se veut une application multi-utilisateur et multi-localisation. Il convient donc de stocker les dates dans le bon format. Pour éviter les problèmes de conversion, les règles suivantes doivent être appliquées:&lt;br /&gt;
&lt;br /&gt;
*Une date en mémoire doit être au format Timestamp GMT.&lt;br /&gt;
*Une date stockée en base de données contient le Timestamp issue de la date soumise dans la requête en heure &amp;lt;b&amp;gt;locale du serveur PHP&amp;lt;/b&amp;gt;. Cela ne concerne pas les dates mises à jour automatiquement par la base (champ &#039;&#039;&#039;tms&#039;&#039;&#039; en base).&lt;br /&gt;
&lt;br /&gt;
Ainsi le 1er janvier 1970, 3 heures à Paris (TZ=+1) = 1er janvier 1970, 2 heures à Greenwich (TZ=0) sera stocké en mémoire par 7200 et sera soumis à la base de données avec la chaine &#039;19700101030000&#039; (PHP convertit en heure de son TZ et la base déconvertit avec son TZ qui est le même que celui de PHP).&lt;br /&gt;
&lt;br /&gt;
Les méthodes select doivent donc traduire les champs dates lus qui sont au format chaine TZ de la base (&#039;19700101030000&#039;) par appel de la méthode db-&amp;gt;jdate afin de récupérer une information en mémoire au format Timestamp GMT. Et les méthodes insert doivent lors de la génération de la requête convertir la date mémoire connue en variable, par la méthode db-&amp;gt;idate (Voir exemples générés par le squelette).&lt;br /&gt;
&lt;br /&gt;
*Les dates mises à jour automatiquement par la base (champ &#039;&#039;&#039;tms&#039;&#039;&#039; en base) contiennent le Timestamp où la modification est faite selon le timezone de la base de donnée. Les méthodes select récupèrent cette donnée en mémoire au format Timestamp GMT en appliquant également le db-&amp;gt;jdate. Si le timezone de la base de donnée diffère de celui du PHP (un des 2 est mal réglé), il peut donc y avoir des écarts entre date de création et modification.&lt;br /&gt;
&lt;br /&gt;
*La manipulation de dates en PHP doit être faite en utilisant les fonctions dates de Dolibarr: &#039;&#039;&#039;dol_now(), dol_mktime(), dol_stringtotime(), dol_getdate(), dol_time_plus_duree()&#039;&#039;&#039;. Vous trouverez également d&#039;autres fonctions prêtes à l&#039;emploi dans le fichier &#039;&#039;&#039;date.lib.php&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==L&#039;encodage UTF8/ISO==&lt;br /&gt;
Dolibarr stocke les informations de manière suivante:&lt;br /&gt;
&lt;br /&gt;
*En base de donnée, les données sont en UTF8 ou ISO. Cela dépend du pagecode de la base, donc des options à la création de cette base. Dans tous les cas le driver d&#039;accès base Dolibarr (dans /lib/database) s&#039;arrange à la lecture et insertion pour convertir vers et depuis de l&#039;UTF8.&lt;br /&gt;
*Les données en mémoires sont donc stockées en UTF8 (instances d&#039;objets PHP).&lt;br /&gt;
*Les pages web affichées à l&#039;écran sont au format UTF8&lt;br /&gt;
&lt;br /&gt;
==Les nombres réels, montants et calculs==&lt;br /&gt;
En PHP comme dans d&#039;autres langages (Java par exemple), les données non entières (float, real, double) ne sont pas fiables.&lt;br /&gt;
Essayer de faire par exemple &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
print 239.2 - 229.3 - 9.9;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Vous n&#039;obtiendrez pas zéro mais un nombre très petit en puissance de 10 négative. Si vous obtenez zéro, vous pourrez trouvez d&#039;autres exemples qui ne fonctionnent pas.&lt;br /&gt;
Le problème des float est général, une variable résultante de calcul de nombre réels doit SYSTEMATIQUEMENT être nettoyée par la fonction &#039;&#039;&#039;price2num()&#039;&#039;&#039; avec le 2eme paramètre renseigné à: &#039;MU&#039;, &#039;MT&#039; ou &#039;MS&#039; selon le besoin (voir doc fonction).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
print price2num(239.2 - 229.3 - 9.9, &#039;MT&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
S&#039;il ne s&#039;agit pas d&#039;un prix sur lequel s&#039;adapte les paramètres MU, MT ou MS, il faut utiliser la fonction &#039;&#039;&#039;round()&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Création de tables==&lt;br /&gt;
Ne pas créer de table à l&#039;utilisation, c&#039;est-à-dire à la &#039;&#039;&#039;première utilisation&#039;&#039;&#039; du module.&lt;br /&gt;
Si vous créez un module qui utilise des tables qui ne sont pas intégrées en standard dans le code de Dolibarr, veillez à suivre le didacticiel [[Développement module]] qui explique comment joindre des tables qui se créent à l&#039;activation du module et non à son utilisation (voir plus haut).&lt;br /&gt;
&lt;br /&gt;
==Comparer la version==&lt;br /&gt;
&lt;br /&gt;
Si votre code a besoin de faire des choses différentes selon la version de Dolibarr, vous pouvez utiliser le truc suivant pour comparer les versions&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$version=preg_split(&#039;/[\.-]/&#039;,DOL_VERSION);&lt;br /&gt;
if (versioncompare($version,array(5,0,-4)) &amp;gt;= 0) { //mycode for 5.0 only; }	// For dolibarr 5.0.* (the -4 means we include also alpha, beta, rc and rcX)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mais cette solution requiert de faire un include avoir la fonction versioncompare. Une alternative est d&#039;utiliser le test suivant :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
if ((float) DOL_VERSION &amp;gt;= 5.0) { //mycode for 5.0 only; }	// For dolibarr 5.0.*&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il également possible de faire appel à la fonction version_compare de php, ce qui donne ici : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
if ((float) DOL_VERSION &amp;gt;= 5.0) { //mycode for 5.0 only; }	// For dolibarr 5.0.*&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Logs==&lt;br /&gt;
Ajouter des traces dans votre code avec la fonction&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
dol_syslog($yourmessage, LOG_INFO|LOG_DEBUG|LOG_WARNING|LOG_ERR);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Répertoires de travail==&lt;br /&gt;
Si vous avez besoin de créer un répertoire de travail, dans votre code, faites référence à ce répertoire par&lt;br /&gt;
&#039;&#039;&#039;DOL_DATA_ROOT.&#039;/monmodule&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le répertoire peut être créé dans votre code à l&#039;exécution par le code suivant:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$mymoduledir=DOL_DATA_ROOT.&#039;/monmodule&#039;;&lt;br /&gt;
dol_mkdir($mymoduledir);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous avez besoin d&#039;un répertoire qui contiendra des données temporaires, ce répertoire doit être&#039;&#039;&#039; DOL_DATA_ROOT.&#039;/monmodule/temp&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Design patterns et programmation objet=&lt;br /&gt;
&lt;br /&gt;
==Design patterns de Création (GoF)==&lt;br /&gt;
Design patterns définis par le Gang Of Four (voir la wikipédia sur les [[wikipedia:Patron de conception|Design patterns]]).&lt;br /&gt;
Dans Dolibarr, pas de mise en oeuvre de design patterns de comportement particulier.&lt;br /&gt;
On trouve des objets proches des Singletons et Fabriques conformes à 100% dans l&#039;esprit mais pas dans la syntaxe, ceci afin d’être compatible avec la plus large plage possible de versions de PHP.&lt;br /&gt;
&lt;br /&gt;
==Design patterns d&#039;entreprises (Martin Fowler)==&lt;br /&gt;
&lt;br /&gt;
===Mode d&#039;organisation du code===&lt;br /&gt;
[[wikipedia:Martin_Fowler|Martin Fowler]] a identifié 3 méthodes d&#039;organisation du code appelées &#039;&#039;&#039;patterns&#039;&#039;&#039; (&#039;&#039;&#039;motifs&#039;&#039;&#039;):&lt;br /&gt;
&lt;br /&gt;
*Le &#039;&#039;&#039;Transaction Script&#039;&#039;&#039; (Le code est linéaire en fonction d&#039;une action utilisateur).&lt;br /&gt;
&lt;br /&gt;
C&#039;est le motif à l&#039;ancienne utilisé dans les langages procéduraux.&lt;br /&gt;
Inconvénient: Redondance du code. Nécessité de connaitre le modèle physique pour développer les parties métiers.&lt;br /&gt;
&lt;br /&gt;
*Le &#039;&#039;&#039;Domain Model&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C&#039;est un concept possible depuis les langages objets. Ce sont les procédures métiers (qui doivent être identifiés avant) qui servent de bases pour les classes objets.&lt;br /&gt;
Inconvénient : Motif complexe à maintenir.&lt;br /&gt;
&lt;br /&gt;
*Le &#039;&#039;&#039;Table Module&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un intermédiaire entre les 2 précédents où l&#039;on a une instance unique de classe par table de la base de données.&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Comme le montre les squelettes de code (voir point précédent), Dolibarr se base sur le principe du &#039;&#039;&#039;Table Module&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Communication Logique métier - Données (ORM)===&lt;br /&gt;
Il existe 3 modes de liaisons:&lt;br /&gt;
&lt;br /&gt;
*Le &#039;&#039;&#039;Table And Row Data Gateway&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C&#039;est le plus simple. On crée une classe par table et chaque classe est un pont avec la table correspondante et propose les méthodes CRUD sur cette table (Create, Read, Update, Delete). Une instance de classe étant alors un enregistrement de la table. La classe ne contient que du code d&#039;accès aux lignes ou colonnes de tables. Le code métier doit alors être ajouté dans d&#039;autres classes. Les liens entre ces classes tables et les classes métiers devant être connues ou déduites de la connaissance du développeur.&lt;br /&gt;
&lt;br /&gt;
Exemple: C&#039;est le mode mis en oeuvre quand on utilise certains Frameworks d&#039;ORM comme &#039;&#039;&#039;iBatis&#039;&#039;&#039; (http://ibatis.apache.org/).&lt;br /&gt;
&lt;br /&gt;
*Le &#039;&#039;&#039;Active Record&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Identique au précédent, mais on se permet d&#039;ajouter quelques fonctions métiers sur la classe, à condition que ces fonctions soient bien  propres à la table ou à la notion métier portée par l&#039;enregistrement. C&#039;est le pattern qui offre le meilleur rapport fonctionnalité/complexité.&lt;br /&gt;
&lt;br /&gt;
Exemple: C&#039;est le mode choisi pour les développements Dolibarr et de nombreuses autres applications PHP qui ont leur propre framework et pratiques de développement.&lt;br /&gt;
&lt;br /&gt;
*Le &#039;&#039;&#039;Data Mapper&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les classes représentent les entités du problème et non les données. Il faut donc doubler, tripler... ces classes avec des classes Mapper pour accéder aux données.&lt;br /&gt;
Plus &amp;quot;puriste&amp;quot; sur le papier car plus proche du métier, ce mode a aussi l&#039;inconvénient d&#039;être très complexe et difficile à maintenir dans la réalité (l&#039;expérience pratique constatée ne rejoignant pas les promesses de la théorie).&lt;br /&gt;
&lt;br /&gt;
Exemple: C&#039;est le choix si on utilise le Framework d&#039;ORM &#039;&#039;&#039;Propel&#039;&#039;&#039; (http://propel.phpdb.org/trac/). On le trouve donc sur des applications plus lourdes basées sur cet ORM entre autres.&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Pour les développements Dolibarr, il est recommandé d&#039;utiliser le mode de liaison &#039;&#039;&#039;Active Record&#039;&#039;&#039; qui offre les avantages d&#039;un modèle proche du métier sans en avoir la complexité et sans trop masquer non plus la technique. C&#039;est dans ce mode que le développement, la compréhension du code et la maintenance technique et/ou fonctionnelle semble la plus productive (ceci est toutefois un éternel débat entre les puristes et les pragmatiques, débat dans lequel personne ne peut vraiment avoir raison, car tout dépend des objectifs à atteindre).&lt;br /&gt;
&lt;br /&gt;
==Design Pattern d&#039;Interface Graphique (MVC)==&lt;br /&gt;
Il existe plusieurs design pattern pour les interfaces utilisateurs (MVC, MVP, MVVM).&lt;br /&gt;
Beaucoup confonde ce design pattern avec celui consistant à utiliser un framework de templates. C&#039;est sans rapport. Un framework de template (voir point précédent) n&#039;est en lien qu&#039;avec la partie &amp;quot;V&amp;quot; de ces modèles.&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Dolibarr utilise le Design Pattern &#039;&#039;&#039;MVC&#039;&#039;&#039;. La partie M est matérialisée par une classe DAO contenant les méthode CRUD (Create-Read-Update-Delete) d&#039;accès à la table.&lt;br /&gt;
Beaucoup de frameworks ont fait le choix de mettre la partie de code C (Controller) et la partie de code du V (vue) dans des fichiers, voir même répertoires séparés. La maintenance semble plus aisé sur la papier, en pratique, il faut sans arrêt jonglé entre n fichiers, le C étant fortement lié au V. Aussi dans Dolibarr, la séparation est faite par une simple section de commentaire. La partie de code C (Controller) est donc le code qui se trouve sont la balise&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 * Actions&lt;br /&gt;
 */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Elle est suivi par la partie de code V (Vue), bien séparé du C par la balise&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 * View&lt;br /&gt;
 */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce mode de séparation a eu un effet neutre sur les nouveaux développement mais a permis de réduire de manière si importante le temps requis pour la maintenance et correction de bugs qu&#039;il n&#039;est pas envisagé de basculer vers un autre type de séparation (oui les constats fait dans la vraie vie ne sont pas toujours ceux attendus par la théorie scolaire). L&#039;important reste qu&#039;il y ait toujours séparation entre le C et le V, peut importe comment est matérialisé cette séparation, du moment qu&#039;elle l&#039;est (Rappel: Ne pas confondre la notion de séparation du C et du V avec la notion de séparation du code pour alimenter la données d&#039;une Vue et du code pour formater la Vue, ceci un principe de séparation relevant du Design Pattern de Vue, voir point suivant).&lt;br /&gt;
&lt;br /&gt;
==Design Pattern de Vue - Présentation==&lt;br /&gt;
Il existe des frameworks spécialisés dans le Design Pattern de Vue, la partie qui consiste à formater l&#039;écran vue par l&#039;utilisateur.&lt;br /&gt;
Les vieilles versions de Dolibarr utilisaient Smarty. Ce framework est une surcouche à un Framework, déjà très puissant, de formatage d&#039;écran nommé... PHP. Les bénéfices étant très inférieurs aux inconvénients, il a été abandonné au profit de templates PHP (fichier .tpl.php) qui restent le plus simple, le plus universel, le plus évolutif et le plus performant, des frameworks de présentation. &lt;br /&gt;
&lt;br /&gt;
Son seul défaut est qu&#039;il ne peut garantir à 100% les écarts d&#039;un développeur qui irait intégrer dans la Vue, une logique sans rapport avec la présentation (donc autre que du code à vocation de génération, de formatage, de sortie HTML, de logique de test ou de boucle). Ce point est toutefois contrôlé par le mécanisme de validation du code des chefs de projets.&lt;br /&gt;
&lt;br /&gt;
La encore, c&#039;est l&#039;expérience et le constat &amp;quot;sur le terrain&amp;quot; d&#039;un meilleur rendement de productivité qui a motivé l&#039;abandon des frameworks de Présentation externes au profit du framework PHP.&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Langages_et_normes&amp;diff=54069</id>
		<title>Langages et normes</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Langages_et_normes&amp;diff=54069"/>
		<updated>2022-06-27T07:22:33Z</updated>

		<summary type="html">&lt;p&gt;Iouston: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- BEGIN interlang links --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Do NOT edit this section&lt;br /&gt;
     Links below are automatically managed by PolyglotBot&lt;br /&gt;
     You can edit links on the English source page : Language_and_development_rules --&amp;gt;&lt;br /&gt;
[[en:Language_and_development_rules]]&lt;br /&gt;
[[de:Sprachen_und_Programmierregeln]]&lt;br /&gt;
[[es:Lenguaje_y_Normas_de_Desarrollo]]&lt;br /&gt;
[[zh:语言和开发规则]]&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{TemplateDocDev}}&lt;br /&gt;
&lt;br /&gt;
Voici les quelques règles sur le langage, la syntaxe et normes de développement en vigueur pour le projet Dolibarr :&lt;br /&gt;
&lt;br /&gt;
=Versions=&lt;br /&gt;
&lt;br /&gt;
*Dolibarr doit fonctionner sur:&lt;br /&gt;
&lt;br /&gt;
#Tous OS (Windows, Linux, MACOS...)&lt;br /&gt;
#PHP {{PHPMinVersion}} (Doit fonctionner sans aucun module PHP complémentaire hors les modules d&#039;accès base de donnée).&lt;br /&gt;
#Mysql {{MySqlMinVersion}}&lt;br /&gt;
&lt;br /&gt;
=Normes Copyright=&lt;br /&gt;
&lt;br /&gt;
*Tout fichier PHP doit avoir un en-tête selon le masque suivant&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/* Copyright (C) YYYY John Doe  &amp;lt;email@email.com&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 * Licence information&lt;br /&gt;
 */&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Quand vous éditez un fichier existant du projet, ajouter une ligne Copyright sous celles existantes.&lt;br /&gt;
&lt;br /&gt;
=Normes PHP=&lt;br /&gt;
&lt;br /&gt;
==PHP==&lt;br /&gt;
&lt;br /&gt;
*Dolibarr est écrit en PHP et supporte toutes versions PHP supérieures à la {{PHPMinVersion}}. Les fichiers doivent tous comporter l&#039;extension .php&lt;br /&gt;
&lt;br /&gt;
*L&#039;appel aux variables superglobales PHP doit passer par les opérateurs dédiés $_COOKIES, $_SERVER, $_ENV. Mais pour récupérer les contenus de $_GET ou $_POST, il faut passer par la fonction dolibarr [[Fonctions utiles Dolibarr|GETPOST()]] .&lt;br /&gt;
&lt;br /&gt;
Les autres opérateurs ($HTTP_SERVER_GET, ...) ayant été passés en deprecated au sein de PHP, ne doivent plus être utilisés. Ainsi le code doit fonctionner y compris quand l&#039;option &#039;&#039;&#039;register_long_arrays&#039;&#039;&#039; est à off.&lt;br /&gt;
De plus, le code doit fonctionner aussi bien quand l&#039;option PHP &#039;&#039;&#039;register_globals&#039;&#039;&#039; est à off (recommandé par PHP)  que quand l&#039;option &#039;&#039;&#039;register_globals&#039;&#039;&#039; est à on (par défaut sur de nombreuses installations).&lt;br /&gt;
&lt;br /&gt;
*Pas d&#039;utilisation de la variable &#039;&#039;&#039;PHP_SELF&#039;&#039;&#039;. Utiliser à la place $_SERVER[&amp;quot;PHP_SELF&amp;quot;]. Notez aussi que le framework Dolibarr passe une routine pour rendre plus sûr le contenu du $_SERVER[&amp;quot;PHP_SELF&amp;quot;] (dans le fichier main.inc.php, donc avant tout traitement métier)&lt;br /&gt;
&lt;br /&gt;
*Quand plusieurs variables doivent être initialisées avec la même valeur, il faut utiliser plusieurs instructions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$var1 = 1; $var2 = 1; $var3 = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
plutôt que&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$var1 = $var2 = $var3 = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
qui est moins performant.&lt;br /&gt;
&lt;br /&gt;
*Les chaines doivent avoir les variables sorties de la chaine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
print &amp;quot;Mon texte affiche ma &amp;quot;.$variable.&amp;quot; !\n&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Les commentaires doivent suivre la syntaxe C, ie un double antislash pour un commentaire d&#039;une ligne et utilisation slash-étoile pour ouvrir un bloc de plusieurs lignes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
/* Bloc de commentaire&lt;br /&gt;
 *&lt;br /&gt;
 * Fin du bloc&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
$monobjet = new MonObjet($db);&lt;br /&gt;
$result=$monobjet-&amp;gt;fetch($idobject);&lt;br /&gt;
&lt;br /&gt;
for ($i = 1 , $i &amp;lt; 2 ; $i++)&lt;br /&gt;
{&lt;br /&gt;
  // commentaire sur une ligne&lt;br /&gt;
  print $i;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Les fonctions doivent retourner une valeur strictement &amp;gt; à 0 en cas de succès, et un nombre &amp;lt; à 0 en cas d&#039;erreur.&lt;br /&gt;
&lt;br /&gt;
*Pas de code mort (non utilisé) dans le code principal de Dolibarr (le code utilisé uniquement par un module externe doit être inclus dans le module externe).&lt;br /&gt;
&lt;br /&gt;
*Utiliser &amp;quot;include_once&amp;quot; pour l&#039;inclusion de tout fichier contenant des définitions de fonction ou de classes (donc fichiers *.class.php et *.lib.php), utiliser &amp;quot;include&amp;quot; pour tout inclusion de fichier de type template ou contenant un mixte de HTML et PHP (donc fichiers *.inc.php et *.tpl.php).&lt;br /&gt;
&lt;br /&gt;
*Le style de code a utiliser est le PSR-12 (https://www.php-fig.org/psr/psr-12/). Seules les règles &amp;quot;MUST&amp;quot; sont imposées. Notez aussi les points/exceptions suivants:&lt;br /&gt;
**La longueur des lignes: PSR-12 indique que la longueur des lignes a une limite &amp;quot;soft&amp;quot; à 120. Il est en effet préférable d&#039;avoir de longues lignes de données de déclaration plutôt que de longues pages car ce code ne contient aucune logique intéressante ou utile, toutefois une limite &amp;quot;hard&amp;quot; a été instauré à &#039;&#039;&#039;1000&#039;&#039;&#039; caractères. Du code qui ira au delà provoquera des erreurs dans la plateforme d&#039;Intégration Continue.&lt;br /&gt;
**Les tabulations sont acceptées : L&#039;autre exception est qu&#039;on ne remplace pas les tabulations systématiquement par des espaces. L&#039;utilisation des tabulations simplifie la vie de certains développeurs. De plus, l&#039;utilisation d&#039;espaces rend certaines fonctions d&#039;autoformatage défectueuses (comme sur certaines versions d&#039;Eclipse, lors de copier-coller).&lt;br /&gt;
**Note 1: Les règles suivantes sont particulièrement importantes :&lt;br /&gt;
***Les fichiers doivent être sauvés en format Unix (LF) et non Windows (CR/LF). Le format Unix étant compatible sur les OS Unix like, Windows, Mac, alors que le format fichier texte Windows pose problème sous certains PHP sous Unix.&lt;br /&gt;
***Les smart tags PHP ne sont pas utilisés. Les sections de code doivent commencer par &#039;&#039;&#039;&amp;lt;?php&#039;&#039;&#039;&lt;br /&gt;
**Note 2: Vous pouvez utiliser le fichier &#039;&#039;&#039;dev/setup/codesniffer/ruleset.xml&#039;&#039;&#039; comme fichier de contrôle pour vérifier votre style de code avec PHPCodeSniffer.&lt;br /&gt;
**Note 3: Vous pouvez utiliser le fichier &#039;&#039;&#039;dev/setup/eclipse/PSR-12 [built-in].xml&#039;&#039;&#039; comme fichier de règles de syntax pour configurer Eclipse.&lt;br /&gt;
**Note 4: Vous remarquerez que le code actuel ne suit pas forcément tout cela. La raison est historique. La règle fut instaurée en cours de route, aussi, si vous trouvez du code non respectueux de ce standard, n&#039;hésitez pas à le corriger.&lt;br /&gt;
&lt;br /&gt;
==Structures des classes et champs==&lt;br /&gt;
&lt;br /&gt;
Certaines propriétés de classes se retrouvent dans de nombreuses classes. Pour homogénéité, on utilisera les noms suivants:&lt;br /&gt;
{{TemplatePHPFields}}&lt;br /&gt;
&lt;br /&gt;
=Normes SQL=&lt;br /&gt;
&lt;br /&gt;
==Structure des tables et champs==&lt;br /&gt;
&lt;br /&gt;
*Toutes les tables sont préfixées pour éviter les conflits de nommage. Aujourd&#039;hui, le préfixe est modifiable au moment de l&#039;installation. Sa valeur par défaut est &amp;lt;tt&amp;gt;llx_&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Structure des tables.&lt;br /&gt;
&lt;br /&gt;
Lorsque vous créez une table, il est recommandé de prendre les même conventions de nommages de tables que les autres tables Dolibarr. Avec, à minima les champs suivant:&lt;br /&gt;
 - rowid INTEGER AUTO_INCREMENT PRIMARY KEY    qui est l&#039;id technique&lt;br /&gt;
 - entity INTEGER default 1                    that is id for the multicompany feature&lt;br /&gt;
 - date_creation   datetime                    that is the creation date&lt;br /&gt;
 - tms             timestamp                   qui sera un champ contenant la date de chaque mise à jour (la base de donnée le gère tout seul, pas besoin de le gérer par le code)&lt;br /&gt;
 - import_key      varchar(32)                 qui contiendra le code d&#039;import YYYYMMDDHHMMSS si vous faites des imports en masse dans la table.&lt;br /&gt;
 - status          smallint                    pour stocker le status d&#039;un object&lt;br /&gt;
&lt;br /&gt;
Eventuellement&lt;br /&gt;
 - fk_user_creat  integer qui est l&#039;id du user de création (fk_user_author also found)&lt;br /&gt;
 - fk_user_modif  integer qui est l&#039;id du user de modification&lt;br /&gt;
 - fk_user_valid  integer qui est l&#039;id du user de validation&lt;br /&gt;
 - fk_soc integer qui est l&#039;id du tiers (si applicable)&lt;br /&gt;
&lt;br /&gt;
*Type des champs&lt;br /&gt;
&lt;br /&gt;
Dans la pratique, afin d&#039;être compatible avec toutes les précisions des pays, syntaxes des bases, on utilisera uniquement les types suivants:&lt;br /&gt;
 - integer pour tout nombre entier, id ou clé étrangère (bigint éventuellement accepté pour les id des très grosses tables)&lt;br /&gt;
 - smallint pour tout numérique entier de petite taille (comme pour stocker un code de status)&lt;br /&gt;
 - double(24,8) pour tout montant&lt;br /&gt;
 - double(6,3) pour les taux de tva&lt;br /&gt;
 - real pour une quantité&lt;br /&gt;
 - varchar pour une chaîne (y compris de longueur 1, le type char est de plus en plus déprécié)&lt;br /&gt;
 - timestamp pour un champ date+heure devant être mis a jour automatiquement&lt;br /&gt;
 - datetime pour un champ date+heure&lt;br /&gt;
 - date pour un champ date&lt;br /&gt;
&lt;br /&gt;
==Clé primaire==&lt;br /&gt;
La clé primaire d&#039;une table s&#039;appelle &amp;lt;tt&amp;gt;rowid&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Il y a quelques tables qui échappent à cette règle actuellement (ex [[Table llx_c_actioncomm]]), pour des raisons historiques. Une évolution pourra être étudiée pour une prochaine version.&lt;br /&gt;
&lt;br /&gt;
==Clés étrangères==&lt;br /&gt;
Le nom d&#039;une clé étrangère commence par le préfixe &amp;lt;tt&amp;gt;fk_&amp;lt;/tt&amp;gt; suivi du nom de la table liée (requis pour éviter doublons globales à la base, problématiques sous certains SGBD comme postgresql) puis du champ lié (pour permettre plusieurs clés étrangères différentes sur une même table).&lt;br /&gt;
&lt;br /&gt;
Exemple:&lt;br /&gt;
fk_facture_fourn_fk_soc&lt;br /&gt;
&lt;br /&gt;
Note: Si vous développez votre propre module externe, il ne doit pas y avoir de clé étrangère depuis vos tables qui pointent sur les tables standards de Dolibarr. Ceci casserait les fonctionnalités de mise à jour, de réparation, de sauvegardes et de restauration.&lt;br /&gt;
&lt;br /&gt;
==Clés alternatives==&lt;br /&gt;
Parfois, il n&#039;y a pas que la clé primaire qui doit être unique. On peut donc ajouter aussi un index clé alternative unique. Un tel index est nommé par un nom qui commence par le préfixe &amp;lt;tt&amp;gt;uk_&amp;lt;/tt&amp;gt; suivi du nom de la table (requis pour éviter doublons d&#039;index globals à la base, problématiques sous certains SGBD comme postgresql) puis d&#039;un suffixe qui caractérise la clé (pour permettre plusieurs index uniques sur une même table).&lt;br /&gt;
&lt;br /&gt;
Exemple:&lt;br /&gt;
uk_societe_code_client&lt;br /&gt;
&lt;br /&gt;
==Index performance==&lt;br /&gt;
Certains champs sont souvent utilisés comme critère de recherche, de tri ou de jointure. Il convient dans ce cas, d&#039;y mettre un index de performance. De tels indexes seront nommés avec un préfix &amp;lt;tt&amp;gt;idx_&amp;lt;/tt&amp;gt; puis le nom de la table et le nom du champ sur lequel porte l&#039;index.&lt;br /&gt;
&lt;br /&gt;
Exemple:&lt;br /&gt;
idx_societe_user_creat&lt;br /&gt;
&lt;br /&gt;
==Format de fichier DDL==&lt;br /&gt;
Les fichiers qui contiennent la définition de la structure de la base (DDL) doivent être au nombre de 2 par tables:&lt;br /&gt;
Chaque table est définie dans son propre fichier dont le nom est &amp;lt;tt&amp;gt;llx_&#039;&#039;matable&#039;&#039;.sql&amp;lt;/tt&amp;gt;. &lt;br /&gt;
On mettra un commentaire à côté de chaque champ pour en expliquer la signification.&lt;br /&gt;
Les clés étrangères et index de performance ou autres contraintes d&#039;unicité sont définies dans un fichier séparé dont le nom est &amp;lt;tt&amp;gt;llx_&#039;&#039;matable&#039;&#039;.key.sql&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ces fichiers sont placés dans le répertoire &#039;&#039;&#039;install/mysql/tables&#039;&#039;&#039; pour les fichiers standards ou &#039;&#039;&#039;monmodule/tables&#039;&#039;&#039; pour les tables amenées par un module.&lt;br /&gt;
&lt;br /&gt;
Exemple &#039;&#039;&#039;fichier table llx_matable.sql&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
-- Copyright (C) 2008 Author &amp;lt;email@author.com&amp;gt;&lt;br /&gt;
-- &lt;br /&gt;
-- This program is free software; you can redistribute it and/or modify&lt;br /&gt;
-- it under the terms of the GNU General Public License as published by&lt;br /&gt;
-- the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
-- (at your option) any later version.&lt;br /&gt;
--&lt;br /&gt;
-- This program is distributed in the hope that it will be useful,&lt;br /&gt;
-- but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
-- GNU General Public License for more details.&lt;br /&gt;
--&lt;br /&gt;
-- You should have received a copy of the GNU General Public License&lt;br /&gt;
-- along with this program. If not, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
&lt;br /&gt;
create table llx_matable&lt;br /&gt;
(&lt;br /&gt;
  rowid       integer AUTO_INCREMENT PRIMARY KEY,&lt;br /&gt;
  field_one   integer,&lt;br /&gt;
  field_two   integer NOT NULL,&lt;br /&gt;
  fk_field    integer,&lt;br /&gt;
  field_date  datetime,&lt;br /&gt;
  tms         timestamp&lt;br /&gt;
)ENGINE=innodb;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple &#039;&#039;&#039;fichier clés/index llx_matable.key.sql&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
-- Copyright (C) 2008 Author &amp;lt;email@author.com&amp;gt;&lt;br /&gt;
-- &lt;br /&gt;
-- This program is free software; you can redistribute it and/or modify&lt;br /&gt;
-- it under the terms of the GNU General Public License as published by&lt;br /&gt;
-- the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
-- (at your option) any later version.&lt;br /&gt;
--&lt;br /&gt;
-- This program is distributed in the hope that it will be useful,&lt;br /&gt;
-- but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
-- GNU General Public License for more details.&lt;br /&gt;
--&lt;br /&gt;
-- You should have received a copy of the GNU General Public License&lt;br /&gt;
-- along with this program. If not, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE llx_matable ADD UNIQUE uk_matable_field(field_one, field_two);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE llx_matable ADD CONSTRAINT fk_matable_fk_field FOREIGN KEY (fk_field) REFERENCES llx_matablepere (rowid);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Règles de codage SQL==&lt;br /&gt;
&lt;br /&gt;
*Utilisation des alias/nommage de champs&lt;br /&gt;
&lt;br /&gt;
Dans le cas des select on pourra utiliser les alias pour simplifier l&#039;écriture des requêtes:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
select chp1, chpxxx2 as chp2 from table2 as t1, table2 as t2 where t1.chpx = t2.chpy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Toutefois, il ne faut pas utiliser ces alias sur des requêtes update car non compatible avec mysql 3.1.&lt;br /&gt;
&lt;br /&gt;
*Les SELECT * sont interdits ! Chaque SELECT doit spécifier la liste complète des champs à récupérer. Cela permet d&#039;éviter les confusions. Exemple:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT field_a, field_b, field_c FROM table_1 WHERE field_d = &#039;$id&#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Dans les requêtes SQL, on quote les champs mais pas les numériques qui contiennent des montants destinés à être stockés dans des champs de type double ou real. Les quotes sur les numériques de type float provoquent parfois un stockage d&#039;une valeur différente. Par exemple 412.62 dans le insert sera en fait stocké avec la valeur 412.61999512 en base (suite à des conversions chaines-numériques implicites) si le champ est de type double(24,8). Et seul le PHP voit 412.61999512. Les autres outils verront 412.62 donnant l&#039;impression qu&#039;il n&#039;y a pas de problème. Et c&#039;est le PHP qui a raison, il y a problème en base. En supprimant les quotes sur les numériques, cela va mieux.&lt;br /&gt;
&lt;br /&gt;
Exemple:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
Bon:     INSERT INTO table_1 (field_txt, field_num) VALUES (&#039;txt&#039;, 412.62)&lt;br /&gt;
Mauvais: INSERT INTO table_1 (field_txt, field_num) VALUES (&#039;txt&#039;, &#039;412.62&#039;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarque, le problème des float est général et pas seulement sur les accès base, il est présent dans tous les languages quand on travaille sur des nombres réels, aussi ils doivent être, dès que affectés, nettoyés par la fonction price2num avec le 2eme paramètre renseigné à:&lt;br /&gt;
&#039;MU&#039; (si il s&#039;agit d&#039;un prix unitaire), &#039;MT&#039; (s&#039;il s&#039;agit d&#039;un prix total) ou &#039;MS&#039; (autres cas) selon le besoin.&lt;br /&gt;
Voir aussi le chapitre &amp;quot;Les nombres réels, montants et calculs&amp;quot; plus bas.&lt;br /&gt;
&lt;br /&gt;
*Les fonctions NOW, SYSDATE ou DATEDIFF sont interdites au sein des ordres SQL. S&#039;il faut saisir la date du moment dans un champ, la valeur doit venir du PHP, par exemple par la fonction dol_now(), et non du moteur de base de données. Ceci afin d&#039;avoir une meilleure portabilité du code mais surtout d&#039;avoir une gestion correcte des TimeZone et ne pas dépendre du TimeZone de la base de donnée.&lt;br /&gt;
&lt;br /&gt;
Par exemple, on ne fera pas:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$sql=&amp;quot;SELECT rowid FROM table where datefield = NOW()&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
mais:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$sql=&amp;quot;SELECT rowid FROM table where datefield = &#039;&amp;quot;.$this-&amp;gt;db-&amp;gt;idate(dol_now()).&amp;quot;&#039;&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple, on ne fera pas:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$sql=&amp;quot;SELECT rowid FROM table where DATEDIFF(table.datefield, NOW()) &amp;gt; 7&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
mais:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$sql=&amp;quot;SELECT rowid FROM table where datefield &amp;lt; &#039;&amp;quot;.$this-&amp;gt;db-&amp;gt;idate(dol_now() - (7 * 24 * 3600)).&amp;quot;&#039;&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un autre avantage de cette règle est que la requête peut bénéficier de l&#039;utilisation de l&#039;index puisqu&#039;on compare datefield à une valeur fixe. Dans le cas du datediff, on applique un traitement sur le champ avant comparaison, rendant impossible l&#039;utilisation de l&#039;index de ce champ. Les conséquences sont des performances très dégradées par rapport à la version sans datediff.&lt;br /&gt;
&lt;br /&gt;
==Règles de migration de base==&lt;br /&gt;
&lt;br /&gt;
*Les scripts de migration de structure sont les fichiers de type &#039;&#039;&#039;install/mysql/migration/a.b.c-x.y.z.sql&#039;&#039;&#039;. Dans un fichier de migration de n vers n+1, on ne détruit une table (DROP TABLE) qui n&#039;est plus utilisée en n+1 que lors de la migration de la version n+1 vers n+2. Ceci afin de toujours conserver les tables deprecated le temps d&#039;une version pour réparer une situation en cas d&#039;erreur de migration.&lt;br /&gt;
&lt;br /&gt;
==Spécificités MySQL==&lt;br /&gt;
&lt;br /&gt;
*Les tables doivent être au format InnoDB.&lt;br /&gt;
&lt;br /&gt;
En effet, ce format gère les clés étrangères, les éventuelles restrictions qui y sont attachées et la notion d&#039;intégrité de transactions requise pour avoir des données en base cohérente entre tables.&lt;br /&gt;
&lt;br /&gt;
*Dolibarr DOIT fonctionner même avec les options &#039;&#039;&#039;strict&#039;&#039;&#039; de Mysql active.&lt;br /&gt;
&lt;br /&gt;
Pour l&#039;activer (fortement recommandé en développement), ajouter la ligne suivante dans le fichier config du serveur Mysql (my.cnf ou my.ini)&lt;br /&gt;
{{MySqlStrictMode}}&lt;br /&gt;
&lt;br /&gt;
==Spécificités PostgreSQL==&lt;br /&gt;
Seuls les fichiers pour Mysql doivent être maintenus.&lt;br /&gt;
Les fichiers pour les autres bases sont convertis &amp;quot;à la volée&amp;quot; par le driver Dolibarr de la base.&lt;br /&gt;
&lt;br /&gt;
Il existe une exception.&lt;br /&gt;
Les requêtes &amp;quot;UPDATE FROM&amp;quot; : &lt;br /&gt;
Syntax MySQL :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
UPDATE table_taget as target, table_source as source SET fieldtarget=source.fieldsource&lt;br /&gt;
WHERE source.rowid=target.rowid;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Syntax PgSQL:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
UPDATE table_taget as target SET fieldtarget=source.fieldsource&lt;br /&gt;
FROM table_source as source WHERE source.rowid=target.rowid;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il n&#039;en existe pas dans Dolibarr, mais pour vos modules Vous devriez faire tel que :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
if ($this-&amp;gt;db-&amp;gt;type==&#039;pgsql&#039;) {&lt;br /&gt;
$sql=&amp;quot;UPDATE table_taget as target SET fieldtarget=source.fieldsource&lt;br /&gt;
FROM table_source as source WHERE source.rowid=target.rowid&amp;quot;;&lt;br /&gt;
} else {&lt;br /&gt;
$sql= &amp;quot;UPDATE table_taget as target, table_source as source SET fieldtarget=source.fieldsource&lt;br /&gt;
WHERE source.rowid=target.rowid&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Normes HTML=&lt;br /&gt;
&lt;br /&gt;
*Tous les attributs dans les balises HTML doivent être *en minuscule* et quotés avec des *doubles quote*.&lt;br /&gt;
&lt;br /&gt;
*Les liens href doivent être absolus en se basant sur la fonction dol_buildpath() pour obtenir un chemin absolu depuis un chemin relatif au répertoire htdocs. Pour les tags img, il faut faire appel à la fonction img_picto().&lt;br /&gt;
&lt;br /&gt;
Par example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
print &#039;&amp;lt;a href=&amp;quot;&#039;.dol_buildpath(&#039;/monrep/mapage.php&#039;).&#039;&amp;quot;&amp;gt;&#039;.img_picto(&#039;Texte alt&#039;,&#039;nompictopng&#039;,&#039;&#039;).&#039;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Les tables HTML doivent avoir des colonnes sans valeurs forcées, excepté pour les colonnes qui contiennent une information dont la longueur est non variable. Par exemple, une colonne avec un picto peut être forcée à with=&amp;quot;20px&amp;quot;. Dans les autres cas, il faut éviter de forcer la largeur des colonnes. La raison est que, dans la plupart des cas, le navigateur fait un meilleur travail pour définir automatiquement la bonne largeur des colonnes qu&#039;en forçant manuellement les largeurs. Et ceci marche quelle que soit la résolution de l&#039;écran.&lt;br /&gt;
&lt;br /&gt;
*Le javascript/ajax et l&#039;appel aux scripts java dans les pages php est à proscrire. Si toutefois du code javascript est inclus, il doit être conditionné par le test sur &amp;quot;$conf-&amp;gt;use_javascript_ajax&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
if ($conf-&amp;gt;use_javascript_ajax) {&lt;br /&gt;
...  // Le code php qui génère du javascript est ici&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Les popups windows ne doivent pas être utilisées, sauf pour des tooltips (et restent conditionnées par le point ci-dessus).&lt;br /&gt;
&lt;br /&gt;
*Les scripts externes sont écrits en Perl s&#039;ils ne peuvent l&#039;être en php, l&#039;utilisation d&#039;un autre langage n&#039;est pas interdit mais doit être discuté au préalable dans la mailing list des développeurs.&lt;br /&gt;
&lt;br /&gt;
=Normes Dolibarr et squelettes de code=&lt;br /&gt;
&lt;br /&gt;
==Squelettes de code==&lt;br /&gt;
Afin d&#039;uniformiser le code et d&#039;accélérer le développement de nouveaux composants dans Dolibarr, se trouvent dans le répertoire &#039;&#039;&#039;htdocs/modulebuilder/templates&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Par exemple:&lt;br /&gt;
&lt;br /&gt;
*1 fichier qui sert d&#039;exemple de descripteur de module: &#039;&#039;&#039;myModule.class.php&#039;&#039;&#039;&lt;br /&gt;
*1 fichier qui sert d&#039;exemple de code pour faire une nouvelle classe: &#039;&#039;&#039;skeleton_class.class.php&#039;&#039;&#039;&lt;br /&gt;
*1 fichier qui sert d&#039;exemple de code pour faire une nouvelle page: &#039;&#039;&#039;skeleton_page.php&#039;&#039;&#039;&lt;br /&gt;
*1 fichier qui sert d&#039;exemple de code pour faire un script à exécuter en ligne de commande: &#039;&#039;&#039;skeleton_script.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Servez-vous en comme exemple.&lt;br /&gt;
Notons que ces squelettes sont aussi utilisés par le générateur de code PHP ([[Module ModuleBuilder]]) qui est décrit dans la chapitre de développement de module Dolibarr pour accélérer vos développements.&lt;br /&gt;
&lt;br /&gt;
==Les dates et TimeZone==&lt;br /&gt;
Dolibarr se veut une application multi-utilisateur et multi-localisation. Il convient donc de stocker les dates dans le bon format. Pour éviter les problèmes de conversion, les règles suivantes doivent être appliquées:&lt;br /&gt;
&lt;br /&gt;
*Une date en mémoire doit être au format Timestamp GMT.&lt;br /&gt;
*Une date stockée en base de données contient le Timestamp issue de la date soumise dans la requête en heure &amp;lt;b&amp;gt;locale du serveur PHP&amp;lt;/b&amp;gt;. Cela ne concerne pas les dates mises à jour automatiquement par la base (champ &#039;&#039;&#039;tms&#039;&#039;&#039; en base).&lt;br /&gt;
&lt;br /&gt;
Ainsi le 1er janvier 1970, 3 heures à Paris (TZ=+1) = 1er janvier 1970, 2 heures à Greenwich (TZ=0) sera stocké en mémoire par 7200 et sera soumis à la base de données avec la chaine &#039;19700101030000&#039; (PHP convertit en heure de son TZ et la base déconvertit avec son TZ qui est le même que celui de PHP).&lt;br /&gt;
&lt;br /&gt;
Les méthodes select doivent donc traduire les champs dates lus qui sont au format chaine TZ de la base (&#039;19700101030000&#039;) par appel de la méthode db-&amp;gt;jdate afin de récupérer une information en mémoire au format Timestamp GMT. Et les méthodes insert doivent lors de la génération de la requête convertir la date mémoire connue en variable, par la méthode db-&amp;gt;idate (Voir exemples générés par le squelette).&lt;br /&gt;
&lt;br /&gt;
*Les dates mises à jour automatiquement par la base (champ &#039;&#039;&#039;tms&#039;&#039;&#039; en base) contiennent le Timestamp où la modification est faite selon le timezone de la base de donnée. Les méthodes select récupèrent cette donnée en mémoire au format Timestamp GMT en appliquant également le db-&amp;gt;jdate. Si le timezone de la base de donnée diffère de celui du PHP (un des 2 est mal réglé), il peut donc y avoir des écarts entre date de création et modification.&lt;br /&gt;
&lt;br /&gt;
*La manipulation de dates en PHP doit être faite en utilisant les fonctions dates de Dolibarr: &#039;&#039;&#039;dol_now(), dol_mktime(), dol_stringtotime(), dol_getdate(), dol_time_plus_duree()&#039;&#039;&#039;. Vous trouverez également d&#039;autres fonctions prêtes à l&#039;emploi dans le fichier &#039;&#039;&#039;date.lib.php&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==L&#039;encodage UTF8/ISO==&lt;br /&gt;
Dolibarr stocke les informations de manière suivante:&lt;br /&gt;
&lt;br /&gt;
*En base de donnée, les données sont en UTF8 ou ISO. Cela dépend du pagecode de la base, donc des options à la création de cette base. Dans tous les cas le driver d&#039;accès base Dolibarr (dans /lib/database) s&#039;arrange à la lecture et insertion pour convertir vers et depuis de l&#039;UTF8.&lt;br /&gt;
*Les données en mémoires sont donc stockées en UTF8 (instances d&#039;objets PHP).&lt;br /&gt;
*Les pages web affichées à l&#039;écran sont au format UTF8&lt;br /&gt;
&lt;br /&gt;
==Les nombres réels, montants et calculs==&lt;br /&gt;
En PHP comme dans d&#039;autres langages (Java par exemple), les données non entières (float, real, double) ne sont pas fiables.&lt;br /&gt;
Essayer de faire par exemple &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
print 239.2 - 229.3 - 9.9;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Vous n&#039;obtiendrez pas zéro mais un nombre très petit en puissance de 10 négative. Si vous obtenez zéro, vous pourrez trouvez d&#039;autres exemples qui ne fonctionnent pas.&lt;br /&gt;
Le problème des float est général, une variable résultante de calcul de nombre réels doit SYSTEMATIQUEMENT être nettoyée par la fonction &#039;&#039;&#039;price2num()&#039;&#039;&#039; avec le 2eme paramètre renseigné à: &#039;MU&#039;, &#039;MT&#039; ou &#039;MS&#039; selon le besoin (voir doc fonction).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
print price2num(239.2 - 229.3 - 9.9, &#039;MT&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
S&#039;il ne s&#039;agit pas d&#039;un prix sur lequel s&#039;adapte les paramètres MU, MT ou MS, il faut utiliser la fonction &#039;&#039;&#039;round()&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Création de tables==&lt;br /&gt;
Ne pas créer de table à l&#039;utilisation, c&#039;est-à-dire à la &#039;&#039;&#039;première utilisation&#039;&#039;&#039; du module.&lt;br /&gt;
Si vous créez un module qui utilise des tables qui ne sont pas intégrées en standard dans le code de Dolibarr, veillez à suivre le didacticiel [[Développement module]] qui explique comment joindre des tables qui se créent à l&#039;activation du module et non à son utilisation (voir plus haut).&lt;br /&gt;
&lt;br /&gt;
==Comparer la version==&lt;br /&gt;
&lt;br /&gt;
Si votre code a besoin de faire des choses différentes selon la version de Dolibarr, vous pouvez utiliser le truc suivant pour comparer les versions&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$version=preg_split(&#039;/[\.-]/&#039;,DOL_VERSION);&lt;br /&gt;
if (versioncompare($version,array(5,0,-4)) &amp;gt;= 0) { //mycode for 5.0 only; }	// For dolibarr 5.0.* (the -4 means we include also alpha, beta, rc and rcX)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mais cette solution requiert de faire un include avoir la fonction versioncompare. Une alternative est d&#039;utiliser le test suivant :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
if ((float) DOL_VERSION &amp;gt;= 5.0) { //mycode for 5.0 only; }	// For dolibarr 5.0.*&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il également possible de faire appel à la fonction version_compare de php, ce qui donne ici : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
if ((float) DOL_VERSION &amp;gt;= 5.0) { //mycode for 5.0 only; }	// For dolibarr 5.0.*&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
if ((float) DOL_VERSION &amp;gt;= 5.0) { //mycode for 5.0 only; }	// For dolibarr 5.0.*&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
if ((float) DOL_VERSION &amp;gt;= 5.0) { //mycode for 5.0 only; }	// For dolibarr 5.0.*&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
if ((float) DOL_VERSION &amp;gt;= 5.0) { //mycode for 5.0 only; }	// For dolibarr 5.0.*&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
if ((float) DOL_VERSION &amp;gt;= 5.0) { //mycode for 5.0 only; }	// For dolibarr 5.0.*&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Logs==&lt;br /&gt;
Ajouter des traces dans votre code avec la fonction&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
dol_syslog($yourmessage, LOG_INFO|LOG_DEBUG|LOG_WARNING|LOG_ERR);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Répertoires de travail==&lt;br /&gt;
Si vous avez besoin de créer un répertoire de travail, dans votre code, faites référence à ce répertoire par&lt;br /&gt;
&#039;&#039;&#039;DOL_DATA_ROOT.&#039;/monmodule&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le répertoire peut être créé dans votre code à l&#039;exécution par le code suivant:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$mymoduledir=DOL_DATA_ROOT.&#039;/monmodule&#039;;&lt;br /&gt;
dol_mkdir($mymoduledir);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous avez besoin d&#039;un répertoire qui contiendra des données temporaires, ce répertoire doit être&#039;&#039;&#039; DOL_DATA_ROOT.&#039;/monmodule/temp&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Design patterns et programmation objet=&lt;br /&gt;
&lt;br /&gt;
==Design patterns de Création (GoF)==&lt;br /&gt;
Design patterns définis par le Gang Of Four (voir la wikipédia sur les [[wikipedia:Patron de conception|Design patterns]]).&lt;br /&gt;
Dans Dolibarr, pas de mise en oeuvre de design patterns de comportement particulier.&lt;br /&gt;
On trouve des objets proches des Singletons et Fabriques conformes à 100% dans l&#039;esprit mais pas dans la syntaxe, ceci afin d’être compatible avec la plus large plage possible de versions de PHP.&lt;br /&gt;
&lt;br /&gt;
==Design patterns d&#039;entreprises (Martin Fowler)==&lt;br /&gt;
&lt;br /&gt;
===Mode d&#039;organisation du code===&lt;br /&gt;
[[wikipedia:Martin_Fowler|Martin Fowler]] a identifié 3 méthodes d&#039;organisation du code appelées &#039;&#039;&#039;patterns&#039;&#039;&#039; (&#039;&#039;&#039;motifs&#039;&#039;&#039;):&lt;br /&gt;
&lt;br /&gt;
*Le &#039;&#039;&#039;Transaction Script&#039;&#039;&#039; (Le code est linéaire en fonction d&#039;une action utilisateur).&lt;br /&gt;
&lt;br /&gt;
C&#039;est le motif à l&#039;ancienne utilisé dans les langages procéduraux.&lt;br /&gt;
Inconvénient: Redondance du code. Nécessité de connaitre le modèle physique pour développer les parties métiers.&lt;br /&gt;
&lt;br /&gt;
*Le &#039;&#039;&#039;Domain Model&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C&#039;est un concept possible depuis les langages objets. Ce sont les procédures métiers (qui doivent être identifiés avant) qui servent de bases pour les classes objets.&lt;br /&gt;
Inconvénient : Motif complexe à maintenir.&lt;br /&gt;
&lt;br /&gt;
*Le &#039;&#039;&#039;Table Module&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un intermédiaire entre les 2 précédents où l&#039;on a une instance unique de classe par table de la base de données.&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Comme le montre les squelettes de code (voir point précédent), Dolibarr se base sur le principe du &#039;&#039;&#039;Table Module&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Communication Logique métier - Données (ORM)===&lt;br /&gt;
Il existe 3 modes de liaisons:&lt;br /&gt;
&lt;br /&gt;
*Le &#039;&#039;&#039;Table And Row Data Gateway&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C&#039;est le plus simple. On crée une classe par table et chaque classe est un pont avec la table correspondante et propose les méthodes CRUD sur cette table (Create, Read, Update, Delete). Une instance de classe étant alors un enregistrement de la table. La classe ne contient que du code d&#039;accès aux lignes ou colonnes de tables. Le code métier doit alors être ajouté dans d&#039;autres classes. Les liens entre ces classes tables et les classes métiers devant être connues ou déduites de la connaissance du développeur.&lt;br /&gt;
&lt;br /&gt;
Exemple: C&#039;est le mode mis en oeuvre quand on utilise certains Frameworks d&#039;ORM comme &#039;&#039;&#039;iBatis&#039;&#039;&#039; (http://ibatis.apache.org/).&lt;br /&gt;
&lt;br /&gt;
*Le &#039;&#039;&#039;Active Record&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Identique au précédent, mais on se permet d&#039;ajouter quelques fonctions métiers sur la classe, à condition que ces fonctions soient bien  propres à la table ou à la notion métier portée par l&#039;enregistrement. C&#039;est le pattern qui offre le meilleur rapport fonctionnalité/complexité.&lt;br /&gt;
&lt;br /&gt;
Exemple: C&#039;est le mode choisi pour les développements Dolibarr et de nombreuses autres applications PHP qui ont leur propre framework et pratiques de développement.&lt;br /&gt;
&lt;br /&gt;
*Le &#039;&#039;&#039;Data Mapper&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les classes représentent les entités du problème et non les données. Il faut donc doubler, tripler... ces classes avec des classes Mapper pour accéder aux données.&lt;br /&gt;
Plus &amp;quot;puriste&amp;quot; sur le papier car plus proche du métier, ce mode a aussi l&#039;inconvénient d&#039;être très complexe et difficile à maintenir dans la réalité (l&#039;expérience pratique constatée ne rejoignant pas les promesses de la théorie).&lt;br /&gt;
&lt;br /&gt;
Exemple: C&#039;est le choix si on utilise le Framework d&#039;ORM &#039;&#039;&#039;Propel&#039;&#039;&#039; (http://propel.phpdb.org/trac/). On le trouve donc sur des applications plus lourdes basées sur cet ORM entre autres.&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Pour les développements Dolibarr, il est recommandé d&#039;utiliser le mode de liaison &#039;&#039;&#039;Active Record&#039;&#039;&#039; qui offre les avantages d&#039;un modèle proche du métier sans en avoir la complexité et sans trop masquer non plus la technique. C&#039;est dans ce mode que le développement, la compréhension du code et la maintenance technique et/ou fonctionnelle semble la plus productive (ceci est toutefois un éternel débat entre les puristes et les pragmatiques, débat dans lequel personne ne peut vraiment avoir raison, car tout dépend des objectifs à atteindre).&lt;br /&gt;
&lt;br /&gt;
==Design Pattern d&#039;Interface Graphique (MVC)==&lt;br /&gt;
Il existe plusieurs design pattern pour les interfaces utilisateurs (MVC, MVP, MVVM).&lt;br /&gt;
Beaucoup confonde ce design pattern avec celui consistant à utiliser un framework de templates. C&#039;est sans rapport. Un framework de template (voir point précédent) n&#039;est en lien qu&#039;avec la partie &amp;quot;V&amp;quot; de ces modèles.&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Dolibarr utilise le Design Pattern &#039;&#039;&#039;MVC&#039;&#039;&#039;. La partie M est matérialisée par une classe DAO contenant les méthode CRUD (Create-Read-Update-Delete) d&#039;accès à la table.&lt;br /&gt;
Beaucoup de frameworks ont fait le choix de mettre la partie de code C (Controller) et la partie de code du V (vue) dans des fichiers, voir même répertoires séparés. La maintenance semble plus aisé sur la papier, en pratique, il faut sans arrêt jonglé entre n fichiers, le C étant fortement lié au V. Aussi dans Dolibarr, la séparation est faite par une simple section de commentaire. La partie de code C (Controller) est donc le code qui se trouve sont la balise&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 * Actions&lt;br /&gt;
 */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Elle est suivi par la partie de code V (Vue), bien séparé du C par la balise&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 * View&lt;br /&gt;
 */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce mode de séparation a eu un effet neutre sur les nouveaux développement mais a permis de réduire de manière si importante le temps requis pour la maintenance et correction de bugs qu&#039;il n&#039;est pas envisagé de basculer vers un autre type de séparation (oui les constats fait dans la vraie vie ne sont pas toujours ceux attendus par la théorie scolaire). L&#039;important reste qu&#039;il y ait toujours séparation entre le C et le V, peut importe comment est matérialisé cette séparation, du moment qu&#039;elle l&#039;est (Rappel: Ne pas confondre la notion de séparation du C et du V avec la notion de séparation du code pour alimenter la données d&#039;une Vue et du code pour formater la Vue, ceci un principe de séparation relevant du Design Pattern de Vue, voir point suivant).&lt;br /&gt;
&lt;br /&gt;
==Design Pattern de Vue - Présentation==&lt;br /&gt;
Il existe des frameworks spécialisés dans le Design Pattern de Vue, la partie qui consiste à formater l&#039;écran vue par l&#039;utilisateur.&lt;br /&gt;
Les vieilles versions de Dolibarr utilisaient Smarty. Ce framework est une surcouche à un Framework, déjà très puissant, de formatage d&#039;écran nommé... PHP. Les bénéfices étant très inférieurs aux inconvénients, il a été abandonné au profit de templates PHP (fichier .tpl.php) qui restent le plus simple, le plus universel, le plus évolutif et le plus performant, des frameworks de présentation. &lt;br /&gt;
&lt;br /&gt;
Son seul défaut est qu&#039;il ne peut garantir à 100% les écarts d&#039;un développeur qui irait intégrer dans la Vue, une logique sans rapport avec la présentation (donc autre que du code à vocation de génération, de formatage, de sortie HTML, de logique de test ou de boucle). Ce point est toutefois contrôlé par le mécanisme de validation du code des chefs de projets.&lt;br /&gt;
&lt;br /&gt;
La encore, c&#039;est l&#039;expérience et le constat &amp;quot;sur le terrain&amp;quot; d&#039;un meilleur rendement de productivité qui a motivé l&#039;abandon des frameworks de Présentation externes au profit du framework PHP.&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Langages_et_normes&amp;diff=54068</id>
		<title>Langages et normes</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Langages_et_normes&amp;diff=54068"/>
		<updated>2022-06-27T07:21:39Z</updated>

		<summary type="html">&lt;p&gt;Iouston: ajout comparaison version avec version_compare&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- BEGIN interlang links --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Do NOT edit this section&lt;br /&gt;
     Links below are automatically managed by PolyglotBot&lt;br /&gt;
     You can edit links on the English source page : Language_and_development_rules --&amp;gt;&lt;br /&gt;
[[en:Language_and_development_rules]]&lt;br /&gt;
[[de:Sprachen_und_Programmierregeln]]&lt;br /&gt;
[[es:Lenguaje_y_Normas_de_Desarrollo]]&lt;br /&gt;
[[zh:语言和开发规则]]&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{TemplateDocDev}}&lt;br /&gt;
&lt;br /&gt;
Voici les quelques règles sur le langage, la syntaxe et normes de développement en vigueur pour le projet Dolibarr :&lt;br /&gt;
&lt;br /&gt;
=Versions=&lt;br /&gt;
&lt;br /&gt;
*Dolibarr doit fonctionner sur:&lt;br /&gt;
&lt;br /&gt;
#Tous OS (Windows, Linux, MACOS...)&lt;br /&gt;
#PHP {{PHPMinVersion}} (Doit fonctionner sans aucun module PHP complémentaire hors les modules d&#039;accès base de donnée).&lt;br /&gt;
#Mysql {{MySqlMinVersion}}&lt;br /&gt;
&lt;br /&gt;
=Normes Copyright=&lt;br /&gt;
&lt;br /&gt;
*Tout fichier PHP doit avoir un en-tête selon le masque suivant&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/* Copyright (C) YYYY John Doe  &amp;lt;email@email.com&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 * Licence information&lt;br /&gt;
 */&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Quand vous éditez un fichier existant du projet, ajouter une ligne Copyright sous celles existantes.&lt;br /&gt;
&lt;br /&gt;
=Normes PHP=&lt;br /&gt;
&lt;br /&gt;
==PHP==&lt;br /&gt;
&lt;br /&gt;
*Dolibarr est écrit en PHP et supporte toutes versions PHP supérieures à la {{PHPMinVersion}}. Les fichiers doivent tous comporter l&#039;extension .php&lt;br /&gt;
&lt;br /&gt;
*L&#039;appel aux variables superglobales PHP doit passer par les opérateurs dédiés $_COOKIES, $_SERVER, $_ENV. Mais pour récupérer les contenus de $_GET ou $_POST, il faut passer par la fonction dolibarr [[Fonctions utiles Dolibarr|GETPOST()]] .&lt;br /&gt;
&lt;br /&gt;
Les autres opérateurs ($HTTP_SERVER_GET, ...) ayant été passés en deprecated au sein de PHP, ne doivent plus être utilisés. Ainsi le code doit fonctionner y compris quand l&#039;option &#039;&#039;&#039;register_long_arrays&#039;&#039;&#039; est à off.&lt;br /&gt;
De plus, le code doit fonctionner aussi bien quand l&#039;option PHP &#039;&#039;&#039;register_globals&#039;&#039;&#039; est à off (recommandé par PHP)  que quand l&#039;option &#039;&#039;&#039;register_globals&#039;&#039;&#039; est à on (par défaut sur de nombreuses installations).&lt;br /&gt;
&lt;br /&gt;
*Pas d&#039;utilisation de la variable &#039;&#039;&#039;PHP_SELF&#039;&#039;&#039;. Utiliser à la place $_SERVER[&amp;quot;PHP_SELF&amp;quot;]. Notez aussi que le framework Dolibarr passe une routine pour rendre plus sûr le contenu du $_SERVER[&amp;quot;PHP_SELF&amp;quot;] (dans le fichier main.inc.php, donc avant tout traitement métier)&lt;br /&gt;
&lt;br /&gt;
*Quand plusieurs variables doivent être initialisées avec la même valeur, il faut utiliser plusieurs instructions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$var1 = 1; $var2 = 1; $var3 = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
plutôt que&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$var1 = $var2 = $var3 = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
qui est moins performant.&lt;br /&gt;
&lt;br /&gt;
*Les chaines doivent avoir les variables sorties de la chaine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
print &amp;quot;Mon texte affiche ma &amp;quot;.$variable.&amp;quot; !\n&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Les commentaires doivent suivre la syntaxe C, ie un double antislash pour un commentaire d&#039;une ligne et utilisation slash-étoile pour ouvrir un bloc de plusieurs lignes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
/* Bloc de commentaire&lt;br /&gt;
 *&lt;br /&gt;
 * Fin du bloc&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
$monobjet = new MonObjet($db);&lt;br /&gt;
$result=$monobjet-&amp;gt;fetch($idobject);&lt;br /&gt;
&lt;br /&gt;
for ($i = 1 , $i &amp;lt; 2 ; $i++)&lt;br /&gt;
{&lt;br /&gt;
  // commentaire sur une ligne&lt;br /&gt;
  print $i;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Les fonctions doivent retourner une valeur strictement &amp;gt; à 0 en cas de succès, et un nombre &amp;lt; à 0 en cas d&#039;erreur.&lt;br /&gt;
&lt;br /&gt;
*Pas de code mort (non utilisé) dans le code principal de Dolibarr (le code utilisé uniquement par un module externe doit être inclus dans le module externe).&lt;br /&gt;
&lt;br /&gt;
*Utiliser &amp;quot;include_once&amp;quot; pour l&#039;inclusion de tout fichier contenant des définitions de fonction ou de classes (donc fichiers *.class.php et *.lib.php), utiliser &amp;quot;include&amp;quot; pour tout inclusion de fichier de type template ou contenant un mixte de HTML et PHP (donc fichiers *.inc.php et *.tpl.php).&lt;br /&gt;
&lt;br /&gt;
*Le style de code a utiliser est le PSR-12 (https://www.php-fig.org/psr/psr-12/). Seules les règles &amp;quot;MUST&amp;quot; sont imposées. Notez aussi les points/exceptions suivants:&lt;br /&gt;
**La longueur des lignes: PSR-12 indique que la longueur des lignes a une limite &amp;quot;soft&amp;quot; à 120. Il est en effet préférable d&#039;avoir de longues lignes de données de déclaration plutôt que de longues pages car ce code ne contient aucune logique intéressante ou utile, toutefois une limite &amp;quot;hard&amp;quot; a été instauré à &#039;&#039;&#039;1000&#039;&#039;&#039; caractères. Du code qui ira au delà provoquera des erreurs dans la plateforme d&#039;Intégration Continue.&lt;br /&gt;
**Les tabulations sont acceptées : L&#039;autre exception est qu&#039;on ne remplace pas les tabulations systématiquement par des espaces. L&#039;utilisation des tabulations simplifie la vie de certains développeurs. De plus, l&#039;utilisation d&#039;espaces rend certaines fonctions d&#039;autoformatage défectueuses (comme sur certaines versions d&#039;Eclipse, lors de copier-coller).&lt;br /&gt;
**Note 1: Les règles suivantes sont particulièrement importantes :&lt;br /&gt;
***Les fichiers doivent être sauvés en format Unix (LF) et non Windows (CR/LF). Le format Unix étant compatible sur les OS Unix like, Windows, Mac, alors que le format fichier texte Windows pose problème sous certains PHP sous Unix.&lt;br /&gt;
***Les smart tags PHP ne sont pas utilisés. Les sections de code doivent commencer par &#039;&#039;&#039;&amp;lt;?php&#039;&#039;&#039;&lt;br /&gt;
**Note 2: Vous pouvez utiliser le fichier &#039;&#039;&#039;dev/setup/codesniffer/ruleset.xml&#039;&#039;&#039; comme fichier de contrôle pour vérifier votre style de code avec PHPCodeSniffer.&lt;br /&gt;
**Note 3: Vous pouvez utiliser le fichier &#039;&#039;&#039;dev/setup/eclipse/PSR-12 [built-in].xml&#039;&#039;&#039; comme fichier de règles de syntax pour configurer Eclipse.&lt;br /&gt;
**Note 4: Vous remarquerez que le code actuel ne suit pas forcément tout cela. La raison est historique. La règle fut instaurée en cours de route, aussi, si vous trouvez du code non respectueux de ce standard, n&#039;hésitez pas à le corriger.&lt;br /&gt;
&lt;br /&gt;
==Structures des classes et champs==&lt;br /&gt;
&lt;br /&gt;
Certaines propriétés de classes se retrouvent dans de nombreuses classes. Pour homogénéité, on utilisera les noms suivants:&lt;br /&gt;
{{TemplatePHPFields}}&lt;br /&gt;
&lt;br /&gt;
=Normes SQL=&lt;br /&gt;
&lt;br /&gt;
==Structure des tables et champs==&lt;br /&gt;
&lt;br /&gt;
*Toutes les tables sont préfixées pour éviter les conflits de nommage. Aujourd&#039;hui, le préfixe est modifiable au moment de l&#039;installation. Sa valeur par défaut est &amp;lt;tt&amp;gt;llx_&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Structure des tables.&lt;br /&gt;
&lt;br /&gt;
Lorsque vous créez une table, il est recommandé de prendre les même conventions de nommages de tables que les autres tables Dolibarr. Avec, à minima les champs suivant:&lt;br /&gt;
 - rowid INTEGER AUTO_INCREMENT PRIMARY KEY    qui est l&#039;id technique&lt;br /&gt;
 - entity INTEGER default 1                    that is id for the multicompany feature&lt;br /&gt;
 - date_creation   datetime                    that is the creation date&lt;br /&gt;
 - tms             timestamp                   qui sera un champ contenant la date de chaque mise à jour (la base de donnée le gère tout seul, pas besoin de le gérer par le code)&lt;br /&gt;
 - import_key      varchar(32)                 qui contiendra le code d&#039;import YYYYMMDDHHMMSS si vous faites des imports en masse dans la table.&lt;br /&gt;
 - status          smallint                    pour stocker le status d&#039;un object&lt;br /&gt;
&lt;br /&gt;
Eventuellement&lt;br /&gt;
 - fk_user_creat  integer qui est l&#039;id du user de création (fk_user_author also found)&lt;br /&gt;
 - fk_user_modif  integer qui est l&#039;id du user de modification&lt;br /&gt;
 - fk_user_valid  integer qui est l&#039;id du user de validation&lt;br /&gt;
 - fk_soc integer qui est l&#039;id du tiers (si applicable)&lt;br /&gt;
&lt;br /&gt;
*Type des champs&lt;br /&gt;
&lt;br /&gt;
Dans la pratique, afin d&#039;être compatible avec toutes les précisions des pays, syntaxes des bases, on utilisera uniquement les types suivants:&lt;br /&gt;
 - integer pour tout nombre entier, id ou clé étrangère (bigint éventuellement accepté pour les id des très grosses tables)&lt;br /&gt;
 - smallint pour tout numérique entier de petite taille (comme pour stocker un code de status)&lt;br /&gt;
 - double(24,8) pour tout montant&lt;br /&gt;
 - double(6,3) pour les taux de tva&lt;br /&gt;
 - real pour une quantité&lt;br /&gt;
 - varchar pour une chaîne (y compris de longueur 1, le type char est de plus en plus déprécié)&lt;br /&gt;
 - timestamp pour un champ date+heure devant être mis a jour automatiquement&lt;br /&gt;
 - datetime pour un champ date+heure&lt;br /&gt;
 - date pour un champ date&lt;br /&gt;
&lt;br /&gt;
==Clé primaire==&lt;br /&gt;
La clé primaire d&#039;une table s&#039;appelle &amp;lt;tt&amp;gt;rowid&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Il y a quelques tables qui échappent à cette règle actuellement (ex [[Table llx_c_actioncomm]]), pour des raisons historiques. Une évolution pourra être étudiée pour une prochaine version.&lt;br /&gt;
&lt;br /&gt;
==Clés étrangères==&lt;br /&gt;
Le nom d&#039;une clé étrangère commence par le préfixe &amp;lt;tt&amp;gt;fk_&amp;lt;/tt&amp;gt; suivi du nom de la table liée (requis pour éviter doublons globales à la base, problématiques sous certains SGBD comme postgresql) puis du champ lié (pour permettre plusieurs clés étrangères différentes sur une même table).&lt;br /&gt;
&lt;br /&gt;
Exemple:&lt;br /&gt;
fk_facture_fourn_fk_soc&lt;br /&gt;
&lt;br /&gt;
Note: Si vous développez votre propre module externe, il ne doit pas y avoir de clé étrangère depuis vos tables qui pointent sur les tables standards de Dolibarr. Ceci casserait les fonctionnalités de mise à jour, de réparation, de sauvegardes et de restauration.&lt;br /&gt;
&lt;br /&gt;
==Clés alternatives==&lt;br /&gt;
Parfois, il n&#039;y a pas que la clé primaire qui doit être unique. On peut donc ajouter aussi un index clé alternative unique. Un tel index est nommé par un nom qui commence par le préfixe &amp;lt;tt&amp;gt;uk_&amp;lt;/tt&amp;gt; suivi du nom de la table (requis pour éviter doublons d&#039;index globals à la base, problématiques sous certains SGBD comme postgresql) puis d&#039;un suffixe qui caractérise la clé (pour permettre plusieurs index uniques sur une même table).&lt;br /&gt;
&lt;br /&gt;
Exemple:&lt;br /&gt;
uk_societe_code_client&lt;br /&gt;
&lt;br /&gt;
==Index performance==&lt;br /&gt;
Certains champs sont souvent utilisés comme critère de recherche, de tri ou de jointure. Il convient dans ce cas, d&#039;y mettre un index de performance. De tels indexes seront nommés avec un préfix &amp;lt;tt&amp;gt;idx_&amp;lt;/tt&amp;gt; puis le nom de la table et le nom du champ sur lequel porte l&#039;index.&lt;br /&gt;
&lt;br /&gt;
Exemple:&lt;br /&gt;
idx_societe_user_creat&lt;br /&gt;
&lt;br /&gt;
==Format de fichier DDL==&lt;br /&gt;
Les fichiers qui contiennent la définition de la structure de la base (DDL) doivent être au nombre de 2 par tables:&lt;br /&gt;
Chaque table est définie dans son propre fichier dont le nom est &amp;lt;tt&amp;gt;llx_&#039;&#039;matable&#039;&#039;.sql&amp;lt;/tt&amp;gt;. &lt;br /&gt;
On mettra un commentaire à côté de chaque champ pour en expliquer la signification.&lt;br /&gt;
Les clés étrangères et index de performance ou autres contraintes d&#039;unicité sont définies dans un fichier séparé dont le nom est &amp;lt;tt&amp;gt;llx_&#039;&#039;matable&#039;&#039;.key.sql&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ces fichiers sont placés dans le répertoire &#039;&#039;&#039;install/mysql/tables&#039;&#039;&#039; pour les fichiers standards ou &#039;&#039;&#039;monmodule/tables&#039;&#039;&#039; pour les tables amenées par un module.&lt;br /&gt;
&lt;br /&gt;
Exemple &#039;&#039;&#039;fichier table llx_matable.sql&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
-- Copyright (C) 2008 Author &amp;lt;email@author.com&amp;gt;&lt;br /&gt;
-- &lt;br /&gt;
-- This program is free software; you can redistribute it and/or modify&lt;br /&gt;
-- it under the terms of the GNU General Public License as published by&lt;br /&gt;
-- the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
-- (at your option) any later version.&lt;br /&gt;
--&lt;br /&gt;
-- This program is distributed in the hope that it will be useful,&lt;br /&gt;
-- but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
-- GNU General Public License for more details.&lt;br /&gt;
--&lt;br /&gt;
-- You should have received a copy of the GNU General Public License&lt;br /&gt;
-- along with this program. If not, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
&lt;br /&gt;
create table llx_matable&lt;br /&gt;
(&lt;br /&gt;
  rowid       integer AUTO_INCREMENT PRIMARY KEY,&lt;br /&gt;
  field_one   integer,&lt;br /&gt;
  field_two   integer NOT NULL,&lt;br /&gt;
  fk_field    integer,&lt;br /&gt;
  field_date  datetime,&lt;br /&gt;
  tms         timestamp&lt;br /&gt;
)ENGINE=innodb;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple &#039;&#039;&#039;fichier clés/index llx_matable.key.sql&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
-- Copyright (C) 2008 Author &amp;lt;email@author.com&amp;gt;&lt;br /&gt;
-- &lt;br /&gt;
-- This program is free software; you can redistribute it and/or modify&lt;br /&gt;
-- it under the terms of the GNU General Public License as published by&lt;br /&gt;
-- the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
-- (at your option) any later version.&lt;br /&gt;
--&lt;br /&gt;
-- This program is distributed in the hope that it will be useful,&lt;br /&gt;
-- but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
-- GNU General Public License for more details.&lt;br /&gt;
--&lt;br /&gt;
-- You should have received a copy of the GNU General Public License&lt;br /&gt;
-- along with this program. If not, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE llx_matable ADD UNIQUE uk_matable_field(field_one, field_two);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE llx_matable ADD CONSTRAINT fk_matable_fk_field FOREIGN KEY (fk_field) REFERENCES llx_matablepere (rowid);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Règles de codage SQL==&lt;br /&gt;
&lt;br /&gt;
*Utilisation des alias/nommage de champs&lt;br /&gt;
&lt;br /&gt;
Dans le cas des select on pourra utiliser les alias pour simplifier l&#039;écriture des requêtes:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
select chp1, chpxxx2 as chp2 from table2 as t1, table2 as t2 where t1.chpx = t2.chpy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Toutefois, il ne faut pas utiliser ces alias sur des requêtes update car non compatible avec mysql 3.1.&lt;br /&gt;
&lt;br /&gt;
*Les SELECT * sont interdits ! Chaque SELECT doit spécifier la liste complète des champs à récupérer. Cela permet d&#039;éviter les confusions. Exemple:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT field_a, field_b, field_c FROM table_1 WHERE field_d = &#039;$id&#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Dans les requêtes SQL, on quote les champs mais pas les numériques qui contiennent des montants destinés à être stockés dans des champs de type double ou real. Les quotes sur les numériques de type float provoquent parfois un stockage d&#039;une valeur différente. Par exemple 412.62 dans le insert sera en fait stocké avec la valeur 412.61999512 en base (suite à des conversions chaines-numériques implicites) si le champ est de type double(24,8). Et seul le PHP voit 412.61999512. Les autres outils verront 412.62 donnant l&#039;impression qu&#039;il n&#039;y a pas de problème. Et c&#039;est le PHP qui a raison, il y a problème en base. En supprimant les quotes sur les numériques, cela va mieux.&lt;br /&gt;
&lt;br /&gt;
Exemple:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
Bon:     INSERT INTO table_1 (field_txt, field_num) VALUES (&#039;txt&#039;, 412.62)&lt;br /&gt;
Mauvais: INSERT INTO table_1 (field_txt, field_num) VALUES (&#039;txt&#039;, &#039;412.62&#039;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarque, le problème des float est général et pas seulement sur les accès base, il est présent dans tous les languages quand on travaille sur des nombres réels, aussi ils doivent être, dès que affectés, nettoyés par la fonction price2num avec le 2eme paramètre renseigné à:&lt;br /&gt;
&#039;MU&#039; (si il s&#039;agit d&#039;un prix unitaire), &#039;MT&#039; (s&#039;il s&#039;agit d&#039;un prix total) ou &#039;MS&#039; (autres cas) selon le besoin.&lt;br /&gt;
Voir aussi le chapitre &amp;quot;Les nombres réels, montants et calculs&amp;quot; plus bas.&lt;br /&gt;
&lt;br /&gt;
*Les fonctions NOW, SYSDATE ou DATEDIFF sont interdites au sein des ordres SQL. S&#039;il faut saisir la date du moment dans un champ, la valeur doit venir du PHP, par exemple par la fonction dol_now(), et non du moteur de base de données. Ceci afin d&#039;avoir une meilleure portabilité du code mais surtout d&#039;avoir une gestion correcte des TimeZone et ne pas dépendre du TimeZone de la base de donnée.&lt;br /&gt;
&lt;br /&gt;
Par exemple, on ne fera pas:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$sql=&amp;quot;SELECT rowid FROM table where datefield = NOW()&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
mais:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$sql=&amp;quot;SELECT rowid FROM table where datefield = &#039;&amp;quot;.$this-&amp;gt;db-&amp;gt;idate(dol_now()).&amp;quot;&#039;&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple, on ne fera pas:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$sql=&amp;quot;SELECT rowid FROM table where DATEDIFF(table.datefield, NOW()) &amp;gt; 7&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
mais:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$sql=&amp;quot;SELECT rowid FROM table where datefield &amp;lt; &#039;&amp;quot;.$this-&amp;gt;db-&amp;gt;idate(dol_now() - (7 * 24 * 3600)).&amp;quot;&#039;&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un autre avantage de cette règle est que la requête peut bénéficier de l&#039;utilisation de l&#039;index puisqu&#039;on compare datefield à une valeur fixe. Dans le cas du datediff, on applique un traitement sur le champ avant comparaison, rendant impossible l&#039;utilisation de l&#039;index de ce champ. Les conséquences sont des performances très dégradées par rapport à la version sans datediff.&lt;br /&gt;
&lt;br /&gt;
==Règles de migration de base==&lt;br /&gt;
&lt;br /&gt;
*Les scripts de migration de structure sont les fichiers de type &#039;&#039;&#039;install/mysql/migration/a.b.c-x.y.z.sql&#039;&#039;&#039;. Dans un fichier de migration de n vers n+1, on ne détruit une table (DROP TABLE) qui n&#039;est plus utilisée en n+1 que lors de la migration de la version n+1 vers n+2. Ceci afin de toujours conserver les tables deprecated le temps d&#039;une version pour réparer une situation en cas d&#039;erreur de migration.&lt;br /&gt;
&lt;br /&gt;
==Spécificités MySQL==&lt;br /&gt;
&lt;br /&gt;
*Les tables doivent être au format InnoDB.&lt;br /&gt;
&lt;br /&gt;
En effet, ce format gère les clés étrangères, les éventuelles restrictions qui y sont attachées et la notion d&#039;intégrité de transactions requise pour avoir des données en base cohérente entre tables.&lt;br /&gt;
&lt;br /&gt;
*Dolibarr DOIT fonctionner même avec les options &#039;&#039;&#039;strict&#039;&#039;&#039; de Mysql active.&lt;br /&gt;
&lt;br /&gt;
Pour l&#039;activer (fortement recommandé en développement), ajouter la ligne suivante dans le fichier config du serveur Mysql (my.cnf ou my.ini)&lt;br /&gt;
{{MySqlStrictMode}}&lt;br /&gt;
&lt;br /&gt;
==Spécificités PostgreSQL==&lt;br /&gt;
Seuls les fichiers pour Mysql doivent être maintenus.&lt;br /&gt;
Les fichiers pour les autres bases sont convertis &amp;quot;à la volée&amp;quot; par le driver Dolibarr de la base.&lt;br /&gt;
&lt;br /&gt;
Il existe une exception.&lt;br /&gt;
Les requêtes &amp;quot;UPDATE FROM&amp;quot; : &lt;br /&gt;
Syntax MySQL :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
UPDATE table_taget as target, table_source as source SET fieldtarget=source.fieldsource&lt;br /&gt;
WHERE source.rowid=target.rowid;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Syntax PgSQL:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
UPDATE table_taget as target SET fieldtarget=source.fieldsource&lt;br /&gt;
FROM table_source as source WHERE source.rowid=target.rowid;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il n&#039;en existe pas dans Dolibarr, mais pour vos modules Vous devriez faire tel que :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
if ($this-&amp;gt;db-&amp;gt;type==&#039;pgsql&#039;) {&lt;br /&gt;
$sql=&amp;quot;UPDATE table_taget as target SET fieldtarget=source.fieldsource&lt;br /&gt;
FROM table_source as source WHERE source.rowid=target.rowid&amp;quot;;&lt;br /&gt;
} else {&lt;br /&gt;
$sql= &amp;quot;UPDATE table_taget as target, table_source as source SET fieldtarget=source.fieldsource&lt;br /&gt;
WHERE source.rowid=target.rowid&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Normes HTML=&lt;br /&gt;
&lt;br /&gt;
*Tous les attributs dans les balises HTML doivent être *en minuscule* et quotés avec des *doubles quote*.&lt;br /&gt;
&lt;br /&gt;
*Les liens href doivent être absolus en se basant sur la fonction dol_buildpath() pour obtenir un chemin absolu depuis un chemin relatif au répertoire htdocs. Pour les tags img, il faut faire appel à la fonction img_picto().&lt;br /&gt;
&lt;br /&gt;
Par example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
print &#039;&amp;lt;a href=&amp;quot;&#039;.dol_buildpath(&#039;/monrep/mapage.php&#039;).&#039;&amp;quot;&amp;gt;&#039;.img_picto(&#039;Texte alt&#039;,&#039;nompictopng&#039;,&#039;&#039;).&#039;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Les tables HTML doivent avoir des colonnes sans valeurs forcées, excepté pour les colonnes qui contiennent une information dont la longueur est non variable. Par exemple, une colonne avec un picto peut être forcée à with=&amp;quot;20px&amp;quot;. Dans les autres cas, il faut éviter de forcer la largeur des colonnes. La raison est que, dans la plupart des cas, le navigateur fait un meilleur travail pour définir automatiquement la bonne largeur des colonnes qu&#039;en forçant manuellement les largeurs. Et ceci marche quelle que soit la résolution de l&#039;écran.&lt;br /&gt;
&lt;br /&gt;
*Le javascript/ajax et l&#039;appel aux scripts java dans les pages php est à proscrire. Si toutefois du code javascript est inclus, il doit être conditionné par le test sur &amp;quot;$conf-&amp;gt;use_javascript_ajax&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
if ($conf-&amp;gt;use_javascript_ajax) {&lt;br /&gt;
...  // Le code php qui génère du javascript est ici&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Les popups windows ne doivent pas être utilisées, sauf pour des tooltips (et restent conditionnées par le point ci-dessus).&lt;br /&gt;
&lt;br /&gt;
*Les scripts externes sont écrits en Perl s&#039;ils ne peuvent l&#039;être en php, l&#039;utilisation d&#039;un autre langage n&#039;est pas interdit mais doit être discuté au préalable dans la mailing list des développeurs.&lt;br /&gt;
&lt;br /&gt;
=Normes Dolibarr et squelettes de code=&lt;br /&gt;
&lt;br /&gt;
==Squelettes de code==&lt;br /&gt;
Afin d&#039;uniformiser le code et d&#039;accélérer le développement de nouveaux composants dans Dolibarr, se trouvent dans le répertoire &#039;&#039;&#039;htdocs/modulebuilder/templates&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Par exemple:&lt;br /&gt;
&lt;br /&gt;
*1 fichier qui sert d&#039;exemple de descripteur de module: &#039;&#039;&#039;myModule.class.php&#039;&#039;&#039;&lt;br /&gt;
*1 fichier qui sert d&#039;exemple de code pour faire une nouvelle classe: &#039;&#039;&#039;skeleton_class.class.php&#039;&#039;&#039;&lt;br /&gt;
*1 fichier qui sert d&#039;exemple de code pour faire une nouvelle page: &#039;&#039;&#039;skeleton_page.php&#039;&#039;&#039;&lt;br /&gt;
*1 fichier qui sert d&#039;exemple de code pour faire un script à exécuter en ligne de commande: &#039;&#039;&#039;skeleton_script.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Servez-vous en comme exemple.&lt;br /&gt;
Notons que ces squelettes sont aussi utilisés par le générateur de code PHP ([[Module ModuleBuilder]]) qui est décrit dans la chapitre de développement de module Dolibarr pour accélérer vos développements.&lt;br /&gt;
&lt;br /&gt;
==Les dates et TimeZone==&lt;br /&gt;
Dolibarr se veut une application multi-utilisateur et multi-localisation. Il convient donc de stocker les dates dans le bon format. Pour éviter les problèmes de conversion, les règles suivantes doivent être appliquées:&lt;br /&gt;
&lt;br /&gt;
*Une date en mémoire doit être au format Timestamp GMT.&lt;br /&gt;
*Une date stockée en base de données contient le Timestamp issue de la date soumise dans la requête en heure &amp;lt;b&amp;gt;locale du serveur PHP&amp;lt;/b&amp;gt;. Cela ne concerne pas les dates mises à jour automatiquement par la base (champ &#039;&#039;&#039;tms&#039;&#039;&#039; en base).&lt;br /&gt;
&lt;br /&gt;
Ainsi le 1er janvier 1970, 3 heures à Paris (TZ=+1) = 1er janvier 1970, 2 heures à Greenwich (TZ=0) sera stocké en mémoire par 7200 et sera soumis à la base de données avec la chaine &#039;19700101030000&#039; (PHP convertit en heure de son TZ et la base déconvertit avec son TZ qui est le même que celui de PHP).&lt;br /&gt;
&lt;br /&gt;
Les méthodes select doivent donc traduire les champs dates lus qui sont au format chaine TZ de la base (&#039;19700101030000&#039;) par appel de la méthode db-&amp;gt;jdate afin de récupérer une information en mémoire au format Timestamp GMT. Et les méthodes insert doivent lors de la génération de la requête convertir la date mémoire connue en variable, par la méthode db-&amp;gt;idate (Voir exemples générés par le squelette).&lt;br /&gt;
&lt;br /&gt;
*Les dates mises à jour automatiquement par la base (champ &#039;&#039;&#039;tms&#039;&#039;&#039; en base) contiennent le Timestamp où la modification est faite selon le timezone de la base de donnée. Les méthodes select récupèrent cette donnée en mémoire au format Timestamp GMT en appliquant également le db-&amp;gt;jdate. Si le timezone de la base de donnée diffère de celui du PHP (un des 2 est mal réglé), il peut donc y avoir des écarts entre date de création et modification.&lt;br /&gt;
&lt;br /&gt;
*La manipulation de dates en PHP doit être faite en utilisant les fonctions dates de Dolibarr: &#039;&#039;&#039;dol_now(), dol_mktime(), dol_stringtotime(), dol_getdate(), dol_time_plus_duree()&#039;&#039;&#039;. Vous trouverez également d&#039;autres fonctions prêtes à l&#039;emploi dans le fichier &#039;&#039;&#039;date.lib.php&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==L&#039;encodage UTF8/ISO==&lt;br /&gt;
Dolibarr stocke les informations de manière suivante:&lt;br /&gt;
&lt;br /&gt;
*En base de donnée, les données sont en UTF8 ou ISO. Cela dépend du pagecode de la base, donc des options à la création de cette base. Dans tous les cas le driver d&#039;accès base Dolibarr (dans /lib/database) s&#039;arrange à la lecture et insertion pour convertir vers et depuis de l&#039;UTF8.&lt;br /&gt;
*Les données en mémoires sont donc stockées en UTF8 (instances d&#039;objets PHP).&lt;br /&gt;
*Les pages web affichées à l&#039;écran sont au format UTF8&lt;br /&gt;
&lt;br /&gt;
==Les nombres réels, montants et calculs==&lt;br /&gt;
En PHP comme dans d&#039;autres langages (Java par exemple), les données non entières (float, real, double) ne sont pas fiables.&lt;br /&gt;
Essayer de faire par exemple &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
print 239.2 - 229.3 - 9.9;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Vous n&#039;obtiendrez pas zéro mais un nombre très petit en puissance de 10 négative. Si vous obtenez zéro, vous pourrez trouvez d&#039;autres exemples qui ne fonctionnent pas.&lt;br /&gt;
Le problème des float est général, une variable résultante de calcul de nombre réels doit SYSTEMATIQUEMENT être nettoyée par la fonction &#039;&#039;&#039;price2num()&#039;&#039;&#039; avec le 2eme paramètre renseigné à: &#039;MU&#039;, &#039;MT&#039; ou &#039;MS&#039; selon le besoin (voir doc fonction).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
print price2num(239.2 - 229.3 - 9.9, &#039;MT&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
S&#039;il ne s&#039;agit pas d&#039;un prix sur lequel s&#039;adapte les paramètres MU, MT ou MS, il faut utiliser la fonction &#039;&#039;&#039;round()&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Création de tables==&lt;br /&gt;
Ne pas créer de table à l&#039;utilisation, c&#039;est-à-dire à la &#039;&#039;&#039;première utilisation&#039;&#039;&#039; du module.&lt;br /&gt;
Si vous créez un module qui utilise des tables qui ne sont pas intégrées en standard dans le code de Dolibarr, veillez à suivre le didacticiel [[Développement module]] qui explique comment joindre des tables qui se créent à l&#039;activation du module et non à son utilisation (voir plus haut).&lt;br /&gt;
&lt;br /&gt;
==Comparer la version==&lt;br /&gt;
&lt;br /&gt;
Si votre code a besoin de faire des choses différentes selon la version de Dolibarr, vous pouvez utiliser le truc suivant pour comparer les versions&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$version=preg_split(&#039;/[\.-]/&#039;,DOL_VERSION);&lt;br /&gt;
if (versioncompare($version,array(5,0,-4)) &amp;gt;= 0) { //mycode for 5.0 only; }	// For dolibarr 5.0.* (the -4 means we include also alpha, beta, rc and rcX)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mais cette solution requiert de faire un include avoir la fonction versioncompare. Une alternative est d&#039;utiliser le test suivant :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
if ((float) DOL_VERSION &amp;gt;= 5.0) { //mycode for 5.0 only; }	// For dolibarr 5.0.*&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il également possible de faire appel à la fonction version_compare de php, ce qui donne ici : &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
if ((float) DOL_VERSION &amp;gt;= 5.0) { //mycode for 5.0 only; }	// For dolibarr 5.0.*&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
if ((float) DOL_VERSION &amp;gt;= 5.0) { //mycode for 5.0 only; }	// For dolibarr 5.0.*&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
if ((float) DOL_VERSION &amp;gt;= 5.0) { //mycode for 5.0 only; }	// For dolibarr 5.0.*&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
if ((float) DOL_VERSION &amp;gt;= 5.0) { //mycode for 5.0 only; }	// For dolibarr 5.0.*&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
if ((float) DOL_VERSION &amp;gt;= 5.0) { //mycode for 5.0 only; }	// For dolibarr 5.0.*&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Logs==&lt;br /&gt;
Ajouter des traces dans votre code avec la fonction&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
dol_syslog($yourmessage, LOG_INFO|LOG_DEBUG|LOG_WARNING|LOG_ERR);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Répertoires de travail==&lt;br /&gt;
Si vous avez besoin de créer un répertoire de travail, dans votre code, faites référence à ce répertoire par&lt;br /&gt;
&#039;&#039;&#039;DOL_DATA_ROOT.&#039;/monmodule&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le répertoire peut être créé dans votre code à l&#039;exécution par le code suivant:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$mymoduledir=DOL_DATA_ROOT.&#039;/monmodule&#039;;&lt;br /&gt;
dol_mkdir($mymoduledir);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous avez besoin d&#039;un répertoire qui contiendra des données temporaires, ce répertoire doit être&#039;&#039;&#039; DOL_DATA_ROOT.&#039;/monmodule/temp&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Design patterns et programmation objet=&lt;br /&gt;
&lt;br /&gt;
==Design patterns de Création (GoF)==&lt;br /&gt;
Design patterns définis par le Gang Of Four (voir la wikipédia sur les [[wikipedia:Patron de conception|Design patterns]]).&lt;br /&gt;
Dans Dolibarr, pas de mise en oeuvre de design patterns de comportement particulier.&lt;br /&gt;
On trouve des objets proches des Singletons et Fabriques conformes à 100% dans l&#039;esprit mais pas dans la syntaxe, ceci afin d’être compatible avec la plus large plage possible de versions de PHP.&lt;br /&gt;
&lt;br /&gt;
==Design patterns d&#039;entreprises (Martin Fowler)==&lt;br /&gt;
&lt;br /&gt;
===Mode d&#039;organisation du code===&lt;br /&gt;
[[wikipedia:Martin_Fowler|Martin Fowler]] a identifié 3 méthodes d&#039;organisation du code appelées &#039;&#039;&#039;patterns&#039;&#039;&#039; (&#039;&#039;&#039;motifs&#039;&#039;&#039;):&lt;br /&gt;
&lt;br /&gt;
*Le &#039;&#039;&#039;Transaction Script&#039;&#039;&#039; (Le code est linéaire en fonction d&#039;une action utilisateur).&lt;br /&gt;
&lt;br /&gt;
C&#039;est le motif à l&#039;ancienne utilisé dans les langages procéduraux.&lt;br /&gt;
Inconvénient: Redondance du code. Nécessité de connaitre le modèle physique pour développer les parties métiers.&lt;br /&gt;
&lt;br /&gt;
*Le &#039;&#039;&#039;Domain Model&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C&#039;est un concept possible depuis les langages objets. Ce sont les procédures métiers (qui doivent être identifiés avant) qui servent de bases pour les classes objets.&lt;br /&gt;
Inconvénient : Motif complexe à maintenir.&lt;br /&gt;
&lt;br /&gt;
*Le &#039;&#039;&#039;Table Module&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Un intermédiaire entre les 2 précédents où l&#039;on a une instance unique de classe par table de la base de données.&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Comme le montre les squelettes de code (voir point précédent), Dolibarr se base sur le principe du &#039;&#039;&#039;Table Module&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Communication Logique métier - Données (ORM)===&lt;br /&gt;
Il existe 3 modes de liaisons:&lt;br /&gt;
&lt;br /&gt;
*Le &#039;&#039;&#039;Table And Row Data Gateway&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C&#039;est le plus simple. On crée une classe par table et chaque classe est un pont avec la table correspondante et propose les méthodes CRUD sur cette table (Create, Read, Update, Delete). Une instance de classe étant alors un enregistrement de la table. La classe ne contient que du code d&#039;accès aux lignes ou colonnes de tables. Le code métier doit alors être ajouté dans d&#039;autres classes. Les liens entre ces classes tables et les classes métiers devant être connues ou déduites de la connaissance du développeur.&lt;br /&gt;
&lt;br /&gt;
Exemple: C&#039;est le mode mis en oeuvre quand on utilise certains Frameworks d&#039;ORM comme &#039;&#039;&#039;iBatis&#039;&#039;&#039; (http://ibatis.apache.org/).&lt;br /&gt;
&lt;br /&gt;
*Le &#039;&#039;&#039;Active Record&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Identique au précédent, mais on se permet d&#039;ajouter quelques fonctions métiers sur la classe, à condition que ces fonctions soient bien  propres à la table ou à la notion métier portée par l&#039;enregistrement. C&#039;est le pattern qui offre le meilleur rapport fonctionnalité/complexité.&lt;br /&gt;
&lt;br /&gt;
Exemple: C&#039;est le mode choisi pour les développements Dolibarr et de nombreuses autres applications PHP qui ont leur propre framework et pratiques de développement.&lt;br /&gt;
&lt;br /&gt;
*Le &#039;&#039;&#039;Data Mapper&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les classes représentent les entités du problème et non les données. Il faut donc doubler, tripler... ces classes avec des classes Mapper pour accéder aux données.&lt;br /&gt;
Plus &amp;quot;puriste&amp;quot; sur le papier car plus proche du métier, ce mode a aussi l&#039;inconvénient d&#039;être très complexe et difficile à maintenir dans la réalité (l&#039;expérience pratique constatée ne rejoignant pas les promesses de la théorie).&lt;br /&gt;
&lt;br /&gt;
Exemple: C&#039;est le choix si on utilise le Framework d&#039;ORM &#039;&#039;&#039;Propel&#039;&#039;&#039; (http://propel.phpdb.org/trac/). On le trouve donc sur des applications plus lourdes basées sur cet ORM entre autres.&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Pour les développements Dolibarr, il est recommandé d&#039;utiliser le mode de liaison &#039;&#039;&#039;Active Record&#039;&#039;&#039; qui offre les avantages d&#039;un modèle proche du métier sans en avoir la complexité et sans trop masquer non plus la technique. C&#039;est dans ce mode que le développement, la compréhension du code et la maintenance technique et/ou fonctionnelle semble la plus productive (ceci est toutefois un éternel débat entre les puristes et les pragmatiques, débat dans lequel personne ne peut vraiment avoir raison, car tout dépend des objectifs à atteindre).&lt;br /&gt;
&lt;br /&gt;
==Design Pattern d&#039;Interface Graphique (MVC)==&lt;br /&gt;
Il existe plusieurs design pattern pour les interfaces utilisateurs (MVC, MVP, MVVM).&lt;br /&gt;
Beaucoup confonde ce design pattern avec celui consistant à utiliser un framework de templates. C&#039;est sans rapport. Un framework de template (voir point précédent) n&#039;est en lien qu&#039;avec la partie &amp;quot;V&amp;quot; de ces modèles.&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Dolibarr utilise le Design Pattern &#039;&#039;&#039;MVC&#039;&#039;&#039;. La partie M est matérialisée par une classe DAO contenant les méthode CRUD (Create-Read-Update-Delete) d&#039;accès à la table.&lt;br /&gt;
Beaucoup de frameworks ont fait le choix de mettre la partie de code C (Controller) et la partie de code du V (vue) dans des fichiers, voir même répertoires séparés. La maintenance semble plus aisé sur la papier, en pratique, il faut sans arrêt jonglé entre n fichiers, le C étant fortement lié au V. Aussi dans Dolibarr, la séparation est faite par une simple section de commentaire. La partie de code C (Controller) est donc le code qui se trouve sont la balise&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 * Actions&lt;br /&gt;
 */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Elle est suivi par la partie de code V (Vue), bien séparé du C par la balise&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 * View&lt;br /&gt;
 */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce mode de séparation a eu un effet neutre sur les nouveaux développement mais a permis de réduire de manière si importante le temps requis pour la maintenance et correction de bugs qu&#039;il n&#039;est pas envisagé de basculer vers un autre type de séparation (oui les constats fait dans la vraie vie ne sont pas toujours ceux attendus par la théorie scolaire). L&#039;important reste qu&#039;il y ait toujours séparation entre le C et le V, peut importe comment est matérialisé cette séparation, du moment qu&#039;elle l&#039;est (Rappel: Ne pas confondre la notion de séparation du C et du V avec la notion de séparation du code pour alimenter la données d&#039;une Vue et du code pour formater la Vue, ceci un principe de séparation relevant du Design Pattern de Vue, voir point suivant).&lt;br /&gt;
&lt;br /&gt;
==Design Pattern de Vue - Présentation==&lt;br /&gt;
Il existe des frameworks spécialisés dans le Design Pattern de Vue, la partie qui consiste à formater l&#039;écran vue par l&#039;utilisateur.&lt;br /&gt;
Les vieilles versions de Dolibarr utilisaient Smarty. Ce framework est une surcouche à un Framework, déjà très puissant, de formatage d&#039;écran nommé... PHP. Les bénéfices étant très inférieurs aux inconvénients, il a été abandonné au profit de templates PHP (fichier .tpl.php) qui restent le plus simple, le plus universel, le plus évolutif et le plus performant, des frameworks de présentation. &lt;br /&gt;
&lt;br /&gt;
Son seul défaut est qu&#039;il ne peut garantir à 100% les écarts d&#039;un développeur qui irait intégrer dans la Vue, une logique sans rapport avec la présentation (donc autre que du code à vocation de génération, de formatage, de sortie HTML, de logique de test ou de boucle). Ce point est toutefois contrôlé par le mécanisme de validation du code des chefs de projets.&lt;br /&gt;
&lt;br /&gt;
La encore, c&#039;est l&#039;expérience et le constat &amp;quot;sur le terrain&amp;quot; d&#039;un meilleur rendement de productivité qui a motivé l&#039;abandon des frameworks de Présentation externes au profit du framework PHP.&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Dolibarr_suppliers_France&amp;diff=53845</id>
		<title>Dolibarr suppliers France</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Dolibarr_suppliers_France&amp;diff=53845"/>
		<updated>2022-06-03T21:23:03Z</updated>

		<summary type="html">&lt;p&gt;Iouston: minor change add iouston as preferred partner&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Dolibarr_suppliers}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=1fonet Services|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Integrations and open source development&lt;br /&gt;
Specialist software open source.Dolibarr, Joomla! Prestashop, Cahiers des charges ERP/CRM, Ecommerce, site web, gratuits. Complementary development of the module, component or application needs. Based in the PACA region work throughout France.|&lt;br /&gt;
web=http://www.1fonet.fr|&lt;br /&gt;
email=mailto:contact@1fonet.fr|&lt;br /&gt;
zip=13530|&lt;br /&gt;
town=Trets|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=2A2C Conseil|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=CRM et Solutions e-commerce opensource pour TPM et PME, VoIP et Hosting en marque blanche, maintenance informatique, WordPress, Dolibarr, Prestashop, Formation utilisateur|&lt;br /&gt;
web=|&lt;br /&gt;
email=mailto:info@2a2c-conseil.fr|&lt;br /&gt;
zip=75012|&lt;br /&gt;
town=PARIS|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=A3SYS : MON-DOLIBARR|&lt;br /&gt;
partner=no|&lt;br /&gt;
profid=52456658500021 (SIRET)|&lt;br /&gt;
desc=Intégration, assistance et développement.&lt;br /&gt;
Notre société forte de plus de 25 ans d&#039;expérience dans l&#039;intégration de divers ERP propose ses services aux entreprises souhaitant mettre en place l&#039;ERP Dolibarr. Une plateforme dédiée est mise en place pour proposer des services de qualité à moindre coût.|&lt;br /&gt;
web=http://www.mon-dolibarr.fr|&lt;br /&gt;
email=http://www.mon-dolibarr.fr/contact/|&lt;br /&gt;
zip=59310|&lt;br /&gt;
town=Orchies (Nord - France)|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=logo_mon-dolibarr.jpg&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=A6TM - SOLUTIONS|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=A6TM SOLUTIONS, est une entreprise maîtrisant les technologies de l&#039;informatique, et spécialisée dans les solutions informatiques et notamment les services tels que l&#039;infogérance, installations et déploiements, dépannages, maintenance et réseaux informatique. Installation et maintenance CMS(Joomla, Wordpress...), Progiciel ERP/CRM (Dolibarr...)|&lt;br /&gt;
web=http://www.a6tm-solutions.fr|&lt;br /&gt;
email=mailto:contact@a6tm-solutions.fr|&lt;br /&gt;
zip=44|&lt;br /&gt;
town=Nantes et son département|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=ACN - Atelier de Création Numérique|&lt;br /&gt;
profid=808 725 212 00019|&lt;br /&gt;
desc=ACN (Atelier de Création Numérique), Maîtres d’œuvres en Informatique, Nous sommes spécialisés dans le conseil, la création et l’intégration de solutions professionnelles pour les bureaux d&#039;études. Nos solutions vont de l’intégration d’outils Open Source et de logiciels libres à la mise en place des meilleurs produits de grands éditeurs du marché.|&lt;br /&gt;
web=http://ateliercreationnumerique.com/|&lt;br /&gt;
email=mailto:contact@atlcreanum.com|&lt;br /&gt;
zip=44|&lt;br /&gt;
town=Nantes et Grand Ouest|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=acn.png|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Apio systems|&lt;br /&gt;
profid=529 919 540 00029|&lt;br /&gt;
desc=Apio systems vous accompagne dans tous vos projets Open Source. Apio systems prend en charge l&#039;hébergement, l&#039;installation et l&#039;infogérance de vos applications Open Source desservant votre entreprise, tel qu&#039;un environnement web/e-commerce avec WP/PS ou autre au besoin, la partie ERP avec Dolibarr, la partie messagerie collaborative avec Kopano, la partie partage de gros fichier avec NextCloud, etc.|&lt;br /&gt;
web=https://apio.systems/|&lt;br /&gt;
email=mailto:ping@apio.systems|&lt;br /&gt;
zip=13105|&lt;br /&gt;
town=Mimet|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=Logo-apio-systems.png|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Aplose|&lt;br /&gt;
partner=yes|&lt;br /&gt;
profid=534906698|&lt;br /&gt;
desc=&lt;br /&gt;
Aplose c&#039;est l&#039;Agence pour la Promotion du Libre et de l&#039;Open Source en Entreprise, société de service et organisme de formation spécialisé dans les logiciels libres de création de site internet et boutique en ligne (wordpress, prestashop), les erp, logiciels de gestion et logiciels de caisse et point de vente (Odoo, Dolibarr), les langages de programmation (java, html5, Javascript, php), les bases de données (mysql, postgresql), les systèmes d&#039;exploitation (linux), les méthodes des gestion de projet agiles (Scrum). Bordeaux - Montpellier|&lt;br /&gt;
web=http://www.aplose.fr|&lt;br /&gt;
email=[mailto:contact@aplose.fr?subject=Contact%20from%20Dolibarr%20Suppliers%20France20page contact@aplose.fr]|&lt;br /&gt;
zip=34990|&lt;br /&gt;
town=Juvignac|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=Logo_Aplose.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Artaban Communication|&lt;br /&gt;
partner=no|&lt;br /&gt;
profid=400 396 388 00037|&lt;br /&gt;
desc=Artaban Communication est une SSLL. Spécialistes du CMS SPIP, nous concevons et réalisons des sites web à forte composante éditoriale. Nous prenons également en charge le webmastering et la création de contenu. Notre expertise s&#039;étend à un certain nombre de logiciels, choisis pour leur qualité et leur intérêt, et avec lesquels nous aimons travailler et notamment Dolibarr. Artaban Communication est membre de l&#039;April.|&lt;br /&gt;
web=http://www.artaban.fr|&lt;br /&gt;
email=mailto:contact@artaban.fr|&lt;br /&gt;
zip=94340|&lt;br /&gt;
town=Joinville-le-Pont|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=Artaban_logo.png‎|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=ATM Consulting|&lt;br /&gt;
partner=yes|&lt;br /&gt;
profid=753 447 481 00015|&lt;br /&gt;
desc=Consulting company dedicated to small and medium enterprises information system optimization, we provide to our customers open-source based solutions to improve their information system efficiency. We offer hosting and support solutions and we are Dolibarr contributor, developer and integrator. &amp;quot;Open-source. Custom. Freedom&amp;quot;|&lt;br /&gt;
web=http://www.atm-consulting.fr|&lt;br /&gt;
email=mailto:contact@atm-consulting.fr|&lt;br /&gt;
zip=26000|&lt;br /&gt;
town=Valence|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=AB2L|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Un Alsacien à votre service. Installation et configuration de l&#039;ERP/CRM Dolibarr dans votre entreprise ou sur notre serveur. Nous vous accompagnons pour un démarrage rapide et serein. Nous sommes une société de service en logiciel libre fournissant un équivalent open source au logiciel propriétaire de tout type. |&lt;br /&gt;
web=http://www.ab2l.eu|&lt;br /&gt;
email=mailto:contact@ab2l.eu|&lt;br /&gt;
zip=67000|&lt;br /&gt;
town=Strasbourg|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Axopen IT Services|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=L&#039;entreprise Axopen propose toute une gamme de produits et services informatiques allant du conseil en système d&#039;informations, développement de solutions sur mesure et intégration de solutions Open Source ou propriétaires. Nous sommes spécialisé en particulier dans l&#039;intégration de solutions de gestion de la relation client Open Source telles que Dolibarr, SugarCRM ou VTiger... |&lt;br /&gt;
web=http://www.axopen.com|&lt;br /&gt;
email=mailto:contact@axopen.com|&lt;br /&gt;
zip=69001|&lt;br /&gt;
town=Lyon|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=AKILIS|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=AKILIS est une société éditrice de logiciels de gestion qui a fait le pari d’utiliser les nouvelles méthodes de travail pour développer des solutions clairs et efficaces. Notre mission est de vous proposer des solutions simples d&#039;utilisation, ne demandant aucun entretien de votre part, ni aucune connaissance technique particulière. Notre outil est celui que VOUS utilisez quotidiennement : le Web.&lt;br /&gt;
AKILIS, c’est une équipe toujours disponible pour vous guider et vous écouter. Nous développons et améliorons sans cesse nos logiciels afin que ceux-ci répondent au mieux à votre activité et vos besoins.&lt;br /&gt;
AKILIS peut également, dans le cadre de besoin partculier, étudier avec vous un développement sur mesure. |&lt;br /&gt;
web=http://www.akilis.fr|&lt;br /&gt;
email=mailto:contact@akilis.fr|&lt;br /&gt;
zip=69200|&lt;br /&gt;
town=Vénissieux|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Altairis|&lt;br /&gt;
profid=488020108|&lt;br /&gt;
partner=yes|&lt;br /&gt;
desc=Développements spécifiques, Installation, Formation, Accompagnement à la mise en oeuvre, Support, Intégration. Spéclialiste solution de gestion des locations de produits avec Dolibarr.|&lt;br /&gt;
web=http://www.altairis.fr|&lt;br /&gt;
email=contact@altairis.fr|&lt;br /&gt;
zip=18270|&lt;br /&gt;
town=Culan|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Atoo.Net|&lt;br /&gt;
partner=yes|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Installation et configuration de l&#039;ERP/CRM Dolibarr soit sur nos serveurs, soit en local dans votre entreprise. Aide à la prise en main et formation.|&lt;br /&gt;
web=http://www.atoo-net.com/|&lt;br /&gt;
email=contact@atoo-net.com|&lt;br /&gt;
zip=45160|&lt;br /&gt;
town=Olivet|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Bee-Smart.online|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=15 ans d&#039;expérience aux services des PME &amp;amp; grands groupes, Bee-Smart vous propose un accompagnement sur mesure , adapté à vos besoins métiers et votre budget.N&#039;hésitez pas, Bee-Smart.online, le partenaire de vos projets réussis.|&lt;br /&gt;
web=https://bee-smart.online|&lt;br /&gt;
email=contact@bee-smart.online|&lt;br /&gt;
zip=25|&lt;br /&gt;
town=Montbéliard|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Blue-Click Informatique|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Nous proposons l&#039;installation et la configuration de l&#039;ERP/CRM Dolibarr dans votre entreprise ou sur votre hébergement Internet. De plus nous assurons la formation pour la prise en main de cet outil adapté aux TPE et PME.|&lt;br /&gt;
web=http://www.blue-click.fr|&lt;br /&gt;
email=|&lt;br /&gt;
zip=92,78|&lt;br /&gt;
town=Nanterre,Plaisir|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=CAP-REL|&lt;br /&gt;
partner=yes|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Après avoir contribué au code de dolibarr dans les années 2004-2005 et l&#039;avoir utilisé en interne pour de nombreux projets depuis cette époque je propose maintenant un service autour de Dolibarr (adaptation, accompagnement, utilisation etc.).|&lt;br /&gt;
web=https://www.cap-rel.fr|&lt;br /&gt;
email=eric.doli@cap-rel.fr|&lt;br /&gt;
zip=30|&lt;br /&gt;
town=Département du Gard|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=Logo_cap-rel.png‎|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Caribbean Consult CCC|&lt;br /&gt;
partner=yes|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Installation, configuration de l&#039;ERP/CRM Dolibarr en ligne, ou en local pour votre entreprise ou association. Migration de données vers Dolibarr. Prise en main, support et formation.|&lt;br /&gt;
web=https://dolibarr.ccc.gp|&lt;br /&gt;
email=support@caribbeanconsult.com|&lt;br /&gt;
zip=97180|&lt;br /&gt;
town=Sainte Anne (Guadeloupe et Martinique) Antilles Guyane|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=Logo_CCC.png‎|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Cergy Internet|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Cergy Internet est spécialisé dans l’informatique et plus spécifiquement dans l’internet pour les PMI/PME. Nous maitrisons les technologies digitales du simple site web jusqu’au portail complète de pilotage d’entreprise. Grâce à Dolibarr nous pouvons vous donner une vision unique sur vos clients, vos produits et même votre trésorerie. Nous lions Dolibarr avec Wordpress et sur Smartphones pour créer des portails pour vos clients. Notre directeur, Thomas Carter, a fait son MBA à MIT aux USA et a géré des entreprises de plus de 100 personnes. Il met cette expérience à votre disposition. Chez Cergy Internet nous maitrisons la technologie de boute en boute. Nous avons notre propre équipe de jeunes codeurs qui baignent dans tous qui est réseaux sociaux, applications iPhone etc. ainsi qu’une plateforme de 30 serveurs pour héberger vos sites. |&lt;br /&gt;
web=www.cergy-internet.fr|&lt;br /&gt;
email=mailto:thomas.carter@cergy-internet.fr|&lt;br /&gt;
zip=95300|&lt;br /&gt;
town=Cergy-Pontoise|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Code 42|&lt;br /&gt;
partner=yes|&lt;br /&gt;
profid=793 600 735 00021|&lt;br /&gt;
desc=Nous vous accompagnons dans l’installation  et le développement de votre outil informatique. Code 42, c’est avant tout une démarche qualité et de conseil pour une relation durable. Vous avez la vision de votre entreprise, nous avons les moyens.|&lt;br /&gt;
web=www.code42.fr|&lt;br /&gt;
email=mailto:lareponse@code42.fr|&lt;br /&gt;
zip=44100|&lt;br /&gt;
town=NANTES|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=D-BOG|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=IT services company located in Beaune (21), moved around Dolibarr:&lt;br /&gt;
Installation, setup, configuration on the internal server or hosted;&lt;br /&gt;
Training agreement;&lt;br /&gt;
Outsourcing, on-site maintenance and remote.|&lt;br /&gt;
web=http://www.d-bog.com/|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=Beaune|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=DiVA-Cloud|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=DiVA-Cloud propose des applications OpenSource de gestion de la communication et de l&#039;information pour les entreprises. Notre logithèque contient des applications de WebConference, ERP, CRM, CMS, GED, et bien d&#039;autres... Toutes ces applications pré-configurés sont mises à disposition sur un environnement privé. |&lt;br /&gt;
web=www.diva-cloud.com |&lt;br /&gt;
email=mailto:contact@diva-cloud.com |&lt;br /&gt;
zip=81100|&lt;br /&gt;
town=Castres|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=DoliCloud|&lt;br /&gt;
partner=yes|&lt;br /&gt;
desc=DoliCloud is one of the most important contributor on Dolibarr and can host for you a Dolibarr instance in a SaaS (Software As A Service) mode.|&lt;br /&gt;
profid=493 861 496 00021|&lt;br /&gt;
web=https://www.dolicloud.com|&lt;br /&gt;
email=|&lt;br /&gt;
zip=33600|&lt;br /&gt;
town=Pessac (Bordeaux)|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes (https://www.dolicloud.com)|&lt;br /&gt;
service_onlinesupport=only for DoliCloud.com customers|&lt;br /&gt;
service_emailsupport=only for DoliCloud.com customers|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=no|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
logo=logo_dolicloud.png}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Elonet|&lt;br /&gt;
partner=yes|&lt;br /&gt;
profid=SIRET:52511620800022|&lt;br /&gt;
desc=Elonet est intégrateur et développeur de solutions pour Dolibarr.|&lt;br /&gt;
web=https://elonet.fr/dolibarr.php|&lt;br /&gt;
email=mailto:contact@elonet.fr|&lt;br /&gt;
zip=59000|&lt;br /&gt;
town=LILLE|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=ElonetNew.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=FUTUR TECH|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Prestataire de services pour artisans, TPE, PME :&lt;br /&gt;
Solutions open source, Internet, Sécurité, Sauvegarde, Antivirus, Gestion d&#039;entreprise, Conseil, Formation, Installation et Paramétrage&lt;br /&gt;
Intervention sur site client. Situé entre Bordeaux et Libourne|&lt;br /&gt;
web=http://www.futur-tech.com|&lt;br /&gt;
email=mailto:info@futur-tech.com|&lt;br /&gt;
zip=33450|&lt;br /&gt;
town=IZON|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Groupe KM|&lt;br /&gt;
profid=790 885 388 00013|&lt;br /&gt;
desc=Intégrateur,développeur et hébergeur de solutions Open Source: Progiciel ERP/CRM (Dolibarr),CMS(Joomla)et e-commerce(Prestashop).&amp;lt;br&amp;gt;Nous déployons aussi des solutions Téléphonie (VOIP, PABX...) et Accés Internet (ADSL/VDSL, SDSL...).&amp;lt;br&amp;gt;&lt;br /&gt;
Secteur Cannes, Antibes, Sophia-Antipolis, Carros, Nice et plus généralement toutes les Alpes-Maritimes.&amp;lt;br&amp;gt;&lt;br /&gt;
Notre objectif : Vous satisfaire!|&lt;br /&gt;
web=https://www.groupe-km.com|&lt;br /&gt;
email=mailto:contact@groupe-km.com|&lt;br /&gt;
zip=06220|&lt;br /&gt;
town=Vallauris|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=GWARED|&lt;br /&gt;
profid=804 659 027 00036|&lt;br /&gt;
desc=La société GWARED, est une équipe diplômée dans le domaine de l’informatique, de plus de 10 ans d’expériences dans diverses structures telles que de grandes administrations, sociétés privées mais aussi au service des particuliers. Nous sommes à l’écoute pour vous accompagner dans vos projets.&lt;br /&gt;
&lt;br /&gt;
Professionnel ou particulier, nous vous proposons de nombreux services informatiques et domotiques adaptés à votre configuration et vos besoins. Nos prestations concernent la réparation et la maintenance de votre ordinateur ou de votre parc informatique, l&#039;installation réseau (Local informatique, Internet, intranet, Wifi, CPL, etc.), l&#039;installation d’alarmes et vidéo-surveillance, sur site, à distance ou à domicile.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notre société se distingue en trois branches :&lt;br /&gt;
&lt;br /&gt;
- L’informatique (GWARED)&lt;br /&gt;
- La sécurité (alarme, vidéosurveillance et protection numérique) (GWARDSECURITY)&lt;br /&gt;
- Les jeux vidéo (concepteur de console de jeux) (GWARDBOX)&lt;br /&gt;
&lt;br /&gt;
Nous pourrons répondre à tous vos besoins dans le domaine de l’informatique.|&lt;br /&gt;
web=http://www.gwared.fr|&lt;br /&gt;
email=[mailto:support@gwared.fr?subject=Contact%20de%20Dolibarr%20Suppliers%20France support@gwared.fr]|&lt;br /&gt;
zip=77500|&lt;br /&gt;
town=Chelles et Île de France|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=Logo_Gwared.png|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=HELIUM TECHNOLOGIES|&lt;br /&gt;
profid=494 895 360 00027|&lt;br /&gt;
partner=yes|&lt;br /&gt;
desc=&lt;br /&gt;
Mise en place de solutions ERP Dolibarr sur nos serveurs ou dans votre entreprise avec assistance téléphonique, support technique, développement de modules spécifiques et formation.&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;SSII basée en Guadeloupe, Martinique et Guyane&#039;&#039;&#039;, nous proposons également des solutions libres comme GLPI, Prestashop, Joomla, Odoo, Zimbra, BlueMind, Centreon, ...|&lt;br /&gt;
web=http://|&lt;br /&gt;
email=[mailto:contact@helium-technologies.com?subject=Contact%20from%20Dolibarr%20Suppliers%20France20page contact@helium-technologies.com]|&lt;br /&gt;
zip=97122|&lt;br /&gt;
town=BAIE-MAHAULT (GUADELOUPE)|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=Logo_HeliumTechnologies.jpg&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Infonel.net|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=administrateur système open source indépendant:&lt;br /&gt;
Installation, paramétrage, configuration et sécurisation de dolibarr sur site client|&lt;br /&gt;
web=http://www.infonel.net|&lt;br /&gt;
email=|&lt;br /&gt;
zip=11100|&lt;br /&gt;
town=Narbonne|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=iNodbox|&lt;br /&gt;
partner=yes|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Développeur indépendant d&#039;application web, paramétrage et installation de Dolibarr, développement de modules spécifique. Basé dans l&#039;Ain à Bourg en Bresse (30min de Mâcon, 1h de Chalon sur Saône, 1h de Lyon), je contribue depuis de nombreuses années au développement de Dolibarr.|&lt;br /&gt;
web=https://www.inodbox.com/|&lt;br /&gt;
email=regis.houssin@inodbox.com|&lt;br /&gt;
zip=01000|&lt;br /&gt;
town=Bourg en Bresse|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=(https://www.inodbox.com)|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Inovea Conseil|&lt;br /&gt;
partner=yes|&lt;br /&gt;
profid=797 613 072 00017|&lt;br /&gt;
desc=Développeur, Intégrateur, Hébergeur et Formateur de Dolibarr pour TPE - PME | &lt;br /&gt;
web=https://www.inovea-conseil.com/ |&lt;br /&gt;
email=https://www.inovea-conseil.com/contact/ |&lt;br /&gt;
zip=88,54,75|&lt;br /&gt;
town=Nancy|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=Inoveaconseil.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=i.d &amp;amp; l|&lt;br /&gt;
profid=521 749 994 00013|&lt;br /&gt;
desc=Conseil et intégration de solutions logicielles libres, dont Dolibarr, pour artisans, TPE, indépendants, commerçants, PME, associations...|&lt;br /&gt;
web=https://idl-mp.com|&lt;br /&gt;
email=https://idl-mp.com/contact/|&lt;br /&gt;
zip=31,32,09,82,81|&lt;br /&gt;
town=Région toulousaine|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=iouston informatique|&lt;br /&gt;
partner=yes|&lt;br /&gt;
profid=792 353 005 00046|&lt;br /&gt;
desc=iouston informatique, situé à proximité de Nancy, Metz, Lunéville, est spécialisée auprès des associations, des TPE et des artisans commerçants. Nous installons et configurons dolibarr pour vous et nous formons vos équipes à son utilisation quotidienne. Nous proposons de nombreux autres services, associés ou non à dolibarr. Nous travaillons avec dolibarr depuis plus de 6 ans et éditons des modules supplémentaires pour dolibarr, [https://www.dolistore.com/fr/recherche?controller=search&amp;amp;orderby=position&amp;amp;orderway=desc&amp;amp;search_query=iouston&amp;amp;submit_search= disponibles sur dolistore]|&lt;br /&gt;
web=https://www.iouston.com|&lt;br /&gt;
email=allo@iouston.com|&lt;br /&gt;
zip=54370|&lt;br /&gt;
town=Einville au Jard|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=ISYNUX|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Société de services en réseaux et sytèmes. ISYNUX vous propose un suivi complet pour DOLIBARR : installation, hébergement, personnalisation de vos modèles de document, formation à la carte. |&lt;br /&gt;
web=http://www.isynux.fr|&lt;br /&gt;
email=mailto:formation@isynux.fr|&lt;br /&gt;
zip=626100|&lt;br /&gt;
town=Ardres|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Jeffinfo (ZenDSI)|&lt;br /&gt;
profid=429 625 973|&lt;br /&gt;
partner=yes|&lt;br /&gt;
desc=Jeffinfo est une société de services en informatique qui vous sert depuis plus de 15 ans dont 10 ans dans le domaine de Dolibarr. Implanté dans le nord à Ennetières en Weppes. Nous sommes à vos services pour vous proposer tous les services autour de votre ERP préféré.&lt;br /&gt;
web=https://shop.zendsi.com|&lt;br /&gt;
email=mailto:contact@zendsi.com|&lt;br /&gt;
zip=59320|&lt;br /&gt;
town=Ennetières en Weppes|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=KJR online|&lt;br /&gt;
profid=818 889 644 00014|&lt;br /&gt;
desc=Conseils et Services Informatiques. Installation, formation et personnalisation de Dolibarr. Région Toulousaine.|&lt;br /&gt;
web=http://www.kjr-online.fr|&lt;br /&gt;
email=mailto:eric.picabia@kjr-online.fr|&lt;br /&gt;
zip=31210|&lt;br /&gt;
town=Clarac|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Kreiz IT|&lt;br /&gt;
partner=yes|&lt;br /&gt;
profid=	752 505 131 00017|&lt;br /&gt;
desc={{Flag_fr}}Conseils en organisation et sécurité informatique pour les TPE / PME. Dolibarr fait partie des outils informatiques structurants pour les TPE/PME proposé par Kreiz IT.&lt;br /&gt;
&lt;br /&gt;
{{Flag_en}}IT management and security consultant for small to medium business. Dolibarr is part of IT&#039;s structuring tools for business used by Kreiz IT. |&lt;br /&gt;
web=http://www.kreiz-it.fr |&lt;br /&gt;
email=mailto:contact@kreiz-it.fr |&lt;br /&gt;
zip=56600|&lt;br /&gt;
town=Lanester|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=LogoKIT.jpg&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=LIBRE EXPERT|&lt;br /&gt;
partner=no|&lt;br /&gt;
profid=48879200300045|&lt;br /&gt;
desc={{Flag_fr}}Intégrateur et développeur Dolibarr, auteur de plusieurs modules complémentaires, spécialiste également de l&#039;administration Linux.&lt;br /&gt;
&lt;br /&gt;
{{Flag_en}}&lt;br /&gt;
Integrator and Dolibarr developer, author of several complementary modules, also specialist in Linux administration. |&lt;br /&gt;
web=http://www.libre-expert.com|&lt;br /&gt;
email=mailto:contact@libre-expert.com |&lt;br /&gt;
zip=63100|&lt;br /&gt;
town=Clermont-Ferrand|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Libre Master|&lt;br /&gt;
partner=no|&lt;br /&gt;
profid=|&lt;br /&gt;
desc={{Flag_fr}}Expert système d&#039;hébergement Linux Debian depuis plus de 20 ans, je vous évite de passer du temps à obtenir un Dolibarr fonctionnel, rapide, sécurisé et sauvegardé.&lt;br /&gt;
Je connecte également votre Dolibarr à des relais de messagerie pour que vos factures n&#039;arrivent dans les SPAMs.|&lt;br /&gt;
web=https://libremaster.ovh/c/dolibarr/|&lt;br /&gt;
email=https://libremaster.ovh/contact/ |&lt;br /&gt;
zip=38350|&lt;br /&gt;
town=La Mure|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=no|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Librethic|&lt;br /&gt;
partner=yes|&lt;br /&gt;
profid=83334801400014|&lt;br /&gt;
desc={{Flag_fr}}Librethic est une Société de Services en Informatique et Technologies Libres, tournée vers les entreprises et les associations. Créée en 2017, elle est portée par des professionnels aguerris aux technologies libres et open source. &lt;br /&gt;
L&#039;environnement Dolibarr fait partie du cœur de compétences de Librethic (développement de modules complémentaires, hébergement SaaS, hébergement sur site, passerelle e-commerce).&lt;br /&gt;
{{Flag_en}}&lt;br /&gt;
Librethic is an IT Provider aiming at businesses and organizations, offering services in free/libre and open source software (FLOSS) and open design technologies. &lt;br /&gt;
Founded in 2017, Librethic is driven by libre and open source technologies seasoned professionals. Dolibarr&#039;s environment is one of Librethic&#039;s core skills (Addons and plugins development, SaaS hosting, on-premise hosting, e-commerce gateway).&lt;br /&gt;
web=https:/librethic.io/|&lt;br /&gt;
email=mailto:hello+dolibarr@librethic.io|&lt;br /&gt;
zip=34070|&lt;br /&gt;
town=Montpellier|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=logo-librethic.png&lt;br /&gt;
}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=LVS Informatique|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Development Specialist php, mysql. Creation, enhancement, customization of modules and components ...&lt;br /&gt;
Nos modifs/nos modules :&lt;br /&gt;
-cashdesk : prix en ttc, possibilité de modification du prix, du libellé...&lt;br /&gt;
-interfaçage avec GoogleAgenda (toutes les actions apparaissent dans GoogleAgenda)&lt;br /&gt;
-Mails/Télécopies reçus : apparaissent dans un onglet spécifique sur le tiers en question&lt;br /&gt;
-qualification Tiers&lt;br /&gt;
-Adresse Tiers vu dans GoogleMap&lt;br /&gt;
-creation de nbreux template excel/pdf&lt;br /&gt;
|&lt;br /&gt;
web=http://www.lvsinformatique.com|&lt;br /&gt;
email=|&lt;br /&gt;
zip=83860|&lt;br /&gt;
town=NANS LES PINS|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=MEDIALTA|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Installation, configuration de Dolibarr sur nos serveurs, ou dans l&#039;entreprise (Nancy, Metz, Lorraine, Grand Est). Formation, prise en main. Développement de modules sur mesure.|&lt;br /&gt;
web=www.medialta.com|&lt;br /&gt;
email=|&lt;br /&gt;
zip=54340|&lt;br /&gt;
town=Pompey|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Mephivio|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Services company with a computer located in Montpellier agglo, specializing in computer graphics, secretariat, Joomla web sites, client, opensource (Dolibarr, glpi, voip Elastix / Trixbox / PIAF etc ...)|&lt;br /&gt;
web=http://www.mephivio.fr/|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=|&lt;br /&gt;
country=fr|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=MEZIANT|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=MEZIANT propose aux PME, TPE, artisans, commerçants et associations de l&#039;Ouest son expertise en informatique issue d&#039;une expérience de plus de 15 ans en Audit de Système d&#039;Informations,  Site internet, Formation et Choix de logiciel de gestion (ERP) comme &#039;&#039;&#039;DOLIBARR&#039;&#039;&#039; dont elle peut assurer l’installation, la formation ou encore le développement de modules spécifiques sur site client.&lt;br /&gt;
web=http://www.meziant.fr |&lt;br /&gt;
email=mailto:contact@meziant.fr |&lt;br /&gt;
zip=22940|&lt;br /&gt;
town=PLAINTEL (Bretagne - France)|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Modulaweb : Technologies modulables orientées web.|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Développement d&#039;applicatifs web, hébergement d&#039;applications web, serveurs de fichiers et de sauvegarde, sites internet/intranet et intégration web, espaces clients, communication via internet (VoIP, messagerie instantanée), travail collaboratif. Spécialiste solutions libres pour l&#039;entreprise (Zimbra, Dolibarr, Thaïs...) Région Languedoc-Rouissillon et voisines |&lt;br /&gt;
web=http://www.modulaweb.fr|&lt;br /&gt;
email=http://www.modulaweb.fr/portail/contact/|&lt;br /&gt;
zip=34000|&lt;br /&gt;
town=Montpellier|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Net Logic|&lt;br /&gt;
partner=yes|&lt;br /&gt;
profid=SIRET: 477 583 264 00023|&lt;br /&gt;
desc=Installation et configuration de l&#039;ERP/CRM Dolibarr sur nos serveurs, ou en local dans votre entreprise. Paramétrage, personnalisation, reporting spécifique, assistance.|&lt;br /&gt;
web=http://www.netlogic.fr/|&lt;br /&gt;
email=info@netlogic.fr|&lt;br /&gt;
zip=93160|&lt;br /&gt;
town=Noisy-le-Grand|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=NORD ERP CRM|&lt;br /&gt;
partner=no|&lt;br /&gt;
profid=83184221600010 (SIRET)|&lt;br /&gt;
desc=Intégration, assistance, formation, développements spécifiques et hébergement de solutions Dolibarr. NORD ERP CRM est certifié QUALIOPI ce qui permet la prise en charge des formations par les organismes de financement. Nous nous adaptons à vos spécificités métiers.|&lt;br /&gt;
web=https://www.nord-erp-crm.fr/|&lt;br /&gt;
email=mailto:contact@nord-erp-crm.fr|&lt;br /&gt;
zip=59100|&lt;br /&gt;
town=Roubaix|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=NS-INFO90|&lt;br /&gt;
partner=no|&lt;br /&gt;
profid=79392284000020(SIRET)|&lt;br /&gt;
desc=Intégration, assistance, formation, développements spécifiques et hébergement de solutions Dolibarr|&lt;br /&gt;
web=https://www.ns-info90.fr/|&lt;br /&gt;
email=mailto:contact@ns-info90.fr|&lt;br /&gt;
zip=90360|&lt;br /&gt;
town=Lachapelle-sous-rougemont|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=LOGO NS-INFO90.png|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=NUM&#039;X|&lt;br /&gt;
partner=no|&lt;br /&gt;
profid=82465583100017(SIRET)|&lt;br /&gt;
desc=NUM&#039;X est une entreprise de services numériques (ESN) intervenant notamment pour les TPE PME et proposant des services autour du PGI Dolibarr|&lt;br /&gt;
web=https://www.numx-sets.eu/dolibarr.html|&lt;br /&gt;
email=mailto:contact@numx-sets.eu|&lt;br /&gt;
zip=44590|&lt;br /&gt;
town=SION-LES-MINES|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=LOGO numx-sets.png|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=OAS-SERVICES|&lt;br /&gt;
profid=829767904|&lt;br /&gt;
partner=no|&lt;br /&gt;
desc=&lt;br /&gt;
OAS-SERVICES est une société de service spécialisés dans la mise en place de logiciels libres sous forme de services cloud, notamment de Ma Gestion Cloud (Dolibarr, viger), la mise en place de site internet et boutique en lignes, le développement d&#039;application et de modules en PHP (Dolibarr, Wordpress, Prestashop), mais aussi en Java (JEE, Webservices, JPA), la mise en place de systèmes d&#039;exploitation (linux), la gestion de projet en agilité - Montpellier, Sète|&lt;br /&gt;
web=https://www.ma-gestion-cloud.fr|&lt;br /&gt;
email=[mailto:contact@oas-services.fr?subject=Contact%20from%20Dolibarr%20Suppliers%20France20page contact@oas-services.fr]|&lt;br /&gt;
zip=34200|&lt;br /&gt;
town=SETE|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
logo=logo-oas-services.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=OPEN-DSI|&lt;br /&gt;
partner=yes|&lt;br /&gt;
profid=SIRET:75130522800015|&lt;br /&gt;
desc=Depuis 2012, nous accompagnons les petites et moyennes structures (1 à 50 salariés) dans la mise en place de solutions basées sur les logiciels libres. Nous proposons Dolibarr pour tous les besoins de gestion.|&lt;br /&gt;
web=https://www.open-dsi.fr|&lt;br /&gt;
email=mailto:infos@open-dsi.fr|&lt;br /&gt;
zip=69,38,01,42|&lt;br /&gt;
town=LYON|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=opendsi.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Opens|&lt;br /&gt;
partner=no|&lt;br /&gt;
profid=SIRET:888 706 280 00011|&lt;br /&gt;
desc=Opens est spécialisée dans l&#039;accompagnement Digital, RH et Qualité. Nous croyons que ces trois pôles sont intimement liés et œuvrons pour la souveraineté numérique de nos clients. Nous intervenons principalement dans l&#039;Hérault et l&#039;Occitanie.|&lt;br /&gt;
web=https://solutions.open-s.fr|&lt;br /&gt;
email=mailto:contact@open-s|&lt;br /&gt;
zip=34000|&lt;br /&gt;
town=MONTPELLIER|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=Logo_opens_solutions.png|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=OIS - Open IT Store|&lt;br /&gt;
profid=822 430 419 00017|&lt;br /&gt;
desc=OIS (Open IT Store), We provide opensource instances located in Europe or North America.|&lt;br /&gt;
web=https://openitstore.com/dolibarr|&lt;br /&gt;
email=mailto:contact@openitstore.com|&lt;br /&gt;
zip=|&lt;br /&gt;
town=|&lt;br /&gt;
country=|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=no|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Oscss Shop|&lt;br /&gt;
partner=yes|&lt;br /&gt;
profid=SIRET:810 421 339 00013|&lt;br /&gt;
desc=Développement de modules sur mesure, interconnexions  et hébergements.|&lt;br /&gt;
web=http://oscss-shop.fr|&lt;br /&gt;
email=mailto:support@oscss-shop.fr|&lt;br /&gt;
zip=28,45,41,72,61,27,75,69,38,01,73,74|&lt;br /&gt;
town=LA LOUPE|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Pascal Sené|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Logiciels libres et photographie.|&lt;br /&gt;
web=http://www.pascalsene.com|&lt;br /&gt;
email=contact@pascalsene.com|&lt;br /&gt;
zip=22,29,35,56|&lt;br /&gt;
town=Lannion|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Patas-Monkey|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Conseil, formation, développement et modules| &lt;br /&gt;
web=http://www.patas-monkey.com|&lt;br /&gt;
email=r.deschamps@patas-monkey.com|&lt;br /&gt;
zip=69,42,38,01,83|&lt;br /&gt;
town=Lyon|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=Patasmonkey.jpg&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Pragma-tech|&lt;br /&gt;
partner=no|&lt;br /&gt;
profid=842 325 268 00014|&lt;br /&gt;
desc=Intégrateur, Hébergeur et Formateur de Dolibarr pour TPE - PME | &lt;br /&gt;
web=https://www.pragma-tech.fr/ |&lt;br /&gt;
email=contact@pragma-tech.fr|&lt;br /&gt;
zip=|&lt;br /&gt;
town=PAU|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=pragma-tech.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=ProbeSys|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Créée en 2003 par des passionnés du logiciel libre, [http://probesys.com ProbeSys] est une entreprise coopérative à l&#039;image du secteur des nouvelles technologies : dynamique, réactive et participative. |&lt;br /&gt;
web=http://www.probesys.com|&lt;br /&gt;
email=mailto:contact@probesys.com|&lt;br /&gt;
zip=38600|&lt;br /&gt;
town=Fontaine|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=PRODUCTIVIX sarl|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Productivix fourni aux PMI des solutions complètes de traçabilité code-barre / rfid et développe des applications mobiles sur mesure offline (connexions intermitentes) de scan et d&#039;impression mobiles liées à des ERP, elle travaille avec Dolibarr via ses API, paramètre les modules et fourni si nécessaire l&#039;hébergement et les modifications ou création de modules nécessaires dans Dolibarr; Productivix founi les licences mobiles en location, et à l&#039;achat les imprimantes et terminaux durcis avec scanner intégré- développements et installations à distance tous pays|&lt;br /&gt;
web=https://www.productivix.com/mot62.html|&lt;br /&gt;
email=https://www.productivix.com/article239.html|&lt;br /&gt;
zip=38|&lt;br /&gt;
town=Bourgoin-Jallieu|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Pro IP|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Mise en place de solutions ERP comme Dolibarr sur nos serveurs ou dans votre entreprise, assistance et formation|&lt;br /&gt;
web=http://wwww.proip.fr|&lt;br /&gt;
email=mailto:contact@proip.fr|&lt;br /&gt;
zip=62129|&lt;br /&gt;
town=Clarques|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Proxy-Media|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Services Informatiques aux artisans et independants|&lt;br /&gt;
email=mailto:contact@proxy-media.fr|&lt;br /&gt;
zip=17340|&lt;br /&gt;
town=Chatelaillon|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=PTMSoft SARL|&lt;br /&gt;
profid=520 618 646 00019|&lt;br /&gt;
desc=Société de services et de développement logiciel. Installation Dolibarr sur nos serveurs ou dans votre entreprise, assistance et configuration.|&lt;br /&gt;
web=http://www.ptmsoft.fr|&lt;br /&gt;
email=[mailto:contact@ptmsoft.fr?subject=Contact%20de%20la%20page%20Dolibarr%20Suppliers%20France contact@ptmsoft.fr]|&lt;br /&gt;
zip=68890|&lt;br /&gt;
town=Mulhouse, Colmar|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
logo=Logo PTMSoft.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=SIMICAR|&lt;br /&gt;
profid=832 284 616 00014|&lt;br /&gt;
desc=Société de services et de développement logiciel. Faire de Dolibarr Vote Dolibarr.|&lt;br /&gt;
web=http://www.simicar.fr|&lt;br /&gt;
email=[mailto:contact@simicar.fr]|&lt;br /&gt;
zip=29290|&lt;br /&gt;
town=Saint-Renan|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=Logo v2.svg.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Syllene|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=We install and configure the software Dolibarr to suit your needs and train your users. We can also provide hosting and maintenance of your application.|&lt;br /&gt;
web=http://www.syllene.net/|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Teclib&#039;|&lt;br /&gt;
profid=513893503|&lt;br /&gt;
partner=yes|&lt;br /&gt;
desc=&lt;br /&gt;
Teclib est une société de services en informatique au capital de 400 000€. Implantés à Paris, Colmar (Alsace), Caen, Chartres (Région Centre). L&#039;équipe Teclib&#039; rassemble une quarantaine de personnes spécialisées dans l&#039;intégration, hébergement et développements de logiciels libres tels que Dolibarr, Odoo, GLPI, Zimbra, BlueMind, Nagios, Centreon, ... |&lt;br /&gt;
web=http://www.teclib.com|&lt;br /&gt;
email=[mailto:contact@teclib.com?subject=Contact%20from%20Dolibarr%20Preferred%20Partners%20page contact@teclib.com]|&lt;br /&gt;
zip=75001|&lt;br /&gt;
town=Paris|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=no|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=Logo_Teclib.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Tiaris|&lt;br /&gt;
partner=yes|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Solutions and services for small businesses and merchants: e-commerce, maintenance, ERP/CRM Dolibarr, development telecommuting. ecommerce - dolibarr webservice based interface. Saas Offer Dolibarr + ecommerce connection for open source caddies (OsCommerce, Zencart, Crelaoded, Prestashop and others...)|&lt;br /&gt;
web=http://www.tiaris.fr/|&lt;br /&gt;
email=http://www.tiaris.fr/spip.php?page=contact|&lt;br /&gt;
zip=57870|&lt;br /&gt;
town=WALSCHEID|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=UTOPSYS -  L&#039;Informatique, Professionnelle.|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Maintenance, dépannage, conseil, audits, Green IT, solutions open-source de travail collaboratif, installation et maintenance Dolibarr. Bordeaux, CUB, Libourne.|&lt;br /&gt;
web=http://www.utopsys.fr|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=Libourne|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=YON - Your Own Net|&lt;br /&gt;
profid=822 430 419 00017|&lt;br /&gt;
desc=YON (Your Own Net), Fournisseur de solution numérique, Nous sommes spécialisés dans la fourniture de solutions informatiques pour les professionnelles et les particuliers. Nos solutions vont de l’intégration d’outils Open Source et de logiciels libres à l&#039;hébergement de logiciels.|&lt;br /&gt;
web=http://yourownnet.net/|&lt;br /&gt;
email=mailto:contact@yourownnet.net|&lt;br /&gt;
zip=79|&lt;br /&gt;
town=Niort et Grand Ouest|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Weedoo Digital|&lt;br /&gt;
profid=831 555 008 000 18 (SIRET)|&lt;br /&gt;
desc=Weedoo Digital est un fournisseur de solutions cloud et digitales pour entreprises. Nos services s’étendent de l’hébergement CLOUD aux solutions de gestion pour entreprises, en passant par le développement web et le E-marketing.|&lt;br /&gt;
web=https://www.weedoo.digital/|&lt;br /&gt;
email=https://www.weedoo.digital/contactez-nous/|&lt;br /&gt;
zip=01|&lt;br /&gt;
town=Ain et Rhône-Alpes|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=WEBINFOPRO|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Society Computers and Internet service for small businesses located in the suburbs west of Paris. One of the main activities is the integration of open source software.|&lt;br /&gt;
web=http://www.webinfopro.fr/|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Z-Application|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Développement personnalisé et assistance à la installation-migration. Support sur site possible dans le département Manche (50).|&lt;br /&gt;
web=https://www.z-application.com/|&lt;br /&gt;
email=|&lt;br /&gt;
zip=50250|&lt;br /&gt;
town=Coutances - Cherbourg - Saint-Lô|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
}}&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Paulo Oliveira|&lt;br /&gt;
desc=Installation, configuration et personnalisation de dolibarr. Intégration de Dolibarr avec d&#039;autres systèmes. Développement de modules et améliorations de l&#039;interface utilisateur. Je suis le développeur des modules customizeforms, customizeinterface, categorizeall et pixbrasil chez dolistore|&lt;br /&gt;
web=https://empresalivre.com/demo2/|&lt;br /&gt;
zip=90460-160|&lt;br /&gt;
town=Porto Alegre, Rio Grande do Sul|&lt;br /&gt;
email=paulorcdo@gmail.com|&lt;br /&gt;
country=Brazil|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Setup_Other&amp;diff=53008</id>
		<title>Setup Other</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Setup_Other&amp;diff=53008"/>
		<updated>2022-02-25T16:47:01Z</updated>

		<summary type="html">&lt;p&gt;Iouston: /* Invoice Module */ add INVOICE_USE_RETAINED_WARRANTY&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- BEGIN origin interlang links --&amp;gt;&lt;br /&gt;
&amp;lt;!-- You can edit this section but do NOT remove these comments&lt;br /&gt;
     Links below will be automatically replicated on translated pages by PolyglotBot --&amp;gt;&lt;br /&gt;
[[fr:Paramétrage_Divers]]&lt;br /&gt;
[[es:Configuración_Varios]]&lt;br /&gt;
[[de:Erweiterte_Einstellungen]]&lt;br /&gt;
[[zh:其他设置]]&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Admin]]&lt;br /&gt;
{{TemplateDocUser}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Help About Screen&#039;&#039;&#039;: Other setup&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Menu Path&#039;&#039;&#039;: Home ► Setup ► Other&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Some options are not visible in the interface (often because they are deprecated or are beta features). In most cases you do not need these functions and their use may make the application unstable.&lt;br /&gt;
&lt;br /&gt;
 {{warning|32px}} This page contains the list of some advanced development parameters. In most cases, it is parameters for internal usage, development, external modules, features in development not stable or that may lead to security risk. For standard usage of Dolibarr, such parameters &#039;&#039;&#039;SHOULD NOT&#039;&#039;&#039; be used. All experimental options are NOT supported. They may be removed in a future, modified at any version and break stability of your application.&lt;br /&gt;
&lt;br /&gt;
To enable/override a parameter you have to define the constant name and set it to 1 (unless otherwise stated) in &amp;lt;code&amp;gt;Home ► Setup ► Other Setup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The options here may not be documented since they are not stable and unsupported (remember they are experimental or development options). The basic format of how the list is written is broken down in the example below:&lt;br /&gt;
&lt;br /&gt;
HIDDEN_CONFIG ► &#039;&#039;Description of config and goal&#039;&#039; ► &#039;&#039;(specific version information) or values&#039;&#039;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
=Global Options=&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;ADD_UNSPLASH_LOGIN_BACKGROUND&#039;&#039;&#039; ► The background image will be refreshed on every login page refresh. Background image is pulled from the popular open source image website Unsplash. If an already saved static background image exists, then this code will override it (but not delete the saved image). Warning: Using this may allow this external website to steel your login credentials ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_APPLICATION_TITLE&#039;&#039;&#039; ► This will change the title of software (that appears on the login page by default). Warning: changing this may make Dolibarr version detection fail by smartphone applications like [[Application Android - DoliDroid]] breaking some features when using Dolibarr from this application.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_AUTOFILL_DATE&#039;&#039;&#039; ► If this constant is defined (to something other than &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;), the date of invoice, proposal, order or payment are auto-filled with the current date. It is highly recommended to NOT ENABLE this feature. This can create a lot of input errors with data not validated by users. This leads to incorrect values saved in the database causing confusion when you have to do your accountancy reports!&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_AUTO_TIMESTAMP_IN_PUBLIC_NOTES&#039;&#039;&#039; ► Add a timestamp and user automatically when editing the &#039;&#039;public&#039;&#039; note.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_AUTO_TIMESTAMP_IN_PRIVATE_NOTES&#039;&#039;&#039; ► Add a timestamp and user automatically when editing the &#039;&#039;private&#039;&#039; note.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_COUNTRIES_IN_EEC&#039;&#039;&#039; ► Country list in European Area (For VAT purpose) ► (v10.0-v13.0). From v14, do not use this anymore (remove the constant if you set it and instead set if the country is in Europe or not from the dictionary of countries).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DEFAULT_PAYMENT_TERM_ID&#039;&#039;&#039; ► With ID of a payment term, will use this as default payment term each time you create a new proposal, order, invoice (customer and supplier)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DEFAULT_PAYMENT_TYPE_ID&#039;&#039;&#039; ► With ID of a payment type, will use this as default payment type each time you create a new proposal, order, invoice (customer and supplier) ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DEFAULT_LANGUAGE_FILTER&#039;&#039;&#039; ► Useful if you do not want to show &amp;lt;code&amp;gt;en_US&amp;lt;/code&amp;gt; language option in combo boxes (other languages can easily be removed in &amp;lt;code&amp;gt;langs&amp;lt;/code&amp;gt; directory but not &amp;lt;code&amp;gt;en_US&amp;lt;/code&amp;gt;) ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LANGUAGES_ALLOWED&#039;&#039;&#039; ► Is a list of languages without spaces, example : &amp;lt;code&amp;gt;fr_FR,en_US,de_DE,it_IT&amp;lt;/code&amp;gt; If defined, only those languages will appear in combos. ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_NOTES_TAB&#039;&#039;&#039; ► Show or hide notes tab in the card page&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_CONTACTS_TAB&#039;&#039;&#039; ► Show or hide contacts tab in the card page&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_FULL_SCANLIST&#039;&#039;&#039; ► Disables the complete scan of tables to allow the pagination to show total number of pages. May be useful to activate on systems with a very high quantity of data (tables with more than 2 000 000 records).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_JQUERY_JNOTIFY&#039;&#039;&#039; ► Disable usage of &amp;lt;code&amp;gt;JNotify&amp;lt;/code&amp;gt; to show confirm or error messages&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_AJAX_COMBOX&#039;&#039;&#039; ► If you have a large number of third parties or products, you can disable the autocomplete feature on the third parties list by setting this constant to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; ► (v3.6.0+)&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_MULTIPLE_FILEUPLOAD&#039;&#039;&#039; ► Disable users to upload multiple files at once.&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_TRUNC&#039;&#039;&#039; ► Disable all truncings in select list. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLEDRAFTSTATUS&#039;&#039;&#039; ► Disable the status &amp;quot;Draft&amp;quot; for some objects (project, donation, ...) so the object is directly created with status &amp;quot;Validated&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_USE_OBJECT_THIRDPARTY_NAME&#039;&#039;&#039; ► Add name of thirdparty at begin of generated document.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_USE_TIMING&#039;&#039;&#039; ► Add a timestamp at end of generated document. Value must be format of timestamp. For example: &amp;lt;code&amp;gt;%Y%m%d%H%M&amp;lt;/code&amp;gt; (only for ODT files)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_UPLOAD_NOT_RENAME_BY_DEFAULT&#039;&#039;&#039; ► Disable the auto renaming on upload file ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOL_SCRIPTS_ROOT&#039;&#039;&#039; ► Define directory who contains &#039;scripts&#039; directory (e.g. &amp;lt;code&amp;gt;/var/www/dolibarr&amp;lt;/code&amp;gt;). Value of this variable may be requested by some external script or tools.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ENABLE_LOG_TO_HTML&#039;&#039;&#039; ► If this constant is defined, it is possible to have logs inside pages by adding the parameter &amp;lt;code&amp;gt;&amp;amp;logtohtml=1&amp;lt;/code&amp;gt; into URL.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ENABLE_IMPORT_LINKED_OBJECT_LINES&#039;&#039;&#039; ► Allow to import lines into current document from &amp;quot;linked&amp;quot; compatible documents ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FIRST_TO_UPPER&#039;&#039;&#039; ► Dolibarr add uppercase to Third Parties, contacts or members names if not done. Warning: with some languages (whose words with uppercase are not same words, or pagecode does not always have an uppercase, like cyrillic languages), this feature may alter your data.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ALL_TO_UPPER&#039;&#039;&#039; ► Dolibarr puts uppercase for Third Parties, contacts or members names if not done. Warning, with some languages (whose words with uppercase are not same words, or pagecode does not always have an uppercase, like cyrillic languages), this feature may alter your data. ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ALL_TOWN_TO_UPPER&#039;&#039;&#039; ► Dolibarr puts uppercase for town names if not done. ► (v13.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FILESYSTEM_ENCODING&#039;&#039;&#039; ► With some PHP versions, PHP is not able to detect the page code for filesystem of the server OS. To solve this, Dolibarr assumes your OS filesystem is &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; if on Linux or OSX system, and &amp;lt;code&amp;gt;ISO-8859-1&amp;lt;/code&amp;gt; if on Windows. If not, for example on a Windows server with a NTFS &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; pagecode, you can set the variable &amp;lt;code&amp;gt;MAIN_FILESYSTEM_ENCODING&amp;lt;/code&amp;gt; to &amp;quot;&amp;lt;code&amp;gt;utf-8&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FORCELANGDIR&#039;&#039;&#039; ► Relative path of the directory holding your custom &amp;lt;code&amp;gt;langs&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HTML_TITLE&#039;&#039;&#039; ► Can be used to control how the html page title is formatted. If value contains key &#039;&amp;lt;code&amp;gt;noapp&amp;lt;/code&amp;gt;&#039;, application name will not be output. If value contains &#039;&amp;lt;code&amp;gt;thirdpartynameonly&amp;lt;/code&amp;gt;&#039;, on tab for thirdparties, only name of thirdparties are output. Value can be list of tags: &#039;&amp;lt;code&amp;gt;noapp;thirdpartynameonly&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HELPCENTER_LINKTOUSE&#039;&#039;&#039; ► Define the URL link to use as the target page for link &amp;quot;I need help&amp;quot; onto logon page&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LANDING_PAGE&#039;&#039;&#039; ► Can choose the first page to show after login (the landing page). This option works as a global option (&amp;lt;code&amp;gt;llx_const&amp;lt;/code&amp;gt;) and per user option (&amp;lt;code&amp;gt;llx_user_param&amp;lt;/code&amp;gt;). ► (v3.9+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_LOGOUT_GOTO_URL&#039;&#039;&#039; ► URL to which the user will be redirected after LOGOUT&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAXTABS_IN_CARD&#039;&#039;&#039; ► Maximum number of tabs visible. Others are grouped into a combo list.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MAXLIST_OVERLOAD&#039;&#039;&#039; ► Maximum number of line in space&#039;s domain.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING&#039;&#039;&#039; ► A warning saying setup of modules is not complete is shown if the number of enabled modules is lower or equal than this value (&amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; if not defined)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NO_CONCAT_DESCRIPTION&#039;&#039;&#039; ► Allow to use only input custom description in lines (propale, order, invoice) ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ONLY_LOGIN_ALLOWED&#039;&#039;&#039; ► Only the specified login is allowed to log in Dolibarr (maintenance mode).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_OPTIMIZE_SPEED&#039;&#039;&#039; ► Use some speed enhancements. See page [[FAQ Increase Performance]] for more information.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PROPAGATE_CONTACTS_FROM_ORIGIN&#039;&#039;&#039; ► When creating an order, contract, invoice from another object, specific contacts of objects are set as specific contact of the new object when possible. ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PUBLIC_NOTE_IN_ADDRESS&#039;&#039;&#039; ► Show public note in address block ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_REMOVE_INSTALL_WARNING&#039;&#039;&#039; ► Remove all security warnings that appear to administrator users if URL &amp;lt;code&amp;gt;/install&amp;lt;/code&amp;gt; is public. You should solve the problem if warning occurs, instead of removing the warning! For this, create a file called &amp;lt;code&amp;gt;install.lock&amp;lt;/code&amp;gt; into Dolibarr root directory. This will stop the warning but also make the page &amp;lt;code&amp;gt;/install&amp;lt;/code&amp;gt; not possible to use, to protect your installation.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_REPEATCONTACTONEACHTAB&#039;&#039;&#039; ► If added and set to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, this adds contacts on all tabs, not only main tab.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_REPLACE_TRANS_xx_XX&#039;&#039;&#039; ► Where &amp;lt;code&amp;gt;xx_XX&amp;lt;/code&amp;gt; is language code. If value is &amp;lt;code&amp;gt;string1:newstring1;string2:newstring2&amp;lt;/code&amp;gt; then replace &amp;lt;code&amp;gt;string1&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;newstring1&amp;lt;/code&amp;gt; in all translation done for language &amp;lt;code&amp;gt;xx_XX&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND&#039;&#039;&#039; ► Change way of rounding total TTC lines, rounding first of after.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SERVER_TZ&#039;&#039;&#039; ► If you can&#039;t set the timezone of your PHP installation, set this constant. Better is to set it to UTC. In future, this constant will be forced to &#039;&amp;lt;code&amp;gt;UTC&amp;lt;/code&amp;gt;&#039; so PHP server timezone will not have effect anymore. Examples: &amp;lt;code&amp;gt;Europe/Paris&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;auto&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SEARCH_FORM_ON_HOME_AREAS&#039;&#039;&#039; ► Show the search form on home page areas for core modules (Removed after v5 due to global search combo) ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE&#039;&#039;&#039; ► If only one result is found, then setting this value to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; will take you direct to the item (default method).  Setting the value to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; will show the result in the list as a single result ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SERVICES_ARE_ECOMMERCE_200238EC&#039;&#039;&#039; ► If seller and buyer are in Europe and buyer is not a company, use the VAT of buying country.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_TUNING_INFO&#039;&#039;&#039; ► Add tuning information into javascript console. Better when xdebug is enabled.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_TECHNICAL_ID&#039;&#039;&#039; ► Show also technical IDs on elements cards or some lists (not supported everywhere).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOWDATABASENAMEINHELPPAGESLINK&#039;&#039;&#039; ► Show database name in upper help menu ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_ALTERNATE_TRANSLATION_FOR&#039;&#039;&#039; ► List of fields per object that need an alternate translation. Example: &amp;lt;code&amp;gt;MAIN_USE_ALTERNATE_TRANSLATION_FOR=societe:name,town;contact:firstname,lastname&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_HOURMIN_IN_DATE_RANGE&#039;&#039;&#039; ► On all entities lines (invoice, order, contract...), it is possible to add hour and minutes with date on fields &amp;quot;date start&amp;quot; and &amp;quot;date end&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_JQUERY_JEDITABLE&#039;&#039;&#039; ► Allow to update from screen, directly into database, some properties of elements (invoices, proposals, ...) using Ajax. This make response time faster, but avoid using this feature, because it bypasses some business actions (updates on other data that should be done consistently) and ignores business controls on data you saved. Consequently this feature breaks consistency of data and possibly the stability of the software.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_JQUERY_MULTISELECT&#039;&#039;&#039; ► Allow to use Ajax when a choice that require multiselect is used (for the moment only external modules uses select box with multiselect values). Set the value to the jQuery plugin name to use (multiselect, multiple-select, select2…). Setting it to any other value will result in unwanted side-effects and/or bugs.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_OLD_SEARCH_FORM&#039;&#039;&#039; ► Display the old search form in left menu.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VAT_DEFAULT_IF_AUTODETECT_FAILS&#039;&#039;&#039; ► Allow to force the VAT rate to a given value (instead of higher VAT rate of country) if the VAT rate of product was not defined.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_VAT_COMPANIES_IN_EEC_WITH_INVALID_VAT_ID_ARE_INDIVIDUAL&#039;&#039;&#039; ► If the buyer is a company that is in Europe but has no valid intracommunautary VAT ID, it is processed like if it is an individual, not a company. TODO: Must be implemented into accountancy module too instead of being set to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; systematically into accountancy module.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_VAT_OF_PRODUCT_FOR_INDIVIDUAL_CUSTOMER_OUT_OF_EEC&#039;&#039;&#039; ► For to use the default VAT of product for individual customers that are out E.E.C. (European Economic Community) ► (v7.0+). &#039;&#039;There is no reason to use this.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VIEW_LINE_NUMBER&#039;&#039;&#039; ► Shows a line number for each line of products/services at documents like proposal / order / invoice. Only on screen, not on PDF.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VIEW_LINE_NUMBER_IN_LIST&#039;&#039;&#039; ► Shows a line number in lists ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VOLUME_DEFAULT_ROUND&#039;&#039;&#039; ► Accuracy of volume (number of decimals)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_VOLUME_DEFAULT_UNIT&#039;&#039;&#039; ► Default unit for weight (&amp;lt;code&amp;gt;0=kg&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-3=g&amp;lt;/code&amp;gt;, ...)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_WEIGHT_DEFAULT_ROUND&#039;&#039;&#039; ► Accuracy of weight (number of decimals)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_WEIGHT_DEFAULT_UNIT&#039;&#039;&#039; ► Default unit for weight (&amp;lt;code&amp;gt;0=kg&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-3=g&amp;lt;/code&amp;gt;, ...)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;USER_HIDE_INACTIVE_IN_COMBOBOX&#039;&#039;&#039; ► Disable display inactive users in combobox.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DISABLE_PDF_THUMBS&#039;&#039;&#039; ► Disable thumbs PDF in case of imagick bug&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_KEEP_REF_CUSTOMER_ON_CLONING&#039;&#039;&#039; ► Keep the Customer Reference on cloned object (Propal/Invoice)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DONT_KEEP_NOTE_ON_CLONING&#039;&#039;&#039; ► Remove the object notes during cloning ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_SORT_FIELD&#039;&#039;&#039; ► Set the default sorting field on document page (name by default) ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_DOC_SORT_ORDER&#039;&#039;&#039; ► Set the default sorting order (ASC or DESC) on document page (ASC by default) ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_ZIPTOWN_DICTIONNARY&#039;&#039;&#039; ► Use dictionary ZIP for create card.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_TOP_MENU_SEARCH_DROPDOWN&#039;&#039;&#039; ► Show search in top menu with theme eldy ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PHONE_SEPAR&#039;&#039;&#039; ► Separ phone number other space ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;GRAPH_USE_FISCAL_YEAR&#039;&#039;&#039; ► Widgets uses fiscal year&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SHOW_SOCINFO_ON_PRINT&#039;&#039;&#039; ► Permit to add user company information on each printed document (when click on Dolibarr print button) ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_FEATURES_LEVEL&#039;&#039;&#039; ► Level of features to show: &amp;lt;code&amp;gt;-1=stable+deprecated&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0=stable only (default)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1=stable+experimental&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2=stable+experimental+development&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_SHOW_TECHNICAL_ID&#039;&#039;&#039; ► Show technical id for object.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_HTTP_CONTENT_SECURITY_POLICY&#039;&#039;&#039; ► Allows you to fill in the content security rules ► (v6.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;SOCIETE_ON_SEARCH_AND_LIST_GO_ON_CUSTOMER_OR_SUPPLIER_CARD&#039;&#039;&#039; ► Allow to change the link of the third party to customer/supplier card instead of contact card on List.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_MODULE_SETUP_ON_LIST_BY_DEFAULT&#039;&#039;&#039; ► If set to &amp;quot;common&amp;quot; the setup module becomes list by defaut&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_PAGESIZE_CHOICES&#039;&#039;&#039;  ► Configure select field to choose number of lines displayed on listing (&amp;lt;code&amp;gt;10:10,15:15,20:20,30:30,40:40,50:50,100:100,250:250,500:500,1000:1000,5000:5000&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_TOP_MENU_QUICKADD_DROPDOWN&#039;&#039;&#039; ► Add a dropdown menu with shortcuts to create new objects ► (v13.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_EMAILCOLLECTOR_MAIL_WITHOUT_HEADER&#039;&#039;&#039; ► Remove the header stored by email collector ► (v13.0)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_USE_VAT_OF_PRODUCT_FOR_COMPANIES_IN_EEC_WITH_INVALID_VAT_ID&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_OPTIMIZEFORTEXTBROWSER&#039;&#039;&#039; ► Optimise interface for a text only browser. This variable is set to 1 automatically if your browser is lynx or links&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_NB_OF_YEAR_IN_WIDGET_GRAPH&#039;&#039;&#039; ► Set the number of years visible on some graph of some widgets (2 is default value)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;MAIN_CREATEFROM_KEEP_LINE_ORIGIN_INFORMATION&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;API_DISABLE_LOGIN_API ►&#039;&#039;&#039; (v14.0)&lt;br /&gt;
&lt;br /&gt;
=Security Options=&lt;br /&gt;
&lt;br /&gt;
*MAIN_SECURITY_ANTI_SSRF_SERVER_IP ► Can set a complete list of IPs of server.&lt;br /&gt;
&lt;br /&gt;
*MAIN_SECURITY_CSRF_WITH_TOKEN ► Activate a second anti-CSRF protection on POST (so a POST from another web site can&#039;t be done). Note there is already a default protection using test on referrer. This second protection uses TOKEN on forms and is more powerful. ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_MODULES_FOR_EXTERNAL ► Limit available modules for external users. By default value is &#039;&amp;lt;code&amp;gt;facture,commande,contact,propal,projet,contrat,societe,ficheinter,expedition,agenda&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
*MAIN_ALLOW_SVG_FILES_AS_IMAGES ► Allow to use SVG file as image files. Warning: This may introduce security vulnerability (javascript can be embedded into SVG file).&lt;br /&gt;
&lt;br /&gt;
*MAIN_RESTRICTHTML_ONLY_VALID_HTML ► Refused parameter if value is not a valid HTML content.&lt;br /&gt;
&lt;br /&gt;
*MAIN_RESTRICTHTML_REMOVE_ALSO_BAD_ATTRIBUTES ► Sanitize also non standard attributes on HTML content.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Accountancy Module=&lt;br /&gt;
&lt;br /&gt;
*ACCOUNTANCY_COMBO_FOR_AUX ► Add graphic option for ACCOUNTANCY_COMBO_FOR_AUX. Having this option on may slow down and even freeze the accounting features if you have a very large number of thirdparties ► (v10.0)&lt;br /&gt;
*ACCOUNTING_DEFAULT_NOT_NOTIFIED_VALIDATION_DATE ► Set to 1 to avoid validating the lines with the accountancy export. ► (v14.0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Agenda Module=&lt;br /&gt;
&lt;br /&gt;
*AGENDA_ALL_CALENDARS ► Change the default view of calendar pages to see all the Agenda&#039;s (instead or yours only be default)&lt;br /&gt;
&lt;br /&gt;
*AGENDA_AUTOSET_END_DATE_WITH_DELTA_HOURS ► To automatically set end date of event to start date + delta on event creation page.&lt;br /&gt;
&lt;br /&gt;
*AGENDA_DISABLE_LOCATION ► Disable location field in action card  ► (&amp;gt;=v5.0)&lt;br /&gt;
&lt;br /&gt;
*AGENDA_MAX_EVENTS_DAY_VIEW ► Define the maximum number of visible entries for each day in agenda. Default value is 3. Value 0 means no limit.&lt;br /&gt;
&lt;br /&gt;
*AGENDA_USE_EVENT_TYPE ► Add a mandatory field &amp;quot;Type&amp;quot; when creating an event (&#039;&#039;&#039;&#039;&#039;deprecated&#039;&#039;&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
*MAIN_ADD_EVENT_ON_ELEMENT_CARD ► Allow to create an event from a document (proposal, order, invoice)&lt;br /&gt;
&lt;br /&gt;
*AGENDA_SUPPORT_PRIORITY_IN_EVENTS ► Allow to have priorities in events ► (&amp;gt;=v13.0)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Bank Module=&lt;br /&gt;
&lt;br /&gt;
*BANK_CAN_RECONCILIATE_CASHACCOUNT ► Can reconciliate cash accounts ► (v3.8)&lt;br /&gt;
&lt;br /&gt;
*BANK_DISABLE_CHECK_DEPOSIT ► Disable check deposit feature&lt;br /&gt;
&lt;br /&gt;
*BANK_ASK_PAYMENT_BANK_DURING_ORDER ► Ask bank account during creation of an order&lt;br /&gt;
&lt;br /&gt;
*BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL ► Ask bank account during creation of a proposal&lt;br /&gt;
&lt;br /&gt;
*BANK_USE_OLD_VARIOUS_PAYMENT ► To allow to enter miscellaneous payments (not covered by other modules) using old method. &#039;&#039;&#039;&#039;&#039;Deprecated&#039;&#039;&#039;&#039;&#039;. Entering various payment is preferred ► (&amp;lt;=v12.0).&lt;br /&gt;
*MAIN_IBAN_IS_NEVER_MANDATORY ► IBAN and BIC informations not mandatory. (V15)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=BOM and MO Module=&lt;br /&gt;
&lt;br /&gt;
*ALLOW_USE_KITS_INTO_BOM_AND_MO&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Inalterable Log Module=&lt;br /&gt;
&lt;br /&gt;
*BLOCKEDLOG_ADD_ACTIONS_SUPPORTED ► Can complete list of triggered action that are logged&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Contracts=&lt;br /&gt;
&lt;br /&gt;
*CONTRACT_SUPPORT_PRODUCTS ► Products are also suggested into module contract.&lt;br /&gt;
*&lt;br /&gt;
*CONTRACT_ALLOW_EXTERNAL_DOWNLOAD&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Cron module=&lt;br /&gt;
&lt;br /&gt;
*CRON_DISABLE_KEY_CHANGE ► When you provide an instance to a customer, you probably also add an entry in the cron of this user so Dolibarr batch and scheduler can work correctly. For security purpose, it may have a security key that is inside the command line into the cron entry and this entry must match the value defined into Dolibarr setup (setup of module &#039;Scheduled Jobs&#039;). Because, a customer of a Saas platform will probably have no access to edit the cron file, it is also import that he has no way to edit the key into the Dolibarr setup, so the key in the cron command line will always match the key in Dolibarr setup, and the Dolibarr batches will executed without security errors. To be sure, the customer does not change the value, you can set this constant to 1 into the table [[Table_llx_const]].&lt;br /&gt;
&lt;br /&gt;
*CRON_DISABLE_TUTORIAL_CRON ► Disable the tutorial about how to install the cron script (on a SaaS hosting, this should be done by the web hosting provider)&lt;br /&gt;
&lt;br /&gt;
*CRON_WARNING_DELAY_HOURS ► Set this value to the frequency set for the cron script (so a warning will be shown to user to warn it about max frequency of its scheduled jobs)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Direct Debit Orders=&lt;br /&gt;
&lt;br /&gt;
*WITHDRAWAL_ALLOW_ANY_INVOICE_STATUS ► If this option is set, all invoices status (even already paid) may appear on the list of invoices qualified for a direct debit payment. This is the list of invoices with a payment request done, and not linked to a direct debit payment. By default, only &amp;quot;unpayed&amp;quot; invoices are used to avoid to pay twice the same invoice.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Donation Module=&lt;br /&gt;
&lt;br /&gt;
*DONATION_USE_THIRDPARTIES ► If this option is set, a thirdparty field appear on donation forms.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
=Email and SMS=&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAILFORM_DISABLE_ENTERKEY ► Activate javascript code to disable the enter key in the MAIL form. ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*MAIL_PREFIX_FOR_EMAIL_ID ► Prefix for the mails ID. Default value is &amp;lt;code&amp;gt;$_SERVER[&amp;quot;SERVER_NAME&amp;quot;]&amp;lt;/code&amp;gt; ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_DEBUG ► Write content with header of last mail into file &amp;lt;code&amp;gt;dolibarr_mail.log&amp;lt;/code&amp;gt; into directory &amp;lt;code&amp;gt;dolibarr_main_data_root&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_SMS_DEBUG ► Write content of SMS sent into file &amp;lt;code&amp;gt;dolibarr_sms.log&amp;lt;/code&amp;gt; into directory &amp;lt;code&amp;gt;dolibarr_main_data_root&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_ALLOW_SENDMAIL_F ► On Linux or BSD system, PHP email function use the command sendmail local to server. In some cases, the sender email must be provided on command line of sendmail with option &amp;lt;code&amp;gt;-f&amp;lt;/code&amp;gt;. This option is here to ask Dolibarr to call the function mail of PHP by adding value for the option &amp;lt;code&amp;gt;-f&amp;lt;/code&amp;gt;. Note that in most cases, even with sendmail, sender email is correctly managed as it is added in the email technical header. This option is here only for rare setup of sendmail that ask the -f option to be mandatory or for sendmail setup that does not use by default the Return-path of header email to define the sender (with this option, the return-path will be provided also on command line and not lost by sendmail).&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_SENDMAIL_FORCE_BA ► On Linux or BSD system, PHP email function use the command sendmail local to server. In some case, we want to recipient to be provided to sendmail into the email content instead of its command line parameter. For this we must add the -ba parameter to sendmail. This option asks PHP to provide this parameter when sending a mail. Note that another solution is to edit the mail.force_extra_parameters=-ba into &amp;lt;code&amp;gt;php.ini&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_NO_FULL_EMAIL ► Recipient email and sender are cleaned to be on form &amp;quot;&amp;lt;email&amp;gt;&amp;quot; instead of &amp;quot;Name &amp;lt;email&amp;gt;&amp;quot;. This might solve problem of compatibility with very old mailers.&lt;br /&gt;
&lt;br /&gt;
*MAIN_FIX_FOR_BUGGED_MTA ► Some MTA agent are bugged and add some CR chars each time they saw a LF. Because Dolibarr emails are forged to be already cleaned, if MTA agent do that, you will send an email with two CR chars. This may result in having recipient not able to read your email. To fix this, add this constant to 1. Dolibarr will then create an email that is not RFC compliant but because the MTA agent is bugged, the email will be modified and become correct during sending, solving the problem of bad email received. Add this constant if your recipient experience problems when opening email for example users using webmail of &amp;lt;code&amp;gt;orange.fr&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;hotmail.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_DO_NOT_USE_SIGN ► Do not add user signature at end of suggested pre-defined email&lt;br /&gt;
&lt;br /&gt;
*MAIL_FORCE_DELIVERY_RECEIPT_INVOICE ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Invoice&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*MAIL_FORCE_DELIVERY_RECEIPT_ORDER ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Order&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*MAIL_FORCE_DELIVERY_RECEIPT_PROPAL ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Proposal&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*MAIN_EMAIL_USECCC ► 1 = Show field BCC into email forms, If email = Show BCC prefilled with email.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_AUTOCOPY_PROPOSAL_TO, MAIN_MAIL_AUTOCOPY_ORDER_TO, MAIN_MAIL_AUTOCOPY_INVOICE_TO ► Email to use as a BCC recipient when sending email for proposal, order or invoice. You can make this value visible by setting MAIN_EMAIL_USECCC (to 1 or to another email, see previous point)&lt;br /&gt;
&lt;br /&gt;
*MAIN_EMAIL_ADD_TRACK_ID ► When value is 1 (this is also default value if option is not set): The record &amp;quot;Message-id&amp;quot; added into smtp header includes a tracking id to define where the email was sent from. When value is 2: you send an email from third party card, the sender email is completed with the email source tracking string  &amp;quot;+thiXXX&amp;quot; on email (your email will be sent with the &amp;quot;From&amp;quot; that is myname+thi123@mycompany.com). So when user receiving email will make &amp;quot;Answer&amp;quot;, email will be sent to myname@mycompany.com but with the tracking id included (into header or into target email), allowing you to know to which third party or object, the email exchange is related to.&lt;br /&gt;
&lt;br /&gt;
*MAIL_MAX_NB_OF_RECIPIENTS_IN_SAME_EMAIL ► Restrict sending of 1 email message to &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; recipients for same email message (x for To: + CC: + BCC:). If not defined, value is &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;. Required to fight against spamming that include 1000 recipients in 1 message. Note that MAIL_MAX_NB_OF_RECIPIENTS_TO_IN_SAME_EMAIL, MAIL_MAX_NB_OF_RECIPIENTS_CC_IN_SAME_EMAIL and MAIL_MAX_NB_OF_RECIPIENTS_BCC_IN_SAME_EMAIL are also available.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_FORCE_CONTENT_TYPE_TO_HTML ► Force to send all email (event with text only content) as HTML formatted email.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_USE_MULTI_PART ► Forge email content using an alternate text part ► (for 5.0.2+). By default with 6.0+&lt;br /&gt;
*MAIN_INFO_SOCIETE_MAIL_ALIASES ► add address aliases for the from field on mail. Set his value with &amp;quot;Firstname Name &amp;lt;firstname.lastname@mydomain.tld, Otherfirstname OtherlastName &amp;lt;othermail@mydomain.tld&amp;gt;,...&amp;quot; ► (v5.0.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_ADD_INLINE_IMAGES_IF_IN_MEDIAS ► If images were stored into the medias directory from CKEditor, then images into emails are replaced with &amp;quot;inline content&amp;quot;. This may increase seriously risk of being detected as SPAM.&lt;br /&gt;
&lt;br /&gt;
*MAIN_COPY_FILE_IN_EVENT_AUTO ► Add attachement document on event auto generated by sending email from dolibarr. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_EXTERNAL_SMTP_CLIENT_IP_ADDRESS ► (A better name of this option should be MAIN_EXTERNAL_MAIL_CLIENT_IP_ADDRESS). Set here the list of IPs where your Dolibarr instances are hosted. So when your customer go into the setup area of email:&lt;br /&gt;
**If he chose mail method, a message will explain him how to setup its SPF record for its email domain (showing the list of IP). This is to avoid to have its emails, sent from its Dolibarr instance, fails due to strict antispam rule of some emailing servers.&lt;br /&gt;
**If he chose smtp method, a message will explain him the list of IP he can use if there is restriction on IP by the SMTP agent. If you also need to add a message to help SPF setup, see option MAIN_EXTERNAL_SMTP_SPF_STRING_TO_ADD.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_ENABLED_USER_DEST_SELECT ► Show also internal users into list of recipients of email in email sending form ► (v8.0+)&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Emailing Module=&lt;br /&gt;
&lt;br /&gt;
*MAILING_PREFIX_FOR_EMAIL_ID ► Set the value that will be used to compose the &amp;quot;Email ID&amp;quot; into email headers. If you set this value to &#039;&amp;lt;code&amp;gt;SERVER_NAME&amp;lt;/code&amp;gt;&#039;, the virtual host of web server will be used. By default, this is not defined, so a hash key, unique to each instance, is used.&lt;br /&gt;
&lt;br /&gt;
*MAILING_NO_USING_PHPMAIL ► If set, the module emailing can&#039;t be used with mail setup of &amp;quot;phpmail&amp;quot;. Using a thirdparty SMTP server is required. You can complete warning message by adding an email to contact for setup help with constant &amp;lt;code&amp;gt;MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS ► Contains the email of contact to show into the message visible to a user when he try to use emailing module without SMTP server and if option MAILING_NO_USING_PHPMAIL is set to on.&lt;br /&gt;
&lt;br /&gt;
*MAILING_LIMIT_WARNING_PHPMAIL ► Show a warning message (var contains the &#039;&#039;&#039;message to show&#039;&#039;&#039;, or &#039;&#039;&#039;translation key&#039;&#039;&#039;) on emailing send form if setup is on &amp;quot;phpmail&amp;quot;. Note: The application always try to translation the message considering the message is a translation key, before showing the translation or message if translation was not found.&lt;br /&gt;
&lt;br /&gt;
*MAILING_LIMIT_WARNING_NOPHPMAIL ► Show a warning message (var contains the &#039;&#039;&#039;message to show&#039;&#039;&#039;, or &#039;&#039;&#039;translation key&#039;&#039;&#039;) on emailing send form if setup is something else than &amp;quot;phpmail&amp;quot;. Note: The application always try to translation the message considering the message is a translation key, before showing the translation or message if translation was not found.&lt;br /&gt;
*EMAILING_USE_ADVANCED_SELECTOR ► Enable the advanced selector for recipients.&lt;br /&gt;
&lt;br /&gt;
*MAILING_LIMIT_SENDBYWEB ► Restrict number of emails you can send in same sending session with emailing module from GUI. The value &amp;quot;&amp;lt;code&amp;gt;dolibarr_mailing_limit_sendbyweb&amp;lt;/code&amp;gt;&amp;quot; if defined into config file is used in priority for this limit. A negative value means, sending by web is forbidden.&lt;br /&gt;
&lt;br /&gt;
*MAILING_LIMIT_SENDBYCLI ► Restrict number of emails you can send in same sending session with emailing module from CLI script. The value &amp;quot;&amp;lt;code&amp;gt;dolibarr_mailing_limit_sendbycli&amp;lt;/code&amp;gt;&amp;quot; if defined into config file is used in priority for this limit.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Expense Report=&lt;br /&gt;
&lt;br /&gt;
*EXPENSEREPORT_ALLOW_OVERLAPPING_PERIODS ► Can enter several expense reports on same or overlapping date periods. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*EXPENSEREPORT_OVERRIDE_VAT ► Setting this constant to 1 will allow expense reports to show VAT even if the global VAT setting is off ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*EXPENSEREPORT_USE_OLD_NUMBERING_RULE ► The module Expense Report use numbering rules that you can setup (like other modules do). If you need to keep the hard-coded numbering rule of expenses report used in v6.0 set this constant to 1 ► (&amp;gt;=v7.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_EXPENSE_IK ► This feature allows you to set index kilometers against a mileage index for different types of vehicles. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_EXPENSE_RULE ► This feature allows you to set a variety of rules per user/group/all so they can only create reports within their limits. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Export Module=&lt;br /&gt;
&lt;br /&gt;
*EXPORT_CSV_SEPARATOR_TO_USE ► String value to use as default separator to delimit fields of exported files (by default Dolibarr uses &amp;quot;&amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;&amp;quot;). Example: EXPORT_CSV_SEPARATOR_TO_USE=&amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*EXPORT_CSV_FORCE_CHARSET ► Choose the charset used in the output file built by the CSV exporter. By default it is ISO-8859-1. Example: EXPORT_CSV_FORCE_CHARSET= &amp;lt;code&amp;gt;utf-8&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*EXPORTTOOL_CATEGORIES ► Can export categories (several lines) into one column with the &amp;quot;product export profile&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*USE_STRICT_CSV_RULES ► Use strict/real CSV format for export. Do not clean/replace CR+LF with &#039;\n&#039; but quote them using the escaping CSV char (&amp;lt;code&amp;gt;&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*EXPORTS_SHARE_MODELS  ► Share export models between users.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Foundation Module=&lt;br /&gt;
&lt;br /&gt;
*MEMBER_URL_REDIRECT_SUBSCRIPTION ► Link called and shown when a member account is autocreated in member module by a guest user.&lt;br /&gt;
&lt;br /&gt;
*MEMBER_EXT_URL_SUBSCRIPTION_INFO ► Link of external page pointed by the &amp;quot;Show here&amp;quot; link added in front of payment cell, into the page to make online subscription.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Interventions Module=&lt;br /&gt;
&lt;br /&gt;
*FICHINTER_CLASSIFY_BILLED► Allow to classify an intervention card as &amp;quot;Billed&amp;quot;. This add also trigger &amp;lt;code&amp;gt;FICHINTER_CLASSIFY_BILLED&amp;lt;/code&amp;gt; into list of possible automatic event into agenda.&lt;br /&gt;
&lt;br /&gt;
*FICHINTER_DISABLE_DETAILS► Disable entry of details line on intervention. Can validate with no line.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Invoice Module=&lt;br /&gt;
&lt;br /&gt;
*MAIN_DEPOSIT_MULTI_TVA ► In deposits invoice, creates one line per VAT rate from the origin document ► (6.0)&lt;br /&gt;
&lt;br /&gt;
*INVOICE_ALLOW_REUSE_OF_CREDIT_WHEN_PARTIALLY_REFUNDED* ► If a credit note was partially refunded (a refund was sent to the customer), with common situation, we wait to have the remain refunded too. With this option, it is possible to convert the remain of invoice into a discount to reuse it into another invoice.&lt;br /&gt;
&lt;br /&gt;
*SUUPLIER_INVOICE_ALLOW_REUSE_OF_CREDIT_WHEN_PARTIALLY_REFUNDED* ► See INVOICE_ALLOW_REUSE_OF_CREDIT_WHEN_PARTIALLY_REFUNDED, but for supplier credit notes.&lt;br /&gt;
&lt;br /&gt;
*INVOICE_CAN_ALWAYS_BE_EDITED ► Allow to edit invoices even if payment was started. Note: If the module &amp;quot;BlockedLog&amp;quot; is active (required in some countries for legal reasons), this will not change content of archived logs tracked by this module. By definition there is no way to change or remove archived records. It will just update data in your application and a new record to track your change into the read-only archive log.&lt;br /&gt;
&lt;br /&gt;
*INVOICE_CAN_ALWAYS_BE_REMOVED ► Allow to always delete invoices (even if invoice is not last one). Note: If the module &amp;quot;BlockedLog&amp;quot; is active (required by some countries for legal reason), this will not change content of archived logs tracked by this module. By definition there is no way to change or remove archived records. It will just update data in your application and a new record to track your change into the read-only archive log.&lt;br /&gt;
&lt;br /&gt;
*INVOICE_CAN_NEVER_BE_REMOVED ► Never allow to delete invoices (except draft invoices).&lt;br /&gt;
&lt;br /&gt;
*INVOICE_POSITIVE_CREDIT_NOTE ► All amounts on PDF credit notes are positive.&lt;br /&gt;
&lt;br /&gt;
*FACTURE_DEPOSITS_ARE_JUST_PAYMENTS ► An old way to create initial payment. This treats deposit invoices as a special case and not as legal deposit invoice. Deposit invoices don&#039;t get counted on turnover. They are then applied as a payment, like a discount, on the final invoice. By default, when you include the deposit into draft of final invoice, the amount of final invoice is reduced. With this option, final amount is not reduced but a payment is registered. WARNING: In a lot of european countries, using this option is not allowed.&lt;br /&gt;
&lt;br /&gt;
*FACTURE_SENDBYEMAIL_FOR_ALL_STATUS ► Can send invoice by email to customer even if invoice has status &amp;quot;draft&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*INVOICE_CREDIT_NOTE_STANDALONE ► Start implementation to allow a credit note even without invoice (dangerous) ► (v3.9)&lt;br /&gt;
&lt;br /&gt;
*INVOICE_USE_SITUATION ► Enable the &amp;quot;situation invoice&amp;quot; feature. Warning, this feature is bugged and may not be compatible with the final version of the features once bug will be solved.&lt;br /&gt;
&lt;br /&gt;
*INVOICE_USE_SITUATION_CREDIT_NOTE ► Enable the &amp;quot;situation credit note&amp;quot; feature (need &amp;lt;code&amp;gt;INVOICE_USE_SITUATION&amp;lt;/code&amp;gt;) ► (v8.0)&lt;br /&gt;
*INVOICE_USE_RETAINED_WARRANTY ► Enable the retained warranty on invoice ► (v14.0)&lt;br /&gt;
&lt;br /&gt;
*INVOICE_DISABLE_DEPOSIT ► Disable deposit invoices&lt;br /&gt;
&lt;br /&gt;
*INVOICE_DISABLE_REPLACEMENT ► Disable replacement invoices&lt;br /&gt;
&lt;br /&gt;
*INVOICE_DISABLE_CREDIT_NOTE ► Disable credit notes&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT ► See PDF option&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_COLUMN ► See PDF options&lt;br /&gt;
&lt;br /&gt;
*WORKFLOW_BILL_ON_SHIPMENT ► Change label of button with suitable label when you need to create invoice on shipments&lt;br /&gt;
&lt;br /&gt;
*INVOICE_ALLOW_EXTERNAL_DOWNLOAD ► When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. Use the tag __DIRECTDOWNLOAD_URL_INVOICE__ in email template to insert it. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*INVOICE_POINTOFTAX_DATE ► Add Point of Tax Date on invoices for country-specific legality reasons ► (v4.0+)&lt;br /&gt;
*FACTURE_ENABLE_NEGATIVE ► Can validate an invoice when amount is negative&lt;br /&gt;
&lt;br /&gt;
*FACTURE_ENABLE_NEGATIVE_LINES ► Allows to add negative lines to an invoice ► (v8.0.2+)&lt;br /&gt;
&lt;br /&gt;
*INVOICE_USE_DEFAULT_DOCUMENT ► Allow user to select a default invoice documents models according to invoice type. On invoice create page, the model is dynamically changed on invoice type selection. ► (v9.0+)&lt;br /&gt;
&lt;br /&gt;
*FACTURE_REUSE_NOTES_ON_CREATE_FROM ► Reuse the Public Note and Private note of the previous object (Proposal,...) when creating the bill.&lt;br /&gt;
*FACTUREFOURN_REUSE_NOTES_ON_CREATE_FROM ► Reuse the Public Note and Private note of the previous object when creating the supplier bill ► (V13.0)&lt;br /&gt;
*MAIN_SHOW_FACNUMBER_IN_DISCOUNT_LIST ► Display the reference of credit notes in discount list when creating the bill.&lt;br /&gt;
*INVOICE_ALLOW_FREE_REF ► Capability to change reference of an invoice. This will be possible as long as the invoice has the status “Draft” and only if your country is not in Europe(V11)&lt;br /&gt;
&lt;br /&gt;
*INVOICE_DISALLOW_REOPEN&lt;br /&gt;
&lt;br /&gt;
*INVOICE_MAX_FUTURE_DELAY ► Numbers of seconds allowed for billing in the future ► (V14.0)&lt;br /&gt;
*INVOICE_AUTO_NEXT_MONTH_ON_LINES ► Increase start date and end date by one month, if an invoice line is a clone of a time based service AND if this services started on the first day of month and ended on the last day of month ► (V13.0.1)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Leave=&lt;br /&gt;
&lt;br /&gt;
*MAIN_NON_WORKING_DAYS_INCLUDE_SATURDAY ► Set this value to 0 if you want to have the saturday as a working day&lt;br /&gt;
*MAIN_NON_WORKING_DAYS_INCLUDE_SUNDAY ► Set this value to 0 if you want to have the sunday as a working day&lt;br /&gt;
&lt;br /&gt;
=Look or Theme=&lt;br /&gt;
&lt;br /&gt;
*MAIN_FAVICON_URL ► favicon url&lt;br /&gt;
&lt;br /&gt;
*MAIN_EASTER_EGG_COMMITSTRIP ► Show a comic image from the CommitStrip website. Images are refreshed daily. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_STATUS_USES_CSS ►  Change status design using new style ► (v10.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_APPLICATION_DISABLED_STATEBOARD ► Hide the stateboard of the main page&lt;br /&gt;
&lt;br /&gt;
*MAIN_APPLICATION_DISABLED_WORKBOARD ► Hide the workboard of the main page&lt;br /&gt;
&lt;br /&gt;
*MAIN_INCLUDE_GLOBAL_STATS_IN_OPENED_DASHBOARD ► This conf will auto remove global stats box item if there are already in the new dashboard of opened elements and keep displayed stats on the opened item box (not only on mouse over) ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_TOP_MENU_SEARCH_DROPDOWN ► Actually only for eldy theme, this conf move search input  to top menu and use new design too ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*THEME_AGRESSIVENESS_RATIO ► This conf can be used to increase/decrease agressiveness of colors. Value 0 is medium, value is between -100 (light grey colors) to +100 (very flashy colors) ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*THEME_SHOW_BORDER_ON_INPUT&lt;br /&gt;
*MAIN_DISABLE_GLOBAL_WORKBOARD ► Hide the workboard of the main page ► (v13.0+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=MultiCurrency=&lt;br /&gt;
&lt;br /&gt;
*MAIN_MULTICURRENCY_ALLOW_SYNCHRONIZATION ► Enable CurrencyLayer API synchronization&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Order Module=&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_PROPAL_REFCLIENT_FOR_ORDER =&amp;gt; Copy customer reference from proposal to order. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*ORDER_REQUIRE_SOURCE =&amp;gt; Make the input field &amp;quot;Source of order&amp;quot; mandatory.&lt;br /&gt;
&lt;br /&gt;
*ORDER_VALID_AFTER_CLOSE_PROPAL =&amp;gt; When an order is created on a proposal close, the order is directly defined with status &amp;quot;Validated&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*ORDER_ALLOW_EXTERNAL_DOWNLOAD =&amp;gt; When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*ORDER_ENABLE_NEGATIVE =&amp;gt; Can validate an order when amount is negative&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_PROPAGATE_EXTRAFIELDS_TO_ORDER =&amp;gt; Copy also extrafields from thirdparty to order (if name match). ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=PDF Options=&lt;br /&gt;
&lt;br /&gt;
*MAIN_ADD_PDF_BACKGROUND ► Define this constant with short name of a PDF file (example &amp;quot;&amp;lt;code&amp;gt;mypdf.pdf&amp;lt;/code&amp;gt;&amp;quot;) that must be saved into directory &amp;quot;&amp;lt;code&amp;gt;documents/mycompany&amp;lt;/code&amp;gt;&amp;quot;. This will add PDF as a background of some of your generated PDF files (proposals,invoices,orders). If you need to concat PDF, see instead [[Module Concat PDF]].&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_FORCE_SAVEAS ► If your browser always asks to save downloaded files on disk (like PDF), try this this option. File may be displayed directly in your browser.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_PDF_AUTOUPDATE ► Disable automatic generation of PDF each time we add/update/delete a product line (we can still build document by clicking on &amp;quot;Generate&amp;quot;). This option may increase interface speed on servers with low CPU.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_PDF_COMPRESSION ► Disable PDF compression.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DOCUMENTS_LOGO_HEIGHT ► Can force height of the logo on PDF.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DOCUMENTS_WITH_PICTURE_WIDTH ► Can change size of picture when hidden option &amp;lt;code&amp;gt;MAIN_GENERATE_PROPOSALS_WITH_PICTURE&amp;lt;/code&amp;gt; is used. By default value is &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS ► Adding the company address at the bottom of the page. Disabled by default&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_PROPOSALS_WITH_PICTURE ► Include the first image of the product into the line of the generated PDF for customer proposals.&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_INVOICES_WITH_PICTURE ► Include the first image of the product into the line of the generated PDF for customer invoices.&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_SUPPLIER_PROPOSAL_WITH_PICTURE ► Include the first image of the product into the line of the generated PDF for supplier proposals ► (v5.0.3+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT ► Disable VAT on generated documents. like for an association. (Works with crabe template)&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_COLUMN ► Hide column with VAT information but only column not total.&lt;br /&gt;
&lt;br /&gt;
*MAIN_INVERT_SENDER_RECIPIENT ► Invert sender and recipient in some PDF. Note: This option is set automatically if country if Germany.&lt;br /&gt;
&lt;br /&gt;
*MAIN_ODT_AS_PDF ► Activate ODT to PDF conversion. Value can be &amp;quot;libreoffice&amp;quot; or &amp;quot;unoconv&amp;quot;. Do not use value &#039;&#039;&#039;&amp;lt;nowiki/&amp;gt;&#039;jodconverter&#039;&amp;lt;nowiki/&amp;gt;&#039;&#039;&#039; any more, as it is declared deprecated and partly not functional, use value &#039;&#039;&#039;&amp;lt;nowiki/&amp;gt;&#039;libreoffice&#039;&#039;&#039;&#039; instead, it requires only &#039;&#039;&#039;soffice&#039;&#039;&#039; (OpenOffice or LibreOffice) installed on server (use &#039;&#039;&#039;apt install soffice libreoffice-common libreoffice-writer&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
If you got this error: javaldx failed! Warning: failed to read path from javaldx with no return to prompt when running soffice --headless -env:UserInstallation=file:&amp;quot;/tmp&amp;quot; --convert-to pdf --outdir xxx ./yyy.odt, check that directory defined into env:UserInstallation parameters exists and is writeable.&lt;br /&gt;
&lt;br /&gt;
You may also have a look at this page if your server is on Windows: [[Générer automatiquement des documents PDF à partir de fichier ODT avec Doliwamp]]&lt;br /&gt;
&lt;br /&gt;
*MAIN_ODT_AS_PDF_DEL_SOURCE ► For ODT generation. If set, then initial behaviour is conserved but ODT file is removed when option to convert it as PDF (see previous) is on. Disabled by default&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_FORCE_FONT ► To ignore font defined into language file and force usage of a particular font. For example &amp;quot;&amp;lt;code&amp;gt;DejaVuSans&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_FORCE_FONT_SIZE ► To force size of font (by default 10). For example &amp;quot;&amp;lt;code&amp;gt;12&amp;lt;/code&amp;gt;&amp;quot; ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_FREETEXT_HEIGHT ► Change height of space reserved to output the free text.&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_TITLE_BACKGROUND_COLOR ► Can define a background color onto title line. Example: &amp;lt;code&amp;gt;220,220,200&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_USE_LARGE_LOGO ► Use the original logo with its higher resolution into the PDF instead of the small thumb. This may lead to very very large PDF !&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_BACKGROUND_ON_PDF ► Define this constant with short name of an image (example &amp;quot;&amp;lt;code&amp;gt;myimage.jpg&amp;lt;/code&amp;gt;&amp;quot;) that must be saved into directory &amp;quot;&amp;lt;code&amp;gt;documents/mycompany/logos&amp;lt;/code&amp;gt;&amp;quot;. This will add this background image into your generated PDF files.&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_COMPANY_NAME_OF_CONTACT ► Use contact name and information rather than company&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_ADDALSOTARGETDETAILS ► If 1, add details of reipient on generated PDFs (email, fax, url and phone). Can be useful in cases where a printed order/invoice etc is given to a delivery driver/courier etc.&lt;br /&gt;
&lt;br /&gt;
*MAIN_TVAINTRA_IN_SOURCE_ADDRESS ► Show VAT N° in source address of PDF to comply with legalities in certain countries. Note that VAT number should be already visible in footer of page ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING ► Add optional esign field in pdf propal ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID1_IN_SOURCE_ADDRESS ► Show Professional ID 1 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID2_IN_SOURCE_ADDRESS ► Show Professional ID 2 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID3_IN_SOURCE_ADDRESS ► Show Professional ID 3 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID4_IN_SOURCE_ADDRESS ► Show Professional ID 4 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID5_IN_SOURCE_ADDRESS ► Show Professional ID 5 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID6_IN_SOURCE_ADDRESS ► Show Professional ID 6 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*PDF_BANK_HIDE_NUMBER_SHOW_ONLY_BICIBAN ► Hide bank number (&amp;quot;code banque/guichet/compte&amp;quot; for France, &amp;quot;sort code/account number&amp;quot; for GB, ...) and keep only BIC/IBAN on PDF.&lt;br /&gt;
&lt;br /&gt;
*PDF_BOLD_PRODUCT_REF_AND_PERIOD ► Add more visibility (bold) on product ref and period of service in desc. ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*PDF_HIDE_PRODUCT_REF_IN_SUPPLIER_LINES ► Modify the use/position of Supplier Ref/Internal Ref with the item Label (name) on PDF documents.&lt;br /&gt;
&lt;br /&gt;
Default (constant not set or Value &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;): Internal ref followed by supplier ref in brackets.&amp;quot;COMPANY-REF-001 (Vendor SKU SUPPLIER-REF-001) - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Value &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;: Supplier ref only eg.&amp;quot;SUPPLIER-REF-001 - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Value &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;: Supplier ref followed by internal ref in brackets. eg.&amp;quot;SUPPLIER-REF-001 (InternalRef COMPANY-REF-001) - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME ► Include alternative/alias name into name on PDF.&lt;br /&gt;
&lt;br /&gt;
*PDF_SECURITY_ENCRYPTION ► Encrypt PDF produced by dolibarr ► (v?) . See additional parameters :PDF_SECURITY_ENCRYPTION_RIGHTS (block &#039;modify&#039; or &#039;copy&#039;) - PDF_SECURITY_ENCRYPTION_USERPASS - PDF_SECURITY_ENCRYPTION_OWNERPASS (random if not specified) - PDF_SECURITY_ENCRYPTION_STRENGTH (0 = RC4 40 bit; 1 = RC4 128 bit; 2 = AES 128 bit; 3 = AES 256 bit) - PDF_SECURITY_ENCRYPTION_PUBKEYS Array of recipients containing public-key certificates (&#039;c&#039;) and permissions (&#039;p&#039;) - For example: array(array(&#039;c&#039; =&amp;gt; &#039;file://../examples/data/cert/tcpdf.crt&#039;, &#039;p&#039; =&amp;gt; array(&#039;print&#039;)))&lt;br /&gt;
&lt;br /&gt;
*PDF_SHOW_PROJECT ► Show project onto PDF (supported on supplier order only for the moment)&lt;br /&gt;
&lt;br /&gt;
*PDF_USE_1A ► PDF files produced by dolibarr respect PDF/A standard ► (v?)&lt;br /&gt;
&lt;br /&gt;
*PDF_USE_ALSO_LANGUAGE_CODE ► The value of this constant must be a language code (&#039;fr_FR&#039;, &#039;en_US&#039;, &#039;sa_SA&#039;, ...). If set, the PDF document will contains both language (default and the one defined by the constant).&lt;br /&gt;
*DOC_SHOW_FIRST_SALES_REP ► Show the sales representant on header (at least on propal azur and rubis template)&lt;br /&gt;
*MAIN_PDF_DASH_BETWEEN_LINES&lt;br /&gt;
*&lt;br /&gt;
*SHOW_SUBPRODUCT_REF_IN_PDF&lt;br /&gt;
*PDF_HIDE_PRODUCT_LABEL_IN_SUPPLIER_LINES ► hide product label in supplier order lines (V15+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Point of Sale (POS)=&lt;br /&gt;
&lt;br /&gt;
*CASHDESK_SHOW_KEYPAD ► Show a mouse key pad into the &#039;Simple Point of Sale&#039; module.&lt;br /&gt;
&lt;br /&gt;
*POS_ADDON ► Set this value to an existing numbering module rule (for example &#039;&amp;lt;code&amp;gt;mod_facture_terre&amp;lt;/code&amp;gt;&#039;, &#039;&amp;lt;code&amp;gt;mod_facture_mars&amp;lt;/code&amp;gt;&#039;, ...) to force the numbering module to use for invoice ref definition when invoice is created by the POS. For example setting value &amp;lt;code&amp;gt;POS_ADDON&amp;lt;/code&amp;gt; to &#039;&amp;lt;code&amp;gt;mod_facture_terre&amp;lt;/code&amp;gt;&#039; will use the numbering module &#039;&amp;lt;code&amp;gt;terre&amp;lt;/code&amp;gt;&#039; for invoice generated from POS, whatever is the numbering rule defined into invoice module setup (you can also use POS_NUMBERING_TERRE_FORCE_PREFIX and POS_NUMBERING_MARS_FORCE_PREFIX variable to change the prefix used).&lt;br /&gt;
&lt;br /&gt;
*TAKEPOS_ENABLE_SUMUP ► Enable the compatibility of TakePOS with the card reader terminal [https://SumUp.fr SumUp]&lt;br /&gt;
*TAKEPOS_CAN_FORCE_BANK_ACCOUNT_DURING_PAYMENT ► Possibility to force the bank account during the payment in TakePOS  ► (v13.0)&lt;br /&gt;
*&lt;br /&gt;
*TAKEPOS_NUMPAD_FORCE_PAYMENT_ICONS_LABELS&lt;br /&gt;
 &lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Products Module=&lt;br /&gt;
&lt;br /&gt;
*CATEGORY_GRAPHSTATS_ON_PRODUCTS ► Show graph of products with categories and totals in Products Area screen&lt;br /&gt;
&lt;br /&gt;
*MAIN_PRODUCT_DISABLE_CUSTOMCOUNTRYCODE ► Avoid customs code and country of origin to be set as product description when added to Propal/Order/Invoice&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_ADD_TYPE_IN_DOCUMENTS ► Add text &amp;quot;Product&amp;quot; or &amp;quot;Service&amp;quot; at beginning of details lines on built PDF documents.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DONOTSEARCH_ANYWHERE ► When Ajax search is enabled, search is done on criteria anywhere in label of product. By adding this option, search is done only on start of label. This is really faster when you have a huge number of products.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DIRECT_STATUS_UPDATE ► Allows you to change the status of the product (&#039;&#039;for sale/not for sale for purchase/not for purchase&#039;&#039;) directly on the product page via a &#039;&#039;on/off&#039;&#039; switch button. This can be convenient for those who need to quickly disable certain statuses of products without having to go through the editing product page individually. Also can be very useful if used as a filter on the product and product search list. This option doesn&#039;t generate a MODIFY trigger, so be careful with external modules. ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_SEARCH_PRODUCT_BY_FOURN_REF ►  Allow to search a product by supplier ref in document&#039;s add line form. ► (&amp;gt;= 8.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_FREE_LINES ► Disallow using free lines to add line in documents ► (&amp;gt;= 8.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_SHOW_PRODUCT_ACTIVITY_TRIM ► Show Product and Services turnover before for all four quarters tax over recent years recent years on the product area ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
*PRODUIT_DESC_IN_LIST ► Show long description of product/service into lists.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_PROPAGATE_CUSTOMER_PRICES_ON_CHILD_COMPANIES ► Disable propagation of prices per customer from a customer to its child company.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_PUBLIC_URL ► Disable public url in product card ► (v14.0+)&lt;br /&gt;
*PRODUCT_DISABLE_STOCK_LEVELS ► Disable properties of stock limits and desired optimal value on product ► (v14.0+)&lt;br /&gt;
*PRODUCT_DISABLE_NATURE ► Disable nature in product card ► (v14.0+)&lt;br /&gt;
*PRODUCT_DISABLE_WEIGHT ► Disable weight in product card ► (v14.0+)&lt;br /&gt;
*PRODUCT_DISABLE_PRICES ► Disable prices in product card ► (v14.0+)&lt;br /&gt;
*PRODUCT_DISABLE_ACCOUNTING  ► Disable accounting in product card ► (v14.0+)&lt;br /&gt;
*PRODUCT_DISABLE_SIZE ► Disable size in product card.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_LENGTH ► Disable length in product card ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_SURFACE ► Disable surface in product card. ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_VOLUME ► Disable volume in product card.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_CUSTOM_INFO ► Disable custom info (custom code and country origin) in product/service card.&lt;br /&gt;
&lt;br /&gt;
*PRODUIT_MULTIPRICES_USE_VAT_PER_LEVEL ► When option to use price per level/segment is on, this allows to also set a dedicated vat for each price level.&lt;br /&gt;
&lt;br /&gt;
*PRODUIT_CUSTOMER_PRICES_BY_QTY ► If price per quantity ► &#039;&#039;Experimental&#039;&#039;&lt;br /&gt;
*PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES ► If price per quantity and customer ► &#039;&#039;Experimental&#039;&#039;&lt;br /&gt;
*PRODUCT_MAX_LENGTH_COMBO ► Limit the length of the label displayed when adding lines in proposals/invoices/orders&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_MAX_VISIBLE_PHOTO ► Show a maximum number of product photos (as thumbnails) on the product main card. Example, setting this constant to &#039;&amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;&#039; will show the first five product photos found on the product card.&lt;br /&gt;
&lt;br /&gt;
*PRODUIT_PDF_MERGE_PROPAL ► Enable module Propal merge product PDF&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_USE_OLD_PATH_FOR_PHOTO ► Ask dolibarr to check also old path (before 3.7) where photos were stored.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_USE_UNITS ► Add another units on products (Use same dictionnary as default unit feature) and propagate this unit on line of documents.&lt;br /&gt;
&lt;br /&gt;
*RESOURCE_ON_PRODUCTS_RESOURCE_ON_SERVICES ► Allow to affect ressources on products/services ► (v10.0+)&lt;br /&gt;
*PRODUCT_SHOW_ORIGIN_IN_COMBO ► Show origin of products when adding lines in proposals/invoices/orders ► (v12.0+)&lt;br /&gt;
*PRODUIT_ATTRIBUTES_HIDECHILD  ► Add option hide child if variantes&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_ADD_FORM_ADD_TO ► Add a product to a draft proposal/order/invoice, from the product card.&lt;br /&gt;
*PRODUCT_DISABLE_SELLBY ► Hide the Sell by date ► (v13.0+)&lt;br /&gt;
*PRODUCT_DISABLE_EATBY ► Hide the Eat by date ► (v13.0+)&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DENY_CHANGE_PRODUCT_TYPE ► Forbid to change the product type&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_SORT_BY_CATEGORY ► Sort the product by categories instead of by ID&lt;br /&gt;
*PRODUCT_ADD_NET_MEASURE ► Support Net Measure in product&#039;s card.php (For real weight, volume or piece; needed for some business ie fruits, vegetables....). Note brut value is already available natively, use this option only if you need 2 weights, 2 volumes, ...for each product) ► (v11.0.1+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Projects Module=&lt;br /&gt;
&lt;br /&gt;
*PROJECT_ALLOW_TO_LINK_FROM_OTHER_COMPANY ► Can link an object to a project of another thirdparty&lt;br /&gt;
*PROJECT_ALLOW_COMMENT_ON_PROJECT ► Add comment feature on a project&lt;br /&gt;
&lt;br /&gt;
*PROJECT_ALLOW_COMMENT_ON_TASK ► Add comment feature on project task&lt;br /&gt;
&lt;br /&gt;
*PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS ► Enable linking a project to any supplier even when using the third party link feature. Note: Set to 1 by default from 3.7.&lt;br /&gt;
&lt;br /&gt;
*PROJECT_CREATE_ON_OVERVIEW_DISABLED ► Hide the &amp;quot;create ...&amp;quot; button on the overview page ► (v4.0)&lt;br /&gt;
&lt;br /&gt;
*PROJECT_DISABLE_UNLINK_FROM_OVERVIEW ► Enable removing the button from a link in the project overview. ► (&amp;gt;= v8.0.1)&lt;br /&gt;
&lt;br /&gt;
*PROJECT_HIDE_UNSELECTABLES ► Hide into select list, all project that we can&#039;t select (closed or draft)&lt;br /&gt;
&lt;br /&gt;
*PROJECT_HIDE_TASKS ► Hide tasks. For user using project only as an analytics key and not using tasks.&lt;br /&gt;
&lt;br /&gt;
*PROJECT_LIST_SHOW_STARTDATE ► Shows start date of projects in project lists.&lt;br /&gt;
&lt;br /&gt;
*PROJECT_LINK_ON_OVERWIEW_DISABLED ► Hide the &amp;quot;link to&amp;quot; form on the overview page ► (v4.0)&lt;br /&gt;
&lt;br /&gt;
*PROJECT_SHOW_REF_INTO_LISTS ► Add column with project ref into list (with 3.7 list of supplier invoices only, will be expanded to other lists)&lt;br /&gt;
&lt;br /&gt;
*PROJECT_TIME_ON_ALL_TASKS_MY_PROJECTS ► Can add time spent on tasks, even if i am not assigned to task (however, task must be a project i am a contact).&lt;br /&gt;
&lt;br /&gt;
*PROJECT_OPEN_ALWAYS_ON_TAB ► Set to value &#039;task&#039;, or &#039;preview&#039; to always open the project on the given tab instead of main tab.&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*PROJECT_ELEMENTS_FOR_MINUS_MARGIN&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Proposals Module=&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_PROPOSALS_WITH_PICTURE ► Add a picture of the product (the first one found if there are several) into the generated PDF of proposals. Note that using this will reduce the available width for the product description.&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROPAL_CHOOSE_ODT_DOCUMENT ► On setup page, you&#039;ll be able to select which ODT document to use when close or cancel proposals.&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING ► add optional esign field in pdf propal ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*PROPAL_CLONE_ON_CREATE_PAGE ► On the create proposal page, ask if we want to create the proposal by cloning an already existing one. You should use instead the &amp;quot;Clone&amp;quot; button available on existing proposals.&lt;br /&gt;
&lt;br /&gt;
*PROPAL_DISABLE_SIGNATURE ► Do no show the box for signature.&lt;br /&gt;
&lt;br /&gt;
*PRODUIT_PDF_MERGE_PROPAL ► When generating the proposal PDF, all PDFs linked to products linked to proposal are also included into final PDF&lt;br /&gt;
&lt;br /&gt;
*PROPOSAL_ALLOW_EXTERNAL_DOWNLOAD ► When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*PROPOSAL_AUTO_ADD_AUTHOR_AS_CONTACT ► Add Proposal Author as user contact follow proposal&lt;br /&gt;
&lt;br /&gt;
*PROPOSAL_PDF_HIDE_PAYMENTTERM ► Do not show the payment term on proposal ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*PROPOSAL_PDF_HIDE_PAYMENTMODE ► Do not show the payment mode on proposal ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*WORKFLOW_PROPAL_CAN_CLASSIFY_BILLED_WITHOUT_INVOICES ► Button &amp;quot;Classified Billed&amp;quot; is visible on proposal even if there is no invoice linked to proposal.&lt;br /&gt;
*PROPAL_REOPEN_UNSIGNED_ONLY  ► Do not allow reopening of signed (or billed) proposals. (V15)&lt;br /&gt;
*PROPOSAL_ARE_NOT_BILLABLE  ► Disable billing button on proposals (V15)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Services Module=&lt;br /&gt;
&lt;br /&gt;
*SERVICE_ARE_ECOMMERCE_200238EC ►  If seller and buyer are in Europe and buyer is not a company, use the VAT of buying country. For french speaking people, see also the page [[Loi_européenne_TVA_Vente_à_Distance_VAD_et_e-commerce_BtoC]].&lt;br /&gt;
&lt;br /&gt;
*MAIN_FILL_SERVICE_DATES_FROM_LAST_SERVICE_LINE  ► (v13.0) On add line form add a button to fill service dates from the last service line&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Shipments=&lt;br /&gt;
&lt;br /&gt;
*STOCK_WAREHOUSE_NOT_REQUIRED_FOR_SHIPMENTS ► If set, you can add a shipment line, with no stock source defined. ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*SHIPMENT_GETS_ALL_ORDER_PRODUCTS ► Add all order lines in shipment, including the one with 0 in quantity&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Stocks=&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_DISABLE_STOCK_DISPATCH_WHEN_TOTAL_REACHED ► Disable stock dispatch when total expected was already received&lt;br /&gt;
&lt;br /&gt;
*STOCK_EXCLUDE_VIRTUAL_PRODUCTS ► If product is a virtual product, we do not manage stock for it.&lt;br /&gt;
&lt;br /&gt;
*ENTREPOT_EXTRA_STATUS ► Instead of the 2 status (Closed, Open), a Warehouse has 3 status: Closed, Open (for all movements), Open (for internal movement only). Internal movement only means you can&#039;t use the warehouse to make shipment or receptions.&lt;br /&gt;
*SUPPLIER_ORDER_STATUS_FOR_VIRTUAL_STOCK ► For the calculation of virtual stocks, by default supplier orders with the status 3 (ordered) and 4 (partially received) are used. You can enter the list of statuses to be taken into account separated by commas for this calculation (example: 0,1,2,3)&lt;br /&gt;
*STOCK_MOVEMENT_LIST_HIDE_UNIT_PRICE ► to hide unit price on some pages (V15+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Suppliers Module=&lt;br /&gt;
&lt;br /&gt;
*FOURN_PRODUCT_AVAILABILITY ► On the Suppliers price page of the products, activate the supplier product availability. &#039;&#039;This is duplicate feature with delivery_delay introduced with 3.8.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*RELOAD_PAGE_ON_SUPPLIER_CHANGE ► On creation of a supplier order/invoice, reload form with supplier-specific details when supplier is selected from drop-down list.&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_INVOICE_WITH_PREDEFINED_PRICES_ONLY ► Restrict selection of products in supplier invoice to only those with a buying price defined for that supplier. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_AUTOADD_USER_CONTACT ► Add user approving supplier order as a contact automatically.&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_DEFAULT_PAYMENT_MODE_ID ► Set the default payment method for suppliers (&amp;lt;code&amp;gt;rowid&amp;lt;/code&amp;gt; in table &amp;lt;code&amp;gt;llx_c_paiement&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_USE_DISPATCH_STATUS ► Add a status on each dispatch order line when receiving products from suppliers ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_NO_DIRECT_APPROVE ► No button &amp;quot;Validate and Approve&amp;quot;. Always do step &amp;quot;Validate&amp;quot; and &amp;quot;Approve&amp;quot; in 2 steps.&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_WITH_PREDEFINED_PRICES_ONLY ► Restrict selection of products in supplier order to only those with a buying price defined for that supplier. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_EDIT_BUYINGPRICE_DURING_RECEIPT ► Can modify the buying price used for PMP calculation when making a stock reception on a supplier order. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_PROPOSAL_WITH_PREDEFINED_PRICES_ONLY ► Restrict selection of products in supplier proposal to only those with a buying price defined for that supplier. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*DISPLAY_DISCOUNTED_SUPPLIER_PRICE ► Allow to display discounted supplier price when searching product in supplier documents ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_CAN_EDIT_SUPPLIER_ON_SUPPLIER_ORDER ►  Allow to change the supplier on a draft supplier order ► (v10.0)&lt;br /&gt;
*&lt;br /&gt;
*SUPPLIER_PROPOSAL_ALLOW_EXTERNAL_DOWNLOAD&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Third Parties Module=&lt;br /&gt;
&lt;br /&gt;
*COMPANY_AQUARIUM_CLEAN_REGEX ► Add a REGEX rule on the third parties names. It applies a regex replacement pattern on generated code if COMPANY_AQUARIUM_CLEAN_REGEX is set. Value must be a regex with parenthesis. The part into parenthesis is kept, the rest removed. For example if COMPANY_AQUARIUM_CLEAN_REGEX = &#039;&amp;lt;code&amp;gt;^..(..)..(.*)&amp;lt;/code&amp;gt;&#039; the first char and second char are removed and the char 5 and 6 too ► (&amp;gt;= 8.0.1)&lt;br /&gt;
*SOCIETE_EMAIL_MANDATORY ► E-mail is a mandatory field when creating a thirdparty&lt;br /&gt;
&lt;br /&gt;
*SOCIETE_DISABLE_CUSTOMERS ► Remove all menu and features related to customers&lt;br /&gt;
&lt;br /&gt;
*SOCIETE_DISABLE_PROSPECTS ► Remove all menu and features related to prospects&lt;br /&gt;
&lt;br /&gt;
*SOCIETE_DISABLE_STATE ► Do not use field &amp;quot;state/province&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*SOCIETE_SORT_ON_TYPEENT ► The combo list of &amp;quot;type of third party&amp;quot; is sorted on alphabetical order instead of the field &amp;quot;position&amp;quot; that appears into dictionary instead.&lt;br /&gt;
&lt;br /&gt;
*SOCIETE_ASK_FOR_SHIPPING_METHOD ► Shipping method can be predefined on customer card and will be used as default on order creation&lt;br /&gt;
*SOCIETE_ADD_REF_IN_LIST ► Displays the code before the name in the lists  ► Value 1 -&amp;gt; Code + name + alias ou Code + name if colone alias 2 -&amp;gt; Code + alias 3 -&amp;gt; Alias&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_CAN_HAVE_CATEGORY_EVEN_IF_NOT_CUSTOMER_PROSPECT_SUPPLIER ► Possible to add Categories to third parties that are not customer, prospect or supplier.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_DEFAULT_USELOCALTAX1 ► When creating a new third party, the field &amp;quot;Use second tax&amp;quot; is set to on or off depending on value of this parameter.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_DEFAULT_USELOCALTAX2 ► When creating a new third party, the field &amp;quot;Use third tax&amp;quot; is set to on or off depending on value of this parameter.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_NOTCUSTOMERPROSPECT_BY_DEFAULT ► Do not set status &amp;quot;Customer/Prospect&amp;quot; to &amp;quot;on&amp;quot; when creating a new third party from menu &amp;quot;New third party&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_INCLUDE_PARENT_IN_LINKTO ► Search also for elements on parent third party when using the &amp;quot;link to&amp;quot; object feature.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_INCLUDE_PROJECT_THIRDPARY_IN_LINKTO ► Search also for elements on third party that own the project of the current element when using the &amp;quot;link to&amp;quot; object feature (if project is owned by a different thirdparty than current one).&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_LOGO_ALLOW_EXTERNAL_DOWNLOAD ► When a logo is uploaded, a share key is automatically set so the file can be downloaded using the share key.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_SUGGEST_ALSO_ADDRESS_CREATION ► Enabled contact creation on third-party create card&lt;br /&gt;
*THIRDPARTY_QUICKSEARCH_ON_FIELDS ► Personalized search criterias ► Example: $conf-&amp;gt;global-&amp;gt;THIRDPARTY_QUICKSEARCH_ON_FIELDS = &#039;s.nom=ThirdPartyName;s.name_alias=AliasNameShort;s.code_client=CustomerCode&#039;&lt;br /&gt;
*MEMBER_CAN_CONVERT_CUSTOMERS_TO_MEMBERS ► Enabled member creation on third-party create card&lt;br /&gt;
*SOCIETE_DISABLE_PARENTCOMPANY ► Disables attachment to a parent company.&lt;br /&gt;
*THIRDPARTY_CUSTOMERPROSPECT_BY_DEFAULT ► Set the third party to customer by default&lt;br /&gt;
*THIRDPARTY_SUPPLIER_BY_DEFAULT ► Set the third party to supplier by default&lt;br /&gt;
*THIRDPARTY_CUSTOMERTYPE_BY_DEFAULT ► Set the third party type by default (3 = customer &amp;amp; prospect / 2 = prospect / 1 = customer )&lt;br /&gt;
*CONTACT_DISABLE_PERSONALINFO ► Disable Personal data on contact page&lt;br /&gt;
*SOCIETE_DISABLE_WORKFORCE ► Disable work force selector on society page&lt;br /&gt;
*SOCIETE_SHOW_VAT_IN_LIST ► display VAT number in combo list of thirdparties (V15+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Ticket Module=&lt;br /&gt;
&lt;br /&gt;
*TICKET_SHOW_MESSAGES_ON_CARD ►Display all ticket related messages on the main ticket card. ► (&amp;gt;= 10.0)&lt;br /&gt;
*TICKET_AUTO_ASSIGN_CONTRACT_CREATE ►Automatically create a contract linked to the ticket ► (&amp;gt;= 10.0)&lt;br /&gt;
*TICKET_AUTO_CREATE_FICHINTER_CREATE ►Automatically create an intervention linked to the ticket ► (&amp;gt;= 10.0)&lt;br /&gt;
*WORKFLOW_TICKET_CLOSE_INTERVENTION ►On ticlet close, automatically close an intervention linked to the ticket&lt;br /&gt;
*TICKET_CHECK_NOTIFY_THIRDPARTY_AT_CREATION ►Automatically check &amp;quot;notify thirdparty at creation&amp;quot; ( &amp;gt;=16)&lt;br /&gt;
*TICKETS_MESSAGE_FORCE_MAIL ► Precheck email sending on ticket message (&amp;gt;=15)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=VAT Report=&lt;br /&gt;
&lt;br /&gt;
*MAIN_INCLUDE_ZERO_VAT_IN_REPORTS ► Include lines with VAT to 0% (for &amp;quot;auto-liquidation&amp;quot; in EEC) ► (v8.0.3+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Website Module=&lt;br /&gt;
&lt;br /&gt;
*WEBSITE_USE_WEBSITE_ACCOUNTS ► Add a table and a tab to manage some accounts for websites to a third party&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*WEBSITE_ADD_CSS_TO_BODY&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=WYSIWYG Editor=&lt;br /&gt;
&lt;br /&gt;
*FCKEDITOR_ENABLE_DETAILS_FULL ► Can cut and paste external images (hosted on external server) into description of proposal, orders or invoices. WARNING: PDF generation is not guaranteed with this. Also if the image is removed or renamed by the image hosting service, your proposal, order or invoice will be broken.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=STRIPE Module=&lt;br /&gt;
&lt;br /&gt;
*STRIPE_FORCE_VERSION ► Force the STRIPE version. For Example: &amp;quot;2019-09-09&amp;quot; (v11+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=ClickToDial Module=&lt;br /&gt;
&lt;br /&gt;
*CLICKTODIAL_FORCENEWTARGET ► Open in new page.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=For SaaS / Cloud hosting integrators=&lt;br /&gt;
&lt;br /&gt;
The following options are useless for a common usage of Dolibarr. But they are usefull if you plan to host / provide Dolibarr instances as Software As A Service (SAAS) to your customers.&lt;br /&gt;
&lt;br /&gt;
*CRON_DISABLE_KEY_CHANGE ► When you provide an instance to a customer, you probably also add an entry in the cron of this user so Dolibarr batch and scheduler can work correctly. For security purpose, it may have a security key that is inside the command line into the cron entry and this entry must match the value defined into Dolibarr setup (setup of module &#039;Scheduled Jobs&#039;). Because, a customer of a Saas platform will probably have no access to edit the cron file, it is also import that he has no way to edit the key into the Dolibarr setup, so the key in the cron command line will always match the key in Dolibarr setup, and the Dolibarr batches will executed without security errors. To be sure, the customer does not change the value, you can set this constant to 1 into the table [[Table_llx_const]].&lt;br /&gt;
&lt;br /&gt;
*CRON_DISABLE_TUTORIAL_CRON ► Disable the tutorial about how to install the cron script (on a SaaS hosting, this should be done by the web hosting provider)&lt;br /&gt;
&lt;br /&gt;
*CRON_WARNING_DELAY_HOURS ► Set this value to the frequency set for the cron script (so a warning will be shown to user to warn it about max frequency of its scheduled jobs)&lt;br /&gt;
 &lt;br /&gt;
*To avoid bad use of the emailing module, it is recommended to set the option MAILING_NO_USING_PHPMAIL to 1 (This option is described previously). Also you can complete the message visible by customers when they try to setup the SMTP credentials of their Dolibarr by using the constant MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS (This option is described previously). For example, you can point to a FAQ on your website.&lt;br /&gt;
&lt;br /&gt;
*If you set a system limit on number of recipient, you can set some option to match the same values so users will be informed: MAIL_MAX_NB_OF_RECIPIENTS_IN_SAME_EMAIL ► Restrict sending of 1 email message to &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; recipients for same email message (x for To: + CC: + BCC:). If not defined, value is &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;. Required to fight against spamming that include 1000 recipients in 1 message. Note that MAIL_MAX_NB_OF_RECIPIENTS_TO_IN_SAME_EMAIL, MAIL_MAX_NB_OF_RECIPIENTS_CC_IN_SAME_EMAIL and MAIL_MAX_NB_OF_RECIPIENTS_BCC_IN_SAME_EMAIL are also available.&lt;br /&gt;
&lt;br /&gt;
*MAIN_ALWAYS_CREATE_LOCK_AFTER_LAST_UPGRADE ► If set, when you launch upgrades of your customer instances, you are sure that the upgrade process recreate automatically the file install.lock so the administration tools like install.php and repair.php can&#039;t be used on your customer instance (until the lock file is deleted).&lt;br /&gt;
&lt;br /&gt;
*MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP ► Set to 1 by default. You can set it to 0 to show a warning to encourage admin to set its own SMTP service.&lt;br /&gt;
&lt;br /&gt;
*MAILING_LIMIT_WARNING_PHPMAIL ► Set this value to a translation key. Then add translation keys into the instance so user will see a message when into the email setup page. For example, you can set a message to say &#039;&#039;Warning: To avoid abuse, when using default setup, you are restricted to 500 emails per day for all your application (account may be suspended in case of violation of this rule. You can setup application to use your own SMTP server for sending email so you want have no restriction at all (see menu Home-Setup-Emails)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*MAIN_EXTERNAL_SMTP_CLIENT_IP_ADDRESS ► (A better name of this option should be MAIN_EXTERNAL_MAIL_CLIENT_IP_ADDRESS). Set here the list of IPs where your Dolibarr instances are hosted. So when your customer go into the setup area of email:&lt;br /&gt;
**If he chose mail method, a message will explain him how to setup its SPF record for its email domain (showing the list of IP). This is to avoid to have its emails, sent from its Dolibarr instance, fails due to strict antispam rule of some emailing servers.&lt;br /&gt;
**If he chose smtp method, a message will explain him the list of IP he can use if there is restriction on IP by the SMTP agent. If you also need to add a message to help SPF setup, see option MAIN_EXTERNAL_SMTP_SPF_STRING_TO_ADD.&lt;br /&gt;
&lt;br /&gt;
*MAIN_EXTERNAL_SMTP_SPF_STRING_TO_ADD ► Set here the string to add in the SPF record This string will be shown into a help message when the user in in the setup of email page and has choose a method using an external SMTP server.&lt;br /&gt;
&lt;br /&gt;
*MAIN_FIRST_PING_OK_ID ► Set this value to &amp;quot;disabled&amp;quot; to remove completely any ping after a complete setup.&lt;br /&gt;
&lt;br /&gt;
*MAIN_FILECHECK_LOCAL_SUFFIX and MAIN_FILECHECK_LOCAL_EXT ► If you offer a customized or patched version of Dolibarr, when the user will use the tool to check the integrity of files, the default xml file name used for signature checking will be the official file provided by the Dolibarr team, so it does not includes your own changes. To have the suggested signature file being your own file, you can set the constant MAIN_FILECHECK_LOCAL_SUFFIX to a suffix. For example, set this to &amp;quot;&#039;&#039;&#039;-mysaassolution&#039;&#039;&#039;&amp;quot;. So, when the user will use the file integrity tool, the default file to check for signature will be &amp;quot;&#039;&#039;&#039;/install/filelist-10.0.2-mysaassolution.xml&#039;&#039;&#039;&amp;quot; instead of &amp;quot;&#039;&#039;&#039;/install/filelist-10.0.2.xml&#039;&#039;&#039;&amp;quot;. All you have to do is generate the signature file &#039;&#039;&#039;mysaassolution&#039;&#039;&#039; using the tool &#039;&#039;&#039;build/generate_filelist_xml.php&#039;&#039;&#039; and put this file into the install directory of your customer instance. Doing this, your customer, and yourself, will be able to check if a file was modified without being disturbed by false alerts due to your customized files or patches (they will be included in the signature used for check). Also, if you want to zip the customized signature file into &amp;quot;&#039;&#039;&#039;/install/filelist-10.0.2-mysaassolution.xml.zip&#039;&#039;&#039;&amp;quot;, you can set the constant MAIN_FILECHECK_LOCAL_EXT to &#039;.zip&#039;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING ► If set to N, the warning saying modules are not activated will be shown if number of activated module is &amp;lt; N (Having this variable not defined is same than having it set to 1). This may be usefull if you preinstall an application with some modules already loaded by default and you want to keep the warning to be sure the user will enable other modules he need, even if some modules are already enabed.&lt;br /&gt;
&lt;br /&gt;
*SYSLOG_DISABLE_LOGHANDLER_SYSLOG ► Set this to 1 to disable usage of syslog (having all customer instances logging in the same system file is not a good idea).&lt;br /&gt;
&lt;br /&gt;
*WEBSITE_REPLACE_INFO_ABOUT_USAGE_WITH_WEBSERVER ► Put here a text or a translation key of a text to show when the user will use the feature &amp;quot;Deploy&amp;quot; when he want to deploy a website done with Dolibarr CMS. So you can, for example, show him a message that this feature is not part of its subscription and putting a website online may need a complementary subscription.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Template:TemplateListOfTriggers&amp;diff=52121</id>
		<title>Template:TemplateListOfTriggers</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Template:TemplateListOfTriggers&amp;diff=52121"/>
		<updated>2021-10-04T08:51:52Z</updated>

		<summary type="html">&lt;p&gt;Iouston: add PROPAL_MODIFY and ORDER_UNVALIDATE&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|class=&amp;quot;wikitable sortable&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; class=&amp;quot;dolbox&amp;quot;&lt;br /&gt;
 |style=&amp;quot;background-color: #e9e9ef&amp;quot;| &amp;lt;b&amp;gt;Trigger code ($action)&amp;lt;/b&amp;gt;&lt;br /&gt;
 |style=&amp;quot;background-color: #e9e9ef&amp;quot;| &amp;lt;b&amp;gt;Type object ($object)&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|USER_CREATE&lt;br /&gt;
|user.class.php&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;strike&amp;gt;USER_CREATE_FROM_CONTACT&amp;lt;/strike&amp;gt; (Removed since 3.8)&lt;br /&gt;
|&amp;lt;strike&amp;gt;user.class.php&amp;lt;/strike&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|USER_MODIFY&lt;br /&gt;
|user.class.php&lt;br /&gt;
|-&lt;br /&gt;
|USER_DELETE&lt;br /&gt;
|user.class.php&lt;br /&gt;
|-&lt;br /&gt;
|USER_LOGIN&lt;br /&gt;
|user.class.php&lt;br /&gt;
|-&lt;br /&gt;
|USER_LOGIN_FAILED&lt;br /&gt;
|user.class.php&lt;br /&gt;
|-&lt;br /&gt;
|USER_LOGOUT&lt;br /&gt;
|user.class.php&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;strike&amp;gt;USER_UPDATE_SESSION&amp;lt;/strike&amp;gt; (Removed since 3.7.1)&lt;br /&gt;
|&amp;lt;strike&amp;gt;user.class.php&amp;lt;/strike&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|USER_ENABLEDISABLE&lt;br /&gt;
|user.class.php&lt;br /&gt;
|-&lt;br /&gt;
|USER_NEW_PASSWORD&lt;br /&gt;
|user.class.php&lt;br /&gt;
|-&lt;br /&gt;
|USER_SETINGROUP&lt;br /&gt;
|user.class.php&lt;br /&gt;
|-&lt;br /&gt;
|USER_REMOVEFROMGROUP&lt;br /&gt;
|user.class.php&lt;br /&gt;
|-&lt;br /&gt;
|USERGROUP_CREATE &#039;&#039;(&amp;gt;= 12.0.0)&lt;br /&gt;
|usergroup.class.php&lt;br /&gt;
|-&lt;br /&gt;
|USERGROUP_MODIFY&#039;&#039;(&amp;gt;= 12.0.0)&lt;br /&gt;
|usergroup.class.php&lt;br /&gt;
|-&lt;br /&gt;
|USERGROUP_DELETE&#039;&#039;(&amp;gt;= 12.0.0)&lt;br /&gt;
|usergroup.class.php&lt;br /&gt;
|-&lt;br /&gt;
|GROUP_CREATE&lt;br /&gt;
|usergroup.class.php&lt;br /&gt;
|-&lt;br /&gt;
|GROUP_MODIFY&lt;br /&gt;
|usergroup.class.php&lt;br /&gt;
|-&lt;br /&gt;
|GROUP_DELETE &#039;&#039;(&amp;gt;= 3.3.0)&#039;&#039;&lt;br /&gt;
|usergroup.class.php&lt;br /&gt;
|-&lt;br /&gt;
|COMPANY_CREATE&lt;br /&gt;
|societe.class.php&lt;br /&gt;
|-&lt;br /&gt;
|COMPANY_MODIFY&lt;br /&gt;
|societe.class.php&lt;br /&gt;
|-&lt;br /&gt;
|COMPANY_DELETE&lt;br /&gt;
|societe.class.php&lt;br /&gt;
|-&lt;br /&gt;
|COMPANY_SENTBYMAIL &#039;&#039;(&amp;gt;= 3.5.0)&#039;&#039;&lt;br /&gt;
|societe.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CONTACT_CREATE&lt;br /&gt;
|contact.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CONTACT_MODIFY&lt;br /&gt;
|contact.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CONTACT_DELETE&lt;br /&gt;
|contact.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CONTACT_ENABLEDISABLE &#039;&#039;(&amp;gt;= 3.5.0)&#039;&#039;&lt;br /&gt;
|contact.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PRODUCT_CREATE&lt;br /&gt;
|product.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PRODUCT_MODIFY&lt;br /&gt;
|product.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PRODUCT_PRICE_MODIFY&lt;br /&gt;
|product.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PRODUCT_DELETE&lt;br /&gt;
|product.class.php&lt;br /&gt;
|-&lt;br /&gt;
|SUPPLIER_PRODUCT_BUYPRICE_UPDATE&lt;br /&gt;
|fournisseur.product.class.php&lt;br /&gt;
|-&lt;br /&gt;
|SUPPLIER_PRODUCT_BUYPRICE_CREATE&lt;br /&gt;
|fournisseur.product.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_CREATE&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_VALIDATE&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_SENTBYMAIL&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_DELETE&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_CLASSIFY_BILLED&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_CLONE&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_CLOSE&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_CANCEL&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_REOPEN &#039;&#039;(&amp;gt;= 3.3.0)&#039;&#039;&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_UNVALIDATE&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|COMMANDE_ADD_CONTACT&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|COMMANDE_DELETE_CONTACT&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|COMMANDE_DELETE_RESOURCE &#039;&#039;(&amp;gt;= 3.6.0)&#039;&#039;&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEORDER_INSERT&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEORDER_UPDATE&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEORDER_DELETE&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEORDER_DISPATCH &#039;&#039;(&amp;gt;= 3.4.0)&#039;&#039;&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_SUPPLIER_CREATE&lt;br /&gt;
|fournisseur.commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_SUPPLIER_CLONE&lt;br /&gt;
|fournisseur.commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_SUPPLIER_VALIDATE&lt;br /&gt;
|fournisseur.commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_SUPPLIER_SENTBYMAIL&lt;br /&gt;
|fournisseur.commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_SUPPLIER_APPROVE&lt;br /&gt;
|fournisseur.commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_SUPPLIER_REFUSE&lt;br /&gt;
|fournisseur.commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_SUPPLIER_CANCEL&lt;br /&gt;
|fournisseur.commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_SUPPLIER_DELETE&lt;br /&gt;
|fournisseur.commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_SUPPLIER_DISPATCH &#039;&#039;(&amp;gt;= 3.4.0)&#039;&#039;&lt;br /&gt;
|fournisseur.commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_SUPPLIER_ADD_CONTACT&lt;br /&gt;
|fournisseur.commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_SUPPLIER_DELETE_CONTACT&lt;br /&gt;
|fournisseur.commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_SUPPLIER_DELETE_RESOURCE &#039;&#039;(&amp;gt;= 3.6.0)&#039;&#039;&lt;br /&gt;
|fournisseur.commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEORDER_SUPPLIER_CREATE&lt;br /&gt;
|fournisseur.commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEORDER_SUPPLIER_UPDATE&lt;br /&gt;
|fournisseur.commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEORDER_SUPPLIER_DELETE &#039;&#039;(&amp;gt;= 3.6.0)&#039;&#039;&lt;br /&gt;
|fournisseur.commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROPAL_CREATE&lt;br /&gt;
|propal.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROPAL_DELETE&lt;br /&gt;
|propal.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROPAL_CLONE&lt;br /&gt;
|propal.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROPAL_REOPEN &#039;&#039;(&amp;gt;= 3.5.0)&#039;&#039;&lt;br /&gt;
|propal.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROPAL_VALIDATE&lt;br /&gt;
|propal.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROPAL_CLOSE_SIGNED&lt;br /&gt;
|propal.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROPAL_CLOSE_REFUSED&lt;br /&gt;
|propal.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROPAL_SENTBYMAIL&lt;br /&gt;
|propal.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROPAL_MODIFY&lt;br /&gt;
|propal.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROPAL_ADD_CONTACT&lt;br /&gt;
|propal.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROPAL_DELETE_CONTACT&lt;br /&gt;
|propal.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROPAL_DELETE_RESOURCE &#039;&#039;(&amp;gt;= 3.6.0)&#039;&#039;&lt;br /&gt;
|propal.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEPROPAL_INSERT&lt;br /&gt;
|propal.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEPROPAL_UPDATE&lt;br /&gt;
|propal.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEPROPAL_DELETE&lt;br /&gt;
|propal.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CONTRACT_CREATE&lt;br /&gt;
|contrat.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CONTRACT_VALIDATE&lt;br /&gt;
|contrat.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CONTRACT_SERVICE_ACTIVATE&lt;br /&gt;
|contrat.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CONTRACT_SERVICE_CLOSE&lt;br /&gt;
|contrat.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CONTRACT_DELETE&lt;br /&gt;
|contrat.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CONTRAT_ADD_CONTACT&lt;br /&gt;
|contrat.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CONTRAT_DELETE_CONTACT&lt;br /&gt;
|contrat.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CONTRAT_DELETE_RESOURCE &#039;&#039;(&amp;gt;= 3.6.0)&#039;&#039;&lt;br /&gt;
|contrat.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINECONTRACT_INSERT &#039;&#039;(&amp;gt;= 3.9.0) (LINECONTRACT_CREATE &amp;gt;= 3.7.0)&#039;&#039;&lt;br /&gt;
|contrat.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINECONTRACT_UPDATE &#039;&#039;(CONTRACT_LINE_MODIFY &amp;lt; 3.5.0) (CONTRACT_LINE_MODIFY &amp;gt; 3.3.0)&#039;&#039;&lt;br /&gt;
|contrat.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINECONTRACT_DELETE &#039;&#039;(CONTRACT_LINE_DELETE &amp;lt; 3.5.0) (CONTRACTLINE_DELETE &amp;lt; 3.3.0)&#039;&#039;&lt;br /&gt;
|contrat.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_CREATE&lt;br /&gt;
|facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_MODIFY&lt;br /&gt;
|facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_CLONE&lt;br /&gt;
|facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_VALIDATE&lt;br /&gt;
|facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_UNVALIDATE &#039;&#039;(&amp;gt;= 3.4.0)&#039;&#039;&lt;br /&gt;
|facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_PAYED&lt;br /&gt;
|facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_UNPAYED&lt;br /&gt;
|facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_CANCEL&lt;br /&gt;
|facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_DELETE&lt;br /&gt;
|facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_SENTBYMAIL&lt;br /&gt;
|facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|FACTURE_ADD_CONTACT&lt;br /&gt;
|facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|FACTURE_DELETE_CONTACT&lt;br /&gt;
|facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|FACTURE_DELETE_RESOURCE &#039;&#039;(&amp;gt;= 3.6.0)&#039;&#039;&lt;br /&gt;
|facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEBILL_INSERT&lt;br /&gt;
|facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEBILL_UPDATE&lt;br /&gt;
|facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEBILL_DELETE&lt;br /&gt;
|facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_SUPPLIER_CREATE&lt;br /&gt;
|fournisseur.facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_SUPPLIER_MODIFY&lt;br /&gt;
|fournisseur.facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_SUPPLIER_DELETE &#039;&#039;(INVOICE_SUPPLIER_DELETE &amp;lt; 3.3.0)&#039;&#039;&lt;br /&gt;
|fournisseur.facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_SUPPLIER_VALIDATE&lt;br /&gt;
|fournisseur.facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_SUPPLIER_PAYED&lt;br /&gt;
|fournisseur.facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_SUPPLIER_UNPAYED&lt;br /&gt;
|fournisseur.facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_SUPPLIER_SENTBYMAIL&lt;br /&gt;
|fournisseur.facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|INVOICE_SUPPLIER_ADD_CONTACT&lt;br /&gt;
|fournisseur.facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|INVOICE_SUPPLIER_DELETE_CONTACT&lt;br /&gt;
|fournisseur.facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|INVOICE_SUPPLIER_DELETE_RESOURCE &#039;&#039;(&amp;gt;= 3.6.0)&#039;&#039;&lt;br /&gt;
|fournisseur.facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEBILL_SUPPLIER_CREATE&lt;br /&gt;
|fournisseur.facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEBILL_SUPPLIER_UPDATE&lt;br /&gt;
|fournisseur.facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEBILL_SUPPLIER_DELETE &#039;&#039;(&amp;gt;= 3.4.0)&#039;&#039;&lt;br /&gt;
|fournisseur.facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PAYMENT_CUSTOMER_CREATE&lt;br /&gt;
|paiement.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PAYMENT_DELETE (&amp;lt;= 3.8)&lt;br /&gt;
|paiement.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PAYMENT_CUSTOMER_DELETE (&amp;gt;= 3.9)&lt;br /&gt;
|paiement.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PAYMENT_ADD_TO_BANK&lt;br /&gt;
|paiement.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PAYMENT_SUPPLIER_CREATE&lt;br /&gt;
|paiementfourn.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PAYMENT_SUPPLIER_DELETE (&amp;gt;= 3.9)&lt;br /&gt;
|paiement.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PAYMENT_SALARY_CREATE &#039;&#039;(&amp;gt;= 3.6.0)&#039;&#039;&lt;br /&gt;
|paymentsalary.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PAYMENT_SALARY_MODIFY &#039;&#039;(&amp;gt;= 3.6.0)&#039;&#039;&lt;br /&gt;
|paymentsalary.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PAYMENT_SALARY_DELETE &#039;&#039;(&amp;gt;= 3.6.0)&#039;&#039;&lt;br /&gt;
|paymentsalary.class.php&lt;br /&gt;
|-&lt;br /&gt;
|FICHINTER_CREATE &#039;&#039;(FICHEINTER_CREATE &amp;lt; 3.3.0)&#039;&#039;&lt;br /&gt;
|fichinter.class.php&lt;br /&gt;
|-&lt;br /&gt;
|FICHINTER_MODIFY &#039;&#039;(FICHEINTER_MODIFY &amp;lt; 3.3.0)&#039;&#039;&lt;br /&gt;
|fichinter.class.php&lt;br /&gt;
|-&lt;br /&gt;
|FICHINTER_DELETE &#039;&#039;(FICHEINTER_DELETE &amp;lt; 3.3.0)&#039;&#039;&lt;br /&gt;
|fichinter.class.php&lt;br /&gt;
|-&lt;br /&gt;
|FICHINTER_VALIDATE &#039;&#039;(FICHEINTER_VALIDATE &amp;lt; 3.3.0)&#039;&#039;&lt;br /&gt;
|fichinter.class.php&lt;br /&gt;
|-&lt;br /&gt;
|FICHINTER_SENTBYMAIL &#039;&#039;(FICHEINTER_SENTBYMAIL &amp;lt; 3.3.0)&#039;&#039;&lt;br /&gt;
|fichinter.class.php&lt;br /&gt;
|-&lt;br /&gt;
|FICHINTER_ADD_CONTACT&lt;br /&gt;
|fichinter.class.php&lt;br /&gt;
|-&lt;br /&gt;
|FICHINTER_DELETE_CONTACT&lt;br /&gt;
|fichinter.class.php&lt;br /&gt;
|-&lt;br /&gt;
|FICHINTER_DELETE_RESOURCE &#039;&#039;(&amp;gt;= 3.6.0)&#039;&#039;&lt;br /&gt;
|fichinter.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEFICHINTER_CREATE &#039;&#039;(&amp;gt;= 3.5.0)&#039;&#039;&lt;br /&gt;
|fichinter.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEFICHINTER_UPDATE &#039;&#039;(&amp;gt;= 3.5.0)&#039;&#039;&lt;br /&gt;
|fichinter.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEFICHINTER_DELETE &#039;&#039;(&amp;gt;= 3.5.0)&#039;&#039;&lt;br /&gt;
|fichinter.class.php&lt;br /&gt;
|-&lt;br /&gt;
|MEMBER_CREATE&lt;br /&gt;
|adherent.class.php&lt;br /&gt;
|-&lt;br /&gt;
|MEMBER_VALIDATE&lt;br /&gt;
|adherent.class.php&lt;br /&gt;
|-&lt;br /&gt;
|MEMBER_SUBSCRIPTION&lt;br /&gt;
|adherent.class.php&lt;br /&gt;
|-&lt;br /&gt;
|MEMBER_MODIFY&lt;br /&gt;
|adherent.class.php&lt;br /&gt;
|-&lt;br /&gt;
|MEMBER_RESILIATE&lt;br /&gt;
|adherent.class.php&lt;br /&gt;
|-&lt;br /&gt;
|MEMBER_NEW_PASSWORD&lt;br /&gt;
|adherent.class.php&lt;br /&gt;
|-&lt;br /&gt;
|MEMBER_DELETE&lt;br /&gt;
|adherent.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CATEGORY_CREATE&lt;br /&gt;
|category.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CATEGORY_MODIFY&lt;br /&gt;
|category.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CATEGORY_DELETE&lt;br /&gt;
|category.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CATEGORY_LINK &#039;&#039;(&amp;gt;= 3.5.0)&#039;&#039;&lt;br /&gt;
|category.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CATEGORY_UNLINK &#039;&#039;(&amp;gt;= 3.5.0)&#039;&#039;&lt;br /&gt;
|category.class.php&lt;br /&gt;
|-&lt;br /&gt;
|SHIPPING_CREATE&lt;br /&gt;
|expedition.class.php&lt;br /&gt;
|-&lt;br /&gt;
|SHIPPING_VALIDATE&lt;br /&gt;
|expedition.class.php&lt;br /&gt;
|-&lt;br /&gt;
|SHIPPING_MODIFY&lt;br /&gt;
|expedition.class.php&lt;br /&gt;
|-&lt;br /&gt;
|SHIPPING_DELETE&lt;br /&gt;
|expedition.class.php&lt;br /&gt;
|-&lt;br /&gt;
|SHIPPING_SENTBYMAIL&lt;br /&gt;
|expedition.class.php&lt;br /&gt;
|-&lt;br /&gt;
|DELIVERY_VALIDATE&lt;br /&gt;
|livraison.class.php&lt;br /&gt;
|-&lt;br /&gt;
|DELIVERY_DELETE&lt;br /&gt;
|livraison.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ACTION_CREATE&lt;br /&gt;
|actioncomm.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ACTION_MODIFY&lt;br /&gt;
|actioncomm.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ACTION_DELETE&lt;br /&gt;
|actioncomm.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ACTION_ADD_CONTACT&lt;br /&gt;
|actioncomm.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ACTION_DELETE_CONTACT&lt;br /&gt;
|actioncomm.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ACTION_DELETE_RESOURCE &#039;&#039;(&amp;gt;= 3.6.0)&#039;&#039;&lt;br /&gt;
|actioncomm.class.php&lt;br /&gt;
|-&lt;br /&gt;
|DEPLACEMENT_CREATE&lt;br /&gt;
|deplacement.class.php&lt;br /&gt;
|-&lt;br /&gt;
|DON_CREATE&lt;br /&gt;
|don.class.php&lt;br /&gt;
|-&lt;br /&gt;
|DON_MODIFY &#039;&#039;(&amp;gt;= 3.7.0)&#039;&#039;&lt;br /&gt;
|don.class.php&lt;br /&gt;
|-&lt;br /&gt;
|DON_DELETE &#039;&#039;(&amp;gt;= 3.7.0)&#039;&#039;&lt;br /&gt;
|don.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LOCALTAX_CREATE&lt;br /&gt;
|localtax.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LOCALTAX_MODIFY&lt;br /&gt;
|localtax.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LOCALTAX_DELETE&lt;br /&gt;
|localtax.class.php&lt;br /&gt;
|-&lt;br /&gt;
|TVA_CREATE&lt;br /&gt;
|tva.class.php&lt;br /&gt;
|-&lt;br /&gt;
|TVA_MODIFY&lt;br /&gt;
|tva.class.php&lt;br /&gt;
|-&lt;br /&gt;
|TVA_DELETE&lt;br /&gt;
|tva.class.php&lt;br /&gt;
|-&lt;br /&gt;
|TVA_ADDPAYMENT&lt;br /&gt;
|tva.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROJECT_CREATE&lt;br /&gt;
|project.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROJECT_MODIFY&lt;br /&gt;
|project.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROJECT_DELETE&lt;br /&gt;
|project.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROJECT_VALIDATE&lt;br /&gt;
|project.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROJECT_CLOSE&lt;br /&gt;
|project.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROJECT_ADD_CONTACT&lt;br /&gt;
|project.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROJECT_DELETE_CONTACT&lt;br /&gt;
|project.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROJECT_DELETE_RESOURCE &#039;&#039;(&amp;gt;= 3.6.0)&#039;&#039;&lt;br /&gt;
|project.class.php&lt;br /&gt;
|-&lt;br /&gt;
|TASK_CREATE&lt;br /&gt;
|task.class.php&lt;br /&gt;
|-&lt;br /&gt;
|TASK_MODIFY&lt;br /&gt;
|task.class.php&lt;br /&gt;
|-&lt;br /&gt;
|TASK_DELETE&lt;br /&gt;
|task.class.php&lt;br /&gt;
|-&lt;br /&gt;
|TASK_TIMESPENT_CREATE&lt;br /&gt;
|task.class.php&lt;br /&gt;
|-&lt;br /&gt;
|TASK_TIMESPENT_MODIFY&lt;br /&gt;
|task.class.php&lt;br /&gt;
|-&lt;br /&gt;
|TASK_TIMESPENT_DELETE&lt;br /&gt;
|task.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROJECT_TASK_ADD_CONTACT&lt;br /&gt;
|task.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROJECT_TASK_DELETE_CONTACT&lt;br /&gt;
|task.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROJECT_TASK_DELETE_RESOURCE &#039;&#039;(&amp;gt;= 3.6.0)&#039;&#039;&lt;br /&gt;
|task.class.php&lt;br /&gt;
|-&lt;br /&gt;
|MYECMDIR_CREATE&lt;br /&gt;
|ecmdirectory.class.php&lt;br /&gt;
|-&lt;br /&gt;
|MYECMDIR_MODIFY&lt;br /&gt;
|ecmdirectory.class.php&lt;br /&gt;
|-&lt;br /&gt;
|MYECMDIR_DELETE&lt;br /&gt;
|ecmdirectory.class.php&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;strike&amp;gt;IMPORT_DELETE&amp;lt;/strike&amp;gt; (Removed since 3.7.0)&lt;br /&gt;
|&amp;lt;strike&amp;gt;import.class.php&amp;lt;/strike&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|STOCK_MOVEMENT&lt;br /&gt;
|mouvementstock.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PAYBOX_PAYMENT_OK&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|PAYPAL_PAYMENT_OK&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LINK_CREATE &#039;&#039;(&amp;gt;= 3.5.0)&#039;&#039;&lt;br /&gt;
|link.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINK_MODIFY &#039;&#039;(&amp;gt;= 3.5.0)&#039;&#039;&lt;br /&gt;
|link.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINK_DELETE &#039;&#039;(&amp;gt;= 3.5.0)&#039;&#039;&lt;br /&gt;
|link.class.php&lt;br /&gt;
|-&lt;br /&gt;
|OPENSURVEY_CREATE &#039;&#039;(&amp;gt;= 3.6.0)&#039;&#039;&lt;br /&gt;
|opensurveysondage.class.php&lt;br /&gt;
|-&lt;br /&gt;
|OPENSURVEY_DELETE &#039;&#039;(&amp;gt;= 3.6.0)&#039;&#039;&lt;br /&gt;
|opensurveysondage.class.php&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Setup_Other&amp;diff=51757</id>
		<title>Setup Other</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Setup_Other&amp;diff=51757"/>
		<updated>2021-08-04T08:14:22Z</updated>

		<summary type="html">&lt;p&gt;Iouston: Add Donation Module chapter with a first option (i saw this option in a V13)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- BEGIN origin interlang links --&amp;gt;&lt;br /&gt;
&amp;lt;!-- You can edit this section but do NOT remove these comments&lt;br /&gt;
     Links below will be automatically replicated on translated pages by PolyglotBot --&amp;gt;&lt;br /&gt;
[[fr:Paramétrage_Divers]]&lt;br /&gt;
[[es:Configuración_Varios]]&lt;br /&gt;
[[de:Erweiterte_Einstellungen]]&lt;br /&gt;
[[zh:其他设置]]&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Admin]]&lt;br /&gt;
{{TemplateDocUser}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Help About Screen&#039;&#039;&#039;: Other setup&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Menu Path&#039;&#039;&#039;: Home ► Setup ► Other&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Some options are not visible in the interface (often because they are deprecated or are beta features). In most cases you do not need these functions and their use may make the application unstable.&lt;br /&gt;
&lt;br /&gt;
 {{warning|32px}} This page contains the list of some advanced development parameters. In most cases, it is parameters for internal usage, development, external modules, features in development not stable or that may lead to security risk. For standard usage of Dolibarr, such parameters &#039;&#039;&#039;SHOULD NOT&#039;&#039;&#039; be used. All experimental options are NOT supported. They may be removed in a future, modified at any version and break stability of your application.&lt;br /&gt;
&lt;br /&gt;
To enable/override a parameter you have to define the constant name and set it to 1 (unless otherwise stated) in &amp;lt;code&amp;gt;Home ► Setup ► Other Setup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Some unsupported and unstable options (experimental or development options)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Some options are not yet documented since they are not stable and not supported yet. The basic format of how the list is written is broken down in the example below:&lt;br /&gt;
&lt;br /&gt;
HIDDEN_CONFIG ► &#039;&#039;Description of config&#039;&#039; ► &#039;&#039;(specific version information) or values&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toclimit-1 tocinline&amp;quot;&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
=Global Options=&lt;br /&gt;
&lt;br /&gt;
*ADD_UNSPLASH_LOGIN_BACKGROUND ► The background image will be refreshed on every login page refresh. Background image is pulled from the popular open source image website Unsplash. If an already saved static background image exists, then this code will override it (but not delete the saved image). Warning: Using this may allow an external website to steel your login credentials ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_APPLICATION_TITLE ► This will change the title of software (that appears on the login page by default). Warning, changing this may make Dolibarr version detection fail by smartphone applications like [[Application Android - DoliDroid]]&lt;br /&gt;
&lt;br /&gt;
*MAIN_AUTOFILL_DATE ► If this constant is defined (to something other than 0), the date of invoice, proposal, order or payment are auto-filled with the current date. It is highly recommended to NOT ENABLE this feature. This can create a lot of input errors with data not validated by users. This leads to incorrect values saved in the database causing confusion when you have to do your accountancy reports!&lt;br /&gt;
&lt;br /&gt;
*MAIN_AUTO_TIMESTAMP_IN_PUBLIC_NOTES ► Add a timestamp and user automatically when editing the &#039;&#039;public&#039;&#039; note.&lt;br /&gt;
&lt;br /&gt;
*MAIN_AUTO_TIMESTAMP_IN_PRIVATE_NOTES ► Add a timestamp and user automatically when editing the &#039;&#039;private&#039;&#039; note.&lt;br /&gt;
&lt;br /&gt;
*MAIN_COUNTRIES_IN_EEC ► Country list in European Area (For VAT purpose) (v10.0-v13.0). From v14, do not use this anymore (remove the constant if you set it and instead the if country is in Europe or not from the dictionary of countries).&lt;br /&gt;
&lt;br /&gt;
*MAIN_DEFAULT_PAYMENT_TERM_ID ► With ID of a payment term, will use this as default payment term each time you create a new proposal, order, invoice (customer and supplier)&lt;br /&gt;
*MAIN_DEFAULT_PAYMENT_TYPE_ID ► With ID of a payment type, will use this as default payment type each time you create a new proposal, order, invoice (customer and supplier) ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DEFAULT_LANGUAGE_FILTER ► Useful if you do not want to show en_US language option in combo boxes (other languages can easily be removed in langs directory but not en_US) ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_LANGUAGES_ALLOWED ► is a list of languages without spaces, example : fr_FR,en_US,de_DE,it_IT if defined, only those languages will appear in combos. ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_NOTES_TAB ► Show or hide notes tab in the card page&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_CONTACTS_TAB ► Show or hide contacts tab in the card page&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_FULL_SCANLIST ► Disables the complete scan of tables to allow the pagination to show total number of pages. May be useful to activate on systems with a very high quantity of data (tables with more than 2 000 000 records).&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_JQUERY_JNOTIFY ► Disable usage of &amp;lt;code&amp;gt;JNotify&amp;lt;/code&amp;gt; to show confirm or error messages&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_AJAX_COMBOX ► If you have a large number of third parties or products, you can disable the autocomplete feature on the third parties list by setting this constant to 1 ► (v3.6.0+)&lt;br /&gt;
*MAIN_DISABLE_MULTIPLE_FILEUPLOAD ► Disable users to upload multiple files at once.&lt;br /&gt;
*MAIN_DISABLE_TRUNC ► Disable all truncings in select list. (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLEDRAFTSTATUS ► Disable the status Draft for some objects (project, donation, ...)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DOC_USE_OBJECT_THIRDPARTY_NAME ► Add name of thirdparty at begin of generated document.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DOC_USE_TIMING ► Add a timestamp at end of generated document. Value must be format of timestamp. For example: &amp;lt;code&amp;gt;%Y%m%d%H%M&amp;lt;/code&amp;gt; (only for ODT files)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DOC_UPLOAD_NOT_RENAME_BY_DEFAULT ► Disable the auto renaming on upload file ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DOL_SCRIPTS_ROOT ► Define directory who contains &#039;scripts&#039; directory (e.g. &amp;lt;code&amp;gt;/var/www/dolibarr&amp;lt;/code&amp;gt;). Value of this variable may be requested by some external script or tools.&lt;br /&gt;
&lt;br /&gt;
*MAIN_ENABLE_LOG_TO_HTML ► If this constant is defined, it is possible to have logs inside pages by adding the parameter &amp;amp;logtohtml=1 into URL.&lt;br /&gt;
&lt;br /&gt;
*MAIN_ENABLE_IMPORT_LINKED_OBJECT_LINES ► Allow to import lines into current document from &amp;quot;linked&amp;quot; compatible documents ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_FIRST_TO_UPPER ► Dolibarr add uppercase to Third Parties, contacts or members names if not done. Warning, with some languages (whose words with uppercase are not same words, or pagecode does not always have an uppercase, like cyrillic languages), this feature may alter your data.&lt;br /&gt;
&lt;br /&gt;
*MAIN_ALL_TO_UPPER ► Dolibarr puts uppercase for Third Parties, contacts or members names if not done. Warning, with some languages (whose words with uppercase are not same words, or pagecode does not always have an uppercase, like cyrillic languages), this feature may alter your data. ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_ALL_TOWN_TO_UPPER ► Dolibarr puts uppercase for town names if not done. ► (v13.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_FILESYSTEM_ENCODING ► With some PHP versions, PHP is not able to detect the page code for filesystem of the server OS. To solve this, Dolibarr assumes your OS filesystem is UTF-8 if on Linux or OSX system, and ISO-8859-1 if on Windows. If not, for example on a Windows server with a NTFS UTF-8 pagecode, you can set the variable &amp;lt;code&amp;gt;MAIN_FILESYSTEM_ENCODING&amp;lt;/code&amp;gt; to &amp;quot;&amp;lt;code&amp;gt;utf-8&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_FORCELANGDIR ► Relative path of the directory holding your custom &amp;lt;code&amp;gt;langs&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
*MAIN_HTML_TITLE ► Can be used to control how the html page title is formatted. If value contains key &#039;&amp;lt;code&amp;gt;noapp&amp;lt;/code&amp;gt;&#039;, application name will not be output. If value contains &#039;&amp;lt;code&amp;gt;thirdpartynameonly&amp;lt;/code&amp;gt;&#039;, on tab for thirdparties, only name of thirdparties are output. Value can be list of tags: &#039;&amp;lt;code&amp;gt;noapp;thirdpartynameonly&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
*MAIN_HELPCENTER_LINKTOUSE  ► Define the URL link to use as the target page for link &amp;quot;I need help&amp;quot; onto logon page&lt;br /&gt;
&lt;br /&gt;
*MAIN_LANDING_PAGE ► Can choose the first page to show after login (the landing page). This option works as a global option (llx_const) and per user option (llx_user_param). ► (v3.9+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_LOGOUT_GOTO_URL ► URL to which the user will be redirected after LOGOUT&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAXTABS_IN_CARD ► Maximum number of tabs visible. Others are grouped into a combo list.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAXLIST_OVERLOAD ► Maximum number of line in space&#039;s domaine.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING ► A warning saying setup of modules is not complete is shown if the number of enabled modules is lower or equal than this value (1 if not defined)&lt;br /&gt;
&lt;br /&gt;
*MAIN_NO_CONCAT_DESCRIPTION ► Allow to use only input custom description in lines (propale, order, invoice) ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_ONLY_LOGIN_ALLOWED ► Only the specified login is allowed to log in Dolibarr (maintenance mode).&lt;br /&gt;
&lt;br /&gt;
*MAIN_OPTIMIZE_SPEED ► Use some speed enhancements. See page [[FAQ Increase Performance]] for more information.&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROPAGATE_CONTACTS_FROM_ORIGIN ► When creating an order, contract, invoice from another object, specific contacts of objects are set as specific contact of the new object when possible. ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PUBLIC_NOTE_IN_ADDRESS ► Show public note in address block ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_REMOVE_INSTALL_WARNING ► Remove all security warnings that appear to administrator users if URL &amp;lt;code&amp;gt;/install&amp;lt;/code&amp;gt; is public. You should solve the problem if warning occurs, instead of removing the warning! For this, create a file called &amp;lt;code&amp;gt;install.lock&amp;lt;/code&amp;gt; into Dolibarr root directory. This will stop the warning but also make the page &amp;lt;code&amp;gt;/install&amp;lt;/code&amp;gt; not possible to use, to protect your installation.&lt;br /&gt;
&lt;br /&gt;
*MAIN_REPEATCONTACTONEACHTAB ► If added and set to 1, this adds contacts on all tabs, not only main tab.&lt;br /&gt;
&lt;br /&gt;
*MAIN_REPLACE_TRANS_xx_XX ► Where &amp;lt;code&amp;gt;xx_XX&amp;lt;/code&amp;gt; is language code. If value is &amp;lt;code&amp;gt;string1:newstring1;string2:newstring2&amp;lt;/code&amp;gt; then replace &amp;lt;code&amp;gt;string1&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;newstring1&amp;lt;/code&amp;gt; in all translation done for language &amp;lt;code&amp;gt;xx_XX&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND ► Change way of rounding total TTC lines, rounding first of after.&lt;br /&gt;
&lt;br /&gt;
*MAIN_SERVER_TZ ► If you can&#039;t set the timezone of your PHP installation, set this constant. Better is to set it to UTC. In future, this constant will be forced to &#039;UTC&#039; so PHP server timezone will not have effect anymore. Examples: &amp;lt;code&amp;gt;Europe/Paris&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;auto&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_SEARCH_FORM_ON_HOME_AREAS ► Show the search form on home page areas for core modules (Removed after v5 due to global search combo) ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE ► If only one result is found, then setting this value to 1 will take you direct to the item (default method).  Setting the value to 0 will show the result in the list as a single result ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_SERVICES_ARE_ECOMMERCE_200238EC ► If seller and buyer are in Europe and buyer is not a company, use the VAT of buying country.&lt;br /&gt;
&lt;br /&gt;
*MAIN_SHOW_TUNING_INFO ► Add tuning information into javascript console. Better when xdebug is enabled.&lt;br /&gt;
&lt;br /&gt;
*MAIN_SHOW_TECHNICAL_ID ► Show also technical IDs on elements cards or some lists (not supported everywhere).&lt;br /&gt;
&lt;br /&gt;
*MAIN_SHOWDATABASENAMEINHELPPAGESLINK ► Show database name in upper help menu ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_ALTERNATE_TRANSLATION_FOR ► List of fields per object that need an alternate translation.&lt;br /&gt;
&lt;br /&gt;
Example: MAIN_USE_ALTERNATE_TRANSLATION_FOR=societe:name,town;contact:firstname,lastname&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_HOURMIN_IN_DATE_RANGE ► On all entities lines (invoice, order, contract...), it is possible to add hour and minutes with date on fields &amp;quot;date start&amp;quot; and &amp;quot;date end&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_JQUERY_JEDITABLE ► Allow to update from screen, directly into database, some properties of elements (invoices, proposals, ...) using Ajax. This make response time faster, but avoid using this feature, because it bypasses some business actions (updates on other data that should be done consistently) and ignores business controls on data you saved. Consequently this feature breaks consistency of data and possibly the stability of the software.&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_JQUERY_MULTISELECT ► Allow to use Ajax when a choice that require multiselect is used (for the moment only external modules uses select box with multiselect values). Set the value to the jQuery plugin name to use (multiselect, multiple-select, select2…). Setting it to any other value will result in unwanted side-effects and/or bugs.&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_OLD_SEARCH_FORM ► Display the old search form in left menu.&lt;br /&gt;
&lt;br /&gt;
*MAIN_VAT_DEFAULT_IF_AUTODETECT_FAILS ► Allow to force the VAT rate to a given value (instead of higher VAT rate of country) if the VAT rate of product was not defined.&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_VAT_COMPANIES_IN_EEC_WITH_INVALID_VAT_ID_ARE_INDIVIDUAL ► If the buyer is a company that is in Europe but has no valid intracommunautary VAT ID, it is processed like if it is an individual, not a company. TODO: Must be implemented into accountancy module too instead of being set to 1 systematically into accountancy module.&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_VAT_OF_PRODUCT_FOR_INDIVIDUAL_CUSTOMER_OUT_OF_EEC ► For to use the default VAT of product for individual customers that are out E.E.C. (European Economic Community) ► (v7.0+). There is no reason to use this.&lt;br /&gt;
&lt;br /&gt;
*MAIN_VIEW_LINE_NUMBER ► Shows a line number for each line of products/services at documents like proposal / order / invoice. Only on screen, not on PDF.&lt;br /&gt;
&lt;br /&gt;
*MAIN_VIEW_LINE_NUMBER_IN_LIST ► Shows a line number in lists (v12.0).&lt;br /&gt;
&lt;br /&gt;
*MAIN_VOLUME_DEFAULT_ROUND ► Accuracy of volume (number of decimals)&lt;br /&gt;
&lt;br /&gt;
*MAIN_VOLUME_DEFAULT_UNIT ► Default unit for weight (0=kg, -3=g, ...)&lt;br /&gt;
&lt;br /&gt;
*MAIN_WEIGHT_DEFAULT_ROUND ► Accuracy of weight (number of decimals)&lt;br /&gt;
&lt;br /&gt;
*MAIN_WEIGHT_DEFAULT_UNIT ► Default unit for weight (0=kg, -3=g, ...)&lt;br /&gt;
&lt;br /&gt;
*USER_HIDE_INACTIVE_IN_COMBOBOX ► Disable display inactive users in combobox.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_PDF_THUMBS ► Disable thumbs PDF in case of imagick bug&lt;br /&gt;
&lt;br /&gt;
*MAIN_KEEP_REF_CUSTOMER_ON_CLONING ► Keep the Customer Reference on cloned object (Propal/Invoice)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DONT_KEEP_NOTE_ON_CLONING ► Remove the object notes during cloning ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DOC_SORT_FIELD ► Set the default sorting field on document page (name by default) ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DOC_SORT_ORDER ► Set the default sorting order (ASC or DESC) on document page (ASC by default) ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_ZIPTOWN_DICTIONNARY ► Use dictionnary ZIP for create card.&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_TOP_MENU_SEARCH_DROPDOWN ► Show search in top menu with theme eldy ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PHONE_SEPAR ► Separ phone number other space ►(v12.0)&lt;br /&gt;
&lt;br /&gt;
*GRAPH_USE_FISCAL_YEAR ► Widgets uses fiscal year&lt;br /&gt;
&lt;br /&gt;
*SHOW_SOCINFO_ON_PRINT ► Permit to add user company information on each printed document (when click on Dolibarr print button) ►(v12.0)&lt;br /&gt;
*MAIN_FEATURES_LEVEL ► Level of features to show: -1=stable+deprecated, 0=stable only (default), 1=stable+experimental, 2=stable+experimental+development&lt;br /&gt;
*MAIN_SHOW_TECHNICAL_ID ► Show tecnical id for object.&lt;br /&gt;
&lt;br /&gt;
*MAIN_HTTP_CONTENT_SECURITY_POLICY ► Allows you to fill in the content security rules ►(v6.0)&lt;br /&gt;
&lt;br /&gt;
*SOCIETE_ON_SEARCH_AND_LIST_GO_ON_CUSTOMER_OR_SUPPLIER_CARD ► Allow to change the link of the third party to customer/supplier card instead of contact card on List.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MODULE_SETUP_ON_LIST_BY_DEFAULT ► If set to &amp;quot;common&amp;quot; the setup module becomes list by defaut&lt;br /&gt;
*MAIN_PAGESIZE_CHOICES  ► Configure select field to choose number of lines displayed on listing (10:10,15:15,20:20,30:30,40:40,50:50,100:100,250:250,500:500,1000:1000,5000:5000).&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_TOP_MENU_QUICKADD_DROPDOWN ► Add a dropdown menu with shortcuts to create new objects ►(v13.0)&lt;br /&gt;
*MAIN_EMAILCOLLECTOR_MAIL_WITHOUT_HEADER ► Remove the header stored by email collector ►(v13.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_VAT_OF_PRODUCT_FOR_COMPANIES_IN_EEC_WITH_INVALID_VAT_ID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*SELLYOURSAAS_ENABLE_OPTINMESSAGES&lt;br /&gt;
*MAIN_OPTIMIZEFORTEXTBROWSER&lt;br /&gt;
*MAIN_CREATEFROM_KEEP_LINE_ORIGIN_INFORMATION&lt;br /&gt;
*ALLOW_USE_KITS_INTO_BOM_AND_MO&lt;br /&gt;
*API_DISABLE_LOGIN_API&lt;br /&gt;
*MAIN_NB_OF_YEAR_IN_WIDGET_GRAPH&lt;br /&gt;
&lt;br /&gt;
=Security Options=&lt;br /&gt;
&lt;br /&gt;
*MAIN_SECURITY_ANTI_SSRF_SERVER_IP ► Can set a complete list of IPs of server.&lt;br /&gt;
&lt;br /&gt;
*MAIN_SECURITY_CSRF_WITH_TOKEN ► Activate a second anti-CSRF protection on POST (so a POST from another web site can&#039;t be done). Note there is already a default protection using test on referrer. This second protection uses TOKEN on forms and is more powerful. ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_MODULES_FOR_EXTERNAL ► Limit available modules for external users. By default value is &#039;&amp;lt;code&amp;gt;facture,commande,contact,propal,projet,contrat,societe,ficheinter,expedition,agenda&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
*MAIN_ALLOW_SVG_FILES_AS_IMAGES ► Allow to use SVG file as image files. Warning: This may introduce security vulnerability (javascript can be embedded into SVG file).&lt;br /&gt;
&lt;br /&gt;
*MAIN_RESTRICTHTML_ONLY_VALID_HTML ► Refused parameter if value is not a valid HTML content.&lt;br /&gt;
&lt;br /&gt;
*MAIN_RESTRICTHTML_REMOVE_ALSO_BAD_ATTRIBUTES ► Sanitize also non standard attributes on HTML content.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Accountancy Module=&lt;br /&gt;
&lt;br /&gt;
*ACCOUNTANCY_COMBO_FOR_AUX ► Add graphic option for ACCOUNTANCY_COMBO_FOR_AUX. Having this option on may slow down and even freeze the accounting features if you have a very large number of thirdparties ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
=Agenda Module=&lt;br /&gt;
&lt;br /&gt;
*AGENDA_ALL_CALENDARS ► Change the default view of calendar pages to see all the Agenda&#039;s (instead or yours only be default)&lt;br /&gt;
&lt;br /&gt;
*AGENDA_AUTOSET_END_DATE_WITH_DELTA_HOURS ► To automatically set end date of event to start date + delta on event creation page.&lt;br /&gt;
&lt;br /&gt;
*AGENDA_DISABLE_LOCATION ► Disable location field in action card  ► (&amp;gt;=v5.0)&lt;br /&gt;
&lt;br /&gt;
*AGENDA_MAX_EVENTS_DAY_VIEW ► Define the maximum number of visible entries for each day in agenda. Default value is 3. Value 0 means no limit.&lt;br /&gt;
&lt;br /&gt;
*AGENDA_USE_EVENT_TYPE ► Add a mandatory field &amp;quot;Type&amp;quot; when creating an event (deprecated).&lt;br /&gt;
&lt;br /&gt;
*MAIN_ADD_EVENT_ON_ELEMENT_CARD ► Allow to create an event from a document (proposal, order, invoice)&lt;br /&gt;
&lt;br /&gt;
*AGENDA_SUPPORT_PRIORITY_IN_EVENTS ► Allow to have priorities in events&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Bank Module=&lt;br /&gt;
&lt;br /&gt;
*BANK_CAN_RECONCILIATE_CASHACCOUNT ► Can reconciliate cash accounts ► (v3.8)&lt;br /&gt;
&lt;br /&gt;
*BANK_DISABLE_CHECK_DEPOSIT ► Disable check deposit feature&lt;br /&gt;
&lt;br /&gt;
*BANK_ASK_PAYMENT_BANK_DURING_ORDER ► Ask bank account during creation of an order&lt;br /&gt;
&lt;br /&gt;
*BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL ► Ask bank account during creation of a proposal&lt;br /&gt;
&lt;br /&gt;
*BANK_USE_OLD_VARIOUS_PAYMENT ► To allow to enter miscellaneous payments (not covered by other modules) using old method. Deprecated. Entering various payment is preferred (v12.0-).&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Inalterable Log Module=&lt;br /&gt;
&lt;br /&gt;
*BLOCKEDLOG_ADD_ACTIONS_SUPPORTED ► Can complete list of triggered action that are logged&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Contracts=&lt;br /&gt;
&lt;br /&gt;
*CONTRACT_SUPPORT_PRODUCTS ► Products are also suggested into module contract.&lt;br /&gt;
*&lt;br /&gt;
*CONTRACT_ALLOW_EXTERNAL_DOWNLOAD&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Cron module=&lt;br /&gt;
&lt;br /&gt;
*CRON_DISABLE_KEY_CHANGE ► When you provide an instance to a customer, you probably also add an entry in the cron of this user so Dolibarr batch and scheduler can work correctly. For security purpose, it may have a security key that is inside the command line into the cron entry and this entry must match the value defined into Dolibarr setup (setup of module &#039;Scheduled Jobs&#039;). Because, a customer of a Saas platform will probably have no access to edit the cron file, it is also import that he has no way to edit the key into the Dolibarr setup, so the key in the cron command line will always match the key in Dolibarr setup, and the Dolibarr batches will executed without security errors. To be sure, the customer does not change the value, you can set this constant to 1 into the table [[Table_llx_const]].&lt;br /&gt;
&lt;br /&gt;
*CRON_DISABLE_TUTORIAL_CRON ► Disable the tutorial about how to install the cron script (on a SaaS hosting, this should be done by the web hosting provider)&lt;br /&gt;
&lt;br /&gt;
*CRON_WARNING_DELAY_HOURS ► Set this value to the frequency set for the cron script (so a warning will be shown to user to warn it about max frequency of its scheduled jobs)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Direct Debit Orders=&lt;br /&gt;
&lt;br /&gt;
*WITHDRAWAL_ALLOW_ANY_INVOICE_STATUS ► If this option is set, all invoices status (even already paid) may appear on the list of invoices qualified for a direct debit payment. This is the list of invoices with a payment request done, and not linked to a direct debit payment. By default, only &amp;quot;unpayed&amp;quot; invoices are used to avoid to pay twice the same invoice.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Donation Module=&lt;br /&gt;
&lt;br /&gt;
*DONATION_USE_THIRDPARTIES ► If this option is set, a thirdparty field appear on donation forms.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
=Email and SMS=&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAILFORM_DISABLE_ENTERKEY ► Activate javascript code to disable the enter key in the MAIL form. ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*MAIL_PREFIX_FOR_EMAIL_ID ► Prefix for the mails ID. Default value is &amp;lt;code&amp;gt;$_SERVER[&amp;quot;SERVER_NAME&amp;quot;]&amp;lt;/code&amp;gt; ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_DEBUG ► Write content with header of last mail into file &amp;lt;code&amp;gt;dolibarr_mail.log&amp;lt;/code&amp;gt; into directory &amp;lt;code&amp;gt;dolibarr_main_data_root&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_SMS_DEBUG ► Write content of SMS sent into file &amp;lt;code&amp;gt;dolibarr_sms.log&amp;lt;/code&amp;gt; into directory &amp;lt;code&amp;gt;dolibarr_main_data_root&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_ALLOW_SENDMAIL_F ► On Linux or BSD system, PHP email function use the command sendmail local to server. In some cases, the sender email must be provided on command line of sendmail with option &amp;lt;code&amp;gt;-f&amp;lt;/code&amp;gt;. This option is here to ask Dolibarr to call the function mail of PHP by adding value for the option &amp;lt;code&amp;gt;-f&amp;lt;/code&amp;gt;. Note that in most cases, even with sendmail, sender email is correctly managed as it is added in the email technical header. This option is here only for rare setup of sendmail that ask the -f option to be mandatory or for sendmail setup that does not use by default the Return-path of header email to define the sender (with this option, the return-path will be provided also on command line and not lost by sendmail).&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_SENDMAIL_FORCE_BA ► On Linux or BSD system, PHP email function use the command sendmail local to server. In some case, we want to recipient to be provided to sendmail into the email content instead of its command line parameter. For this we must add the -ba parameter to sendmail. This option asks PHP to provide this parameter when sending a mail. Note that another solution is to edit the mail.force_extra_parameters=-ba into &amp;lt;code&amp;gt;php.ini&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_NO_FULL_EMAIL ► Recipient email and sender are cleaned to be on form &amp;quot;&amp;lt;email&amp;gt;&amp;quot; instead of &amp;quot;Name &amp;lt;email&amp;gt;&amp;quot;. This might solve problem of compatibility with very old mailers.&lt;br /&gt;
&lt;br /&gt;
*MAIN_FIX_FOR_BUGGED_MTA ► Some MTA agent are bugged and add some CR chars each time they saw a LF. Because Dolibarr emails are forged to be already cleaned, if MTA agent do that, you will send an email with two CR chars. This may result in having recipient not able to read your email. To fix this, add this constant to 1. Dolibarr will then create an email that is not RFC compliant but because the MTA agent is bugged, the email will be modified and become correct during sending, solving the problem of bad email received. Add this constant if your recipient experience problems when opening email for example users using webmail of &amp;lt;code&amp;gt;orange.fr&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;hotmail.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_DO_NOT_USE_SIGN ► Do not add user signature at end of suggested pre-defined email&lt;br /&gt;
&lt;br /&gt;
*MAIL_FORCE_DELIVERY_RECEIPT_INVOICE ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Invoice&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*MAIL_FORCE_DELIVERY_RECEIPT_ORDER ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Order&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*MAIL_FORCE_DELIVERY_RECEIPT_PROPAL ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Proposal&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*MAIN_EMAIL_USECCC ► 1 = Show field BCC into email forms, If email = Show BCC prefilled with email.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_AUTOCOPY_PROPOSAL_TO, MAIN_MAIL_AUTOCOPY_ORDER_TO, MAIN_MAIL_AUTOCOPY_INVOICE_TO ► Email to use as a BCC recipient when sending email for proposal, order or invoice. You can make this value visible by setting MAIN_EMAIL_USECCC (to 1 or to another email, see previous point)&lt;br /&gt;
&lt;br /&gt;
*MAIN_EMAIL_ADD_TRACK_ID ► When value is 1 (this is also default value if option is not set): The record &amp;quot;Message-id&amp;quot; added into smtp header includes a tracking id to define where the email was sent from. When value is 2: you send an email from third party card, the sender email is completed with the email source tracking string  &amp;quot;+thiXXX&amp;quot; on email (your email will be sent with the &amp;quot;From&amp;quot; that is myname+thi123@mycompany.com). So when user receiving email will make &amp;quot;Answer&amp;quot;, email will be sent to myname@mycompany.com but with the tracking id included (into header or into target email), allowing you to know to which third party or object, the email exchange is related to.&lt;br /&gt;
&lt;br /&gt;
*MAIL_MAX_NB_OF_RECIPIENTS_IN_SAME_EMAIL ► Restrict sending of 1 email message to &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; recipients for same email message (x for To: + CC: + BCC:). If not defined, value is &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;. Required to fight against spamming that include 1000 recipients in 1 message. Note that MAIL_MAX_NB_OF_RECIPIENTS_TO_IN_SAME_EMAIL, MAIL_MAX_NB_OF_RECIPIENTS_CC_IN_SAME_EMAIL and MAIL_MAX_NB_OF_RECIPIENTS_BCC_IN_SAME_EMAIL are also available.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_FORCE_CONTENT_TYPE_TO_HTML ► Force to send all email (event with text only content) as HTML formatted email.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_USE_MULTI_PART ► Forge email content using an alternate text part ► (for 5.0.2+). By default with 6.0+&lt;br /&gt;
*MAIN_INFO_SOCIETE_MAIL_ALIASES ► add address aliases for the from field on mail. Set his value with &amp;quot;Firstname Name &amp;lt;firstname.lastname@mydomain.tld, Otherfirstname OtherlastName &amp;lt;othermail@mydomain.tld&amp;gt;,...&amp;quot; ► (v5.0.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_ADD_INLINE_IMAGES_IF_IN_MEDIAS ► If images were stored into the medias directory from CKEditor, then images into emails are replaced with &amp;quot;inline content&amp;quot;. This may increase seriously risk of being detected as SPAM.&lt;br /&gt;
&lt;br /&gt;
*MAIN_COPY_FILE_IN_EVENT_AUTO ► Add attachement document on event auto generated by sending email from dolibarr. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_EXTERNAL_SMTP_CLIENT_IP_ADDRESS ► (A better name of this option should be MAIN_EXTERNAL_MAIL_CLIENT_IP_ADDRESS). Set here the list of IPs where your Dolibarr instances are hosted. So when your customer go into the setup area of email:&lt;br /&gt;
**If he chose mail method, a message will explain him how to setup its SPF record for its email domain (showing the list of IP). This is to avoid to have its emails, sent from its Dolibarr instance, fails due to strict antispam rule of some emailing servers.&lt;br /&gt;
**If he chose smtp method, a message will explain him the list of IP he can use if there is restriction on IP by the SMTP agent. If you also need to add a message to help SPF setup, see option MAIN_EXTERNAL_SMTP_SPF_STRING_TO_ADD.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_ENABLED_USER_DEST_SELECT ► Show also internal users into list of recipients of email in email sending form ► (v8.0+)&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Emailing Module=&lt;br /&gt;
&lt;br /&gt;
*MAILING_PREFIX_FOR_EMAIL_ID ► Set the value that will be used to compose the &amp;quot;Email ID&amp;quot; into email headers. If you set this value to &#039;&amp;lt;code&amp;gt;SERVER_NAME&amp;lt;/code&amp;gt;&#039;, the virtual host of web server will be used. By default, this is not defined, so a hash key, unique to each instance, is used.&lt;br /&gt;
&lt;br /&gt;
*MAILING_NO_USING_PHPMAIL ► If set, the module emailing can&#039;t be used with mail setup of &amp;quot;phpmail&amp;quot;. Using a thirdparty SMTP server is required. You can complete warning message by adding an email to contact for setup help with constant MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS.&lt;br /&gt;
&lt;br /&gt;
*MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS ► Contains the email of contact to show into the message visible to a user when he try to use emailing module without SMTP server and if option MAILING_NO_USING_PHPMAIL is set to on.&lt;br /&gt;
&lt;br /&gt;
*MAILING_LIMIT_WARNING_PHPMAIL ► Show a warning message (var contains the &#039;&#039;&#039;message to show&#039;&#039;&#039;, or &#039;&#039;&#039;translation key&#039;&#039;&#039;) on emailing send form if setup is on &amp;quot;phpmail&amp;quot;. Note: The application always try to translation the message considering the message is a translation key, before showing the translation or message if translation was not found.&lt;br /&gt;
&lt;br /&gt;
*MAILING_LIMIT_WARNING_NOPHPMAIL ► Show a warning message (var contains the &#039;&#039;&#039;message to show&#039;&#039;&#039;, or &#039;&#039;&#039;translation key&#039;&#039;&#039;) on emailing send form if setup is something else than &amp;quot;phpmail&amp;quot;. Note: The application always try to translation the message considering the message is a translation key, before showing the translation or message if translation was not found.&lt;br /&gt;
*EMAILING_USE_ADVANCED_SELECTOR ► Enable the advanced selector for recipients.&lt;br /&gt;
&lt;br /&gt;
*MAILING_LIMIT_SENDBYWEB ► Restrict number of emails you can send in same sending session with emailing module from GUI. The value &amp;quot;&amp;lt;code&amp;gt;dolibarr_mailing_limit_sendbyweb&amp;lt;/code&amp;gt;&amp;quot; if defined into config file is used in priority for this limit. A negative value means, sending by web is forbidden.&lt;br /&gt;
&lt;br /&gt;
*MAILING_LIMIT_SENDBYCLI ► Restrict number of emails you can send in same sending session with emailing module from CLI script. The value &amp;quot;&amp;lt;code&amp;gt;dolibarr_mailing_limit_sendbycli&amp;lt;/code&amp;gt;&amp;quot; if defined into config file is used in priority for this limit.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Expense Report=&lt;br /&gt;
&lt;br /&gt;
*EXPENSEREPORT_ALLOW_OVERLAPPING_PERIODS ► Can enter several expense reports on same or overlapping date periods. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*EXPENSEREPORT_OVERRIDE_VAT ► Setting this constant to 1 will allow expense reports to show VAT even if the global VAT setting is off ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*EXPENSEREPORT_USE_OLD_NUMBERING_RULE ► The module Expense Report use numbering rules that you can setup (like other modules do). If you need to keep the hard-coded numbering rule of expenses report used in v6.0 set this constant to 1 ► (&amp;gt;=v7.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_EXPENSE_IK ► This feature allows you to set index kilometers against a mileage index for different types of vehicles. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_EXPENSE_RULE ► This feature allows you to set a variety of rules per user/group/all so they can only create reports within their limits. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Export Module=&lt;br /&gt;
&lt;br /&gt;
*EXPORT_CSV_SEPARATOR_TO_USE ► String value to use as default separator to delimit fields of exported files (by default Dolibarr uses &amp;quot;&amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;&amp;quot;). Example: EXPORT_CSV_SEPARATOR_TO_USE=&amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*EXPORT_CSV_FORCE_CHARSET ► Choose the charset used in the output file built by the CSV exporter. By default it is ISO-8859-1. Example: EXPORT_CSV_FORCE_CHARSET= &amp;lt;code&amp;gt;utf-8&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*EXPORTTOOL_CATEGORIES ► Can export categories (several lines) into one column with the &amp;quot;product export profile&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*USE_STRICT_CSV_RULES ► Use strict/real CSV format for export. Do not clean/replace CR+LF with &#039;\n&#039; but quote them using the escaping CSV char (&amp;lt;code&amp;gt;&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*EXPORTS_SHARE_MODELS  ► Share export models between users.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Foundation Module=&lt;br /&gt;
&lt;br /&gt;
*MEMBER_URL_REDIRECT_SUBSCRIPTION ► Link called and shown when a member account is autocreated in member module by a guest user.&lt;br /&gt;
&lt;br /&gt;
*MEMBER_EXT_URL_SUBSCRIPTION_INFO ► Link of external page pointed by the &amp;quot;Show here&amp;quot; link added in front of payment cell, into the page to make online subscription.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Interventions Module=&lt;br /&gt;
&lt;br /&gt;
*FICHINTER_CLASSIFY_BILLED► Allow to classify an intervention card as &amp;quot;Billed&amp;quot;. This add also trigger &amp;lt;code&amp;gt;FICHINTER_CLASSIFY_BILLED&amp;lt;/code&amp;gt; into list of possible automatic event into agenda.&lt;br /&gt;
&lt;br /&gt;
*FICHINTER_DISABLE_DETAILS► Disable entry of details line on intervention. Can validate with no line.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Invoice Module=&lt;br /&gt;
&lt;br /&gt;
*MAIN_DEPOSIT_MULTI_TVA ► In deposits invoice, creates one line per VAT rate from the origin document ► (6.0)&lt;br /&gt;
&lt;br /&gt;
*FACTURE_SHOW_SEND_REMINDER ► Show link &amp;quot;Send reminder by mail&amp;quot;, same feature than &amp;quot;Send by mail&amp;quot; &#039;&#039;(obsolete feature)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
*INVOICE_CAN_ALWAYS_BE_EDITED ► Allow to edit invoices even if payment was started. Note: If the module &amp;quot;BlockedLog&amp;quot; is active (required in some countries for legal reasons), this will not change content of archived logs tracked by this module. By definition there is no way to change or remove archived records. It will just update data in your application and a new record to track your change into the read-only archive log.&lt;br /&gt;
&lt;br /&gt;
*INVOICE_CAN_ALWAYS_BE_REMOVED ► Allow to always delete invoices (even if invoice is not last one). Note: If the module &amp;quot;BlockedLog&amp;quot; is active (required by some countries for legal reason), this will not change content of archived logs tracked by this module. By definition there is no way to change or remove archived records. It will just update data in your application and a new record to track your change into the read-only archive log.&lt;br /&gt;
&lt;br /&gt;
*INVOICE_CAN_NEVER_BE_REMOVED ► Never allow to delete invoices (except draft invoices).&lt;br /&gt;
&lt;br /&gt;
*INVOICE_POSITIVE_CREDIT_NOTE ► All amounts on PDF credit notes are positive.&lt;br /&gt;
&lt;br /&gt;
*FACTURE_DEPOSITS_ARE_JUST_PAYMENTS ► Treats deposit invoices as a special case. Deposit invoices don&#039;t get counted on turnover. They are then applied as a payment, like a discount, on the final invoice. By default, when you include the deposit into draft of final invoice, the amount of final invoice is reduced. With this option, final amount is not reduced but a payment is registered. WARNING: In a lot of european countries, using this option is not allowed.&lt;br /&gt;
&lt;br /&gt;
*FACTURE_SENDBYEMAIL_FOR_ALL_STATUS ► Can send invoice by email to customer even if invoice has status &amp;quot;draft&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*INVOICE_CREDIT_NOTE_STANDALONE ► Start implementation to allow a credit note even without invoice (dangerous) ► (v3.9)&lt;br /&gt;
&lt;br /&gt;
*INVOICE_USE_SITUATION ► Enable the &amp;quot;situation invoice&amp;quot; feature&lt;br /&gt;
&lt;br /&gt;
*INVOICE_USE_SITUATION_CREDIT_NOTE ► Enable the &amp;quot;situation credit note&amp;quot; feature (need &amp;lt;code&amp;gt;INVOICE_USE_SITUATION&amp;lt;/code&amp;gt;) ► (v8.0)&lt;br /&gt;
&lt;br /&gt;
*INVOICE_DISABLE_DEPOSIT ► Disable deposit invoices&lt;br /&gt;
&lt;br /&gt;
*INVOICE_DISABLE_REPLACEMENT ► Disable replacement invoices&lt;br /&gt;
&lt;br /&gt;
*INVOICE_DISABLE_CREDIT_NOTE ► Disable credit notes&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT ► See PDF option&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_COLUMN ► See PDF options&lt;br /&gt;
&lt;br /&gt;
*WORKFLOW_BILL_ON_SHIPMENT ► Change label of button with suitable label when you need to create invoice on shipments&lt;br /&gt;
&lt;br /&gt;
*INVOICE_ALLOW_EXTERNAL_DOWNLOAD ► When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. Use the tag __DIRECTDOWNLOAD_URL_INVOICE__ in email template to insert it. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*INVOICE_POINTOFTAX_DATE ► Add Point of Tax Date on invoices for country-specific legality reasons ► (v4.0+)&lt;br /&gt;
*FACTURE_ENABLE_NEGATIVE ► Can validate an invoice when amount is negative&lt;br /&gt;
&lt;br /&gt;
*FACTURE_ENABLE_NEGATIVE_LINES ► Allows to add negative lines to an invoice ► (v8.0.2+)&lt;br /&gt;
&lt;br /&gt;
*INVOICE_USE_DEFAULT_DOCUMENT ► Allow user to select a default invoice documents models according to invoice type. On invoice create page, the model is dynamically changed on invoice type selection. ► (v9.0+)&lt;br /&gt;
&lt;br /&gt;
*FACTURE_REUSE_NOTES_ON_CREATE_FROM ► Reuse the Public Note and Private note of the previous object (Proposal,...) when creating the bill.&lt;br /&gt;
*FACTUREFOURN_REUSE_NOTES_ON_CREATE_FROM ► Reuse the Public Note and Private note of the previous object when creating the supplier bill ► (V13.0)&lt;br /&gt;
*MAIN_SHOW_FACNUMBER_IN_DISCOUNT_LIST ► Display the reference of credit notes in discount list when creating the bill.&lt;br /&gt;
*INVOICE_ALLOW_FREE_REF ► Apability to change reference of an invoice. This will be possible as long as the invoice has the status “Draft” and only if your country is not in Europe(V11)&lt;br /&gt;
&lt;br /&gt;
*INVOICE_DISALLOW_REOPEN&lt;br /&gt;
&lt;br /&gt;
*INVOICE_MAX_FUTURE_DELAY ► Numbers of days allowed for billing in the future ► (V14.0)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Leave=&lt;br /&gt;
&lt;br /&gt;
*MAIN_NON_WORKING_DAYS_INCLUDE_SATURDAY ► Set this value to 0 if you want to have the saturday as a working day&lt;br /&gt;
*MAIN_NON_WORKING_DAYS_INCLUDE_SUNDAY ► Set this value to 0 if you want to have the sunday as a working day&lt;br /&gt;
&lt;br /&gt;
=Look or Theme=&lt;br /&gt;
&lt;br /&gt;
*MAIN_FAVICON_URL ► favicon url&lt;br /&gt;
&lt;br /&gt;
*MAIN_EASTER_EGG_COMMITSTRIP ► Show a comic image from the CommitStrip website. Images are refreshed daily. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_STATUS_USES_CSS ► (v10.0+) Change status design using new style&lt;br /&gt;
&lt;br /&gt;
*MAIN_APPLICATION_DISABLED_STATEBOARD ► Hide the stateboard of the main page&lt;br /&gt;
&lt;br /&gt;
*MAIN_APPLICATION_DISABLED_WORKBOARD ► Hide the workboard of the main page&lt;br /&gt;
&lt;br /&gt;
*MAIN_INCLUDE_GLOBAL_STATS_IN_OPENED_DASHBOARD ► (v11.0+) This conf will auto remove global stats box item if there are already in the new dashboard of opened elements and keep displayed stats on the opened item box (not only on mouse over)&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_TOP_MENU_SEARCH_DROPDOWN ► (v11.0+) actually only for eldy theme, this conf move search input  to top menu and use new design too&lt;br /&gt;
&lt;br /&gt;
*THEME_AGRESSIVENESS_RATIO ► (v11.0+) this conf can be used to increase/decrease agressiveness of colors. Value 0 is medium, value is between -100 (light grey colors) to +100 (very flashy colors)&lt;br /&gt;
&lt;br /&gt;
*THEME_SHOW_BORDER_ON_INPUT&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=MultiCurrency=&lt;br /&gt;
&lt;br /&gt;
*MAIN_MULTICURRENCY_ALLOW_SYNCHRONIZATION ► Enable CurrencyLayer API synchronization&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Order Module=&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_PROPAL_REFCLIENT_FOR_ORDER =&amp;gt; Copy customer reference from proposal to order. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*ORDER_REQUIRE_SOURCE =&amp;gt; Make the input field &amp;quot;Source of order&amp;quot; mandatory.&lt;br /&gt;
&lt;br /&gt;
*ORDER_VALID_AFTER_CLOSE_PROPAL =&amp;gt; When an order is created on a proposal close, the order is directly defined with status &amp;quot;Validated&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*ORDER_ALLOW_EXTERNAL_DOWNLOAD =&amp;gt; When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*ORDER_ENABLE_NEGATIVE =&amp;gt; Can validate an order when amount is negative&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_PROPAGATE_EXTRAFIELDS_TO_ORDER =&amp;gt; Copy also extrafields from thirdparty to order (if name match). ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=PDF Options=&lt;br /&gt;
&lt;br /&gt;
*MAIN_ADD_PDF_BACKGROUND ► Define this constant with short name of a PDF file (example &amp;quot;&amp;lt;code&amp;gt;mypdf.pdf&amp;lt;/code&amp;gt;&amp;quot;) that must be saved into directory &amp;quot;&amp;lt;code&amp;gt;documents/mycompany&amp;lt;/code&amp;gt;&amp;quot;. This will add PDF as a background of some of your generated PDF files (proposals,invoices,orders). If you need to concat PDF, see instead [[Module Concat PDF]].&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_FORCE_SAVEAS ► If your browser always asks to save downloaded files on disk (like PDF), try this this option. File may be displayed directly in your browser.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_PDF_AUTOUPDATE ► Disable automatic generation of PDF each time we add/update/delete a product line (we can still build document by clicking on &amp;quot;Generate&amp;quot;). This option may increase interface speed on servers with low CPU.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_PDF_COMPRESSION ► Disable PDF compression.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DOCUMENTS_LOGO_HEIGHT ► Can force height of the logo on PDF.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DOCUMENTS_WITH_PICTURE_WIDTH ► Can change size of picture when hidden option &amp;lt;code&amp;gt;MAIN_GENERATE_PROPOSALS_WITH_PICTURE&amp;lt;/code&amp;gt; is used. By default value is &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS ► Adding the company address at the bottom of the page. Disabled by default&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_PROPOSALS_WITH_PICTURE ► Include the first image of the product into the line of the generated PDF for customer proposals.&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_INVOICES_WITH_PICTURE ► Include the first image of the product into the line of the generated PDF for customer invoices.&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_SUPPLIER_PROPOSAL_WITH_PICTURE ► Include the first image of the product into the line of the generated PDF for supplier proposals ► (v5.0.3+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT ► Disable VAT on generated documents. like for an association. (Works with crabe template)&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_COLUMN ► Hide column with VAT information but only column not total.&lt;br /&gt;
&lt;br /&gt;
*MAIN_INVERT_SENDER_RECIPIENT ► Invert sender and recipient in some PDF. Note: This option is set automatically if country if Germany.&lt;br /&gt;
&lt;br /&gt;
*MAIN_ODT_AS_PDF ► Activate ODT to PDF conversion. Value can be &amp;quot;libreoffice&amp;quot; or &amp;quot;unoconv&amp;quot;. Do not use value &#039;&#039;&#039;&amp;lt;nowiki/&amp;gt;&#039;jodconverter&#039;&amp;lt;nowiki/&amp;gt;&#039;&#039;&#039; any more, as it is declared deprecated and partly not functional, use value &#039;&#039;&#039;&amp;lt;nowiki/&amp;gt;&#039;libreoffice&#039;&#039;&#039;&#039; instead, it requires only &#039;&#039;&#039;soffice&#039;&#039;&#039; (OpenOffice or LibreOffice) installed on server (use &#039;&#039;&#039;apt install soffice libreoffice-common libreoffice-writer&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
If you got this error: javaldx failed! Warning: failed to read path from javaldx with no return to prompt when running soffice --headless -env:UserInstallation=file:&amp;quot;/tmp&amp;quot; --convert-to pdf --outdir xxx ./yyy.odt, check that directory defined into env:UserInstallation parameters exists and is writeable.&lt;br /&gt;
&lt;br /&gt;
You may also have a look at this page if your server is on Windows: [[Générer automatiquement des documents PDF à partir de fichier ODT avec Doliwamp]]&lt;br /&gt;
&lt;br /&gt;
*MAIN_ODT_AS_PDF_DEL_SOURCE ► For ODT generation. If set, then initial behaviour is conserved but ODT file is removed when option to convert it as PDF (see previous) is on. Disabled by default&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_FORCE_FONT ► To ignore font defined into language file and force usage of a particular font. For example &amp;quot;&amp;lt;code&amp;gt;DejaVuSans&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_FORCE_FONT_SIZE ► To force size of font (by default 10). For example &amp;quot;&amp;lt;code&amp;gt;12&amp;lt;/code&amp;gt;&amp;quot; ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_FREETEXT_HEIGHT ► Change height of space reserved to output the free text.&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_TITLE_BACKGROUND_COLOR ► Can define a background color onto title line. Example: &amp;lt;code&amp;gt;220,220,200&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_USE_LARGE_LOGO ► Use the original logo with its higher resolution into the PDF instead of the small thumb. This may lead to very very large PDF !&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_BACKGROUND_ON_PDF ► Define this constant with short name of an image (example &amp;quot;&amp;lt;code&amp;gt;myimage.jpg&amp;lt;/code&amp;gt;&amp;quot;) that must be saved into directory &amp;quot;&amp;lt;code&amp;gt;documents/mycompany/logos&amp;lt;/code&amp;gt;&amp;quot;. This will add this background image into your generated PDF files. Warning: This option make TCPDF library being crazy sometime and content on image disappeared!&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_COMPANY_NAME_OF_CONTACT ► Use contact name and information rather than company&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_ADDALSOTARGETDETAILS ► If 1, add details of reipient on generated PDFs (email, fax, url and phone). Can be useful in cases where a printed order/invoice etc is given to a delivery driver/courier etc.&lt;br /&gt;
&lt;br /&gt;
*MAIN_TVAINTRA_IN_SOURCE_ADDRESS ► Show VAT N° in source address of PDF to comply with legalities in certain countries. Note that VAT number should be already visible in footer of page ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING ► Add optional esign field in pdf propal ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID1_IN_SOURCE_ADDRESS ► Show Professional ID 1 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID2_IN_SOURCE_ADDRESS ► Show Professional ID 2 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID3_IN_SOURCE_ADDRESS ► Show Professional ID 3 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID4_IN_SOURCE_ADDRESS ► Show Professional ID 4 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID5_IN_SOURCE_ADDRESS ► Show Professional ID 5 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID6_IN_SOURCE_ADDRESS ► Show Professional ID 6 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*PDF_BANK_HIDE_NUMBER_SHOW_ONLY_BICIBAN ► Hide bank number (&amp;quot;code banque/guichet/compte&amp;quot; for France, &amp;quot;sort code/account number&amp;quot; for GB, ...) and keep only BIC/IBAN on PDF.&lt;br /&gt;
&lt;br /&gt;
*PDF_BOLD_PRODUCT_REF_AND_PERIOD ► Add more visibility (bold) on product ref and period of service in desc. ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*PDF_HIDE_PRODUCT_REF_IN_SUPPLIER_LINES ► Modify the use/position of Supplier Ref/Internal Ref with the item Label (name) on PDF documents.&lt;br /&gt;
&lt;br /&gt;
Default (constant not set or Value &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;): Internal ref followed by supplier ref in brackets.&amp;quot;COMPANY-REF-001 (Vendor SKU SUPPLIER-REF-001) - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Value &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;: Supplier ref only eg.&amp;quot;SUPPLIER-REF-001 - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Value &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;: Supplier ref followed by internal ref in brackets. eg.&amp;quot;SUPPLIER-REF-001 (InternalRef COMPANY-REF-001) - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME ► Include alternative/alias name into name on PDF.&lt;br /&gt;
&lt;br /&gt;
*PDF_SECURITY_ENCRYPTION ► Encrypt PDF produced by dolibarr ► (v?) . See additional parameters :PDF_SECURITY_ENCRYPTION_RIGHTS (block &#039;modify&#039; or &#039;copy&#039;) - PDF_SECURITY_ENCRYPTION_USERPASS - PDF_SECURITY_ENCRYPTION_OWNERPASS (random if not specified) - PDF_SECURITY_ENCRYPTION_STRENGTH (0 = RC4 40 bit; 1 = RC4 128 bit; 2 = AES 128 bit; 3 = AES 256 bit) - PDF_SECURITY_ENCRYPTION_PUBKEYS Array of recipients containing public-key certificates (&#039;c&#039;) and permissions (&#039;p&#039;) - For example: array(array(&#039;c&#039; =&amp;gt; &#039;file://../examples/data/cert/tcpdf.crt&#039;, &#039;p&#039; =&amp;gt; array(&#039;print&#039;)))&lt;br /&gt;
&lt;br /&gt;
*PDF_SHOW_PROJECT ► Show project onto PDF (supported on supplier order only for the moment)&lt;br /&gt;
&lt;br /&gt;
*PDF_USE_1A ► PDF files produced by dolibarr respect PDF/A standard ► (v?)&lt;br /&gt;
&lt;br /&gt;
*PDF_USE_ALSO_LANGUAGE_CODE ► The value of this constant must be a language code (&#039;fr_FR&#039;, &#039;en_US&#039;, &#039;sa_SA&#039;, ...). If set, the PDF document will contains both language (default and the one defined by the constant).&lt;br /&gt;
*DOC_SHOW_FIRST_SALES_REP ► Show the sales representant on header (at least on propal azur and rubis template)&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*SHOW_SUBPRODUCT_REF_IN_PDF&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Point of Sale (POS)=&lt;br /&gt;
&lt;br /&gt;
*CASHDESK_SHOW_KEYPAD ► Show a mouse key pad into the &#039;Simple Point of Sale&#039; module.&lt;br /&gt;
&lt;br /&gt;
*POS_ADDON ► Set this value to an existing numbering module rule (for example &#039;&amp;lt;code&amp;gt;mod_facture_terre&amp;lt;/code&amp;gt;&#039;, &#039;&amp;lt;code&amp;gt;mod_facture_mars&amp;lt;/code&amp;gt;&#039;, ...) to force the numbering module to use for invoice ref definition when invoice is created by the POS. For example setting value &amp;lt;code&amp;gt;POS_ADDON&amp;lt;/code&amp;gt; to &#039;&amp;lt;code&amp;gt;mod_facture_terre&amp;lt;/code&amp;gt;&#039; will use the numbering module &#039;&amp;lt;code&amp;gt;terre&amp;lt;/code&amp;gt;&#039; for invoice generated from POS, whatever is the numbering rule defined into invoice module setup (you can also use POS_NUMBERING_TERRE_FORCE_PREFIX and POS_NUMBERING_MARS_FORCE_PREFIX variable to change the prefix used).&lt;br /&gt;
&lt;br /&gt;
*TAKEPOS_ENABLE_SUMUP ► Enable the compatibility of TakePOS with the card reader terminal [https://SumUp.fr SumUp]&lt;br /&gt;
*TAKEPOS_CAN_FORCE_BANK_ACCOUNT_DURING_PAYMENT ► Possibility to force the bank account during the payment in TakePOS  ► (V13.0)&lt;br /&gt;
*&lt;br /&gt;
*TAKEPOS_NUMPAD_FORCE_PAYMENT_ICONS_LABELS&lt;br /&gt;
 &lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Products Module=&lt;br /&gt;
&lt;br /&gt;
*CATEGORY_GRAPHSTATS_ON_PRODUCTS ► Show graph of products with categories and totals in Products Area screen&lt;br /&gt;
&lt;br /&gt;
*MAIN_PRODUCT_DISABLE_CUSTOMCOUNTRYCODE ► Avoid customs code and country of origin to be set as product description when added to Propal/Order/Invoice&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_ADD_TYPE_IN_DOCUMENTS ► Add text &amp;quot;Product&amp;quot; or &amp;quot;Service&amp;quot; at beginning of details lines on built PDF documents.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DONOTSEARCH_ANYWHERE ► When Ajax search is enabled, search is done on criteria anywhere in label of product. By adding this option, search is done only on start of label. This is really faster when you have a huge number of products.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DIRECT_STATUS_UPDATE ► Allows you to change the status of the product (&#039;&#039;for sale/not for sale for purchase/not for purchase&#039;&#039;) directly on the product page via a &#039;&#039;on/off&#039;&#039; switch button. This can be convenient for those who need to quickly disable certain statuses of products without having to go through the editing product page individually. Also can be very useful if used as a filter on the product and product search list. This option doesn&#039;t generate a MODIFY trigger, so be careful with external modules. ► v4.0+&lt;br /&gt;
&lt;br /&gt;
*MAIN_SEARCH_PRODUCT_BY_FOURN_REF ► (&amp;gt;= 8.0) Allow to search a product by supplier ref in document&#039;s add line form.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_FREE_LINES ► Disallow using free lines to add line in documents ► (&amp;gt;= 8.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_SHOW_PRODUCT_ACTIVITY_TRIM ► Show Product and Services turnover before for all four quarters tax over recent years recent years on the product area ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
*PRODUIT_DESC_IN_LIST ► Show long description of product/service into lists.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_PROPAGATE_CUSTOMER_PRICES_ON_CHILD_COMPANIES ► Disable propagation of prices per customer from a customer to its child company.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_SIZE ► Disable size in product card.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_LENGTH ► Disable length in product card ► v4.0+&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_SURFACE ► Disable surface in product card. ► v4.0+&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_VOLUME ► Disable volume in product card.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_CUSTOM_INFO ► Disable custom info (custom code and country origin) in product/service card.&lt;br /&gt;
&lt;br /&gt;
*PRODUIT_MULTIPRICES_USE_VAT_PER_LEVEL ► When option to use price per level/segment is on, this allows to also set a dedicated vat for each price level.&lt;br /&gt;
&lt;br /&gt;
*PRODUIT_CUSTOMER_PRICES_BY_QTY ► If price per quantity ► Experimental&lt;br /&gt;
*PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES ► If price per quantity and customer ► Experimental&lt;br /&gt;
*PRODUCT_MAX_LENGTH_COMBO ► Limit the length of the label displayed when adding lines in proposals/invoices/orders&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_MAX_VISIBLE_PHOTO ► Show a maximum number of product photos (as thumbnails) on the product main card. Example, setting this constant to &#039;&amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;&#039; will show the first five product photos found on the product card.&lt;br /&gt;
&lt;br /&gt;
*PRODUIT_PDF_MERGE_PROPAL ► Enable module Propal merge product PDF&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_USE_OLD_PATH_FOR_PHOTO ► Ask dolibarr to check also old path (before 3.7) where photos were stored.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_USE_UNITS ► Add another units on products (Use same dictionnary as default unit feature) and propagate this unit on line of documents.&lt;br /&gt;
&lt;br /&gt;
*RESOURCE_ON_PRODUCTS_RESOURCE_ON_SERVICES ► Allow to affect ressources on products/services (v10.0+)&lt;br /&gt;
*PRODUCT_SHOW_ORIGIN_IN_COMBO ► Show origin of products when adding lines in proposals/invoices/orders (v12.0+)&lt;br /&gt;
*PRODUIT_ATTRIBUTES_HIDECHILD  ► Add option hide child if variantes&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_ADD_FORM_ADD_TO ► Add a product to a draft proposal/order/invoice, from the product card.&lt;br /&gt;
*PRODUCT_DISABLE_SELLBY ► Hide the Sell by date ► (V13.0)&lt;br /&gt;
*PRODUCT_DISABLE_EATBY ► Hide the Eat by date ► (V13.0)&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DENY_CHANGE_PRODUCT_TYPE ► Forbid to change the product type&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_SORT_BY_CATEGORY ► Sort the product by categories instead of by ID&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Projects Module=&lt;br /&gt;
&lt;br /&gt;
*PROJECT_ALLOW_TO_LINK_FROM_OTHER_COMPANY ► Can link an object to a project of another thirdparty&lt;br /&gt;
*PROJECT_ALLOW_COMMENT_ON_PROJECT ► Add comment feature on a project&lt;br /&gt;
&lt;br /&gt;
*PROJECT_ALLOW_COMMENT_ON_TASK ► Add comment feature on project task&lt;br /&gt;
&lt;br /&gt;
*PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS ► Enable linking a project to any supplier even when using the third party link feature. Note: Set to 1 by default from 3.7.&lt;br /&gt;
&lt;br /&gt;
*PROJECT_CREATE_ON_OVERVIEW_DISABLED ► Hide the &amp;quot;create ...&amp;quot; button on the overview page ► (4.0)&lt;br /&gt;
&lt;br /&gt;
*PROJECT_DISABLE_UNLINK_FROM_OVERVIEW ► Enable removing the button from a link in the project overview. ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*PROJECT_HIDE_UNSELECTABLES ► Hide into select list, all project that we can&#039;t select (closed or draft)&lt;br /&gt;
&lt;br /&gt;
*PROJECT_HIDE_TASKS ► Hide tasks. For user using project only as an analytics key and not using tasks.&lt;br /&gt;
&lt;br /&gt;
*PROJECT_LIST_SHOW_STARTDATE ► Shows start date of projects in project lists.&lt;br /&gt;
&lt;br /&gt;
*PROJECT_LINK_ON_OVERWIEW_DISABLED ► Hide the &amp;quot;link to&amp;quot; form on the overview page ► (4.0)&lt;br /&gt;
&lt;br /&gt;
*PROJECT_SHOW_REF_INTO_LISTS ► Add column with project ref into list (with 3.7 list of supplier invoices only, will be expanded to other lists)&lt;br /&gt;
&lt;br /&gt;
*PROJECT_TIME_ON_ALL_TASKS_MY_PROJECTS ► Can add time spent on tasks, even if i am not assigned to task (however, task must be a project i am a contact).&lt;br /&gt;
&lt;br /&gt;
*PROJECT_OPEN_ALWAYS_ON_TAB ► Set to value &#039;task&#039;, or &#039;preview&#039; to always open the project on the given tab instead of main tab.&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*PROJECT_ELEMENTS_FOR_MINUS_MARGIN&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Proposals Module=&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_PROPOSALS_WITH_PICTURE ► Add a picture of the product (the first one found if there are several) into the generated PDF of proposals. Note that using this will reduce the available width for the product description.&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROPAL_CHOOSE_ODT_DOCUMENT ► On setup page, you&#039;ll be able to select which ODT document to use when close or cancel proposals.&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING ► add optional esign field in pdf propal ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*PROPAL_CLONE_ON_CREATE_PAGE ► On the create proposal page, ask if we want to create the proposal by cloning an already existing one. You should use instead the &amp;quot;Clone&amp;quot; button available on existing proposals.&lt;br /&gt;
&lt;br /&gt;
*PROPAL_DISABLE_SIGNATURE ► Do no show the box for signature.&lt;br /&gt;
&lt;br /&gt;
*PRODUIT_PDF_MERGE_PROPAL ► When generating the proposal PDF, all PDFs linked to products linked to proposal are also included into final PDF&lt;br /&gt;
&lt;br /&gt;
*PROPOSAL_ALLOW_EXTERNAL_DOWNLOAD ► When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*PROPOSAL_AUTO_ADD_AUTHOR_AS_CONTACT ► Add Proposal Author as user contact follow proposal&lt;br /&gt;
&lt;br /&gt;
*PROPOSAL_PDF_HIDE_PAYMENTTERM ► Do not show the payment term on proposal ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*PROPOSAL_PDF_HIDE_PAYMENTMODE ► Do not show the payment mode on proposal ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*WORKFLOW_PROPAL_CAN_CLASSIFY_BILLED_WITHOUT_INVOICES ► Button &amp;quot;Classified Billed&amp;quot; is visible on proposal even if there is no invoice linked to proposal.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Services Module=&lt;br /&gt;
&lt;br /&gt;
*SERVICE_ARE_ECOMMERCE_200238EC ►  If seller and buyer are in Europe and buyer is not a company, use the VAT of buying country. For french speaking people, see also the page [[Loi_européenne_TVA_Vente_à_Distance_VAD_et_e-commerce_BtoC]].&lt;br /&gt;
&lt;br /&gt;
*MAIN_FILL_SERVICE_DATES_FROM_LAST_SERVICE_LINE  ► (v13.0) On add line form add a button to fill service dates from the last service line&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Shipments=&lt;br /&gt;
&lt;br /&gt;
*STOCK_WAREHOUSE_NOT_REQUIRED_FOR_SHIPMENTS ► If set, you can add a shipment line, with no stock source defined. ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*SHIPMENT_GETS_ALL_ORDER_PRODUCTS ► Add all order lines in shipment, including the one with 0 in quantity&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Stocks=&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_DISABLE_STOCK_DISPATCH_WHEN_TOTAL_REACHED ► Disable stock dispatch when total expected was already received&lt;br /&gt;
&lt;br /&gt;
*STOCK_EXCLUDE_VIRTUAL_PRODUCTS ► If product is a virtual product, we do not manage stock for it.&lt;br /&gt;
&lt;br /&gt;
*ENTREPOT_EXTRA_STATUS ► Instead of the 2 status (Closed, Open), a Warehouse has 3 status: Closed, Open (for all movements), Open (for internal movement only). Internal movement only means you can&#039;t use the warehouse to make shipment or receptions.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Suppliers Module=&lt;br /&gt;
&lt;br /&gt;
*FOURN_PRODUCT_AVAILABILITY ► On the Suppliers price page of the products, activate the supplier product availability. &#039;&#039;This is duplicate feature with delivery_delay introduced with 3.8.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*RELOAD_PAGE_ON_SUPPLIER_CHANGE ► On creation of a supplier order/invoice, reload form with supplier-specific details when supplier is selected from drop-down list.&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_INVOICE_WITH_PREDEFINED_PRICES_ONLY ► Restrict selection of products in supplier invoice to only those with a buying price defined for that supplier. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_AUTOADD_USER_CONTACT ► Add user approving supplier order as a contact automatically.&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_DEFAULT_PAYMENT_MODE_ID ► Set the default payment method for suppliers (&amp;lt;code&amp;gt;rowid&amp;lt;/code&amp;gt; in table &amp;lt;code&amp;gt;llx_c_paiement&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_USE_DISPATCH_STATUS ► Add a status on each dispatch order line when receiving products from suppliers ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_NO_DIRECT_APPROVE ► No button &amp;quot;Validate and Approve&amp;quot;. Always do step &amp;quot;Validate&amp;quot; and &amp;quot;Approve&amp;quot; in 2 steps.&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_WITH_PREDEFINED_PRICES_ONLY ► Restrict selection of products in supplier order to only those with a buying price defined for that supplier. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_EDIT_BUYINGPRICE_DURING_RECEIPT ► Can modify the buying price used for PMP calculation when making a stock reception on a supplier order. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_PROPOSAL_WITH_PREDEFINED_PRICES_ONLY ► Restrict selection of products in supplier proposal to only those with a buying price defined for that supplier. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*DISPLAY_DISCOUNTED_SUPPLIER_PRICE ► Allow to display discounted supplier price when searching product in supplier documents ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_CAN_EDIT_SUPPLIER_ON_SUPPLIER_ORDER ►  Allow to change the supplier on a draft supplier order ► (v10.0)&lt;br /&gt;
*&lt;br /&gt;
*SUPPLIER_PROPOSAL_ALLOW_EXTERNAL_DOWNLOAD&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Third Parties Module=&lt;br /&gt;
&lt;br /&gt;
*COMPANY_AQUARIUM_CLEAN_REGEX ► Add a REGEX rule on the third parties names. It applies a regex replacement pattern on generated code if COMPANY_AQUARIUM_CLEAN_REGEX is set. Value must be a regex with parenthesis. The part into parenthesis is kept, the rest removed. For example if COMPANY_AQUARIUM_CLEAN_REGEX = &#039;&amp;lt;code&amp;gt;^..(..)..(.*)&amp;lt;/code&amp;gt;&#039; the first char and second char are removed and the char 5 and 6 too ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*SOCIETE_DISABLE_CUSTOMERS ► Remove all menu and features related to customers&lt;br /&gt;
&lt;br /&gt;
*SOCIETE_DISABLE_PROSPECTS ► Remove all menu and features related to prospects&lt;br /&gt;
&lt;br /&gt;
*SOCIETE_DISABLE_STATE ► Do not use field &amp;quot;state/province&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*SOCIETE_SORT_ON_TYPEENT ► The combo list of &amp;quot;type of third party&amp;quot; is sorted on alphabetical order instead of the field &amp;quot;position&amp;quot; that appears into dictionary instead.&lt;br /&gt;
&lt;br /&gt;
*SOCIETE_ASK_FOR_SHIPPING_METHOD ► Shipping method can be predefined on customer card and will be used as default on order creation&lt;br /&gt;
*SOCIETE_ADD_REF_IN_LIST ► Displays the code before the name in the lists  ► Value 1 -&amp;gt; Code + name + alias ou Code + name if colone alias 2 -&amp;gt; Code + alias 3 -&amp;gt; Alias&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_CAN_HAVE_CATEGORY_EVEN_IF_NOT_CUSTOMER_PROSPECT_SUPPLIER ► Possible to add Categories to third parties that are not customer, prospect or supplier.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_DEFAULT_USELOCALTAX1 ► When creating a new third party, the field &amp;quot;Use second tax&amp;quot; is set to on or off depending on value of this parameter.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_DEFAULT_USELOCALTAX2 ► When creating a new third party, the field &amp;quot;Use third tax&amp;quot; is set to on or off depending on value of this parameter.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_NOTCUSTOMERPROSPECT_BY_DEFAULT ► Do not set status &amp;quot;Customer/Prospect&amp;quot; to &amp;quot;on&amp;quot; when creating a new third party from menu &amp;quot;New third party&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_INCLUDE_PARENT_IN_LINKTO ► Search also for elements on parent third party when using the &amp;quot;link to&amp;quot; object feature.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_INCLUDE_PROJECT_THIRDPARY_IN_LINKTO ► Search also for elements on third party that own the project of the current element when using the &amp;quot;link to&amp;quot; object feature (if project is owned by a different thirdparty than current one).&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_LOGO_ALLOW_EXTERNAL_DOWNLOAD ► When a logo is uploaded, a share key is automatically set so the file can be downloaded using the share key.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_SUGGEST_ALSO_ADDRESS_CREATION ► Enabled contact creation on third-party create card&lt;br /&gt;
*THIRDPARTY_QUICKSEARCH_ON_FIELDS ► Personalized search criterias ► Example: $conf-&amp;gt;global-&amp;gt;THIRDPARTY_QUICKSEARCH_ON_FIELDS = &#039;s.nom=ThirdPartyName;s.name_alias=AliasNameShort;s.code_client=CustomerCode&#039;&lt;br /&gt;
*MEMBER_CAN_CONVERT_CUSTOMERS_TO_MEMBERS ► Enabled member creation on third-party create card&lt;br /&gt;
*SOCIETE_DISABLE_PARENTCOMPANY ► Disables attachment to a parent company.&lt;br /&gt;
*THIRDPARTY_CUSTOMERPROSPECT_BY_DEFAULT ► Set the third party to customer by default&lt;br /&gt;
*THIRDPARTY_SUPPLIER_BY_DEFAULT ► Set the third party to supplier by default&lt;br /&gt;
*THIRDPARTY_CUSTOMERTYPE_BY_DEFAULT ► Set the third party type by default (3 = customer / 2 = prospect)&lt;br /&gt;
*CONTACT_DISABLE_PERSONALINFO ► Disable Personal data on contact page&lt;br /&gt;
*SOCIETE_DISABLE_WORKFORCE ► Disable work force selector on society page&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=VAT Report=&lt;br /&gt;
&lt;br /&gt;
*MAIN_INCLUDE_ZERO_VAT_IN_REPORTS ► Include lines with VAT to 0% (for &amp;quot;auto-liquidation&amp;quot; in EEC) ► (v8.0.3+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Website Module=&lt;br /&gt;
&lt;br /&gt;
*WEBSITE_USE_WEBSITE_ACCOUNTS ► Add a table and a tab to manage some accounts for websites to a third party&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*WEBSITE_ADD_CSS_TO_BODY&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=WYSIWYG Editor=&lt;br /&gt;
&lt;br /&gt;
*FCKEDITOR_ENABLE_DETAILS_FULL ► Can cut and paste external images (hosted on external server) into description of proposal, orders or invoices. WARNING: PDF generation is not guaranteed with this. Also if the image is removed or renamed by the image hosting service, your proposal, order or invoice will be broken.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=STRIPE Module=&lt;br /&gt;
&lt;br /&gt;
*STRIPE_FORCE_VERSION ► Force the STRIPE version. For Example: &amp;quot;2019-09-09&amp;quot; (v11+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=ClickToDial Module=&lt;br /&gt;
&lt;br /&gt;
*CLICKTODIAL_FORCENEWTARGET ► Open in new page.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=For SaaS / Cloud hosting integrators=&lt;br /&gt;
&lt;br /&gt;
The following options are useless for a common usage of Dolibarr. But they are usefull if you plan to host / provide Dolibarr instances as Software As A Service (SAAS) to your customers.&lt;br /&gt;
&lt;br /&gt;
*CRON_DISABLE_KEY_CHANGE ► When you provide an instance to a customer, you probably also add an entry in the cron of this user so Dolibarr batch and scheduler can work correctly. For security purpose, it may have a security key that is inside the command line into the cron entry and this entry must match the value defined into Dolibarr setup (setup of module &#039;Scheduled Jobs&#039;). Because, a customer of a Saas platform will probably have no access to edit the cron file, it is also import that he has no way to edit the key into the Dolibarr setup, so the key in the cron command line will always match the key in Dolibarr setup, and the Dolibarr batches will executed without security errors. To be sure, the customer does not change the value, you can set this constant to 1 into the table [[Table_llx_const]].&lt;br /&gt;
&lt;br /&gt;
*CRON_DISABLE_TUTORIAL_CRON ► Disable the tutorial about how to install the cron script (on a SaaS hosting, this should be done by the web hosting provider)&lt;br /&gt;
&lt;br /&gt;
*CRON_WARNING_DELAY_HOURS ► Set this value to the frequency set for the cron script (so a warning will be shown to user to warn it about max frequency of its scheduled jobs)&lt;br /&gt;
 &lt;br /&gt;
*To avoid bad use of the emailing module, it is recommended to set the option MAILING_NO_USING_PHPMAIL to 1 (This option is described previously). Also you can complete the message visible by customers when they try to setup the SMTP credentials of their Dolibarr by using the constant MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS (This option is described previously). For example, you can point to a FAQ on your website.&lt;br /&gt;
&lt;br /&gt;
*If you set a system limit on number of recipient, you can set some option to match the same values so users will be informed: MAIL_MAX_NB_OF_RECIPIENTS_IN_SAME_EMAIL ► Restrict sending of 1 email message to &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; recipients for same email message (x for To: + CC: + BCC:). If not defined, value is &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;. Required to fight against spamming that include 1000 recipients in 1 message. Note that MAIL_MAX_NB_OF_RECIPIENTS_TO_IN_SAME_EMAIL, MAIL_MAX_NB_OF_RECIPIENTS_CC_IN_SAME_EMAIL and MAIL_MAX_NB_OF_RECIPIENTS_BCC_IN_SAME_EMAIL are also available.&lt;br /&gt;
&lt;br /&gt;
*MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP ► Set to 1 by default. You can set it to 0 to show a warning to encourage admin to set its own SMTP service.&lt;br /&gt;
&lt;br /&gt;
*MAILING_LIMIT_WARNING_PHPMAIL ► Set this value to a translation key. Then add translation keys into the instance so user will see a message when into the email setup page. For example, you can set a message to say &#039;&#039;Warning: To avoid abuse, when using default setup, you are restricted to 500 emails per day for all your application (account may be suspended in case of violation of this rule. You can setup application to use your own SMTP server for sending email so you want have no restriction at all (see menu Home-Setup-Emails)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*MAIN_EXTERNAL_SMTP_CLIENT_IP_ADDRESS ► (A better name of this option should be MAIN_EXTERNAL_MAIL_CLIENT_IP_ADDRESS). Set here the list of IPs where your Dolibarr instances are hosted. So when your customer go into the setup area of email:&lt;br /&gt;
**If he chose mail method, a message will explain him how to setup its SPF record for its email domain (showing the list of IP). This is to avoid to have its emails, sent from its Dolibarr instance, fails due to strict antispam rule of some emailing servers.&lt;br /&gt;
**If he chose smtp method, a message will explain him the list of IP he can use if there is restriction on IP by the SMTP agent. If you also need to add a message to help SPF setup, see option MAIN_EXTERNAL_SMTP_SPF_STRING_TO_ADD.&lt;br /&gt;
&lt;br /&gt;
*MAIN_EXTERNAL_SMTP_SPF_STRING_TO_ADD ► Set here the string to add in the SPF record This string will be shown into a help message when the user in in the setup of email page and has choose a method using an external SMTP server.&lt;br /&gt;
&lt;br /&gt;
*MAIN_ALWAYS_CREATE_LOCK_AFTER_LAST_UPGRADE ► If set, when you launch upgrades of your customer instances, you are sure that the upgrade process recreate automatically the file install.lock so the administration tools like install.php and repair.php can&#039;t be used on your customer instance (until the lock file is deleted).&lt;br /&gt;
&lt;br /&gt;
*MAIN_FILECHECK_LOCAL_SUFFIX and MAIN_FILECHECK_LOCAL_EXT ► If you offer a customized or patched version of Dolibarr, when the user will use the tool to check the integrity of files, the default xml file name used for signature checking will be the official file provided by the Dolibarr team, so it does not includes your own changes. To have the suggested signature file being your own file, you can set the constant MAIN_FILECHECK_LOCAL_SUFFIX to a suffix. For example, set this to &amp;quot;&#039;&#039;&#039;-mysaassolution&#039;&#039;&#039;&amp;quot;. So, when the user will use the file integrity tool, the default file to check for signature will be &amp;quot;&#039;&#039;&#039;/install/filelist-10.0.2-mysaassolution.xml&#039;&#039;&#039;&amp;quot; instead of &amp;quot;&#039;&#039;&#039;/install/filelist-10.0.2.xml&#039;&#039;&#039;&amp;quot;. All you have to do is generate the signature file &#039;&#039;&#039;mysaassolution&#039;&#039;&#039; using the tool &#039;&#039;&#039;build/generate_filelist_xml.php&#039;&#039;&#039; and put this file into the install directory of your customer instance. Doing this, your customer, and yourself, will be able to check if a file was modified without being disturbed by false alerts due to your customized files or patches (they will be included in the signature used for check). Also, if you want to zip the customized signature file into &amp;quot;&#039;&#039;&#039;/install/filelist-10.0.2-mysaassolution.xml.zip&#039;&#039;&#039;&amp;quot;, you can set the constant MAIN_FILECHECK_LOCAL_EXT to &#039;.zip&#039;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING ► If set to N, the warning saying modules are not activated will be shown if number of activated module is &amp;lt; N (Having this variable not defined is same than having it set to 1). This may be usefull if you preinstall an application with some modules already loaded by default and you want to keep the warning to be sure the user will enable other modules he need, even if some modules are already enabed.&lt;br /&gt;
&lt;br /&gt;
*SYSLOG_DISABLE_LOGHANDLER_SYSLOG ► Set this to 1 to disable usage of syslog (having all customer instances logging in the same system file is not a good idea).&lt;br /&gt;
&lt;br /&gt;
*WEBSITE_REPLACE_INFO_ABOUT_USAGE_WITH_WEBSERVER ► Put here a text or a translation key of a text to show when the user will use the feature &amp;quot;Deploy&amp;quot; when he want to deploy a website done with Dolibarr CMS. So you can, for example, show him a message that this feature is not part of its subscription and putting a website online may need a complementary subscription.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Loi_finances_sur_les_logiciels_de_caisse_et_Certification_NF525_ou_LNE&amp;diff=49848</id>
		<title>Loi finances sur les logiciels de caisse et Certification NF525 ou LNE</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Loi_finances_sur_les_logiciels_de_caisse_et_Certification_NF525_ou_LNE&amp;diff=49848"/>
		<updated>2021-02-25T20:57:20Z</updated>

		<summary type="html">&lt;p&gt;Iouston: Ajout d&amp;#039;un lien vers le Bofip pour obtenir un modèle d&amp;#039;attestation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;seo metak=&amp;quot;loi finance 2016, loi finance 2018, loi finance 2019, NF525, logs inaltérables, logiciels de caisse, logiciels comptabilité, TPE&amp;quot; /&amp;gt;&lt;br /&gt;
Ceci est une page d&#039;explication  de l&#039;Article 88 de la Loi finance 2016 (n° 2015-1785 du 29 décembre 2015), communément appelée Loi anti-fraude à la TVA, applicable au 1er janvier 2018 en France (cette loi ayant donné lieu à la certification NF525 ou encore au principe d&#039;attestation de conformité).&lt;br /&gt;
&lt;br /&gt;
=Résumé=&lt;br /&gt;
&lt;br /&gt;
La &#039;&#039;&#039;loi finances 2016, article 88 modifiant le 286 du CGI&#039;&#039;&#039;, impose à tous les commerçants, &#039;&#039;&#039;assujettis à la TVA hors franchise en base de TVA&#039;&#039;&#039; (et seulement ces derniers) ET qui sont équipés d&#039;un &amp;quot;logiciel ou système de caisse&amp;quot; (comprendre logiciel d&#039;encaissement d&#039;argent, cela inclut les logiciels de gestion) ET qui réalisent de l&#039;encaissement de particuliers, d&#039;utiliser un logiciel dans un cadre &amp;quot;conforme&amp;quot; à la loi finance 2016, et ce dès le 1er janvier 2018 (avec tolérance sur 2018 si l&#039;utilisateur peut montrer qu&#039;il a entamé une trajectoire dans le but de mise en conformité, mais n&#039;a pas encore pu finaliser sa démarche par exemple pour cause d&#039;attente de publication d&#039;une version conforme, ou de délai nécessaire pour la migration technique).&lt;br /&gt;
&lt;br /&gt;
La &amp;quot;conformité Loi Finance&amp;quot; dite aussi &amp;quot;Anti Fraude TVA&amp;quot; est absolument sans aucun rapport avec la notion de &amp;quot;Compatible avec les normes de logiciels comptables&amp;quot;, normes requises pour établir les documents fiscaux officiels et les télétransmettre à l&#039;administration. Ces normes (par exemple &amp;quot;la compatibilité avec le format FEC&amp;quot; obligatoire depuis le 1er janvier 2014 [https://www.legifrance.gouv.fr/affichCodeArticle.do?cidTexte=LEGITEXT000006069583&amp;amp;idArticle=LEGIARTI000027804775 défini ici], ou encore &amp;quot;la compatibilité pour télétransmission EDI&amp;quot;) existent d&#039;ailleurs depuis plusieurs années bien avant la loi finance 2016 et concernent uniquement le &amp;quot;logiciel de comptabilité&amp;quot; de l&#039;expert comptable qui approuve les comptes, logiciel utilisé en fin de chaîne pour produire la liasse fiscale, et, seul ce dernier logiciel a cette contrainte de &amp;quot;compatibilité logiciel comptable&amp;quot; : le logiciel de gestion ou de suivi de l&#039;entreprise (comme par exemple Dolibarr), même si il est utilisé pour réaliser une comptabilité interne de l&#039;entreprise (par exemple en préparation d&#039;export vers le logiciel de l&#039;expert-comptable, ou utilisé pour offrir un suivi ou mâcher le travail du comptable pour réduire son coût), n&#039;a &#039;&#039;&#039;aucune obligation sur le point de logiciel comptable&#039;&#039;&#039; si c&#039;est un autre qui sert pour établir les documents légaux. &lt;br /&gt;
&lt;br /&gt;
Par contre, le logiciel de l&#039;entreprise peut avoir l&#039;obligation d&#039;être &#039;&#039;&#039;conforme Loi finance 2016 - Anti Fraude TVA&#039;&#039;&#039;. Ce qui est tout autre chose. Cette conformité s&#039;applique à tout &amp;quot;logiciel d&#039;encaissements&amp;quot;, ce qui est différent de &amp;quot;logiciel comptable&amp;quot; (et donc s&#039;applique aux logiciels de facturation ou de gestion avec saisie d&#039;encaissements, aux logiciels de caisse enregistreuse (Point de Vente) et, éventuellement, aux logiciels de comptabilité si c&#039;est lui qui est utilisé pour saisir et suivre les encaissements clients, ce qui est rarissime car cela sous-entend que la gestion de l&#039;entreprise est faite directement dans le logiciel du comptable qui certifie les comptes).&lt;br /&gt;
&lt;br /&gt;
Cette conformité &amp;quot;Loi Finance&amp;quot; pour son logiciel d&#039;encaissement, peut s&#039;obtenir de 3 manières différentes (une seule des 3 solutions suffit):&lt;br /&gt;
&lt;br /&gt;
*Par l&#039;utilisation d&#039;une version &#039;&#039;&#039;certifiée Loi Finance&#039;&#039;&#039; du logiciel (Exemple via l&#039;obtention de la certification LNE ou l&#039;obtention de la norme NF525 de l&#039;AFNOR). Une version certifiée l&#039;est pour tout le monde mais, pour évoluer, il faut attendre la prochaine version certifiée, et le processus de certification est long et coûteux pour l&#039;éditeur. Le principe de certification n&#039;est donc plus adapté aux logiciels modernes ni aux logiciels en Cloud/SaaS qui évoluent rapidement). Le choix de conformité du logiciel par obtention d&#039;une certification LNE ou NF525 n&#039;est donc pas celui fait majoritairement par les éditeurs. La certification LNE ou NF525 n&#039;est donc absolument pas obligatoire (même si les éditeurs qui ont fait ce choix essaie de sous-entendre le contraire), à condition qu&#039;une des autres solutions pour être conforme soit mis en oeuvre (voir point suivants).&lt;br /&gt;
&lt;br /&gt;
ou bien&lt;br /&gt;
&lt;br /&gt;
*Par obtention d&#039;une &#039;&#039;&#039;attestation individuelle de conformité Loi Finance&#039;&#039;&#039; décernée par une société Tiers, comme un éditeur ou intégrateur informatique (Exemple d&#039;attestation vierge proposé par le gouvernement: http://bofip.impots.gouv.fr/bofip/10692-PGP.html). Une attestation est individuelle, chaque société utilisatrice doit en obtenir une, auprès d&#039;un Tiers, pour elle même.&lt;br /&gt;
&lt;br /&gt;
ou bien&lt;br /&gt;
&lt;br /&gt;
*En &#039;&#039;&#039;se délivrant à soi-même cette attestation&#039;&#039;&#039; (sans la demander à un tiers donc), on parle d&#039;auto-attestation, mais ce cas est limité aux sociétés qui ont, entre autre, une activité &#039;&#039;&#039;avérée&#039;&#039;&#039; d&#039;édition de logiciel de caisse (le code Nace n&#039;ayant  qu&#039;une valeur indicative statistique, c&#039;est votre activité réelle, dont il vous revient d&#039;en démontrer le côté avéré qui sera pris en compte, et non un code Nace spécifique comme cela avait été cité dans des versions intermédiaires de textes sur le travail de la loi)&lt;br /&gt;
&lt;br /&gt;
Le chapitre &amp;quot;Historique&amp;quot; vous permet de voir les rebondissements et changements de direction de la loi. Connaitre ces rebondissements aide à comprendre pourquoi de nombreux acteurs se sont trompés ou continuent de se tromper sur cette loi. Le chapitre d&#039;après &amp;quot;Questions / Réponses&amp;quot; vous offre une vue rapide de la loi &#039;&#039;&#039;définitive&#039;&#039;&#039; par une approche de questions/réponses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Historique de la définition de la loi et rebondissements==&lt;br /&gt;
&lt;br /&gt;
Pour ceux qui ont le temps de lire, voici un flux qui décrit les documents originaux qui ont été communiqués par le gouvernement et les mises à jours qui ont suivi pour définir le périmètre et la conclusion de la loi, avec les rebondissements (pour ceux qui n&#039;ont pas le temps, aller directement au chapitre Conclusion ou aux FAQ):&lt;br /&gt;
&lt;br /&gt;
*Voici l&#039;article &#039;&#039;&#039;initial&#039;&#039;&#039; de la loi finance, datant du 29/12/2015:  [https://www.legifrance.gouv.fr/affichTexteArticle.do?cidTexte=JORFTEXT000031732865&amp;amp;idArticle=LEGIARTI000031734740&amp;amp;dateTexte=20151230 Article sur LegiFrance]&lt;br /&gt;
*Voici l&#039;article, &#039;&#039;&#039;pour sa publication au BOFIP&#039;&#039;&#039;, du 03/08/2016: https://bofip.impots.gouv.fr/bofip/10691-PGP.html?identifiant=BOI-TVA-DECLA-30-10-30-20160803&lt;br /&gt;
*Voici l&#039;article, &#039;&#039;&#039;pour sa publication au BOFIP&#039;&#039;&#039;, de la version définitive du 04/07/2018: https://bofip.impots.gouv.fr/bofip/10691-PGP.html?identifiant=BOI-TVA-DECLA-30-10-30-20180704&lt;br /&gt;
&lt;br /&gt;
Pour résumer, ces 2 publications indiquent qu&#039;il faudra, pour toute société/organisme qui &#039;&#039;enregistre les règlements de ses clients au moyen d&#039;un logiciel de comptabilité ou de gestion ou d&#039;un système de caisse, utiliser un logiciel ou un système satisfaisant à des conditions d&#039;inaltérabilité, de sécurisation, de conservation et d&#039;archivage des données en vue du contrôle de l&#039;administration fiscale, attestées par un certificat délivré par un organisme accrédité dans les conditions prévues à l&#039;article L. 115-28 du code de la consommation &#039;&#039;&#039;OU&#039;&#039;&#039; par une attestation individuelle de l&#039;éditeur, conforme à un modèle fixé par l&#039;administration&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:Warning.png]] 15 juin 2017: Communiqué de presse du cabinet du ministère: http://proxy-pubminefi.diffusion.finances.gouv.fr/pub/document/18/22503.pdf -&amp;gt; &lt;br /&gt;
Seules les &amp;quot;logiciels de caisse&amp;quot; seraient concernés (la définition de logiciel de caisse n&#039;est toutefois pas encore apportée, elle le sera le 15 juillet 2018, voir la suite). &lt;br /&gt;
Dès logiciels ERP (comme Dolibarr), ainsi que les logiciels de site ecommerce (comme Prestashop, Magento, ...) n&#039;étant dans pas la catégorie logiciels de caisse (Les ERP sont dans la catégorie logiciels de gestion), on aurait cru que l&#039;obligation de mise en conformité, et tout ce qui suit, semblait ne plus être avéré pour eux, mais la suite des événements (voir la suite) indiquera le contraire si vous enregistrez dans le logiciel des paiements de particuliers, quelquesoit la catégorie du logiciel (seules les sociétés encaissant exclusivement d&#039;autres sociétés, ou ceux en tva en franchise, seront finalement exemptées)...&lt;br /&gt;
&lt;br /&gt;
[[File:Warning.png]] 27 septembre 2017: Voici l&#039;avenant publié le 27 septembre 2017 qui réduit la portée/périmètre de la loi aux seuls &amp;quot;logiciels de caisse&amp;quot;: http://www.assemblee-nationale.fr/15/projets/pl0235.asp (Article 46). En d&#039;autres terme, les applications ERP (Comme Dolibarr) semblent la encore ne plus être concernées, mais la suite des événements (voir la suite) indiquera le contraire si vous encaissez des particuliers (seules les sociétés encaissant exclusivement d&#039;autres sociétés, ou ceux en franchises seront finalement exemptées)...&lt;br /&gt;
&lt;br /&gt;
Suite aux questions, une FAQ, issue du ministère des finances, est alors parue pour tenter de clarifier le périmètre. Elle indique que tous les assujetis à TVA qui vendent à un non assujetti (particuliers) sont concernés. Si on lit tel quel cette FAQ, alors le périmètre est non seulement pas réduit, comme communiqué par le ministère dans son courrier du 15 juin, mais élargit, y compris aux sites e-commerce. Cette FAQ est le premier élément qui apporte donc une définition au terme &amp;quot;système de caisse&amp;quot; en considérant tout logiciel traçant des encaissements, comme &amp;quot;systeme de caisse&amp;quot;.&lt;br /&gt;
Des amendements ont été rédigés pour tenter de clarifier ou restreindre cette définition, voir la suite...&lt;br /&gt;
&lt;br /&gt;
[[File:Warning.png]] 14 octobre 2017: Une reformulation du texte, plus complète que la FAQ, est donnée stipulant qu&#039;une entité est concernée... &amp;quot;&#039;&#039;Si elle effectue des livraisons de biens et des prestations de services ne donnant pas lieu à facturation conformément à l’article 289 et enregistre ces opérations au moyen d’un logiciel ou d&#039;un système de caisse&#039;&#039; ... &amp;quot;. Dans ce cas, il faut &amp;quot;&#039;&#039;... utiliser un logiciel ou un système satisfaisant à des conditions d&#039;inaltérabilité, de sécurisation, de conservation et d&#039;archivage des données en vue du contrôle de l&#039;administration fiscale, attestées par un certificat délivré par un organisme accrédité dans les conditions prévues à l&#039;article L. 433-4 du code de la consommation OU par une attestation individuelle de l&#039;éditeur, conforme à un modèle fixé par l&#039;administration ;&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Il est aussi précisé: &#039;&#039;« 2. Les assujettis bénéficiant d&#039;une franchise de taxe mentionnée à l&#039;article 293 B, ceux placés sous le régime du remboursement forfaitaire prévu aux articles 298 quater et 298 quinquies et ceux effectuant exclusivement des opérations ou des prestations exonérées de taxe sur la valeur ajoutée sont dispensés de l&#039;obligation mentionnée au 3° bis du I. » ; &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Voir: [https://www.legifrance.gouv.fr/eli/loi/2017/12/30/CPAX1723900L/jo/texte/fr#JORFARTI000036339313 Article sur LegiFrance] pour le texte complet mentionnant ces 2 points.&lt;br /&gt;
&lt;br /&gt;
[[File:Warning.png]] 20 novembre 2017: Nouveaux éléments permettant de mieux cibler le périmètre. En effet, l&#039;amendement II-CF15 = II-1649 de la loi Finance 2018 sur l&#039;article 46 pour exclure les encaissements de particuliers qui font l&#039;objet de fabrication d&#039;une facture en bon et du forme (afin d&#039;exclure les ERP et plateforme ecommerce) a été rejeté en séance à l&#039;assemblée: Seule l&#039;encaissement de sociétés est bien hors périmètre. En effet, considérant que l&#039;administration a le droit de vérification chez les clients de type société, les traces fournies par les factures suffisent pour assurer un contrôle satisfaisant, mais ce droit n&#039;existe pas en ce qui concerne la facturation des particuliers. Dans ce cas la, même la facture est peu utile à l&#039;administration et par conséquent les contraintes d&#039;inaltérabilité deviennent requises, même si on émet une facture en bon et du forme. Cette conclusion fait suite aux échanges suites à l&#039;amendement II-CF15 = II-1649 de la loi Finance 2018 sur l&#039;article 46. &lt;br /&gt;
&lt;br /&gt;
Pour info, texte complet de la tentative d&#039;amendement: http://www.assemblee-nationale.fr/15/amendements/0235C/AN/1649.asp ou en PDF http://www.assemblee-nationale.fr/15/amendements/0235C/CION_TOUTE/CF15.pdf&lt;br /&gt;
&lt;br /&gt;
Et voici les extraits importants de la discussion:&lt;br /&gt;
&lt;br /&gt;
D&#039;abord, la tentative de M. Bruno Millienne pour tenter d&#039;exclure les logiciels émettant des factures en bon et du forme:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;M. Bruno Millienne. &amp;quot;[...]le renvoi à l’article 289 du code général des impôts – CGI – ne vise que les cas d’émission de factures obligatoires au sens fiscal pour les opérations entre assujettis ou personnes morales. En l’état, le texte conduirait à appliquer le dispositif de certification ou d’attestation à toutes les opérations réalisées avec les particuliers, même lorsqu’elles donnent lieu à l’émission de factures conformes au CGI, par exemple dans le cadre du commerce électronique. [...] La rédaction actuelle de l’article peut conduire à requalifier en logiciel de caisse un logiciel de facturation, si des factures sont émises à l’attention d’un particulier ou d’une administration, ou un logiciel de comptabilité, si des règlements sont comptabilisés directement par l’utilisateur. L’éditeur deviendrait ainsi responsable du mode d’utilisation de son logiciel par l’assujetti. Il est impossible de transposer les exigences d’un logiciel de caisse à un logiciel de facturation : leurs fonctionnalités respectives sont totalement différentes. Actuellement, il existe des dispositifs de certification en matière de caisse, mais pas en matière de facturation.&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Réponse de &#039;&#039;M. Joël Giraud, rapporteur général de la commission des finances, de l’économie générale et du contrôle budgétaire: Avis défavorable. L’article 46 précise que l’obligation de certification ne vaut que pour les logiciels ou systèmes de caisse. L’obligation ne concernera plus les progiciels de gestion intégrée ou de comptabilité : pour ces logiciels multifonctions qui traitent à la fois la comptabilité, la gestion et la caisse, seuls les modules caisse enregistreuse et encaissement devront être certifiés, non l’ensemble du logiciel.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Et enfin le complément de &#039;&#039;M. Benjamin Griveaux, secrétaire d’État auprès du ministre de l’économie et des finances: Avis défavorable. Une facture n’est obligatoire, au sens fiscal, que dans le cadre d’une relation B to B – business to business, c’est-à-dire d’entreprise à entreprise. L’administration fiscale peut la contrôler car elle dispose d’un droit de communication envers l’entreprise cliente. A contrario, elle ne peut exercer de droit de communication auprès des particuliers. Cet amendement conduirait donc à exclure du dispositif de sécurisation les entreprises qui émettent des factures contenant les mentions légales, qu’elles soient adressées à des entreprises ou à des particuliers. Je suis donc l’avis du rapporteur général quant au risque de fraude accrue que cet amendement ferait courir.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La discussion complète de la séance ayant rejeté l&#039;amendement est disponible ici: http://www.assemblee-nationale.fr/15/cri/2017-2018/20180063.asp#P1103690&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;En conclusion, l&#039;amendement ayant été rejeté, il faut en déduire que la volonté est bien d&#039;intégrer, dans le périmètre, toutes les parties/modules de logiciels, utilisés comme caisse enregistreuse OU pour enregistrer des paiements de particuliers (logiciel ecommerce, de caisse, de gestion,...)&#039;&#039;&#039; et que l&#039;émission de facture en bon et du forme à des particuliers ne permet pas de sortir du périmètre...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Warning.png]] 30 décembre 2017:&lt;br /&gt;
&lt;br /&gt;
L&#039;article 88 qui disaient &#039;&#039;..toute personne assujettie à la taxe sur la valeur ajoutée (TVA) qui enregistre les règlements de ses clients au moyen d&#039;un logiciel de comptabilité ou de gestion ou d&#039;un système de caisse, doit utiliser un logiciel ou un système satisfaisant à des conditions d&#039;inaltérabilité, de sécurisation, de conservation et d&#039;archivage des données en vue du contrôle de l&#039;administration fiscale&#039;&#039;&lt;br /&gt;
est complété par l&#039;article 105 qui remplace &amp;quot;&#039;&#039;logiciel de comptabilité ou de gestion ou d&#039;un système de caisse&#039;&#039;&amp;quot; par &amp;quot;&#039;&#039;logiciel ou d&#039;un système de caisse&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[File:Warning.png]] 23 janvier 2018: Un représentant du projet Dolibarr, avec des représentants de l&#039;APRIL et du logiciel libre de caisse Pasteque, ont été reçus au ministère des finances afin d&#039;échanger sur l&#039;interprétation du texte. Les interprétations faites sur cette page (ainsi que les réponses faites aux FAQ qui suivent) ont pu être confirmées. &lt;br /&gt;
Toutefois, il y a intention de réduire le périmètre aux seuls logiciels de caisse. A suivre donc. Une version de travail revue, du Bofip doit être publiée à un comité restreint d&#039;acteurs, dont l&#039;April, fin janvier, afin de faciliter le travail d&#039;interprétations, pour une publication officielle au printemps. En attendant, on ne peut qu&#039;attendre (Cette publication aura lieu finallement le 4 juillet 2018 et une grande partie de nos retours s&#039;avèrera prise en compte).&lt;br /&gt;
&lt;br /&gt;
[[File:Warning.png]] 18 mai 2018: Réponse du gouvernement à quelques questions sur le sujet: https://www.nosdeputes.fr/15/question/QE/3257 . La réponse évoque l&#039;année de tolérance en précisant que l&#039;utilisateur devra montrer sa diligence en cas de contrôle (Soin appliqué à la mise en oeuvre de l&#039;obtention de l&#039;attestation individuelle)&lt;br /&gt;
&lt;br /&gt;
[[File:Warning.png]] 5 juin 2018: Réponse du gouvernement à quelques questions sur le sujet: https://www.nosdeputes.fr/15/question/QE/2736 . La réponse évoque l&#039;année de tolérance en précisant que l&#039;utilisateur devra montrer sa diligence en cas de contrôle (Soin appliqué à la mise en oeuvre de l&#039;obtention de l&#039;attestation individuelle)&lt;br /&gt;
&lt;br /&gt;
[[File:Warning.png]] 4 juillet 2018: Publication de la version corrigée du texte de loi au BOFIP: https://bofip.impots.gouv.fr/bofip/10691-PGP.html?identifiant=BOI-TVA-DECLA-30-10-30-20180704. Cette version conforte tous les points évoqués (le texte clarifie la loi et confirme que les interprétations vu ci-dessus s&#039;avéraient justes), avec toutefois 2 ajouts majeures:&lt;br /&gt;
&lt;br /&gt;
*La définition de logiciel de caisse a été donnée:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Un logiciel ou système de caisse est un système informatique doté d&#039;une fonctionnalité de caisse, laquelle consiste à mémoriser et à enregistrer extra-comptablement des paiements reçus en contrepartie d&#039;une vente de marchandises ou de prestations de services c&#039;est-à-dire que le paiement enregistré ne génère pas concomitamment, automatiquement et obligatoirement la passation d&#039;une écriture comptable.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ne sont pas considérés comme enregistrés extra-comptablement, quel que soit le mode de paiement, les paiements pour lesquels le logiciel ou système déclenche obligatoirement, instantanément et automatiquement, sans intervention humaine, une écriture dans le système d’information comptable.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Sont visés tous les logiciels ou systèmes de caisse permettant l&#039;enregistrement des règlements de leurs clients quel que soit le mode de règlement (espèces, chèques, CB, virements, prélèvements...).&#039;&#039;&lt;br /&gt;
Cette obligation s&#039;applique y compris en cas d&#039;enregistrement sur un logiciel ou système accessible en ligne.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Sans que cette liste ne soit limitative, sont concernés par l&#039;obligation les instruments de mesures réglementés, comme les balances, mais également les rampes de boissons automatisées, les automates de paiement ou encore les distributeurs automatiques de marchandises (boissons, gâteaux…) qui disposent d&#039;une fonctionnalité de caisse.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Seule cette fonctionnalité de caisse, et non les autres fonctions telles que celles relatives à la pesée, doivent être certifiées.&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*L&#039;article 35 qui est un allègement du périmètre: Les professionnels réalisant leur paiement avec l&#039;intermédiation d&#039;un établissement de crédit européen ne sont plus soumis à l&#039;obligation de certification ou attestation. Mais attention, on parle bien de paiements &amp;quot;directs&amp;quot; (donc Virement ou Carte de Débit ou de Crédit mais pas chèques qui n&#039;est pas &amp;quot;direct&amp;quot;) et surtout via un système de paiement géré par un organisme bancaire européen. En d&#039;autres terme, si on ne fait que du paiement CB avec un module de VAD d&#039;une banque, on est NON soumis à la certification/attestation mais si le paiement CB (carte de crédit ou débit) se fait par un service comme Stripe ou Paypal, sauf à être exempté pour un autre motif, on l&#039;est toujours (car l&#039;état français n&#039;a pas de moyen d&#039;obtenir le listing des transactions via ces solutions, bien que le paiement soit par carte bancaire).&lt;br /&gt;
&lt;br /&gt;
==Conclusion pour le logiciel Open Source Dolibarr ERP CRM==&lt;br /&gt;
&lt;br /&gt;
Dolibarr ERP CRM est une application de gestion qui enregistre des factures (factures acomptes, avoirs ou standards). L&#039;application permet aussi d&#039;enregistrer des paiements. Le module POS (celui fourni par défaut), fonctionne aussi sur le principe de génération systématique de facture et d&#039;enregistrement du paiement en temps réel. L&#039;application est donc bien dans le périmètre (comme n&#039;importe quel autre ERP, logiciel de caisse ou de Ecommerce). Mais en tant qu&#039;utilisateur, vous n&#039;êtes concerné que si vous n&#039;etes pas en franchise de base ET si vous l&#039;utilisez pour saisir des &#039;&#039;&#039;encaissements&#039;&#039;&#039; de particuliers (B2C=Business To Consumer) ou en mode mixte, à savoir encaissement aussi bien de particuliers (B2C) et d&#039;entreprises (B2B), quelquesoit le ratio entre les 2. Si vous ne facturez QUE des professionnels, dans ce cas, vous n&#039;êtes pas concerné par la LF2018 (Loi finance 2018).&lt;br /&gt;
&lt;br /&gt;
Dans le cas où vous utilisez le module Facture, ou le module POS, pour encaisser des particuliers, et êtes assujettis à la TVA mais pas en franchise, vous êtes concerné. Il vous faut alors vous assurer que le module &amp;quot;Log inaltérable&amp;quot; (&amp;quot;BlockedLog&amp;quot;) fourni avec la v10 est bien activé. Sa désactivation, une fois les premières saisies faites ne sera ensuite plus envisageable. Avec la migration en v10 et l&#039;activation de ce module vous aurez alors une version conforme sur le plan technique et fonctionnel. Il vous faudra ensuite, obtenir une attestation de conformité auprès d&#039;un tiers qui confirme cette conformité technique/fonctionnelle pour être conforme d&#039;un point de vue juridique. Si vous utilisez une version en ligne Saas/Cloud fournie par un tiers, ce dernier vous la fournira surement (voir exemples sur https://saas.dolibarr.org). Dans le cas contraire, il vous faut contactez votre intégrateur informatique ou un prestataire pouvant fournir cette d&#039;attestation.&lt;br /&gt;
&lt;br /&gt;
Remarque: cette contrainte sera identique quelque soit l&#039;ERP choisi. L&#039;utilisation d&#039;outils non spécialisés comme un tableur Excel ou autre, DANS LE BUT D&#039;AVOIR UNE CONSERVATION DE TRACES DES PAIEMENTS, ne devient plus permis car le logiciel n&#039;étant pas conforme, vous ne réussirez pas à trouver un prestataire pour fournir l&#039;attestation de conformité. Par contre, si l&#039;utilisation que vous faites d&#039;Excel ou autre tableur est à des fins juste de &amp;quot;génération du PDF de la facture&amp;quot; sans &#039;&#039;conservation des données&#039;&#039; (Le texte de loi parle alors de logiciel &amp;quot;facturier&amp;quot;), vous pouvez continuer à l&#039;utiliser ainsi. Dans le cas où l&#039;utilisation est faite pour conserver trace de vos paiements, et si vous êtes dans le périmètre de la loi, un logiciel &#039;&#039;&#039;certifié OU attestable&#039;&#039;&#039; sur la partie encaissement (comme l&#039;est Dolibarr) devient obligatoire.&lt;br /&gt;
&lt;br /&gt;
Voyons aussi, par une autre approche, à savoir un système de question-réponse, comment synthétiser autrement tout cela:&lt;br /&gt;
&lt;br /&gt;
=Questions / Réponses (FAQ)=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==J&#039;utilise Dolibarr ou autre logiciel ERP, suis-je concerné, pour quelle fonctionnalité ?==&lt;br /&gt;
&lt;br /&gt;
*Votre logiciel n&#039;est concerné que si vous êtes &#039;&#039;&#039;assujetties à la TVA (et pas en franchise en base de TVA)&#039;&#039;&#039;, ET si vous l&#039;utilisez pour saisir des &#039;&#039;&#039;encaissements de particuliers&#039;&#039;&#039; (B2C=Business To Consumer) ou en mode mixte, à savoir encaissement aussi bien de particuliers (B2C) et d&#039;entreprises (B2B), quelque soit le ratio entre les 2, quelque soit les modes de paiement utilisés (sauf à ne faire que du paiement direct par l&#039;intermédiation d&#039;un organisme bancaire européen). Donc:&lt;br /&gt;
**si vous n&#039;encaissez pas d&#039;argent, vous n&#039;êtes PAS concerné.&lt;br /&gt;
**si vous êtes une association/organisme non assujettie à la TVA (association, médecin, ...), vous n&#039;êtes PAS concerné.&lt;br /&gt;
**si vous êtes un professionnel bénéficiant du régime de remboursement forfaitaire de TVA agricole, vous n&#039;êtes PAS concerné.&lt;br /&gt;
**si vous êtes un auto-entrepreneur, vous n&#039;êtes PAS concerné (car assujettie en franchise en base).&lt;br /&gt;
**si vous êtes une entreprise dont l&#039;intégralité des encaissements est réalisée avec l&#039;intermédiation directe d’un établissement de crédit (système de paiement VAD d&#039;une banque ou Virements), vous n&#039;êtes PAS concerné. Remarque: Des encaissements par Carte bancaire via Paypal ou via Stripe ne sont pas des encaissements avec intermédiation directe d’un établissement de crédit, car ni Paypal ni Stripe ne sont des établissements de crédit (comprendre Banque).&lt;br /&gt;
**si vous ne facturez QUE des entreprises/professionnels, dans ce cas, vous n&#039;êtes PAS concerné non plus par la loi finance (non B2C). Remarque: Si vous facturez des professionnels la plupart du temps et, exceptionnellement de temps en temps des particuliers via un mode de paiement non assuré par un organisme de crédit européen, si vous pouvez gérer/suivre ces facturations de particuliers à part sur papier, vous sortez alors du champ et n&#039;êtes pas concerné.&lt;br /&gt;
&lt;br /&gt;
Si vous n&#039;êtes dans aucun des cas d&#039;exception précédent, vous êtes concernés si vous utilisez le module Facture pour enregistrer vos paiements et/ou le module POS. Il vous faut alors vous assurer que le module &amp;quot;Log inaltérable&amp;quot; (&amp;quot;BlockedLog&amp;quot;) fourni avec la v10 ou plus est bien activé. Sa désactivation, une fois les premières saisies faites ne sera ensuite plus envisageable. Avec la migration en v10 ou plus et l&#039;activation de ce module vous aurez alors une version conforme sur le plan technique et fonctionnel. Il vous faudra ensuite, obtenir une attestation de conformité auprès d&#039;un tiers qui confirme cette conformité technique/fonctionnelle pour être conforme d&#039;un point de vue juridique. &lt;br /&gt;
&lt;br /&gt;
Si vous utilisez une version en ligne Saas/Cloud fournie par un tiers, ce dernier vous la fournira surement (exemple: https://www.dolicloud.com ou https://www.novafirstcloud.com). Dans le cas contraire, il vous faut contactez votre intégrateur ou un prestataire pouvant fournir cette d&#039;attestation.&lt;br /&gt;
&lt;br /&gt;
Remarque: cette contrainte sera identique quelque soit l&#039;ERP choisi. L&#039;utilisation d&#039;outils non spécialisés comme un tableur Excel ou autre, DANS LE BUT D&#039;AVOIR UNE CONSERVATION DE TRACE DES PAIEMENTS, ne devient plus permis car le logiciel n&#039;étant pas conforme, vous ne réussirez pas à trouver un prestataire pour fournir l&#039;attestation de conformité. Par contre, si l&#039;utilisation que vous faites d&#039;Excel ou autre tableur est à des fins juste de &amp;quot;génération du PDF de la facture&amp;quot; sans &#039;&#039;conservation des données&#039;&#039; (Le texte de loi parle alors de logiciel &#039;&#039;facturier&#039;&#039;), vous pouvez continuer à l&#039;utiliser ainsi. Dans le cas ou l&#039;utilisation est faite pour conserver trace de vos paiements, et si vous êtes dans le périmètre de la loi, un logiciel &#039;&#039;&#039;certifié OU attestable&#039;&#039;&#039; sur la partie encaissement (comme l&#039;est Dolibarr) devient obligatoire (dans le cas d&#039;un logiciel non certifié mais attestable comme Dolibarr, il vous faudra obtenir une attestation d&#039;un Tiers).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Je suis concerné, mais à partir de quand ?==&lt;br /&gt;
&lt;br /&gt;
*Si vous êtes concerné, la loi s&#039;applique au 1er janvier 2018. Toutefois, le texte de loi clarifié datant de juillet 2018, si on ajoute le temps requis par les logiciels pour s&#039;adapter à la version définitive, puis le temps de migration sur la nouvelle version, une tolérance est de mise la première année (donc 2018), à condition de montrer que vous suivez le sujet et avez attendu pour avoir le texte définitif puis pour avoir la version conforme puis pour avoir le  bon moment de faire votre migration. Si vous utilisez Dolibarr, les différentes évolutions de cette page montre que la démarche est engagée sur le logiciel depuis novembre 2016 et ce alors que le périmètre de la loi était encore contradictoire début novembre 2017.&lt;br /&gt;
&lt;br /&gt;
A la question posée en janvier 2018 au ministère des finances: &amp;quot;Que pouvons nous dire aux utilisateurs qui sont en attente de texte/règle clarifiée pour agir, sachant que la loi est sensé être déjà effective ?&amp;quot;, la réponse donnée a été que la première année (2018 donc), il y aurait tolérance, dès lors que vous montrez que vous avez pris une trajectoire sur 2018 pour bien faire. Cette année transitoire ayant été officiellement annoncée par le secrétaire d&#039;état, dont voici les propos:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;« Je veux toutefois rassurer les entreprises : la direction générale des finances publiques les accompagnera pendant la première année d’application de ce dispositif, en vertu non pas d’une culture de la sanction ou du contrôle fondée sur le présupposé d’une malveillance des entreprises, mais d’un rôle de conseil. La DGFIP tiendra notamment compte des démarches engagées et des diligences effectuées par les entreprises pour obtenir le certificat ou l’attestation. C’est dans cet esprit que nous travaillerons. Les deux organismes certificateurs prendront également leur part de cet effort de pédagogie, qui est normal. »&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==La nécessité d&#039;attestation ou certification disparaît-elle si on n&#039;enregistre nos paiements que via un mode de règlement qui laisse déjà des traces, comme les chèques ou cartes ?==&lt;br /&gt;
&lt;br /&gt;
Au départ, le type de règlement n&#039;avait aucun impact sur la loi. Tous les types de paiement (chèque, carte, liquide, virement, ...) rentrent dans le périmètre de la loi et aucun ne permet d&#039;être hors du champs d&#039;application. L&#039;amendement suivant https://www.nosdeputes.fr/15/amendement/235/1325C a tenté de restreindre le périmètre à un certain mode de paiement, mais a été rejeté.&lt;br /&gt;
&lt;br /&gt;
Ceci se comprend dans la mesure où, même un paiement par carte, peut se faire via un système comme Paypal ou Stripe, et que l&#039;administration fiscale française a très peu de pouvoir de contrôle sur une société étrangère.&lt;br /&gt;
Toutefois, il existe des cas où l&#039;administration fiscale a un pouvoir de contrôle, c&#039;est pourquoi, dans la re-publication au BOFIP de la loi le 4 juillet 2018, une exception a été introduite: Les professionnels réalisant leur paiement avec l&#039;intermédiation directe d&#039;un établissement de crédit européen ne sont plus soumis à l&#039;obligation de certification ou attestation. Mais attention, on parle bien de paiements &amp;quot;directs&amp;quot; (donc Virement ou Carte de Débit ou de Crédit, mais pas chèques qui n&#039;est pas &amp;quot;direct&amp;quot;) et surtout via un système de paiement géré par un organisme bancaire européen. En d&#039;autres terme, si on ne fait que du paiement CB avec un module de VAD d&#039;une banque, on est NON soumis à la certification/attestation mais si le paiement CB (carte de crédit ou débit) se fait par un service comme Stripe ou Paypal, sauf à être exempté pour un autre motif, on l&#039;est toujours (car l&#039;état français n&#039;a pas de moyen d&#039;obtenir le listing des transactions via ces solutions, bien que le paiement soit par carte bancaire).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Quelles sont les conditions pour une application concernée pour être conforme (conditions pour obtenir la certification OU être attestable conforme par un tiers) ?==&lt;br /&gt;
&lt;br /&gt;
*Principe d&#039;inaltérabilité&lt;br /&gt;
**Logs non modifiable par chaînage pour tout ce qui concerne les ventes, encaissements et impression (incluant toutes les mentions obligatoires d&#039;une facture)&lt;br /&gt;
**Quand une facture est validée, la trace et les informations qui ont donné lieu au contenu de la facture ne peuvent plus être modifier. Rem: Il est toujours possible de modifier mais la trace historique (log archivé) doit rester. Si un changement est fait, ce changement doit lui aussi être tracé et reprendre toutes les nouvelles informations et être lui aussi non effaçable.&lt;br /&gt;
**Liens de correspondance afin de vérifier différence entre les logs/archives et les tables de factures et paiements.&lt;br /&gt;
&lt;br /&gt;
*Conservation sur 6 ans ou plus (Remarque: Dolibarr conserve les données en base à vie)&lt;br /&gt;
&lt;br /&gt;
*Fonction &amp;quot;Archiver&amp;quot; annuellement qui permet d&#039;exporter dans un fichier externe dans un format lisible sans le logiciel, et par l&#039;administration, pour consulter l&#039;archive (et retrouver les infos qui compose la facture, les paiements).&lt;br /&gt;
&lt;br /&gt;
*Fournir, soit la certification de conformité du logiciel, soit une attestation de conformité (Voir dans les FAQ plus loin &amp;quot;Quel éditeur peut fournir des attestations pour ma version ?&amp;quot; sur comment l&#039;obtenir)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
!!! En d&#039;autres termes, il ne sera plus possible d&#039;utiliser des logiciels tableurs comme Excel ou Google Apps, ni autre solution développée soi même pour avoir une trace et conservation de vos paiements, sans considération de cette loi (sauf à continuer de saisir en parallèle soit dans un autre système conforme, soit sur le bon vieux carnet à souche). Mais vous pouvez continuer à utiliser votre tableur à des fins de logiciel pour générer vos Factures (la loi parle de &amp;quot;logiciel facturier&amp;quot;) si il n&#039;y a pas de conservation de données (le logiciel est alors considéré comme simple facturier et donc hors périmètre). &lt;br /&gt;
Pour un suivi et conservation de vos encaissements via un outils informatique, des logiciels, conforme loi finance 2016 comme Dolibarr ERP CRM v10 ou + deviennent alors obligatoires, dès lors que l&#039;on est concerné (voir FAQ &#039;&#039;&#039;...suis-je concerné...&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Quelle est la différence entre certification et attestation ?==&lt;br /&gt;
&lt;br /&gt;
La certification est une procédure par laquelle une tierce partie, l’organisme certificateur (Par exemple la LNE ou L&#039;AFNOR), donne une assurance écrite qu’un système d’organisation, un processus, une personne, un produit ou un service est conforme à des exigences spécifiées dans une norme ou un référentiel. Elle est encadrée par le Code de la Consommation. Sur un logiciel, la certification est faite pour une version donnée sur le périmètre de l&#039;application ou d&#039;une partie de l&#039;application uniquement. Chaque nouvelle version devant être re-certifiée.&lt;br /&gt;
&lt;br /&gt;
L&#039;attestation de conformité est fournie par une tierce partie également, mais ce dernier n&#039;a pas besoin d&#039;être un organisme certifiant. Il peut s&#039;agir de n&#039;importe quelle société. C&#039;est souvent l&#039;éditeur du logiciel, mais il peut s&#039;agir en fait de n&#039;importe quelle société. Cette attestation est une déclaration par laquelle l’éditeur témoigne et s’engage à ce que le système d’encaissement qu’il atteste respecte les conditions d’inaltérabilité, de sécurisation, de conservation et d’archivage des données. L&#039;attestation est elle aussi valable pour une version et éventuellement un paramétrage donné.&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de la loi des finances pour 2016, et si vous êtes dans le périmètre de cette loi (voir autres FAQ), vous devez, soit avoir un logiciel &amp;quot;certifié&amp;quot;, soit avoir un logiciel &amp;quot;attesté conforme&amp;quot; (Notez que le terme &amp;quot;certifié&amp;quot; est souvent utilisé dans les textes (plus rarement dans le texte définitif de la loi) comme raccourci pour signifier &amp;quot;certifié ou attesté conforme&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==L&#039;application Dolibarr sera-t-elle certifiée par l&#039;éditeur ?==&lt;br /&gt;
&lt;br /&gt;
Pour Dolibarr, et de nombreux logiciels Open Source, il n&#039;y a pas un éditeur bien identifié car de nombreuses sociétés différentes contribuent à son évolution.&lt;br /&gt;
&lt;br /&gt;
Au sens de la loi, l&#039;éditeur du logiciel est le &#039;&#039;&#039;&amp;quot;dernier&amp;quot; qui a modifié/validé le code&#039;&#039;&#039;. L&#039;entité qui postule pour une certification peut donc être, aussi bien l&#039;association Dolibarr, comme tout intégrateur ou autre institution externe. &lt;br /&gt;
&lt;br /&gt;
Il est possible que l&#039;association Dolibarr, qui a pour rôle la promotion du logiciel, fasse les démarches pour obtenir la certification pour certaines versions majeures, celles qui sont officiellement packagées par le release manager et qui sont mises à disposition sur l&#039;espace de téléchargement officiel par l&#039;association. Il est fort probable que seules quelques versions bien identifiées feront l&#039;objet d&#039;une demande de certification. Toutefois, cette obtention de certification (Certification LNE ou certification NF525) n&#039;est pas obligatoire pour être conforme. L&#039;autre solution, celle de l&#039;obtention d&#039;une attestation s&#039;avère plus simple.&lt;br /&gt;
Nous encourageons donc les utilisateurs qui ont obligation d&#039;utiliser un logiciel conforme anti-fraude à la TVA selon la loi finance 2016 (donc les assujettis à TVA hors franchise de base, et qui facture/encaisse des particuliers) à &#039;&#039;&#039;se tourner vers la solution d&#039;attestation&#039;&#039;&#039;. Voir point suivant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==L&#039;attestation de conformité, autre possibilité, sera-t-elle fournie par l&#039;éditeur ou autre tiers ?==&lt;br /&gt;
&lt;br /&gt;
L&#039;autre solution pour être en règle est d&#039;obtenir une attestation de conformité de votre logiciel de caisse. &lt;br /&gt;
 &lt;br /&gt;
En tant qu&#039;utilisateur, et si vous êtes dans le périmètre de la loi, vous pourrez obtenir une attestation auprès de n&#039;importe quel tiers/intégrateur prêt à la fournir (en général moyennant finance), ou vous la délivrer à vous même si vous êtes une société d&#039;édition de logiciel. Voir les 2 FAQ suivantes pour savoir qui pourra délivrer les attestations de conformité...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Quel éditeur peut fournir des attestations pour ma version, à quel prix ?==&lt;br /&gt;
&lt;br /&gt;
N&#039;importe quelle société qui a les compétences pour analyser le logiciel et vérifier que ses fonctionnalités sont bien en règle peut fournir une attestation à autrui. Le code d&#039;une application libre étant ouvert, toute société compétente dans la technologie du produit, peut maîtriser le code aussi bien que les développeurs initiaux. Une telle société peut donc être qualifiée d&#039;&amp;quot;éditeur&amp;quot;, même si elle n&#039;a pas produit ou très peu produit de code au projet final, et par conséquent, et à même de fournir un attestation individuelle à ses clients.&lt;br /&gt;
&lt;br /&gt;
Le BOFIP dit clairement:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;310. Lorsque le logiciel ou système est conçu de manière ouverte pour permettre son adaptation aux besoins spécifiques des clients, on entend par « éditeur » qui peut valablement demander la certification ou fournir l&#039;attestation individuelle.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Bref, si vous utilisez une version en ligne saas/cloud fournie par un tiers, ce dernier vous la fournira surement (Exemple avec https://www.dolicloud.com ou encore https://www.novafirstcloud.com). Dans le cas contraire, il vous faut contactez votre intégrateur ou un prestataire pouvant fournir cette d&#039;attestation. Remarque: cette contrainte sera identique quelque soit l&#039;outil d&#039;enregistrements des encaissements choisi.&lt;br /&gt;
&lt;br /&gt;
En ce qui concerne le prix, tout dépend du tiers qui fournit l&#039;attestation. Certains, par exemple, pourront donner l&#039;attestation gratuitement à condition d&#039;héberger le logiciel attesté chez eux. D&#039;autres vous feront payer la prestation d&#039;audit et la délivrance de l&#039;attestation. Cela peut être de manière récurrente si l&#039;attestation doit être réémise régulièrement suite à modification/mise à jour de l&#039;application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==La loi finance est-elle compatible avec les licences libres de logiciels de caisse ?==&lt;br /&gt;
&lt;br /&gt;
Si le logiciel libre n&#039;est pas un logiciel qui réalise des encaissements ou si vous n&#039;encaissez que des entreprises, la question ne pose même pas. &lt;br /&gt;
&lt;br /&gt;
Si le logiciel libre est un logiciel d&#039;encaissements et que les clients encaissés sont des particuliers, alors oui, le logiciel libre est parfaitement compatible: &lt;br /&gt;
&lt;br /&gt;
Le paragraphe 40 du BOI le dit explicitement en reconnaissant aux utilisateurs la possibilité « &#039;&#039;d&#039;adapter le logiciel à leurs besoins spécifiques&#039;&#039; » :  &lt;br /&gt;
&lt;br /&gt;
&amp;quot;&#039;&#039;... Sont notamment concernés les logiciels de comptabilité ou de gestion dits &amp;quot;libres&amp;quot; ou développés en interne, c&#039;est-à-dire développés par l&#039;assujetti lui-même. On entend par logiciel libre un logiciel dont les utilisateurs ont un libre usage, une libre étude, une libre modification et une libre distribution. Ces libertés permettent aux utilisateurs d&#039;adapter le logiciel à leurs besoins spécifiques. Les modifications que les utilisateurs peuvent apporter au logiciel libre ou développé en interne ne doivent pas avoir pour objet ou pour effet d&#039;altérer le respect des conditions d&#039;inaltérabilité, de sécurisation, de conservation et d&#039;archivage décrites ci-dessous...&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Par ailleurs, le paragraphe 310 évoque à nouveau le cas des logiciels « conçus de manière ouverte », c.à.d les logiciels libres.&lt;br /&gt;
&lt;br /&gt;
Donc, aucune objection à utiliser des logiciels libres. Mais attention, l&#039;autorisation de modification est restreinte au code et paramètres &amp;quot;triviaux&amp;quot;. En effet, que ce soit lors d&#039;une utilisation de la version certifiée ou d&#039;une version rendue conforme par obtention d&#039;une attestation de conformité, la nouvelle loi vous prive d&#039;une partie de votre liberté de &#039;&#039;&#039;modifier le logiciel de caisse SUR LES PARTIES qui concernent les fonctions d&#039;inaltérabilité, sécurisation, conservation et archivage&#039;&#039;&#039;. En effet, en faisant une telle modification, la version est considérée comme changée de manière &amp;quot;non triviale&amp;quot;, aussi la certification n&#039;est plus valable, l&#039;attestation d&#039;un tiers non plus. Les logiciels libres sont donc tout à fait légaux et compatible avec la loi, par contre, c&#039;est à condition de ne pas faire n&#039;importe quelle modification. Vous perdez donc une partie de votre liberté (non pas du fait de la licence du logiciel qui le permet, mais du fait de la loi qui est prioritaire sur les droits accordés par la licence. Le logiciel libre est donc bien compatible avec la loi, mais la loi vous prive d&#039;une des 4 libertés que le logiciel libre apportait, celle de le modifier librement. Vous pouvez toujours le faire, mais à condition que cela ne porte pas sur le comportement de l&#039;encaissement, ou, si cela porte sur celui-ci, que vous ré-obteniez soit la certification à nouveau (complexe et payant), soit une nouvelle attestation d&#039;un éditeur ou intégrateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pour ma propre utilisation, puis-je m&#039;auto délivré l&#039;attestation de conformité pour une version que j&#039;ai modifié moi même sur les parties d&#039;encaissements==&lt;br /&gt;
&lt;br /&gt;
Uniquement un nombre très restreints d&#039;entreprise le pourront, celles qui sont dans le domaine de l&#039;&#039;&#039;&#039;Edition de logiciel de comptabilité ou de gestion ou de système de caisse&#039;&#039;&#039;. Toutefois, sur le plan juridique une telle classification n&#039;existe que par les faits. En effet, on serait tenté de penser que les entreprises ayant le codes NACE (Code NACE = terme européen du code NAF/APE) &#039;&#039;&#039;58.29&#039;&#039;&#039; qui signifie &#039;&#039;&#039;Edition de logiciel autre&#039;&#039;&#039; et/ou &#039;&#039;&#039;62.01Z&#039;&#039;&#039; qui signifie &#039;&#039;&#039;Développement de logiciels&#039;&#039;&#039; pourrait être qualifiées. Toutefois, il faut avoir en tête que le code APE est &amp;quot;&#039;&#039;attribué par l&#039;INSEE à des fins statistiques, et ne saurait suffire à créer des droits ou des obligations pour les entreprises&#039;&#039;&amp;quot; (Ceci est dans le décret qui approuve la nomenclature: décret n° 2007-1888 du 26 décembre 2007, article 5, point I). Dans la réalité, ce code est malgré tout utilisé pour avoir des présomptions d&#039;activité au niveau fiscal ou administratif. Donc, c&#039;est un avantage, mais aucunement une garantie et inversement, une entreprise n&#039;ayant pas cette classification peut avoir des arguments suffisamment solide pour démontrer son activité d&#039;&amp;quot;éditeur de logiciel de caisse&amp;quot;. &amp;lt;ref&amp;gt;BOI-TVA-DECLA-30-10-30-20180704, point 375&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Je suis intégrateur ou développeur informatique, je sais que Dolibarr v10 et ultérieur répond aux exigences de conformité, puis-je délivrer l&#039;attestation de conformité, à mon client qui est en v10 ou plus, moi même ?==&lt;br /&gt;
&lt;br /&gt;
Oui. A vous de fournir/indiquer à votre client la version/paramétrage que vous attestez. Vous pouvez générez la signature de la version et paramétrage que vous attestez avec l&#039;outil &#039;&#039;&#039;generate_filelist_xml.php&#039;&#039;&#039; fourni avec les sources de l&#039;application.&lt;br /&gt;
Cette signature vous permettra de vérifier que votre client n&#039;a pas fait de &#039;&#039;&#039;modification de code ou paramétrage sur les parties qui concernent l&#039;encaissement&#039;&#039;&#039;. Auquel cas, il devient éditeur, et votre attestation n&#039;est plus valide, vous n&#039;êtes alors plus responsable d&#039;une apparition d&#039;une fonctionnalité non conforme dans le logiciel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Je suis intégrateur ou développeur informatique, quel outil ai-je à ma disposition pour m&#039;assurer que les exigences sur le logiciel sont bien assurées par une version installée de Dolibarr==&lt;br /&gt;
&lt;br /&gt;
La version 7.0 contient l&#039;ensemble des exigences et notamment le module &amp;quot;Log inaltérable&amp;quot; qu&#039;il vous revient d&#039;activer (l&#039;obligation d&#039;activation dépend du fait que vous êtes concerné ou non, voir FAQ précédente pour cela). L&#039;application est une application Open Source, le client utilisateur peut réussir à modifier le code (notons que ceci est aussi possible avec du propriétaire, juste plus difficile). De même, un hacker peut toujours réussir à trafiquer un logiciel. Face à cela, Dolibarr fourni, à partir de la version 6.0, un outil pour obtenir la liste de tous les fichiers qui auraient été modifiés par rapport à la version officielle, ou par rapport à une version packagée par un intégrateur tiers, ainsi que la liste des paramètres de configuration obligatoires pour la conformité (voir plus bas) et qui aurait aussi été modifiés. Le certificat étant délivré pour une version avec une configuration donnée, si un utilisateur ou hacker a pu altérer partiellement l&#039;application sur du code ou des paramètres sensibles, l&#039;outil de contrôle pourra le révéler, auquel cas, la responsabilité de non conformité n&#039;est plus du ressort de l&#039;entité qui a fournit l&#039;attestation, puisque ce n&#039;est plus la même application, mais de la responsabilité de celui qui est à l&#039;origine des modifications.&lt;br /&gt;
&lt;br /&gt;
Paramètres recommandées à contrôler/imposer dans une attestation:&lt;br /&gt;
&lt;br /&gt;
*Pays de la société (doit rester à France). Rem: Une fois le premier encaissement fait avec le module &amp;quot;Log inaltérable LF 2016&amp;quot;, sa désactivation renverra un warning.&lt;br /&gt;
*Constante MAIN_MODULE_BLOCKEDLOG doit être définie (Cela signifie que le module &amp;quot;Log inaltérable LF 2016&amp;quot; est bien actif).&lt;br /&gt;
&lt;br /&gt;
Optionnellement, vous pouvez:&lt;br /&gt;
&lt;br /&gt;
*Imposer que la constante BLOCKEDLOG_DISABLE_NOT_ALLOWED_FOR_COUNTRY soit définie et contient le code pays FR (ceci bloque la désactivation du module par erreur).&lt;br /&gt;
&lt;br /&gt;
Remarque:&lt;br /&gt;
Vous pouvez utiliser l&#039;outil &#039;&#039;&#039;build/generate_filecheck_xml.php&#039;&#039;&#039; pour générer un fichier emprunte de la version et/ou paramétrage donné que vous voulez imposer.&lt;br /&gt;
Ensuite utilisez l&#039;outil dans le menu &#039;&#039;&#039;Accueil - Outils administration - Dolibarr - Files integrity check&#039;&#039;&#039; ou bien à distance l&#039;API &#039;&#039;&#039;/setup/checkintegrity&#039;&#039;&#039; (le module API REST doit avoir été activée) pour vérifier qu&#039;une version est conforme à ce fichier emprunte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Je suis dans le périmètre de la loi, j&#039;ai ajouté un module externe sur mon Dolibarr, faut-il une attestation Loi Finance pour ce module ?==&lt;br /&gt;
&lt;br /&gt;
Il n&#039;y a pas notion de &amp;quot;certificat ou d&#039;attestation loi finance&amp;quot; sur un module:&lt;br /&gt;
&lt;br /&gt;
En effet, ce qui doit être certifié ou attesté, c&#039;est la partie du logiciel qui réalise les enregistrements des paiements, pris dans le contexte de l&#039;ensemble du système d&#039;information, et non chaque module de votre application individuellement. Le logiciel Dolibarr v10 ou + est attestable, donc, si vous êtes dans le périmètre de la loi, ce qu&#039;il vous faut obtenir, c&#039;est une attestation de conformité de l&#039;ensemble de la solution, validant les modules ajoutés qui impactent l&#039;enregistrement des paiements. Donc, &lt;br /&gt;
&lt;br /&gt;
*Si vous êtes dans le périmètre de la loi et que le module ajouté ne concerne pas l&#039;enregistrement des paiements, il n&#039;y a rien de particulier à faire de plus (dès lors que vous êtes dans le périmètre de la loi, vous devez obtenir l&#039;attestation pour les fonctions encaissements de paiements de votre Dolibarr, peu importe que vous ajoutiez ce module ou pas, le module n&#039;ayant pas d&#039;effet sur les fonctions d&#039;encaissements, on perle d&#039;effet trivial ou mineur au code).&lt;br /&gt;
*Si toutefois, vous êtes dans le périmètre de la loi et que le module touche à la partie encaissement, il faudra que le tiers fournissant l&#039;attestation prenne en considération ce module (si vous aviez déjà obtenu l&#039;attestation, il vous faudra la ré-obtenir car l&#039;ajout du module l&#039;invalide puisque ce module touche au code de la partie encaissement des paiements).&lt;br /&gt;
&lt;br /&gt;
La nature du module doit vous permettre de savoir si c&#039;est un module qui touche à l&#039;enregistrement des encaissements ou pas. Dans le doute, renseignez vous auprès de l&#039;auteur du module (ce n&#039;est pas lui qui fournira l&#039;attestation mais pourra dire si le module doit être pris en compte ou non dans le processus d&#039;attestation).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Travaux dans Dolibarr pour permettre la conformité via attestation=&lt;br /&gt;
&lt;br /&gt;
Et Dolibarr dans tout cela ?&lt;br /&gt;
Dolibarr v10+ est prêt et attestable sur l&#039;intégralité de ses modules standard (En fait, il l&#039;est même depuis la v7 si vous n&#039;utilisez pas de module POS).&lt;br /&gt;
Voici le suivi des travaux réalisés depuis la v5: [[Loi article 88 finances 2016 et Certification NF525 - Travaux Dolibarr]]&lt;br /&gt;
&lt;br /&gt;
= Où trouver un modèle d&#039;attestation ? =&lt;br /&gt;
Les services des impôts proposent un modèle d&#039;attestation individuelle que vous pouvez consulter [https://bofip.impots.gouv.fr/bofip/10692-PGP.html/identifiant%3DBOI-LETTRE-000242-20201230 dans le Bulltein Officiel des Impots du 30/12/2020]&lt;br /&gt;
&lt;br /&gt;
=Notes et références=&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Synthèse détaillée du BOFIP par La Revue Fiduciaire, rédigé le 06/10/2016:  [http://revuefiduciaire.grouperf.com/article/3661/hb/20160919173548859.html Article sur la revue fiduciaire]&lt;br /&gt;
*Synthèse courante par l&#039;APRIL (document en évolution permanente): https://pad.april.org/p/logiciel-caisse-publication-BOI&lt;br /&gt;
*Article de l&#039;APRIL: https://www.april.org/loi-de-finances-2016-une-doctrine-fiscale-qui-reconnait-les-logiciels-libres-mais-avec-une-marge-de&lt;br /&gt;
*Echanges sur les mailing-list de l&#039;April: https://listes.april.org/wws/arc/comptabilite/ (réservé aux adhérents April)&lt;br /&gt;
*Note d&#039;information très courte du service public: https://www.service-public.fr/professionnels-entreprises/actualites/A10279&lt;br /&gt;
*http://creativekara.fr/doku.php?id=pasteque:lf2016&lt;br /&gt;
*Réunion entre le chef de projet Dolibarr, autres représentants April et le ministère des finances en 2008 pour participation à la refonte et clarification du texte de loi.&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=File:Type_fiche_dolibarr.png&amp;diff=49635</id>
		<title>File:Type fiche dolibarr.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=File:Type_fiche_dolibarr.png&amp;diff=49635"/>
		<updated>2021-02-04T15:18:23Z</updated>

		<summary type="html">&lt;p&gt;Iouston: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;type fiche dolibarr&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=File:2021-02-04_16_12_41-Tiers_%2B_multicompany.png&amp;diff=49634</id>
		<title>File:2021-02-04 16 12 41-Tiers + multicompany.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=File:2021-02-04_16_12_41-Tiers_%2B_multicompany.png&amp;diff=49634"/>
		<updated>2021-02-04T15:13:48Z</updated>

		<summary type="html">&lt;p&gt;Iouston: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;icone pour personnaliser les colonnes des vues&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Setup_Other&amp;diff=48476</id>
		<title>Setup Other</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Setup_Other&amp;diff=48476"/>
		<updated>2020-09-30T08:48:20Z</updated>

		<summary type="html">&lt;p&gt;Iouston: /* Proposals Module */ ajout de l&amp;#039;option DOC_SHOW_FIRST_SALES_REP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- BEGIN origin interlang links --&amp;gt;&lt;br /&gt;
&amp;lt;!-- You can edit this section but do NOT remove these comments&lt;br /&gt;
     Links below will be automatically replicated on translated pages by PolyglotBot --&amp;gt;&lt;br /&gt;
[[fr:Paramétrage_Divers]]&lt;br /&gt;
[[es:Configuración_Varios]]&lt;br /&gt;
[[de:Erweiterte_Einstellungen]]&lt;br /&gt;
[[zh:其他设置]]&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Admin]]&lt;br /&gt;
{{TemplateDocUser}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Help About Screen&#039;&#039;&#039;: Other setup&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Menu Path&#039;&#039;&#039;: Home ► Setup ► Other&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Some options are not visible in the interface (often because they are deprecated or are beta features). In most cases you do not need these functions and their use may make the application unstable.&lt;br /&gt;
&lt;br /&gt;
 {{warning|32px}} This page contains the list of some advanced development parameters. In most cases, it is parameters for internal usage, development, external modules, features in development not stable or that may lead to security risk. For standard usage of Dolibarr, such parameters &#039;&#039;&#039;SHOULD NOT&#039;&#039;&#039; be used. All experimental options are NOT supported. They may be removed in a future, modified at any version and break stability of your application.&lt;br /&gt;
&lt;br /&gt;
To enable/override a parameter you have to define the constant name and set it to 1 (unless otherwise stated) in &amp;lt;code&amp;gt;Home ► Setup ► Other Setup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Some unsupported and unstable options (experimental or development options)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Some options are not yet documented since they are not stable and not supported yet. The basic format of how the list is written is broken down in the example below:&lt;br /&gt;
&lt;br /&gt;
HIDDEN_CONFIG ► &#039;&#039;Description of config&#039;&#039; ► &#039;&#039;(specific version information) or values&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toclimit-1 tocinline&amp;quot;&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Global Options=&lt;br /&gt;
&lt;br /&gt;
*ADD_UNSPLASH_LOGIN_BACKGROUND ► The background image will be refreshed on every login page refresh. Background image is pulled from the popular open source image website Unsplash. If an already saved static background image exists, then this code will override it (but not delete the saved image). Warning: Using this may allow an external website to steel your login credentials ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_ALLOW_SVG_FILES_AS_IMAGES ► Allow to use SVG file as image files. Warning: This may introduce security vulnerability (javascript can be embedded into SVG file).&lt;br /&gt;
&lt;br /&gt;
*MAIN_APPLICATION_TITLE ► This will change the title of software (that appears on the login page by default). Warning, changing this may make Dolibarr version detection fail by smartphone applications like [[Application Android - DoliDroid]]&lt;br /&gt;
&lt;br /&gt;
*MAIN_AUTOFILL_DATE ► If this constant is defined (to something other than 0), the date of invoice, proposal, order or payment are auto-filled with the current date. It is highly recommended to NOT ENABLE this feature. This can create a lot of input errors with data not validated by users. This leads to incorrect values saved in the database causing confusion when you have to do your accountancy reports!&lt;br /&gt;
&lt;br /&gt;
*MAIN_AUTO_TIMESTAMP_IN_PUBLIC_NOTES ► Add a timestamp and user automatically when editing the &#039;&#039;public&#039;&#039; note.&lt;br /&gt;
&lt;br /&gt;
*MAIN_AUTO_TIMESTAMP_IN_PRIVATE_NOTES ► Add a timestamp and user automatically when editing the &#039;&#039;private&#039;&#039; note.&lt;br /&gt;
*MAIN_COUNTRIES_IN_EEC ► Country list in European Area (For VAT purpose) (v10.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DEFAULT_PAYMENT_TERM_ID ► With ID of a payment term, will use this as default payment term each time you create a new proposal, order, invoice (customer and supplier)&lt;br /&gt;
*MAIN_DEFAULT_PAYMENT_TYPE_ID► With ID of a payment type, will use this as default payment type each time you create a new proposal, order, invoice (customer and supplier) ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DEFAULT_LANGUAGE_FILTER ► Useful if you do not want to show en_US language option in combo boxes (other languages can easily be removed in langs directory but not en_US) ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_LANGUAGES_ALLOWED ► is a list of languages without spaces, example : fr_FR,en_US,de_DE,it_IT if defined, only those languages will appear in combos. ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_NOTES_TAB ►Show or hide notes tab in the card page&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_CONTACTS_TAB ► Show or hide contacts tab in the card page&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_FULL_SCANLIST ► Disables the complete scan of tables to allow the pagination to show total number of pages. May be useful to activate on systems with a very high quantity of data (tables with more than 2 000 000 records).&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_JQUERY_JNOTIFY ► Disable usage of &amp;lt;code&amp;gt;JNotify&amp;lt;/code&amp;gt; to show confirm or error messages&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_AJAX_COMBOX ► If you have a large number of third parties or products, you can disable the autocomplete feature on the third parties list by setting this constant to 1 ► (v3.6.0+)MAIN_DISABLE_MULTIPLE_FILEUPLOAD ► Disable users to upload multiple files at once.&lt;br /&gt;
*MAIN_DISABLE_TRUNC ► Disable all truncings in select list. (v7.0 and more)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLEDRAFTSTATUS ► Disable the status Draft for some objects (project, donation, ...)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DOC_USE_OBJECT_THIRDPARTY_NAME ► Add name of thirdparty at begin of generated document.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DOC_USE_TIMING ► Add a timestamp at end of generated document. Value must be format of timestamp. For example: &amp;lt;code&amp;gt;%Y%m%d%H%M&amp;lt;/code&amp;gt; (only for ODT files)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DOC_UPLOAD_NOT_RENAME_BY_DEFAULT ► Disable the auto renaming on upload file ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DOL_SCRIPTS_ROOT ► Define directory who contains &#039;scripts&#039; directory (e.g. &amp;lt;code&amp;gt;/var/www/dolibarr&amp;lt;/code&amp;gt;). Value of this variable may be requested by some external script or tools.&lt;br /&gt;
&lt;br /&gt;
*MAIN_ENABLE_LOG_TO_HTML ► If this constant is defined, it is possible to have logs inside pages by adding the parameter &amp;amp;logtohtml=1 into URL.&lt;br /&gt;
&lt;br /&gt;
*MAIN_ENABLE_IMPORT_LINKED_OBJECT_LINES ► Allow to import lines into current document from &amp;quot;linked&amp;quot; compatible documents ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_FIRST_TO_UPPER ► Dolibarr add uppercase to Third Parties, contacts or members names if not done. Warning, with some languages (whose words with uppercase are not same words, or pagecode does not always have an uppercase, like cyrillic languages), this feature may alter your data.&lt;br /&gt;
&lt;br /&gt;
*MAIN_ALL_TO_UPPER ► Dolibarr puts uppercase for Third Parties, contacts or members names if not done. Warning, with some languages (whose words with uppercase are not same words, or pagecode does not always have an uppercase, like cyrillic languages), this feature may alter your data. ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_FILESYSTEM_ENCODING ► With some PHP versions, PHP is not able to detect the page code for filesystem of the server OS. To solve this, Dolibarr assumes your OS filesystem is UTF-8 if on Linux or OSX system, and ISO-8859-1 if on Windows. If not, for example on a Windows server with a NTFS UTF-8 pagecode, you can set the variable &amp;lt;code&amp;gt;MAIN_FILESYSTEM_ENCODING&amp;lt;/code&amp;gt; to &amp;quot;&amp;lt;code&amp;gt;utf-8&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_FORCELANGDIR ► Relative path of the directory holding your custom &amp;lt;code&amp;gt;langs&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
*MAIN_HTML_TITLE ► Can be used to control how the html page title is formatted. If value contains key &#039;&amp;lt;code&amp;gt;noapp&amp;lt;/code&amp;gt;&#039;, application name will not be output. If value contains &#039;&amp;lt;code&amp;gt;thirdpartynameonly&amp;lt;/code&amp;gt;&#039;, on tab for thirdparties, only name of thirdparties are output. Value can be list of tags: &#039;&amp;lt;code&amp;gt;noapp;thirdpartynameonly&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
*MAIN_HELPCENTER_LINKTOUSE  ► Define the URL link to use as the target page for link &amp;quot;I need help&amp;quot; onto logon page&lt;br /&gt;
&lt;br /&gt;
*MAIN_LANDING_PAGE ► Can choose the first page to show after login (the landing page). This option works as a global option (llx_const) and per user option (llx_user_param). ► (v3.9+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_LOGOUT_GOTO_URL ► URL to which the user will be redirected after LOGOUT&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAXTABS_IN_CARD ► Maximum number of tabs visible. Others are grouped into a combo list.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING ► A warning saying setup of modules is not complete is shown if the number of enabled modules is lower or equal than this value (1 if not defined)&lt;br /&gt;
&lt;br /&gt;
*MAIN_MODULES_FOR_EXTERNAL ► Limit available modules for external users. By default value is &#039;&amp;lt;code&amp;gt;facture,commande,contact,propal,projet,contrat,societe,ficheinter,expedition,agenda&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
*MAIN_NO_CONCAT_DESCRIPTION ► Allow to use only input custom description in lines (propale, order, invoice) ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_ONLY_LOGIN_ALLOWED ► Only the specified login is allowed to log in Dolibarr (maintenance mode).&lt;br /&gt;
&lt;br /&gt;
*MAIN_OPTIMIZE_SPEED ► Use some speed enhancements. See page [[FAQ Increase Performance]] for more information.&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROPAGATE_CONTACTS_FROM_ORIGIN ► When creating an order, contract, invoice from another object, specific contacts of objects are set as specific contact of the new object when possible. ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PUBLIC_NOTE_IN_ADDRESS ► Show public note in address block ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_REMOVE_INSTALL_WARNING ► Remove all security warnings that appear to administrator users if URL &amp;lt;code&amp;gt;/install&amp;lt;/code&amp;gt; is public. You should solve the problem if warning occurs, instead of removing the warning! For this, create a file called &amp;lt;code&amp;gt;install.lock&amp;lt;/code&amp;gt; into Dolibarr root directory. This will stop the warning but also make the page &amp;lt;code&amp;gt;/install&amp;lt;/code&amp;gt; not possible to use, to protect your installation.&lt;br /&gt;
&lt;br /&gt;
*MAIN_REPEATCONTACTONEACHTAB ► If added and set to 1, this adds contacts on all tabs, not only main tab.&lt;br /&gt;
&lt;br /&gt;
*MAIN_REPLACE_TRANS_xx_XX ► Where &amp;lt;code&amp;gt;xx_XX&amp;lt;/code&amp;gt; is language code. If value is &amp;lt;code&amp;gt;string1:newstring1;string2:newstring2&amp;lt;/code&amp;gt; then replace &amp;lt;code&amp;gt;string1&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;newstring1&amp;lt;/code&amp;gt; in all translation done for language &amp;lt;code&amp;gt;xx_XX&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND ► Change way of rounding total TTC lines, rounding first of after.&lt;br /&gt;
&lt;br /&gt;
*MAIN_SECURITY_CSRF_WITH_TOKEN ► Activate a second anti-CSRF protection on POST (a POST from another web site can&#039;t be done). Note there is already a default protection using test on referrer. This second protection uses TOKEN on forms and is more powerful. ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_SERVER_TZ ► If you can&#039;t set the timezone of your PHP installation, set this constant. Better is to set it to UTC. In future, this constant will be forced to &#039;UTC&#039; so PHP server timezone will not have effect anymore. Examples: &amp;lt;code&amp;gt;Europe/Paris&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;auto&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_SEARCH_FORM_ON_HOME_AREAS ► Show the search form on home page areas for core modules (Removed after v5 due to global search combo) ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE ► If only one result is found, then setting this value to 1 will take you direct to the item (default method).  Setting the value to 0 will show the result in the list as a single result ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_SERVICES_ARE_ECOMMERCE_200238EC ► (&amp;lt; 8)&lt;br /&gt;
&lt;br /&gt;
*MAIN_SHOW_TUNING_INFO ► Add tuning information into javascript console. Better when xdebug is enabled.&lt;br /&gt;
&lt;br /&gt;
*MAIN_SHOW_TECHNICAL_ID ► Show also technical IDs on elements cards or some lists (not supported everywhere).&lt;br /&gt;
&lt;br /&gt;
*MAIN_SHOWDATABASENAMEINHELPPAGESLINK ► Show database name in upper help menu ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_ALTERNATE_TRANSLATION_FOR ► List of fields per object that need an alternate translation. Example: MAIN_USE_ALTERNATE_TRANSLATION_FOR=societe:name,town;contact:firstname,lastname&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_HOURMIN_IN_DATE_RANGE ► On all entities lines (invoice, order, contract...), it is possible to add hour and minutes with date on fields &amp;quot;date start&amp;quot; and &amp;quot;date end&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_JQUERY_JEDITABLE ► Allow to update from screen, directly into database, some properties of elements (invoices, proposals, ...) using Ajax. This make response time faster, but avoid using this feature, because it bypasses some business actions (updates on other data that should be done consistently) and ignores business controls on data you saved. Consequently this feature breaks consistency of data and possibly the stability of the software.&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_JQUERY_MULTISELECT ► Allow to use Ajax when a choice that require multiselect is used (for the moment only external modules uses select box with multiselect values). Set the value to the jQuery plugin name to use (multiselect, multiple-select, select2…). Setting it to any other value will result in unwanted side-effects and/or bugs.&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_OLD_SEARCH_FORM ► Display the old search form in left menu.&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_VAT_OF_PRODUCT_FOR_INDIVIDUAL_CUSTOMER_OUT_OF_EEC ► Allow using product VAT if customer is individual and out of E.E.C. (European Economic Community) ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_VAT_DEFAULT_IF_AUTODETECT_FAILS ► Allow to define a default VAT rate&lt;br /&gt;
&lt;br /&gt;
*MAIN_VIEW_LINE_NUMBER ► Shows a line number against each line in the order/invoice for products/services.  On screen only, not on PDF.&lt;br /&gt;
&lt;br /&gt;
*MAIN_VIEW_LINE_NUMBER_IN_LIST ► Shows a line number in lists (v12.0).&lt;br /&gt;
&lt;br /&gt;
*MAIN_VOLUME_DEFAULT_ROUND ► Accuracy of volume (number of decimals)&lt;br /&gt;
&lt;br /&gt;
*MAIN_VOLUME_DEFAULT_UNIT ► Default unit for weight (0=kg, -3=g, ...)&lt;br /&gt;
&lt;br /&gt;
*MAIN_WEIGHT_DEFAULT_ROUND ► Accuracy of weight (number of decimals)&lt;br /&gt;
&lt;br /&gt;
*MAIN_WEIGHT_DEFAULT_UNIT ► Default unit for weight (0=kg, -3=g, ...)&lt;br /&gt;
*USER_HIDE_INACTIVE_IN_COMBOBOX ► Disable display inactive users in combobox.&lt;br /&gt;
*MAIN_DISABLE_PDF_THUMBS ► Disable thumbs PDF in case of imagick bug&lt;br /&gt;
*MAIN_KEEP_REF_CUSTOMER_ON_CLONING ► Keep the Customer Reference on cloned object (Propal/Invoice)&lt;br /&gt;
*MAIN_DONT_KEEP_NOTE_ON_CLONING ► Remove the object notes during cloning ► (v11.0)&lt;br /&gt;
*MAIN_DOC_SORT_FIELD ► Set the default sorting field on document page (name by default) ► (v11.0)&lt;br /&gt;
*MAIN_DOC_SORT_ORDER ► Set the default sorting order (ASC or DESC) on document page (ASC by default) ► (v11.0)&lt;br /&gt;
*MAIN_USE_ZIPTOWN_DICTIONNARY► Use dictionnary ZIP for create card.&lt;br /&gt;
*MAIN_USE_TOP_MENU_BOOKMARK_DROPDOWN► Show bookmark in top menu with theme eldy ► (v11.0)&lt;br /&gt;
*MAIN_USE_TOP_MENU_SEARCH_DROPDOWN► Show search in top menu with theme eldy ► (v11.0)&lt;br /&gt;
*MAIN_PHONE_SEPAR ► Separ phone number other space ►(v12.0)&lt;br /&gt;
*GRAPH_USE_FISCAL_YEAR ► Widgets uses fiscal year&lt;br /&gt;
&lt;br /&gt;
*SHOW_SOCINFO_ON_PRINT ► Permit to add user company information on each printed document (when click on Dolibarr print button) ►(v12.0)&lt;br /&gt;
*MAIN_FEATURES_LEVEL ► Level of features to show: -1=stable+deprecated, 0=stable only (default), 1=stable+experimental, 2=stable+experimental+development&lt;br /&gt;
*MAIN_SHOW_TECHNICAL_ID ► Show tecnical id for object.&lt;br /&gt;
&lt;br /&gt;
*MAIN_HTTP_CONTENT_SECURITY_POLICY ► Allows you to fill in the content security rules ►(v6.0)&lt;br /&gt;
&lt;br /&gt;
*SOCIETE_ON_SEARCH_AND_LIST_GO_ON_CUSTOMER_OR_SUPPLIER_CARD ► Allow to change the link of the third party to customer/supplier card instead of contact card on List.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Accountancy Module=&lt;br /&gt;
&lt;br /&gt;
*ACCOUNTANCY_COMBO_FOR_AUX ► Add graphic option for ACCOUNTANCY_COMBO_FOR_AUX. Having this option on may slow down and even freeze the accounting features if you have a very large number of thirdparties ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Agenda Module=&lt;br /&gt;
&lt;br /&gt;
*AGENDA_ALL_CALENDARS ► Change the default view of calendar pages to see all the Agenda&#039;s (instead or yours only be default)&lt;br /&gt;
&lt;br /&gt;
*AGENDA_AUTOSET_END_DATE_WITH_DELTA_HOURS ► To automatically set end date of event to start date + delta on event creation page.&lt;br /&gt;
&lt;br /&gt;
*AGENDA_DISABLE_LOCATION ► Disable location field in action card  ► (&amp;gt;=v5.0)&lt;br /&gt;
&lt;br /&gt;
*AGENDA_MAX_EVENTS_DAY_VIEW ► Define the maximum number of visible entries for each day in agenda. Default value is 3. Value 0 means no limit.&lt;br /&gt;
&lt;br /&gt;
*AGENDA_USE_EVENT_TYPE ► Add a mandatory field &amp;quot;Type&amp;quot; when creating an event (deprecated).&lt;br /&gt;
&lt;br /&gt;
*MAIN_ADD_EVENT_ON_ELEMENT_CARD ► Allow to create an event from a document (proposal, order, invoice)&lt;br /&gt;
&lt;br /&gt;
*AGENDA_SUPPORT_PRIORITY_IN_EVENTS ► Allow to have priorities in events&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Bank Module=&lt;br /&gt;
&lt;br /&gt;
*BANK_CAN_RECONCILIATE_CASHACCOUNT ► Can reconciliate cash accounts ► (v3.8)&lt;br /&gt;
&lt;br /&gt;
*BANK_DISABLE_CHECK_DEPOSIT ► Disable check deposit feature&lt;br /&gt;
&lt;br /&gt;
*BANK_ASK_PAYMENT_BANK_DURING_ORDER ► Ask bank account during creation of an order&lt;br /&gt;
&lt;br /&gt;
*BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL ► Ask bank account during creation of a proposal&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Inalterable Log Module=&lt;br /&gt;
&lt;br /&gt;
*BLOCKEDLOG_ADD_ACTIONS_SUPPORTED ► Can complete list of triggered action that are logged&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Contracts=&lt;br /&gt;
&lt;br /&gt;
*CONTRACT_SUPPORT_PRODUCTS ► Products are also suggested into module contract.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Direct Debit Orders=&lt;br /&gt;
&lt;br /&gt;
*WITHDRAWAL_ALLOW_ANY_INVOICE_STATUS ► If this option is set, all invoices status (even already paid) may appear on the list of invoices qualified for a direct debit payment. This is the list of invoices with a payment request done, and not linked to a direct debit payment. By default, only &amp;quot;unpayed&amp;quot; invoices are used to avoid to pay twice the same invoice.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Email and SMS=&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAILFORM_DISABLE_ENTERKEY ► Activate javascript code to disable the enter key in the MAIL form. ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*MAIL_PREFIX_FOR_EMAIL_ID ► Prefix for the mails ID. Default value is &amp;lt;code&amp;gt;$_SERVER[&amp;quot;SERVER_NAME&amp;quot;]&amp;lt;/code&amp;gt; ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_DEBUG ► Write content with header of last mail into file &amp;lt;code&amp;gt;dolibarr_mail.log&amp;lt;/code&amp;gt; into directory &amp;lt;code&amp;gt;dolibarr_main_data_root&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_SMS_DEBUG ► Write content of SMS sent into file &amp;lt;code&amp;gt;dolibarr_sms.log&amp;lt;/code&amp;gt; into directory &amp;lt;code&amp;gt;dolibarr_main_data_root&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_ALLOW_SENDMAIL_F ► On Linux or BSD system, PHP email function use the command sendmail local to server. In some cases, the sender email must be provided on command line of sendmail with option &amp;lt;code&amp;gt;-f&amp;lt;/code&amp;gt;. This option is here to ask Dolibarr to call the function mail of PHP by adding value for the option &amp;lt;code&amp;gt;-f&amp;lt;/code&amp;gt;. Note that in most cases, even with sendmail, sender email is correctly managed as it is added in the email technical header. This option is here only for rare setup of sendmail that ask the -f option to be mandatory or for sendmail setup that does not use by default the Return-path of header email to define the sender (with this option, the return-path will be provided also on command line and not lost by sendmail).&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_SENDMAIL_FORCE_BA ► On Linux or BSD system, PHP email function use the command sendmail local to server. In some case, we want to recipient to be provided to sendmail into the email content instead of its command line parameter. For this we must add the -ba parameter to sendmail. This option asks PHP to provide this parameter when sending a mail. Note that another solution is to edit the mail.force_extra_parameters=-ba into &amp;lt;code&amp;gt;php.ini&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_NO_FULL_EMAIL ► Recipient email and sender are cleaned to be on form &amp;quot;&amp;lt;email&amp;gt;&amp;quot; instead of &amp;quot;Name &amp;lt;email&amp;gt;&amp;quot;. This might solve problem of compatibility with very old mailers.&lt;br /&gt;
&lt;br /&gt;
*MAIN_FIX_FOR_BUGGED_MTA ► Some MTA agent are bugged and add some CR chars each time they saw a LF. Because Dolibarr emails are forged to be already cleaned, if MTA agent do that, you will send an email with two CR chars. This may result in having recipient not able to read your email. To fix this, add this constant to 1. Dolibarr will then create an email that is not RFC compliant but because the MTA agent is bugged, the email will be modified and become correct during sending, solving the problem of bad email received. Add this constant if your recipient experience problems when opening email for example users using webmail of &amp;lt;code&amp;gt;orange.fr&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;hotmail.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_DO_NOT_USE_SIGN ► Do not add user signature at end of suggested pre-defined email&lt;br /&gt;
&lt;br /&gt;
*MAIL_FORCE_DELIVERY_RECEIPT_INVOICE ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Invoice&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*MAIL_FORCE_DELIVERY_RECEIPT_ORDER ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Order&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*MAIL_FORCE_DELIVERY_RECEIPT_PROPAL ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Proposal&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*MAIN_EMAIL_USECCC ► 1 = Show field BCC into email forms, If email = Show BCC prefilled with email.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_AUTOCOPY_PROPOSAL_TO, MAIN_MAIL_AUTOCOPY_ORDER_TO, MAIN_MAIL_AUTOCOPY_INVOICE_TO ► Email to use as a BCC recipient when sending email for proposal, order or invoice. You can make this value visible by setting MAIN_EMAIL_USECCC (to 1 or to another email, see previous point)&lt;br /&gt;
&lt;br /&gt;
*MAIN_EMAIL_ADD_TRACK_ID ► When value is 1 (this is also default value if option is not set): The record &amp;quot;Message-id&amp;quot; added into smtp header includes a tracking id to define where the email was sent from. When value is 2: you send an email from third party card, the sender email is completed with the email source tracking string  &amp;quot;+thiXXX&amp;quot; on email (your email will be sent with the &amp;quot;From&amp;quot; that is myname+thi123@mycompany.com). So when user receiving email will make &amp;quot;Answer&amp;quot;, email will be sent to myname@mycompany.com but with the tracking id included (into header or into target email), allowing you to know to which third party or object, the email exchange is related to.&lt;br /&gt;
&lt;br /&gt;
*MAIL_MAX_NB_OF_RECIPIENTS_IN_SAME_EMAIL ► Restrict sending of 1 email message to &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; recipients for same email message (x for To: + CC: + BCC:). If not defined, value is &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;. Required to fight against spamming that include 1000 recipients in 1 message. Note that MAIL_MAX_NB_OF_RECIPIENTS_TO_IN_SAME_EMAIL, MAIL_MAX_NB_OF_RECIPIENTS_CC_IN_SAME_EMAIL and MAIL_MAX_NB_OF_RECIPIENTS_BCC_IN_SAME_EMAIL are also available.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_FORCE_CONTENT_TYPE_TO_HTML ► Force to send all email (event with text only content) as HTML formatted email.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_USE_MULTI_PART ► Forge email content using an alternate text part ► (for 5.0.2+). By default with 6.0+&lt;br /&gt;
*MAIN_INFO_SOCIETE_MAIL_ALIASES ► add address aliases for the from field on mail. Set his value with &amp;quot;Firstname Name &amp;lt;firstname.lastname@mydomain.tld, Otherfirstname OtherlastName &amp;lt;othermail@mydomain.tld&amp;gt;,...&amp;quot; ► (v5.0.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_ADD_INLINE_IMAGES_IF_IN_MEDIAS ► If images were stored into the medias directory from CKEditor, then images into emails are replaced with &amp;quot;inline content&amp;quot;. This may increase seriously risk of being detected as SPAM.&lt;br /&gt;
&lt;br /&gt;
*MAIN_COPY_FILE_IN_EVENT_AUTO ► Add attachement document on event auto generated by sending email from dolibarr. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_EXTERNAL_SMTP_CLIENT_IP_ADDRESS ► (A better name of this option should be MAIN_EXTERNAL_MAIL_CLIENT_IP_ADDRESS). Set here the list of IPs where your Dolibarr instances are hosted. So when your customer go into the setup area of email:&lt;br /&gt;
**If he chose mail method, a message will explain him how to setup its SPF record for its email domain (showing the list of IP). This is to avoid to have its emails, sent from its Dolibarr instance, fails due to strict antispam rule of some emailing servers.&lt;br /&gt;
**If he chose smtp method, a message will explain him the list of IP he can use if there is restriction on IP by the SMTP agent. If you also need to add a message to help SPF setup, see option MAIN_EXTERNAL_SMTP_SPF_STRING_TO_ADD.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_ENABLED_USER_DEST_SELECT ► Show also internal users into list of recipients of email in email sending form ► (v8.0+)&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Emailing Module=&lt;br /&gt;
&lt;br /&gt;
*MAILING_PREFIX_FOR_EMAIL_ID ► Set the value that will be used to compose the &amp;quot;Email ID&amp;quot; into email headers. If you set this value to &#039;&amp;lt;code&amp;gt;SERVER_NAME&amp;lt;/code&amp;gt;&#039;, the virtual host of web server will be used. By default, this is not defined, so a hash key, unique to each instance, is used.&lt;br /&gt;
&lt;br /&gt;
*MAILING_NO_USING_PHPMAIL ► If set, the module emailing can&#039;t be used with mail setup of &amp;quot;phpmail&amp;quot;. Using a thirdparty SMTP server is required. You can complete warning message by adding an email to contact for setup help with constant MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS.&lt;br /&gt;
&lt;br /&gt;
*MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS ► Contains the email of contact to show into the message visible to a user when he try to use emailing module without SMTP server and if option MAILING_NO_USING_PHPMAIL is set to on.&lt;br /&gt;
&lt;br /&gt;
*MAILING_LIMIT_WARNING_PHPMAIL ► Show a warning message (var contains the &#039;&#039;&#039;message to show&#039;&#039;&#039;, or &#039;&#039;&#039;translation key&#039;&#039;&#039;) on emailing send form if setup is on &amp;quot;phpmail&amp;quot;. Note: The application always try to translation the message considering the message is a translation key, before showing the translation or message if translation was not found.&lt;br /&gt;
&lt;br /&gt;
*MAILING_LIMIT_WARNING_NOPHPMAIL ► Show a warning message (var contains the &#039;&#039;&#039;message to show&#039;&#039;&#039;, or &#039;&#039;&#039;translation key&#039;&#039;&#039;) on emailing send form if setup is something else than &amp;quot;phpmail&amp;quot;. Note: The application always try to translation the message considering the message is a translation key, before showing the translation or message if translation was not found.&lt;br /&gt;
*EMAILING_USE_ADVANCED_SELECTOR ► Enable the advanced selector for recipients.&lt;br /&gt;
&lt;br /&gt;
*MAILING_LIMIT_SENDBYWEB ► Restrict number of emails you can send in same sending session with emailing module from GUI. The value &amp;quot;&amp;lt;code&amp;gt;dolibarr_mailing_limit_sendbyweb&amp;lt;/code&amp;gt;&amp;quot; if defined into config file is used in priority for this limit. A negative value means, sending by web is forbidden.&lt;br /&gt;
&lt;br /&gt;
*MAILING_LIMIT_SENDBYCLI ► Restrict number of emails you can send in same sending session with emailing module from CLI script. The value &amp;quot;&amp;lt;code&amp;gt;dolibarr_mailing_limit_sendbycli&amp;lt;/code&amp;gt;&amp;quot; if defined into config file is used in priority for this limit.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Expense Report=&lt;br /&gt;
&lt;br /&gt;
*EXPENSEREPORT_ALLOW_OVERLAPPING_PERIODS ► Can enter several expense reports on same or overlapping date periods. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*EXPENSEREPORT_OVERRIDE_VAT ► Setting constant EXPENSEREPORT_OVERRIDE_VAT to 1 will allow expense reports to show VAT even if the global VAT setting is off ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*EXPENSEREPORT_USE_OLD_NUMBERING_RULE ► The module Expense Report use numbering rules that you can setup (like other modules do). If you need to keep the hard-coded numbering rule of expenses report used in v6.0 set this constant to 1 ► (&amp;gt;=v7.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_EXPENSE_IK ► This feature allows you to set index kilometers against a mileage index for different types of vehicles. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_EXPENSE_RULE ► This feature allows you to set a variety of rules per user/group/all so they can only create reports within their limits. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Export Module=&lt;br /&gt;
&lt;br /&gt;
*EXPORT_CSV_SEPARATOR_TO_USE ► String value to use as default separator to delimit fields of exported files (by default Dolibarr uses &amp;quot;&amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;&amp;quot;). Example: EXPORT_CSV_SEPARATOR_TO_USE=&amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*EXPORT_CSV_FORCE_CHARSET ► Choose the charset used in the output file built by the CSV exporter. By default it is ISO-8859-1. Example: EXPORT_CSV_FORCE_CHARSET= &amp;lt;code&amp;gt;utf-8&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*EXPORTTOOL_CATEGORIES ► Can export categories (several lines) into one column with the &amp;quot;product export profile&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*USE_STRICT_CSV_RULES ► Use strict/real CSV format for export. Do not clean/replace CR+LF with &#039;\n&#039; but quote them using the escaping CSV char (&amp;lt;code&amp;gt;&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*EXPORTS_SHARE_MODELS  ► Share export models between user&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Foundation Module=&lt;br /&gt;
&lt;br /&gt;
*MEMBER_URL_REDIRECT_SUBSCRIPTION ► Link called and shown when a member account is autocreated in member module by a guest user.&lt;br /&gt;
&lt;br /&gt;
*MEMBER_EXT_URL_SUBSCRIPTION_INFO ► Link of external page pointed by the &amp;quot;Show here&amp;quot; link added in front of payment cell, into the page to make online subscription.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Interventions Module=&lt;br /&gt;
&lt;br /&gt;
*FICHINTER_CLASSIFY_BILLED► Allow to classify an intervention card as &amp;quot;Billed&amp;quot;. This add also trigger &amp;lt;code&amp;gt;FICHINTER_CLASSIFY_BILLED&amp;lt;/code&amp;gt; into list of possible automatic event into agenda.&lt;br /&gt;
&lt;br /&gt;
*FICHINTER_DISABLE_DETAILS► Disable entry of details line on intervention. Can validate with no line.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Invoice Module=&lt;br /&gt;
&lt;br /&gt;
*MAIN_DEPOSIT_MULTI_TVA ► In deposits invoice, creates one line per VAT rate from the origin document ► (6.0)&lt;br /&gt;
&lt;br /&gt;
*FACTURE_SHOW_SEND_REMINDER ► Show link &amp;quot;Send reminder by mail&amp;quot;, same feature than &amp;quot;Send by mail&amp;quot; &#039;&#039;(obsolete feature)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
*INVOICE_CAN_ALWAYS_BE_EDITED ► Allow to edit invoices even if payment was started. Note: If the module &amp;quot;BlockedLog&amp;quot; is active (required in some countries for legal reasons), this will not change content of archived logs tracked by this module. By definition there is no way to change or remove archived records. It will just update data in your application and a new record to track your change into the read-only archive log.&lt;br /&gt;
&lt;br /&gt;
*INVOICE_CAN_ALWAYS_BE_REMOVED ► Allow to always delete invoices (even if invoice is not last one). Note: If the module &amp;quot;BlockedLog&amp;quot; is active (required by some countries for legal reason), this will not change content of archived logs tracked by this module. By definition there is no way to change or remove archived records. It will just update data in your application and a new record to track your change into the read-only archive log.&lt;br /&gt;
&lt;br /&gt;
*INVOICE_CAN_NEVER_BE_REMOVED ► Never allow to delete invoices (except draft invoices).&lt;br /&gt;
&lt;br /&gt;
*INVOICE_POSITIVE_CREDIT_NOTE ► All amounts on PDF credit notes are positive.&lt;br /&gt;
&lt;br /&gt;
*FACTURE_DEPOSITS_ARE_JUST_PAYMENTS ► Treats deposit invoices as a special case. Deposit invoices don&#039;t get counted on turnover. They are then applied as a payment, like a discount, on the final invoice. By default, when you include the deposit into draft of final invoice, the amount of final invoice is reduced. With this option, final amount is not reduced but a payment is registered. WARNING: In a lot of european countries, using this option is not allowed.&lt;br /&gt;
&lt;br /&gt;
*FACTURE_SENDBYEMAIL_FOR_ALL_STATUS ► Can send invoice by email to customer even if invoice has status &amp;quot;draft&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*INVOICE_CREDIT_NOTE_STANDALONE ► Start implementation to allow a credit note even without invoice (dangerous) ► (v3.9)&lt;br /&gt;
&lt;br /&gt;
*INVOICE_USE_SITUATION ► Enable the &amp;quot;situation invoice&amp;quot; feature&lt;br /&gt;
&lt;br /&gt;
*INVOICE_USE_SITUATION_CREDIT_NOTE ► Enable the &amp;quot;situation credit note&amp;quot; feature (need &amp;lt;code&amp;gt;INVOICE_USE_SITUATION&amp;lt;/code&amp;gt;) ► (v8.0)&lt;br /&gt;
&lt;br /&gt;
*INVOICE_DISABLE_DEPOSIT ► Disable deposit invoices&lt;br /&gt;
&lt;br /&gt;
*INVOICE_DISABLE_REPLACEMENT ► Disable replacement invoices&lt;br /&gt;
&lt;br /&gt;
*INVOICE_DISABLE_CREDIT_NOTE ► Disable credit notes&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT ► See PDF option&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_COLUMN ► See PDF options&lt;br /&gt;
&lt;br /&gt;
*WORKFLOW_BILL_ON_SHIPMENT ► Change label of button with suitable label when you need to create invoice on shipments&lt;br /&gt;
&lt;br /&gt;
*INVOICE_ALLOW_EXTERNAL_DOWNLOAD ► When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. Use the tag __DIRECTDOWNLOAD_URL_INVOICE__ in email template to insert it. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*INVOICE_POINTOFTAX_DATE ► Add Point of Tax Date on invoices for country-specific legality reasons ► (v4.0+)&lt;br /&gt;
*FACTURE_ENABLE_NEGATIVE ► Can validate an invoice when amount is negative&lt;br /&gt;
&lt;br /&gt;
*FACTURE_ENABLE_NEGATIVE_LINES ► Allows to add negative lines to an invoice ► (v8.0.2+)&lt;br /&gt;
&lt;br /&gt;
*INVOICE_USE_DEFAULT_DOCUMENT ► Allow user to select a default invoice documents models according to invoice type. On invoice create page, the model is dynamically changed on invoice type selection. ► (v9.0+)&lt;br /&gt;
&lt;br /&gt;
*FACTURE_REUSE_NOTES_ON_CREATE_FROM ► Reuse the Public Note and Private note of the previous object (Proposal,...) when creating the bill.&lt;br /&gt;
*MAIN_SHOW_FACNUMBER_IN_DISCOUNT_LIST ► Display the reference of credit notes in discount list when creating the bill.&lt;br /&gt;
*INVOICE_ALLOW_FREE_REF ► Apability to change reference of an invoice. This will be possible as long as the invoice has the status “Draft” and only if your country is not in Europe(V11)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Look or Theme=&lt;br /&gt;
&lt;br /&gt;
*MAIN_FAVICON_URL ► favicon url&lt;br /&gt;
&lt;br /&gt;
*MAIN_EASTER_EGG_COMMITSTRIP ► Show a comic image from the CommitStrip website. Images are refreshed daily. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_STATUS_USES_CSS ► (v10.0+) Change status design using new style&lt;br /&gt;
&lt;br /&gt;
*MAIN_APPLICATION_DISABLED_STATEBOARD ► Hide the stateboard of the main page&lt;br /&gt;
&lt;br /&gt;
*MAIN_APPLICATION_DISABLED_WORKBOARD ► Hide the workboard of the main page&lt;br /&gt;
&lt;br /&gt;
*MAIN_INCLUDE_GLOBAL_STATS_IN_OPENED_DASHBOARD ► (v11.0+) This conf will auto remove global stats box item if there are already in the new dashboard of opened elements and keep displayed stats on the opened item box (not only on mouse over)&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_TOP_MENU_SEARCH_DROPDOWN ► (v11.0+) actually only for eldy theme, this conf move search input  to top menu and use new design too&lt;br /&gt;
&lt;br /&gt;
*THEME_AGRESSIVENESS_RATIO ► (v11.0+) this conf can be used to increase/decrease agressiveness of colors. Value 0 is medium, value is between -100 (light grey colors) to +100 (very flashy colors)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=MultiCurrency=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*MAIN_MULTICURRENCY_ALLOW_SYNCHRONIZATION ► Enable CurrencyLayer API synchronization&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Order Module=&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_PROPAL_REFCLIENT_FOR_ORDER =&amp;gt; Copy customer reference from proposal to order. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*ORDER_REQUIRE_SOURCE =&amp;gt; Make the input field &amp;quot;Source of order&amp;quot; mandatory.&lt;br /&gt;
&lt;br /&gt;
*ORDER_VALID_AFTER_CLOSE_PROPAL =&amp;gt; When an order is created on a proposal close, the order is directly defined with status &amp;quot;Validated&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*ORDER_ALLOW_EXTERNAL_DOWNLOAD =&amp;gt; When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*ORDER_ENABLE_NEGATIVE =&amp;gt; Can validate an order when amount is negative&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_PROPAGATE_EXTRAFIELDS_TO_ORDER =&amp;gt; Copy also extrafields from thirdparty to order (if name match). ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=PDF Options=&lt;br /&gt;
&lt;br /&gt;
*MAIN_ADD_PDF_BACKGROUND ► Define this constant with short name of a PDF file (example &amp;quot;&amp;lt;code&amp;gt;mypdf.pdf&amp;lt;/code&amp;gt;&amp;quot;) that must be saved into directory &amp;quot;&amp;lt;code&amp;gt;documents/mycompany&amp;lt;/code&amp;gt;&amp;quot;. This will add PDF as a background of some of your generated PDF files (proposals,invoices,orders). If you need to concat PDF, see instead [[Module Concat PDF]].&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_FORCE_SAVEAS ► If your browser always asks to save downloaded files on disk (like PDF), try this this option. File may be displayed directly in your browser.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_PDF_AUTOUPDATE ► Disable automatic generation of PDF each time we add/update/delete a product line (we can still build document by clicking on &amp;quot;Generate&amp;quot;). This option may increase interface speed on servers with low CPU.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_PDF_COMPRESSION ► Disable PDF compression.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DOCUMENTS_LOGO_HEIGHT ► Can force height of the logo on PDF.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DOCUMENTS_WITH_PICTURE_WIDTH ► Can change size of picture when hidden option &amp;lt;code&amp;gt;MAIN_GENERATE_PROPOSALS_WITH_PICTURE&amp;lt;/code&amp;gt; is used. By default value is &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS ► Adding the company address at the bottom of the page. Disabled by default&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_PROPOSALS_WITH_PICTURE ► Include the first image of the product into the line of the generated PDF for customer proposals.&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_INVOICES_WITH_PICTURE ► Include the first image of the product into the line of the generated PDF for customer invoices.&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_SUPPLIER_PROPOSAL_WITH_PICTURE ► Include the first image of the product into the line of the generated PDF for supplier proposals ► (v5.0.3+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT ► Disable VAT on generated documents. like for an association. (Works with crabe template)&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_COLUMN ► Hide column with VAT information but only column not total.&lt;br /&gt;
&lt;br /&gt;
*MAIN_INVERT_SENDER_RECIPIENT ► Invert sender and recipient in some PDF. Note: This option is set automatically if country if Germany.&lt;br /&gt;
&lt;br /&gt;
*MAIN_ODT_AS_PDF ► Activate PDF conversion from ODT document. Do not use value &#039;&#039;&#039;&amp;lt;nowiki/&amp;gt;&#039;jodconverter&#039;&amp;lt;nowiki/&amp;gt;&#039;&#039;&#039; any more, as it is declared deprecated and partly not functional, use value &#039;&#039;&#039;&amp;lt;nowiki/&amp;gt;&#039;libreoffice&#039;&#039;&#039;&#039; instead, it requires only &#039;&#039;&#039;soffice&#039;&#039;&#039; (OpenOffice or LibreOffice) installed on server (v11.0+ ?). If value is &#039;&amp;lt;code&amp;gt;jodconverter&amp;lt;/code&amp;gt;&#039;, &#039;&#039;&#039;java&#039;&#039;&#039; and &#039;&#039;&#039;jodconverter&#039;&#039;&#039; command line tool must be available. If value is &#039;&amp;lt;code&amp;gt;/pathto/jodconverter.jar&amp;lt;/code&amp;gt;&#039; then &#039;&#039;&#039;java&#039;&#039;&#039; and the &#039;&#039;&#039;jodconverter&#039;&#039;&#039; jar must exist, &#039;&#039;&#039;soffice&#039;&#039;&#039; must also be available. The constant &amp;lt;code&amp;gt;MAIN_DOL_SCRIPTS_ROOT&amp;lt;/code&amp;gt; must also be defined to path where the &amp;quot;scripts&amp;quot; directory is stored (for example &amp;lt;code&amp;gt;/var/www/mydolibarr&amp;lt;/code&amp;gt; without scripts).&lt;br /&gt;
&lt;br /&gt;
*MAIN_ODT_AS_PDF_DEL_SOURCE ► For ODT generation. If set, then initial behaviour is conserved but ODT file is removed when option to convert it as PDF (see previous) is on. Disabled by default&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_FORCE_FONT ► To ignore font defined into language file and force usage of a particular font. For example &amp;quot;&amp;lt;code&amp;gt;DejaVuSans&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_FORCE_FONT_SIZE ► To force size of font (by default 10). For example &amp;quot;&amp;lt;code&amp;gt;12&amp;lt;/code&amp;gt;&amp;quot; ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_FREETEXT_HEIGHT ► Change height of space reserved to output the free text.&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_TITLE_BACKGROUND_COLOR ► Can define a background color onto title line. Example: &amp;lt;code&amp;gt;220,220,200&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_USE_LARGE_LOGO ► Use the original logo with its higher resolution into the PDF instead of the small thumb. This may lead to very very large PDF !&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_BACKGROUND_ON_PDF ► Define this constant with short name of an image (example &amp;quot;&amp;lt;code&amp;gt;myimage.jpg&amp;lt;/code&amp;gt;&amp;quot;) that must be saved into directory &amp;quot;&amp;lt;code&amp;gt;documents/mycompany/logos&amp;lt;/code&amp;gt;&amp;quot;. This will add this background image into your generated PDF files. Warning: This option make TCPDF library being crazy sometime and content on image disappeared!&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_COMPANY_NAME_OF_CONTACT ► Use contact name and information rather than company&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_ADDALSOTARGETDETAILS ► Add particular details like the telephone number on generated PDFs. Can be useful in cases where a printed order/invoice etc is given to a delivery driver/courier etc.&lt;br /&gt;
&lt;br /&gt;
*MAIN_TVAINTRA_IN_SOURCE_ADDRESS ► Show VAT N° in source address of PDF to comply with legalities in certain countries. Note that VAT number should be already visible in footer of page ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING ► Add optional esign field in pdf propal ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID1_IN_SOURCE_ADDRESS ► Show Professional ID 1 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID2_IN_SOURCE_ADDRESS ► Show Professional ID 2 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID3_IN_SOURCE_ADDRESS ► Show Professional ID 3 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID4_IN_SOURCE_ADDRESS ► Show Professional ID 4 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID5_IN_SOURCE_ADDRESS ► Show Professional ID 5 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID6_IN_SOURCE_ADDRESS ► Show Professional ID 6 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*PDF_BANK_HIDE_NUMBER_SHOW_ONLY_BICIBAN ► Hide bank number (&amp;quot;code banque/guichet/compte&amp;quot; for France, &amp;quot;sort code/account number&amp;quot; for GB, ...) and keep only BIC/IBAN on PDF.&lt;br /&gt;
&lt;br /&gt;
*PDF_BOLD_PRODUCT_REF_AND_PERIOD ► Add more visibility (bold) on product ref and period of service in desc. ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*PDF_HIDE_PRODUCT_REF_IN_SUPPLIER_LINES ► Modify the use/position of Supplier Ref/Internal Ref with the item Label (name) on PDF documents.&lt;br /&gt;
&lt;br /&gt;
Default (constant not set or Value &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;): Internal ref followed by supplier ref in brackets.&amp;quot;COMPANY-REF-001 (Vendor SKU SUPPLIER-REF-001) - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Value &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;: Supplier ref only eg.&amp;quot;SUPPLIER-REF-001 - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Value &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;: Supplier ref followed by internal ref in brackets. eg.&amp;quot;SUPPLIER-REF-001 (InternalRef COMPANY-REF-001) - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME ► Include alternative/alias name into name on PDF.&lt;br /&gt;
&lt;br /&gt;
*PDF_SECURITY_ENCRYPTION ► Encrypt PDF produced by dolibarr ► (v?) . See additional parameters :PDF_SECURITY_ENCRYPTION_RIGHTS (block &#039;modify&#039; or &#039;copy&#039;) - PDF_SECURITY_ENCRYPTION_USERPASS - PDF_SECURITY_ENCRYPTION_OWNERPASS (random if not specified) - PDF_SECURITY_ENCRYPTION_STRENGTH (0 = RC4 40 bit; 1 = RC4 128 bit; 2 = AES 128 bit; 3 = AES 256 bit) - PDF_SECURITY_ENCRYPTION_PUBKEYS Array of recipients containing public-key certificates (&#039;c&#039;) and permissions (&#039;p&#039;) - For example: array(array(&#039;c&#039; =&amp;gt; &#039;file://../examples/data/cert/tcpdf.crt&#039;, &#039;p&#039; =&amp;gt; array(&#039;print&#039;)))&lt;br /&gt;
&lt;br /&gt;
*PDF_SHOW_PROJECT ► Show project onto PDF (supported on supplier order only for the moment)&lt;br /&gt;
&lt;br /&gt;
*PDF_USE_1A ► PDF files produced by dolibarr respect PDF/A standard ► (v?)&lt;br /&gt;
&lt;br /&gt;
*PDF_USE_ALSO_LANGUAGE_CODE ► The value of this constant must be a language code (&#039;fr_FR&#039;, &#039;en_US&#039;, &#039;sa_SA&#039;, ...). If set, the PDF document will contains both language (default and the one defined by the constant).&lt;br /&gt;
*DOC_SHOW_FIRST_SALES_REP ► Show the sales representant on header (at least on propal azur and rubis template)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Point of Sale (POS)=&lt;br /&gt;
&lt;br /&gt;
*CASHDESK_SHOW_KEYPAD ► Show a mouse key pad into the &#039;Simple Point of Sale&#039; module.&lt;br /&gt;
&lt;br /&gt;
*POS_ADDON ► Set this value to an existing numbering module rule (for example &#039;&amp;lt;code&amp;gt;mod_facture_terre&amp;lt;/code&amp;gt;&#039;, &#039;&amp;lt;code&amp;gt;mod_facture_mars&amp;lt;/code&amp;gt;&#039;, ...) to force the numbering module to use for invoice ref definition when invoice is created by the POS. For example setting value &amp;lt;code&amp;gt;POS_ADDON&amp;lt;/code&amp;gt; to &#039;&amp;lt;code&amp;gt;mod_facture_terre&amp;lt;/code&amp;gt;&#039; will use the numbering module &#039;&amp;lt;code&amp;gt;terre&amp;lt;/code&amp;gt;&#039; for invoice generated from POS, whatever is the numbering rule defined into invoice module setup (you can also use POS_NUMBERING_TERRE_FORCE_PREFIX and POS_NUMBERING_MARS_FORCE_PREFIX variable to change the prefix used).&lt;br /&gt;
&lt;br /&gt;
*TAKEPOS_ENABLE_SUMUP ► Enable the compatibility of TakePOS with the card reader terminal [https://SumUp.fr SumUp]&lt;br /&gt;
 &lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Products Module=&lt;br /&gt;
&lt;br /&gt;
*CATEGORY_GRAPHSTATS_ON_PRODUCTS ► Show graph of products with categories and totals in Products Area screen&lt;br /&gt;
&lt;br /&gt;
*MAIN_PRODUCT_DISABLE_CUSTOMCOUNTRYCODE ► Avoid customs code and country of origin to be set as product description when added to Propal/Order/Invoice&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_ADD_TYPE_IN_DOCUMENTS ► Add text &amp;quot;Product&amp;quot; or &amp;quot;Service&amp;quot; at beginning of details lines on built PDF documents.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DONOTSEARCH_ANYWHERE ► When Ajax search is enabled, search is done on criteria anywhere in label of product. By adding this option, search is done only on start of label. This is really faster when you have a huge number of products.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DIRECT_STATUS_UPDATE ► Allows you to change the status of the product (&#039;&#039;for sale/not for sale for purchase/not for purchase&#039;&#039;) directly on the product page via a &#039;&#039;on/off&#039;&#039; switch button. This can be convenient for those who need to quickly disable certain statuses of products without having to go through the editing product page individually. Also can be very useful if used as a filter on the product and product search list. This option doesn&#039;t generate a MODIFY trigger, so be careful with external modules. ► v4.0+&lt;br /&gt;
&lt;br /&gt;
*MAIN_SEARCH_PRODUCT_BY_FOURN_REF ► (&amp;gt;= 8.0) Allow to search a product by supplier ref in document&#039;s add line form.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_FREE_LINES ► Disallow using free lines to add line in documents ► (&amp;gt;= 8.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_SHOW_PRODUCT_ACTIVITY_TRIM ► Show Product and Services turnover before for all four quarters tax over recent years recent years on the product area ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
*PRODUIT_DESC_IN_LIST ► Show long description of product/service into lists.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_PROPAGATE_CUSTOMER_PRICES_ON_CHILD_COMPANIES ► Disable propagation of prices per customer from a customer to its child company.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_SIZE ► Disable size in product card.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_LENGTH ► Disable length in product card ► v4.0+&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_SURFACE ► Disable surface in product card. ► v4.0+&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_VOLUME ► Disable volume in product card.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_CUSTOM_INFO ► Disable custom info (custom code and country origin) in product/service card.&lt;br /&gt;
&lt;br /&gt;
*PRODUIT_MULTIPRICES_USE_VAT_PER_LEVEL ► When option to use price per level/segment is on, this allows to also set a dedicated vat for each price level.&lt;br /&gt;
&lt;br /&gt;
*PRODUIT_CUSTOMER_PRICES_BY_QTY ► If price per quantity ► Experimental&lt;br /&gt;
*PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES ► If price per quantity and customer ► Experimental&lt;br /&gt;
*PRODUCT_MAX_LENGTH_COMBO ► Limit the length of the label displayed when adding lines in proposals/invoices/orders&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_MAX_VISIBLE_PHOTO ► Show a maximum number of product photos (as thumbnails) on the product main card. Example, setting this constant to &#039;&amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;&#039; will show the first five product photos found on the product card.&lt;br /&gt;
&lt;br /&gt;
*PRODUIT_PDF_MERGE_PROPAL ► Enable module Propal merge product PDF&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_USE_OLD_PATH_FOR_PHOTO ► Ask dolibarr to check also old path (before 3.7) where photos were stored.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_USE_UNITS ► Add another units on products (Use same dictionnary as default unit feature) and propagate this unit on line of documents.&lt;br /&gt;
&lt;br /&gt;
*RESOURCE_ON_PRODUCTS_RESOURCE_ON_SERVICES ► Allow to affect ressources on products/services (v10.0+)&lt;br /&gt;
*PRODUCT_SHOW_ORIGIN_IN_COMBO ► Show origin of products when adding lines in proposals/invoices/orders (v12.0+)&lt;br /&gt;
*PRODUIT_ATTRIBUTES_HIDECHILD  ► Add option hide child if variantes&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_ADD_FORM_ADD_TO ► Add a product to a draft proposal/order/invoice, from the product card.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Projects Module=&lt;br /&gt;
&lt;br /&gt;
*PROJECT_ALLOW_TO_LINK_FROM_OTHER_COMPANY ► Can link an object to a project of another thirdparty&lt;br /&gt;
&lt;br /&gt;
*PROJECT_ALLOW_COMMENT_ON_TASK ► Add comment feature on project task&lt;br /&gt;
&lt;br /&gt;
*PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS ► Enable linking a project to any supplier even when using the third party link feature. Note: Set to 1 by default from 3.7.&lt;br /&gt;
&lt;br /&gt;
*PROJECT_CREATE_ON_OVERVIEW_DISABLED ► Hide the &amp;quot;create ...&amp;quot; button on the overview page ► (4.0)&lt;br /&gt;
&lt;br /&gt;
*PROJECT_DISABLE_UNLINK_FROM_OVERVIEW ► Enable removing the button from a link in the project overview. ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*PROJECT_HIDE_UNSELECTABLES ► Hide into select list, all project that we can&#039;t select (closed or draft)&lt;br /&gt;
&lt;br /&gt;
*PROJECT_HIDE_TASKS ► Hide tasks. For user using project only as an analytics key and not using tasks.&lt;br /&gt;
&lt;br /&gt;
*PROJECT_LIST_SHOW_STARTDATE ► Shows start date of projects in project lists.&lt;br /&gt;
&lt;br /&gt;
*PROJECT_LINK_ON_OVERWIEW_DISABLED ► Hide the &amp;quot;link to&amp;quot; form on the overview page ► (4.0)&lt;br /&gt;
&lt;br /&gt;
*PROJECT_SHOW_REF_INTO_LISTS ► Add column with project ref into list (with 3.7 list of supplier invoices only, will be expanded to other lists)&lt;br /&gt;
&lt;br /&gt;
*PROJECT_TIME_ON_ALL_TASKS_MY_PROJECTS ► Can add time spent on tasks, even if i am not assigned to task (however, task must be a project i am a contact).&lt;br /&gt;
&lt;br /&gt;
*PROJECT_OPEN_ALWAYS_ON_TAB ► Set to value &#039;task&#039;, or &#039;preview&#039; to always open the project on the given tab instead of main tab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Proposals Module=&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_PROPOSALS_WITH_PICTURE ► Add a picture of the product (the first one found if there are several) into the generated PDF of proposals. Note that using this will reduce the available width for the product description.&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROPAL_CHOOSE_ODT_DOCUMENT ► On setup page, you&#039;ll be able to select which ODT document to use when close or cancel proposals.&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING ► add optional esign field in pdf propal ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*PROPAL_CLONE_ON_CREATE_PAGE ► On the create proposal page, ask if we want to create the proposal by cloning an already existing one. You should use instead the &amp;quot;Clone&amp;quot; button available on existing proposals.&lt;br /&gt;
&lt;br /&gt;
*PROPAL_DISABLE_SIGNATURE ► Do no show the box for signature.&lt;br /&gt;
&lt;br /&gt;
*PRODUIT_PDF_MERGE_PROPAL ► When generating the proposal PDF, all PDFs linked to products linked to proposal are also included into final PDF&lt;br /&gt;
&lt;br /&gt;
*PROPOSAL_ALLOW_EXTERNAL_DOWNLOAD ► When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*PROPOSAL_AUTO_ADD_AUTHOR_AS_CONTACT ► Add Proposal Author as user contact follow proposal&lt;br /&gt;
&lt;br /&gt;
*PROPOSAL_PDF_HIDE_PAYMENTTERM ► Do not show the payment term on proposal ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*PROPOSAL_PDF_HIDE_PAYMENTMODE ► Do not show the payment mode on proposal ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*WORKFLOW_PROPAL_CAN_CLASSIFY_BILLED_WITHOUT_INVOICES ► Button &amp;quot;Classified Billed&amp;quot; is visible on proposal even if there is no invoice linked to proposal.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Services Module=&lt;br /&gt;
&lt;br /&gt;
*SERVICE_ARE_ECOMMERCE_200238EC ► If this option is enabled, services are processed like eServices according to directive of EU Council Directive 2002/38/EC (http://ec.europa.eu/taxation_customs/taxation/vat/traders/e-commerce/article_1610_en.htm). Default VAT rate are based on buying country instead of selling country for BtoC sells.&lt;br /&gt;
*MAIN_FILL_SERVICE_DATES_FROM_LAST_SERVICE_LINE  ► (v13.0) On add line form add a button to fill service dates from the last service line&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Shipments=&lt;br /&gt;
&lt;br /&gt;
*STOCK_WAREHOUSE_NOT_REQUIRED_FOR_SHIPMENTS ► If set, you can add a shipment line, with no stock source defined. ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*SHIPMENT_GETS_ALL_ORDER_PRODUCTS ► Add all order lines in shipment, including the one with 0 in quantity&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Stocks=&lt;br /&gt;
&lt;br /&gt;
*CASHDESK_FORCE_STOCK_ON_BILL ► Option to force decrease of stock when using POS whatever is user setup.&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_DISABLE_STOCK_DISPATCH_WHEN_TOTAL_REACHED ► Disable stock dispatch when total expected was already received&lt;br /&gt;
*STOCK_SUPPORTS_SERVICES ► Stock support services&lt;br /&gt;
*USER_DEFAULT_WAREHOUSE ► Can set a default warehouse on user card ► (v11.0)&lt;br /&gt;
*WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER =&amp;gt; When an order is created, the warehouse can be defined&lt;br /&gt;
*MAIN_DEFAULT_WAREHOUSE ► Warehouse default (rowid) ► (v12.0)&lt;br /&gt;
*MAIN_DEFAULT_WAREHOUSE_USER ► Warehouse default is warehouse definie on user  ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Suppliers Module=&lt;br /&gt;
&lt;br /&gt;
*FOURN_PRODUCT_AVAILABILITY ► On the Suppliers price page of the products, activate the supplier product availability. &#039;&#039;This is duplicate feature with delivery_delay introduced with 3.8.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*RELOAD_PAGE_ON_SUPPLIER_CHANGE ► On creation of a supplier order/invoice, reload form with supplier-specific details when supplier is selected from drop-down list.&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_AUTOADD_USER_CONTACT ► Add user approving supplier order as a contact automatically.&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_DEFAULT_PAYMENT_MODE_ID ► Set the default payment method for suppliers (&amp;lt;code&amp;gt;rowid&amp;lt;/code&amp;gt; in table &amp;lt;code&amp;gt;llx_c_paiement&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_USE_DISPATCH_STATUS ► Add a status on each dispatch order line when receiving products from suppliers ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_NO_DIRECT_APPROVE ► No button &amp;quot;Validate and Approve&amp;quot;. Always do step &amp;quot;Validate&amp;quot; and &amp;quot;Approve&amp;quot; in 2 steps.&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_WITH_PREDEFINED_PRICES_ONLY ► Restrict selection of products in supplier order to only those with a buying price defined for that supplier. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_EDIT_BUYINGPRICE_DURING_RECEIPT ► Can modify the buying price used for PMP calculation when making a stock reception on a supplier order. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_PROPOSAL_WITH_PREDEFINED_PRICES_ONLY ► Restrict selection of products in supplier proposal to only those with a buying price defined for that supplier. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*DISPLAY_DISCOUNTED_SUPPLIER_PRICE ► Allow to display discounted supplier price when searching product in supplier documents ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_CAN_EDIT_SUPPLIER_ON_SUPPLIER_ORDER ►  Allow to change the supplier on a draft supplier order ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Third Parties Module=&lt;br /&gt;
&lt;br /&gt;
*COMPANY_AQUARIUM_CLEAN_REGEX ► Add a REGEX rule on the third parties names. It applies a regex replacement pattern on generated code if COMPANY_AQUARIUM_CLEAN_REGEX is set. Value must be a regex with parenthesis. The part into parenthesis is kept, the rest removed. For example if COMPANY_AQUARIUM_CLEAN_REGEX = &#039;&amp;lt;code&amp;gt;^..(..)..(.*)&amp;lt;/code&amp;gt;&#039; the first char and second char are removed and the char 5 and 6 too ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*SOCIETE_DISABLE_CUSTOMERS ► Remove all menu and features related to customers&lt;br /&gt;
&lt;br /&gt;
*SOCIETE_DISABLE_PROSPECTS ► Remove all menu and features related to prospects&lt;br /&gt;
&lt;br /&gt;
*SOCIETE_DISABLE_STATE ► Do not use field &amp;quot;state/province&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*SOCIETE_SORT_ON_TYPEENT ► The combo list of &amp;quot;type of third party&amp;quot; is sorted on alphabetical order instead of the field &amp;quot;position&amp;quot; that appears into dictionary instead.&lt;br /&gt;
&lt;br /&gt;
*SOCIETE_ASK_FOR_SHIPPING_METHOD ► Shipping method can be predefined on customer card and will be used as default on order creation&lt;br /&gt;
*SOCIETE_ADD_REF_IN_LIST ► Displays the code before the name in the lists  ► Value 1 -&amp;gt; Code + name + alias ou Code + name if colone alias 2 -&amp;gt; Code + alias 3 -&amp;gt; Alias&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_CAN_HAVE_CATEGORY_EVEN_IF_NOT_CUSTOMER_PROSPECT_SUPPLIER ► Possible to add Categories to third parties that are not customer, prospect or supplier.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_DEFAULT_USEVAT ► When creating a new third party, the field &amp;quot;Use vat&amp;quot; is set to on or off depending on value of this parameter.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_DEFAULT_USELOCALTAX1 ► When creating a new third party, the field &amp;quot;Use second tax&amp;quot; is set to on or off depending on value of this parameter.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_DEFAULT_USELOCALTAX2 ► When creating a new third party, the field &amp;quot;Use third tax&amp;quot; is set to on or off depending on value of this parameter.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_NOTCUSTOMERPROSPECT_BY_DEFAULT ► Do not set status &amp;quot;Customer/Prospect&amp;quot; to &amp;quot;on&amp;quot; when creating a new third party from menu &amp;quot;New third party&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_NOTSUPPLIER_BY_DEFAULT ► Do not set status &amp;quot;Supplier&amp;quot; to &amp;quot;on&amp;quot; when creating a new third party from menu &amp;quot;New third party&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_INCLUDE_PARENT_IN_LINKTO ► Search also for elements on parent third party when using the &amp;quot;link to&amp;quot; object feature.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_INCLUDE_PROJECT_THIRDPARY_IN_LINKTO ► Search also for elements on third party that own the project of the current element when using the &amp;quot;link to&amp;quot; object feature (if project is owned by a different thirdparty than current one).&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_LOGO_ALLOW_EXTERNAL_DOWNLOAD ► When a logo is uploaded, a share key is automatically set so the file can be downloaded using the share key.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_SUGGEST_ALSO_ADDRESS_CREATION ► Enabled contact creation on third-party create card&lt;br /&gt;
*THIRDPARTY_QUICKSEARCH_ON_FIELDS ► Personalized search criterias ► Example: $conf-&amp;gt;global-&amp;gt;THIRDPARTY_QUICKSEARCH_ON_FIELDS = &#039;s.nom=ThirdPartyName;s.name_alias=AliasNameShort;s.code_client=CustomerCode&#039;&lt;br /&gt;
*MEMBER_CAN_CONVERT_CUSTOMERS_TO_MEMBERS ► Enabled member creation on third-party create card&lt;br /&gt;
*SOCIETE_DISABLE_PARENTCOMPANY ► Disables attachment to a parent company.&lt;br /&gt;
*THIRDPARTY_CUSTOMERPROSPECT_BY_DEFAULT ► Set the third party to customer by default&lt;br /&gt;
*THIRDPARTY_SUPPLIER_BY_DEFAULT ► Set the third party to supplier by default&lt;br /&gt;
*THIRDPARTY_CUSTOMERTYPE_BY_DEFAULT ► Set the third party type by default (3 = customer / 2 = prospect)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=VAT Report=&lt;br /&gt;
&lt;br /&gt;
*MAIN_INCLUDE_ZERO_VAT_IN_REPORTS ► Include lines with VAT to 0% (for &amp;quot;auto-liquidation&amp;quot; in EEC) ► (v8.0.3+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Website Module=&lt;br /&gt;
&lt;br /&gt;
*WEBSITE_USE_WEBSITE_ACCOUNTS ► Add a table and a tab to manage some accounts for websites to a third party&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=WYSIWYG Editor=&lt;br /&gt;
&lt;br /&gt;
*FCKEDITOR_ENABLE_DETAILS_FULL ► Can cut and paste external images (hosted on external server) into description of proposal, orders or invoices. WARNING: PDF generation is not guaranteed with this. Also if the image is removed or renamed by the image hosting service, your proposal, order or invoice will be broken.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=STRIPE Module=&lt;br /&gt;
&lt;br /&gt;
*STRIPE_FORCE_VERSION ► Force the STRIPE version. For Example: &amp;quot;2019-09-09&amp;quot; (v11+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=ClickToDial Module=&lt;br /&gt;
&lt;br /&gt;
*CLICKTODIAL_FORCENEWTARGET ► Open in new page.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=For SaaS / Cloud hosting integrators=&lt;br /&gt;
&lt;br /&gt;
The following options are useless for a common usage of Dolibarr. But they are usefull if you plan to host / provide Dolibarr instances as Software As A Service (SAAS) to your customers.&lt;br /&gt;
&lt;br /&gt;
*CRON_DISABLE_KEY_CHANGE ► When you provide an instance to a customer, you probably also add an entry in the cron of this user so Dolibarr batch and scheduler can work correctly. For security purpose, it may have a security key that is inside the command line into the cron entry and this entry must match the value defined into Dolibarr setup (setup of module &#039;Scheduled Jobs&#039;). Because, a customer of a Saas platform will probably have no access to edit the cron file, it is also import that he has no way to edit the key into the Dolibarr setup, so the key in the cron command line will always match the key in Dolibarr setup, and the Dolibarr batches will executed without security errors. To be sure, the customer does not change the value, you can set this constant to 1 into the table [[Table_llx_const]].&lt;br /&gt;
&lt;br /&gt;
*CRON_DISABLE_TUTORIAL_CRON ► Disable the tutorial about how to install the cron script (on a SaaS hosting, this should be the system)&lt;br /&gt;
&lt;br /&gt;
*To avoid bad use of the emailing module, it is recommended to set the option MAILING_NO_USING_PHPMAIL to 1 (This option is described previously). Also you can complete the message visible by customers when they try to setup the SMTP credentials of their Dolibarr by using the constant MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS (This option is described previously). For example, you can point to a FAQ on your website.&lt;br /&gt;
&lt;br /&gt;
*If you set a system limit on number of recipient, you can set some option to match the same values so users will be informed: MAIL_MAX_NB_OF_RECIPIENTS_IN_SAME_EMAIL ► Restrict sending of 1 email message to &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; recipients for same email message (x for To: + CC: + BCC:). If not defined, value is &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;. Required to fight against spamming that include 1000 recipients in 1 message. Note that MAIL_MAX_NB_OF_RECIPIENTS_TO_IN_SAME_EMAIL, MAIL_MAX_NB_OF_RECIPIENTS_CC_IN_SAME_EMAIL and MAIL_MAX_NB_OF_RECIPIENTS_BCC_IN_SAME_EMAIL are also available.&lt;br /&gt;
&lt;br /&gt;
*MAILING_LIMIT_WARNING_PHPMAIL ► Set this value to a translation key. Then add translation keys into the instance so user will see a message when into the email setup page. For example, you can set a message to say &#039;&#039;Warning: To avoid abuse, when using default setup, you are restricted to 500 emails per day for all your application (account may be suspended in case of violation of this rule. You can setup application to use your own SMTP server for sending email so you want have no restriction at all (see menu Home-Setup-Emails)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*MAIN_EXTERNAL_SMTP_CLIENT_IP_ADDRESS ► (A better name of this option should be MAIN_EXTERNAL_MAIL_CLIENT_IP_ADDRESS). Set here the list of IPs where your Dolibarr instances are hosted. So when your customer go into the setup area of email:&lt;br /&gt;
**If he chose mail method, a message will explain him how to setup its SPF record for its email domain (showing the list of IP). This is to avoid to have its emails, sent from its Dolibarr instance, fails due to strict antispam rule of some emailing servers.&lt;br /&gt;
**If he chose smtp method, a message will explain him the list of IP he can use if there is restriction on IP by the SMTP agent. If you also need to add a message to help SPF setup, see option MAIN_EXTERNAL_SMTP_SPF_STRING_TO_ADD.&lt;br /&gt;
&lt;br /&gt;
*MAIN_EXTERNAL_SMTP_SPF_STRING_TO_ADD ► Set here the string to add in the SPF record This string will be shown into a help message when the user in in the setup of email page and has choose a method using an external SMTP server.&lt;br /&gt;
&lt;br /&gt;
*MAIN_ALWAYS_CREATE_LOCK_AFTER_LAST_UPGRADE ► If set, when you launch upgrades of your customer instances, you are sure that the upgrade process recreate automatically the file install.lock so the administration tools like install.php and repair.php can&#039;t be used on your customer instance (until the lock file is deleted).&lt;br /&gt;
&lt;br /&gt;
*MAIN_FILECHECK_LOCAL_SUFFIX and MAIN_FILECHECK_LOCAL_EXT ► If you offer a customized or patched version of Dolibarr, when the user will use the tool to check the integrity of files, the default xml file name used for signature checking will be the official file provided by the Dolibarr team, so it does not includes your own changes. To have the suggested signature file being your own file, you can set the constant MAIN_FILECHECK_LOCAL_SUFFIX to a suffix. For example, set this to &amp;quot;&#039;&#039;&#039;-mysaassolution&#039;&#039;&#039;&amp;quot;. So, when the user will use the file integrity tool, the default file to check for signature will be &amp;quot;&#039;&#039;&#039;/install/filelist-10.0.2-mysaassolution.xml&#039;&#039;&#039;&amp;quot; instead of &amp;quot;&#039;&#039;&#039;/install/filelist-10.0.2.xml&#039;&#039;&#039;&amp;quot;. All you have to do is generate the signature file &#039;&#039;&#039;mysaassolution&#039;&#039;&#039; using the tool &#039;&#039;&#039;build/generate_filelist_xml.php&#039;&#039;&#039; and put this file into the install directory of your customer instance. Doing this, your customer, and yourself, will be able to check if a file was modified without being disturbed by false alerts due to your customized files or patches (they will be included in the signature used for check). Also, if you want to zip the customized signature file into &amp;quot;&#039;&#039;&#039;/install/filelist-10.0.2-mysaassolution.xml.zip&#039;&#039;&#039;&amp;quot;, you can set the constant MAIN_FILECHECK_LOCAL_EXT to &#039;.zip&#039;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING ► If set to N, the warning saying modules are not activated will be shown if number of activated module is &amp;lt; N (Having this variable not defined is same than having it set to 1). This may be usefull if you preinstall an application with some modules already loaded by default and you want to keep the warning to be sure the user will enable other modules he need, even if some modules are already enabed.&lt;br /&gt;
&lt;br /&gt;
*SYSLOG_DISABLE_LOGHANDLER_SYSLOG ► Set this to 1 to disable usage of syslog (having all customer instances logging in the same system file is not a good idea).&lt;br /&gt;
&lt;br /&gt;
*WEBSITE_REPLACE_INFO_ABOUT_USAGE_WITH_WEBSERVER ► Put here a text or a translation key of a text to show when the user will use the feature &amp;quot;Deploy&amp;quot; when he want to deploy a website done with Dolibarr CMS. So you can, for example, show him a message that this feature is not part of its subscription and putting a website online may need a complementary subscription.&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Template:TemplateListOfTriggers&amp;diff=47768</id>
		<title>Template:TemplateListOfTriggers</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Template:TemplateListOfTriggers&amp;diff=47768"/>
		<updated>2020-07-01T08:34:42Z</updated>

		<summary type="html">&lt;p&gt;Iouston: add USERGROUP trigger&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|class=&amp;quot;wikitable sortable&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; class=&amp;quot;dolbox&amp;quot;&lt;br /&gt;
 |style=&amp;quot;background-color: #e9e9ef&amp;quot;| &amp;lt;b&amp;gt;Trigger code ($action)&amp;lt;/b&amp;gt;&lt;br /&gt;
 |style=&amp;quot;background-color: #e9e9ef&amp;quot;| &amp;lt;b&amp;gt;Type object ($object)&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|USER_CREATE&lt;br /&gt;
|user.class.php&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;strike&amp;gt;USER_CREATE_FROM_CONTACT&amp;lt;/strike&amp;gt; (Removed since 3.8)&lt;br /&gt;
|&amp;lt;strike&amp;gt;user.class.php&amp;lt;/strike&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|USER_MODIFY&lt;br /&gt;
|user.class.php&lt;br /&gt;
|-&lt;br /&gt;
|USER_DELETE&lt;br /&gt;
|user.class.php&lt;br /&gt;
|-&lt;br /&gt;
|USER_LOGIN&lt;br /&gt;
|user.class.php&lt;br /&gt;
|-&lt;br /&gt;
|USER_LOGIN_FAILED&lt;br /&gt;
|user.class.php&lt;br /&gt;
|-&lt;br /&gt;
|USER_LOGOUT&lt;br /&gt;
|user.class.php&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;strike&amp;gt;USER_UPDATE_SESSION&amp;lt;/strike&amp;gt; (Removed since 3.7.1)&lt;br /&gt;
|&amp;lt;strike&amp;gt;user.class.php&amp;lt;/strike&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|USER_ENABLEDISABLE&lt;br /&gt;
|user.class.php&lt;br /&gt;
|-&lt;br /&gt;
|USER_NEW_PASSWORD&lt;br /&gt;
|user.class.php&lt;br /&gt;
|-&lt;br /&gt;
|USER_SETINGROUP&lt;br /&gt;
|user.class.php&lt;br /&gt;
|-&lt;br /&gt;
|USER_REMOVEFROMGROUP&lt;br /&gt;
|user.class.php&lt;br /&gt;
|-&lt;br /&gt;
|USERGROUP_CREATE &#039;&#039;(&amp;gt;= 12.0.0)&lt;br /&gt;
|usergroup.class.php&lt;br /&gt;
|-&lt;br /&gt;
|USERGROUP_MODIFY&#039;&#039;(&amp;gt;= 12.0.0)&lt;br /&gt;
|usergroup.class.php&lt;br /&gt;
|-&lt;br /&gt;
|USERGROUP_DELETE&#039;&#039;(&amp;gt;= 12.0.0)&lt;br /&gt;
|usergroup.class.php&lt;br /&gt;
|-&lt;br /&gt;
|GROUP_CREATE&lt;br /&gt;
|usergroup.class.php&lt;br /&gt;
|-&lt;br /&gt;
|GROUP_MODIFY&lt;br /&gt;
|usergroup.class.php&lt;br /&gt;
|-&lt;br /&gt;
|GROUP_DELETE &#039;&#039;(&amp;gt;= 3.3.0)&#039;&#039;&lt;br /&gt;
|usergroup.class.php&lt;br /&gt;
|-&lt;br /&gt;
|COMPANY_CREATE&lt;br /&gt;
|societe.class.php&lt;br /&gt;
|-&lt;br /&gt;
|COMPANY_MODIFY&lt;br /&gt;
|societe.class.php&lt;br /&gt;
|-&lt;br /&gt;
|COMPANY_DELETE&lt;br /&gt;
|societe.class.php&lt;br /&gt;
|-&lt;br /&gt;
|COMPANY_SENTBYMAIL &#039;&#039;(&amp;gt;= 3.5.0)&#039;&#039;&lt;br /&gt;
|societe.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CONTACT_CREATE&lt;br /&gt;
|contact.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CONTACT_MODIFY&lt;br /&gt;
|contact.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CONTACT_DELETE&lt;br /&gt;
|contact.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CONTACT_ENABLEDISABLE &#039;&#039;(&amp;gt;= 3.5.0)&#039;&#039;&lt;br /&gt;
|contact.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PRODUCT_CREATE&lt;br /&gt;
|product.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PRODUCT_MODIFY&lt;br /&gt;
|product.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PRODUCT_PRICE_MODIFY&lt;br /&gt;
|product.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PRODUCT_DELETE&lt;br /&gt;
|product.class.php&lt;br /&gt;
|-&lt;br /&gt;
|SUPPLIER_PRODUCT_BUYPRICE_UPDATE&lt;br /&gt;
|fournisseur.product.class.php&lt;br /&gt;
|-&lt;br /&gt;
|SUPPLIER_PRODUCT_BUYPRICE_CREATE&lt;br /&gt;
|fournisseur.product.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_CREATE&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_VALIDATE&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_SENTBYMAIL&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_DELETE&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_CLASSIFY_BILLED&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_CLONE&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_CLOSE&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_CANCEL&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_REOPEN &#039;&#039;(&amp;gt;= 3.3.0)&#039;&#039;&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|COMMANDE_ADD_CONTACT&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|COMMANDE_DELETE_CONTACT&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|COMMANDE_DELETE_RESOURCE &#039;&#039;(&amp;gt;= 3.6.0)&#039;&#039;&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEORDER_INSERT&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEORDER_UPDATE&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEORDER_DELETE&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEORDER_DISPATCH &#039;&#039;(&amp;gt;= 3.4.0)&#039;&#039;&lt;br /&gt;
|commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_SUPPLIER_CREATE&lt;br /&gt;
|fournisseur.commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_SUPPLIER_CLONE&lt;br /&gt;
|fournisseur.commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_SUPPLIER_VALIDATE&lt;br /&gt;
|fournisseur.commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_SUPPLIER_SENTBYMAIL&lt;br /&gt;
|fournisseur.commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_SUPPLIER_APPROVE&lt;br /&gt;
|fournisseur.commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_SUPPLIER_REFUSE&lt;br /&gt;
|fournisseur.commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_SUPPLIER_CANCEL&lt;br /&gt;
|fournisseur.commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_SUPPLIER_DELETE&lt;br /&gt;
|fournisseur.commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_SUPPLIER_DISPATCH &#039;&#039;(&amp;gt;= 3.4.0)&#039;&#039;&lt;br /&gt;
|fournisseur.commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_SUPPLIER_ADD_CONTACT&lt;br /&gt;
|fournisseur.commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_SUPPLIER_DELETE_CONTACT&lt;br /&gt;
|fournisseur.commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ORDER_SUPPLIER_DELETE_RESOURCE &#039;&#039;(&amp;gt;= 3.6.0)&#039;&#039;&lt;br /&gt;
|fournisseur.commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEORDER_SUPPLIER_CREATE&lt;br /&gt;
|fournisseur.commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEORDER_SUPPLIER_UPDATE&lt;br /&gt;
|fournisseur.commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEORDER_SUPPLIER_DELETE &#039;&#039;(&amp;gt;= 3.6.0)&#039;&#039;&lt;br /&gt;
|fournisseur.commande.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROPAL_CREATE&lt;br /&gt;
|propal.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROPAL_DELETE&lt;br /&gt;
|propal.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROPAL_CLONE&lt;br /&gt;
|propal.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROPAL_REOPEN &#039;&#039;(&amp;gt;= 3.5.0)&#039;&#039;&lt;br /&gt;
|propal.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROPAL_VALIDATE&lt;br /&gt;
|propal.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROPAL_CLOSE_SIGNED&lt;br /&gt;
|propal.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROPAL_CLOSE_REFUSED&lt;br /&gt;
|propal.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROPAL_SENTBYMAIL&lt;br /&gt;
|propal.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROPAL_ADD_CONTACT&lt;br /&gt;
|propal.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROPAL_DELETE_CONTACT&lt;br /&gt;
|propal.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROPAL_DELETE_RESOURCE &#039;&#039;(&amp;gt;= 3.6.0)&#039;&#039;&lt;br /&gt;
|propal.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEPROPAL_INSERT&lt;br /&gt;
|propal.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEPROPAL_UPDATE&lt;br /&gt;
|propal.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEPROPAL_DELETE&lt;br /&gt;
|propal.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CONTRACT_CREATE&lt;br /&gt;
|contrat.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CONTRACT_VALIDATE&lt;br /&gt;
|contrat.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CONTRACT_SERVICE_ACTIVATE&lt;br /&gt;
|contrat.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CONTRACT_SERVICE_CLOSE&lt;br /&gt;
|contrat.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CONTRACT_DELETE&lt;br /&gt;
|contrat.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CONTRAT_ADD_CONTACT&lt;br /&gt;
|contrat.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CONTRAT_DELETE_CONTACT&lt;br /&gt;
|contrat.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CONTRAT_DELETE_RESOURCE &#039;&#039;(&amp;gt;= 3.6.0)&#039;&#039;&lt;br /&gt;
|contrat.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINECONTRACT_INSERT &#039;&#039;(&amp;gt;= 3.9.0) (LINECONTRACT_CREATE &amp;gt;= 3.7.0)&#039;&#039;&lt;br /&gt;
|contrat.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINECONTRACT_UPDATE &#039;&#039;(CONTRACT_LINE_MODIFY &amp;lt; 3.5.0) (CONTRACT_LINE_MODIFY &amp;gt; 3.3.0)&#039;&#039;&lt;br /&gt;
|contrat.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINECONTRACT_DELETE &#039;&#039;(CONTRACT_LINE_DELETE &amp;lt; 3.5.0) (CONTRACTLINE_DELETE &amp;lt; 3.3.0)&#039;&#039;&lt;br /&gt;
|contrat.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_CREATE&lt;br /&gt;
|facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_MODIFY&lt;br /&gt;
|facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_CLONE&lt;br /&gt;
|facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_VALIDATE&lt;br /&gt;
|facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_UNVALIDATE &#039;&#039;(&amp;gt;= 3.4.0)&#039;&#039;&lt;br /&gt;
|facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_PAYED&lt;br /&gt;
|facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_UNPAYED&lt;br /&gt;
|facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_CANCEL&lt;br /&gt;
|facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_DELETE&lt;br /&gt;
|facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_SENTBYMAIL&lt;br /&gt;
|facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|FACTURE_ADD_CONTACT&lt;br /&gt;
|facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|FACTURE_DELETE_CONTACT&lt;br /&gt;
|facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|FACTURE_DELETE_RESOURCE &#039;&#039;(&amp;gt;= 3.6.0)&#039;&#039;&lt;br /&gt;
|facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEBILL_INSERT&lt;br /&gt;
|facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEBILL_UPDATE&lt;br /&gt;
|facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEBILL_DELETE&lt;br /&gt;
|facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_SUPPLIER_CREATE&lt;br /&gt;
|fournisseur.facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_SUPPLIER_MODIFY&lt;br /&gt;
|fournisseur.facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_SUPPLIER_DELETE &#039;&#039;(INVOICE_SUPPLIER_DELETE &amp;lt; 3.3.0)&#039;&#039;&lt;br /&gt;
|fournisseur.facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_SUPPLIER_VALIDATE&lt;br /&gt;
|fournisseur.facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_SUPPLIER_PAYED&lt;br /&gt;
|fournisseur.facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_SUPPLIER_UNPAYED&lt;br /&gt;
|fournisseur.facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|BILL_SUPPLIER_SENTBYMAIL&lt;br /&gt;
|fournisseur.facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|INVOICE_SUPPLIER_ADD_CONTACT&lt;br /&gt;
|fournisseur.facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|INVOICE_SUPPLIER_DELETE_CONTACT&lt;br /&gt;
|fournisseur.facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|INVOICE_SUPPLIER_DELETE_RESOURCE &#039;&#039;(&amp;gt;= 3.6.0)&#039;&#039;&lt;br /&gt;
|fournisseur.facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEBILL_SUPPLIER_CREATE&lt;br /&gt;
|fournisseur.facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEBILL_SUPPLIER_UPDATE&lt;br /&gt;
|fournisseur.facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEBILL_SUPPLIER_DELETE &#039;&#039;(&amp;gt;= 3.4.0)&#039;&#039;&lt;br /&gt;
|fournisseur.facture.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PAYMENT_CUSTOMER_CREATE&lt;br /&gt;
|paiement.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PAYMENT_DELETE (&amp;lt;= 3.8)&lt;br /&gt;
|paiement.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PAYMENT_CUSTOMER_DELETE (&amp;gt;= 3.9)&lt;br /&gt;
|paiement.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PAYMENT_ADD_TO_BANK&lt;br /&gt;
|paiement.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PAYMENT_SUPPLIER_CREATE&lt;br /&gt;
|paiementfourn.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PAYMENT_SUPPLIER_DELETE (&amp;gt;= 3.9)&lt;br /&gt;
|paiement.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PAYMENT_SALARY_CREATE &#039;&#039;(&amp;gt;= 3.6.0)&#039;&#039;&lt;br /&gt;
|paymentsalary.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PAYMENT_SALARY_MODIFY &#039;&#039;(&amp;gt;= 3.6.0)&#039;&#039;&lt;br /&gt;
|paymentsalary.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PAYMENT_SALARY_DELETE &#039;&#039;(&amp;gt;= 3.6.0)&#039;&#039;&lt;br /&gt;
|paymentsalary.class.php&lt;br /&gt;
|-&lt;br /&gt;
|FICHINTER_CREATE &#039;&#039;(FICHEINTER_CREATE &amp;lt; 3.3.0)&#039;&#039;&lt;br /&gt;
|fichinter.class.php&lt;br /&gt;
|-&lt;br /&gt;
|FICHINTER_MODIFY &#039;&#039;(FICHEINTER_MODIFY &amp;lt; 3.3.0)&#039;&#039;&lt;br /&gt;
|fichinter.class.php&lt;br /&gt;
|-&lt;br /&gt;
|FICHINTER_DELETE &#039;&#039;(FICHEINTER_DELETE &amp;lt; 3.3.0)&#039;&#039;&lt;br /&gt;
|fichinter.class.php&lt;br /&gt;
|-&lt;br /&gt;
|FICHINTER_VALIDATE &#039;&#039;(FICHEINTER_VALIDATE &amp;lt; 3.3.0)&#039;&#039;&lt;br /&gt;
|fichinter.class.php&lt;br /&gt;
|-&lt;br /&gt;
|FICHINTER_SENTBYMAIL &#039;&#039;(FICHEINTER_SENTBYMAIL &amp;lt; 3.3.0)&#039;&#039;&lt;br /&gt;
|fichinter.class.php&lt;br /&gt;
|-&lt;br /&gt;
|FICHINTER_ADD_CONTACT&lt;br /&gt;
|fichinter.class.php&lt;br /&gt;
|-&lt;br /&gt;
|FICHINTER_DELETE_CONTACT&lt;br /&gt;
|fichinter.class.php&lt;br /&gt;
|-&lt;br /&gt;
|FICHINTER_DELETE_RESOURCE &#039;&#039;(&amp;gt;= 3.6.0)&#039;&#039;&lt;br /&gt;
|fichinter.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEFICHINTER_CREATE &#039;&#039;(&amp;gt;= 3.5.0)&#039;&#039;&lt;br /&gt;
|fichinter.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEFICHINTER_UPDATE &#039;&#039;(&amp;gt;= 3.5.0)&#039;&#039;&lt;br /&gt;
|fichinter.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINEFICHINTER_DELETE &#039;&#039;(&amp;gt;= 3.5.0)&#039;&#039;&lt;br /&gt;
|fichinter.class.php&lt;br /&gt;
|-&lt;br /&gt;
|MEMBER_CREATE&lt;br /&gt;
|adherent.class.php&lt;br /&gt;
|-&lt;br /&gt;
|MEMBER_VALIDATE&lt;br /&gt;
|adherent.class.php&lt;br /&gt;
|-&lt;br /&gt;
|MEMBER_SUBSCRIPTION&lt;br /&gt;
|adherent.class.php&lt;br /&gt;
|-&lt;br /&gt;
|MEMBER_MODIFY&lt;br /&gt;
|adherent.class.php&lt;br /&gt;
|-&lt;br /&gt;
|MEMBER_RESILIATE&lt;br /&gt;
|adherent.class.php&lt;br /&gt;
|-&lt;br /&gt;
|MEMBER_NEW_PASSWORD&lt;br /&gt;
|adherent.class.php&lt;br /&gt;
|-&lt;br /&gt;
|MEMBER_DELETE&lt;br /&gt;
|adherent.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CATEGORY_CREATE&lt;br /&gt;
|category.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CATEGORY_MODIFY&lt;br /&gt;
|category.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CATEGORY_DELETE&lt;br /&gt;
|category.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CATEGORY_LINK &#039;&#039;(&amp;gt;= 3.5.0)&#039;&#039;&lt;br /&gt;
|category.class.php&lt;br /&gt;
|-&lt;br /&gt;
|CATEGORY_UNLINK &#039;&#039;(&amp;gt;= 3.5.0)&#039;&#039;&lt;br /&gt;
|category.class.php&lt;br /&gt;
|-&lt;br /&gt;
|SHIPPING_CREATE&lt;br /&gt;
|expedition.class.php&lt;br /&gt;
|-&lt;br /&gt;
|SHIPPING_VALIDATE&lt;br /&gt;
|expedition.class.php&lt;br /&gt;
|-&lt;br /&gt;
|SHIPPING_MODIFY&lt;br /&gt;
|expedition.class.php&lt;br /&gt;
|-&lt;br /&gt;
|SHIPPING_DELETE&lt;br /&gt;
|expedition.class.php&lt;br /&gt;
|-&lt;br /&gt;
|SHIPPING_SENTBYMAIL&lt;br /&gt;
|expedition.class.php&lt;br /&gt;
|-&lt;br /&gt;
|DELIVERY_VALIDATE&lt;br /&gt;
|livraison.class.php&lt;br /&gt;
|-&lt;br /&gt;
|DELIVERY_DELETE&lt;br /&gt;
|livraison.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ACTION_CREATE&lt;br /&gt;
|actioncomm.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ACTION_MODIFY&lt;br /&gt;
|actioncomm.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ACTION_DELETE&lt;br /&gt;
|actioncomm.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ACTION_ADD_CONTACT&lt;br /&gt;
|actioncomm.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ACTION_DELETE_CONTACT&lt;br /&gt;
|actioncomm.class.php&lt;br /&gt;
|-&lt;br /&gt;
|ACTION_DELETE_RESOURCE &#039;&#039;(&amp;gt;= 3.6.0)&#039;&#039;&lt;br /&gt;
|actioncomm.class.php&lt;br /&gt;
|-&lt;br /&gt;
|DEPLACEMENT_CREATE&lt;br /&gt;
|deplacement.class.php&lt;br /&gt;
|-&lt;br /&gt;
|DON_CREATE&lt;br /&gt;
|don.class.php&lt;br /&gt;
|-&lt;br /&gt;
|DON_MODIFY &#039;&#039;(&amp;gt;= 3.7.0)&#039;&#039;&lt;br /&gt;
|don.class.php&lt;br /&gt;
|-&lt;br /&gt;
|DON_DELETE &#039;&#039;(&amp;gt;= 3.7.0)&#039;&#039;&lt;br /&gt;
|don.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LOCALTAX_CREATE&lt;br /&gt;
|localtax.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LOCALTAX_MODIFY&lt;br /&gt;
|localtax.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LOCALTAX_DELETE&lt;br /&gt;
|localtax.class.php&lt;br /&gt;
|-&lt;br /&gt;
|TVA_CREATE&lt;br /&gt;
|tva.class.php&lt;br /&gt;
|-&lt;br /&gt;
|TVA_MODIFY&lt;br /&gt;
|tva.class.php&lt;br /&gt;
|-&lt;br /&gt;
|TVA_DELETE&lt;br /&gt;
|tva.class.php&lt;br /&gt;
|-&lt;br /&gt;
|TVA_ADDPAYMENT&lt;br /&gt;
|tva.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROJECT_CREATE&lt;br /&gt;
|project.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROJECT_MODIFY&lt;br /&gt;
|project.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROJECT_DELETE&lt;br /&gt;
|project.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROJECT_VALIDATE&lt;br /&gt;
|project.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROJECT_CLOSE&lt;br /&gt;
|project.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROJECT_ADD_CONTACT&lt;br /&gt;
|project.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROJECT_DELETE_CONTACT&lt;br /&gt;
|project.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROJECT_DELETE_RESOURCE &#039;&#039;(&amp;gt;= 3.6.0)&#039;&#039;&lt;br /&gt;
|project.class.php&lt;br /&gt;
|-&lt;br /&gt;
|TASK_CREATE&lt;br /&gt;
|task.class.php&lt;br /&gt;
|-&lt;br /&gt;
|TASK_MODIFY&lt;br /&gt;
|task.class.php&lt;br /&gt;
|-&lt;br /&gt;
|TASK_DELETE&lt;br /&gt;
|task.class.php&lt;br /&gt;
|-&lt;br /&gt;
|TASK_TIMESPENT_CREATE&lt;br /&gt;
|task.class.php&lt;br /&gt;
|-&lt;br /&gt;
|TASK_TIMESPENT_MODIFY&lt;br /&gt;
|task.class.php&lt;br /&gt;
|-&lt;br /&gt;
|TASK_TIMESPENT_DELETE&lt;br /&gt;
|task.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROJECT_TASK_ADD_CONTACT&lt;br /&gt;
|task.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROJECT_TASK_DELETE_CONTACT&lt;br /&gt;
|task.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PROJECT_TASK_DELETE_RESOURCE &#039;&#039;(&amp;gt;= 3.6.0)&#039;&#039;&lt;br /&gt;
|task.class.php&lt;br /&gt;
|-&lt;br /&gt;
|MYECMDIR_CREATE&lt;br /&gt;
|ecmdirectory.class.php&lt;br /&gt;
|-&lt;br /&gt;
|MYECMDIR_MODIFY&lt;br /&gt;
|ecmdirectory.class.php&lt;br /&gt;
|-&lt;br /&gt;
|MYECMDIR_DELETE&lt;br /&gt;
|ecmdirectory.class.php&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;strike&amp;gt;IMPORT_DELETE&amp;lt;/strike&amp;gt; (Removed since 3.7.0)&lt;br /&gt;
|&amp;lt;strike&amp;gt;import.class.php&amp;lt;/strike&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|STOCK_MOVEMENT&lt;br /&gt;
|mouvementstock.class.php&lt;br /&gt;
|-&lt;br /&gt;
|PAYBOX_PAYMENT_OK&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|PAYPAL_PAYMENT_OK&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LINK_CREATE &#039;&#039;(&amp;gt;= 3.5.0)&#039;&#039;&lt;br /&gt;
|link.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINK_MODIFY &#039;&#039;(&amp;gt;= 3.5.0)&#039;&#039;&lt;br /&gt;
|link.class.php&lt;br /&gt;
|-&lt;br /&gt;
|LINK_DELETE &#039;&#039;(&amp;gt;= 3.5.0)&#039;&#039;&lt;br /&gt;
|link.class.php&lt;br /&gt;
|-&lt;br /&gt;
|OPENSURVEY_CREATE &#039;&#039;(&amp;gt;= 3.6.0)&#039;&#039;&lt;br /&gt;
|opensurveysondage.class.php&lt;br /&gt;
|-&lt;br /&gt;
|OPENSURVEY_DELETE &#039;&#039;(&amp;gt;= 3.6.0)&#039;&#039;&lt;br /&gt;
|opensurveysondage.class.php&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Setup_Other&amp;diff=47072</id>
		<title>Setup Other</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Setup_Other&amp;diff=47072"/>
		<updated>2020-05-14T10:27:20Z</updated>

		<summary type="html">&lt;p&gt;Iouston: /* Email and SMS */ add MAIN_INFO_SOCIETE_MAIL_ALIASES options&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- BEGIN origin interlang links --&amp;gt;&lt;br /&gt;
&amp;lt;!-- You can edit this section but do NOT remove these comments&lt;br /&gt;
     Links below will be automatically replicated on translated pages by PolyglotBot --&amp;gt;&lt;br /&gt;
[[fr:Paramétrage_Divers]]&lt;br /&gt;
[[es:Configuración_Varios]]&lt;br /&gt;
[[de:Erweiterte_Einstellungen]]&lt;br /&gt;
[[zh:其他设置]]&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Admin]]&lt;br /&gt;
{{TemplateDocUser}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Help About Screen&#039;&#039;&#039;: Other setup&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Menu Path&#039;&#039;&#039;: Home ► Setup ► Other&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction on hidden options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Some options are not visible in the interface (often because they are deprecated or are beta features). In most cases you do not need these functions and their use may make the application unstable.&lt;br /&gt;
&lt;br /&gt;
 {{warning|32px}} This page contains the list of some advanced hidden parameters. In most cases, it is parameters for internal usage, development, external modules, features in development not stable or that may lead to security risk. For standard usage of Dolibarr, such parameters &#039;&#039;&#039;SHOULD NOT&#039;&#039;&#039; be used. All hidden options are NOT supported. They may be removed in a future, modified at any version and break stability of your application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To enable/override a parameter you have to define the constant name and set it to 1 (unless otherwise stated) in &amp;lt;code&amp;gt;Home ► Setup ► Other Setup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is a &amp;quot;todo list&amp;quot; showing wich options are not yet documented (for V11 on 01/12/2019) : [[Setup Other todolist]]&lt;br /&gt;
&lt;br /&gt;
The basic format of how the list is written is broken down in the example below:&lt;br /&gt;
&lt;br /&gt;
HIDDEN_CONFIG ► &#039;&#039;Description of config&#039;&#039; ► &#039;&#039;(specific version information) or values&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;toclimit-1 tocinline&amp;quot;&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Global Options=&lt;br /&gt;
&lt;br /&gt;
*ADD_UNSPLASH_LOGIN_BACKGROUND ► The background image will be refreshed on every login page refresh. Background image is pulled from the popular open source image website Unsplash. If an already saved static background image exists, then this code will override it (but not delete the saved image). ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_APPLICATION_TITLE ► This will change the title of software (that appears on the login page by default). Warning, changing this may make Dolibarr version detection fail by smartphone applications like [[Application Android - DoliDroid]]&lt;br /&gt;
&lt;br /&gt;
*MAIN_AUTOFILL_DATE ► If this constant is defined (to something other than 0), the date of invoice, proposal, order or payment are auto-filled with the current date. It is highly recommended to NOT ENABLE this feature. This can create a lot of input errors with data not validated by users. This leads to incorrect values saved in the database causing confusion when you have to do your accountancy reports! However some users want it, so we provide it.&lt;br /&gt;
&lt;br /&gt;
*MAIN_AUTO_TIMESTAMP_IN_PUBLIC_NOTES ► Add a timestamp and user automatically when editing the &#039;&#039;public&#039;&#039; note.&lt;br /&gt;
&lt;br /&gt;
*MAIN_AUTO_TIMESTAMP_IN_PRIVATE_NOTES ► Add a timestamp and user automatically when editing the &#039;&#039;private&#039;&#039; note.&lt;br /&gt;
*MAIN_COUNTRIES_IN_EEC ► Country list in European Area (For VAT purpose) (v10.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DEFAULT_PAYMENT_TERM_ID ► With ID of a payment term, will use this as default payment term each time you create a new proposal, order, invoice (customer and supplier)&lt;br /&gt;
*MAIN_DEFAULT_PAYMENT_TYPE_ID► With ID of a payment type, will use this as default payment type each time you create a new proposal, order, invoice (customer and supplier) ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DEFAULT_LANGUAGE_FILTER ► Useful if you do not want to show en_US language option in combo boxes (other languages can easily be removed in langs directory but not en_US) ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_LANGUAGES_ALLOWED ► is a list of languages without spaces, example : fr_FR,en_US,de_DE,it_IT if defined, only those languages will appear in combos. ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_NOTES_TAB ►Show or hide notes tab in the card page&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_CONTACTS_TAB ► Show or hide contacts tab in the card page&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_FULL_SCANLIST ► Disables the complete scan of tables to allow the pagination to show total number of pages. May be useful to activate on systems with a very high quantity of data (tables with more than 2 000 000 records).&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_JQUERY_JNOTIFY ► Disable usage of &amp;lt;code&amp;gt;JNotify&amp;lt;/code&amp;gt; to show confirm or error messages&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_AJAX_COMBOX ► If you have a large number of third parties or products, you can disable the autocomplete feature on the third parties list by setting this constant to 1 ► (v3.6.0+)MAIN_DISABLE_MULTIPLE_FILEUPLOAD ► Disable users to upload multiple files at once.&lt;br /&gt;
*MAIN_DISABLE_TRUNC ► Disable all truncings in select list. (v7.0 and more)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLEDRAFTSTATUS ► Disable the status Draft for some objects (project, donation, ...)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DOC_USE_OBJECT_THIRDPARTY_NAME ► Add name of thirdparty at begin of generated document.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DOC_USE_TIMING ► Add a timestamp at end of generated document. Value must be format of timestamp. For example: &amp;lt;code&amp;gt;%Y%m%d%H%M&amp;lt;/code&amp;gt; (only for ODT files)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DOC_UPLOAD_NOT_RENAME_BY_DEFAULT ► Disable the auto renaming on upload file ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DOL_SCRIPTS_ROOT ► Define directory who contains &#039;scripts&#039; directory (e.g. &amp;lt;code&amp;gt;/var/www/dolibarr&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
*MAIN_ENABLE_LOG_TO_HTML ► If this constant is defined, it is possible to have logs inside pages by adding the parameter &amp;amp;logtohtml=1 into URL.&lt;br /&gt;
&lt;br /&gt;
*MAIN_ENABLE_IMPORT_LINKED_OBJECT_LINES ► Allow to import lines into current document from &amp;quot;linked&amp;quot; compatible documents ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_FIRST_TO_UPPER ► Dolibarr add uppercase to Third Parties, contacts or members names if not done. Warning, with some languages (whose words with uppercase are not same words, or pagecode does not always have an uppercase, like cyrillic languages), this feature may alter your data.&lt;br /&gt;
&lt;br /&gt;
*MAIN_ALL_TO_UPPER ► Dolibarr puts uppercase for Third Parties, contacts or members names if not done. Warning, with some languages (whose words with uppercase are not same words, or pagecode does not always have an uppercase, like cyrillic languages), this feature may alter your data. ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_FILESYSTEM_ENCODING ► With some PHP versions, PHP is not able to detect the page code for filesystem of the server OS. To solve this, Dolibarr assumes your OS filesystem is UTF-8 if on Linux or OSX system, and ISO-8859-1 if on Windows. If not, for example on a Windows server with a NTFS UTF-8 pagecode, you can set the variable &amp;lt;code&amp;gt;MAIN_FILESYSTEM_ENCODING&amp;lt;/code&amp;gt; to &amp;quot;&amp;lt;code&amp;gt;utf-8&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_FORCELANGDIR ► Relative path of the directory holding your custom &amp;lt;code&amp;gt;langs&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
*MAIN_HTML_TITLE ► Can be used to control how the html page title is formatted. If value contains key &#039;&amp;lt;code&amp;gt;noapp&amp;lt;/code&amp;gt;&#039;, application name will not be output. If value contains &#039;&amp;lt;code&amp;gt;thirdpartynameonly&amp;lt;/code&amp;gt;&#039;, on tab for thirdparties, only name of thirdparties are output. Value can be list of tags: &#039;&amp;lt;code&amp;gt;noapp;thirdpartynameonly&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
*MAIN_HELPCENTER_LINKTOUSE  ► Define the URL link to use as the target page for link &amp;quot;I need help&amp;quot; onto logon page&lt;br /&gt;
&lt;br /&gt;
*MAIN_LANDING_PAGE ► Can choose the first page to show after login (the landing page). This option works as a global option (llx_const) and per user option (llx_user_param). ► (v3.9+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_LOGOUT_GOTO_URL ► URL to which the user will be redirected after LOGOUT&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAXTABS_IN_CARD ► Maximum number of tabs visible. Others are grouped into a combo list.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING ► A warning saying setup of modules is not complete is shown if the number of enabled modules is lower or equal than this value (1 if not defined)&lt;br /&gt;
&lt;br /&gt;
*MAIN_MODULES_FOR_EXTERNAL ► Limit available modules for external users. By default value is &#039;&amp;lt;code&amp;gt;facture,commande,contact,propal,projet,contrat,societe,ficheinter,expedition,agenda&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
*MAIN_NO_CONCAT_DESCRIPTION ► Allow to use only input custom description in lines (propale, order, invoice) ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_ONLY_LOGIN_ALLOWED ► Only the specified login is allowed to log in Dolibarr (maintenance mode).&lt;br /&gt;
&lt;br /&gt;
*MAIN_OPTIMIZE_SPEED ► Use some speed enhancements. See page [[FAQ Increase Performance]] for more information.&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROPAGATE_CONTACTS_FROM_ORIGIN ► When creating an order, contract, invoice from another object, specific contacts of objects are set as specific contact of the new object when possible. ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PUBLIC_NOTE_IN_ADDRESS ► Show public note in address block ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_REMOVE_INSTALL_WARNING ► Remove all security warnings that appear to administrator users if URL &amp;lt;code&amp;gt;/install&amp;lt;/code&amp;gt; is public. You should solve the problem if warning occurs, instead of removing the warning! For this, create a file called &amp;lt;code&amp;gt;install.lock&amp;lt;/code&amp;gt; into Dolibarr root directory. This will stop the warning but also make the page &amp;lt;code&amp;gt;/install&amp;lt;/code&amp;gt; not possible to use, to protect your installation.&lt;br /&gt;
&lt;br /&gt;
*MAIN_REPEATCONTACTONEACHTAB ► If added and set to 1, this adds contacts on all tabs, not only main tab.&lt;br /&gt;
&lt;br /&gt;
*MAIN_REPLACE_TRANS_xx_XX ► Where &amp;lt;code&amp;gt;xx_XX&amp;lt;/code&amp;gt; is language code. If value is &amp;lt;code&amp;gt;string1:newstring1;string2:newstring2&amp;lt;/code&amp;gt; then replace &amp;lt;code&amp;gt;string1&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;newstring1&amp;lt;/code&amp;gt; in all translation done for language &amp;lt;code&amp;gt;xx_XX&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND ► Change way of rounding total TTC lines, rounding first of after.&lt;br /&gt;
&lt;br /&gt;
*MAIN_SECURITY_CSRF_WITH_TOKEN ► Activate a second anti-CSRF protection on POST (a POST from another web site can&#039;t be done). Note there is already a default protection using test on referrer. This second protection uses TOKEN on forms and is more powerful. ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_SERVER_TZ ► If you can&#039;t set the timezone of your PHP installation, set this constant. Better is to set it to UTC. In future, this constant will be forced to &#039;UTC&#039; so PHP server timezone will not have effect anymore. Examples: &amp;lt;code&amp;gt;Europe/Paris&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;auto&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_SEARCH_FORM_ON_HOME_AREAS ► Show the search form on home page areas for core modules (Removed after v5 due to global search combo) ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE ► If only one result is found, then setting this value to 1 will take you direct to the item (default method).  Setting the value to 0 will show the result in the list as a single result ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_SERVICES_ARE_ECOMMERCE_200238EC ► (&amp;lt; 8)&lt;br /&gt;
&lt;br /&gt;
*MAIN_SHOW_TUNING_INFO ► Add tuning information into javascript console. Better when xdebug is enabled.&lt;br /&gt;
&lt;br /&gt;
*MAIN_SHOW_TECHNICAL_ID ► Show also technical IDs on elements cards or some lists (not supported everywhere).&lt;br /&gt;
&lt;br /&gt;
*MAIN_SHOWDATABASENAMEINHELPPAGESLINK ► Show database name in upper help menu ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_ALTERNATE_TRANSLATION_FOR ► List of fields per object that need an alternate translation. Example: MAIN_USE_ALTERNATE_TRANSLATION_FOR=societe:name,town;contact:firstname,lastname&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_HOURMIN_IN_DATE_RANGE ► On all entities lines (invoice, order, contract...), it is possible to add hour and minutes with date on fields &amp;quot;date start&amp;quot; and &amp;quot;date end&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_JQUERY_JEDITABLE ► Allow to update from screen, directly into database, some properties of elements (invoices, proposals, ...) using Ajax. This make response time faster, but avoid using this feature, because it bypasses some business actions (updates on other data that should be done consistently) and ignores business controls on data you saved. Consequently this feature breaks consistency of data and possibly the stability of the software.&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_JQUERY_MULTISELECT ► Allow to use Ajax when a choice that require multiselect is used (for the moment only external modules uses select box with multiselect values). Set the value to the jQuery plugin name to use (multiselect, multiple-select, select2…). Setting it to any other value will result in unwanted side-effects and/or bugs.&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_OLD_SEARCH_FORM ► Display the old search form in left menu.&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_VAT_OF_PRODUCT_FOR_INDIVIDUAL_CUSTOMER_OUT_OF_EEC ► Allow using product VAT if customer is individual and out of E.E.C. (European Economic Community) ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_VAT_DEFAULT_IF_AUTODETECT_FAILS ► Allow to define a default VAT rate&lt;br /&gt;
&lt;br /&gt;
*MAIN_VIEW_LINE_NUMBER ► Shows a line number against each line in the order/invoice for products/services.  On screen only, not on PDF.&lt;br /&gt;
&lt;br /&gt;
*MAIN_VIEW_LINE_NUMBER_IN_LIST ► Shows a line number in lists (v12.0).&lt;br /&gt;
&lt;br /&gt;
*MAIN_VOLUME_DEFAULT_ROUND ► Accuracy of volume (number of decimals)&lt;br /&gt;
&lt;br /&gt;
*MAIN_VOLUME_DEFAULT_UNIT ► Default unit for weight (0=kg, -3=g, ...)&lt;br /&gt;
&lt;br /&gt;
*MAIN_WEIGHT_DEFAULT_ROUND ► Accuracy of weight (number of decimals)&lt;br /&gt;
&lt;br /&gt;
*MAIN_WEIGHT_DEFAULT_UNIT ► Default unit for weight (0=kg, -3=g, ...)&lt;br /&gt;
*USER_HIDE_INACTIVE_IN_COMBOBOX ► Disable display inactive users in combobox.&lt;br /&gt;
*MAIN_DISABLE_PDF_THUMBS ► Disable thumbs PDF in case of imagick bug&lt;br /&gt;
*MAIN_KEEP_REF_CUSTOMER_ON_CLONING ► Keep the Customer Reference on cloned object (Propal/Invoice)&lt;br /&gt;
*MAIN_DONT_KEEP_NOTE_ON_CLONING ► Remove the object notes during cloning ► (v11.0)&lt;br /&gt;
*MAIN_DOC_SORT_FIELD ► Set the default sorting field on document page (name by default) ► (v11.0)&lt;br /&gt;
*MAIN_DOC_SORT_ORDER ► Set the default sorting order (ASC or DESC) on document page (ASC by default) ► (v11.0)&lt;br /&gt;
*MAIN_USE_ZIPTOWN_DICTIONNARY► Use dictionnary ZIP for create card.&lt;br /&gt;
*MAIN_USE_TOP_MENU_BOOKMARK_DROPDOWN► Show bookmark in top menu with theme eldy ► (v11.0)&lt;br /&gt;
*MAIN_USE_TOP_MENU_SEARCH_DROPDOWN► Show search in top menu with theme eldy ► (v11.0)&lt;br /&gt;
*MAIN_PHONE_SEPAR ► Separ phone number other space ►(v12.0)&lt;br /&gt;
*GRAPH_USE_FISCAL_YEAR ► Widgets uses fiscal year&lt;br /&gt;
&lt;br /&gt;
*SHOW_SOCINFO_ON_PRINT ► Permit to add user company information on each printed document (when click on Dolibarr print button) ►(v12.0)&lt;br /&gt;
*MAIN_FEATURES_LEVEL ► Level of features to show: -1=stable+deprecated, 0=stable only (default), 1=stable+experimental, 2=stable+experimental+development&lt;br /&gt;
*MAIN_SHOW_TECHNICAL_ID ► Show tecnical id for object.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Accountancy Module=&lt;br /&gt;
&lt;br /&gt;
*ACCOUNTANCY_COMBO_FOR_AUX ► Add graphic option for ACCOUNTANCY_COMBO_FOR_AUX ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Agenda Module=&lt;br /&gt;
&lt;br /&gt;
*AGENDA_MAX_EVENTS_DAY_VIEW ► Define the maximum number of visible entries for each day in agenda. Default value is 3. Value 0 means no limit.&lt;br /&gt;
&lt;br /&gt;
*AGENDA_USE_EVENT_TYPE ► Add a mandatory field &amp;quot;Type&amp;quot; when creating an event (deprecated).&lt;br /&gt;
&lt;br /&gt;
*AGENDA_AUTOSET_END_DATE_WITH_DELTA_HOURS ► To automatically set end date of event to start date + delta on event creation page.&lt;br /&gt;
*AGENDA_DISABLE_LOCATION ► Disable location field in action card  ► (&amp;gt;=v5.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_ADD_EVENT_ON_ELEMENT_CARD ► Allow to create an event from a document (proposal, order, invoice)&lt;br /&gt;
*AGENDA_ALL_CALENDARS ► Change the default view to calendar for all the Agenda&#039;s&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Bank Module=&lt;br /&gt;
&lt;br /&gt;
*BANK_CAN_RECONCILIATE_CASHACCOUNT ► Can reconciliate cash accounts ► (v3.8)&lt;br /&gt;
&lt;br /&gt;
*BANK_DISABLE_CHECK_DEPOSIT ► Disable check deposit feature&lt;br /&gt;
&lt;br /&gt;
*BANK_ASK_PAYMENT_BANK_DURING_ORDER ► Ask bank account during creation of an order&lt;br /&gt;
&lt;br /&gt;
*BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL ► Ask bank account during creation of a proposal&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=BlockedLog=&lt;br /&gt;
&lt;br /&gt;
*BLOCKEDLOG_DISABLE_NOT_ALLOWED_FOR_COUNTRY ► Make disable of module &amp;quot;blockedlog&amp;quot; not possible for countries code defined into value. Example: &#039;FR,...&#039;&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Contracts=&lt;br /&gt;
&lt;br /&gt;
*CONTRACT_SUPPORT_PRODUCTS ► Products are also suggested into module contract.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Direct Debit Orders=&lt;br /&gt;
&lt;br /&gt;
*WITHDRAWAL_ALLOW_ANY_INVOICE_STATUS ► If this option is set, all invoices status (even already paid) may appear on the list of invoices qualified for a direct debit payment. This is the list of invoices with a payment request done, and not linked to a direct debit payment. By default, only &amp;quot;unpayed&amp;quot; invoices are used to avoid to pay twice the same invoice.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Email and SMS=&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAILFORM_DISABLE_ENTERKEY ► Activate javascript code to disable the enter key in the MAIL form. ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*MAIL_PREFIX_FOR_EMAIL_ID ► Prefix for the mails ID. Default value is &amp;lt;code&amp;gt;$_SERVER[&amp;quot;SERVER_NAME&amp;quot;]&amp;lt;/code&amp;gt; ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_DEBUG ► Write content with header of last mail into file &amp;lt;code&amp;gt;dolibarr_mail.log&amp;lt;/code&amp;gt; into directory &amp;lt;code&amp;gt;dolibarr_main_data_root&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_SMS_DEBUG ► Write content of SMS sent into file &amp;lt;code&amp;gt;dolibarr_sms.log&amp;lt;/code&amp;gt; into directory &amp;lt;code&amp;gt;dolibarr_main_data_root&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_ALLOW_SENDMAIL_F ► On Linux or BSD system, PHP email function use the command sendmail local to server. In some cases, the sender email must be provided on command line of sendmail with option &amp;lt;code&amp;gt;-f&amp;lt;/code&amp;gt;. This option is here to ask Dolibarr to call the function mail of PHP by adding value for the option &amp;lt;code&amp;gt;-f&amp;lt;/code&amp;gt;. Note that in most cases, even with sendmail, sender email is correctly managed as it is added in the email technical header. This option is here only for rare setup of sendmail that ask the -f option to be mandatory or for sendmail setup that does not use by default the Return-path of header email to define the sender (with this option, the return-path will be provided also on command line and not lost by sendmail).&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_SENDMAIL_FORCE_BA ► On Linux or BSD system, PHP email function use the command sendmail local to server. In some case, we want to recipient to be provided to sendmail into the email content instead of its command line parameter. For this we must add the -ba parameter to sendmail. This option asks PHP to provide this parameter when sending a mail. Note that another solution is to edit the mail.force_extra_parameters=-ba into &amp;lt;code&amp;gt;php.ini&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_NO_FULL_EMAIL ► Recipient email and sender are cleaned to be on form &amp;quot;&amp;lt;email&amp;gt;&amp;quot; instead of &amp;quot;Name &amp;lt;email&amp;gt;&amp;quot;. This might solve problem of compatibility with very old mailers.&lt;br /&gt;
&lt;br /&gt;
*MAIN_FIX_FOR_BUGGED_MTA ► Some MTA agent are bugged and add some CR chars each time they saw a LF. Because Dolibarr emails are forged to be already cleaned, if MTA agent do that, you will send an email with two CR chars. This may result in having recipient not able to read your email. To fix this, add this constant to 1. Dolibarr will then create an email that is not RFC compliant but because the MTA agent is bugged, the email will be modified and become correct during sending, solving the problem of bad email received. Add this constant if your recipient experience problems when opening email for example users using webmail of &amp;lt;code&amp;gt;orange.fr&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;hotmail.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_DO_NOT_USE_SIGN ► Do not add user signature at end of suggested pre-defined email&lt;br /&gt;
&lt;br /&gt;
*MAIL_FORCE_DELIVERY_RECEIPT_INVOICE ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Invoice&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*MAIL_FORCE_DELIVERY_RECEIPT_ORDER ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Order&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*MAIL_FORCE_DELIVERY_RECEIPT_PROPAL ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Proposal&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*MAIN_EMAIL_USECCC ► 1 = Show field BCC into email forms, If email = Show BCC prefilled with email.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_AUTOCOPY_PROPOSAL_TO, MAIN_MAIL_AUTOCOPY_ORDER_TO, MAIN_MAIL_AUTOCOPY_INVOICE_TO ► Email to use as a BCC recipient when sending email for proposal, order or invoice. You can make this value visible by setting MAIN_EMAIL_USECCC (to 1 or to another email, see previous point)&lt;br /&gt;
&lt;br /&gt;
*MAIN_EMAIL_ADD_TRACK_ID ► When value is 1 (this is also default value if option is not set): The record &amp;quot;Message-id&amp;quot; added into smtp header includes a tracking id to define where the email was sent from. When value is 2: you send an email from third party card, the sender email is completed with the email source tracking string  &amp;quot;+thiXXX&amp;quot; on email (your email will be sent with the &amp;quot;From&amp;quot; that is myname+thi123@mycompany.com). So when user receiving email will make &amp;quot;Answer&amp;quot;, email will be sent to myname@mycompany.com but with the tracking id included (into header or into target email), allowing you to know to which third party or object, the email exchange is related to.&lt;br /&gt;
&lt;br /&gt;
*MAIL_MAX_NB_OF_RECIPIENTS_IN_SAME_EMAIL ► Restrict sending of 1 email message to &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; recipients for same email message (x for To: + CC: + BCC:). If not defined, value is &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;. Required to fight against spamming that include 1000 recipients in 1 message. Note that MAIL_MAX_NB_OF_RECIPIENTS_TO_IN_SAME_EMAIL, MAIL_MAX_NB_OF_RECIPIENTS_CC_IN_SAME_EMAIL and MAIL_MAX_NB_OF_RECIPIENTS_BCC_IN_SAME_EMAIL are also available.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_FORCE_CONTENT_TYPE_TO_HTML ► Force to send all email (event with text only content) as HTML formatted email.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_USE_MULTI_PART ► Forge email content using an alternate text part ► (for 5.0.2+). By default with 6.0+&lt;br /&gt;
*MAIN_INFO_SOCIETE_MAIL_ALIASES ► add address aliases for the from field on mail. Set his value with &amp;quot;Firstname Name &amp;lt;firstname.lastname@mydomain.tld, Otherfirstname OtherlastName &amp;lt;othermail@mydomain.tld&amp;gt;,...&amp;quot; ► (v5.0.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_ADD_INLINE_IMAGES_IF_IN_MEDIAS ► If images were stored into the medias directory from CKEditor, then images into emails are replaced with &amp;quot;inline content&amp;quot;. This may increase seriously risk of being detected as SPAM.&lt;br /&gt;
&lt;br /&gt;
*MAIN_COPY_FILE_IN_EVENT_AUTO ► Add attachement document on event auto generated by sending email from dolibarr. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_EXTERNAL_SMTP_CLIENT_IP_ADDRESS ► (A better name of this option should be MAIN_EXTERNAL_MAIL_CLIENT_IP_ADDRESS). Set here the list of IPs where your Dolibarr instances are hosted. So when your customer go into the setup area of email:&lt;br /&gt;
**If he chose mail method, a message will explain him how to setup its SPF record for its email domain (showing the list of IP). This is to avoid to have its emails, sent from its Dolibarr instance, fails due to strict antispam rule of some emailing servers.&lt;br /&gt;
**If he chose smtp method, a message will explain him the list of IP he can use if there is restriction on IP by the SMTP agent. If you also need to add a message to help SPF setup, see option MAIN_EXTERNAL_SMTP_SPF_STRING_TO_ADD.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_ENABLED_USER_DEST_SELECT ► Show also internal users into list of recipients of email in email sending form ► (v8.0+)&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Emailing Module=&lt;br /&gt;
&lt;br /&gt;
*MAILING_PREFIX_FOR_EMAIL_ID ► Set the value that will be used to compose the &amp;quot;Email ID&amp;quot; into email headers. If you set this value to &#039;&amp;lt;code&amp;gt;SERVER_NAME&amp;lt;/code&amp;gt;&#039;, the virtual host of web server will be used. By default, this is not defined, so a hash key, unique to each instance, is used.&lt;br /&gt;
&lt;br /&gt;
*MAILING_NO_USING_PHPMAIL ► If set, the module emailing can&#039;t be used with mail setup of &amp;quot;phpmail&amp;quot;. Using a thirdparty SMTP server is required. You can complete warning message by adding an email to contact for setup help with constant MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS.&lt;br /&gt;
&lt;br /&gt;
*MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS ► Contains the email of contact to show into the message visible to a user when he try to use emailing module without SMTP server and if option MAILING_NO_USING_PHPMAIL is set to on.&lt;br /&gt;
&lt;br /&gt;
*MAILING_LIMIT_WARNING_PHPMAIL ► Show a warning message (var contains the &#039;&#039;&#039;message to show&#039;&#039;&#039;, or &#039;&#039;&#039;translation key&#039;&#039;&#039;) on emailing send form if setup is on &amp;quot;phpmail&amp;quot;. Note: The application always try to translation the message considering the message is a translation key, before showing the translation or message if translation was not found.&lt;br /&gt;
&lt;br /&gt;
*MAILING_LIMIT_WARNING_NOPHPMAIL ► Show a warning message (var contains the &#039;&#039;&#039;message to show&#039;&#039;&#039;, or &#039;&#039;&#039;translation key&#039;&#039;&#039;) on emailing send form if setup is something else than &amp;quot;phpmail&amp;quot;. Note: The application always try to translation the message considering the message is a translation key, before showing the translation or message if translation was not found.&lt;br /&gt;
*EMAILING_USE_ADVANCED_SELECTOR ► Enable the advanced selector for recipients.&lt;br /&gt;
&lt;br /&gt;
*MAILING_LIMIT_SENDBYWEB ► Restrict number of emails you can send in same sending session with emailing module from GUI. The value &amp;quot;&amp;lt;code&amp;gt;dolibarr_mailing_limit_sendbyweb&amp;lt;/code&amp;gt;&amp;quot; if defined into config file is used in priority for this limit. A negative value means, sending by web is forbidden.&lt;br /&gt;
&lt;br /&gt;
*MAILING_LIMIT_SENDBYCLI ► Restrict number of emails you can send in same sending session with emailing module from CLI script. The value &amp;quot;&amp;lt;code&amp;gt;dolibarr_mailing_limit_sendbycli&amp;lt;/code&amp;gt;&amp;quot; if defined into config file is used in priority for this limit.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Expense Report=&lt;br /&gt;
&lt;br /&gt;
*EXPENSEREPORT_ALLOW_OVERLAPPING_PERIODS ► Can enter several expense reports on same or overlapping date periods. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*EXPENSEREPORT_OVERRIDE_VAT ► Setting constant EXPENSEREPORT_OVERRIDE_VAT to 1 will allow expense reports to show VAT even if the global VAT setting is off ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*EXPENSEREPORT_USE_OLD_NUMBERING_RULE ► The module Expense Report use numbering rules that you can setup (like other modules do). If you need to keep the hard-coded numbering rule of expenses report used in v6.0 set this constant to 1 ► (&amp;gt;=v7.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_EXPENSE_IK ► This feature allows you to set index kilometers against a mileage index for different types of vehicles. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_EXPENSE_RULE ► This feature allows you to set a variety of rules per user/group/all so they can only create reports within their limits. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Export Module=&lt;br /&gt;
&lt;br /&gt;
*EXPORT_CSV_SEPARATOR_TO_USE ► String value to use as default separator to delimit fields of exported files (by default Dolibarr uses &amp;quot;&amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;&amp;quot;). Example: EXPORT_CSV_SEPARATOR_TO_USE=&amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*EXPORT_CSV_FORCE_CHARSET ► Choose the charset used in the output file built by the CSV exporter. By default it is ISO-8859-1. Example: EXPORT_CSV_FORCE_CHARSET= &amp;lt;code&amp;gt;utf-8&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*EXPORTTOOL_CATEGORIES ► Can export categories (several lines) into one column with the &amp;quot;product export profile&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*USE_STRICT_CSV_RULES ► Use strict/real CSV format for export. Do not clean/replace CR+LF with &#039;\n&#039; but quote them using the escaping CSV char (&amp;lt;code&amp;gt;&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*EXPORTS_SHARE_MODELS  ► Share export models between user&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Foundation Module=&lt;br /&gt;
&lt;br /&gt;
*MEMBER_URL_REDIRECT_SUBSCRIPTION ► Link called and shown when a member account is autocreated in member module by a guest user.&lt;br /&gt;
&lt;br /&gt;
*MEMBER_EXT_URL_SUBSCRIPTION_INFO ► Link of external page pointed by the &amp;quot;Show here&amp;quot; link added in front of payment cell, into the page to make online subscription.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Interventions Module=&lt;br /&gt;
&lt;br /&gt;
*FICHINTER_CLASSIFY_BILLED► Allow to classify an intervention card as &amp;quot;Billed&amp;quot;. This add also trigger &amp;lt;code&amp;gt;FICHINTER_CLASSIFY_BILLED&amp;lt;/code&amp;gt; into list of possible automatic event into agenda.&lt;br /&gt;
&lt;br /&gt;
*FICHINTER_DISABLE_DETAILS► Disable entry of details line on intervention. Can validate with no line.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Invoice Module=&lt;br /&gt;
&lt;br /&gt;
*MAIN_DEPOSIT_MULTI_TVA ► In deposits invoice, creates one line per VAT rate from the origin document ► (6.0)&lt;br /&gt;
&lt;br /&gt;
*FACTURE_SHOW_SEND_REMINDER ► Show link &amp;quot;Send reminder by mail&amp;quot;, same feature than &amp;quot;Send by mail&amp;quot; &#039;&#039;(obsolete feature)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
*INVOICE_CAN_ALWAYS_BE_EDITED ► Allow to edit invoices even if payment was started. Note: If the module &amp;quot;BlockedLog&amp;quot; is active (required in some countries for legal reasons), this will not change content of archived logs tracked by this module. By definition there is no way to change or remove archived records. It will just update data in your application and a new record to track your change into the read-only archive log.&lt;br /&gt;
&lt;br /&gt;
*INVOICE_CAN_ALWAYS_BE_REMOVED ► Allow to always delete invoices (even if invoice is not last one). Note: If the module &amp;quot;BlockedLog&amp;quot; is active (required by some countries for legal reason), this will not change content of archived logs tracked by this module. By definition there is no way to change or remove archived records. It will just update data in your application and a new record to track your change into the read-only archive log.&lt;br /&gt;
&lt;br /&gt;
*INVOICE_CAN_NEVER_BE_REMOVED ► Never allow to delete invoices (except draft invoices).&lt;br /&gt;
&lt;br /&gt;
*INVOICE_POSITIVE_CREDIT_NOTE ► All amounts on PDF credit notes are positive.&lt;br /&gt;
&lt;br /&gt;
*FACTURE_CHANGE_THIRDPARTY ► Allow to change the third party in the draft invoices. If a discount was set from the original thirdparty, then discount remain, making data not coherent.&lt;br /&gt;
&lt;br /&gt;
*FACTURE_USE_PROFORMAT ► Enable PROFORMAT invoices type.&lt;br /&gt;
&lt;br /&gt;
*FACTURE_DEPOSITS_ARE_JUST_PAYMENTS ► Treats deposit invoices as a special case. Deposit invoices don&#039;t get counted on turnover. They are then applied as a payment, like a discount, on the final invoice. By default, when you include the deposit into draft of final invoice, the amount of final invoice is reduced. With this option, final amount is not reduced but a payment is registered. WARNING: In a lot of european countries, using this option is not allowed.&lt;br /&gt;
&lt;br /&gt;
*FACTURE_SENDBYEMAIL_FOR_ALL_STATUS ► Can send invoice by email to customer even if invoice has status &amp;quot;draft&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*INVOICE_CREDIT_NOTE_STANDALONE ► Start implementation to allow a credit note even without invoice (dangerous) ► (v3.9)&lt;br /&gt;
&lt;br /&gt;
*INVOICE_USE_SITUATION ► Enable the &amp;quot;situation invoice&amp;quot; feature&lt;br /&gt;
&lt;br /&gt;
*INVOICE_USE_SITUATION_CREDIT_NOTE ► Enable the &amp;quot;situation credit note&amp;quot; feature (need &amp;lt;code&amp;gt;INVOICE_USE_SITUATION&amp;lt;/code&amp;gt;) ► (v8.0)&lt;br /&gt;
&lt;br /&gt;
*INVOICE_DISABLE_DEPOSIT ► Disable deposit invoices&lt;br /&gt;
&lt;br /&gt;
*INVOICE_DISABLE_REPLACEMENT ► Disable replacement invoices&lt;br /&gt;
&lt;br /&gt;
*INVOICE_DISABLE_CREDIT_NOTE ► Disable credit notes&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT ► See PDF option&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_COLUMN ► See PDF options&lt;br /&gt;
&lt;br /&gt;
*WORKFLOW_BILL_ON_SHIPMENT ► Change label of button with suitable label when you need to create invoice on shipments&lt;br /&gt;
&lt;br /&gt;
*INVOICE_ALLOW_EXTERNAL_DOWNLOAD ► When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. Use the tag __DIRECTDOWNLOAD_URL_INVOICE__ in email template to insert it. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*INVOICE_POINTOFTAX_DATE ► Add Point of Tax Date on invoices for country-specific legality reasons ► (v4.0+)&lt;br /&gt;
*FACTURE_ENABLE_NEGATIVE ► Can validate an invoice when amount is negative&lt;br /&gt;
&lt;br /&gt;
*FACTURE_ENABLE_NEGATIVE_LINES ► Allows to add negative lines to an invoice ► (v8.0.2+)&lt;br /&gt;
&lt;br /&gt;
*INVOICE_USE_DEFAULT_DOCUMENT ► Allow user to select a default invoice documents models according to invoice type. On invoice create page, the model is dynamically changed on invoice type selection. ► (v9.0+)&lt;br /&gt;
&lt;br /&gt;
*FACTURE_REUSE_NOTES_ON_CREATE_FROM ► Reuse the Public Note and Private note of the previous object (Proposal,...) when creating the bill.&lt;br /&gt;
*MAIN_SHOW_FACNUMBER_IN_DISCOUNT_LIST ► Display the reference of credit notes in discount list when creating the bill.&lt;br /&gt;
*INVOICE_ALLOW_FREE_REF ► Apability to change reference of an invoice. This will be possible as long as the invoice has the status “Draft” and only if your country is not in Europe(V11)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Look or Theme=&lt;br /&gt;
&lt;br /&gt;
*MAIN_FAVICON_URL ► favicon url&lt;br /&gt;
*MAIN_OPTIMIZEFORTEXTBROWSER ► Optimize output rendering for usage of a text browser (useful for blind people)&lt;br /&gt;
&lt;br /&gt;
*THEME_ELDY_DISABLE_IMAGE ► Disabled images of top menu for eldy theme. ► (v3.8+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_MENU_HIDE_UNAUTHORIZED ► Hide menu if logged in user is not authorized rather than just grey them&lt;br /&gt;
&lt;br /&gt;
*THEME_TOPMENU_STICKY_POSITION ► Option to fix top menu with eldy theme ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_EASTER_EGG_COMMITSTRIP ► Show a comic image from the CommitStrip website. Images are refreshed daily. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_STATUS_USES_CSS ► (v10.0+) Change status design using new style&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_NEW_TITLE_BUTTON ► (v10.0+) Use new list buttons design&lt;br /&gt;
*MAIN_APPLICATION_DISABLED_STATEBOARD ► Hide the stateboard of the main page&lt;br /&gt;
*MAIN_APPLICATION_DISABLED_WORKBOARD ► Hide the workboard of the main page&lt;br /&gt;
*MAIN_INCLUDE_GLOBAL_STATS_IN_OPENED_DASHBOARD ► (v11.0+) This conf will auto remove global stats box item if there are already in the new dashboard of opened elements and keep displayed stats on the opened item box (not only on mouse over)&lt;br /&gt;
*MAIN_USE_TOP_MENU_BOOKMARK_DROPDOWN ► (v11.0+) actually only for eldy theme, this conf move bookmark to top menu and use new design too&lt;br /&gt;
*MAIN_USE_TOP_MENU_SEARCH_DROPDOWN ► (v11.0+) actually only for eldy theme, this conf move search input  to top menu and use new design too&lt;br /&gt;
&lt;br /&gt;
*THEME_AGRESSIVENESS_RATIO ► (v11.0+) this conf can be used to increase/decrease agressiveness of colors. Value 0 is medium, value is between -100 (light grey colors) to +100 (very flashy colors)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=MultiCurrency=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*MAIN_MULTICURRENCY_ALLOW_SYNCHRONIZATION ► Enable CurrencyLayer API synchronization&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Order Module=&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_PROPAL_REFCLIENT_FOR_ORDER =&amp;gt; Copy customer reference from proposal to order. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*ORDER_REQUIRE_SOURCE =&amp;gt; Make the input field &amp;quot;Source of order&amp;quot; mandatory.&lt;br /&gt;
&lt;br /&gt;
*ORDER_VALID_AFTER_CLOSE_PROPAL =&amp;gt; When an order is created on a proposal close, the order is directly defined with status &amp;quot;Validated&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*ORDER_ALLOW_EXTERNAL_DOWNLOAD =&amp;gt; When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*ORDER_ENABLE_NEGATIVE =&amp;gt; Can validate an order when amount is negative&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_PROPAGATE_EXTRAFIELDS_TO_ORDER =&amp;gt; Copy also extrafields from thirdparty to order (if name match). ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=PDF Options=&lt;br /&gt;
&lt;br /&gt;
*MAIN_ADD_PDF_BACKGROUND ► Define this constant with short name of a PDF file (example &amp;quot;&amp;lt;code&amp;gt;mypdf.pdf&amp;lt;/code&amp;gt;&amp;quot;) that must be saved into directory &amp;quot;&amp;lt;code&amp;gt;documents/mycompany&amp;lt;/code&amp;gt;&amp;quot;. This will add PDF as a background of some of your generated PDF files (proposals,invoices,orders). If you need to concat PDF, see instead [[Module Concat PDF]].&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_FORCE_SAVEAS ► If your browser always asks to save downloaded files on disk (like PDF), try this this option. File may be displayed directly in your browser.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_PDF_AUTOUPDATE ► Disable automatic generation of PDF each time we add/update/delete a product line (we can still build document by clicking on &amp;quot;Generate&amp;quot;). This option may increase interface speed on servers with low CPU.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_PDF_COMPRESSION ► Disable PDF compression.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DOCUMENTS_LOGO_HEIGHT ► Can force height of the logo on PDF.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DOCUMENTS_WITH_PICTURE_WIDTH ► Can change size of picture when hidden option &amp;lt;code&amp;gt;MAIN_GENERATE_PROPOSALS_WITH_PICTURE&amp;lt;/code&amp;gt; is used. By default value is &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS ► Adding the company address at the bottom of the page. Disabled by default&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_PROPOSALS_WITH_PICTURE ► Include the first image of the product into the line of the generated PDF for customer proposals.&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_INVOICES_WITH_PICTURE ► Include the first image of the product into the line of the generated PDF for customer invoices.&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_SUPPLIER_PROPOSAL_WITH_PICTURE ► Include the first image of the product into the line of the generated PDF for supplier proposals ► (v5.0.3+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT ► Disable VAT on generated documents. like for an association. (Works with crabe template)&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_COLUMN ► Hide column with VAT information but only column not total.&lt;br /&gt;
&lt;br /&gt;
*MAIN_INVERT_SENDER_RECIPIENT ► Invert sender and recipient in some PDF. Note: This option is set automatically if country if Germany.&lt;br /&gt;
&lt;br /&gt;
*MAIN_ODT_AS_PDF ► Activate PDF conversion from ODT document. If value is &#039;&amp;lt;code&amp;gt;jodconverter&amp;lt;/code&amp;gt;&#039;, &#039;&#039;&#039;java&#039;&#039;&#039; and &#039;&#039;&#039;jodconverter&#039;&#039;&#039; command line tool must be available. If value is &#039;&amp;lt;code&amp;gt;/pathto/jodconverter.jar&amp;lt;/code&amp;gt;&#039; then &#039;&#039;&#039;java&#039;&#039;&#039; and the &#039;&#039;&#039;jodconverter&#039;&#039;&#039; jar must exist, &#039;&#039;&#039;soffice&#039;&#039;&#039; must also be available. The constant &amp;lt;code&amp;gt;MAIN_DOL_SCRIPTS_ROOT&amp;lt;/code&amp;gt; must also be defined to path where the &amp;quot;scripts&amp;quot; directory is stored (for example &amp;lt;code&amp;gt;/var/www/mydolibarr&amp;lt;/code&amp;gt; without scripts).&lt;br /&gt;
&lt;br /&gt;
*MAIN_ODT_AS_PDF_DEL_SOURCE ► For ODT generation. If set, then initial behaviour is conserved but ODT file is removed when option to convert it as PDF (see previous) is on. Disabled by default&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_FORCE_FONT ► To ignore font defined into language file and force usage of a particular font. For example &amp;quot;&amp;lt;code&amp;gt;DejaVuSans&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_FORCE_FONT_SIZE ► To force size of font (by default 10). For example &amp;quot;&amp;lt;code&amp;gt;12&amp;lt;/code&amp;gt;&amp;quot; ► (v11.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_FREETEXT_HEIGHT ► Change height of space reserved to output the free text.&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_TITLE_BACKGROUND_COLOR ► Can define a background color onto title line. Example: &amp;lt;code&amp;gt;220,220,200&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_USE_LARGE_LOGO ► Use the original logo with its higher resolution into the PDF instead of the small thumb. This may lead to very very large PDF !&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_BACKGROUND_ON_PDF ► Define this constant with short name of an image (example &amp;quot;&amp;lt;code&amp;gt;myimage.jpg&amp;lt;/code&amp;gt;&amp;quot;) that must be saved into directory &amp;quot;&amp;lt;code&amp;gt;documents/mycompany/logos&amp;lt;/code&amp;gt;&amp;quot;. This will add this background image into your generated PDF files. Warning: This option make TCPDF library being crazy sometime and content on image disappeared!&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_COMPANY_NAME_OF_CONTACT ► Use contact name and information rather than company&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_ADDALSOTARGETDETAILS ► Add particular details like the telephone number on generated PDFs. Can be useful in cases where a printed order/invoice etc is given to a delivery driver/courier etc.&lt;br /&gt;
&lt;br /&gt;
*MAIN_TVAINTRA_IN_SOURCE_ADDRESS ► Show VAT N° in source address of PDF to comply with legalities in certain countries. Note that VAT number should be already visible in footer of page ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING ► Add optional esign field in pdf propal ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID1_IN_SOURCE_ADDRESS ► Show Professional ID 1 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID2_IN_SOURCE_ADDRESS ► Show Professional ID 2 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID3_IN_SOURCE_ADDRESS ► Show Professional ID 3 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID4_IN_SOURCE_ADDRESS ► Show Professional ID 4 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID5_IN_SOURCE_ADDRESS ► Show Professional ID 5 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID6_IN_SOURCE_ADDRESS ► Show Professional ID 6 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*PDF_BANK_HIDE_NUMBER_SHOW_ONLY_BICIBAN ► Hide bank number (&amp;quot;code banque/guichet/compte&amp;quot; for France, &amp;quot;sort code/account number&amp;quot; for GB, ...) and keep only BIC/IBAN on PDF.&lt;br /&gt;
&lt;br /&gt;
*PDF_BOLD_PRODUCT_REF_AND_PERIOD ► Add more visibility (bold) on product ref and period of service in desc. ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
*PDF_HIDE_PRODUCT_REF_IN_SUPPLIER_LINES ► Modify the use/position of Supplier Ref/Internal Ref with the item Label (name) on PDF documents.&lt;br /&gt;
&lt;br /&gt;
Default (constant not set or Value &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;): Internal ref followed by supplier ref in brackets.&amp;quot;COMPANY-REF-001 (Vendor SKU SUPPLIER-REF-001) - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Value &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;: Supplier ref only eg.&amp;quot;SUPPLIER-REF-001 - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Value &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;: Supplier ref followed by internal ref in brackets. eg.&amp;quot;SUPPLIER-REF-001 (InternalRef COMPANY-REF-001) - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME ► Include alternative/alias name into name on PDF.&lt;br /&gt;
&lt;br /&gt;
*PDF_SECURITY_ENCRYPTION ► Encrypt PDF produced by dolibarr ► (v?) . See additional parameters :PDF_SECURITY_ENCRYPTION_RIGHTS (block &#039;modify&#039; or &#039;copy&#039;) - PDF_SECURITY_ENCRYPTION_USERPASS - PDF_SECURITY_ENCRYPTION_OWNERPASS (random if not specified) - PDF_SECURITY_ENCRYPTION_STRENGTH (0 = RC4 40 bit; 1 = RC4 128 bit; 2 = AES 128 bit; 3 = AES 256 bit) - PDF_SECURITY_ENCRYPTION_PUBKEYS Array of recipients containing public-key certificates (&#039;c&#039;) and permissions (&#039;p&#039;) - For example: array(array(&#039;c&#039; =&amp;gt; &#039;file://../examples/data/cert/tcpdf.crt&#039;, &#039;p&#039; =&amp;gt; array(&#039;print&#039;)))&lt;br /&gt;
&lt;br /&gt;
*PDF_SHOW_PROJECT ► Show project onto PDF (supported on supplier order only for the moment)&lt;br /&gt;
&lt;br /&gt;
*PDF_USE_1A ► PDF files produced by dolibarr respect PDF/A standard ► (v?)&lt;br /&gt;
&lt;br /&gt;
*PDF_USE_ALSO_LANGUAGE_CODE ► The value of this constant must be a language code (&#039;fr_FR&#039;, &#039;en_US&#039;, &#039;sa_SA&#039;, ...). If set, the PDF document will contains both language (default and the one defined by the constant).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Point of Sale (POS)=&lt;br /&gt;
&lt;br /&gt;
*CASHDESK_SHOW_KEYPAD ► Show a mouse key pad into the &#039;Simple Point of Sale&#039; module.&lt;br /&gt;
&lt;br /&gt;
*POS_ADDON ► Set this value to an existing numbering module rule (for example &#039;&amp;lt;code&amp;gt;mod_facture_terre&amp;lt;/code&amp;gt;&#039;, &#039;&amp;lt;code&amp;gt;mod_facture_mars&amp;lt;/code&amp;gt;&#039;, ...) to force the numbering module to use for invoice ref definition when invoice is created by the POS. For example setting value &amp;lt;code&amp;gt;POS_ADDON&amp;lt;/code&amp;gt; to &#039;&amp;lt;code&amp;gt;mod_facture_terre&amp;lt;/code&amp;gt;&#039; will use the numbering module &#039;&amp;lt;code&amp;gt;terre&amp;lt;/code&amp;gt;&#039; for invoice generated from POS, whatever is the numbering rule defined into invoice module setup (you can also use POS_NUMBERING_TERRE_FORCE_PREFIX and POS_NUMBERING_MARS_FORCE_PREFIX variable to change the prefix used).&lt;br /&gt;
&lt;br /&gt;
*TAKEPOS_ENABLE_SUMUP ► Enable the compatibility of TakePOS with the card reader terminal [https://SumUp.fr SumUp]&lt;br /&gt;
 &lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Products Module=&lt;br /&gt;
&lt;br /&gt;
*CATEGORY_GRAPHSTATS_ON_PRODUCTS ► Show graph of products with categories and totals in Products Area screen&lt;br /&gt;
&lt;br /&gt;
*MAIN_PRODUCT_DISABLE_CUSTOMCOUNTRYCODE ► Avoid customs code and country of origin to be set as product description when added to Propal/Order/Invoice&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_ADD_TYPE_IN_DOCUMENTS ► Add text &amp;quot;Product&amp;quot; or &amp;quot;Service&amp;quot; at beginning of details lines on built PDF documents.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DONOTSEARCH_ANYWHERE ► When Ajax search is enabled, search is done on criteria anywhere in label of product. By adding this option, search is done only on start of label. This is really faster when you have a huge number of products.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DIRECT_STATUS_UPDATE ► Allows you to change the status of the product (&#039;&#039;for sale/not for sale for purchase/not for purchase&#039;&#039;) directly on the product page via a &#039;&#039;on/off&#039;&#039; switch button. This can be convenient for those who need to quickly disable certain statuses of products without having to go through the editing product page individually. Also can be very useful if used as a filter on the product and product search list. This option doesn&#039;t generate a MODIFY trigger, so be careful with external modules. ► v4.0+&lt;br /&gt;
&lt;br /&gt;
*MAIN_SEARCH_PRODUCT_BY_FOURN_REF ► (&amp;gt;= 8.0) Allow to search a product by supplier ref in document&#039;s add line form.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_FREE_LINES ► Disallow using free lines to add line in documents ► (&amp;gt;= 8.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_SHOW_PRODUCT_ACTIVITY_TRIM ► Show Product and Services turnover before for all four quarters tax over recent years recent years on the product area ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
*PRODUIT_DESC_IN_LIST ► Show long description of product/service into lists.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_PROPAGATE_CUSTOMER_PRICES_ON_CHILD_COMPANIES ► Disable propagation of prices per customer from a customer to its child company.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_SIZE ► Disable size in product card.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_LENGTH ► Disable length in product card ► v4.0+&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_SURFACE ► Disable surface in product card. ► v4.0+&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_VOLUME ► Disable volume in product card.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_CUSTOM_INFO ► Disable custom info (custom code and country origin) in product/service card.&lt;br /&gt;
&lt;br /&gt;
*PRODUIT_MULTIPRICES_USE_VAT_PER_LEVEL ► When option to use price per level/segment is on, this allows to also set a dedicated vat for each price level.&lt;br /&gt;
&lt;br /&gt;
*PRODUIT_CUSTOMER_PRICES_BY_QTY ► If price per quantity ► Experimental&lt;br /&gt;
*PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES ► If price per quantity and customer ► Experimental&lt;br /&gt;
*PRODUCT_MAX_LENGTH_COMBO ► Limit the length of the label displayed when adding lines in proposals/invoices/orders&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_MAX_VISIBLE_PHOTO ► Show a maximum number of product photos (as thumbnails) on the product main card. Example, setting this constant to &#039;&amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;&#039; will show the first five product photos found on the product card.&lt;br /&gt;
&lt;br /&gt;
*PRODUIT_PDF_MERGE_PROPAL ► Enable module Propal merge product PDF&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_USE_OLD_PATH_FOR_PHOTO ► Ask dolibarr to check also old path (before 3.7) where photos were stored.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_USE_UNITS ► Add another units on products (Use same dictionnary as default unit feature) and propagate this unit on line of documents.&lt;br /&gt;
&lt;br /&gt;
*RESOURCE_ON_PRODUCTS_RESOURCE_ON_SERVICES ► Allow to affect ressources on products/services (v10.0+)&lt;br /&gt;
*PRODUCT_SHOW_ORIGIN_IN_COMBO ► Show origin of products when adding lines in proposals/invoices/orders (v12.0+)&lt;br /&gt;
*PRODUIT_ATTRIBUTES_HIDECHILD  ► Add option hide child if variantes&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Projects Module=&lt;br /&gt;
&lt;br /&gt;
*PROJECT_ALLOW_TO_LINK_FROM_OTHER_COMPANY ► Can link an object to a project of another thirdparty&lt;br /&gt;
&lt;br /&gt;
*PROJECT_ALLOW_COMMENT_ON_TASK ► Add comment feature on project task&lt;br /&gt;
&lt;br /&gt;
*PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS ► Enable linking a project to any supplier even when using the third party link feature. Note: Set to 1 by default from 3.7.&lt;br /&gt;
&lt;br /&gt;
*PROJECT_CREATE_ON_OVERVIEW_DISABLED ► Hide the &amp;quot;create ...&amp;quot; button on the overview page ► (4.0)&lt;br /&gt;
&lt;br /&gt;
*PROJECT_DISABLE_UNLINK_FROM_OVERVIEW ► Enable removing the button from a link in the project overview. ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*PROJECT_HIDE_UNSELECTABLES ► Hide into select list, all project that we can&#039;t select (closed or draft)&lt;br /&gt;
&lt;br /&gt;
*PROJECT_HIDE_TASKS ► Hide tasks. For user using project only as an analytics key and not using tasks.&lt;br /&gt;
&lt;br /&gt;
*PROJECT_LIST_SHOW_STARTDATE ► Shows start date of projects in project lists.&lt;br /&gt;
&lt;br /&gt;
*PROJECT_LINK_ON_OVERWIEW_DISABLED ► Hide the &amp;quot;link to&amp;quot; form on the overview page ► (4.0)&lt;br /&gt;
&lt;br /&gt;
*PROJECT_SHOW_REF_INTO_LISTS ► Add column with project ref into list (with 3.7 list of supplier invoices only, will be expanded to other lists)&lt;br /&gt;
&lt;br /&gt;
*PROJECT_TIME_ON_ALL_TASKS_MY_PROJECTS ► Can add time spent on tasks, even if i am not assigned to task (however, task must be a project i am a contact).&lt;br /&gt;
&lt;br /&gt;
*PROJECT_OPEN_ALWAYS_ON_TAB ► Set to value &#039;task&#039;, or &#039;preview&#039; to always open the project on the given tab instead of main tab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Proposals Module=&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_PROPOSALS_WITH_PICTURE ► Add a picture of the product (the first one found if there are several) into the generated PDF of proposals. Note that using this will reduce the available width for the product description.&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROPAL_CHOOSE_ODT_DOCUMENT ► On setup page, you&#039;ll be able to select which ODT document to use when close or cancel proposals.&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING ► add optional esign field in pdf propal ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*PROPAL_CLONE_ON_CREATE_PAGE ► On the create proposal page, ask if we want to create the proposal by cloning an already existing one. You should use instead the &amp;quot;Clone&amp;quot; button available on existing proposals.&lt;br /&gt;
&lt;br /&gt;
*PROPAL_DISABLE_SIGNATURE ► Do no show the box for signature.&lt;br /&gt;
&lt;br /&gt;
*PRODUIT_PDF_MERGE_PROPAL ► When generating the proposal PDF, all PDFs linked to products linked to proposal are also included into final PDF&lt;br /&gt;
&lt;br /&gt;
*PROPOSAL_ALLOW_EXTERNAL_DOWNLOAD ► When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*PROPOSAL_AUTO_ADD_AUTHOR_AS_CONTACT ► Add Proposal Author as user contact follow proposal&lt;br /&gt;
&lt;br /&gt;
*PROPOSAL_PDF_HIDE_PAYMENTTERM ► Do not show the payment term on proposal ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*PROPOSAL_PDF_HIDE_PAYMENTMODE ► Do not show the payment mode on proposal ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
*WORKFLOW_PROPAL_CAN_CLASSIFY_BILLED_WITHOUT_INVOICES ► Button &amp;quot;Classified Billed&amp;quot; is visible on proposal even if there is no invoice linked to proposal.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Services Module=&lt;br /&gt;
&lt;br /&gt;
*SERVICE_ARE_ECOMMERCE_200238EC ► If this option is enabled, services are processed like eServices according to directive of EU Council Directive 2002/38/EC (http://ec.europa.eu/taxation_customs/taxation/vat/traders/e-commerce/article_1610_en.htm). Default VAT rate are based on buying country instead of selling country for BtoC sells.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Shipments=&lt;br /&gt;
&lt;br /&gt;
*STOCK_WAREHOUSE_NOT_REQUIRED_FOR_SHIPMENTS ► If set, you can add a shipment line, with no stock source defined. ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*SHIPMENT_GETS_ALL_ORDER_PRODUCTS ► Add all order lines in shipment, including the one with 0 in quantity&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Stocks=&lt;br /&gt;
&lt;br /&gt;
*CASHDESK_FORCE_STOCK_ON_BILL ► Option to force decrease of stock when using POS whatever is user setup.&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_DISABLE_STOCK_DISPATCH_WHEN_TOTAL_REACHED ► Disable stock dispatch when total expected was already received&lt;br /&gt;
*STOCK_SUPPORTS_SERVICES ► Stock support services&lt;br /&gt;
*USER_DEFAULT_WAREHOUSE ► Can set a default warehouse on user card ► (v11.0)&lt;br /&gt;
*WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER =&amp;gt; When an order is created, the warehouse can be defined&lt;br /&gt;
*MAIN_DEFAULT_WAREHOUSE ► Warehouse default (rowid) ► (v12.0)&lt;br /&gt;
*MAIN_DEFAULT_WAREHOUSE_USER ► Warehouse default is warehouse definie on user  ► (v12.0)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Suppliers Module=&lt;br /&gt;
&lt;br /&gt;
*FOURN_PRODUCT_AVAILABILITY ► On the Suppliers price page of the products, activate the supplier product availability. &#039;&#039;This is duplicate feature with delivery_delay introduced with 3.8.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*RELOAD_PAGE_ON_SUPPLIER_CHANGE ► On creation of a supplier order/invoice, reload form with supplier-specific details when supplier is selected from drop-down list.&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_AUTOADD_USER_CONTACT ► Add user approving supplier order as a contact automatically.&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_DEFAULT_PAYMENT_MODE_ID ► Set the default payment method for suppliers (&amp;lt;code&amp;gt;rowid&amp;lt;/code&amp;gt; in table &amp;lt;code&amp;gt;llx_c_paiement&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_USE_DISPATCH_STATUS ► Add a status on each dispatch order line when receiving products from suppliers ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_NO_DIRECT_APPROVE ► No button &amp;quot;Validate and Approve&amp;quot;. Always do step &amp;quot;Validate&amp;quot; and &amp;quot;Approve&amp;quot; in 2 steps.&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_WITH_PREDEFINED_PRICES_ONLY ► Restrict selection of products in supplier order to only those with a buying price defined for that supplier. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_EDIT_BUYINGPRICE_DURING_RECEIPT ► Can modify the buying price used for PMP calculation when making a stock reception on a supplier order. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_PROPOSAL_WITH_PREDEFINED_PRICES_ONLY ► Restrict selection of products in supplier proposal to only those with a buying price defined for that supplier. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*DISPLAY_DISCOUNTED_SUPPLIER_PRICE ► Allow to display discounted supplier price when searching product in supplier documents ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_CAN_EDIT_SUPPLIER_ON_SUPPLIER_ORDER ►  Allow to change the supplier on a draft supplier order ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=Third Parties Module=&lt;br /&gt;
&lt;br /&gt;
*COMPANY_AQUARIUM_CLEAN_REGEX ► Add a REGEX rule on the third parties names. It applies a regex replacement pattern on generated code if COMPANY_AQUARIUM_CLEAN_REGEX is set. Value must be a regex with parenthesis. The part into parenthesis is kept, the rest removed. For example if COMPANY_AQUARIUM_CLEAN_REGEX = &#039;&amp;lt;code&amp;gt;^..(..)..(.*)&amp;lt;/code&amp;gt;&#039; the first char and second char are removed and the char 5 and 6 too ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*SOCIETE_DISABLE_CUSTOMERS ► Remove all menu and features related to customers&lt;br /&gt;
&lt;br /&gt;
*SOCIETE_DISABLE_PROSPECTS ► Remove all menu and features related to prospects&lt;br /&gt;
&lt;br /&gt;
*SOCIETE_DISABLE_STATE ► Do not use field &amp;quot;state/province&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*SOCIETE_SORT_ON_TYPEENT ► The combo list of &amp;quot;type of third party&amp;quot; is sorted on alphabetical order instead of the field &amp;quot;position&amp;quot; that appears into dictionary instead.&lt;br /&gt;
&lt;br /&gt;
*SOCIETE_ASK_FOR_SHIPPING_METHOD ► Shipping method can be predefined on customer card and will be used as default on order creation&lt;br /&gt;
*SOCIETE_ADD_REF_IN_LIST ► Displays the code before the name in the lists  ► Value 1 -&amp;gt; Code + name + alias ou Code + name if colone alias 2 -&amp;gt; Code + alias 3 -&amp;gt; Alias&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_CAN_HAVE_CATEGORY_EVEN_IF_NOT_CUSTOMER_PROSPECT_SUPPLIER ► Possible to add Categories to third parties that are not customer, prospect or supplier.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_DEFAULT_USEVAT ► When creating a new third party, the field &amp;quot;Use vat&amp;quot; is set to on or off depending on value of this parameter.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_DEFAULT_USELOCALTAX1 ► When creating a new third party, the field &amp;quot;Use second tax&amp;quot; is set to on or off depending on value of this parameter.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_DEFAULT_USELOCALTAX2 ► When creating a new third party, the field &amp;quot;Use third tax&amp;quot; is set to on or off depending on value of this parameter.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_NOTCUSTOMERPROSPECT_BY_DEFAULT ► Do not set status &amp;quot;Customer/Prospect&amp;quot; to &amp;quot;on&amp;quot; when creating a new third party from menu &amp;quot;New third party&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_NOTSUPPLIER_BY_DEFAULT ► Do not set status &amp;quot;Supplier&amp;quot; to &amp;quot;on&amp;quot; when creating a new third party from menu &amp;quot;New third party&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_INCLUDE_PARENT_IN_LINKTO ► Search also for elements on parent third party when using the &amp;quot;link to&amp;quot; object feature.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_INCLUDE_PROJECT_THIRDPARY_IN_LINKTO ► Search also for elements on third party that own the project of the current element when using the &amp;quot;link to&amp;quot; object feature (if project is owned by a different thirdparty than current one).&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_LOGO_ALLOW_EXTERNAL_DOWNLOAD ► When a logo is uploaded, a share key is automatically set so the file can be downloaded using the share key.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_SUGGEST_ALSO_ADDRESS_CREATION ► Enabled contact creation on third-party create card&lt;br /&gt;
*THIRDPARTY_QUICKSEARCH_ON_FIELDS ► Personalized search criterias ► Example: $conf-&amp;gt;global-&amp;gt;THIRDPARTY_QUICKSEARCH_ON_FIELDS = &#039;s.nom=ThirdPartyName;s.name_alias=AliasNameShort;s.code_client=CustomerCode&#039;&lt;br /&gt;
*MEMBER_CAN_CONVERT_CUSTOMERS_TO_MEMBERS ► Enabled member creation on third-party create card&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=VAT Report=&lt;br /&gt;
&lt;br /&gt;
*MAIN_INCLUDE_ZERO_VAT_IN_REPORTS ► Include lines with VAT to 0% (for &amp;quot;auto-liquidation&amp;quot; in EEC) ► (v8.0.3+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=WEBSITE Module=&lt;br /&gt;
&lt;br /&gt;
*WEBSITE_USE_WEBSITE_ACCOUNTS ► Add a table and a tab to manage some accounts for websites to a third party&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=WYSIWYG Editor=&lt;br /&gt;
&lt;br /&gt;
*FCKEDITOR_ENABLE_DETAILS_FULL ► Can cut and paste external images (hosted on external server) into description of proposal, orders or invoices. WARNING: PDF generation is not guaranteed with this. Also if the image is removed or renamed by the image hosting service, your proposal, order or invoice will be broken.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=STRIPE Module=&lt;br /&gt;
&lt;br /&gt;
*STRIPE_FORCE_VERSION ► Force the STRIPE version. For Example: &amp;quot;2019-09-09&amp;quot; (v11+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=ClickToDial Module=&lt;br /&gt;
&lt;br /&gt;
*CLICKTODIAL_FORCENEWTARGET ► Open in new page.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
=For SaaS / Cloud hosting integrators=&lt;br /&gt;
&lt;br /&gt;
The following options are useless for a common usage of Dolibarr. But they are usefull if you plan to host / provide Dolibarr instances as Software As A Service (SAAS) to your customers.&lt;br /&gt;
&lt;br /&gt;
*CRON_DISABLE_KEY_CHANGE ► When you provide an instance to a customer, you probably also add an entry in the cron of this user so Dolibarr batch and scheduler can work correctly. For security purpose, it may have a security key that is inside the command line into the cron entry and this entry must match the value defined into Dolibarr setup (setup of module &#039;Scheduled Jobs&#039;). Because, a customer of a Saas platform will probably have no access to edit the cron file, it is also import that he has no way to edit the key into the Dolibarr setup, so the key in the cron command line will always match the key in Dolibarr setup, and the Dolibarr batches will executed without security errors. To be sure, the customer does not change the value, you can set this constant to 1 into the table [[Table_llx_const]].&lt;br /&gt;
&lt;br /&gt;
*CRON_DISABLE_TUTORIAL_CRON ► Disable the tutorial about how to install the cron script (on a SaaS hosting, this should be the system)&lt;br /&gt;
&lt;br /&gt;
*To avoid bad use of the emailing module, it is recommended to set the option MAILING_NO_USING_PHPMAIL to 1 (This option is described previously). Also you can complete the message visible by customers when they try to setup the SMTP credentials of their Dolibarr by using the constant MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS (This option is described previously). For example, you can point to a FAQ on your website.&lt;br /&gt;
&lt;br /&gt;
*If you set a system limit on number of recipient, you can set some option to match the same values so users will be informed: MAIL_MAX_NB_OF_RECIPIENTS_IN_SAME_EMAIL ► Restrict sending of 1 email message to &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; recipients for same email message (x for To: + CC: + BCC:). If not defined, value is &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;. Required to fight against spamming that include 1000 recipients in 1 message. Note that MAIL_MAX_NB_OF_RECIPIENTS_TO_IN_SAME_EMAIL, MAIL_MAX_NB_OF_RECIPIENTS_CC_IN_SAME_EMAIL and MAIL_MAX_NB_OF_RECIPIENTS_BCC_IN_SAME_EMAIL are also available.&lt;br /&gt;
&lt;br /&gt;
*MAILING_LIMIT_WARNING_PHPMAIL ► Set this value to a translation key. Then add translation keys into the instance so user will see a message when into the email setup page. For example, you can set a message to say &#039;&#039;Warning: To avoid abuse, when using default setup, you are restricted to 500 emails per day for all your application (account may be suspended in case of violation of this rule. You can setup application to use your own SMTP server for sending email so you want have no restriction at all (see menu Home-Setup-Emails)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*MAIN_EXTERNAL_SMTP_CLIENT_IP_ADDRESS ► (A better name of this option should be MAIN_EXTERNAL_MAIL_CLIENT_IP_ADDRESS). Set here the list of IPs where your Dolibarr instances are hosted. So when your customer go into the setup area of email:&lt;br /&gt;
**If he chose mail method, a message will explain him how to setup its SPF record for its email domain (showing the list of IP). This is to avoid to have its emails, sent from its Dolibarr instance, fails due to strict antispam rule of some emailing servers.&lt;br /&gt;
**If he chose smtp method, a message will explain him the list of IP he can use if there is restriction on IP by the SMTP agent. If you also need to add a message to help SPF setup, see option MAIN_EXTERNAL_SMTP_SPF_STRING_TO_ADD.&lt;br /&gt;
&lt;br /&gt;
*MAIN_EXTERNAL_SMTP_SPF_STRING_TO_ADD ► Set here the string to add in the SPF record This string will be shown into a help message when the user in in the setup of email page and has choose a method using an external SMTP server.&lt;br /&gt;
&lt;br /&gt;
*MAIN_ALWAYS_CREATE_LOCK_AFTER_LAST_UPGRADE ► If set, when you launch upgrades of your customer instances, you are sure that the upgrade process recreate automatically the file install.lock so the administration tools like install.php and repair.php can&#039;t be used on your customer instance (until the lock file is deleted).&lt;br /&gt;
&lt;br /&gt;
*MAIN_FILECHECK_LOCAL_SUFFIX and MAIN_FILECHECK_LOCAL_EXT ► If you offer a customized or patched version of Dolibarr, when the user will use the tool to check the integrity of files, the default xml file name used for signature checking will be the official file provided by the Dolibarr team, so it does not includes your own changes. To have the suggested signature file being your own file, you can set the constant MAIN_FILECHECK_LOCAL_SUFFIX to a suffix. For example, set this to &amp;quot;&#039;&#039;&#039;-mysaassolution&#039;&#039;&#039;&amp;quot;. So, when the user will use the file integrity tool, the default file to check for signature will be &amp;quot;&#039;&#039;&#039;/install/filelist-10.0.2-mysaassolution.xml&#039;&#039;&#039;&amp;quot; instead of &amp;quot;&#039;&#039;&#039;/install/filelist-10.0.2.xml&#039;&#039;&#039;&amp;quot;. All you have to do is generate the signature file &#039;&#039;&#039;mysaassolution&#039;&#039;&#039; using the tool &#039;&#039;&#039;build/generate_filelist_xml.php&#039;&#039;&#039; and put this file into the install directory of your customer instance. Doing this, your customer, and yourself, will be able to check if a file was modified without being disturbed by false alerts due to your customized files or patches (they will be included in the signature used for check). Also, if you want to zip the customized signature file into &amp;quot;&#039;&#039;&#039;/install/filelist-10.0.2-mysaassolution.xml.zip&#039;&#039;&#039;&amp;quot;, you can set the constant MAIN_FILECHECK_LOCAL_EXT to &#039;.zip&#039;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING ► If set to N, the warning saying modules are not activated will be shown if number of activated module is &amp;lt; N (Having this variable not defined is same than having it set to 1). This may be usefull if you preinstall an application with some modules already loaded by default and you want to keep the warning to be sure the user will enable other modules he need, even if some modules are already enabed.&lt;br /&gt;
&lt;br /&gt;
*SYSLOG_DISABLE_LOGHANDLER_SYSLOG ► Set this to 1 to disable usage of syslog (having all customer instances logging in the same system file is not a good idea).&lt;br /&gt;
&lt;br /&gt;
*WEBSITE_REPLACE_INFO_ABOUT_USAGE_WITH_WEBSERVER ► Put here a text or a translation key of a text to show when the user will use the feature &amp;quot;Deploy&amp;quot; when he want to deploy a website done with Dolibarr CMS. So you can, for example, show him a message that this feature is not part of its subscription and putting a website online may need a complementary subscription.&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Setup_Other&amp;diff=44406</id>
		<title>Setup Other</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Setup_Other&amp;diff=44406"/>
		<updated>2019-09-25T07:03:39Z</updated>

		<summary type="html">&lt;p&gt;Iouston: /* Global Options */ add main_disable_trunc options&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- BEGIN origin interlang links --&amp;gt;&lt;br /&gt;
&amp;lt;!-- You can edit this section but do NOT remove these comments&lt;br /&gt;
     Links below will be automatically replicated on translated pages by PolyglotBot --&amp;gt;&lt;br /&gt;
[[fr:Paramétrage_Divers]]&lt;br /&gt;
[[es:Configuración_Varios]]&lt;br /&gt;
[[de:Erweiterte_Einstellungen]]&lt;br /&gt;
[[zh:其他设置]]&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Admin]]&lt;br /&gt;
{{TemplateDocUser}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Help About Screen&#039;&#039;&#039;: Other setup&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Menu Path&#039;&#039;&#039;: Home ► Setup ► Other&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Some options are not visible in the interface (often because they are deprecated or are beta features). In most cases you do not need these functions and their use may make the application unstable.&lt;br /&gt;
&lt;br /&gt;
 {{warning|32px}} This page contains the list of advanced hidden parameters. In most cases, it is parameters for development, external modules, features in development not stable or that may lead to security risk. For standard usage of Dolibarr, such parameters &#039;&#039;&#039;SHOULD NOT&#039;&#039;&#039; be used. All hidden options are NOT supported. They may be removed in a future or modified at any version.&lt;br /&gt;
&lt;br /&gt;
To enable/override a parameter you have to define the constant name and set it to 1 (unless otherwise stated) in &amp;lt;code&amp;gt;Home ► Setup ► Other Setup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=List of Known Hidden Options=&lt;br /&gt;
&lt;br /&gt;
After Global Options, the list is sorted alphabetically.  The basic format of how the list is written is broken down in the example below:&lt;br /&gt;
&lt;br /&gt;
HIDDEN_CONFIG ► &#039;&#039;Description of config&#039;&#039; ► &#039;&#039;(specific version information) or values&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Global Options==&lt;br /&gt;
&lt;br /&gt;
*ADD_UNSPLASH_LOGIN_BACKGROUND ► The background image will be refreshed on every login page refresh. Background image is pulled from the popular open source image website Unsplash. If an already saved static background image exists, then this code will override it (but not delete the saved image). ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_APPLICATION_TITLE ► This will change the title of software (that appears on the login page by default). Warning, changing this may make Dolibarr version detection fail by smartphone applications like [[Application Android - DoliDroid]]&lt;br /&gt;
&lt;br /&gt;
*MAIN_AUTOFILL_DATE ► If this constant is defined (to something other than 0), the date of invoice, proposal, order or payment are auto-filled with the current date. It is highly recommended to NOT ENABLE this feature. This can create a lot of input errors with data not validated by users. This leads to incorrect values saved in the database causing confusion when you have to do your accountancy reports! However some users want it, so we provide it.&lt;br /&gt;
&lt;br /&gt;
*MAIN_AUTO_TIMESTAMP_IN_PUBLIC_NOTES ► Add a timestamp and user automatically when editing the &#039;&#039;public&#039;&#039; note.&lt;br /&gt;
&lt;br /&gt;
*MAIN_AUTO_TIMESTAMP_IN_PRIVATE_NOTES ► Add a timestamp and user automatically when editing the &#039;&#039;private&#039;&#039; note.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DEFAULT_PAYMENT_TERM_ID ► With ID of a payment term, will use this as default payment term each time you create a new proposal, order, invoice (customer and supplier)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DEFAULT_LANGUAGE_FILTER ► Useful if you do not want to show en_US language option in combo boxes (other languages can easily be removed in langs directory but not en_US) ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_NOTES_TAB ►Show or hide notes tab in the card page&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_CONTACTS_TAB ► Show or hide contacts tab in the card page&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_FULL_SCANLIST ► Disables the complete scan of tables to allow the pagination to show total number of pages. May be useful to activate on systems with a very high quantity of data (tables with more than 2 000 000 records).&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_JQUERY_JNOTIFY ► Disable usage of &amp;lt;code&amp;gt;JNotify&amp;lt;/code&amp;gt; to show confirm or error messages&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_AJAX_COMBOX ► If you have a large number of third parties or products, you can disable the autocomplete feature on the third parties list by setting this constant to 1 ► (v3.6.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_MULTIPLE_FILEUPLOAD ► Disable users to upload multiple files at once.&lt;br /&gt;
*MAIN_DISABLE_TRUNC ► Disable all truncings in select list. (v7.0 and more)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLEDRAFTSTATUS ► Disable the status Draft for some objects (project, donation, ...)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DOC_USE_OBJECT_THIRDPARTY_NAME ► Add name of thirdparty at begin of generated document.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DOC_USE_TIMING ► Add a timestamp at end of generated document. Value must be format of timestamp. For example: &amp;lt;code&amp;gt;%Y%m%d%H%M&amp;lt;/code&amp;gt; (only for ODT files)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DOC_UPLOAD_NOT_RENAME_BY_DEFAULT ► Disable the auto renaming on upload file ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DOL_SCRIPTS_ROOT ► Define directory who contains &#039;scripts&#039; directory (e.g. &amp;lt;code&amp;gt;/var/www/dolibarr&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
*MAIN_ENABLE_LOG_TO_HTML ► If this constant is defined, it is possible to have logs inside pages by adding the parameter &amp;amp;logtohtml=1 into URL.&lt;br /&gt;
&lt;br /&gt;
*MAIN_ENABLE_IMPORT_LINKED_OBJECT_LINES ► Allow to import lines into current document from &amp;quot;linked&amp;quot; compatible documents ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_FIRST_TO_UPPER ► Dolibarr add uppercase to Third Parties, contacts or members names if not done. Warning, with some languages (whose words with uppercase are not same words, or pagecode does not always have an uppercase, like cyrillic languages), this feature may alter your data.&lt;br /&gt;
&lt;br /&gt;
*MAIN_FILESYSTEM_ENCODING ► With some PHP versions, PHP is not able to detect the page code for filesystem of the server OS. To solve this, Dolibarr assumes your OS filesystem is UTF-8 if on Linux or OSX system, and ISO-8859-1 if on Windows. If not, for example on a Windows server with a NTFS UTF-8 pagecode, you can set the variable &amp;lt;code&amp;gt;MAIN_FILESYSTEM_ENCODING&amp;lt;/code&amp;gt; to &amp;quot;&amp;lt;code&amp;gt;utf-8&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_FORCELANGDIR ► Relative path of the directory holding your custom &amp;lt;code&amp;gt;langs&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
*MAIN_HTML_TITLE ► Can be used to control how the html page title is formatted. If value contains key &#039;&amp;lt;code&amp;gt;noapp&amp;lt;/code&amp;gt;&#039;, application name will not be output. If value contains &#039;&amp;lt;code&amp;gt;thirdpartynameonly&amp;lt;/code&amp;gt;&#039;, on tab for thirdparties, only name of thirdparties are output. Value can be list of tags: &#039;&amp;lt;code&amp;gt;noapp;thirdpartynameonly&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
*MAIN_HELPCENTER_LINKTOUSE  ► Define the URL link to use as the target page for link &amp;quot;I need help&amp;quot; onto logon page&lt;br /&gt;
&lt;br /&gt;
*MAIN_LANDING_PAGE ► Can choose the first page to show after login (the landing page). This option works as a global option (llx_const) and per user option (llx_user_param). ► (v3.9+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_LOGOUT_GOTO_URL ► URL to which the user will be redirected after LOGOUT&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAXTABS_IN_CARD ► Maximum number of tabs visible. Others are grouped into a combo list.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING ► A warning saying setup of modules is not complete is shown if the number of enabled modules is lower or equal than this value (1 if not defined)&lt;br /&gt;
&lt;br /&gt;
*MAIN_MODULES_FOR_EXTERNAL ► Limit available modules for external users. By default value is &#039;&amp;lt;code&amp;gt;facture,commande,contact,propal,projet,contrat,societe,ficheinter,expedition,agenda&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
*MAIN_NO_CONCAT_DESCRIPTION ► Allow to use only input custom description in lines (propale, order, invoice) ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_ONLY_LOGIN_ALLOWED ► Only the specified login is allowed to log in Dolibarr (maintenance mode).&lt;br /&gt;
&lt;br /&gt;
*MAIN_OPTIMIZE_SPEED ► Use some speed enhancements. See page [[FAQ Increase Performance]] for more information.&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROPAGATE_CONTACTS_FROM_ORIGIN ► When creating an order, contract, invoice from another object, specific contacts of objects are set as specific contact of the new object when possible. ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PUBLIC_NOTE_IN_ADDRESS ► Show public note in address block ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_REMOVE_INSTALL_WARNING ► Remove all security warnings that appear to administrator users if URL &amp;lt;code&amp;gt;/install&amp;lt;/code&amp;gt; is public. You should solve the problem if warning occurs, instead of removing the warning! For this, create a file called &amp;lt;code&amp;gt;install.lock&amp;lt;/code&amp;gt; into Dolibarr root directory. This will stop the warning but also make the page &amp;lt;code&amp;gt;/install&amp;lt;/code&amp;gt; not possible to use, to protect your installation.&lt;br /&gt;
&lt;br /&gt;
*MAIN_REPEATCONTACTONEACHTAB ► If added and set to 1, this adds contacts on all tabs, not only main tab.&lt;br /&gt;
&lt;br /&gt;
*MAIN_REPLACE_TRANS_xx_XX ► Where &amp;lt;code&amp;gt;xx_XX&amp;lt;/code&amp;gt; is language code. If value is &amp;lt;code&amp;gt;string1:newstring1;string2:newstring2&amp;lt;/code&amp;gt; then replace &amp;lt;code&amp;gt;string1&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;newstring1&amp;lt;/code&amp;gt; in all translation done for language &amp;lt;code&amp;gt;xx_XX&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND ► Change way of rounding total TTC lines, rounding first of after.&lt;br /&gt;
&lt;br /&gt;
*MAIN_SECURITY_CSRF_WITH_TOKEN ► Activate a second anti-CSRF protection on POST (a POST from another web site can&#039;t be done). Note there is already a default protection using test on referrer. This second protection uses TOKEN on forms and is more powerful. ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_SERVER_TZ ► If you can&#039;t set the timezone of your PHP installation, set this constant. Better is to set it to UTC. In future, this constant will be forced to &#039;UTC&#039; so PHP server timezone will not have effect anymore. Examples: &amp;lt;code&amp;gt;Europe/Paris&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;auto&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_SEARCH_FORM_ON_HOME_AREAS ► Show the search form on home page areas for core modules (Removed after v5 due to global search combo) ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE ► If only one result is found, then setting this value to 1 will take you direct to the item (default method).  Setting the value to 0 will show the result in the list as a single result ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_SERVICES_ARE_ECOMMERCE_200238EC ► (&amp;lt; 8)&lt;br /&gt;
&lt;br /&gt;
*MAIN_SHOW_TUNING_INFO ► Add tuning information into javascript console. Better when xdebug is enabled.&lt;br /&gt;
&lt;br /&gt;
*MAIN_SHOW_TECHNICAL_ID ► Show also technical IDs on elements cards or some lists (not supported everywhere).&lt;br /&gt;
&lt;br /&gt;
*MAIN_SHOWDATABASENAMEINHELPPAGESLINK ► Show database name in upper help menu ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_HOURMIN_IN_DATE_RANGE ► On all entities lines (invoice, order, contract...), it is possible to add hour and minutes with date on fields &amp;quot;date start&amp;quot; and &amp;quot;date end&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_JQUERY_JEDITABLE ► Allow to update from screen, directly into database, some properties of elements (invoices, proposals, ...) using Ajax. This make response time faster, but avoid using this feature, because it bypasses some business actions (updates on other data that should be done consistently) and ignores business controls on data you saved. Consequently this feature breaks consistency of data and possibly the stability of the software.&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_JQUERY_MULTISELECT ► Allow to use Ajax when a choice that require multiselect is used (for the moment only external modules uses select box with multiselect values). Set the value to the jQuery plugin name to use (multiselect, multiple-select, select2…). Setting it to any other value will result in unwanted side-effects and/or bugs.&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_OLD_SEARCH_FORM ► Display the old search form in left menu.&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_VAT_OF_PRODUCT_FOR_INDIVIDUAL_CUSTOMER_OUT_OF_EEC ► Allow using product VAT if customer is individual and out of E.E.C. (European Economic Community) ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_VAT_DEFAULT_IF_AUTODETECT_FAILS ► Allow to define a default VAT rate&lt;br /&gt;
&lt;br /&gt;
*MAIN_VIEW_LINE_NUMBER ► Shows a line number against each line in the order/invoice for products/services.  On screen only, not on PDF.&lt;br /&gt;
&lt;br /&gt;
*MAIN_VOLUME_DEFAULT_ROUND ► Accuracy of volume (number of decimals)&lt;br /&gt;
&lt;br /&gt;
*MAIN_VOLUME_DEFAULT_UNIT ► Default unit for weight (0=kg, -3=g, ...)&lt;br /&gt;
&lt;br /&gt;
*MAIN_WEIGHT_DEFAULT_ROUND ► Accuracy of weight (number of decimals)&lt;br /&gt;
&lt;br /&gt;
*MAIN_WEIGHT_DEFAULT_UNIT ► Default unit for weight (0=kg, -3=g, ...)&lt;br /&gt;
&lt;br /&gt;
*USER_HIDE_INACTIVE_IN_COMBOBOX ► Disable display inactive users in combobox.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
==Accoutancy Module==&lt;br /&gt;
&lt;br /&gt;
*ACCOUNTANCY_COMBO_FOR_AUX ► Add graphic option for ACCOUNTANCY_COMBO_FOR_AUX ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
==Agenda Module==&lt;br /&gt;
&lt;br /&gt;
*AGENDA_MAX_EVENTS_DAY_VIEW ► Define the maximum number of visible entries for each day in agenda. Default value is 3. Value 0 means no limit.&lt;br /&gt;
&lt;br /&gt;
*AGENDA_USE_EVENT_TYPE ► Add a mandatory field &amp;quot;Type&amp;quot; when creating an event (deprecated).&lt;br /&gt;
&lt;br /&gt;
*AGENDA_AUTOSET_END_DATE_WITH_DELTA_HOURS ► To automatically set end date of event to start date + delta on event creation page.&lt;br /&gt;
*AGENDA_DISABLE_LOCATION ► Disable location field in action card  ► (&amp;gt;=v5.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_ADD_EVENT_ON_ELEMENT_CARD ► Allow to create an event from a document (proposal, order, invoice)&lt;br /&gt;
*AGENDA_ALL_CALENDARS ► Change the default view to calendar for all the Agenda&#039;s&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bank Module==&lt;br /&gt;
&lt;br /&gt;
*BANK_CAN_RECONCILIATE_CASHACCOUNT ► Can reconciliate cash accounts ► (v3.8)&lt;br /&gt;
&lt;br /&gt;
*BANK_DISABLE_CHECK_DEPOSIT ► Disable check deposit feature&lt;br /&gt;
&lt;br /&gt;
*BANK_ASK_PAYMENT_BANK_DURING_ORDER ► Ask bank account during creation of an order&lt;br /&gt;
&lt;br /&gt;
*BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL ► Ask bank account during creation of a proposal&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==BlockedLog==&lt;br /&gt;
&lt;br /&gt;
*BLOCKEDLOG_DISABLE_NOT_ALLOWED_FOR_COUNTRY ► Make disable of module &amp;quot;blockedlog&amp;quot; not possible for countries code defined into value. Example: &#039;FR,...&#039;&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Contracts==&lt;br /&gt;
&lt;br /&gt;
*CONTRACT_SUPPORT_PRODUCTS ► Products are also suggested into module contract.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Direct Debit Orders==&lt;br /&gt;
&lt;br /&gt;
*WITHDRAWAL_ALLOW_ANY_INVOICE_STATUS ► If this option is set, all invoices status (even already paid) may appear on the list of invoices qualified for a direct debit payment. This is the list of invoices with a payment request done, and not linked to a direct debit payment. By default, only &amp;quot;unpayed&amp;quot; invoices are used to avoid to pay twice the same invoice.&lt;br /&gt;
&lt;br /&gt;
==Email and SMS==&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAILFORM_DISABLE_ENTERKEY ► Activate javascript code to disable the enter key in the MAIL form. ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*MAIL_PREFIX_FOR_EMAIL_ID ► Prefix for the mails ID. Default value is &amp;lt;code&amp;gt;$_SERVER[&amp;quot;SERVER_NAME&amp;quot;]&amp;lt;/code&amp;gt; ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_DEBUG ► Write content with header of last mail into file &amp;lt;code&amp;gt;dolibarr_mail.log&amp;lt;/code&amp;gt; into directory &amp;lt;code&amp;gt;dolibarr_main_data_root&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_SMS_DEBUG ► Write content of SMS sent into file &amp;lt;code&amp;gt;dolibarr_sms.log&amp;lt;/code&amp;gt; into directory &amp;lt;code&amp;gt;dolibarr_main_data_root&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_ALLOW_SENDMAIL_F ► On Linux or BSD system, PHP email function use the command sendmail local to server. In some cases, the sender email must be provided on command line of sendmail with option &amp;lt;code&amp;gt;-f&amp;lt;/code&amp;gt;. This option is here to ask Dolibarr to call the function mail of PHP by adding value for the option &amp;lt;code&amp;gt;-f&amp;lt;/code&amp;gt;. Note that in most cases, even with sendmail, sender email is correctly managed as it is added in the email technical header. This option is here only for rare setup of sendmail that ask the -f option to be mandatory or for sendmail setup that does not use by default the Return-path of header email to define the sender (with this option, the return-path will be provided also on command line and not lost by sendmail).&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_SENDMAIL_FORCE_BA ► On Linux or BSD system, PHP email function use the command sendmail local to server. In some case, we want to recipient to be provided to sendmail into the email content instead of its command line parameter. For this we must add the -ba parameter to sendmail. This option asks PHP to provide this parameter when sending a mail. Note that another solution is to edit the mail.force_extra_parameters=-ba into &amp;lt;code&amp;gt;php.ini&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_NO_FULL_EMAIL ► Recipient email and sender are cleaned to be on form &amp;quot;&amp;lt;email&amp;gt;&amp;quot; instead of &amp;quot;Name &amp;lt;email&amp;gt;&amp;quot;. This might solve problem of compatibility with very old mailers.&lt;br /&gt;
&lt;br /&gt;
*MAIN_FIX_FOR_BUGGED_MTA ► Some MTA agent are bugged and add some CR chars each time they saw a LF. Because Dolibarr emails are forged to be already cleaned, if MTA agent do that, you will send an email with two CR chars. This may result in having recipient not able to read your email. To fix this, add this constant to 1. Dolibarr will then create an email that is not RFC compliant but because the MTA agent is bugged, the email will be modified and become correct during sending, solving the problem of bad email received. Add this constant if your recipient experience problems when opening email for example users using webmail of &amp;lt;code&amp;gt;orange.fr&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;hotmail.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_DO_NOT_USE_SIGN ► Do not add user signature at end of suggested pre-defined email&lt;br /&gt;
&lt;br /&gt;
*MAIL_FORCE_DELIVERY_RECEIPT_INVOICE ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Invoice&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*MAIL_FORCE_DELIVERY_RECEIPT_ORDER ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Order&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*MAIL_FORCE_DELIVERY_RECEIPT_PROPAL ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Proposal&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
*MAIN_EMAIL_USECCC ► 1 = Show field BCC into email forms, If email = Show BCC prefilled with email.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_AUTOCOPY_PROPOSAL_TO, MAIN_MAIL_AUTOCOPY_ORDER_TO, MAIN_MAIL_AUTOCOPY_INVOICE_TO ► Email to use as a BCC recipient when sending email for proposal, order or invoice. You can make this value visible by setting MAIN_EMAIL_USECCC (to 1 or to another email, see previous point)&lt;br /&gt;
&lt;br /&gt;
*MAIN_EMAIL_ADD_TRACK_ID ► When value is 1 (this is also default value if option is not set): The record &amp;quot;Message-id&amp;quot; added into smtp header includes a tracking id to define where the email was sent from. When value is 2: you send an email from third party card, the sender email is completed with the email source tracking string  &amp;quot;+thiXXX&amp;quot; on email (your email will be sent with the &amp;quot;From&amp;quot; that is myname+thi123@mycompany.com). So when user receiving email will make &amp;quot;Answer&amp;quot;, email will be sent to myname@mycompany.com but with the tracking id included (into header or into target email), allowing you to know to which third party or object, the email exchange is related to.&lt;br /&gt;
&lt;br /&gt;
*MAIL_MAX_NB_OF_RECIPIENTS_IN_SAME_EMAIL ► Restrict sending of 1 email message to &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; recipients for same email message (x for To: + CC: + BCC:). If not defined, value is &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;. Required to fight against spamming that include 1000 recipients in 1 message. Note that MAIL_MAX_NB_OF_RECIPIENTS_TO_IN_SAME_EMAIL, MAIL_MAX_NB_OF_RECIPIENTS_CC_IN_SAME_EMAIL and MAIL_MAX_NB_OF_RECIPIENTS_BCC_IN_SAME_EMAIL are also available.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_FORCE_CONTENT_TYPE_TO_HTML ► Force to send all email (event with text only content) as HTML formatted email.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_USE_MULTI_PART ► Forge email content using an alternate text part ► (for 5.0.2+). By default with 6.0+&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_ADD_INLINE_IMAGES_IF_IN_MEDIAS ► If images were stored into the medias directory from CKEditor, then images into emails are replaced with &amp;quot;inline content&amp;quot;. This may increase seriously risk of being detected as SPAM.&lt;br /&gt;
&lt;br /&gt;
*MAIN_COPY_FILE_IN_EVENT_AUTO ► Add attachement document on event auto generated by sending email from dolibarr. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_EXTERNAL_SMTP_CLIENT_IP_ADDRESS ► Enter the public IP address of the server, so it appears in the help on the email setup page.&lt;br /&gt;
&lt;br /&gt;
*MAIN_MAIL_ENABLED_USER_DEST_SELECT ► Show also internal users into list of recipients of email in email sending form ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Emailing Module==&lt;br /&gt;
&lt;br /&gt;
*MAILING_PREFIX_FOR_EMAIL_ID ► Set the value that will be used to compose the &amp;quot;Email ID&amp;quot; into email headers. If you set this value to &#039;&amp;lt;code&amp;gt;SERVER_NAME&amp;lt;/code&amp;gt;&#039;, the virtual host of web server will be used. By default, this is not defined, so a hash key, unique to each instance, is used.&lt;br /&gt;
&lt;br /&gt;
*MAILING_NO_USING_PHPMAIL ► If set, the module emailing can&#039;t be used with mail setup of &amp;quot;phpmail&amp;quot;. Using a thirdparty SMTP server is required. You can complete warning message by adding an email to contact for setup help with constant MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS.&lt;br /&gt;
&lt;br /&gt;
*MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS ► Contains the email of contact to show into the message visible to a user when he try to use emailing module without SMTP server and if option MAILING_NO_USING_PHPMAIL is set to on.&lt;br /&gt;
&lt;br /&gt;
*MAILING_LIMIT_WARNING_PHPMAIL ► Show a warning message (var contains the &#039;&#039;&#039;message to show&#039;&#039;&#039;, or &#039;&#039;&#039;translation key&#039;&#039;&#039;) on emailing send form if setup is on &amp;quot;phpmail&amp;quot;. Note: The application always try to translation the message considering the message is a translation key, before showing the translation or message if translation was not found.&lt;br /&gt;
&lt;br /&gt;
*MAILING_LIMIT_WARNING_NOPHPMAIL ► Show a warning message (var contains the &#039;&#039;&#039;message to show&#039;&#039;&#039;, or &#039;&#039;&#039;translation key&#039;&#039;&#039;) on emailing send form if setup is something else than &amp;quot;phpmail&amp;quot;. Note: The application always try to translation the message considering the message is a translation key, before showing the translation or message if translation was not found.&lt;br /&gt;
*EMAILING_USE_ADVANCED_SELECTOR ► Enable the advanced selector for recipients.&lt;br /&gt;
&lt;br /&gt;
*MAILING_LIMIT_SENDBYWEB ► Restrict number of emails you can send in same sending session with emailing module from GUI. The value &amp;quot;&amp;lt;code&amp;gt;dolibarr_mailing_limit_sendbyweb&amp;lt;/code&amp;gt;&amp;quot; if defined into config file is used in priority for this limit. A negative value means, sending by web is forbidden.&lt;br /&gt;
&lt;br /&gt;
*MAILING_LIMIT_SENDBYCLI ► Restrict number of emails you can send in same sending session with emailing module from CLI script. The value &amp;quot;&amp;lt;code&amp;gt;dolibarr_mailing_limit_sendbycli&amp;lt;/code&amp;gt;&amp;quot; if defined into config file is used in priority for this limit.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
==Expense Report==&lt;br /&gt;
&lt;br /&gt;
*EXPENSEREPORT_ALLOW_OVERLAPPING_PERIODS ► Can enter several expense reports on same or overlapping date periods. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*EXPENSEREPORT_USE_OLD_NUMBERING_RULE ► The module Expense Report use numbering rules that you can setup (like other modules do). If you need to keep the hard-coded numbering rule of expenses report used in v6.0 set this constant to 1 ► (&amp;gt;=v7.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_EXPENSE_IK ► This feature allows you to set index kilometers against a mileage index for different types of vehicles. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_EXPENSE_RULE ► This feature allows you to set a variety of rules per user/group/all so they can only create reports within their limits. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*OVERRIDE_VAT_FOR_EXPENSE_REPORT ► Setting constant OVERRIDE_VAT_FOR_EXPENSE_REPORT to 1 will allow expense reports to show VAT even if the global VAT setting is off ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
==Export Module==&lt;br /&gt;
&lt;br /&gt;
*EXPORT_CSV_SEPARATOR_TO_USE ► String value to use as default separator to delimit fields of exported files (by default Dolibarr uses &amp;quot;&amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;&amp;quot;). Example: EXPORT_CSV_SEPARATOR_TO_USE=&amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*EXPORT_CSV_FORCE_CHARSET ► Choose the charset used in the output file built by the CSV exporter. By default it is ISO-8859-1. Example: EXPORT_CSV_FORCE_CHARSET= &amp;lt;code&amp;gt;utf-8&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*EXPORTTOOL_CATEGORIES ► Can export categories (several lines) into one column with the &amp;quot;product export profile&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*USE_STRICT_CSV_RULES ► Use strict/real CSV format for export. Do not clean/replace CR+LF with &#039;\n&#039; but quote them using the escaping CSV char (&amp;lt;code&amp;gt;&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Foundation Module==&lt;br /&gt;
&lt;br /&gt;
*MEMBER_URL_REDIRECT_SUBSCRIPTION ► Link called and shown when a member account is autocreated in member module by a guest user.&lt;br /&gt;
&lt;br /&gt;
*MEMBER_EXT_URL_SUBSCRIPTION_INFO ► Link of external page pointed by the &amp;quot;Show here&amp;quot; link added in front of payment cell, into the page to make online subscription.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Interventions Module==&lt;br /&gt;
&lt;br /&gt;
*FICHINTER_CLASSIFY_BILLED► Allow to classify an intervention card as &amp;quot;Billed&amp;quot;. This add also trigger &amp;lt;code&amp;gt;FICHINTER_CLASSIFY_BILLED&amp;lt;/code&amp;gt; into list of possible automatic event into agenda.&lt;br /&gt;
&lt;br /&gt;
*FICHINTER_DISABLE_DETAILS► Disable entry of details line on intervention. Can validate with no line.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Invoice Module==&lt;br /&gt;
&lt;br /&gt;
*MAIN_DEPOSIT_MULTI_TVA ► In deposits invoice, creates one line per VAT rate from the origin document ► (6.0)&lt;br /&gt;
&lt;br /&gt;
*FACTURE_SHOW_SEND_REMINDER ► Show link &amp;quot;Send reminder by mail&amp;quot;, same feature than &amp;quot;Send by mail&amp;quot; &#039;&#039;(obsolete feature)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
*INVOICE_CAN_ALWAYS_BE_EDITED ► Allow to edit invoices even if payment was started. Note: If the module &amp;quot;BlockedLog&amp;quot; is active (required in some countries for legal reasons), this will not change content of archived logs tracked by this module. By definition there is no way to change or remove archived records. It will just update data in your application and a new record to track your change into the read-only archive log.&lt;br /&gt;
&lt;br /&gt;
*INVOICE_CAN_ALWAYS_BE_REMOVED ► Allow to always delete invoices (even if invoice is not last one). Note: If the module &amp;quot;BlockedLog&amp;quot; is active (required by some countries for legal reason), this will not change content of archived logs tracked by this module. By definition there is no way to change or remove archived records. It will just update data in your application and a new record to track your change into the read-only archive log.&lt;br /&gt;
&lt;br /&gt;
*INVOICE_CAN_NEVER_BE_REMOVED ► Never allow to delete invoices (except draft invoices).&lt;br /&gt;
&lt;br /&gt;
*INVOICE_POSITIVE_CREDIT_NOTE ► All amounts on PDF credit notes are positive.&lt;br /&gt;
&lt;br /&gt;
*FACTURE_CHANGE_THIRDPARTY ► Allow to change the third party in the draft invoices. If a discount was set from the original thirdparty, then discount remain, making data not coherent.&lt;br /&gt;
&lt;br /&gt;
*FACTURE_USE_PROFORMAT ► Enable PROFORMAT invoices type.&lt;br /&gt;
&lt;br /&gt;
*FACTURE_DEPOSITS_ARE_JUST_PAYMENTS ► Treats deposit invoices as a special case. Deposit invoices don&#039;t get counted on turnover. They are then applied as a payment, like a discount, on the final invoice. By default, when you include the deposit into draft of final invoice, the amount of final invoice is reduced. With this option, final amount is not reduced but a payment is registered. WARNING: In a lot of european countries, using this option is not allowed.&lt;br /&gt;
&lt;br /&gt;
*FACTURE_SENDBYEMAIL_FOR_ALL_STATUS ► Can send invoice by email to customer even if invoice has status &amp;quot;draft&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT ► Disable VAT on generated documents. like for an association. (Works with crabe template)&lt;br /&gt;
&lt;br /&gt;
*INVOICE_CREDIT_NOTE_STANDALONE ► Can make a credit note without invoice. ► (v3.9)&lt;br /&gt;
&lt;br /&gt;
*INVOICE_USE_SITUATION ► Enable the &amp;quot;situation invoice&amp;quot; feature&lt;br /&gt;
&lt;br /&gt;
*INVOICE_USE_SITUATION_CREDIT_NOTE ► Enable the &amp;quot;situation credit note&amp;quot; feature (need &amp;lt;code&amp;gt;INVOICE_USE_SITUATION&amp;lt;/code&amp;gt;) ► (v8.0)&lt;br /&gt;
&lt;br /&gt;
*INVOICE_DISABLE_DEPOSIT ► Disable deposit invoices&lt;br /&gt;
&lt;br /&gt;
*INVOICE_DISABLE_REPLACEMENT ► Disable replacement invoices&lt;br /&gt;
&lt;br /&gt;
*INVOICE_DISABLE_CREDIT_NOTE ► Disable credit notes&lt;br /&gt;
&lt;br /&gt;
*WORKFLOW_BILL_ON_SHIPMENT ► Change label of button with suitable label when you need to create invoice on shipments&lt;br /&gt;
&lt;br /&gt;
*INVOICE_ALLOW_EXTERNAL_DOWNLOAD ► When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. Use the tag __DIRECTDOWNLOAD_URL_INVOICE__ in email template to insert it. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*INVOICE_POINTOFTAX_DATE ► Add Point of Tax Date on invoices for country-specific legality reasons ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*FACTURE_ENABLE_NEGATIVE_LINES ► Allows to add negative lines to an invoice ► (v8.0.2+)&lt;br /&gt;
&lt;br /&gt;
*INVOICE_USE_DEFAULT_DOCUMENT ► Allow user to select a default invoice documents models according to invoice type. On invoice create page, the model is dynamically changed on invoice type selection. ► (v9.0+)&lt;br /&gt;
&lt;br /&gt;
*FACTURE_REUSE_NOTES_ON_CREATE_FROM ► Reuse the Public Note and Private note of the previous object (Proposal,...) when creating the bill.&lt;br /&gt;
*MAIN_SHOW_FACNUMBER_IN_DISCOUNT_LIST ► Display the reference of credit notes in discount list when creating the bill.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
==Look or Theme==&lt;br /&gt;
&lt;br /&gt;
*MAIN_OPTIMIZEFORTEXTBROWSER ► Optimize output rendering for usage of a text browser (useful for blind people)&lt;br /&gt;
&lt;br /&gt;
*THEME_ELDY_DISABLE_IMAGE ► Disabled images of top menu for eldy theme. ► (v3.8+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_MENU_HIDE_UNAUTHORIZED ► Hide menu if logged in user is not authorized rather than just grey them&lt;br /&gt;
&lt;br /&gt;
*THEME_TOPMENU_STICKY_POSITION ► Option to fix top menu with eldy theme ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_EASTER_EGG_COMMITSTRIP ► Show a comic image from the CommitStrip website. Images are refreshed daily. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_STATUS_USES_CSS ► (v10.0+) Change status design using new style&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_NEW_TITLE_BUTTON ► (v10.0+) Use new list buttons design&lt;br /&gt;
*MAIN_APPLICATION_DISABLED_STATEBOARD ► Hide the stateboard of the main page&lt;br /&gt;
*MAIN_APPLICATION_DISABLED_WORKBOARD ► Hide the workboard of the main page&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
==MultiCurrency==&lt;br /&gt;
&lt;br /&gt;
*MAIN_MULTICURRENCY_ALLOW_SYNCHRONIZATION ► Enable CurrencyLayer API synchronization&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Order Module==&lt;br /&gt;
&lt;br /&gt;
*COMMANDE_REQUIRE_SOURCE =&amp;gt; Make the input field &amp;quot;Source of order&amp;quot; mandatory.&lt;br /&gt;
&lt;br /&gt;
*COMMANDE_VALID_AFTER_CLOSE_PROPAL =&amp;gt; When an order is created on a proposal close, the order is directly defined with status &amp;quot;Validated&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*COMMANDE_CHANGE_THIRDPARTY =&amp;gt; Can change customer on orders&lt;br /&gt;
&lt;br /&gt;
*WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER =&amp;gt; When an order is created, the warehouse can be defined&lt;br /&gt;
&lt;br /&gt;
*ORDER_ALLOW_EXTERNAL_DOWNLOAD =&amp;gt; When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. ► (v7.0+)&lt;br /&gt;
*THIRDPARTY_PROPAGATE_EXTRAFIELDS_TO_ORDER =&amp;gt; Copy extrafields from thirdparty to order. ► (v11.0+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
==PDF Options==&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_FORCE_SAVEAS ► If your browser always asks to save downloaded files on disk (like PDF), try this this option. File may be displayed directly in your browser.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_PDF_COMPRESSION ► Disable PDF compression.&lt;br /&gt;
&lt;br /&gt;
*MAIN_INVERT_SENDER_RECIPIENT ► Invert sender and recipient in some PDF.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_PDF_AUTOUPDATE ► Disable automatic generation of PDF each time we add/update/delete a product line (we can still build document by clicking on &amp;quot;Generate&amp;quot;). This option may increase interface speed on servers with low CPU.&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_BACKGROUND_ON_PDF ► Define this constant with short name of an image (example &amp;quot;&amp;lt;code&amp;gt;myimage.jpg&amp;lt;/code&amp;gt;&amp;quot;) that must be saved into directory &amp;quot;&amp;lt;code&amp;gt;documents/mycompany/logos&amp;lt;/code&amp;gt;&amp;quot;. This will add this background image into your generated PDF files. Warning: This option make TCPDF library being crazy sometime and content on image disappeared!&lt;br /&gt;
&lt;br /&gt;
*MAIN_ADD_PDF_BACKGROUND ► Define this constant with short name of a PDF file (example &amp;quot;&amp;lt;code&amp;gt;mypdf.pdf&amp;lt;/code&amp;gt;&amp;quot;) that must be saved into directory &amp;quot;&amp;lt;code&amp;gt;documents/mycompany&amp;lt;/code&amp;gt;&amp;quot;. This will add PDF as a background of some of your generated PDF files (proposals,invoices,orders). If you need to concat PDF, see instead [[Module Concat PDF]].&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_FORCE_FONT ► To ignore font defined into language file and force usage of a particular font. For example &amp;quot;&amp;lt;code&amp;gt;DejaVuSans&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_FREETEXT_HEIGHT ► Change height of space reserved to output the free text.&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_TITLE_BACKGROUND_COLOR ► Can define a background color onto title line. Example: &amp;lt;code&amp;gt;220,220,200&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*MAIN_USE_COMPANY_NAME_OF_CONTACT ► Use contact name and information rather than company&lt;br /&gt;
&lt;br /&gt;
*MAIN_ODT_AS_PDF ► Activate PDF conversion from ODT document. If value is &#039;&amp;lt;code&amp;gt;jodconverter&amp;lt;/code&amp;gt;&#039;, java and jodconverter command line tool must be available. If value is &#039;&amp;lt;code&amp;gt;/pathto/jodconverter.jar&amp;lt;/code&amp;gt;&#039; then java and the jodconvertar jar must exist. Soffice must also be available. &amp;lt;code&amp;gt;MAIN_DOL_SCRIPTS_ROOT&amp;lt;/code&amp;gt; Must also be defined to path where the &amp;quot;scripts&amp;quot; directory is stored (for example &amp;lt;code&amp;gt;/var/www/mydolibarr&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
*MAIN_ODT_AS_PDF_DEL_SOURCE ► For ODT generation. If set, then initial behaviour is conserved but ODT file is removed when option to convert it as PDF (see previous) is on. Disabled by default&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS ► Adding the company address at the bottom of the page. Disabled by default&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_PROPOSALS_WITH_PICTURE ► Include the first image of the product into the line of the generated PDF for customer proposals.&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_INVOICES_WITH_PICTURE ► Include the first image of the product into the line of the generated PDF for customer invoices.&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_SUPPLIER_PROPOSAL_WITH_PICTURE ► Include the first image of the product into the line of the generated PDF for supplier proposals ► (v5.0.3+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_DOCUMENTS_LOGO_HEIGHT ► Can force height of the logo on PDF.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DOCUMENTS_WITH_PICTURE_WIDTH ► Can change size of picture when hidden option &amp;lt;code&amp;gt;MAIN_GENERATE_PROPOSALS_WITH_PICTURE&amp;lt;/code&amp;gt; is used. By default value is &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_COLUMN ► Hide column with VAT information but only column not total.&lt;br /&gt;
&lt;br /&gt;
*PDF_SHOW_PROJECT ► Show project onto PDF (supported on supplier order only for the moment)&lt;br /&gt;
&lt;br /&gt;
*PDF_BANK_HIDE_NUMBER_SHOW_ONLY_BICIBAN ► Hide bank number (&amp;quot;code banque/guichet/compte&amp;quot; for France, &amp;quot;sort code/account number&amp;quot; for GB, ...) and keep only BIC/IBAN on PDF.&lt;br /&gt;
&lt;br /&gt;
*PDF_HIDE_PRODUCT_REF_IN_SUPPLIER_LINES ► Modify the use/position of Supplier Ref/Internal Ref with the item Label (name) on PDF documents.&lt;br /&gt;
&lt;br /&gt;
Default (constant not set or Value &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;): Internal ref followed by supplier ref in brackets.&amp;quot;COMPANY-REF-001 (Vendor SKU SUPPLIER-REF-001) - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Value &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;: Supplier ref only eg.&amp;quot;SUPPLIER-REF-001 - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Value &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;: Supplier ref followed by internal ref in brackets. eg.&amp;quot;SUPPLIER-REF-001 (InternalRef COMPANY-REF-001) - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_ADDALSOTARGETDETAILS ► Add particular details like the telephone number on generated PDFs. Can be useful in cases where a printed order/invoice etc is given to a delivery driver/courier etc.&lt;br /&gt;
&lt;br /&gt;
*PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME ► Include alternative/alias name into name on PDF.&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING ► Add optional esign field in pdf propal ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_TVAINTRA_IN_SOURCE_ADDRESS ► Show VAT N° in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID1_IN_SOURCE_ADDRESS ► Show Professional ID 1 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID2_IN_SOURCE_ADDRESS ► Show Professional ID 2 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID3_IN_SOURCE_ADDRESS ► Show Professional ID 3 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID4_IN_SOURCE_ADDRESS ► Show Professional ID 4 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID5_IN_SOURCE_ADDRESS ► Show Professional ID 5 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROFID6_IN_SOURCE_ADDRESS ► Show Professional ID 6 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
*ADD_HTML_FORMATING_INTO_DESC_DOC ► Add more visibility to important informations like reference and serial number in desc. ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
==Point of Sale==&lt;br /&gt;
&lt;br /&gt;
*CASHDESK_SHOW_KEYPAD ► Show a mouse key pad into the &#039;Simple Point of Sale&#039; module.&lt;br /&gt;
&lt;br /&gt;
*POS_ADDON ► Set this value to an existing numbering module rule (for example &#039;&amp;lt;code&amp;gt;mod_facture_terre&amp;lt;/code&amp;gt;&#039;, &#039;&amp;lt;code&amp;gt;mod_facture_mars&amp;lt;/code&amp;gt;&#039;, ...) to force the numbering module to us to define the invoice ref when invoice is created by the POS. For example setting value &amp;lt;code&amp;gt;POS_ADDON&amp;lt;/code&amp;gt; to &#039;&amp;lt;code&amp;gt;mod_facture_terre&amp;lt;/code&amp;gt;&#039; will use the numbering module &#039;&amp;lt;code&amp;gt;terre&amp;lt;/code&amp;gt;&#039; for invoice generated from POS, whatever is the numbering rule defined into invoice module setup (you can also use POS_NUMBERING_TERRE_FORCE_PREFIX and POS_NUMBERING_MARS_FORCE_PREFIX variable to change the prefix used).&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
==Products Module==&lt;br /&gt;
&lt;br /&gt;
*MAIN_PRODUCT_DISABLE_CUSTOMCOUNTRYCODE ► Avoid Custom code and country of origin to be set as product description when added to Propal/Order/Invoice&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_ADD_TYPE_IN_DOCUMENTS ► Add text &amp;quot;Product&amp;quot; or &amp;quot;Service&amp;quot; at beginning of details lines on built PDF documents.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DONOTSEARCH_ANYWHERE ► When Ajax search is enabled, search is done on criteria anywhere in label of product. By adding this option, search is done only on start of label. This is really faster when you have a huge number of products.&lt;br /&gt;
&lt;br /&gt;
*PRODUIT_DESC_IN_LIST ► Show long description of product/service into lists.&lt;br /&gt;
&lt;br /&gt;
*PRODUIT_PDF_MERGE_PROPAL ► Enable module Propal merge product PDF&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_USE_OLD_PATH_FOR_PHOTO ► Ask dolibarr to check also old path (before 3.7) where photos were stored.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_USE_UNITS ► Enable units from dictionary in product/service card.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_SIZE ► Disable size in product card.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_LENGTH ► Disable length in product card ► v4.0+&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_SURFACE ► Disable surface in product card. ► v4.0+&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_VOLUME ► Disable volume in product card.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_DISABLE_CUSTOM_INFO ► Disable custom info (custom code and country origin) in product/service card.&lt;br /&gt;
&lt;br /&gt;
*PRODUIT_MULTIPRICES_USE_VAT_PER_LEVEL ► When option to use price per level/segment is on, this allows to also set a dedicated vat for each price level.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DIRECT_STATUS_UPDATE ► Allows you to change the status of the product (&#039;&#039;for sale/not for sale for purchase/not for purchase&#039;&#039;) directly on the product page via a &#039;&#039;on/off&#039;&#039; switch button. This can be convenient for those who need to quickly disable certain statuses of products without having to go through the editing product page individually. Also can be very useful if used as a filter on the product and product search list. This option doesn&#039;t generate a MODIFY trigger, so be careful with external modules. ► v4.0+&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_CHARGES ► Adds an extra field for adhoc charges at the product buying price stage. The cost price is then calculated with supplier price + charges if defined. Useful for extra costs for a product or certain delivery charges to the product. ► (&amp;lt;= v7.0)&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_MAX_VISIBLE_PHOTO ► Show a maximum number of product photos (as thumbnails) on the product main card. Example, setting this constant to &#039;&amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;&#039; will show the first five product photos found on the product card.&lt;br /&gt;
&lt;br /&gt;
*PRODUCT_MAX_LENGTH_COMBO ► Limit the length of the label displayed when adding lines in proposals/invoices/orders&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_FREE_LINES ► Disallow using free lines to add line in documents ► (&amp;gt;= 8.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_SHOW_PRODUCT_ACTIVITY_TRIM ► Show Product and Services turnover before for all four quarters tax over recent years recent years on the product area ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
*CATEGORY_GRAPHSTATS_ON_PRODUCTS ► Show graph of products with categories and totals in Products Area screen&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
==Projects Module==&lt;br /&gt;
&lt;br /&gt;
*PROJECT_DISABLE_UNLINK_FROM_OVERVIEW ► Enable removing the button from a link in the project overview. ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS ► Enable linking a project to any supplier even when using the third party link feature. Note: Set to 1 by default from 3.7.&lt;br /&gt;
&lt;br /&gt;
*PROJECT_TIME_ON_ALL_TASKS_MY_PROJECTS ► Can add time spent on tasks, even if i am not assigned to task (however, task must be a project i am a contact).&lt;br /&gt;
&lt;br /&gt;
*PROJECT_SHOW_REF_INTO_LISTS ► Add column with project ref into list (with 3.7 list of supplier invoices only, will be expanded to other lists)&lt;br /&gt;
&lt;br /&gt;
*PROJECT_HIDE_UNSELECTABLES ► Hide into select list, all project that we can&#039;t select (closed or draft)&lt;br /&gt;
&lt;br /&gt;
*PROJECT_HIDE_TASKS ► Hide tasks. For user using project only as an analytics key and not using tasks.&lt;br /&gt;
&lt;br /&gt;
*PROJECT_LIST_SHOW_STARTDATE ► Shows start date of projects in project lists.&lt;br /&gt;
&lt;br /&gt;
*PROJECT_LINK_ON_OVERWIEW_DISABLED ► Hide the &amp;quot;link to&amp;quot; form on the overview page ► (4.0)&lt;br /&gt;
&lt;br /&gt;
*PROJECT_CREATE_ON_OVERVIEW_DISABLED ► Hide the &amp;quot;create ...&amp;quot; button on the overview page ► (4.0)&lt;br /&gt;
&lt;br /&gt;
*PROJECT_ALLOW_TO_LINK_FROM_OTHER_COMPANY ► Can link an object to a project of another thirdparty&lt;br /&gt;
&lt;br /&gt;
*PROJECT_ALLOW_COMMENT_ON_TASK ► Add comment feature on project task&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Proposals Module==&lt;br /&gt;
&lt;br /&gt;
*PROPAL_CLONE_ON_CREATE_PAGE ► On the create proposal page, ask if we want to create the proposal by cloning an already existing one. You should use instead the &amp;quot;Clone&amp;quot; button available on existing proposals.&lt;br /&gt;
&lt;br /&gt;
*MAIN_PROPAL_CHOOSE_ODT_DOCUMENT ► On setup page, you&#039;ll be able to select which ODT document to use when close or cancel proposals.&lt;br /&gt;
&lt;br /&gt;
*MAIN_GENERATE_PROPOSALS_WITH_PICTURE ► Add a picture of the product (the first one found if there are several) into the generated PDF of proposals. Note that using this will reduce the available width for the product description.&lt;br /&gt;
&lt;br /&gt;
*PROPAL_DISABLE_SIGNATURE ► Do no show the box for signature.&lt;br /&gt;
&lt;br /&gt;
*WORKFLOW_PROPAL_CAN_CLASSIFY_BILLED_WITHOUT_INVOICES ► Button &amp;quot;Classified Billed&amp;quot; is visible on proposal even if there is no invoice linked to proposal.&lt;br /&gt;
&lt;br /&gt;
*PRODUIT_PDF_MERGE_PROPAL ► When generating the proposal PDF, all PDFs linked to products linked to proposal are also included into final PDF&lt;br /&gt;
&lt;br /&gt;
*PROPOSAL_ALLOW_EXTERNAL_DOWNLOAD ► When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
*MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING ► add optional esign field in pdf propal ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Services Module==&lt;br /&gt;
&lt;br /&gt;
*SERVICE_ARE_ECOMMERCE_200238EC ► If this option is enabled, services are processed like eServices according to directive of EU Council Directive 2002/38/EC (http://ec.europa.eu/taxation_customs/taxation/vat/traders/e-commerce/article_1610_en.htm). Default VAT rate are based on buying country instead of selling country for BtoC sells.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Shipments==&lt;br /&gt;
&lt;br /&gt;
*STOCK_WAREHOUSE_NOT_REQUIRED_FOR_SHIPMENTS ► If set, you can add a shipment line, with no stock source defined. ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*SHIPMENT_GETS_ALL_ORDER_PRODUCTS ► Add all order lines in shipment, including the one with 0 in quantity&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Stocks==&lt;br /&gt;
&lt;br /&gt;
*CASHDESK_FORCE_STOCK_ON_BILL ► Option to force decrease of stock whatever is user setup&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_DISABLE_STOCK_DISPATCH_WHEN_TOTAL_REACHED ► Disable stock dispatch when total expected was already received&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
==Suppliers Module==&lt;br /&gt;
&lt;br /&gt;
*FOURN_PRODUCT_AVAILABILITY ► On the Suppliers price page of the products, activate the supplier product availability. &#039;&#039;This is duplicate feature with delivery_delay introduced with 3.8.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*RELOAD_PAGE_ON_SUPPLIER_CHANGE ► On creation of a supplier order/invoice, reload form with supplier-specific details when supplier is selected from drop-down list.&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_AUTOADD_USER_CONTACT ► Add user approving supplier order as a contact automatically.&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_DEFAULT_PAYMENT_MODE_ID ► Set the default payment method for suppliers (&amp;lt;code&amp;gt;rowid&amp;lt;/code&amp;gt; in table &amp;lt;code&amp;gt;llx_c_paiement&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_USE_DISPATCH_STATUS ► Add a status on each dispatch order line when receiving products from suppliers ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_NO_DIRECT_APPROVE ► No button &amp;quot;Validate and Approve&amp;quot;. Always do step &amp;quot;Validate&amp;quot; and &amp;quot;Approve&amp;quot; in 2 steps.&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_WITH_PREDEFINED_PRICES_ONLY ► Restrict selection of products in supplier order to only those with a buying price defined for that supplier. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_ORDER_EDIT_BUYINGPRICE_DURING_RECEIPT ► Can modify the buying price used for PMP calculation when making a stock reception on a supplier order. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*SUPPLIER_PROPOSAL_WITH_PREDEFINED_PRICES_ONLY ► Restrict selection of products in supplier proposal to only those with a buying price defined for that supplier. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
*DISPLAY_DISCOUNTED_SUPPLIER_PRICE ► Allow to display discounted supplier price when searching product in supplier documents ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
*MAIN_CAN_EDIT_SUPPLIER_ON_SUPPLIER_ORDER ►  Allow to change the supplier on a draft supplier order ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
==Third Parties Module==&lt;br /&gt;
&lt;br /&gt;
*COMPANY_AQUARIUM_CLEAN_REGEX ► Add a REGEX rule on the third parties names. It applies a regex replacement pattern on generated code if COMPANY_AQUARIUM_CLEAN_REGEX is set. Value must be a regex with parenthesis. The part into parenthesis is kept, the rest removed. For example if COMPANY_AQUARIUM_CLEAN_REGEX = &#039;&amp;lt;code&amp;gt;^..(..)..(.*)&amp;lt;/code&amp;gt;&#039; the first char and second char are removed and the char 5 and 6 too ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*MAIN_FORCE_DEFAULT_STATE_ID ►  &amp;lt;code&amp;gt;rowid (integer)&amp;lt;/code&amp;gt; of a state/province as defined in &amp;lt;code&amp;gt;llx_c_departements&amp;lt;/code&amp;gt;. On the creation of a third party/contact, the state/province corresponding to this rowid is preselected in the dropdown list. ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
*SOCIETE_DISABLE_CUSTOMERS ► Remove all menu and features related to customers&lt;br /&gt;
&lt;br /&gt;
*SOCIETE_DISABLE_PROSPECTS ► Remove all menu and features related to prospects&lt;br /&gt;
&lt;br /&gt;
*SOCIETE_DISABLE_STATE ► Do not use field &amp;quot;state/province&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_NOTCUSTOMERPROSPECT_BY_DEFAULT ► Do not set status &amp;quot;Customer/Prospect&amp;quot; to &amp;quot;on&amp;quot; when creating a new third party from menu &amp;quot;New third party&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_NOTSUPPLIER_BY_DEFAULT ► Do not set status &amp;quot;Supplier&amp;quot; to &amp;quot;on&amp;quot; when creating a new third party from menu &amp;quot;New third party&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*SOCIETE_SORT_ON_TYPEENT ► The combo list of &amp;quot;type of third party&amp;quot; is sorted on a field &amp;quot;position&amp;quot; that appears into dictionary instead of alphabetical order.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_DEFAULT_CREATE_CONTACT ► With this setting as 1 the option is set for third parties to be created WITH the child contact ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_DEFAULT_USEVAT ► When creating a new third party, the field &amp;quot;Use vat&amp;quot; is set to on or off depending on value of this parameter.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_DEFAULT_USELOCALTAX1 ► When creating a new third party, the field &amp;quot;Use second tax&amp;quot; is set to on or off depending on value of this parameter.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_DEFAULT_USELOCALTAX2 ► When creating a new third party, the field &amp;quot;Use third tax&amp;quot; is set to on or off depending on value of this parameter.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_INCLUDE_PARENT_IN_LINKTO ► Search also for elements on parent third party when using the &amp;quot;link to&amp;quot; object feature.&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_INCLUDE_PROJECT_THIRDPARY_IN_LINKTO ► Search also for elements on third party that own the project of the current element when using the &amp;quot;link to&amp;quot; object feature (if project is owned by a different thirdparty than current one).&lt;br /&gt;
&lt;br /&gt;
*SOCIETE_ASK_FOR_SHIPPING_METHOD ► Shipping method can be predefined on customer card and will be used as default on order creation&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_LOGO_ALLOW_EXTERNAL_DOWNLOAD ► When a logo is uploaded, a share key is automatically set so the file can be downloaded using the share key.&lt;br /&gt;
&lt;br /&gt;
*MAIN_DISABLE_RESTRICTION_ON_THIRDPARTY_FOR_EXTERNAL ► External users are always restricted on the thirdparty of their contact record. With this option, permission &amp;quot;see all thirdparty&amp;quot; may works also for external user. Not implemented yet...&lt;br /&gt;
&lt;br /&gt;
*THIRDPARTY_CAN_HAVE_CATEGORY_EVEN_IF_NOT_CUSTOMER_PROSPECT_SUPPLIER ► Possible to add Categories to third parties that are not customer, prospect or supplier.&lt;br /&gt;
*THIRDPARTY_SUGGEST_ALSO_ADDRESS_CREATION ► Enabled contact creation on third-party create card&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
==VAT Report==&lt;br /&gt;
&lt;br /&gt;
*MAIN_INCLUDE_ZERO_VAT_IN_REPORTS ► Include lines with VAT to 0% (for &amp;quot;auto-liquidation&amp;quot; in EEC) ► (v8.0.3+)&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==WYSIWYG Editor==&lt;br /&gt;
&lt;br /&gt;
*FCKEDITOR_ENABLE_DETAILS_FULL ► Can cut and paste external images (hosted on external server) into description of proposal, orders or invoices. WARNING: PDF generation is not guaranteed with this. Also if the image is removed or renamed by the image hosting service, your proposal, order or invoice will be broken.&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==For SaaS / Cloud hosting integrators==&lt;br /&gt;
&lt;br /&gt;
The following options are useless for a common usage of Dolibarr. But they are usefull if you plan to host / provide Dolibarr instances as Software As A Service (SAAS) to your customers.&lt;br /&gt;
&lt;br /&gt;
*To avoid bad use of the emailing module, it is recommanded to set the option MAILING_NO_USING_PHPMAIL to 1 (This option is described previously). Also you can complete the message visible by customers when they try to setup the SMTP credentials of their Dolibarr by using the constant MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS (This option is described previously). For example, you can point to a FAQ on your website.&lt;br /&gt;
&lt;br /&gt;
*MAIN_EXTERNAL_SMTP_CLIENT_IP_ADDRESS: Set here the ip of list of ip where your Dolibarr instances are hosted. So when your customer go into the setup area of email, a message will explain him how to setup its SPF record for its email domain. This is to avoid to have its emails, sent from its Dolibarr instance, fails due to strict antispam rule of some emailing servers.&lt;br /&gt;
&lt;br /&gt;
*MAIN_ALWAYS_CREATE_LOCK_AFTER_LAST_UPGRADE: If set, when you launch upgrades of your customer instances, you are sure that the upgrade process recreate automatically the file install.lock so the administration tools like install.php and repair.php can&#039;t be used on your customer instance (until the lock file is deleted).&lt;br /&gt;
&lt;br /&gt;
*MAIN_FILECHECK_LOCAL_SUFFIX: If you offer a customized or patched version of Dolibarr, when the user will use the tool to chek the integrity of files, the default xml file name used for signature checking will be the official file provided by the Dolibarr team. To have the suggested signature file beeing your own file you can set ths constant to a suffix. For example, set this to &amp;quot;&#039;&#039;&#039;-mysaassolution&#039;&#039;&#039;&amp;quot;. So, when the user will use the file integrity tool, the default file to check for signature will be &amp;quot;&#039;&#039;&#039;/install/filelist-mysaassolution.xml&#039;&#039;&#039;&amp;quot; instead of &amp;quot;&#039;&#039;&#039;/install/filelist-10.0.2.xml&#039;&#039;&#039;&amp;quot;. All you have to do is generate the signature file &#039;&#039;&#039;mysaassolution&#039;&#039;&#039; using the tool &#039;&#039;&#039;build/generate_filelist_xml.php&#039;&#039;&#039; and put this file into the install directory of your customer instance. Doing this, your customer, and yourself, will be able to check if a file was modified without beeing disturbed by false alerts due to your customized files or patches (they are included in the signature used for check).&lt;br /&gt;
&lt;br /&gt;
*WEBSITE_REPLACE_INFO_ABOUT_USAGE_WITH_WEBSERVER: Put here a text a a translation key of a text to show when the user will use the feature &amp;quot;Deploy&amp;quot; when he want to deploy a website done with Dolibarr CMS. So you can, for example, show him a message that this feature is not part of is subscription and putting a website online may need a complementary subscription.&lt;br /&gt;
&lt;br /&gt;
*CRON_DISABLE_KEY_CHANGE: When you provide an instance to a customer, you probably also add an entry in the cron of this user so Dolibarr batch and scheduler can work correctly. For security purpose, it may have a security key that is inside the command line into the cron entry and this entry must match the value defined into Dolibarr setup (setup of module &#039;Scheduled Jobs&#039;). Because, a customer of a Saas platform will probably have no access to edit the cron file, it is also import that he has no way to edit the key into the Dolibarr setup, so the key in the cron command line will always match the key in Dolibarr setup, and the Dolibarr batches will executed without security errors. To be sure, the customer does not change the value, you can set this constant to 1 into the table [[Table_llx_const]].&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Dolibarr_suppliers_France&amp;diff=43251</id>
		<title>Dolibarr suppliers France</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Dolibarr_suppliers_France&amp;diff=43251"/>
		<updated>2019-07-30T13:06:49Z</updated>

		<summary type="html">&lt;p&gt;Iouston: Update of iouston provider&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Dolibarr_suppliers}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=1fonet Services|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Integrations and open source development&lt;br /&gt;
Specialist software open source.Dolibarr, Joomla! Prestashop, Cahiers des charges ERP/CRM, Ecommerce, site web, gratuits. Complementary development of the module, component or application needs. Based in the PACA region work throughout France.|&lt;br /&gt;
web=http://www.1fonet.fr|&lt;br /&gt;
email=mailto:contact@1fonet.fr|&lt;br /&gt;
zip=13530|&lt;br /&gt;
town=Trets|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=2A2C Conseil|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=CRM et Solutions e-commerce opensource pour TPM et PME, VoIP et Hosting en marque blanche, maintenance informatique, WordPress, Dolibarr, Prestashop, Formation utilisateur|&lt;br /&gt;
web=|&lt;br /&gt;
email=mailto:info@2a2c-conseil.fr|&lt;br /&gt;
zip=75012|&lt;br /&gt;
town=PARIS|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=A3SYS : MON-DOLIBARR|&lt;br /&gt;
profid=52456658500021 (SIRET)|&lt;br /&gt;
desc=Intégration, assistance et développement.&lt;br /&gt;
Notre société forte de plus de 20 ans d&#039;expérience dans l&#039;intégration de divers ERP propose ses services aux entreprises souhaitant mettre en place l&#039;ERP Dolibarr. Une plateforme dédiée est mise en place pour proposer des services de qualité à moindre coût.|&lt;br /&gt;
web=http://www.mon-dolibarr.fr|&lt;br /&gt;
email=http://www.mon-dolibarr.fr/contact/|&lt;br /&gt;
zip=59310|&lt;br /&gt;
town=Orchies (Nord - France)|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=logo_mon-dolibarr.jpg&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=A6TM - SOLUTIONS|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=A6TM SOLUTIONS, est une entreprise maîtrisant les technologies de l&#039;informatique, et spécialisée dans les solutions informatiques et notamment les services tels que l&#039;infogérance, installations et déploiements, dépannages, maintenance et réseaux informatique. Installation et maintenance CMS(Joomla, Wordpress...), Progiciel ERP/CRM (Dolibarr...)|&lt;br /&gt;
web=http://www.a6tm-solutions.fr|&lt;br /&gt;
email=mailto:contact@a6tm-solutions.fr|&lt;br /&gt;
zip=44|&lt;br /&gt;
town=Nantes et son département|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=ACN - Atelier de Création Numérique|&lt;br /&gt;
profid=808 725 212 00019|&lt;br /&gt;
desc=ACN (Atelier de Création Numérique), Maîtres d’œuvres en Informatique, Nous sommes spécialisés dans le conseil, la création et l’intégration de solutions professionnelles pour les bureaux d&#039;études. Nos solutions vont de l’intégration d’outils Open Source et de logiciels libres à la mise en place des meilleurs produits de grands éditeurs du marché.|&lt;br /&gt;
web=http://ateliercreationnumerique.com/|&lt;br /&gt;
email=mailto:contact@atlcreanum.com|&lt;br /&gt;
zip=44|&lt;br /&gt;
town=Nantes et Grand Ouest|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=acn.png|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Aplose|&lt;br /&gt;
partner=yes|&lt;br /&gt;
profid=534906698|&lt;br /&gt;
desc=&lt;br /&gt;
Aplose c&#039;est l&#039;Agence pour la Promotion du Libre et de l&#039;Open Source en Entreprise, société de service et organisme de formation spécialisé dans les logiciels libres de création de site internet et boutique en ligne (wordpress, prestashop), les erp, logiciels de gestion et logiciels de caisse et point de vente (Odoo, Dolibarr), les langages de programmation (java, html5, Javascript, php), les bases de données (mysql, postgresql), les systèmes d&#039;exploitation (linux), les méthodes des gestion de projet agiles (Scrum). Bordeaux - Montpellier|&lt;br /&gt;
web=http://www.aplose.fr|&lt;br /&gt;
email=[mailto:oandrade@aplose.fr?subject=Contact%20from%20Dolibarr%20Suppliers%20France20page oandrade@aplose.fr]|&lt;br /&gt;
zip=33610|&lt;br /&gt;
town=Cestas|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=Logo_Aplose.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Artaban Communication|&lt;br /&gt;
partner=no|&lt;br /&gt;
profid=400 396 388 00037|&lt;br /&gt;
desc=Artaban Communication est une SSLL. Spécialistes du CMS SPIP, nous concevons et réalisons des sites web à forte composante éditoriale. Nous prenons également en charge le webmastering et la création de contenu. Notre expertise s&#039;étend à un certain nombre de logiciels, choisis pour leur qualité et leur intérêt, et avec lesquels nous aimons travailler et notamment Dolibarr. Artaban Communication est membre de l&#039;April.|&lt;br /&gt;
web=http://www.artaban.fr|&lt;br /&gt;
email=mailto:contact@artaban.fr|&lt;br /&gt;
zip=94340|&lt;br /&gt;
town=Joinville-le-Pont|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=Artaban_logo.png‎|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=ATM Consulting|&lt;br /&gt;
partner=yes|&lt;br /&gt;
profid=753 447 481 00015|&lt;br /&gt;
desc=Consulting company dedicated to small and medium enterprises information system optimization, we provide to our customers open-source based solutions to improve their information system efficiency. We offer hosting and support solutions and we are Dolibarr contributor, developer and integrator. &amp;quot;Open-source. Custom. Freedom&amp;quot;|&lt;br /&gt;
web=http://www.atm-consulting.fr|&lt;br /&gt;
email=mailto:contact@atm-consulting.fr|&lt;br /&gt;
zip=26000|&lt;br /&gt;
town=Valence|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=AB2L|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Un Alsacien à votre service. Installation et configuration de l&#039;ERP/CRM Dolibarr dans votre entreprise ou sur notre serveur. Nous vous accompagnons pour un démarrage rapide et serein. Nous sommes une société de service en logiciel libre fournissant un équivalent open source au logiciel propriétaire de tout type. |&lt;br /&gt;
web=http://www.ab2l.eu|&lt;br /&gt;
email=mailto:contact@ab2l.eu|&lt;br /&gt;
zip=67000|&lt;br /&gt;
town=Strasbourg|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Axopen IT Services|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=L&#039;entreprise Axopen propose toute une gamme de produits et services informatiques allant du conseil en système d&#039;informations, développement de solutions sur mesure et intégration de solutions Open Source ou propriétaires. Nous sommes spécialisé en particulier dans l&#039;intégration de solutions de gestion de la relation client Open Source telles que Dolibarr, SugarCRM ou VTiger... |&lt;br /&gt;
web=http://www.axopen.com|&lt;br /&gt;
email=mailto:contact@axopen.com|&lt;br /&gt;
zip=69001|&lt;br /&gt;
town=Lyon|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=AKILIS|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=AKILIS est une société éditrice de logiciels de gestion qui a fait le pari d’utiliser les nouvelles méthodes de travail pour développer des solutions clairs et efficaces. Notre mission est de vous proposer des solutions simples d&#039;utilisation, ne demandant aucun entretien de votre part, ni aucune connaissance technique particulière. Notre outil est celui que VOUS utilisez quotidiennement : le Web.&lt;br /&gt;
AKILIS, c’est une équipe toujours disponible pour vous guider et vous écouter. Nous développons et améliorons sans cesse nos logiciels afin que ceux-ci répondent au mieux à votre activité et vos besoins.&lt;br /&gt;
AKILIS peut également, dans le cadre de besoin partculier, étudier avec vous un développement sur mesure. |&lt;br /&gt;
web=http://www.akilis.fr|&lt;br /&gt;
email=mailto:contact@akilis.fr|&lt;br /&gt;
zip=69200|&lt;br /&gt;
town=Vénissieux|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Altairis|&lt;br /&gt;
profid=|&lt;br /&gt;
partner=yes|&lt;br /&gt;
desc=Développements spécifiques, Installation, Formation, Accompagnement à la mise en oeuvre, Support, Intégration.|&lt;br /&gt;
web=http://www.altairis.fr|&lt;br /&gt;
email=contact@altairis.fr|&lt;br /&gt;
zip=38570|&lt;br /&gt;
town=Goncelin|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Auguria Conseil|&lt;br /&gt;
partner=yes|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=You are a Small Business, a very small firm, you need tools to increase profitability, and reliability facing competition. Auguria aims to help you develop the tools of information vectors of progress.|&lt;br /&gt;
web=http://www.auguria.net/|&lt;br /&gt;
email=contact@auguria.net|&lt;br /&gt;
zip=44300|&lt;br /&gt;
town=Nantes|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Atoo.Net|&lt;br /&gt;
partner=yes|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Installation et configuration de l&#039;ERP/CRM Dolibarr soit sur nos serveurs, soit en local dans votre entreprise. Aide à la prise en main et formation.|&lt;br /&gt;
web=http://www.atoo-net.com/|&lt;br /&gt;
email=contact@atoo-net.com|&lt;br /&gt;
zip=45160|&lt;br /&gt;
town=Olivet|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Blue-Click Informatique|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Nous proposons l&#039;installation et la configuration de l&#039;ERP/CRM Dolibarr dans votre entreprise ou sur votre hébergement Internet. De plus nous assurons la formation pour la prise en main de cet outil adapté aux TPE et PME.|&lt;br /&gt;
web=http://www.blue-click.fr|&lt;br /&gt;
email=|&lt;br /&gt;
zip=92,78|&lt;br /&gt;
town=Nanterre,Plaisir|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=CAP-REL|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Après avoir contribué au code de dolibarr dans les années 2004-2005 et l&#039;avoir utilisé en interne pour de nombreux projets depuis cette époque je propose maintenant un service autour de Dolibarr (adaptation, accompagnement, utilisation etc.).|&lt;br /&gt;
web=https://www.cap-rel.fr|&lt;br /&gt;
email=eric.doli@cap-rel.fr|&lt;br /&gt;
zip=30|&lt;br /&gt;
town=Département du Gard|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=Logo_cap-rel.png‎|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Caribbean Consult CCC|&lt;br /&gt;
partner=yes|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Installation, configuration de l&#039;ERP/CRM Dolibarr en ligne, ou en local pour votre entreprise ou association. Migration de données vers Dolibarr. Prise en main, support et formation.|&lt;br /&gt;
web=https://dolibarr.ccc.gp|&lt;br /&gt;
email=support@caribbeanconsult.com|&lt;br /&gt;
zip=97180|&lt;br /&gt;
town=Sainte Anne (Guadeloupe et Martinique) Antilles Guyane|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=Logo_CCC.png‎|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Cergy Internet|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Cergy Internet est spécialisé dans l’informatique et plus spécifiquement dans l’internet pour les PMI/PME. Nous maitrisons les technologies digitales du simple site web jusqu’au portail complète de pilotage d’entreprise. Grâce à Dolibarr nous pouvons vous donner une vision unique sur vos clients, vos produits et même votre trésorerie. Nous lions Dolibarr avec Wordpress et sur Smartphones pour créer des portails pour vos clients. Notre directeur, Thomas Carter, a fait son MBA à MIT aux USA et a géré des entreprises de plus de 100 personnes. Il met cette expérience à votre disposition. Chez Cergy Internet nous maitrisons la technologie de boute en boute. Nous avons notre propre équipe de jeunes codeurs qui baignent dans tous qui est réseaux sociaux, applications iPhone etc. ainsi qu’une plateforme de 30 serveurs pour héberger vos sites. |&lt;br /&gt;
web=www.cergy-internet.fr|&lt;br /&gt;
email=mailto:thomas.carter@cergy-internet.fr|&lt;br /&gt;
zip=95300|&lt;br /&gt;
town=Cergy-Pontoise|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Code 42|&lt;br /&gt;
partner=yes|&lt;br /&gt;
profid=793 600 735 00021|&lt;br /&gt;
desc=Nous vous accompagnons dans l’installation  et le développement de votre outil informatique. Code 42, c’est avant tout une démarche qualité et de conseil pour une relation durable. Vous avez la vision de votre entreprise, nous avons les moyens.|&lt;br /&gt;
web=www.code42.fr|&lt;br /&gt;
email=mailto:lareponse@code42.fr|&lt;br /&gt;
zip=44100|&lt;br /&gt;
town=NANTES|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=D-BOG|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=IT services company located in Beaune (21), moved around Dolibarr:&lt;br /&gt;
Installation, setup, configuration on the internal server or hosted;&lt;br /&gt;
Training agreement;&lt;br /&gt;
Outsourcing, on-site maintenance and remote.|&lt;br /&gt;
web=http://www.d-bog.com/|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=Beaune|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=DiVA-Cloud|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=DiVA-Cloud propose des applications OpenSource de gestion de la communication et de l&#039;information pour les entreprises. Notre logithèque contient des applications de WebConference, ERP, CRM, CMS, GED, et bien d&#039;autres... Toutes ces applications pré-configurés sont mises à disposition sur un environnement privé. |&lt;br /&gt;
web=www.diva-cloud.com |&lt;br /&gt;
email=mailto:contact@diva-cloud.com |&lt;br /&gt;
zip=81100|&lt;br /&gt;
town=Castres|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Elonet|&lt;br /&gt;
partner=yes|&lt;br /&gt;
profid=SIRET:52511620800022|&lt;br /&gt;
desc=Elonet a créé dolimail.fr , un outil qui permet de savoir quand, par qui, et quelles pages de vos fichiers PDF (devis, commande, facture) sont parcourus par vos prospects, clients ou fournisseur. Elonet est également intégrateur et développeur de solutions pour Dolibarr.|&lt;br /&gt;
web=https://elonet.fr|&lt;br /&gt;
email=mailto:contact@elonet.fr|&lt;br /&gt;
zip=59000|&lt;br /&gt;
town=LILLE|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=Elonet.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=FUTUR TECH|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Prestataire de services pour artisans, TPE, PME :&lt;br /&gt;
Solutions open source, Internet, Sécurité, Sauvegarde, Antivirus, Gestion d&#039;entreprise, Conseil, Formation, Installation et Paramétrage&lt;br /&gt;
Intervention sur site client. Situé entre Bordeaux et Libourne|&lt;br /&gt;
web=http://www.futur-tech.com|&lt;br /&gt;
email=mailto:info@futur-tech.com|&lt;br /&gt;
zip=33450|&lt;br /&gt;
town=IZON|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Groupe KM|&lt;br /&gt;
profid=790 885 388 00013|&lt;br /&gt;
desc=Intégrateur,développeur et hébergeur de solutions Open Source: Progiciel ERP/CRM (Dolibarr),CMS(Joomla)et e-commerce(Prestashop).&amp;lt;br&amp;gt;Nous déployons aussi des solutions Téléphonie (VOIP, PABX...) et Accés Internet (ADSL/VDSL, SDSL...).&amp;lt;br&amp;gt;&lt;br /&gt;
Secteur Cannes, Antibes, Sophia-Antipolis, Carros, Nice et plus généralement toutes les Alpes-Maritimes.&amp;lt;br&amp;gt;&lt;br /&gt;
Notre objectif : Vous satisfaire!|&lt;br /&gt;
web=https://www.groupe-km.com|&lt;br /&gt;
email=mailto:contact@groupe-km.com|&lt;br /&gt;
zip=06220|&lt;br /&gt;
town=Vallauris|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=GWARED|&lt;br /&gt;
profid=804 659 027 00036|&lt;br /&gt;
desc=La société GWARED, est une équipe diplômée dans le domaine de l’informatique, de plus de 10 ans d’expériences dans diverses structures telles que de grandes administrations, sociétés privées mais aussi au service des particuliers. Nous sommes à l’écoute pour vous accompagner dans vos projets.&lt;br /&gt;
&lt;br /&gt;
Professionnel ou particulier, nous vous proposons de nombreux services informatiques et domotiques adaptés à votre configuration et vos besoins. Nos prestations concernent la réparation et la maintenance de votre ordinateur ou de votre parc informatique, l&#039;installation réseau (Local informatique, Internet, intranet, Wifi, CPL, etc.), l&#039;installation d’alarmes et vidéo-surveillance, sur site, à distance ou à domicile.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notre société se distingue en trois branches :&lt;br /&gt;
&lt;br /&gt;
- L’informatique (GWARED)&lt;br /&gt;
- La sécurité (alarme, vidéosurveillance et protection numérique) (GWARDSECURITY)&lt;br /&gt;
- Les jeux vidéo (concepteur de console de jeux) (GWARDBOX)&lt;br /&gt;
&lt;br /&gt;
Nous pourrons répondre à tous vos besoins dans le domaine de l’informatique.|&lt;br /&gt;
web=http://www.gwared.fr|&lt;br /&gt;
email=[mailto:support@gwared.fr?subject=Contact%20de%20Dolibarr%20Suppliers%20France support@gwared.fr]|&lt;br /&gt;
zip=77500|&lt;br /&gt;
town=Chelles et Île de France|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=Logo_Gwared.png|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=HELIUM TECHNOLOGIES|&lt;br /&gt;
profid=494 895 360 00027|&lt;br /&gt;
partner=yes|&lt;br /&gt;
desc=&lt;br /&gt;
Mise en place de solutions ERP Dolibarr sur nos serveurs ou dans votre entreprise avec assistance téléphonique, support technique, développement de modules spécifiques et formation.&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;SSII basée en Guadeloupe, Martinique et Guyane&#039;&#039;&#039;, nous proposons également des solutions libres comme GLPI, Prestashop, Joomla, Odoo, Zimbra, BlueMind, Centreon, ...|&lt;br /&gt;
web=http://|&lt;br /&gt;
email=[mailto:contact@helium-technologies.com?subject=Contact%20from%20Dolibarr%20Suppliers%20France20page contact@helium-technologies.com]|&lt;br /&gt;
zip=97122|&lt;br /&gt;
town=BAIE-MAHAULT (GUADELOUPE)|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=Logo_HeliumTechnologies.jpg&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Infonel.net|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=administrateur système open source indépendant:&lt;br /&gt;
Installation, paramétrage, configuration et sécurisation de dolibarr sur site client|&lt;br /&gt;
web=http://www.infonel.net|&lt;br /&gt;
email=|&lt;br /&gt;
zip=11100|&lt;br /&gt;
town=Narbonne|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=iNodbox|&lt;br /&gt;
partner=yes|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Développeur indépendant d&#039;application web, paramétrage et installation de Dolibarr, développement de modules spécifique. Basé dans l&#039;Ain à Bourg en Bresse (30min de Mâcon, 1h de Chalon sur Saône, 1h de Lyon), je contribue depuis de nombreuses années au développement de Dolibarr.|&lt;br /&gt;
web=https://www.inodbox.com/|&lt;br /&gt;
email=regis.houssin@inodbox.com|&lt;br /&gt;
zip=01000|&lt;br /&gt;
town=Bourg en Bresse|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=(https://www.inodbox.com)|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Inovea Conseil|&lt;br /&gt;
partner=yes|&lt;br /&gt;
profid=797 613 072 00017|&lt;br /&gt;
desc=Développeur, Intégrateur, Hébergeur et Formateur de Dolibarr pour TPE - PME | &lt;br /&gt;
web=https://www.inovea-conseil.com/ |&lt;br /&gt;
email=https://www.inovea-conseil.com/contact/ |&lt;br /&gt;
zip=88,54,75|&lt;br /&gt;
town=Nancy|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=Inoveaconseil.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=i.d &amp;amp; l|&lt;br /&gt;
profid=521 749 994 00013|&lt;br /&gt;
desc=Conseil et intégration de solutions logicielles libres, dont Dolibarr, pour artisans, TPE, indépendants, commerçants, PME, associations...|&lt;br /&gt;
web=http://idl-mp.com|&lt;br /&gt;
email=http://idl-mp.com/contact/|&lt;br /&gt;
zip=31,32,09,82,81|&lt;br /&gt;
town=Toulouse et région toulousaine|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=iouston informatique|&lt;br /&gt;
profid=792 353 005 00046|&lt;br /&gt;
desc=iouston informatique, situé à proximité de Nancy, Metz, Lunéville, est spécialisée auprès des associations, des TPE et des artisans commerçants. Nous installons et configurons dolibarr pour vous et nous formons vos équipes à son utilisation quotidienne. Nous proposons de nombreux autres services, associés ou non à dolibarr. Nous travaillons avec dolibarr depuis plus de 6 ans et éditons des modules supplémentaires pour dolibarr, [https://www.dolistore.com/fr/recherche?controller=search&amp;amp;orderby=position&amp;amp;orderway=desc&amp;amp;search_query=iouston&amp;amp;submit_search= disponibles sur dolistore]|&lt;br /&gt;
web=https://www.iouston.com|&lt;br /&gt;
email=allo@iouston.com|&lt;br /&gt;
zip=54370|&lt;br /&gt;
town=Einville au Jard|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=ISYNUX|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Société de services en réseaux et sytèmes. ISYNUX vous propose un suivi complet pour DOLIBARR : installation, hébergement, personnalisation de vos modèles de document, formation à la carte. |&lt;br /&gt;
web=http://www.isynux.fr|&lt;br /&gt;
email=mailto:formation@isynux.fr|&lt;br /&gt;
zip=626100|&lt;br /&gt;
town=Ardres|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Jeffinfo (ZenDSI)|&lt;br /&gt;
profid=429 625 973|&lt;br /&gt;
partner=yes|&lt;br /&gt;
desc=Jeffinfo est une société de services en informatique qui vous sert depuis plus de 15 ans dont 10 ans dans le domaine de Dolibarr. Implanté dans le nord à Ennetières en Weppes. Nous sommes à vos services pour vous proposer tous les services autour de votre ERP préféré.&lt;br /&gt;
web=https://shop.zendsi.com|&lt;br /&gt;
email=mailto:contact@zendsi.com|&lt;br /&gt;
zip=59320|&lt;br /&gt;
town=Ennetières en Weppes|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Kreiz IT|&lt;br /&gt;
partner=yes|&lt;br /&gt;
profid=	752 505 131 00017|&lt;br /&gt;
desc={{Flag_fr}}Conseils en organisation et sécurité informatique pour les TPE / PME. Dolibarr fait partie des outils informatiques structurants pour les TPE/PME proposé par Kreiz IT.&lt;br /&gt;
&lt;br /&gt;
{{Flag_en}}IT management and security consultant for small to medium business. Dolibarr is part of IT&#039;s structuring tools for business used by Kreiz IT. |&lt;br /&gt;
web=http://www.kreiz-it.fr |&lt;br /&gt;
email=mailto:contact@kreiz-it.fr |&lt;br /&gt;
zip=56600|&lt;br /&gt;
town=Lanester|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=LogoKIT.jpg&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=LIBRE EXPERT|&lt;br /&gt;
partner=no|&lt;br /&gt;
profid=48879200300045|&lt;br /&gt;
desc={{Flag_fr}}Intégrateur et développeur Dolibarr, auteur de plusieurs modules complémentaires, spécialiste également de l&#039;administration Linux.&lt;br /&gt;
&lt;br /&gt;
{{Flag_en}}&lt;br /&gt;
Integrator and Dolibarr developer, author of several complementary modules, also specialist in Linux administration. |&lt;br /&gt;
web=http://www.libre-expert.com|&lt;br /&gt;
email=mailto:contact@libre-expert.com |&lt;br /&gt;
zip=63100|&lt;br /&gt;
town=Clermont-Ferrand|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Librethic|&lt;br /&gt;
partner=yes|&lt;br /&gt;
profid=83334801400014|&lt;br /&gt;
desc={{Flag_fr}}Librethic est une Société de Services en Informatique et Technologies Libres, tournée vers les entreprises et les associations. Créée en 2017, elle est portée par des professionnels aguerris aux technologies libres et open source. &lt;br /&gt;
L&#039;environnement Dolibarr fait partie du cœur de compétences de Librethic (développement de modules complémentaires, hébergement SaaS, hébergement sur site, passerelle e-commerce).&lt;br /&gt;
{{Flag_en}}&lt;br /&gt;
Librethic is an IT Provider aiming at businesses and organizations, offering services in free/libre and open source software (FLOSS) and open design technologies. &lt;br /&gt;
Founded in 2017, Librethic is driven by libre and open source technologies seasoned professionals. Dolibarr&#039;s environment is one of Librethic&#039;s core skills (Addons and plugins development, SaaS hosting, on-premise hosting, e-commerce gateway).&lt;br /&gt;
web=https:/librethic.io/|&lt;br /&gt;
email=mailto:hello+dolibarr@librethic.io|&lt;br /&gt;
zip=34070|&lt;br /&gt;
town=Montpellier|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=logo-librethic.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=LVS Informatique|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Development Specialist php, mysql. Creation, enhancement, customization of modules and components ...&lt;br /&gt;
Nos modifs/nos modules :&lt;br /&gt;
-cashdesk : prix en ttc, possibilité de modification du prix, du libellé...&lt;br /&gt;
-interfaçage avec GoogleAgenda (toutes les actions apparaissent dans GoogleAgenda)&lt;br /&gt;
-Mails/Télécopies reçus : apparaissent dans un onglet spécifique sur le tiers en question&lt;br /&gt;
-qualification Tiers&lt;br /&gt;
-Adresse Tiers vu dans GoogleMap&lt;br /&gt;
-creation de nbreux template excel/pdf&lt;br /&gt;
|&lt;br /&gt;
web=http://www.lvsinformatique.com|&lt;br /&gt;
email=|&lt;br /&gt;
zip=83860|&lt;br /&gt;
town=NANS LES PINS|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=MEDIALTA|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Installation, configuration de Dolibarr sur nos serveurs, ou dans l&#039;entreprise (Nancy, Metz, Lorraine, Grand Est). Formation, prise en main. Développement de modules sur mesure.|&lt;br /&gt;
web=www.medialta.com|&lt;br /&gt;
email=|&lt;br /&gt;
zip=54340|&lt;br /&gt;
town=Pompey|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Mephivio|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Services company with a computer located in Montpellier agglo, specializing in computer graphics, secretariat, Joomla web sites, client, opensource (Dolibarr, glpi, voip Elastix / Trixbox / PIAF etc ...)|&lt;br /&gt;
web=http://www.mephivio.fr/|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=|&lt;br /&gt;
country=fr|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=MEZIANT|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=MEZIANT propose aux PME, TPE, artisans, commerçants et associations de l&#039;Ouest son expertise en informatique issue d&#039;une expérience de plus de 15 ans en Audit de Système d&#039;Informations,  Site internet, Formation et Choix de logiciel de gestion (ERP) comme &#039;&#039;&#039;DOLIBARR&#039;&#039;&#039; dont elle peut assurer l’installation, la formation ou encore le développement de modules spécifiques sur site client.&lt;br /&gt;
web=http://www.meziant.fr |&lt;br /&gt;
email=mailto:contact@meziant.fr |&lt;br /&gt;
zip=22940|&lt;br /&gt;
town=PLAINTEL (Bretagne - France)|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Modulaweb : Technologies modulables orientées web.|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Développement d&#039;applicatifs web, hébergement d&#039;applications web, serveurs de fichiers et de sauvegarde, sites internet/intranet et intégration web, espaces clients, communication via internet (VoIP, messagerie instantanée), travail collaboratif. Spécialiste solutions libres pour l&#039;entreprise (Zimbra, Dolibarr, Thaïs...) Région Languedoc-Rouissillon et voisines |&lt;br /&gt;
web=http://www.modulaweb.fr|&lt;br /&gt;
email=http://www.modulaweb.fr/portail/contact/|&lt;br /&gt;
zip=34000|&lt;br /&gt;
town=Montpellier|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Net Logic|&lt;br /&gt;
partner=yes|&lt;br /&gt;
profid=SIRET: 477 583 264 00023|&lt;br /&gt;
desc=Installation et configuration de l&#039;ERP/CRM Dolibarr sur nos serveurs, ou en local dans votre entreprise. Paramétrage, personnalisation, reporting spécifique, assistance.|&lt;br /&gt;
web=http://www.netlogic.fr/|&lt;br /&gt;
email=info@netlogic.fr|&lt;br /&gt;
zip=93160|&lt;br /&gt;
town=Noisy-le-Grand|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=NLTechno|&lt;br /&gt;
partner=yes|&lt;br /&gt;
desc=NLTechno is one of the most important contributor on Dolibarr and can host for you a Dolibarr database in a SaaS (Software As A Service) mode.|&lt;br /&gt;
profid=493 861 496 00021|&lt;br /&gt;
web=http://www.nltechno.com|&lt;br /&gt;
email=|&lt;br /&gt;
zip=92500|&lt;br /&gt;
town=Boulogne Billancourt|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes (https://www.dolicloud.com)|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=only for DoliCloud.com customers|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=no|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
logo=logo_nltechno.png}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=NORD ERP CRM|&lt;br /&gt;
partner=no|&lt;br /&gt;
profid=83184221600010 (SIRET)|&lt;br /&gt;
desc=Intégration, assistance, formation et hébergement de solutions Dolibarr. Nous intervenons auprès des artisans, indépendants, TPE et associations dans le Nord Pas-de-Calais. Développement possible selon les spécificités métier. NORD ERP CRM accompagne également les commerçants pour leur système d&#039;encaissement.|&lt;br /&gt;
web=https://www.nord-erp-crm.fr/|&lt;br /&gt;
email=mailto:contact@nord-erp-crm.fr|&lt;br /&gt;
zip=59100|&lt;br /&gt;
town=Roubaix|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=logonewcouleur.jpg|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=OAS-SERVICES|&lt;br /&gt;
profid=829767904|&lt;br /&gt;
partner=no|&lt;br /&gt;
desc=&lt;br /&gt;
OAS-SERVICES est une société de service spécialisés dans la mise en place de logiciels libres sous forme de services cloud, notamment de Ma Gestion Cloud (Dolibarr, viger), la mise en place de site internet et boutique en lignes, le développement d&#039;application et de modules en PHP (Dolibarr, Wordpress, Prestashop), mais aussi en Java (JEE, Webservices, JPA), la mise en place de systèmes d&#039;exploitation (linux), la gestion de projet en agilité - Montpellier, Sète|&lt;br /&gt;
web=https://www.ma-gestion-cloud.fr|&lt;br /&gt;
email=[mailto:contact@oas-services.fr?subject=Contact%20from%20Dolibarr%20Suppliers%20France20page contact@oas-services.fr]|&lt;br /&gt;
zip=34200|&lt;br /&gt;
town=SETE|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
logo=logo-oas-services.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=OPEN-DSI|&lt;br /&gt;
partner=yes|&lt;br /&gt;
profid=SIRET:75130522800015|&lt;br /&gt;
desc=Depuis 2012, nous accompagnons les petites et moyennes structures (1 à 50 salariés) dans la mise en place de solutions basées sur les logiciels libres. Nous proposons Dolibarr pour tous les besoins de gestion.|&lt;br /&gt;
web=https://www.open-dsi.fr|&lt;br /&gt;
email=mailto:infos@open-dsi.fr|&lt;br /&gt;
zip=69,38,01,42|&lt;br /&gt;
town=LYON|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=opendsi.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=OIS - Open IT Store|&lt;br /&gt;
profid=822 430 419 00017|&lt;br /&gt;
desc=OIS (Open IT Store), We provide opensource instances located in Europe or North America.|&lt;br /&gt;
web=https://openitstore.com/dolibarr|&lt;br /&gt;
email=mailto:contact@openitstore.com|&lt;br /&gt;
zip=|&lt;br /&gt;
town=|&lt;br /&gt;
country=|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=no|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Oscss Shop|&lt;br /&gt;
partner=yes|&lt;br /&gt;
profid=SIRET:810 421 339 00013|&lt;br /&gt;
desc=Développement de modules sur mesure, interconnexions  et hébergements.|&lt;br /&gt;
web=http://oscss-shop.fr|&lt;br /&gt;
email=mailto:support@oscss-shop.fr|&lt;br /&gt;
zip=28,45,41,72,61,27,75,69,38,01,73,74|&lt;br /&gt;
town=LA LOUPE|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Pascal Sené|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Logiciels libres et photographie.|&lt;br /&gt;
web=http://www.pascalsene.com|&lt;br /&gt;
email=contact@pascalsene.com|&lt;br /&gt;
zip=22,29,35,56|&lt;br /&gt;
town=Lannion|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Patas-Monkey|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Conseil, formation, développement et modules| &lt;br /&gt;
web=http://www.patas-monkey.com|&lt;br /&gt;
email=r.deschamps@patas-monkey.com|&lt;br /&gt;
zip=69,42,38,01,83|&lt;br /&gt;
town=Lyon|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=Patasmonkey.jpg&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=ProbeSys|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Créée en 2003 par des passionnés du logiciel libre, [http://probesys.com ProbeSys] est une entreprise coopérative à l&#039;image du secteur des nouvelles technologies : dynamique, réactive et participative. |&lt;br /&gt;
web=http://www.probesys.com|&lt;br /&gt;
email=mailto:contact@probesys.com|&lt;br /&gt;
zip=38600|&lt;br /&gt;
town=Fontaine|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Pro IP|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Mise en place de solutions ERP comme Dolibarr sur nos serveurs ou dans votre entreprise, assistance et formation|&lt;br /&gt;
web=http://wwww.proip.fr|&lt;br /&gt;
email=mailto:contact@proip.fr|&lt;br /&gt;
zip=62129|&lt;br /&gt;
town=Clarques|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=PTMSoft SARL|&lt;br /&gt;
profid=520 618 646 00019|&lt;br /&gt;
desc=Société de services et de développement logiciel. Installation Dolibarr sur nos serveurs ou dans votre entreprise, assistance et configuration.|&lt;br /&gt;
web=http://www.ptmsoft.fr|&lt;br /&gt;
email=[mailto:contact@ptmsoft.fr?subject=Contact%20de%20la%20page%20Dolibarr%20Suppliers%20France contact@ptmsoft.fr]|&lt;br /&gt;
zip=68890|&lt;br /&gt;
town=Mulhouse, Colmar|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
logo=Logo PTMSoft.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Syllene|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=We install and configure the software Dolibarr to suit your needs and train your users. We can also provide hosting and maintenance of your application.|&lt;br /&gt;
web=http://www.syllene.net/|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Teclib&#039;|&lt;br /&gt;
profid=513893503|&lt;br /&gt;
partner=yes|&lt;br /&gt;
desc=&lt;br /&gt;
Teclib est une société de services en informatique au capital de 400 000€. Implantés à Paris, Colmar (Alsace), Caen, Chartres (Région Centre) et Bordeaux (Aquitaine). L&#039;équipe Teclib&#039; rassemble une quarantaine de personnes spécialisées dans l&#039;intégration, hébergement et développements de logiciels libres tels que Dolibarr, Odoo, GLPI, Zimbra, BlueMind, Nagios, Centreon, ... |&lt;br /&gt;
web=http://www.teclib.com|&lt;br /&gt;
email=[mailto:contact@teclib.com?subject=Contact%20from%20Dolibarr%20Preferred%20Partners%20page contact@teclib.com]|&lt;br /&gt;
zip=75001|&lt;br /&gt;
town=Paris|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=Logo_Teclib.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Tiaris|&lt;br /&gt;
partner=yes|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Solutions and services for small businesses and merchants: e-commerce, maintenance, ERP/CRM Dolibarr, development telecommuting. ecommerce - dolibarr webservice based interface. Saas Offer Dolibarr + ecommerce connection for open source caddies (OsCommerce, Zencart, Crelaoded, Prestashop and others...)|&lt;br /&gt;
web=http://www.tiaris.fr/|&lt;br /&gt;
email=http://www.tiaris.fr/spip.php?page=contact|&lt;br /&gt;
zip=57870|&lt;br /&gt;
town=WALSCHEID|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=UTOPSYS -  L&#039;Informatique, Professionnelle.|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Maintenance, dépannage, conseil, audits, Green IT, solutions open-source de travail collaboratif, installation et maintenance Dolibarr. Bordeaux, CUB, Libourne.|&lt;br /&gt;
web=http://www.utopsys.fr|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=Libourne|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=YON - Your Own Net|&lt;br /&gt;
profid=822 430 419 00017|&lt;br /&gt;
desc=YON (Your Own Net), Fournisseur de solution numérique, Nous sommes spécialisés dans la fourniture de solutions informatiques pour les professionnelles et les particuliers. Nos solutions vont de l’intégration d’outils Open Source et de logiciels libres à l&#039;hébergement de logiciels.|&lt;br /&gt;
web=http://yourownnet.net/|&lt;br /&gt;
email=mailto:contact@yourownnet.net|&lt;br /&gt;
zip=79|&lt;br /&gt;
town=Niort et Grand Ouest|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=WEBINFOPRO|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Society Computers and Internet service for small businesses located in the suburbs west of Paris. One of the main activities is the integration of open source software.|&lt;br /&gt;
web=http://www.webinfopro.fr/|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Z-Application|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Développement personnalisé et assistance à la installation-migration. Support sur site possible dans le département Manche (50).|&lt;br /&gt;
web=https://www.z-application.com/|&lt;br /&gt;
email=|&lt;br /&gt;
zip=50250|&lt;br /&gt;
town=Coutances - Cherbourg - Saint-Lô|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Setup_Other&amp;diff=41887</id>
		<title>Setup Other</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Setup_Other&amp;diff=41887"/>
		<updated>2019-07-17T08:38:02Z</updated>

		<summary type="html">&lt;p&gt;Iouston: add hidden options of v10.0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Admin]]&lt;br /&gt;
{{TemplateDocUser}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Help About Screen:&#039;&#039;&#039; Other setup&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Menu Path:&#039;&#039;&#039; Home ► Setup ► Other&lt;br /&gt;
&lt;br /&gt;
= &#039;&#039;&#039;Goal&#039;&#039;&#039; =&lt;br /&gt;
This page contains the list of advanced hidden parameters. In most cases, it is parameters for development, external modules, or hidden features which can allow some tweaking to your own Dolibarr instance.&lt;br /&gt;
&lt;br /&gt;
For standard usage of Dolibarr, this parameters must not be used.&lt;br /&gt;
&lt;br /&gt;
= &#039;&#039;&#039;Reading the List&#039;&#039;&#039; =&lt;br /&gt;
After Global Options, this list is sorted alphabetically.  The basic format of how the list is written is broken down in the example below:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HIDDEN_CONFIG&#039;&#039;&#039; ► &#039;&#039;Description of config&#039;&#039; ► &#039;&#039;(specific version information) or values&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= &#039;&#039;&#039;List of Known Hidden Options&#039;&#039;&#039; =&lt;br /&gt;
Some options are not visible in the interface (often because they are deprecated or are beta features). In most cases you do not need these functions and their use may make the application unstable.&lt;br /&gt;
&lt;br /&gt;
To enable/override a parameter you have to define the constant name and set it to &#039;&#039;&#039;1&#039;&#039;&#039; (unless otherwise stated) in &amp;lt;code&amp;gt;Home ► Setup -&amp;gt; Other Setup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Global Options&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_DISABLE_NOTES_TAB&#039;&#039;&#039; ►Show or hide notes tab in the card page&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_DISABLE_CONTACTS_TAB&#039;&#039;&#039; ► Show or hide contacts tab in the card page&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_LOGOUT_GOTO_URL&#039;&#039;&#039; ► URL to which the user will be redirected after LOGOUT&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_FILESYSTEM_ENCODING&#039;&#039;&#039; ► With some PHP versions, PHP is not able to detect the page code for filesystem of the server OS. To solve this, Dolibarr assumes your OS filesystem is UTF-8 if on Linux or OSX system, and ISO-8859-1 if on Windows. If not, for example on a Windows server with a NTFS UTF-8 pagecode, you can set the variable &amp;lt;code&amp;gt;MAIN_FILESYSTEM_ENCODING&amp;lt;/code&amp;gt; to &amp;quot;&amp;lt;code&amp;gt;utf-8&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_SHOW_TECHNICAL_ID&#039;&#039;&#039; ► Show also technical IDs on elements cards or some lists (not supported everywhere).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_MAXTABS_IN_CARD&#039;&#039;&#039; ► Maximum number of tabs visible. Others are grouped into a combo list.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_ONLY_LOGIN_ALLOWED&#039;&#039;&#039; ► Only the specified login is allowed to log in Dolibarr (maintenance mode).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_AUTO_TIMESTAMP_IN_PUBLIC_NOTES&#039;&#039;&#039; ► Add a timestamp and user automatically when editing the &#039;&#039;public&#039;&#039; note.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_AUTO_TIMESTAMP_IN_PRIVATE_NOTES&#039;&#039;&#039; ► Add a timestamp and user automatically when editing the &#039;&#039;private&#039;&#039; note.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_SECURITY_CSRF_WITH_TOKEN&#039;&#039;&#039; ► Activate a second anti-CSRF protection on POST (a POST from another web site can&#039;t be done). Note there is already a default protection using test on referrer. This second protection uses TOKEN on forms and is less powerful. ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_APPLICATION_TITLE&#039;&#039;&#039; ► This will change the title of software (that appears on the login page by default). Warning, changing this may make Dolibarr version detection fail by smartphone applications like [[Application Android - DoliDroid]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_AUTOFILL_DATE&#039;&#039;&#039; ► If this constant is defined (to something other than 0), the date of invoice, proposal, order or payment are auto-filled with the current date. It is highly recommended to NOT ENABLE this feature. This can create a lot of input errors with data not validated by users. This leads to incorrect values saved in the database causing confusion when you have to do your accountancy reports! However some users want it, so we provide it.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_DISABLE_FULL_SCANLIST&#039;&#039;&#039; ► Disables the complete scan of tables to allow the pagination to show total number of pages. May be useful to activate on systems with a very high quantity of data (tables with more than 500 000 records).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_FIRST_TO_UPPER&#039;&#039;&#039; ► Dolibarr add uppercase to Third Parties, contacts or members names if not done. Warning, with some languages (whose words with uppercase are not same words, or pagecode does not always have an uppercase, like cyrillic languages), this feature may alter your data.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_ENABLE_LOG_TO_HTML&#039;&#039;&#039; ► If this constant is defined, it is possible to have logs inside pages by adding the parameter &amp;amp;logtohtml=1 into URL.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_USE_HOURMIN_IN_DATE_RANGE&#039;&#039;&#039; ► On all entities lines (invoice, order, contract...), it is possible to add hour and minutes with date on fields &amp;quot;date start&amp;quot; and &amp;quot;date end&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_REMOVE_INSTALL_WARNING&#039;&#039;&#039; ► Remove all security warnings that appear to administrator users if URL &amp;lt;code&amp;gt;/install&amp;lt;/code&amp;gt; is public. You should solve the problem if warning occurs, instead of removing the warning! For this, create a file called &amp;lt;code&amp;gt;install.lock&amp;lt;/code&amp;gt; into Dolibarr root directory. This will stop the warning but also make the page &amp;lt;code&amp;gt;/install&amp;lt;/code&amp;gt; not possible to use, to protect your installation.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_OPTIMIZE_SPEED&#039;&#039;&#039; ► Use some speed enhancements. See page [[Increase_Performance]] for more information.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_REPLACE_TRANS_xx_XX&#039;&#039;&#039; ► Where &amp;lt;code&amp;gt;xx_XX&amp;lt;/code&amp;gt; is language code. If value is &amp;lt;code&amp;gt;string1:newstring1;string2:newstring2&amp;lt;/code&amp;gt; then replace &amp;lt;code&amp;gt;string1&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;newstring1&amp;lt;/code&amp;gt; in all translation done for language &amp;lt;code&amp;gt;xx_XX&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_REPEATCONTACTONEACHTAB&#039;&#039;&#039; ► If added and set to &#039;&#039;&#039;1&#039;&#039;&#039;, this adds contacts on all tabs, not only main tab.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_DISABLE_JQUERY_JNOTIFY&#039;&#039;&#039; ► Disable usage of &amp;lt;code&amp;gt;JNotify&amp;lt;/code&amp;gt; to show confirm or error messages&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_USE_JQUERY_JEDITABLE&#039;&#039;&#039; ► Allow to update from screen, directly into database, some properties of elements (invoices, proposals, ...) using Ajax. This make response time faster, but avoid using this feature, because it bypasses some business actions (updates on other data that should be done consistently) and ignores business controls on data you saved. Consequently this feature breaks consistency of data and possibly the stability of the software.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_USE_JQUERY_MULTISELECT&#039;&#039;&#039; ► Allow to use Ajax when a choice that require multiselect is used (for the moment only external modules uses select box with multiselect values). Set the value to the jQuery plugin name to use (multiselect, multiple-select, select2…). Setting it to any other value will result in unwanted side-effects and/or bugs.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_HELPCENTER_LINKTOUSE&#039;&#039;&#039;  ► Define the URL link to use as the target page for link &amp;quot;I need help&amp;quot; onto logon page&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_MODULES_FOR_EXTERNAL&#039;&#039;&#039; ► Limit available modules for external users. By default value is &#039;&amp;lt;code&amp;gt;facture,commande,contact,propal,projet,contrat,societe,ficheinter,expedition,agenda&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_SHOW_TUNING_INFO&#039;&#039;&#039; ► Add tuning information into javascript console. Better when xdebug is enabled.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_DOL_SCRIPTS_ROOT&#039;&#039;&#039; ► Define directory who contains &#039;scripts&#039; directory (e.g. &amp;lt;code&amp;gt;/var/www/dolibarr&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING&#039;&#039;&#039; ► A warning saying setup of modules is not complete is shown if the number of enabled modules is lower or equal than this value (1 if not defined)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_ADD_SALE_REP_SIGNATURE_IN_NOTE&#039;&#039;&#039; ► Add signature of the first sale representative into documents (at end of public notes).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_DISABLE_AJAX_COMBOX&#039;&#039;&#039; ► If you have a large number of third parties or products, you can disable the autocomplete feature on the third parties list by setting this constant to &#039;&#039;&#039;1&#039;&#039;&#039; ► (v3.6.0+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_USE_CACHE_MANIFEST&#039;&#039;&#039; ► Add an HTML5 cache manifest to the page - Attention, this functionality is obsolete and removed from web standards&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_FORCELANGDIR&#039;&#039;&#039; ► Relative path of the directory holding your custom &amp;lt;code&amp;gt;langs&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_VAT_DEFAULT_IF_AUTODETECT_FAILS&#039;&#039;&#039; ► Allow to define a default VAT rate&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_HTML_TITLE&#039;&#039;&#039; ► Can be used to control how the html page title is formatted. If value contains key &#039;&amp;lt;code&amp;gt;noapp&amp;lt;/code&amp;gt;&#039;, application name will not be output. If value contains &#039;&amp;lt;code&amp;gt;thirdpartynameonly&amp;lt;/code&amp;gt;&#039;, on tab for thirdparties, only name of thirdparties are output. Value can be list of tags: &#039;&amp;lt;code&amp;gt;noapp;thirdpartynameonly&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_LANDING_PAGE&#039;&#039;&#039; ► Can choose the first page to show after login (the landing page). This option works as a global option (llx_const) and per user option (llx_user_param). ► (v3.9+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_PROPAGATE_CONTACTS_FROM_ORIGIN&#039;&#039;&#039; ► When creating an order, contract, invoice from another object, specific contacts of objects are set as specific contact of the new object when possible. ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_WEIGHT_DEFAULT_ROUND&#039;&#039;&#039; ► Accuracy of weight (number of decimals)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_WEIGHT_DEFAULT_UNIT&#039;&#039;&#039; ► Default unit for weight (0=kg, -3=g, ...)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_VOLUME_DEFAULT_ROUND&#039;&#039;&#039; ► Accuracy of volume (number of decimals)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_VOLUME_DEFAULT_UNIT&#039;&#039;&#039; ► Default unit for weight (0=kg, -3=g, ...)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_PUBLIC_NOTE_IN_ADDRESS&#039;&#039;&#039; ► Show public note in address block ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_DEFAULT_PAYMENT_TERM_ID&#039;&#039;&#039; ► With ID of a payment term, will use this as default payment term each time you create a new proposal, order, invoice (customer and supplier)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND&#039;&#039;&#039; ► Change way of rounding total TTC lines, rounding first of after.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_VIEW_LINE_NUMBER&#039;&#039;&#039; ► Shows a line number against each line in the order/invoice for products/services.  On screen only, not on PDF.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_DOC_USE_OBJECT_THIRDPARTY_NAME&#039;&#039;&#039; ► Add name of thirdparty at begin of generated document.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_DOC_USE_TIMING&#039;&#039;&#039; ► Add a timestamp at end of generated document. Value must be format of timestamp. For example: &amp;lt;code&amp;gt;%Y%m%d%H%M&amp;lt;/code&amp;gt; (only for ODT files)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_DISABLEDRAFTSTATUS&#039;&#039;&#039; ► Disable the status Draft for some objects (project, donation, ...)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_USE_OLD_SEARCH_FORM&#039;&#039;&#039; ► Display the old search form in left menu.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_SERVER_TZ&#039;&#039;&#039; ► If you can&#039;t set the timezone of your PHP installation, set this constant. Better is to set it to UTC. In future, this constant will be forced to &#039;UTC&#039; so PHP server timezone will not have effect anymore. Examples: &amp;lt;code&amp;gt;Europe/Paris&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;auto&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_SEARCH_FORM_ON_HOME_AREAS&#039;&#039;&#039; ► Show the search form on home page areas for core modules (Removed after v5 due to global search combo) ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE&#039;&#039;&#039; ► If only one result is found, then setting this value to &#039;&#039;&#039;1&#039;&#039;&#039; will take you direct to the item (default method).  Setting the value to &#039;&#039;&#039;0&#039;&#039;&#039; will show the result in the list as a single result ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_ENABLE_IMPORT_LINKED_OBJECT_LINES&#039;&#039;&#039; ► Allow to import lines into current document from &amp;quot;linked&amp;quot; compatible documents ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_USE_VAT_OF_PRODUCT_FOR_INDIVIDUAL_CUSTOMER_OUT_OF_EEC&#039;&#039;&#039; ► Allow using product VAT if customer is individual and out of E.E.C. (European Economic Community) ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_SHOWDATABASENAMEINHELPPAGESLINK&#039;&#039;&#039; ► Show database name in upper help menu ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_DISABLE_MULTIPLE_FILEUPLOAD&#039;&#039;&#039; ► Disable users to upload multiple files at once.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;USER_HIDE_INACTIVE_IN_COMBOBOX&#039;&#039;&#039; ► Disable display inactive users in combobox. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_SERVICES_ARE_ECOMMERCE_200238EC&#039;&#039;&#039; ► (&amp;lt; 8)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_DOC_UPLOAD_NOT_RENAME_BY_DEFAULT&#039;&#039;&#039; ► Disable the auto renaming on upload file ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_DEFAULT_LANGUAGE_FILTER&#039;&#039;&#039; ► Useful if you do not want to show en_US language option in combo boxes (other languages can easily be removed in langs directory but not en_US) ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;NO_CONCAT_DESCRIPTION&#039;&#039;&#039; ► Allow to use only input custom description in lines (propale, order, invoice) ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;ADD_UNSPLASH_LOGIN_BACKGROUND&#039;&#039;&#039; ► The background image will be refreshed on every login page refresh. Background image is pulled from the popular open source image website Unsplash. If an already saved static background image exists, then this code will override it (but not delete the saved image). ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Accoutancy Module&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;ACCOUNTANCY_COMBO_FOR_AUX&#039;&#039;&#039; ► Add graphic option for ACCOUNTANCY_COMBO_FOR_AUX ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Agenda Module&#039;&#039;&#039; ==&lt;br /&gt;
* &#039;&#039;&#039;AGENDA_MAX_EVENTS_DAY_VIEW&#039;&#039;&#039; ► Define the maximum number of visible entries for each day in agenda. Default value is &#039;&#039;&#039;3&#039;&#039;&#039;. Value &#039;&#039;&#039;0&#039;&#039;&#039; means no limit.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;AGENDA_USE_EVENT_TYPE&#039;&#039;&#039; ► Add a mandatory field &amp;quot;Type&amp;quot; when creating an event (deprecated).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;AGENDA_AUTOSET_END_DATE_WITH_DELTA_HOURS&#039;&#039;&#039; ► To automatically set end date of event to start date + delta on event creation page.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_ADD_EVENT_ON_ELEMENT_CARD&#039;&#039;&#039; ► Allow to create an event from a document (proposal, order, invoice)&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Bank Module&#039;&#039;&#039; ==&lt;br /&gt;
* &#039;&#039;&#039;BANK_CAN_RECONCILIATE_CASHACCOUNT&#039;&#039;&#039; ► Can reconciliate cash accounts ► (v3.8)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;BANK_DISABLE_CHECK_DEPOSIT&#039;&#039;&#039; ► Disable check deposit feature&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;BANK_ASK_PAYMENT_BANK_DURING_ORDER&#039;&#039;&#039; ► Ask bank account during creation of an order&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL&#039;&#039;&#039; ► Ask bank account during creation of a proposal&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;BlockedLog&#039;&#039;&#039; ==&lt;br /&gt;
* &#039;&#039;&#039;BLOCKEDLOG_DISABLE_NOT_ALLOWED_FOR_COUNTRY&#039;&#039;&#039; ► Make disable of module &amp;quot;blockedlog&amp;quot; not possible for countries code defined into value. Example: &#039;FR,...&#039;&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Contracts&#039;&#039;&#039; ==&lt;br /&gt;
* &#039;&#039;&#039;CONTRACT_SUPPORT_PRODUCTS&#039;&#039;&#039; ► Products are also suggested into module contract.&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Email and SMS&#039;&#039;&#039; ==&lt;br /&gt;
* &#039;&#039;&#039;MAIN_MAILFORM_DISABLE_ENTERKEY&#039;&#039;&#039; ► Activate javascript code to disable the enter key in the MAIL form. ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIL_PREFIX_FOR_EMAIL_ID&#039;&#039;&#039; ► Prefix for the mails ID. Default value is &amp;lt;code&amp;gt;$_SERVER[&amp;quot;SERVER_NAME&amp;quot;]&amp;lt;/code&amp;gt; ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_MAIL_DEBUG&#039;&#039;&#039; ► Write content with header of last mail into file &amp;lt;code&amp;gt;dolibarr_mail.log&amp;lt;/code&amp;gt; into directory &amp;lt;code&amp;gt;dolibarr_main_data_root&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_SMS_DEBUG&#039;&#039;&#039; ► Write content of SMS sent into file &amp;lt;code&amp;gt;dolibarr_sms.log&amp;lt;/code&amp;gt; into directory &amp;lt;code&amp;gt;dolibarr_main_data_root&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_MAIL_ALLOW_SENDMAIL_F&#039;&#039;&#039; ► On Linux or BSD system, PHP email function use the command sendmail local to server. In some cases, the sender email must be provided on command line of sendmail with option &amp;lt;code&amp;gt;-f&amp;lt;/code&amp;gt;. This option is here to ask Dolibarr to call the function &#039;&#039;&#039;mail&#039;&#039;&#039; of PHP by adding value for the option &amp;lt;code&amp;gt;-f&amp;lt;/code&amp;gt;. Note that in most cases, even with sendmail, sender email is correctly managed as it is added in the email technical header. This option is here only for rare setup of sendmail that ask the &#039;&#039;&#039;-f&#039;&#039;&#039; option to be mandatory or for sendmail setup that does not use by default the Return-path of header email to define the sender (with this option, the return-path will be provided also on command line and not lost by sendmail).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_MAIL_SENDMAIL_FORCE_BA&#039;&#039;&#039; ► On Linux or BSD system, PHP email function use the command sendmail local to server. In some case, we want to recipient to be provided to sendmail into the email content instead of its command line parameter. For this we must add the &#039;&#039;&#039;-ba&#039;&#039;&#039; parameter to sendmail. This option asks PHP to provide this parameter when sending a mail. Note that another solution is to edit the &#039;&#039;&#039;mail.force_extra_parameters=-ba&#039;&#039;&#039; into &#039;&#039;&#039;&amp;lt;code&amp;gt;php.ini&amp;lt;/code&amp;gt;&#039;&#039;&#039; file.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_MAIL_NO_FULL_EMAIL&#039;&#039;&#039; ► Recipient email and sender are cleaned to be on form &amp;quot;&amp;lt;email&amp;gt;&amp;quot; instead of &amp;quot;Name &amp;lt;email&amp;gt;&amp;quot;. This might solve problem of compatibility with very old mailers.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_FIX_FOR_BUGGED_MTA&#039;&#039;&#039; ► Some MTA agent are bugged and add some CR chars each time they saw a LF. Because Dolibarr emails are forged to be already cleaned, if MTA agent do that, you will send an email with two CR chars. This may result in having recipient not able to read your email. To fix this, add this constant to 1. Dolibarr will then create an email that is not RFC compliant but because the MTA agent is bugged, the email will be modified and become correct during sending, solving the problem of bad email received. Add this constant if your recipient experience problems when opening email for example users using webmail of &amp;lt;code&amp;gt;orange.fr&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;hotmail.com&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_MAIL_DO_NOT_USE_SIGN&#039;&#039;&#039; ► Do not add user signature at end of suggested pre-defined email&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIL_FORCE_DELIVERY_RECEIPT_INVOICE&#039;&#039;&#039; ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Invoice&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIL_FORCE_DELIVERY_RECEIPT_ORDER&#039;&#039;&#039; ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Order&#039;&#039; module. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIL_FORCE_DELIVERY_RECEIPT_PROPAL&#039;&#039;&#039; ► Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Proposal&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_EMAIL_USECCC&#039;&#039;&#039; ► 1 = Show field BCC into email forms, If email = Show BCC prefilled with email.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_MAIL_AUTOCOPY_PROPOSAL_TO&#039;&#039;&#039;, &#039;&#039;&#039;MAIN_MAIL_AUTOCOPY_ORDER_TO&#039;&#039;&#039;, &#039;&#039;&#039;MAIN_MAIL_AUTOCOPY_INVOICE_TO&#039;&#039;&#039; ► Email to use as a BCC recipient when sending email for proposal, order or invoice. You can make this value visible by setting &#039;&#039;&#039;MAIN_EMAIL_USECCC&#039;&#039;&#039; (to 1 or to another email, see previous point)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_EMAIL_ADD_TRACK_ID&#039;&#039;&#039; ► When value is &#039;&#039;&#039;1&#039;&#039;&#039; (this is also default value if option is not set): The record &amp;quot;Message-id&amp;quot; added into smtp header includes a tracking id to define where the email was sent from. When value is &#039;&#039;&#039;2&#039;&#039;&#039;: you send an email from third party card, the sender email is completed with the email source tracking string  &amp;quot;+thiXXX&amp;quot; on email (your email will be sent with the &amp;quot;From&amp;quot; that is myname+thi123@mycompany.com). So when user receiving email will make &amp;quot;Answer&amp;quot;, email will be sent to myname@mycompany.com but with the tracking id included (into header or into target email), allowing you to know to which third party or object, the email exchange is related to.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_IN_SAME_EMAIL&#039;&#039;&#039; ► Restrict sending of 1 email message to &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; recipients for same email message (x for To: + CC: + BCC:). If not defined, value is &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;. Required to fight against spamming that include 1000 recipients in 1 message. Note that &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_TO_IN_SAME_EMAIL&#039;&#039;&#039;, &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_CC_IN_SAME_EMAIL&#039;&#039;&#039; and &#039;&#039;&#039;MAIL_MAX_NB_OF_RECIPIENTS_BCC_IN_SAME_EMAIL&#039;&#039;&#039; are also available.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_MAIL_FORCE_CONTENT_TYPE_TO_HTML&#039;&#039;&#039; ► Force to send all email (event with text only content) as HTML formatted email.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_MAIL_USE_MULTI_PART&#039;&#039;&#039; ► Forge email content using an alternate text part ► (for 5.0.2+). By default with 6.0+&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_MAIL_ADD_INLINE_IMAGES_IF_IN_MEDIAS&#039;&#039;&#039; ► If images were stored into the medias directory from CKEditor, then images into emails are replaced with &amp;quot;inline content&amp;quot;. This may increase seriously risk of being detected as SPAM.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_COPY_FILE_IN_EVENT_AUTO&#039;&#039;&#039; ► Add attachement document on event auto generated by sending email from dolibarr. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_EXTERNAL_SMTP_CLIENT_IP_ADDRESS&#039;&#039;&#039; ► Enter the public IP address of the server, so it appears in the help on the email setup page.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_MAIL_ENABLED_USER_DEST_SELECT&#039;&#039;&#039; ► Show also internal users into list of recipients of email in email sending form ► (v8.0+)&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Emailing Module&#039;&#039;&#039; ==&lt;br /&gt;
* &#039;&#039;&#039;MAILING_PREFIX_FOR_EMAIL_ID&#039;&#039;&#039; ► Set the value that will be used to compose the &amp;quot;Email ID&amp;quot; into email headers. If you set this value to &#039;&amp;lt;code&amp;gt;SERVER_NAME&amp;lt;/code&amp;gt;&#039;, the virtual host of web server will be used. By default, this is not defined, so a hash key, unique to each instance, is used.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAILING_NO_USING_PHPMAIL&#039;&#039;&#039; ► If set, the module emailing can&#039;t be used with mail setup of &amp;quot;phpmail&amp;quot;. Using a thirdparty SMTP server is required. You can complete warning message by adding an email to contact for setup help with constant &#039;&#039;&#039;MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS&#039;&#039;&#039; ► Contains the email of contact to show into the message visible to a user when he try to use emailing module without SMTP server and if option &#039;&#039;&#039;MAILING_NO_USING_PHPMAIL&#039;&#039;&#039; is set to on.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAILING_LIMIT_WARNING_PHPMAIL&#039;&#039;&#039; ► Show a warning message (var contains the message to show or translation key) on emailing send form if setup is on &amp;quot;phpmail&amp;quot;. For example, you can set this parameter to &amp;lt;code&amp;gt;(MAILING_LIMIT_WARNING_PHPMAIL)&amp;lt;/code&amp;gt; and enter translation key for each language for this key.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAILING_LIMIT_WARNING_NOPHPMAIL&#039;&#039;&#039; ► Show a warning message (var contains the message to show or translation key) on emailing send form if setup is something else than &amp;quot;phpmail&amp;quot;. For example, you can set this parameter to &amp;lt;code&amp;gt;(MAILING_LIMIT_WARNING_NOPHPMAIL)&amp;lt;/code&amp;gt; and enter translation key for each language for this key.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;EMAILING_USE_ADVANCED_SELECTOR&#039;&#039;&#039; ► Enable the advanced selector for recipients.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAILING_LIMIT_SENDBYWEB&#039;&#039;&#039; ► Restrict number of emails you can send in same sending session with emailing module from GUI. The value &amp;quot;&amp;lt;code&amp;gt;dolibarr_mailing_limit_sendbyweb&amp;lt;/code&amp;gt;&amp;quot; if defined into config file is used in priority for this limit. A negative value means, sending by web is forbidden.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAILING_LIMIT_SENDBYCLI&#039;&#039;&#039; ► Restrict number of emails you can send in same sending session with emailing module from CLI script. The value &amp;quot;&amp;lt;code&amp;gt;dolibarr_mailing_limit_sendbycli&amp;lt;/code&amp;gt;&amp;quot; if defined into config file is used in priority for this limit.&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Expense Report&#039;&#039;&#039; ==&lt;br /&gt;
* &#039;&#039;&#039;EXPENSEREPORT_ALLOW_OVERLAPPING_PERIODS&#039;&#039;&#039; ► Can enter several expense reports on same or overlapping date periods. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;EXPENSEREPORT_USE_OLD_NUMBERING_RULE&#039;&#039;&#039; ► The module Expense Report use numbering rules that you can setup (like other modules do). If you need to keep the hard-coded numbering rule of expenses report used in v6.0 set this constant to &#039;&#039;&#039;1&#039;&#039;&#039; ► (&amp;gt;=v7.0+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_USE_EXPENSE_IK&#039;&#039;&#039; ► This feature allows you to set index kilometers against a mileage index for different types of vehicles. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_USE_EXPENSE_RULE&#039;&#039;&#039; ► This feature allows you to set a variety of rules per user/group/all so they can only create reports within their limits. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;OVERRIDE_VAT_FOR_EXPENSE_REPORT&#039;&#039;&#039; ► Setting constant OVERRIDE_VAT_FOR_EXPENSE_REPORT to 1 will allow expense reports to show VAT even if the global VAT setting is off ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Export Module&#039;&#039;&#039; ==&lt;br /&gt;
* &#039;&#039;&#039;EXPORT_CSV_SEPARATOR_TO_USE&#039;&#039;&#039; ► String value to use as default separator to delimit fields of exported files (by default Dolibarr uses &amp;quot;&amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;&amp;quot;). Example: EXPORT_CSV_SEPARATOR_TO_USE=&amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;EXPORT_CSV_FORCE_CHARSET&#039;&#039;&#039; ► Choose the charset used in the output file built by the CSV exporter. By default it is ISO-8859-1. Example: EXPORT_CSV_FORCE_CHARSET= &amp;lt;code&amp;gt;utf-8&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;EXPORTTOOL_CATEGORIES&#039;&#039;&#039; ► Can export categories (several lines) into one column with the &amp;quot;product export profile&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;USE_STRICT_CSV_RULES&#039;&#039;&#039; ► Use strict/real CSV format for export. Do not clean/replace CR+LF with &#039;\n&#039; but quote them using the escaping CSV char (&amp;lt;code&amp;gt;&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Foundation Module&#039;&#039;&#039; ==&lt;br /&gt;
* &#039;&#039;&#039;MEMBER_URL_REDIRECT_SUBSCRIPTION&#039;&#039;&#039; ► Link called and shown when a member account is autocreated in member module by a guest user.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MEMBER_EXT_URL_SUBSCRIPTION_INFO&#039;&#039;&#039; ► Link of external page pointed by the &amp;quot;Show here&amp;quot; link added in front of payment cell, into the page to make online subscription.&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Interventions Module&#039;&#039;&#039; ==&lt;br /&gt;
* &#039;&#039;&#039;FICHINTER_CLASSIFY_BILLED&#039;&#039;&#039;► Allow to classify an intervention card as &amp;quot;Billed&amp;quot;. This add also trigger &amp;lt;code&amp;gt;FICHINTER_CLASSIFY_BILLED&amp;lt;/code&amp;gt; into list of possible automatic event into agenda.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;FICHINTER_DISABLE_DETAILS&#039;&#039;&#039;► Disable entry of details line on intervention. Can validate with no line.&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Invoice Module&#039;&#039;&#039; ==&lt;br /&gt;
* &#039;&#039;&#039;MAIN_DEPOSIT_MULTI_TVA&#039;&#039;&#039; ► In deposits invoice, creates one line per VAT rate from the origin document ► (6.0)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;FACTURE_SHOW_SEND_REMINDER&#039;&#039;&#039; ► Show link &amp;quot;Send reminder by mail&amp;quot;, same feature than &amp;quot;Send by mail&amp;quot; &#039;&#039;(obsolete feature)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;INVOICE_CAN_ALWAYS_BE_EDITED&#039;&#039;&#039; ► Allow to edit invoices even if payment was started. Note: If the module &amp;quot;&#039;&#039;&#039;BlockedLog&#039;&#039;&#039;&amp;quot; is active (required in some countries for legal reasons), this will not change content of archived logs tracked by this module. By definition there is no way to change or remove archived records. It will just update data in your application and a new record to track your change into the read-only archive log.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;INVOICE_CAN_ALWAYS_BE_REMOVED&#039;&#039;&#039; ► Allow to always delete invoices (even if invoice is not last one). Note: If the module &amp;quot;&#039;&#039;&#039;BlockedLog&#039;&#039;&#039;&amp;quot; is active (required by some countries for legal reason), this will not change content of archived logs tracked by this module. By definition there is no way to change or remove archived records. It will just update data in your application and a new record to track your change into the read-only archive log.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;INVOICE_CAN_NEVER_BE_REMOVED&#039;&#039;&#039; ► Never allow to delete invoices (except draft invoices).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;INVOICE_POSITIVE_CREDIT_NOTE&#039;&#039;&#039; ► All amounts on PDF credit notes are positive.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;FACTURE_CHANGE_THIRDPARTY&#039;&#039;&#039; ► Allow to change the third party in the draft invoices. If a discount was set from the original thirdparty, then discount remain, making data not coherent.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;FACTURE_USE_PROFORMAT&#039;&#039;&#039; ► Enable PROFORMAT invoices type.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;FACTURE_DEPOSITS_ARE_JUST_PAYMENTS&#039;&#039;&#039; ► Treats deposit invoices as a special case. Deposit invoices don&#039;t get counted on turnover. They are then applied as a payment, like a discount, on the final invoice. By default, when you include the deposit into draft of final invoice, the amount of final invoice is reduced. With this option, final amount is not reduced but a payment is registered. WARNING: In a lot of european countries, using this option is not allowed.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;FACTURE_SENDBYEMAIL_FOR_ALL_STATUS&#039;&#039;&#039; ► Can send invoice by email to customer even if invoice has status &amp;quot;draft&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT&#039;&#039;&#039; ► Disable VAT on generated documents. like for an association. (Works with crabe template)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;INVOICE_CREDIT_NOTE_STANDALONE&#039;&#039;&#039; ► Can make a credit note without invoice. ► (v3.9)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;INVOICE_USE_SITUATION&#039;&#039;&#039; ► Enable the &amp;quot;situation invoice&amp;quot; feature&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;INVOICE_USE_SITUATION_CREDIT_NOTE&#039;&#039;&#039; ► Enable the &amp;quot;situation credit note&amp;quot; feature (need &amp;lt;code&amp;gt;INVOICE_USE_SITUATION&amp;lt;/code&amp;gt;) ► (v8.0)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;INVOICE_DISABLE_DEPOSIT&#039;&#039;&#039; ► Disable deposit invoices&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;INVOICE_DISABLE_REPLACEMENT&#039;&#039;&#039; ► Disable replacement invoices&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;INVOICE_DISABLE_CREDIT_NOTE&#039;&#039;&#039; ► Disable credit notes&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;WORKFLOW_BILL_ON_SHIPMENT&#039;&#039;&#039; ► Change label of button with suitable label when you need to create invoice on shipments&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;INVOICE_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039; ► When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. Use the tag __DIRECTDOWNLOAD_URL_INVOICE__ in email template to insert it. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;INVOICE_POINTOFTAX_DATE&#039;&#039;&#039; ► Add Point of Tax Date on invoices for country-specific legality reasons ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;FACTURE_ENABLE_NEGATIVE_LINES&#039;&#039;&#039; ► Allows to add negative lines to an invoice ► (v8.0.2+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;INVOICE_USE_DEFAULT_DOCUMENT&#039;&#039;&#039; ► Allow user to select a default invoice documents models according to invoice type. On invoice create page, the model is dynamically changed on invoice type selection. ► (v9.0+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;FACTURE_REUSE_NOTES_ON_CREATE_FROM&#039;&#039;&#039; ► Reuse the Public Note and Private note of the previous object (Proposal,...) when creating the bill.&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Look or Theme&#039;&#039;&#039; ==&lt;br /&gt;
* &#039;&#039;&#039;MAIN_OPTIMIZEFORTEXTBROWSER&#039;&#039;&#039; ► Optimize output rendering for usage of a text browser (useful for blind people)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;THEME_ELDY_DISABLE_IMAGE&#039;&#039;&#039; ► Disabled images of top menu for eldy theme. ► (v3.8+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_MENU_HIDE_UNAUTHORIZED&#039;&#039;&#039; ► Hide menu if logged in user is not authorized rather than just grey them&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;THEME_TOPMENU_STICKY_POSITION&#039;&#039;&#039; ► Option to fix top menu with eldy theme ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_EASTER_EGG_COMMITSTRIP&#039;&#039;&#039; ► Show a comic image from the CommitStrip website. Images are refreshed daily. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_STATUS_USES_CSS&#039;&#039;&#039; ► (v10.0+) Change status design using new style&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_USE_NEW_TITLE_BUTTON&#039;&#039;&#039; ► (v10.0+) Use new list buttons design&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;MultiCurrency&#039;&#039;&#039; ==&lt;br /&gt;
* &#039;&#039;&#039;MAIN_MULTICURRENCY_ALLOW_SYNCHRONIZATION&#039;&#039;&#039; ► Enable CurrencyLayer API synchronization&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Order Module&#039;&#039;&#039; ==&lt;br /&gt;
* &#039;&#039;&#039;COMMANDE_REQUIRE_SOURCE&#039;&#039;&#039; =&amp;gt; Make the input field &amp;quot;Source of order&amp;quot; mandatory.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;COMMANDE_VALID_AFTER_CLOSE_PROPAL&#039;&#039;&#039; =&amp;gt; When an order is created on a proposal close, the order is directly defined with status &amp;quot;Validated&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;COMMANDE_CHANGE_THIRDPARTY&#039;&#039;&#039; =&amp;gt; Can change customer on orders&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER&#039;&#039;&#039; =&amp;gt; When an order is created, the warehouse can be defined&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;ORDER_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039; =&amp;gt; When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. ► (v7.0+)&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;PDF Options&#039;&#039;&#039; ==&lt;br /&gt;
* &#039;&#039;&#039;MAIN_DISABLE_FORCE_SAVEAS&#039;&#039;&#039; ► If your browser always asks to save downloaded files on disk (like PDF), try this this option. File may be displayed directly in your browser.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_DISABLE_PDF_COMPRESSION&#039;&#039;&#039; ► Disable PDF compression.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_INVERT_SENDER_RECIPIENT&#039;&#039;&#039; ► Invert sender and recipient in some PDF.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_DISABLE_PDF_AUTOUPDATE&#039;&#039;&#039; ► Disable automatic generation of PDF each time we add/update/delete a product line (we can still build document by clicking on &amp;quot;Generate&amp;quot;). This option may increase interface speed on servers with low CPU.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_USE_BACKGROUND_ON_PDF&#039;&#039;&#039; ► Define this constant with short name of an image (example &amp;quot;&amp;lt;code&amp;gt;myimage.jpg&amp;lt;/code&amp;gt;&amp;quot;) that must be saved into directory &amp;quot;&amp;lt;code&amp;gt;documents/mycompany/logos&amp;lt;/code&amp;gt;&amp;quot;. This will add this background image into your generated PDF files. Warning: This option make TCPDF library being crazy sometime and content on image disappeared!&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_ADD_PDF_BACKGROUND&#039;&#039;&#039; ► Define this constant with short name of a PDF file (example &amp;quot;&amp;lt;code&amp;gt;mypdf.pdf&amp;lt;/code&amp;gt;&amp;quot;) that must be saved into directory &amp;quot;&amp;lt;code&amp;gt;documents/mycompany&amp;lt;/code&amp;gt;&amp;quot;. This will add PDF as a background of some of your generated PDF files (proposals,invoices,orders). If you need to concat PDF, see instead [[Module Concat PDF]].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_PDF_FORCE_FONT&#039;&#039;&#039; ► To ignore font defined into language file and force usage of a particular font. For example &amp;quot;&amp;lt;code&amp;gt;DejaVuSans&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_PDF_FREETEXT_HEIGHT&#039;&#039;&#039; ► Change height of space reserved to output the free text.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_PDF_TITLE_BACKGROUND_COLOR&#039;&#039;&#039; ► Can define a background color onto title line. Example: &amp;lt;code&amp;gt;220,220,200&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_USE_COMPANY_NAME_OF_CONTACT&#039;&#039;&#039; ► Use contact name and information rather than company&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_ODT_AS_PDF&#039;&#039;&#039; ► Activate PDF conversion from ODT document. If value is &#039;&amp;lt;code&amp;gt;jodconverter&amp;lt;/code&amp;gt;&#039;, java and jodconverter command line tool must be available. If value is &#039;&amp;lt;code&amp;gt;/pathto/jodconverter.jar&amp;lt;/code&amp;gt;&#039; then java and the jodconvertar jar must exist. Soffice must also be available. &amp;lt;code&amp;gt;MAIN_DOL_SCRIPTS_ROOT&amp;lt;/code&amp;gt; Must also be defined to path where the &amp;quot;scripts&amp;quot; directory is stored (for example &amp;lt;code&amp;gt;/var/www/mydolibarr&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_ODT_AS_PDF_DEL_SOURCE&#039;&#039;&#039; ► For ODT generation. If set, then initial behaviour is conserved but ODT file is removed when option to convert it as PDF (see previous) is on. Disabled by default&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS&#039;&#039;&#039; ► Adding the company address at the bottom of the page. Disabled by default&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_GENERATE_PROPOSALS_WITH_PICTURE&#039;&#039;&#039; ► Include the first image of the product into the line of the generated PDF for customer proposals.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_GENERATE_INVOICES_WITH_PICTURE&#039;&#039;&#039; ► Include the first image of the product into the line of the generated PDF for customer invoices.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_GENERATE_SUPPLIER_PROPOSAL_WITH_PICTURE&#039;&#039;&#039; ► Include the first image of the product into the line of the generated PDF for supplier proposals ► (v5.0.3+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_DOCUMENTS_LOGO_HEIGHT&#039;&#039;&#039; ► Can force height of the logo on PDF.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_DOCUMENTS_WITH_PICTURE_WIDTH&#039;&#039;&#039; ► Can change size of picture when hidden option &amp;lt;code&amp;gt;MAIN_GENERATE_PROPOSALS_WITH_PICTURE&amp;lt;/code&amp;gt; is used. By default value is &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_COLUMN&#039;&#039;&#039; ► Hide column with VAT information but only column not total.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PDF_SHOW_PROJECT&#039;&#039;&#039; ► Show project onto PDF (supported on supplier order only for the moment)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PDF_BANK_HIDE_NUMBER_SHOW_ONLY_BICIBAN&#039;&#039;&#039; ► Hide bank number (&amp;quot;code banque/guichet/compte&amp;quot; for France, &amp;quot;sort code/account number&amp;quot; for GB, ...) and keep only BIC/IBAN on PDF.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PDF_HIDE_PRODUCT_REF_IN_SUPPLIER_LINES&#039;&#039;&#039; ► Modify the use/position of Supplier Ref/Internal Ref with the item Label (name) on PDF documents.&lt;br /&gt;
Default (constant not set or Value &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;): Internal ref followed by supplier ref in brackets.&amp;quot;COMPANY-REF-001 (Vendor SKU SUPPLIER-REF-001) - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Value &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;: Supplier ref only eg.&amp;quot;SUPPLIER-REF-001 - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Value &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;: Supplier ref followed by internal ref in brackets. eg.&amp;quot;SUPPLIER-REF-001 (InternalRef COMPANY-REF-001) - LABEL...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_PDF_ADDALSOTARGETDETAILS&#039;&#039;&#039; ► Add particular details like the telephone number on generated PDFs. Can be useful in cases where a printed order/invoice etc is given to a delivery driver/courier etc.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME&#039;&#039;&#039; ► Include alternative/alias name into name on PDF.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING&#039;&#039;&#039; ► Add optional esign field in pdf propal ► (v8.0+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_TVAINTRA_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show VAT N° in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_PROFID1_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 1 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_PROFID2_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 2 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_PROFID3_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 3 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_PROFID4_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 4 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_PROFID5_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 5 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_PROFID6_IN_SOURCE_ADDRESS&#039;&#039;&#039; ► Show Professional ID 6 in source address of PDF to comply with legalities in certain countries ► (v8.0.1+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;ADD_HTML_FORMATING_INTO_DESC_DOC&#039;&#039;&#039; ► Add more visibility to important informations like reference and serial number in desc. ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Point of Sale&#039;&#039;&#039; ==&lt;br /&gt;
* &#039;&#039;&#039;CASHDESK_SHOW_KEYPAD&#039;&#039;&#039; ► Show a mouse key pad into the &#039;Simple Point of Sale&#039; module.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;POS_ADDON&#039;&#039;&#039; ► Set this value to an existing numbering module rule (for example &#039;&amp;lt;code&amp;gt;mod_facture_terre&amp;lt;/code&amp;gt;&#039;, &#039;&amp;lt;code&amp;gt;mod_facture_mars&amp;lt;/code&amp;gt;&#039;, ...) to force the numbering module to us to define the invoice ref when invoice is created by the POS. For example setting value &amp;lt;code&amp;gt;POS_ADDON&amp;lt;/code&amp;gt; to &#039;&amp;lt;code&amp;gt;mod_facture_terre&amp;lt;/code&amp;gt;&#039; will use the numbering module &#039;&amp;lt;code&amp;gt;terre&amp;lt;/code&amp;gt;&#039; for invoice generated from POS, whatever is the numbering rule defined into invoice module setup (you can also use &#039;&#039;&#039;POS_NUMBERING_TERRE_FORCE_PREFIX&#039;&#039;&#039; and &#039;&#039;&#039;POS_NUMBERING_MARS_FORCE_PREFIX&#039;&#039;&#039; variable to change the prefix used).&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Products Module&#039;&#039;&#039; ==&lt;br /&gt;
* &#039;&#039;&#039;MAIN_PRODUCT_DISABLE_CUSTOMCOUNTRYCODE&#039;&#039;&#039; ► Avoid Custom code and country of origin to be set as product description when added to Propal/Order/Invoice&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PRODUCT_ADD_TYPE_IN_DOCUMENTS&#039;&#039;&#039; ► Add text &amp;quot;Product&amp;quot; or &amp;quot;Service&amp;quot; at beginning of details lines on built PDF documents.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PRODUCT_DONOTSEARCH_ANYWHERE&#039;&#039;&#039; ► When Ajax search is enabled, search is done on criteria anywhere in label of product. By adding this option, search is done only on start of label. This is really faster when you have a huge number of products.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PRODUIT_DESC_IN_LIST&#039;&#039;&#039; ► Show long description of product/service into lists.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PRODUIT_PDF_MERGE_PROPAL&#039;&#039;&#039; ► Enable module Propal merge product PDF&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PRODUCT_USE_OLD_PATH_FOR_PHOTO&#039;&#039;&#039; ► Ask dolibarr to check also old path (before 3.7) where photos were stored.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PRODUCT_USE_UNITS&#039;&#039;&#039; ► Enable units from dictionary in product/service card.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PRODUCT_DISABLE_SIZE&#039;&#039;&#039; ► Disable size in product card.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PRODUCT_DISABLE_LENGTH&#039;&#039;&#039; ► Disable length in product card ► v4.0+&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PRODUCT_DISABLE_SURFACE&#039;&#039;&#039; ► Disable surface in product card. ► v4.0+&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PRODUCT_DISABLE_VOLUME&#039;&#039;&#039; ► Disable volume in product card.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PRODUCT_DISABLE_CUSTOM_INFO&#039;&#039;&#039; ► Disable custom info (custom code and country origin) in product/service card.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PRODUIT_MULTIPRICES_USE_VAT_PER_LEVEL&#039;&#039;&#039; ► When option to use price per level/segment is on, this allows to also set a dedicated vat for each price level.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_DIRECT_STATUS_UPDATE&#039;&#039;&#039; ► Allows you to change the status of the product (&#039;&#039;for sale/not for sale for purchase/not for purchase&#039;&#039;) directly on the product page via a &#039;&#039;on/off&#039;&#039; switch button. This can be convenient for those who need to quickly disable certain statuses of products without having to go through the editing product page individually. Also can be very useful if used as a filter on the product and product search list. This option doesn&#039;t generate a MODIFY trigger, so be careful with external modules. ► v4.0+&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PRODUCT_CHARGES&#039;&#039;&#039; ► Adds an extra field for adhoc charges at the product buying price stage. The cost price is then calculated with supplier price + charges if defined. Useful for extra costs for a product or certain delivery charges to the product. ► (&amp;lt;= v7.0)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PRODUCT_MAX_VISIBLE_PHOTO&#039;&#039;&#039; ► Show a maximum number of product photos (as thumbnails) on the product main card. Example, setting this constant to &#039;&amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;&#039; will show the first five product photos found on the product card.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PRODUCT_MAX_LENGTH_COMBO&#039;&#039;&#039; ► Limit the length of the label displayed when adding lines in proposals/invoices/orders&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_DISABLE_FREE_LINES&#039;&#039;&#039; ► Disallow using free lines to add line in documents ► (&amp;gt;= 8.0)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_SHOW_PRODUCT_ACTIVITY_TRIM&#039;&#039;&#039; ► Show Product and Services turnover before for all four quarters tax over recent years recent years on the product area ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;CATEGORY_GRAPHSTATS_ON_PRODUCTS&#039;&#039;&#039; ► Show graph of products with categories and totals in Products Area screen&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Projects Module&#039;&#039;&#039; ==&lt;br /&gt;
* &#039;&#039;&#039;PROJECT_DISABLE_UNLINK_FROM_OVERVIEW&#039;&#039;&#039; ► Enable removing the button from a link in the project overview. ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS&#039;&#039;&#039; ► Enable linking a project to any supplier even when using the third party link feature. Note: Set to 1 by default from 3.7.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT_TIME_ON_ALL_TASKS_MY_PROJECTS&#039;&#039;&#039; ► Can add time spent on tasks, even if i am not assigned to task (however, task must be a project i am a contact).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT_SHOW_REF_INTO_LISTS&#039;&#039;&#039; ► Add column with project ref into list (with 3.7 list of supplier invoices only, will be expanded to other lists)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT_HIDE_UNSELECTABLES&#039;&#039;&#039; ► Hide into select list, all project that we can&#039;t select (closed or draft)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT_HIDE_TASKS&#039;&#039;&#039; ► Hide tasks. For user using project only as an analytics key and not using tasks.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT_LIST_SHOW_STARTDATE&#039;&#039;&#039; ► Shows start date of projects in project lists.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT_LINK_ON_OVERWIEW_DISABLED&#039;&#039;&#039; ► Hide the &amp;quot;link to&amp;quot; form on the overview page ► (4.0)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT_CREATE_ON_OVERVIEW_DISABLED&#039;&#039;&#039; ► Hide the &amp;quot;create ...&amp;quot; button on the overview page ► (4.0)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT_ALLOW_TO_LINK_FROM_OTHER_COMPANY&#039;&#039;&#039; ► Can link an object to a project of another thirdparty&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROJECT_ALLOW_COMMENT_ON_TASK&#039;&#039;&#039; ► Add comment feature on project task&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Proposals Module&#039;&#039;&#039; ==&lt;br /&gt;
* &#039;&#039;&#039;PROPAL_CLONE_ON_CREATE_PAGE&#039;&#039;&#039; ► On the create proposal page, ask if we want to create the proposal by cloning an already existing one. You should use instead the &amp;quot;Clone&amp;quot; button available on existing proposals.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_PROPAL_CHOOSE_ODT_DOCUMENT&#039;&#039;&#039; ► On setup page, you&#039;ll be able to select which ODT document to use when close or cancel proposals.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_GENERATE_PROPOSALS_WITH_PICTURE&#039;&#039;&#039; ► Add a picture of the product (the first one found if there are several) into the generated PDF of proposals. Note that using this will reduce the available width for the product description.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROPAL_DISABLE_SIGNATURE&#039;&#039;&#039; ► Do no show the box for signature.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;WORKFLOW_PROPAL_CAN_CLASSIFY_BILLED_WITHOUT_INVOICES&#039;&#039;&#039; ► Button &amp;quot;Classified Billed&amp;quot; is visible on proposal even if there is no invoice linked to proposal.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PRODUIT_PDF_MERGE_PROPAL&#039;&#039;&#039; ► When generating the proposal PDF, all PDFs linked to products linked to proposal are also included into final PDF&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PROPOSAL_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039; ► When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key. ► (v7.0+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING&#039;&#039;&#039; ► add optional esign field in pdf propal ► (v8.0+)&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Services Module&#039;&#039;&#039; ==&lt;br /&gt;
* &#039;&#039;&#039;SERVICE_ARE_ECOMMERCE_200238EC&#039;&#039;&#039; ► If this option is enabled, services are processed like eServices according to directive of EU Council Directive 2002/38/EC (http://ec.europa.eu/taxation_customs/taxation/vat/traders/e-commerce/article_1610_en.htm). Default VAT rate are based on buying country instead of selling country for BtoC sells.&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Shipments&#039;&#039;&#039; ==&lt;br /&gt;
* &#039;&#039;&#039;STOCK_WAREHOUSE_NOT_REQUIRED_FOR_SHIPMENTS&#039;&#039;&#039; ► If set, you can add a shipment line, with no stock source defined. ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;SHIPMENT_GETS_ALL_ORDER_PRODUCTS&#039;&#039;&#039; ► Add all order lines in shipment, including the one with 0 in quantity&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Stocks&#039;&#039;&#039; ==&lt;br /&gt;
* &#039;&#039;&#039;CASHDESK_FORCE_STOCK_ON_BILL&#039;&#039;&#039; =&amp;gt; Option to force decrease of stock whatever is user setup. ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;SUPPLIER_ORDER_DISABLE_STOCK_DISPATCH_WHEN_TOTAL_REACHED&#039;&#039;&#039; ► Disable stock dispatch when total expected was already received.&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Suppliers Module&#039;&#039;&#039; ==&lt;br /&gt;
* &#039;&#039;&#039;FOURN_PRODUCT_AVAILABILITY&#039;&#039;&#039; ► On the Suppliers price page of the products, activate the supplier product availability. &#039;&#039;This is duplicate feature with delivery_delay introduced with 3.8.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;RELOAD_PAGE_ON_SUPPLIER_CHANGE&#039;&#039;&#039; ► On creation of a supplier order/invoice, reload form with supplier-specific details when supplier is selected from drop-down list.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;SUPPLIER_ORDER_AUTOADD_USER_CONTACT&#039;&#039;&#039; ► Add user approving supplier order as a contact automatically.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;SUPPLIER_ORDER_DEFAULT_PAYMENT_MODE_ID&#039;&#039;&#039; ► Set the default payment method for suppliers (&amp;lt;code&amp;gt;rowid&amp;lt;/code&amp;gt; in table &amp;lt;code&amp;gt;llx_c_paiement&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;SUPPLIER_ORDER_USE_DISPATCH_STATUS&#039;&#039;&#039; ► Add a status on each dispatch order line when receiving products from suppliers ► (v4.0+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;SUPPLIER_ORDER_NO_DIRECT_APPROVE&#039;&#039;&#039; ► No button &amp;quot;Validate and Approve&amp;quot;. Always do step &amp;quot;Validate&amp;quot; and &amp;quot;Approve&amp;quot; in 2 steps.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;SUPPLIER_ORDER_WITH_PREDEFINED_PRICES_ONLY&#039;&#039;&#039; ► Restrict selection of products in supplier order to only those with a buying price defined for that supplier. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;SUPPLIER_ORDER_EDIT_BUYINGPRICE_DURING_RECEIPT&#039;&#039;&#039; ► Can modify the buying price used for PMP calculation when making a stock reception on a supplier order. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;SUPPLIER_PROPOSAL_WITH_PREDEFINED_PRICES_ONLY&#039;&#039;&#039; ► Restrict selection of products in supplier proposal to only those with a buying price defined for that supplier. ► (v6.0+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;DISPLAY_DISCOUNTED_SUPPLIER_PRICE&#039;&#039;&#039; ► Allow to display discounted supplier price when searching product in supplier documents ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_CAN_EDIT_SUPPLIER_ON_SUPPLIER_ORDER&#039;&#039;&#039; ►  Allow to change the supplier on a draft supplier order ► (v10.0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Third Parties Module&#039;&#039;&#039; ==&lt;br /&gt;
* &#039;&#039;&#039;COMPANY_AQUARIUM_CLEAN_REGEX&#039;&#039;&#039; ► Add a REGEX rule on the third parties names. It applies a regex replacement pattern on generated code if COMPANY_AQUARIUM_CLEAN_REGEX is set. Value must be a regex with parenthesis. The part into parenthesis is kept, the rest removed. For example if COMPANY_AQUARIUM_CLEAN_REGEX = &#039;&amp;lt;code&amp;gt;^..(..)..(.*)&amp;lt;/code&amp;gt;&#039; the first char and second char are removed and the char 5 and 6 too ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_FORCE_DEFAULT_STATE_ID&#039;&#039;&#039; ►  &amp;lt;code&amp;gt;rowid (integer)&amp;lt;/code&amp;gt; of a state/province as defined in &amp;lt;code&amp;gt;llx_c_departements&amp;lt;/code&amp;gt;. On the creation of a third party/contact, the state/province corresponding to this rowid is preselected in the dropdown list. ► (&amp;gt;= 8.0.1)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;SOCIETE_DISABLE_CUSTOMERS&#039;&#039;&#039; ► Remove all menu and features related to customers&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;SOCIETE_DISABLE_PROSPECTS&#039;&#039;&#039; ► Remove all menu and features related to prospects&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;SOCIETE_DISABLE_STATE&#039;&#039;&#039; ► Do not use field &amp;quot;state/province&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;THIRDPARTY_NOTCUSTOMERPROSPECT_BY_DEFAULT&#039;&#039;&#039; ► Do not set status &amp;quot;Customer/Prospect&amp;quot; to &amp;quot;on&amp;quot; when creating a new third party from menu &amp;quot;New third party&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;THIRDPARTY_NOTSUPPLIER_BY_DEFAULT&#039;&#039;&#039; ► Do not set status &amp;quot;Supplier&amp;quot; to &amp;quot;on&amp;quot; when creating a new third party from menu &amp;quot;New third party&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;SOCIETE_SORT_ON_TYPEENT&#039;&#039;&#039; ► The combo list of &amp;quot;type of third party&amp;quot; is sorted on a field &amp;quot;position&amp;quot; that appears into dictionary instead of alphabetical order.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;THIRDPARTY_DEFAULT_CREATE_CONTACT&#039;&#039;&#039; ► With this setting as &#039;&#039;&#039;1&#039;&#039;&#039; the option is set for third parties to be created WITH the child contact ► (v5.0+)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;THIRDPARTY_DEFAULT_USEVAT&#039;&#039;&#039; ► When creating a new third party, the field &amp;quot;Use vat&amp;quot; is set to on or off depending on value of this parameter.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;THIRDPARTY_DEFAULT_USELOCALTAX1&#039;&#039;&#039; ► When creating a new third party, the field &amp;quot;Use second tax&amp;quot; is set to on or off depending on value of this parameter.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;THIRDPARTY_DEFAULT_USELOCALTAX2&#039;&#039;&#039; ► When creating a new third party, the field &amp;quot;Use third tax&amp;quot; is set to on or off depending on value of this parameter.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;THIRDPARTY_INCLUDE_PARENT_IN_LINKTO&#039;&#039;&#039; ► Search also for elements on parent third party when using the &amp;quot;link to&amp;quot; object feature.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;THIRDPARTY_INCLUDE_PROJECT_THIRDPARY_IN_LINKTO&#039;&#039;&#039; ► Search also for elements on third party that own the project of the current element when using the &amp;quot;link to&amp;quot; object feature (if project is owned by a different thirdparty than current one).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;SOCIETE_ASK_FOR_SHIPPING_METHOD&#039;&#039;&#039; ► Shipping method can be predefined on customer card and will be used as default on order creation&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;THIRDPARTY_LOGO_ALLOW_EXTERNAL_DOWNLOAD&#039;&#039;&#039; ► When a logo is uploaded, a share key is automatically set so the file can be downloaded using the share key.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MAIN_DISABLE_RESTRICTION_ON_THIRDPARTY_FOR_EXTERNAL&#039;&#039;&#039; ► External users are always restricted on the thirdparty of their contact record. With this option, permission &amp;quot;see all thirdparty&amp;quot; may works also for external user. Not implemented yet...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;THIRDPARTY_CAN_HAVE_CATEGORY_EVEN_IF_NOT_CUSTOMER_PROSPECT_SUPPLIER&#039;&#039;&#039; ► Possible to add Categories to third parties that are not customer, prospect or supplier.&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;VAT Report&#039;&#039;&#039; ==&lt;br /&gt;
* &#039;&#039;&#039;MAIN_INCLUDE_ZERO_VAT_IN_REPORTS&#039;&#039;&#039; ► Include lines with VAT to 0% (for &amp;quot;auto-liquidation&amp;quot; in EEC) ► (v8.0.3+)&lt;br /&gt;
[[#Top|(back to top)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;WYSIWYG Editor&#039;&#039;&#039; ==&lt;br /&gt;
* &#039;&#039;&#039;FCKEDITOR_ENABLE_DETAILS_FULL&#039;&#039;&#039; ► Can cut and paste external images (hosted on external server) into description of proposal, orders or invoices. WARNING: PDF generation is not guaranteed with this. Also if the image is removed or renamed by the image hosting service, your proposal, order or invoice will be broken.&lt;br /&gt;
[[#Top|(back to top)]]&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Table_llx_subscription&amp;diff=38756</id>
		<title>Table llx subscription</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Table_llx_subscription&amp;diff=38756"/>
		<updated>2018-07-04T06:36:46Z</updated>

		<summary type="html">&lt;p&gt;Iouston: Ajout du nouveau nom de la table (llx_subscription)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Table SQL]]&lt;br /&gt;
[[Category:Foundations]]&lt;br /&gt;
[[Category:Adhérent]]&lt;br /&gt;
[[Category:Miembros]]&lt;br /&gt;
&lt;br /&gt;
{{ListOfTables}}&lt;br /&gt;
&lt;br /&gt;
= Content/Contenu/Contenido =&lt;br /&gt;
{{flag en}} Contains the afiliations of members of the association module. In version 7.xx of dolibarr, the table is now called llx_subscription&lt;br /&gt;
&lt;br /&gt;
{{flag fr}} Contient les cotisations des adhérents du module association. Dans la version 7.xx de dolibarr, la table s&#039;appelle désormais llx_subscription&lt;br /&gt;
&lt;br /&gt;
{{flag sp}} Contiene las cotizaciones de los miembros del módulo miembros. En la versión 7.xx de dolibarr, la tabla se llama ahora llx_subscription&lt;br /&gt;
&lt;br /&gt;
= Structure =&lt;br /&gt;
== Table ==&lt;br /&gt;
{|  align=&amp;quot;left&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; class=&amp;quot;dolbox&amp;quot;&lt;br /&gt;
 |style=&amp;quot;background-color: #e9e9ef&amp;quot;| &amp;lt;b&amp;gt;Field&amp;lt;/b&amp;gt;&lt;br /&gt;
 |style=&amp;quot;background-color: #e9e9ef&amp;quot;| &amp;lt;b&amp;gt;Type&amp;lt;/b&amp;gt;&lt;br /&gt;
 |style=&amp;quot;background-color: #e9e9ef&amp;quot;| &amp;lt;b&amp;gt;Null&amp;lt;/b&amp;gt;&lt;br /&gt;
 |style=&amp;quot;background-color: #e9e9ef&amp;quot;| &amp;lt;b&amp;gt;Key&amp;lt;/b&amp;gt;&lt;br /&gt;
 |style=&amp;quot;background-color: #e9e9ef&amp;quot;| &amp;lt;b&amp;gt;Default&amp;lt;/b&amp;gt;&lt;br /&gt;
 |style=&amp;quot;background-color: #e9e9ef&amp;quot;| &amp;lt;b&amp;gt;Extra&amp;lt;/b&amp;gt;&lt;br /&gt;
 |style=&amp;quot;background-color: #e9e9ef&amp;quot;| &amp;lt;b&amp;gt;Description&amp;lt;/b&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| rowid &lt;br /&gt;
| int(11) &lt;br /&gt;
| NO&lt;br /&gt;
| PRI&lt;br /&gt;
| &lt;br /&gt;
| auto_increment &lt;br /&gt;
| technical index&lt;br /&gt;
{{FieldTms}}&lt;br /&gt;
|-&lt;br /&gt;
| datec&lt;br /&gt;
| datetime&lt;br /&gt;
| YES&lt;br /&gt;
| &lt;br /&gt;
| NULL&lt;br /&gt;
| &lt;br /&gt;
| date of creation&lt;br /&gt;
|-&lt;br /&gt;
| fk_adherent &lt;br /&gt;
| int(11)&lt;br /&gt;
| YES&lt;br /&gt;
| UNI&lt;br /&gt;
| NULL&lt;br /&gt;
| &lt;br /&gt;
| ID of member ([[Table llx_adherent|llx_adherent]]-&amp;gt;rowid)&lt;br /&gt;
|-&lt;br /&gt;
| dateadh&lt;br /&gt;
| datetime&lt;br /&gt;
| YES&lt;br /&gt;
| UNI&lt;br /&gt;
| NULL&lt;br /&gt;
| &lt;br /&gt;
| date of afiliation&lt;br /&gt;
|-&lt;br /&gt;
| datef&lt;br /&gt;
| date&lt;br /&gt;
| YES&lt;br /&gt;
| &lt;br /&gt;
| NULL&lt;br /&gt;
| &lt;br /&gt;
| date of end afiliation&lt;br /&gt;
|-&lt;br /&gt;
| cotisation&lt;br /&gt;
| double&lt;br /&gt;
| YES&lt;br /&gt;
| &lt;br /&gt;
| NULL&lt;br /&gt;
| &lt;br /&gt;
| amount of afiliation&lt;br /&gt;
|-&lt;br /&gt;
| fk_bank&lt;br /&gt;
| int(11)&lt;br /&gt;
| YES&lt;br /&gt;
| &lt;br /&gt;
| NULL&lt;br /&gt;
| &lt;br /&gt;
| ID of bank to pay ([[Table llx_bank_account|llx_bank_account]]-&amp;gt;rowid)&lt;br /&gt;
|-&lt;br /&gt;
| note&lt;br /&gt;
| text&lt;br /&gt;
| YES&lt;br /&gt;
| &lt;br /&gt;
| NULL&lt;br /&gt;
| &lt;br /&gt;
| notes&lt;br /&gt;
|}&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== Keys ==&lt;br /&gt;
{|  align=&amp;quot;left&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; class=&amp;quot;dolbox&amp;quot;&lt;br /&gt;
 |style=&amp;quot;background-color: #e9e9ef&amp;quot;| &amp;lt;b&amp;gt;Key&amp;lt;/b&amp;gt;&lt;br /&gt;
 |style=&amp;quot;background-color: #e9e9ef&amp;quot;| &amp;lt;b&amp;gt;Type&amp;lt;/b&amp;gt;&lt;br /&gt;
 |style=&amp;quot;background-color: #e9e9ef&amp;quot;| &amp;lt;b&amp;gt;Fields&amp;lt;/b&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| PRIMARY&lt;br /&gt;
| PRIMARY&lt;br /&gt;
| rowid&lt;br /&gt;
|- &lt;br /&gt;
| uk_cotisation  &lt;br /&gt;
| UNIQUE&lt;br /&gt;
| fk_adherent,dateadh &lt;br /&gt;
|}&amp;amp;nbsp;&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=DevCamp_Nancy_2018_Organization&amp;diff=38280</id>
		<title>DevCamp Nancy 2018 Organization</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=DevCamp_Nancy_2018_Organization&amp;diff=38280"/>
		<updated>2018-02-03T21:12:25Z</updated>

		<summary type="html">&lt;p&gt;Iouston: subscription for julien marchand&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOINDEX__&lt;br /&gt;
{{TemplateAssoEn}}&lt;br /&gt;
[[Category:DevCamps]]&lt;br /&gt;
&lt;br /&gt;
= Event =&lt;br /&gt;
&#039;&#039;&#039;Dolibarr Spring DevCamp 2018&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
First Dolibarr Devcamp in Nancy is planned. &lt;br /&gt;
&lt;br /&gt;
The DevCamp is a meeting where developers meets each other to speak (and develop a little bit) about Dolibarr ERP CRM. We are speaking about What&#039;s new, best practice. Participating to the devcamp means you are and want to be evolved in Dolibarr project and knows the Dolibarr developers rules. It also means you are ready to speak during 2 days and 2 dates (see planning) with a dozen of other geeks. Talks done by project leader will be published on social networks.&lt;br /&gt;
This year, to avoid people subscribing and not coming, we are requesting to pay a 50 euros subscription. Number of places is limited to 20.&lt;br /&gt;
&lt;br /&gt;
We hope to publish the main talks on social network like periscope or facebook live or youtube (to be defined)&lt;br /&gt;
&lt;br /&gt;
== Dates ==&lt;br /&gt;
March 2018, 9-10-11&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
[HOTEL MERCURE NANCY CENTRE GARE],11 Rue Raymond Poincare&lt;br /&gt;
54000  NANCY - FRANCE&lt;br /&gt;
GPS :N 48° 41&#039; 26.20&#039;&#039; E 6° 10&#039; 28.51&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== How to come ==&lt;br /&gt;
&lt;br /&gt;
* TrainStation : Nancy Centre - the hotel is 100m from the train station - Opposite the train station, Place Thiers exit&lt;br /&gt;
Shuttle to Lorraine TGV train station and Metz Nancy Airport nearby.&lt;br /&gt;
* Car: From Paris or Strasbourg: take the A4 motorways - From Brussels, Luxembourg and Dijon: take the A31 motorway. Head toward &amp;quot;centre ville&amp;quot; and then &amp;quot;gare SNCF&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Main languages ==&lt;br /&gt;
* French / English&lt;br /&gt;
&lt;br /&gt;
== Organizers ==&lt;br /&gt;
* Main: INOVEA CONSEIL (info@inovea-conseil.com) - TIARIS (jean.heimburger@tiaris.info)&lt;br /&gt;
* Hosting: INOVEA CONSEIL (info@inovea-conseil.com)&lt;br /&gt;
* Lodging and Catering: INOVEA CONSEIL (info@inovea-conseil.com)&lt;br /&gt;
&lt;br /&gt;
== Lodging and catering ==&lt;br /&gt;
Meals and bedrooms will be provided during the devcamp by the Mercure hotel.&lt;br /&gt;
&lt;br /&gt;
== Food ==&lt;br /&gt;
We will have a cocktail on Friday evening before dinner to welcome you in Nancy!&lt;br /&gt;
&lt;br /&gt;
= Planning =&lt;br /&gt;
&lt;br /&gt;
== Day 1 (Friday) ==&lt;br /&gt;
* 14:00 - Welcome - Presentation - Networking&lt;br /&gt;
* 17:00 - Presentation &amp;quot;Dolibarr - What&#039;s new in 7.0 - Devcamp Nancy 2018&amp;quot; (new features) =&amp;gt; video streaming available (en french)&lt;br /&gt;
* 18:00 - Presentation &amp;quot;Dolibarr - Information for developers and partners - Devcamp Nancy 2018&amp;quot; (new Module website + Module builder) =&amp;gt; video streaming available (in french)&lt;br /&gt;
* 20:00 - Dinner&lt;br /&gt;
* 21:00 - Bug tracking and closing issues - also called &amp;quot;The night, the Pull Request validator sleeps, except for bug fixes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Day 2 (Saturday) ==&lt;br /&gt;
* 8:00 - 12:00 - Bug tracking and closing issues&lt;br /&gt;
* 12:00 - Lunch&lt;br /&gt;
* 15:00 - Dolibarr Foundation assembly &lt;br /&gt;
* 16:00 - Presentation: &amp;quot;Dolibarr - The new architecture of Dolibarr foundation tools - Devcamp Nancy 2018&amp;quot; (new architecture, password management, ...) =&amp;gt; video streaming available (in french)&lt;br /&gt;
* 20:00 - Dinner&lt;br /&gt;
* 21:00 - Bug tracking and closing issues - also called &amp;quot;The night, the Pull Request validator sleeps, except for bug fixes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Day 3 (Sunday) ==&lt;br /&gt;
* 8:00 - 12:00 - Bug tracking and closing issues&lt;br /&gt;
&lt;br /&gt;
= Topics and issues to work on =&lt;br /&gt;
&#039;&#039;Open for suggestions and volunteers&#039;&#039;&lt;br /&gt;
* Bugfix contest&lt;br /&gt;
* Tools for foundation&lt;br /&gt;
* Roadmap ?&lt;br /&gt;
&lt;br /&gt;
= Attendees registration =&lt;br /&gt;
Please enter here your record if you plan to be present to this devcamp. &lt;br /&gt;
&#039;&#039;&#039;You need a wiki account. If you don&#039;t have it yet, send an email to contact@dolibarr.org to ask one or ask organisators &#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* Lastname Firstname: &lt;br /&gt;
* Age: &lt;br /&gt;
* Coming from (town, country): &lt;br /&gt;
* Arrival date and hour: &lt;br /&gt;
* Departure date and hour: &lt;br /&gt;
* Transportation (Train/Bus/Car/Plane): &lt;br /&gt;
* Food (Special diet, allergies, vegetarian, none…): &lt;br /&gt;
* Accommodation (Common booked hotel/self…): &lt;br /&gt;
* Book hotel for me (yes/no):&lt;br /&gt;
* Contact email:&lt;br /&gt;
&lt;br /&gt;
= Validate registration =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To validate your registration, you must make a bank transfer of 50 € per person&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Banque: CAISSE D&#039;EPARGNE&lt;br /&gt;
Code banque: 14505&lt;br /&gt;
Code guichet: 00001&lt;br /&gt;
Numéro de compte: 08000207968&lt;br /&gt;
Clé: 70&lt;br /&gt;
&lt;br /&gt;
Domiciliation: Agence Olivet&lt;br /&gt;
107, rue Jules-Marie Simon&lt;br /&gt;
45160 OLIVET&lt;br /&gt;
FRANCE&lt;br /&gt;
Nom du propriétaire du compte: Association Dolibarr&lt;br /&gt;
Code IBAN: FR76 1450 5000 0108 0002 0796 870&lt;br /&gt;
Code BIC/SWIFT: CEPAFRPP450&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
------------------------------------------&lt;br /&gt;
&lt;br /&gt;
[[File:Nicolas_Zabouri.png‎|40px]] &lt;br /&gt;
* Lastname Firstname: [[Inovea Conseil | Nicolas ZABOURI]]&lt;br /&gt;
* Age: 35&lt;br /&gt;
* Coming from (town, country): Essegney (88), France&lt;br /&gt;
* Arrival date and hour: Friday 12:00&lt;br /&gt;
* Departure date and hour: Sunday 14:00&lt;br /&gt;
* Transportation (Train/Bus/Car/Plane): Car&lt;br /&gt;
* Food (Special diet, allergies, vegetarian…): None&lt;br /&gt;
* Accommodation (Common booked hotel/self…): Mercure&lt;br /&gt;
* Book hotel for me (yes/no): yes&lt;br /&gt;
* Contact email: info@inovea-conseil.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Jean_Heimburger.png‎|40px]] &lt;br /&gt;
* Lastname Firstname: [[Jean_Heimburger | Heimburger Jean ]]&lt;br /&gt;
* Age: 57&lt;br /&gt;
* Coming from (town, country): Walscheid (57), France&lt;br /&gt;
* Arrival date and hour: Friday 12:00&lt;br /&gt;
* Departure date and hour: Sunday 16:00&lt;br /&gt;
* Transportation (Train/Bus/Car/Plane): Train&lt;br /&gt;
* Food (Special diet, allergies, vegetarian…): None&lt;br /&gt;
* Accommodation (Common booked hotel/self…): Mercure&lt;br /&gt;
* Book hotel for me (yes/no): yes&lt;br /&gt;
* Contact email: jean.heimburger@tiaris.info&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Laurent_Destailleur‎.png|40px]] &lt;br /&gt;
* Lastname Firstname: [[Laurent Destailleur|Laurent Destailleur]]&lt;br /&gt;
* Age: 45&lt;br /&gt;
* Coming from (town, country): Pessac (33), France&lt;br /&gt;
* Arrival date and hour: To be defined&lt;br /&gt;
* Departure date and hour: To be defined&lt;br /&gt;
* Transportation (Train/Bus/Car/Plane): Train&lt;br /&gt;
* Food (Special diet, allergies, vegetarian…): None&lt;br /&gt;
* Accommodation (Common booked hotel/self…): To be defined&lt;br /&gt;
* Book hotel for me (yes/no): yes&lt;br /&gt;
* Contact email: eldy@destailleur.fr&lt;br /&gt;
&lt;br /&gt;
[[File:Philippe.GRAND.jpg|40px]] &lt;br /&gt;
* Lastname Firstname: [[Philippe Grand|Philippe Grand]]&lt;br /&gt;
* Age: unknown&lt;br /&gt;
* Coming from (town, country): Olivet (45), France&lt;br /&gt;
* Arrival date and hour: To be defined&lt;br /&gt;
* Departure date and hour: To be defined&lt;br /&gt;
* Transportation (Train/Bus/Car/Plane): Train&lt;br /&gt;
* Food (Special diet, allergies, vegetarian…): None&lt;br /&gt;
* Accommodation (Common booked hotel/self…): To be defined&lt;br /&gt;
* Book hotel for me (yes/no): no&lt;br /&gt;
* Contact email: philippe.grand@atoo-net.com&lt;br /&gt;
&lt;br /&gt;
[[File:Maxime_Kohlhaas.png|40px]] &lt;br /&gt;
* Firstname Lastname:[[Maxime Kohlhaas]]&lt;br /&gt;
* Age: 30&lt;br /&gt;
* Coming from (town, country): Valence (26000), France&lt;br /&gt;
* Arrival date and hour: To be defined&lt;br /&gt;
* Departure date and hour: To be defined&lt;br /&gt;
* Transportation (Train/Bus/Car/Plane): Train&lt;br /&gt;
* Food (Special diet, allergies, vegetarian…): None&lt;br /&gt;
* Accommodation (Common booked hotel/self…):Hotel Mercure&lt;br /&gt;
* Book hotel for me (yes/no): yes&lt;br /&gt;
* Contact email: maxime@atm-consulting.fr&lt;br /&gt;
&lt;br /&gt;
[[File:Florian Henry.png|40px]]&lt;br /&gt;
* Lastname Firstname: [[Florian Henry]]&lt;br /&gt;
* Age: 37&lt;br /&gt;
* Coming from (town, country): Valence (26000), France&lt;br /&gt;
* Arrival date and hour: No&lt;br /&gt;
* Departure date and hour: No&lt;br /&gt;
* Transportation (Train/Bus/Car/Plane): Train&lt;br /&gt;
* Food (Special diet, allergies, vegetarian…): None&lt;br /&gt;
* Accommodation (Common booked hotel/self…): Hotel Mercure&lt;br /&gt;
* Book hotel for me (yes/no): yes&lt;br /&gt;
* Email for contact: florian.henry@atm-consulting.fr&lt;br /&gt;
&lt;br /&gt;
[[File:Alexis Algoud.png|40px]]&lt;br /&gt;
* Lastname Firstname: [[Alexis Algoud]]&lt;br /&gt;
* Age: 37&lt;br /&gt;
* Coming from (town, country): Valence (26000), France&lt;br /&gt;
* Arrival date and hour: No&lt;br /&gt;
* Departure date and hour: No&lt;br /&gt;
* Transportation (Train/Bus/Car/Plane): Train&lt;br /&gt;
* Food (Special diet, allergies, vegetarian…): None&lt;br /&gt;
* Accommodation (Common booked hotel/self…): Hotel Mercure&lt;br /&gt;
* Book hotel for me (yes/no): yes&lt;br /&gt;
* Email for contact: alexis@atm-consulting.fr&lt;br /&gt;
&lt;br /&gt;
[[File:.png|40px]]&lt;br /&gt;
* Lastname Firstname: [[Anthony Damhet]]&lt;br /&gt;
* Age: 33&lt;br /&gt;
* Coming from (town, country): Angoulême (16000), France&lt;br /&gt;
* Arrival date and hour: No&lt;br /&gt;
* Departure date and hour: No&lt;br /&gt;
* Transportation (Train/Bus/Car/Plane): Train&lt;br /&gt;
* Food (Special diet, allergies, vegetarian…): None&lt;br /&gt;
* Accommodation (Common booked hotel/self…): self&lt;br /&gt;
* Book hotel for me (yes/no): no&lt;br /&gt;
* Email for contact: anthony.damhet@gmail.com&lt;br /&gt;
&lt;br /&gt;
[[File:.png|40px]]&lt;br /&gt;
* Lastname Firstname: [[Olivier Tourvieille]]&lt;br /&gt;
* Age: 49&lt;br /&gt;
* Coming from (town, country): Angoulême (16000), France&lt;br /&gt;
* Arrival date and hour: No&lt;br /&gt;
* Departure date and hour: No&lt;br /&gt;
* Transportation (Train/Bus/Car/Plane): Train&lt;br /&gt;
* Food (Special diet, allergies, vegetarian…): None&lt;br /&gt;
* Accommodation (Common booked hotel/self…): self&lt;br /&gt;
* Book hotel for me (yes/no): no&lt;br /&gt;
* Email for contact: o.tourvieille@gmail.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Abbes_bahfir.png|40px]]&lt;br /&gt;
* Lastname Firstname: [[Abbes Bahfir]]&lt;br /&gt;
* Age: 51&lt;br /&gt;
* Coming from (town, country): Algiers (16000), Algeria&lt;br /&gt;
* Arrival date and hour: No&lt;br /&gt;
* Departure date and hour: No&lt;br /&gt;
* Transportation (Train/Bus/Car/Plane): Plane&lt;br /&gt;
* Food (Special diet, allergies, vegetarian…): None&lt;br /&gt;
* Accommodation (Common booked hotel/self…): Common booked hotel&lt;br /&gt;
* Book hotel for me (yes/no): yes&lt;br /&gt;
* Email for contact: bafbes@gmail.com&lt;br /&gt;
&lt;br /&gt;
[[File:Charlie_b.JPG‎|40px]] &lt;br /&gt;
* Firstname Lastname:[[Charlie Benke]]&lt;br /&gt;
* Age: 49&lt;br /&gt;
* Coming from (town, country): Lyon (69000), France&lt;br /&gt;
* Arrival date and hour: Friday 12:00&lt;br /&gt;
* Departure date and hour: Sunday 14:00&lt;br /&gt;
* Transportation (Train/Bus/Car/Plane): Train&lt;br /&gt;
* Food (Special diet, allergies, vegetarian…): None&lt;br /&gt;
* Accommodation (Common booked hotel/self…): None&lt;br /&gt;
* Book hotel for me (yes/no): yes&lt;br /&gt;
* Contact email: charlie@benke.fr&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[] &lt;br /&gt;
* Firstname Lastname:[[Claude Castellano]]&lt;br /&gt;
* Age: 69&lt;br /&gt;
* Coming from (town, country): Le Vigan(30120), France&lt;br /&gt;
* Arrival date and hour: Friday 12:00&lt;br /&gt;
* Departure date and hour: Sunday 14:00&lt;br /&gt;
* Transportation (Train/Bus/Car/Plane): Voiture&lt;br /&gt;
* Food (Special diet, allergies, vegetarian…): None&lt;br /&gt;
* Accommodation (Common booked hotel/self…): Je regarde&lt;br /&gt;
* Book hotel for me (yes/no): no&lt;br /&gt;
* Contact email: claude@cigaleaventure.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[] &lt;br /&gt;
* Firstname Lastname:[[Rachid HRICH]]&lt;br /&gt;
* Age: 45&lt;br /&gt;
* Coming from (town, country): Rabat (10000), Morocco&lt;br /&gt;
* Arrival date and hour: Friday 15:00&lt;br /&gt;
* Departure date and hour: Sunday 16:00&lt;br /&gt;
* Transportation (Train/Bus/Car/Plane): Car&lt;br /&gt;
* Food (Special diet, allergies, vegetarian…): None&lt;br /&gt;
* Accommodation (Common booked hotel/self…): Hotel Mercure&lt;br /&gt;
* Book hotel for me (yes/no): yes&lt;br /&gt;
* Contact email: rachid.hrich@gmail.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lastname Firstname: Eric GROULT&lt;br /&gt;
* Age: 37&lt;br /&gt;
* Coming from (town, country): NANTES (44100), France&lt;br /&gt;
* Arrival date and hour: Friday 15:00&lt;br /&gt;
* Departure date and hour: Sunday 17:00&lt;br /&gt;
* Transportation (Train/Bus/Car/Plane): Train&lt;br /&gt;
* Food (Special diet, allergies, vegetarian…): None&lt;br /&gt;
* Accommodation (Common booked hotel/self…): Hotel Mercure&lt;br /&gt;
* Book hotel for me (yes/no): yes&lt;br /&gt;
* Email for contact: eric@code42.fr&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lastname Firstname: David MOYON&lt;br /&gt;
* Age: 32&lt;br /&gt;
* Coming from (town, country): NANTES (44100), France&lt;br /&gt;
* Arrival date and hour: Friday 15:00&lt;br /&gt;
* Departure date and hour: Sunday 17:00&lt;br /&gt;
* Transportation (Train/Bus/Car/Plane): Train&lt;br /&gt;
* Food (Special diet, allergies, vegetarian…): None&lt;br /&gt;
* Accommodation (Common booked hotel/self…): Hotel Mercure&lt;br /&gt;
* Book hotel for me (yes/no): yes&lt;br /&gt;
* Email for contact: eric@code42.fr&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lastname Firstname: Julien Marchand&lt;br /&gt;
* Age: 35&lt;br /&gt;
* Coming from (town, country): Einville au Jard (54370), France&lt;br /&gt;
* Arrival date and hour: Saturday morning&lt;br /&gt;
* Departure date and hour: Sunday 17:00&lt;br /&gt;
* Transportation (Train/Bus/Car/Plane): Tramway&lt;br /&gt;
* Food (Special diet, allergies, vegetarian…): None&lt;br /&gt;
* Accommodation (Common booked hotel/self…): in my house&lt;br /&gt;
* Book hotel for me (yes/no): no&lt;br /&gt;
* Email for contact: julien.marchand@iouston.com&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Setup_Other&amp;diff=38248</id>
		<title>Setup Other</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Setup_Other&amp;diff=38248"/>
		<updated>2018-01-31T08:41:20Z</updated>

		<summary type="html">&lt;p&gt;Iouston: add a warning on MAIN_USE_CACHE_MANIFEST&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Admin]]&lt;br /&gt;
{{TemplateDocUser}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Help about screen:&#039;&#039;&#039; Other setup&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Menu path:&#039;&#039;&#039; Home -&amp;gt; Setup -&amp;gt; Other&lt;br /&gt;
&lt;br /&gt;
= Goal =&lt;br /&gt;
This page is built to add/edit new parameters without a dedicated page to edit them. In most cases, it is parameters for your own development, external modules, or hidden features which can allow some tweaking to your own Dolibarr instance.&lt;br /&gt;
&lt;br /&gt;
For standard usage of Dolibarr, this screen must be kept empty and not be used.&lt;br /&gt;
&lt;br /&gt;
= List of Known Hidden Options =&lt;br /&gt;
Some options are not visible in the interface (often because they are deprecated or are beta features). In most cases you do not need these functions and their use may make the application unstable.&lt;br /&gt;
&lt;br /&gt;
To enable them you have to define a constant to &#039;&#039;&#039;1&#039;&#039;&#039; in &#039;&#039;&#039;Home -&amp;gt; Setup -&amp;gt; Other Setup&#039;&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
== Global Options ==&lt;br /&gt;
* MAIN_FILESYSTEM_ENCODING =&amp;gt; With some PHP version, PHP is not able to detect what is page code for filesystem of the server OS. To solve this, Dolibarr suppose your OS filesystem is UTF-8 if on linux or osx system, and iso-8859-1 if on Windows. If not, for example on a Windows server with a NTFS UTF-8 pagecode, you can set the variable MAIN_FILESYSTEM_ENCODING to &amp;quot;utf-8&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* MAIN_SHOW_TECHNICAL_ID =&amp;gt; Show also technical IDs on elements cards or some lists (not supported everywhere).&lt;br /&gt;
&lt;br /&gt;
* MAIN_MAXTABS_IN_CARD =&amp;gt; Max number of tabs visible. Others are grouped into a combo list.&lt;br /&gt;
&lt;br /&gt;
* MAIN_ONLY_LOGIN_ALLOWED =&amp;gt; Only the specified login is allowed to log in Dolibarr (maintenance mode)&lt;br /&gt;
&lt;br /&gt;
* MAIN_AUTO_TIMESTAMP_IN_PUBLIC_NOTES =&amp;gt; Add a timestamp and user automatically when editing the &#039;&#039;public&#039;&#039; note.&lt;br /&gt;
&lt;br /&gt;
* MAIN_AUTO_TIMESTAMP_IN_PRIVATE_NOTES =&amp;gt; Add a timestamp and user automatically when editing the &#039;&#039;private&#039;&#039; note.&lt;br /&gt;
&lt;br /&gt;
* MAIN_SECURITY_CSRF_WITH_TOKEN (&amp;gt;= 5.0) =&amp;gt; Activate a second anti CSRF protection on POST (a POST from another web site can&#039;t be done). Note there is already a default protection using test on referrer. This second protection uses TOKEN on forms and is less powerful.&lt;br /&gt;
&lt;br /&gt;
* MAIN_APPLICATION_TITLE =&amp;gt; This will change the title of software (that appears on the login page by default). Warning, changing this may make Dolibarr version detection fails by smartphone applications like [[Application Android - DoliDroid]]&lt;br /&gt;
&lt;br /&gt;
* MAIN_AUTOFILL_DATE =&amp;gt; If this constant is defined (to something else than 0), the date of invoice, proposal, order or payment are filled with current date. It is highly recommended to NOT ENABLE this feature. This create a lot of input errors with no data not validated by users. This lead in bad values saved in database giving headaches when you have to do your accountancy reports ! However some users want it, so we provide it.&lt;br /&gt;
&lt;br /&gt;
* MAIN_DISABLE_FULL_SCANLIST =&amp;gt; Constant to define to disable complete scan of tables to know the total amount of element to allow the pagination to show total number of pages. To activate on systems with a very important number of data (Tables with more than 500 000 records).&lt;br /&gt;
&lt;br /&gt;
* MAIN_FIRST_TO_UPPER =&amp;gt; Dolibarr add uppercase to thirdparties, contacts or members names if not done. Warning, with some languages (whose words with uppercase are not same words, or pagecode does not always have an uppercase, like cyrillic languages), this feature may alter your data.&lt;br /&gt;
&lt;br /&gt;
* MAIN_ENABLE_LOG_TO_HTML (MAIN_LOGTOHTML before 3.9) =&amp;gt; If this constants is defined, it is possible to have logs inside pages by adding the parameter &amp;amp;logtohtml=1 into URL.&lt;br /&gt;
&lt;br /&gt;
* MAIN_USE_HOURMIN_IN_DATE_RANGE =&amp;gt; On all entities lines (invoice, order, contract...), it is possible to add hour and minutes with date on fields &amp;quot;date start&amp;quot; and &amp;quot;date end&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* MAIN_REMOVE_INSTALL_WARNING =&amp;gt; Remove all security warning that appears to administrator users if URL /install is public. You should solve the problem if warning occurs instead of removing this warning. For this, put a file called install.lock into Dolibarr root directory. This will remove warning but also make the page /install not possible to use to protect your installation.&lt;br /&gt;
&lt;br /&gt;
* MAIN_OPTIMIZE_SPEED =&amp;gt; Use some speed enhancements. See page [[Increase_Performance]] for more information.&lt;br /&gt;
&lt;br /&gt;
* MAIN_REPLACE_TRANS_xx_XX =&amp;gt; Where xx_XX is language code. If value is string1:newstring1;string2:newstring2 then replace string1 with newstring1 in all translation done for language xx_XX.&lt;br /&gt;
&lt;br /&gt;
* MAIN_REPEATCONTACTONEACHTAB =&amp;gt; If added and set to 1, this add contacts on all tabs, not only main tab.&lt;br /&gt;
&lt;br /&gt;
* MAIN_DISABLE_JQUERY_JNOTIFY =&amp;gt; Disable usage of JNotify to show confirm or error messages&lt;br /&gt;
&lt;br /&gt;
* MAIN_USE_JQUERY_JEDITABLE =&amp;gt; Allow to update from screen, directly into database, some properties of elements (invoices, proposals, ...) using Ajax. This make response time faster, but avoid using this features, because, it overpass some business actions (updates on other data that should be done consistently) and ignore business controls on data you saved. So this feature breaks consistency of data and stability of software.&lt;br /&gt;
&lt;br /&gt;
* MAIN_USE_JQUERY_MULTISELECT =&amp;gt; Allow to use Ajax when a choice that require multiselect is used (for the moment only external modules uses select box with multiselect values). Set the value to the jQuery plugin name to use (multiselect, multiple-select, select2…). Setting it to any other value will result in unwanted side-effects and/or bugs.&lt;br /&gt;
&lt;br /&gt;
* MAIN_HELPCENTER_LINKTOUSE  =&amp;gt; Define the url link to use as the target page for link &amp;quot;I need help&amp;quot; onto logon page&lt;br /&gt;
&lt;br /&gt;
* MAIN_MODULES_FOR_EXTERNAL =&amp;gt; Limit available modules for external users. By default value is &#039;facture,commande,contact,propal,projet,contrat,societe,ficheinter,expedition,agenda&#039;&lt;br /&gt;
&lt;br /&gt;
* MAIN_SHOW_TUNING_INFO =&amp;gt; Add tuning information into javascript console. Better when xdebug is enabled.&lt;br /&gt;
&lt;br /&gt;
* MAIN_DOL_SCRIPTS_ROOT =&amp;gt; Define directory who contains &#039;scripts&#039; directory (e.g /var/www/dolibarr)&lt;br /&gt;
&lt;br /&gt;
* MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING =&amp;gt; A warning saying setup of modules is not complete is shown if number of enabled modules is lower or equal than this value (1 if not defined)&lt;br /&gt;
&lt;br /&gt;
* MAIN_ADD_SALE_REP_SIGNATURE_IN_NOTE =&amp;gt; Add signature of the first sale representative into documents (at end of public notes).&lt;br /&gt;
&lt;br /&gt;
* MAIN_DISABLE_AJAX_COMBOX =&amp;gt; If you have a large number of third parties or products, you can disable the autocomplete feature on the third parties list by setting constant MAIN_DISABLE_AJAX_COMBOX to 1 into Home-Setup-Other (with Dolibarr v3.6.0+).&lt;br /&gt;
&lt;br /&gt;
* MAIN_USE_CACHE_MANIFEST =&amp;gt; Add an HTML5 cache manifest to the page - Attention, this functionality is obsolete and removed from web standards&lt;br /&gt;
&lt;br /&gt;
* MAIN_FORCELANGDIR =&amp;gt; relative path of the directory holding your custom langs folder.&lt;br /&gt;
&lt;br /&gt;
* MAIN_VAT_DEFAULT_IF_AUTODETECT_FAILS =&amp;gt; allow to define a default VAT rate&lt;br /&gt;
&lt;br /&gt;
* MAIN_HTML_TITLE =&amp;gt; can be used to control how html title is formatted. If value contains key &#039;noapp&#039;, application name will not be output. If value contains &#039;thirdpartynameonly&#039;, on tab for thirdparties, only name of thirdparties are output. Value can be list of tags: &#039;noapp;thirdpartynameonly&#039;&lt;br /&gt;
&lt;br /&gt;
* MAIN_LANDING_PAGE =&amp;gt; (&amp;gt;= 3.9). Can choose the first page to show after login (the landing page). This option works as a global option (llx_const) and per user option (llx_user_param).&lt;br /&gt;
&lt;br /&gt;
* MAIN_PROPAGATE_CONTACTS_FROM_ORIGIN =&amp;gt; (&amp;gt;= 4.0) When creating an order, contract, invoice from another object, specific contacts of objects are set as specific contact of the new object when possible.&lt;br /&gt;
&lt;br /&gt;
* MAIN_WEIGHT_DEFAULT_ROUND =&amp;gt; Accuracy of weight (number of decimals)&lt;br /&gt;
&lt;br /&gt;
* MAIN_WEIGHT_DEFAULT_UNIT =&amp;gt; Default unit for weight (0=kg, -3=g, ...)&lt;br /&gt;
&lt;br /&gt;
* MAIN_VOLUME_DEFAULT_ROUND =&amp;gt; Accuracy of volume (number of decimals)&lt;br /&gt;
&lt;br /&gt;
* MAIN_VOLUME_DEFAULT_UNIT =&amp;gt; Default unit for weight (0=kg, -3=g, ...)&lt;br /&gt;
&lt;br /&gt;
* MAIN_PUBLIC_NOTE_IN_ADDRESS &amp;gt;=4.0 =&amp;gt; show public note in address block&lt;br /&gt;
&lt;br /&gt;
* MAIN_DEFAULT_PAYMENT_TERM_ID =&amp;gt; With id of a payment term, will use this as default payment term each time you create a new proposal, order, invoice (customer and supplier)&lt;br /&gt;
&lt;br /&gt;
* MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND =&amp;gt; Change way of rounding total TTC lines, rounding first of after&lt;br /&gt;
&lt;br /&gt;
* MAIN_VIEW_LINE_NUMBER =&amp;gt; Shows a line number against each line in the order/invoice for products/services.  On screen only, not on PDF.&lt;br /&gt;
&lt;br /&gt;
* MAIN_DOC_USE_OBJECT_THIRDPARTY_NAME =&amp;gt; Add name of thirdparty at begin of generated document&lt;br /&gt;
&lt;br /&gt;
* MAIN_DOC_USE_TIMING =&amp;gt; Add a timestamp at end of generated document. Value must be format of timestamp. For example: %Y%m%d%H%M&lt;br /&gt;
&lt;br /&gt;
* MAIN_DISABLEDRAFTSTATUS =&amp;gt; Disable the status Draft for some object (project, donation, ...)&lt;br /&gt;
&lt;br /&gt;
* MAIN_USE_OLD_SEARCH_FORM =&amp;gt; Display the old search form in left menu&lt;br /&gt;
&lt;br /&gt;
== Look or Theme ==&lt;br /&gt;
* MAIN_OPTIMIZEFORTEXTBROWSER =&amp;gt; Optimize output rendering for usage of a text browser (usefull for blind people)&lt;br /&gt;
* THEME_ELDY_DISABLE_IMAGE =&amp;gt; Disabled images of top menu for eldy theme.&lt;br /&gt;
* MAIN_MENU_HIDE_UNAUTHORIZED =&amp;gt; Hide menu if logged in user is not autorized rather than just grey them&lt;br /&gt;
&lt;br /&gt;
== Email and SMS ==&lt;br /&gt;
* MAIN_MAIL_DEBUG =&amp;gt; Write content with header of last mail into file dolibarr_mail.log into directory dolibarr_main_data_root.&lt;br /&gt;
&lt;br /&gt;
* MAIN_SMS_DEBUG =&amp;gt; Write content of SMS sent into file dolibarr_sms.log into directory dolibarr_main_data_root.&lt;br /&gt;
&lt;br /&gt;
* MAIN_MAIL_ALLOW_SENDMAIL_F =&amp;gt; On Linux or BSD system, PHP email function use the command sendmail local to server. In some cases, the sender email must be provided on command line of sendmail with option -f. This option is here to ask Dolibarr to call the function &#039;&#039;&#039;mail&#039;&#039;&#039; of PHP by adding value for the option -f. Note that in most cases, even with sendmail, sender email is correctly managed as it is added in the email technical header. This option is here only for rare setup of sendmail that ask the &#039;&#039;&#039;-f&#039;&#039;&#039; option to be mandatory or for sendmail setup that does not use by default the Return-path of header email to define the sender (with this option, the return-path will be provided also on command line and not lost by sendmail).&lt;br /&gt;
&lt;br /&gt;
* MAIN_MAIL_SENDMAIL_FORCE_BA =&amp;gt; On Linux or BSD system, PHP email function use the command sendmail local to server. In some case, we want to recipient to be provided to sendmail into the email content instead of its command line parameter. For this we must add the &#039;&#039;&#039;-ba&#039;&#039;&#039; parameter to sendmail. This option ask PHP to provide this parameter when sending a mail. Note that another solution is to edit the &#039;&#039;&#039;mail.force_extra_parameters=-ba&#039;&#039;&#039; into &#039;&#039;&#039;php.ini&#039;&#039;&#039; file.&lt;br /&gt;
&lt;br /&gt;
* MAIN_MAIL_NO_FULL_EMAIL =&amp;gt; Recipient email and sender are cleaned to be on form &amp;quot;&amp;lt;email&amp;gt;&amp;quot; instead of &amp;quot;Name &amp;lt;email&amp;gt;&amp;quot;. This might solve problem of compatibility with very old mailers.&lt;br /&gt;
&lt;br /&gt;
* MAIN_FIX_FOR_BUGGED_MTA =&amp;gt; Some MTA agent are bugged and add some CR chars each time they saw a LF. Because Dolibarr emails are forged to be already cleaned, if MTA agent do that, you will send an email with two CR chars. This may result in having recipient not able to read your email. To fix this, add this constant to 1. Dolibarr will then create an email that is not RFC compliant but because the MTA agent is bugged, the email will be modified and become correct during sending, solving the problem of bad email received. Add this constant if your recipient experience problems when opening email for example users using webmail of orange.fr or hotmail.com&lt;br /&gt;
&lt;br /&gt;
* MAIN_MAIL_DO_NOT_USE_SIGN =&amp;gt; Do not add user signature at end of suggested pre-defined email&lt;br /&gt;
&lt;br /&gt;
* MAIL_FORCE_DELIVERY_RECEIPT_INVOICE =&amp;gt; Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Invoice&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
* MAIL_FORCE_DELIVERY_RECEIPT_ORDER =&amp;gt; Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Order&#039;&#039; module. &lt;br /&gt;
&lt;br /&gt;
* MAIL_FORCE_DELIVERY_RECEIPT_PROPAL =&amp;gt; Set default as &amp;quot;Yes&amp;quot; on requesting delivery receipt when sending email through the &#039;&#039;Customer Proposal&#039;&#039; module.&lt;br /&gt;
&lt;br /&gt;
* MAIN_EMAIL_USECCC =&amp;gt; 1 = Show field BCC into email forms, If email = Show BCC prefilled with email.&lt;br /&gt;
&lt;br /&gt;
* MAIN_MAIL_AUTOCOPY_PROPOSAL_TO, MAIN_MAIL_AUTOCOPY_ORDER_TO, MAIN_MAIL_AUTOCOPY_INVOICE_TO =&amp;gt; Email to use as a BCC recipients when sending email for proposal, order or invoice. You can make this value visible by setting MAIN_EMAIL_USECCC (to 1 or to another email, see previous point)&lt;br /&gt;
&lt;br /&gt;
* MAIN_EMAIL_ADD_TRACK_ID =&amp;gt; When value is 1 (this is also default value if option is not set): The record &amp;quot;Message-id&amp;quot; added into smtp header includes a tracking id to define where the email was sent from. When value is 2: you send an email from third party card, the sender email is completed with the email source tracking string  &amp;quot;+thiXXX&amp;quot; on email (your email will be sent with the &amp;quot;From&amp;quot; that is myname+thi123@mycompany.com). So when user receiving email will make &amp;quot;Answer&amp;quot;, email will be sent to myname@mycompany.com but with the tracking id included (into header or into target email), allowing you to know to which third party or object, the email exchange is related to.&lt;br /&gt;
&lt;br /&gt;
* MAIL_MAX_NB_OF_RECIPIENTS_IN_SAME_EMAIL =&amp;gt; Restrict sending of 1 email message to x recipients for same email message (x for To: + CC: + BCC:). If not defined, value is 10. Required to fight against spamming that include 1000 recipients in 1 message. Note that MAIL_MAX_NB_OF_RECIPIENTS_TO_IN_SAME_EMAIL, MAIL_MAX_NB_OF_RECIPIENTS_CC_IN_SAME_EMAIL and MAIL_MAX_NB_OF_RECIPIENTS_BCC_IN_SAME_EMAIL are also available.&lt;br /&gt;
&lt;br /&gt;
* MAIN_MAIL_FORCE_CONTENT_TYPE_TO_HTML =&amp;gt; Force to send all email (event with text only content) as HTML formatted email.&lt;br /&gt;
&lt;br /&gt;
* MAIN_MAIL_USE_MULTI_PART =&amp;gt; Forge email content using an alternate text part (for 5.0.2+). By default with 6.0+&lt;br /&gt;
&lt;br /&gt;
* MAIN_MAIL_ADD_INLINE_IMAGES_IF_IN_MEDIAS =&amp;gt; If images were stored into the medias directory from CKEditor, then images into emails are replaced with &amp;quot;inline content&amp;quot;. This may increase seriously risk of being detected as SPAM.&lt;br /&gt;
&lt;br /&gt;
* MAIN_COPY_FILE_IN_EVENT_AUTO =&amp;gt; Add attachement document on event auto generated by sending email from dolibarr. (v6.0+)&lt;br /&gt;
&lt;br /&gt;
== Third Parties module ==&lt;br /&gt;
* SOCIETE_DISABLE_CUSTOMERS =&amp;gt; Remove all menu and features related to customers&lt;br /&gt;
* SOCIETE_DISABLE_PROSPECTS =&amp;gt; Remove all menu and features related to prospects&lt;br /&gt;
* SOCIETE_DISABLE_STATE =&amp;gt; Do not use field &amp;quot;state/province&amp;quot;&lt;br /&gt;
* THIRDPARTY_NOTCUSTOMERPROSPECT_BY_DEFAULT =&amp;gt; Do not set status &amp;quot;Customer/Prospect&amp;quot; to &amp;quot;on&amp;quot; when creating a new third party from menu &amp;quot;New third party&amp;quot;.&lt;br /&gt;
* THIRDPARTY_NOTSUPPLIER_BY_DEFAULT =&amp;gt; Do not set status &amp;quot;Supplier&amp;quot; to &amp;quot;on&amp;quot; when creating a new third party from menu &amp;quot;New third party&amp;quot;.&lt;br /&gt;
* SOCIETE_SORT_ON_TYPEENT = The combo list of &amp;quot;type of third party&amp;quot; is sorted on a field &amp;quot;position&amp;quot; that appears into dictionary instead of alphabetical order.&lt;br /&gt;
* THIRDPARTY_DEFAULT_CREATE_CONTACT (Dolibarr 5.0+) =&amp;gt; Default Third party create are individual&lt;br /&gt;
* MAIN_THIRDPARTY_CREATION_INDIVIDUAL (Dolibarr &amp;lt;5.0) =&amp;gt; Default Third party create are individual&lt;br /&gt;
* THIRDPARTY_DEFAULT_USEVAT =&amp;gt; When creating a new third party, the field &amp;quot;Use vat&amp;quot; is set to on or off depending on value of this parameter.&lt;br /&gt;
* THIRDPARTY_DEFAULT_USELOCALTAX1 =&amp;gt; When creating a new third party, the field &amp;quot;Use second tax&amp;quot; is set to on or off depending on value of this parameter.&lt;br /&gt;
* THIRDPARTY_DEFAULT_USELOCALTAX2 =&amp;gt; When creating a new third party, the field &amp;quot;Use third tax&amp;quot; is set to on or off depending on value of this parameter.&lt;br /&gt;
* THIRDPARTY_INCLUDE_PARENT_IN_LINKTO =&amp;gt; Search also for elements on parent third party when using the &amp;quot;link to&amp;quot; object feature.&lt;br /&gt;
* THIRDPARTY_INCLUDE_PROJECT_THIRDPARY_IN_LINKTO =&amp;gt; Search also for elements on third party that own the project of the current element when using the &amp;quot;link to&amp;quot; object feature (if project is owned by a different thirdparty than current one).&lt;br /&gt;
* SOCIETE_ASK_FOR_SHIPPING_METHOD =&amp;gt; Shipping method can be predefined on customer card and will be used as default on order creation&lt;br /&gt;
&lt;br /&gt;
== Proposals module ==&lt;br /&gt;
* PROPAL_CLONE_ON_CREATE_PAGE =&amp;gt; On the create proposal page, ask if we want to create the proposal by cloning an already existing one. You should use instead the &amp;quot;Clone&amp;quot; button available on existing proposals.&lt;br /&gt;
* MAIN_PROPAL_CHOOSE_ODT_DOCUMENT =&amp;gt; On setup page, you&#039;ll be able to select which ODT document to use when close or cancel proposals.&lt;br /&gt;
* MAIN_GENERATE_PROPOSALS_WITH_PICTURE =&amp;gt; Add a picture of the product (the first one found if there are several) into the generated PDF of proposals. Note that using this will reduce the available width for the product description.&lt;br /&gt;
* PROPAL_DISABLE_SIGNATURE =&amp;gt; Do no show the box for signature.&lt;br /&gt;
* WORKFLOW_PROPAL_CAN_CLASSIFY_BILLED_WITHOUT_INVOICES =&amp;gt; Button &amp;quot;Classified Billed&amp;quot; is visible on proposal even if there is no invoice linked to proposal.&lt;br /&gt;
* PRODUIT_PDF_MERGE_PROPAL =&amp;gt; When generating the proposal PDF, all PDFs linked to products linked to proposal are also included into final PDF&lt;br /&gt;
* PROPOSAL_ALLOW_EXTERNAL_DOWNLOAD =&amp;gt; When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key.&lt;br /&gt;
&lt;br /&gt;
== Order module ==&lt;br /&gt;
* COMMANDE_REQUIRE_SOURCE =&amp;gt; Make the input field &amp;quot;Source of order&amp;quot; mandatory.&lt;br /&gt;
* COMMANDE_VALID_AFTER_CLOSE_PROPAL =&amp;gt; When an order is created on a proposal close, the order is directly defined with status &amp;quot;Validated&amp;quot;.&lt;br /&gt;
* COMMANDE_CHANGE_THIRDPARTY =&amp;gt; Can change customer on orders&lt;br /&gt;
* ORDER_ALLOW_EXTERNAL_DOWNLOAD =&amp;gt; When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key.&lt;br /&gt;
&lt;br /&gt;
== Invoice module ==&lt;br /&gt;
* MAIN_DEPOSIT_MULTI_TVA =&amp;gt; In deposits invoice, creates one line per VAT rate from the origin document (6.0)&lt;br /&gt;
* FACTURE_SHOW_SEND_REMINDER =&amp;gt; Show link &amp;quot;Send reminder by mail&amp;quot;, same feature than &amp;quot;Send by mail&amp;quot; (obsolete feature).&lt;br /&gt;
* INVOICE_CAN_ALWAYS_BE_EDITED =&amp;gt; Allow to edit invoices even if payment was started. Note: If the module &amp;quot;&#039;&#039;&#039;BlockedLog&#039;&#039;&#039;&amp;quot; is active (required by some countries for legal reason), this will not change content of archived logs tracked by this module. By definition there is no way to change or remove archived records. It will just update data in your application and a new record to track your change into the non reversible archive log.&lt;br /&gt;
* INVOICE_CAN_ALWAYS_BE_REMOVED =&amp;gt; Allow to always delete invoices (even if invoice is not last one). Note: If the module &amp;quot;&#039;&#039;&#039;BlockedLog&#039;&#039;&#039;&amp;quot; is active (required by some countries for legal reason), this will not change content of archived logs tracked by this module. By definition there is no way to change or remove archived records. It will just update data in your application and a new record to track your change into the non reversible archive log.&lt;br /&gt;
* INVOICE_CAN_NEVER_BE_REMOVED =&amp;gt; Never allow to delete invoices (except draft invoices).&lt;br /&gt;
* INVOICE_POSITIVE_CREDIT_NOTE =&amp;gt; All amounts on PDF credit notes are positive.&lt;br /&gt;
* FACTURE_CHANGE_THIRDPARTY =&amp;gt; Allow to change the third party in the draft invoices. If a discount was set from the original thirdparty, then discount remain, making data not coherent.&lt;br /&gt;
* FACTURE_USE_PROFORMAT =&amp;gt; Enable PROFORMAT invoices type.&lt;br /&gt;
* FACTURE_DEPOSITS_ARE_JUST_PAYMENTS =&amp;gt; Treats deposit invoices as a special case. Deposit invoices don&#039;t get counted on turnover. They are then applied as a payment, like a discount, on the final invoice. By default, when you include the deposit into draft of final invoice, the amount of final invoice is reduced. With this option, final amount is not reduced but a payment is registered. &lt;br /&gt;
* FACTURE_SENDBYEMAIL_FOR_ALL_STATUS =&amp;gt; Can send invoice by email to customer even if invoice has status &amp;quot;draft&amp;quot;.&lt;br /&gt;
* MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT =&amp;gt; Disable VAT on genrated documents. like for an association. (it&#039;s work with crabe template)&lt;br /&gt;
* INVOICE_AUTO_FILLJS (FAC_AUTO_FILLJS &amp;lt; 4.0) =&amp;gt; Display a button to autofill the payment amount for each invoice on the payment creation page&lt;br /&gt;
* INVOICE_CREDIT_NOTE_STANDALONE (dolibarr 3.9) =&amp;gt; Can make a credit note without invoice.&lt;br /&gt;
* INVOICE_USE_SITUATION = Enable the &amp;quot;situation invoice&amp;quot; feature&lt;br /&gt;
* INVOICE_DISABLE_DEPOSIT = Disable deposit invoices&lt;br /&gt;
* INVOICE_DISABLE_REPLACEMENT = Disable replacement invoices&lt;br /&gt;
* INVOICE_DISABLE_CREDIT_NOTE = Disable credit notes&lt;br /&gt;
* WORKFLOW_BILL_ON_SHIPMENT = Change label of button with suitable label when you need to create invoice on shipments&lt;br /&gt;
* INVOICE_ALLOW_EXTERNAL_DOWNLOAD =&amp;gt; When a PDF is generated, a share key is automatically set so the file can be downloaded using the share key.&lt;br /&gt;
&lt;br /&gt;
== Expense Report ==&lt;br /&gt;
* EXPENSEREPORT_ALLOW_OVERLAPPING_PERIODS =&amp;gt; Can enter several expense reports on same or overlapping date periods.&lt;br /&gt;
&lt;br /&gt;
== Export module ==&lt;br /&gt;
* EXPORT_CSV_SEPARATOR_TO_USE =&amp;gt; String value to use as separator to delimit fields int exported files (by default Dolibarr use &amp;quot;,&amp;quot;). Example: EXPORT_CSV_SEPARATOR_TO_USE=;&lt;br /&gt;
* EXPORT_CSV_FORCE_CHARSET =&amp;gt; Choose the charset of file built by CSV export. By default: UTF-8. Example: EXPORT_CSV_FORCE_CHARSET=ISO-8859-1&lt;br /&gt;
* EXPORTTOOL_CATEGORIES =&amp;gt; Can export categories (several lines) into one column with the &amp;quot;product export profile&amp;quot;&lt;br /&gt;
* USE_STRICT_CSV_RULES =&amp;gt; Use strict/real CSV format for export. Do not clean/replace CR+LF with &#039;\n&#039; but quote them using the escaping CSV char (&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
== Agenda module ==&lt;br /&gt;
* AGENDA_MAX_EVENTS_DAY_VIEW =&amp;gt; Define the maximum number of visible entries for each day in agenda. Default value is 3. Value 0 means no limit.&lt;br /&gt;
* AGENDA_USE_EVENT_TYPE =&amp;gt; Add a mandatory field &amp;quot;Type&amp;quot; when creating an event (deprecated).&lt;br /&gt;
* AGENDA_AUTOSET_END_DATE_WITH_DELTA_HOURS =&amp;gt; To automatically set end date of event to start date + delta on event creation page.&lt;br /&gt;
* MAIN_ADD_EVENT_ON_ELEMENT_CARD =&amp;gt; Allow to create an event from a document (proposal, order, invoice)&lt;br /&gt;
&lt;br /&gt;
== Products module ==&lt;br /&gt;
* MAIN_PRODUCT_DISABLE_CUSTOMCOUNTRYCODE =&amp;gt; Avoid Custom code and country of origin to be set as product description when added to Propal/Order/Invoice&lt;br /&gt;
* PRODUCT_ADD_TYPE_IN_DOCUMENTS =&amp;gt; Add text &amp;quot;Product&amp;quot; or &amp;quot;Service&amp;quot; at beginning of details lines on built PDF documents.&lt;br /&gt;
* PRODUCT_DONOTSEARCH_ANYWHERE =&amp;gt; When Ajax search is enabled, search is done on criteria anywhere in label of product. By adding this option, search is done only on start of label. This is really faster when you have a huge number of products.&lt;br /&gt;
* PRODUIT_DESC_IN_LIST =&amp;gt; Show long description of product/service into lists.&lt;br /&gt;
* PRODUIT_PDF_MERGE_PROPAL =&amp;gt; Enable module Propal merge product PDF&lt;br /&gt;
* PRODUCT_USE_OLD_PATH_FOR_PHOTO =&amp;gt; Ask dolibarr to check also old path (before 3.7) where photos were stored.&lt;br /&gt;
* PRODUCT_USE_UNITS =&amp;gt; Enable units from dictionary in product/service card.&lt;br /&gt;
* PRODUIT_MULTIPRICES_USE_VAT_PER_LEVEL =&amp;gt; When option to use price per level/segment is on, this allows to also set a dedicated vat for each price level.&lt;br /&gt;
* MAIN_DIRECT_STATUS_UPDATE =&amp;gt; Allows you to change the status of the product (&#039;&#039;for sale/not for sale for purchase/not for purchase&#039;&#039;) directly on the product page via a &#039;&#039;on/off&#039;&#039; switch button. This can be convenient for those who need to quickly disable certain statuses of products without having to go through the editing product page individually. Also can be very useful if used as a filter on the product and product search list. v4.0+&lt;br /&gt;
&lt;br /&gt;
* PRODUCT_CHARGES =&amp;gt; Adds an extra field for adhoc charges at the product buying price stage. The Cost price is then calculated with supplier price + charges if defined. Useful for extra costs for a product or certain delivery charges to the product.&lt;br /&gt;
&lt;br /&gt;
* PRODUCT_MAX_VISIBLE_PHOTO =&amp;gt; Show a maximum number of product photos (as thumbnails) on the product main card. Example, setting this constant to &#039;5&#039; will show the first five product photos found on the product card.&lt;br /&gt;
* PRODUCT_MAX_LENGTH_COMBO =&amp;gt; limit the length of the label displayed when adding lines in proposals/invoices/orders&lt;br /&gt;
&lt;br /&gt;
== Services module ==&lt;br /&gt;
* SERVICE_ARE_ECOMMERCE_200238EC =&amp;gt; If this option is enabled, services are processed like eServices according to directive of EU Council Directive 2002/38/EC (http://ec.europa.eu/taxation_customs/taxation/vat/traders/e-commerce/article_1610_en.htm). Default VAT rate are based on buying country instead of selling country for BtoC sells.&lt;br /&gt;
&lt;br /&gt;
== Stocks ==&lt;br /&gt;
* SUPPLIER_ORDER_DISABLE_STOCK_DISPATCH_WHEN_TOTAL_REACHED =&amp;gt; Disable stock dispatch when total expected was already received.&lt;br /&gt;
&lt;br /&gt;
== Shipments ==&lt;br /&gt;
&lt;br /&gt;
== Point of Sale ==&lt;br /&gt;
* CASHDESK_SHOW_KEYPAD =&amp;gt; Show a mouse key pad into Point Of Sale.&lt;br /&gt;
&lt;br /&gt;
== Contracts ==&lt;br /&gt;
* CONTRACT_SUPPORT_PRODUCTS =&amp;gt; Products are also suggested into module contract.&lt;br /&gt;
&lt;br /&gt;
== Projects module ==&lt;br /&gt;
* PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS =&amp;gt; Enable linking a project to any supplier even when using the third party link feature. Note: Set to 1 by default from 3.7.&lt;br /&gt;
* PROJECT_TIME_ON_ALL_TASKS_MY_PROJECTS =&amp;gt; Can add time spent on tasks, even if i am not assigned to task (however, task must be a project i am a contact).&lt;br /&gt;
* PROJECT_SHOW_REF_INTO_LISTS =&amp;gt; Add column with project ref into list (with 3.7 list of supplier invoices only, will be expanded to other lists)&lt;br /&gt;
* PROJECT_HIDE_UNSELECTABLES =&amp;gt; Hide into select list, all project that we can&#039;t select (closed or draft)&lt;br /&gt;
* PROJECT_HIDE_TASKS =&amp;gt; Hide tasks. For user using project only as an analytics key and not using tasks.&lt;br /&gt;
* PROJECT_LIST_SHOW_STARTDATE =&amp;gt; Shows start date of projects in project lists.&lt;br /&gt;
* PROJECT_LINK_ON_OVERWIEW_DISABLED (4.0) =&amp;gt; Hide the &amp;quot;link to&amp;quot; form on the overview page&lt;br /&gt;
* PROJECT_CREATE_ON_OVERVIEW_DISABLED (4.0) =&amp;gt; Hide the &amp;quot;create ...&amp;quot; button on the overview page&lt;br /&gt;
* PROJECT_ALLOW_TO_LINK_FROM_OTHER_COMPANY =&amp;gt; Can link an object to a project of another thirdparty&lt;br /&gt;
&lt;br /&gt;
== Foundation module ==&lt;br /&gt;
* MEMBER_URL_REDIRECT_SUBSCRIPTION =&amp;gt; Link called and shown when a member account is autocreated in member module by a guest user.&lt;br /&gt;
* MEMBER_EXT_URL_SUBSCRIPTION_INFO =&amp;gt; Link of external page pointed by the &amp;quot;Show here&amp;quot; link added in front off payment cell, into the page to make online subscription.&lt;br /&gt;
&lt;br /&gt;
== Interventions module ==&lt;br /&gt;
* FICHINTER_CLASSIFY_BILLED =&amp;gt; Allow to classify an intervention card as &amp;quot;Billed&amp;quot;. This add also trigger FICHINTER_CLASSIFY_BILLED into list of possible automatic event into agenda.&lt;br /&gt;
* FICHINTER_DISABLE_DETAILS =&amp;gt; Disable entry of details line on intervention. Can validate with no line.&lt;br /&gt;
&lt;br /&gt;
== Suppliers module ==&lt;br /&gt;
* FOURN_PRODUCT_AVAILABILITY =&amp;gt; On the Suppliers price page of the products, activate the supplier product availability. This is duplicate feature with delivery_delay introduced with 3.8.&lt;br /&gt;
* SUPPLIER_ORDER_AUTOADD_USER_CONTACT =&amp;gt; Add user approving supplier order as a contact automatically.&lt;br /&gt;
* SUPPLIER_ORDER_USE_DISPATCH_STATUS =&amp;gt; Add a status on each dispatch order line when receiving products from suppliers (v4.0+)&lt;br /&gt;
* SUPPLIER_ORDER_NO_DIRECT_APPROVE =&amp;gt; No button &amp;quot;Validate and Approve&amp;quot;. Always do step &amp;quot;Validate&amp;quot; and &amp;quot;Approve&amp;quot; in 2 steps.&lt;br /&gt;
* SUPPLIER_ORDER_WITH_NOPRICEDEFINED =&amp;gt; Can enter a product even if no supplier price defined. (v6.0+)&lt;br /&gt;
* SUPPLIER_ORDER_EDIT_BUYINGPRICE_DURING_RECEIPT =&amp;gt; Can modify the buying price used for PMP calculation when making a stock reception on a supplier order. (v6.0+)&lt;br /&gt;
&lt;br /&gt;
== Bank module ==&lt;br /&gt;
* BANK_CAN_RECONCILIATE_CASHACCOUNT (3.8) =&amp;gt; Can reconciliate cash accounts&lt;br /&gt;
* BANK_DISABLE_CHECK_DEPOSIT =&amp;gt; Disable check deposit feature&lt;br /&gt;
* BANK_ASK_PAYMENT_BANK_DURING_ORDER =&amp;gt; Ask bank account during creation of order&lt;br /&gt;
&lt;br /&gt;
== Emailing module ==&lt;br /&gt;
* MAILING_PREFIX_FOR_EMAIL_ID =&amp;gt; Set the value that will be used to compose the &amp;quot;Email Id&amp;quot; into email headers. If you set this value to &#039;SERVER_NAME&#039;, the virtual host of web server will be used. By default, this is not defined, so a hash key, unique to each instance, is used.&lt;br /&gt;
* MAILING_NO_USING_PHPMAIL =&amp;gt; If set, the module emailing can&#039;t be use with mail setup of &amp;quot;phpmail&amp;quot;. Using a thirdparty SMTP server is required. You can complete warning message by adding an email to contact for setup help with constant MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS.&lt;br /&gt;
* MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS =&amp;gt; Contains an email to show in a message visible to user when he try to use emailing module without SMTP server and if option MAILING_NO_USING_PHPMAIL is set to on.&lt;br /&gt;
* MAILING_LIMIT_WARNING_PHPMAIL =&amp;gt; Show a warning message (var contains the message to show or translation key) on emailing send form if setup is on &amp;quot;phpmail&amp;quot;. For example, you can set this parameter to &#039;MAILING_LIMIT_WARNING_PHPMAIL&#039; and enter translation key for each language for this key.&lt;br /&gt;
* MAILING_LIMIT_WARNING_NOPHPMAIL =&amp;gt; Show a warning message (var contains the message to show or translation key) on emailing send form if setup is something else than &amp;quot;phpmail&amp;quot;. For example, you can set this parameter to &#039;MAILING_LIMIT_WARNING_NOPHPMAIL&#039; and enter translation key for each language for this key.&lt;br /&gt;
* EMAILING_USE_ADVANCED_SELECTOR =&amp;gt; Enable the advanced selector for destinaries&lt;br /&gt;
&lt;br /&gt;
* MAILING_LIMIT_SENDBYWEB =&amp;gt; Restrict number of emails you can send in same sending session with emailing module from GUI. The value &amp;quot;dolibarr_mailing_limit_sendbyweb&amp;quot; if defined into config file is used in priority for this limit. A negative value means, sending by web is forbidden.&lt;br /&gt;
* MAILING_LIMIT_SENDBYCLI =&amp;gt; Restrict number of emails you can send in same sending session with emailing module from CLI script. The value &amp;quot;dolibarr_mailing_limit_sendbycli&amp;quot; if defined into config file is used in priority for this limit.&lt;br /&gt;
&lt;br /&gt;
== PDF options ==&lt;br /&gt;
* MAIN_DISABLE_FORCE_SAVEAS =&amp;gt; If your browser ask always to save downloaded files on disk (like PDF), try to add this option. File might appears directly into your browser.&lt;br /&gt;
&lt;br /&gt;
* MAIN_DISABLE_PDF_COMPRESSION =&amp;gt; Disable PDF compression.&lt;br /&gt;
&lt;br /&gt;
* MAIN_INVERT_SENDER_RECIPIENT =&amp;gt;  Invert sender and recipient in some PDF.&lt;br /&gt;
&lt;br /&gt;
* MAIN_DISABLE_PDF_AUTOUPDATE =&amp;gt; Disable automatic generation of PDF each time we add/update/delete a product line (we can still build document by clicking on &amp;quot;Generate&amp;quot;). This option may increase interface speed on servers with low CPU.&lt;br /&gt;
&lt;br /&gt;
* MAIN_USE_BACKGROUND_ON_PDF =&amp;gt; Define this constant with short name of an image (example &amp;quot;myimage.jpg&amp;quot;) that must be saved into directory &amp;quot;documents/mycompany/logos&amp;quot;. This will add this background image into your generated PDF files. Warning: This option make TCPDF library beeing crazy sometime and content on image disappeared !&lt;br /&gt;
&lt;br /&gt;
* MAIN_ADD_PDF_BACKGROUND =&amp;gt; Define this constant with short name of a PDF file (example &amp;quot;mypdf.pdf&amp;quot;) that must be saved into directory &amp;quot;documents/mycompany&amp;quot;. This will add PDF as a background of some of your generated PDF files (proposals,invoices,orders). If you need to concat PDF, see instead [[Module Concat PDF]].&lt;br /&gt;
&lt;br /&gt;
* MAIN_PDF_FORCE_FONT =&amp;gt; To ignore font defined into language file and force usage of a particular font. For example &amp;quot;DejaVuSans&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* MAIN_PDF_FREETEXT_HEIGHT =&amp;gt; Change height of space reserved to output the free text.&lt;br /&gt;
&lt;br /&gt;
* MAIN_PDF_TITLE_BACKGROUND_COLOR =&amp;gt; Can define a background color onto title line. Example: &#039;220,220,200&#039;&lt;br /&gt;
&lt;br /&gt;
* MAIN_USE_COMPANY_NAME_OF_CONTACT =&amp;gt; Use contact name and information rather than company&lt;br /&gt;
&lt;br /&gt;
* MAIN_ODT_AS_PDF =&amp;gt; Activate PDF conversion from ODT document. If value is &#039;jodconverter&#039;, java and jodconverter command line tool must be available. If value is &#039;/pathto/jodconverter.jar&#039;, then java and the jodconvertar jar must exists. soffice must also be available. MAIN_DOL_SCRIPTS_ROOT Must also be defined to path where the &amp;quot;scripts&amp;quot; directory is stored (for example /var/www/mydolibarr).&lt;br /&gt;
&lt;br /&gt;
* MAIN_ODT_AS_PDF_DEL_SOURCE =&amp;gt; For ODT generation. If set, then initial behaviour is conserved but odt file is removed when option to convert it as PDF (see previous) is on. Disabled by default&lt;br /&gt;
&lt;br /&gt;
* MAIN_GENERATE_PROPOSALS_WITH_PICTURE =&amp;gt; Include the first image of the product into the line of the generated PDF for customer proposals.&lt;br /&gt;
&lt;br /&gt;
* MAIN_GENERATE_INVOICES_WITH_PICTURE =&amp;gt; Include the first image of the product into the line of the generated PDF for customer invoices.&lt;br /&gt;
&lt;br /&gt;
* MAIN_GENERATE_SUPPLIER_PROPOSAL_WITH_PICTURE =&amp;gt; Include the first image of the product into the line of the generated PDF for supplier proposals (v5.0.3+)&lt;br /&gt;
&lt;br /&gt;
* MAIN_DOCUMENTS_WITH_PICTURE_WIDTH =&amp;gt; Can change size of picture when hidden option MAIN_GENERATE_PROPOSALS_WITH_PICTURE is used. By default value is 20.&lt;br /&gt;
&lt;br /&gt;
* MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_COLUMN =&amp;gt; Hide column with VAT information but only column not total.&lt;br /&gt;
&lt;br /&gt;
* PDF_SHOW_PROJECT =&amp;gt; Show project onto PDF (supported on supplier order only for the moment)&lt;br /&gt;
&lt;br /&gt;
* PDF_BANK_HIDE_NUMBER_SHOW_ONLY_BICIBAN =&amp;gt; Hide bank number (&amp;quot;code banque/guichet/compte&amp;quot; for france, &amp;quot;sort number/account&amp;quot; for GB, ...) and keep only BIC/IBAN on PDF.&lt;br /&gt;
&lt;br /&gt;
* PDF_HIDE_PRODUCT_REF_IN_SUPPLIER_LINES =&amp;gt; Value 1 or 2 change the way product ref is show (1 = show supplier ref only and not internal ref, 2 = show supplier then internal). Without, internal ref then supplier is shown.&lt;br /&gt;
&lt;br /&gt;
* MAIN_PDF_ADDALSOTARGETDETAILS =&amp;gt; Add particular details like the telephone number on generated PDFs. Can be useful in cases where a printed order/invoice etc is given to a delivery driver/courier etc.&lt;br /&gt;
&lt;br /&gt;
* PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME =&amp;gt; Include alternative/alias name into name on PDF.&lt;br /&gt;
&lt;br /&gt;
== WYSIWYG Editor ==&lt;br /&gt;
&lt;br /&gt;
* FCKEDITOR_ENABLE_DETAILS_FULL =&amp;gt; Can cut and paste external images (hosted on external server) into description of proposal, orders or invoices. WARNING: PDF generation is not guaranted with this. Also if the image is removed or renamed by the image hoster, your proposal, order or invoice will be broken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== BlockedLog ==&lt;br /&gt;
&lt;br /&gt;
* BLOCKEDLOG_DISABLE_NOT_ALLOWED_FOR_COUNTRY =&amp;gt; Make disable of module &amp;quot;blockedlog&amp;quot; not possible for countries code defined into value. Example: &#039;FR,...&#039;&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=List_of_modules_id&amp;diff=38202</id>
		<title>List of modules id</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=List_of_modules_id&amp;diff=38202"/>
		<updated>2018-01-23T08:40:31Z</updated>

		<summary type="html">&lt;p&gt;Iouston: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Core]]&lt;br /&gt;
{{TemplateDocDevEn}}&lt;br /&gt;
{{TemplateDocDevEs}}&lt;br /&gt;
{{TemplateDocDevFr}}&lt;br /&gt;
&lt;br /&gt;
{{Flag en}} This page list all reserved modules numbers / ID. If you build or want to build your own modules (like this [[:Category:Complementary_modules|complementary module]]), you should take an ID range here. &lt;br /&gt;
&lt;br /&gt;
{{Flag fr}} Cette page recense tous les numéros / ID réservés de modules. Si vous avez réalisé ou voulez réaliser vos propres modules (comme les [[:Category:Modules complémentaires|modules complémentaires suivant]]), vous devriez prendre une plage d&#039;ID ici.&lt;br /&gt;
&lt;br /&gt;
{{Flag sp}} Esta página contiene un listado de todos los id reservados para los módulos. Si ha creado o quiere realizar sus propios módulos, (como estos [[:Category:Módulos_complementarios|módulos complementarios]]), deberá reservarse un rango de ID aquí.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= ID 0 - 99999 =&lt;br /&gt;
{{Flag en}} Reserved for Dolibarr&#039;s internal modules.&lt;br /&gt;
&lt;br /&gt;
{{Flag fr}} Réservé aux modules internes de Dolibarr.&lt;br /&gt;
&lt;br /&gt;
{{Flag sp}} Reservado a los módulos internos de Dolibarr.&lt;br /&gt;
&lt;br /&gt;
= ID 100000 - 499999 =&lt;br /&gt;
{{Flag en}} Reserved area for editors in need for an ID range. You can edit this page to add your own range (limited to 1000 values per editor)&lt;br /&gt;
&lt;br /&gt;
{{Flag fr}} Zone réservé aux éditeurs qui ont besoin d&#039;une plage d&#039;ID spécifiques. Vous pouvez modifier cette page pour réserver votre plage (limité à 1000 valeurs par éditeur)&lt;br /&gt;
&lt;br /&gt;
{{Flag sp}} Área reservada para los partners que necesiten un rango de ID. Puede modificar esta página para reservar su rango (limitado a 1000 valores por editor)&lt;br /&gt;
&lt;br /&gt;
* ID 100000 - 100999: OpenThink (http://www.openthink.be)&lt;br /&gt;
* ID 101000 - 101999: NLTechno (https://www.nltechno.com)&lt;br /&gt;
* ID 102000 - 102999: Tiaris (http://www.tiaris.fr)&lt;br /&gt;
* ID 103000 - 103999: Open-concept.pro (http://www.open-concept.pro)&lt;br /&gt;
* ID 104000 - 104999: ATM Consulting (http://www.atm-consulting.fr)&lt;br /&gt;
* ID 105000 - 105999: GPC.solutions&lt;br /&gt;
* ID 106000 - 106999: PHPASSO&lt;br /&gt;
* ID 107000 - 107999: TecLib (http://www.teclib.com) / Auguria (http://www.auguria.net)&lt;br /&gt;
* ID 108000 - 108999: ETHICWEB&lt;br /&gt;
* ID 109000 - 109999: Aplose (http://www.aplose.fr)&lt;br /&gt;
* ID 110000 - 110999: Aternatik&lt;br /&gt;
* ID 111000 - 111999: Asset IT (www.assetit.ch)&lt;br /&gt;
* ID 112000 - 112999: Aarboard AG (www.aarboard.ch)&lt;br /&gt;
* ID 113000 - 113999: Asilib - Alexandre Spangaro&lt;br /&gt;
* ID 114000 - 114999: Iceleaf OÜ&lt;br /&gt;
* ID 115000 - 115999: 2A2C Conseil - Cyril ZEKSER&lt;br /&gt;
* ID 116000 - 116999: Wolftec GmbH&lt;br /&gt;
* ID 117000 - 117999: Oscim (http://www.oscim.fr)&lt;br /&gt;
* ID 118000 - 118999: Oarces Web (dev.oarces.com)&lt;br /&gt;
* ID 119000 - 119999: Manuel Berrocal - Absolacom&lt;br /&gt;
* ID 120000 - 120999: Régis Houssin (http://www.inodbox.com)&lt;br /&gt;
* ID 121000 - 121999: Oscss - Shop &lt;br /&gt;
* ID 122000 - 122999: MrSof - la Nation du Web&lt;br /&gt;
* ID 123000 - 123999: Bruno Généré (webiseasy.org)&lt;br /&gt;
* ID 124000 - 124999: backbone internet service (www.backbone.co.at)&lt;br /&gt;
* ID 125000 - 125999: ProgSI (www.progsi.ma)&lt;br /&gt;
* ID 126000 - 126999: Catalanet&lt;br /&gt;
* ID 127000 - 127999: Virgilio Filho pt-BR Brasil (@dolibarr.br)&lt;br /&gt;
* ID 128000 - 128999: Nicolas Frappé France (www.sospc.info)&lt;br /&gt;
* ID 130000 - 130999: Technicks ICT (http://www.technicks.eu)&lt;br /&gt;
* ID 140000 - 140999: Altairis&lt;br /&gt;
* ID 150000 - 150999: Jeffinfo &lt;br /&gt;
* ID 160000 - 160999: Charles-François BENKE (http://www.patas-monkey.com)&lt;br /&gt;
* ID 162000 - 162999: Jacques Rébiscoul&lt;br /&gt;
* ID 163000 - 163999: Open-DSI (https://www.open-dsi.fr)&lt;br /&gt;
* ID 170000 - 170999: TRIDENT CONSULTING LTD (www.tridentdxb.com)&lt;br /&gt;
* ID 180000 - 180999: Triangle Ingénierie&lt;br /&gt;
* ID 190000 - 190999: Diciannove (http://19.coop)&lt;br /&gt;
* ID 199000 - 199999: RFMS&lt;br /&gt;
* ID 200000 - 200999: Noxiome&lt;br /&gt;
* ID 201000 - 201999: Sasa Ostrouska (saxa)&lt;br /&gt;
* ID 202000 - 202999: Z-Application&lt;br /&gt;
* ID 203000 - 203099: Elidee - elidee.com&lt;br /&gt;
* ID 203100 - 203999: Garcia MICHEL (soamichel.fr)&lt;br /&gt;
* ID 204000 - 204999: Ari Elbaz elarifr - accedinfo.com&lt;br /&gt;
* ID 205000 - 205999: Kreiz IT&lt;br /&gt;
* ID 206000 - 206999: GBINFO (www.gbinfo.fr)&lt;br /&gt;
* ID 300000 - 300999: AtooNet (http://www.atoo-net.com)&lt;br /&gt;
* ID 400000 - 400999: 2byte.es (http://www.2byte.es)&lt;br /&gt;
* ID 401000 - 401999: B&amp;amp;D Informática&lt;br /&gt;
* ID 402000 - 402999: Marcos García de La Fuente (marcosgdf)&lt;br /&gt;
* ID 403000 - 403999: Sergibyte (http://www.sergibyte.com)&lt;br /&gt;
* ID 404000 - 404999: Aikhan&lt;br /&gt;
* ID 405000 - 405999: AIME (http://www.aime.mx)&lt;br /&gt;
* ID 409000 - 409999: LliureTIC (www.lliuretic.cat)&lt;br /&gt;
* ID 420000 - 420099: BBS Concept&lt;br /&gt;
* ID 420100 - 420199: LeMousticProduction (www.lemousticproduction.info) -&amp;lt; module DoliRH&lt;br /&gt;
* ID 420200 - 421199: VatCheck (www.abnc.be)&lt;br /&gt;
* ID 422200 - 422999: Artaban (http://artaban.fr)&lt;br /&gt;
* ID 423000 - 423050: cyberesprit&lt;br /&gt;
* ID 424000 - 424999: A3sys - Mon-Dolibarr (http://www.mon-dolibarr.fr)&lt;br /&gt;
* ID 425000 - 425999: Sébastien SERRE Thivinfo (www.thivinfo.com)&lt;br /&gt;
* ID 426000 - 426099: Arkesis-Solution&lt;br /&gt;
* ID 426100 - 426149: GetLandy (www.getlandy.com)&lt;br /&gt;
* ID 426150 - 426649: OOB Software	&lt;br /&gt;
* ID 426650 - 426849: Soft-Task Serviços e Sistemas (www.soft-task.com.br)&lt;br /&gt;
* ID 426850 - 427000: Bruno Caldas (https://github.com/BCaldas)&lt;br /&gt;
* ID 427001 - 427999: Kevin GUERRIER (alias xcl.saian)&lt;br /&gt;
* ID 428000 - 428099: af83&lt;br /&gt;
* ID 429000 - 429999: induslab&lt;br /&gt;
* ID 430000 - 430099: Mixity sprl (www.mixity.be)&lt;br /&gt;
* ID 430100 - 430199: sgiraud&lt;br /&gt;
* ID 430200 - 430299: Merlion TI (www.merlion-si.com.br)&lt;br /&gt;
* ID 430300 - 431299: Libre Expert (www.libre-expert.com)&lt;br /&gt;
* ID 431300 - 431399: ptibogxiv (www.ptibogxiv.net)&lt;br /&gt;
* ID 431400 - 431499: Befox (www.befox.fr)&lt;br /&gt;
* ID 431500 - 431599: rue Béjo (www.ruebejo.fr)&lt;br /&gt;
* ID 431600 - 431699: Avizzeo (www.avizzeo.com)&lt;br /&gt;
* ID 431700 - 432199: Multisistemas (www.multisistemas.com.sv)&lt;br /&gt;
* ID 432200 - 432399: Burbuja - Chile (www.burbuja.cl)&lt;br /&gt;
* ID 432400 - 433399: INOVEA CONSEIL (https://www.inovea-conseil.com)&lt;br /&gt;
* ID 433400 - 434399: Rachid HRICH - Maroc (HricH ServiceS.)&lt;br /&gt;
* ID 434400 - 435399: Lance Bleakley - LanceIT (www.lanceit.net)&lt;br /&gt;
* ID 436400 - 437399: Mohamed AHERDANE - Morocco - IT Consultant ( www.wave.ma )&lt;br /&gt;
* ID 438400 - 439399: Tetras Libre - France - Développement logiciels libres (www.tetras-libre.fr)&lt;br /&gt;
* ID 439400 - 440399: Dolibarr-pro - France - Développement Dolibarr (www.dolibarr-pro.com)&lt;br /&gt;
* ID 440400 - 441399: Quidlab Co., Ltd - Thailand - ( www.quidlab.com )&lt;br /&gt;
* ID 441400 - 442399: Ide@log - France - (https://www.idealog-info.net) - Laurent Leblanc&lt;br /&gt;
* ID 442400 - 443399: Valerio Bianchi (www.valeriobianchi.com)&lt;br /&gt;
* ID 443400 - 444399: delassalle - France - (www.delassalle.fr) - Joseph Delassalle&lt;br /&gt;
* ID 444400 - 445399: Webartis - Maroc - (www.webartis.net) - François Dry&lt;br /&gt;
* ID 445400 - 445499: SCOP Au-delà des nuages - France&lt;br /&gt;
* ID 446000 - 446999: iouston (http://www.iouston.com) - France - Julien Marchand&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= ID &amp;gt; 500000 =&lt;br /&gt;
{{Flag en}} If you don&#039;t already have reserved ids and need some, please don&#039;t use hazardous number and use a number higher than 500000, but it is better to ask a wiki account, and reserve your own range by editing the  100000 - 499999 range (1000 ids maximum per partner).&lt;br /&gt;
&lt;br /&gt;
{{Flag fr}} Si vous n&#039;avez pas de numéros réservés et en avez besoin, n&#039;utilisez pas de chiffres au hasard et utilisez une valeur supérieure à 500000, toutefois, il est préférable d&#039;obtenir un compte wiki, et  réserver vous-même votre plage en ajoutant votre entrée dans la zone 100000 - 499999 (pas plus de 1000 numéros par partenaire).&lt;br /&gt;
&lt;br /&gt;
{{Flag sp}} Si no dispone de número reservado y necesita, no use cifras redondeadas y usa un valor superior a 500000. Si tiene una cuenta wiki, puede reservarse usted mismo sus id añadiendo su entrada en la zona 100000 - 499999 (no más de 1000 id por partner).&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=List_of_modules_id&amp;diff=38201</id>
		<title>List of modules id</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=List_of_modules_id&amp;diff=38201"/>
		<updated>2018-01-23T08:37:38Z</updated>

		<summary type="html">&lt;p&gt;Iouston: ajout d&amp;#039;une tranche de 1000 id pour iouston 446000&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Core]]&lt;br /&gt;
{{TemplateDocDevEn}}&lt;br /&gt;
{{TemplateDocDevEs}}&lt;br /&gt;
{{TemplateDocDevFr}}&lt;br /&gt;
&lt;br /&gt;
{{Flag en}} This page list all reserved modules numbers / ID. If you build or want to build your own modules (like this [[:Category:Complementary_modules|complementary module]]), you should take an ID range here. &lt;br /&gt;
&lt;br /&gt;
{{Flag fr}} Cette page recense tous les numéros / ID réservés de modules. Si vous avez réalisé ou voulez réaliser vos propres modules (comme les [[:Category:Modules complémentaires|modules complémentaires suivant]]), vous devriez prendre une plage d&#039;ID ici.&lt;br /&gt;
&lt;br /&gt;
{{Flag sp}} Esta página contiene un listado de todos los id reservados para los módulos. Si ha creado o quiere realizar sus propios módulos, (como estos [[:Category:Módulos_complementarios|módulos complementarios]]), deberá reservarse un rango de ID aquí.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= ID 0 - 99999 =&lt;br /&gt;
{{Flag en}} Reserved for Dolibarr&#039;s internal modules.&lt;br /&gt;
&lt;br /&gt;
{{Flag fr}} Réservé aux modules internes de Dolibarr.&lt;br /&gt;
&lt;br /&gt;
{{Flag sp}} Reservado a los módulos internos de Dolibarr.&lt;br /&gt;
&lt;br /&gt;
= ID 100000 - 499999 =&lt;br /&gt;
{{Flag en}} Reserved area for editors in need for an ID range. You can edit this page to add your own range (limited to 1000 values per editor)&lt;br /&gt;
&lt;br /&gt;
{{Flag fr}} Zone réservé aux éditeurs qui ont besoin d&#039;une plage d&#039;ID spécifiques. Vous pouvez modifier cette page pour réserver votre plage (limité à 1000 valeurs par éditeur)&lt;br /&gt;
&lt;br /&gt;
{{Flag sp}} Área reservada para los partners que necesiten un rango de ID. Puede modificar esta página para reservar su rango (limitado a 1000 valores por editor)&lt;br /&gt;
&lt;br /&gt;
* ID 100000 - 100999: OpenThink (http://www.openthink.be)&lt;br /&gt;
* ID 101000 - 101999: NLTechno (https://www.nltechno.com)&lt;br /&gt;
* ID 102000 - 102999: Tiaris (http://www.tiaris.fr)&lt;br /&gt;
* ID 103000 - 103999: Open-concept.pro (http://www.open-concept.pro)&lt;br /&gt;
* ID 104000 - 104999: ATM Consulting (http://www.atm-consulting.fr)&lt;br /&gt;
* ID 105000 - 105999: GPC.solutions&lt;br /&gt;
* ID 106000 - 106999: PHPASSO&lt;br /&gt;
* ID 107000 - 107999: TecLib (http://www.teclib.com) / Auguria (http://www.auguria.net)&lt;br /&gt;
* ID 108000 - 108999: ETHICWEB&lt;br /&gt;
* ID 109000 - 109999: Aplose (http://www.aplose.fr)&lt;br /&gt;
* ID 110000 - 110999: Aternatik&lt;br /&gt;
* ID 111000 - 111999: Asset IT (www.assetit.ch)&lt;br /&gt;
* ID 112000 - 112999: Aarboard AG (www.aarboard.ch)&lt;br /&gt;
* ID 113000 - 113999: Asilib - Alexandre Spangaro&lt;br /&gt;
* ID 114000 - 114999: Iceleaf OÜ&lt;br /&gt;
* ID 115000 - 115999: 2A2C Conseil - Cyril ZEKSER&lt;br /&gt;
* ID 116000 - 116999: Wolftec GmbH&lt;br /&gt;
* ID 117000 - 117999: Oscim (http://www.oscim.fr)&lt;br /&gt;
* ID 118000 - 118999: Oarces Web (dev.oarces.com)&lt;br /&gt;
* ID 119000 - 119999: Manuel Berrocal - Absolacom&lt;br /&gt;
* ID 120000 - 120999: Régis Houssin (http://www.inodbox.com)&lt;br /&gt;
* ID 121000 - 121999: Oscss - Shop &lt;br /&gt;
* ID 122000 - 122999: MrSof - la Nation du Web&lt;br /&gt;
* ID 123000 - 123999: Bruno Généré (webiseasy.org)&lt;br /&gt;
* ID 124000 - 124999: backbone internet service (www.backbone.co.at)&lt;br /&gt;
* ID 125000 - 125999: ProgSI (www.progsi.ma)&lt;br /&gt;
* ID 126000 - 126999: Catalanet&lt;br /&gt;
* ID 127000 - 127999: Virgilio Filho pt-BR Brasil (@dolibarr.br)&lt;br /&gt;
* ID 128000 - 128999: Nicolas Frappé France (www.sospc.info)&lt;br /&gt;
* ID 130000 - 130999: Technicks ICT (http://www.technicks.eu)&lt;br /&gt;
* ID 140000 - 140999: Altairis&lt;br /&gt;
* ID 150000 - 150999: Jeffinfo &lt;br /&gt;
* ID 160000 - 160999: Charles-François BENKE (http://www.patas-monkey.com)&lt;br /&gt;
* ID 162000 - 162999: Jacques Rébiscoul&lt;br /&gt;
* ID 163000 - 163999: Open-DSI (https://www.open-dsi.fr)&lt;br /&gt;
* ID 170000 - 170999: TRIDENT CONSULTING LTD (www.tridentdxb.com)&lt;br /&gt;
* ID 180000 - 180999: Triangle Ingénierie&lt;br /&gt;
* ID 190000 - 190999: Diciannove (http://19.coop)&lt;br /&gt;
* ID 199000 - 199999: RFMS&lt;br /&gt;
* ID 200000 - 200999: Noxiome&lt;br /&gt;
* ID 201000 - 201999: Sasa Ostrouska (saxa)&lt;br /&gt;
* ID 202000 - 202999: Z-Application&lt;br /&gt;
* ID 203000 - 203099: Elidee - elidee.com&lt;br /&gt;
* ID 203100 - 203999: Garcia MICHEL (soamichel.fr)&lt;br /&gt;
* ID 204000 - 204999: Ari Elbaz elarifr - accedinfo.com&lt;br /&gt;
* ID 205000 - 205999: Kreiz IT&lt;br /&gt;
* ID 206000 - 206999: GBINFO (www.gbinfo.fr)&lt;br /&gt;
* ID 300000 - 300999: AtooNet (http://www.atoo-net.com)&lt;br /&gt;
* ID 400000 - 400999: 2byte.es (http://www.2byte.es)&lt;br /&gt;
* ID 401000 - 401999: B&amp;amp;D Informática&lt;br /&gt;
* ID 402000 - 402999: Marcos García de La Fuente (marcosgdf)&lt;br /&gt;
* ID 403000 - 403999: Sergibyte (http://www.sergibyte.com)&lt;br /&gt;
* ID 404000 - 404999: Aikhan&lt;br /&gt;
* ID 405000 - 405999: AIME (http://www.aime.mx)&lt;br /&gt;
* ID 409000 - 409999: LliureTIC (www.lliuretic.cat)&lt;br /&gt;
* ID 420000 - 420099: BBS Concept&lt;br /&gt;
* ID 420100 - 420199: LeMousticProduction (www.lemousticproduction.info) -&amp;lt; module DoliRH&lt;br /&gt;
* ID 420200 - 421199: VatCheck (www.abnc.be)&lt;br /&gt;
* ID 422200 - 422999: Artaban (http://artaban.fr)&lt;br /&gt;
* ID 423000 - 423050: cyberesprit&lt;br /&gt;
* ID 424000 - 424999: A3sys - Mon-Dolibarr (http://www.mon-dolibarr.fr)&lt;br /&gt;
* ID 425000 - 425999: Sébastien SERRE Thivinfo (www.thivinfo.com)&lt;br /&gt;
* ID 426000 - 426099: Arkesis-Solution&lt;br /&gt;
* ID 426100 - 426149: GetLandy (www.getlandy.com)&lt;br /&gt;
* ID 426150 - 426649: OOB Software	&lt;br /&gt;
* ID 426650 - 426849: Soft-Task Serviços e Sistemas (www.soft-task.com.br)&lt;br /&gt;
* ID 426850 - 427000: Bruno Caldas (https://github.com/BCaldas)&lt;br /&gt;
* ID 427001 - 427999: Kevin GUERRIER (alias xcl.saian)&lt;br /&gt;
* ID 428000 - 428099: af83&lt;br /&gt;
* ID 429000 - 429999: induslab&lt;br /&gt;
* ID 430000 - 430099: Mixity sprl (www.mixity.be)&lt;br /&gt;
* ID 430100 - 430199: sgiraud&lt;br /&gt;
* ID 430200 - 430299: Merlion TI (www.merlion-si.com.br)&lt;br /&gt;
* ID 430300 - 431299: Libre Expert (www.libre-expert.com)&lt;br /&gt;
* ID 431300 - 431399: ptibogxiv (www.ptibogxiv.net)&lt;br /&gt;
* ID 431400 - 431499: Befox (www.befox.fr)&lt;br /&gt;
* ID 431500 - 431599: rue Béjo (www.ruebejo.fr)&lt;br /&gt;
* ID 431600 - 431699: Avizzeo (www.avizzeo.com)&lt;br /&gt;
* ID 431700 - 432199: Multisistemas (www.multisistemas.com.sv)&lt;br /&gt;
* ID 432200 - 432399: Burbuja - Chile (www.burbuja.cl)&lt;br /&gt;
* ID 432400 - 433399: INOVEA CONSEIL (https://www.inovea-conseil.com)&lt;br /&gt;
* ID 433400 - 434399: Rachid HRICH - Maroc (HricH ServiceS.)&lt;br /&gt;
* ID 434400 - 435399: Lance Bleakley - LanceIT (www.lanceit.net)&lt;br /&gt;
* ID 436400 - 437399: Mohamed AHERDANE - Morocco - IT Consultant ( www.wave.ma )&lt;br /&gt;
* ID 438400 - 439399: Tetras Libre - France - Développement logiciels libres (www.tetras-libre.fr)&lt;br /&gt;
* ID 439400 - 440399: Dolibarr-pro - France - Développement Dolibarr (www.dolibarr-pro.com)&lt;br /&gt;
* ID 440400 - 441399: Quidlab Co., Ltd - Thailand - ( www.quidlab.com )&lt;br /&gt;
* ID 441400 - 442399: Ide@log - France - (https://www.idealog-info.net) - Laurent Leblanc&lt;br /&gt;
* ID 442400 - 443399: Valerio Bianchi (www.valeriobianchi.com)&lt;br /&gt;
* ID 443400 - 444399: delassalle - France - (www.delassalle.fr) - Joseph Delassalle&lt;br /&gt;
* ID 444400 - 445399: Webartis - Maroc - (www.webartis.net) - François Dry&lt;br /&gt;
* ID 445400 - 445499: SCOP Au-delà des nuages - France&lt;br /&gt;
* ID 446000 - 446999: iouston (www.iouston.com) - France - Julien Marchand&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= ID &amp;gt; 500000 =&lt;br /&gt;
{{Flag en}} If you don&#039;t already have reserved ids and need some, please don&#039;t use hazardous number and use a number higher than 500000, but it is better to ask a wiki account, and reserve your own range by editing the  100000 - 499999 range (1000 ids maximum per partner).&lt;br /&gt;
&lt;br /&gt;
{{Flag fr}} Si vous n&#039;avez pas de numéros réservés et en avez besoin, n&#039;utilisez pas de chiffres au hasard et utilisez une valeur supérieure à 500000, toutefois, il est préférable d&#039;obtenir un compte wiki, et  réserver vous-même votre plage en ajoutant votre entrée dans la zone 100000 - 499999 (pas plus de 1000 numéros par partenaire).&lt;br /&gt;
&lt;br /&gt;
{{Flag sp}} Si no dispone de número reservado y necesita, no use cifras redondeadas y usa un valor superior a 500000. Si tiene una cuenta wiki, puede reservarse usted mismo sus id añadiendo su entrada en la zona 100000 - 499999 (no más de 1000 id por partner).&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Setup_Other&amp;diff=35880</id>
		<title>Setup Other</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Setup_Other&amp;diff=35880"/>
		<updated>2016-09-06T20:51:07Z</updated>

		<summary type="html">&lt;p&gt;Iouston: MAIN_PUBLIC_NOTE_IN_ADDRESS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Admin]]&lt;br /&gt;
{{TemplateDocUser}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Help about screen:&#039;&#039;&#039; Other setup&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Menu path:&#039;&#039;&#039; Home -&amp;gt; Setup -&amp;gt; Other&lt;br /&gt;
&lt;br /&gt;
= Goal =&lt;br /&gt;
This page is built to add/edit new parameters without a dedicated page to edit them. In most cases, it is parameters for your own development, external modules, or hidden features.&lt;br /&gt;
&lt;br /&gt;
For a standard usage of Dolibarr, this screen must be kept empty and not be used.&lt;br /&gt;
&lt;br /&gt;
= List of known hidden options =&lt;br /&gt;
Some options are not visible in the interface (often because they are deprecated or beta features). In most cases you do not need these functions and their use may make the application unstable.&lt;br /&gt;
&lt;br /&gt;
To enable them you have to define a constant to 1 in &#039;&#039;&#039;Home -&amp;gt; Setup -&amp;gt; Other setup&#039;&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
== Global options ==&lt;br /&gt;
* MAIN_APPLICATION_TITLE =&amp;gt; This will change the title of software (that appears on the login page by default). Warning, changing this may make Dolibarr version detection fails by smartphone applications like [[Application Android - DoliDroid]]&lt;br /&gt;
&lt;br /&gt;
* MAIN_AUTOFILL_DATE =&amp;gt; If this constant is defined (to something else than 0), the date of invoice, proposal, order or payment are filled with current date. It is highly recommended to NOT ENABLE this feature. This create a lot of input errors with no data not validated by users. This lead in bad values saved in database giving headaches when you have to do your accountancy reports ! However some users want it, so we provide it.&lt;br /&gt;
&lt;br /&gt;
* MAIN_DISABLE_FULL_SCANLIST =&amp;gt; Constant to define to disable complete scan of tables to know the total amount of element to allow the pagination to show total number of pages. To activate on systems with a very important number of data (Tables with more than 500 000 records).&lt;br /&gt;
&lt;br /&gt;
* MAIN_FIRST_TO_UPPER =&amp;gt; Dolibarr add upper case to thirdparties, contacts or members names if not done. Warning, with some languages (whose words with uppercase are not same words, or pagecode does not always have an uppercase, like cyrillic languages), this feature may alter your data.&lt;br /&gt;
&lt;br /&gt;
* MAIN_ENABLE_LOG_TO_HTML (MAIN_LOGTOHTML before 3.9) =&amp;gt; If this constants is defined, it is possible to have logs inside pages by adding the parameter &amp;amp;logtohtml=1 into URL.&lt;br /&gt;
&lt;br /&gt;
* MAIN_USE_HOURMIN_IN_DATE_RANGE =&amp;gt; On all entities lines (invoice, order, contract...), it is possible to add hour and minutes with date on fields &amp;quot;date start&amp;quot; and &amp;quot;date end&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* MAIN_REMOVE_INSTALL_WARNING =&amp;gt; Remove all security warning that appears to administrator users if URL /install is public. You shoud solve the problem if warning occurs instead of removing this warning. For this, put a file called install.lock into Dolibarr root directory. This will remove warning but also make the page /install not possible to use to protect your installation.&lt;br /&gt;
&lt;br /&gt;
* MAIN_OPTIMIZE_SPEED =&amp;gt; Use some speed enhancements. See page [[Increase_Performance]] for more information.&lt;br /&gt;
&lt;br /&gt;
* MAIN_OVERWRITE_TRANS_xx_YY =&amp;gt; You can use this to change value of a translation key for language xx_YY (ie: en_US) without editing language files. For example: &amp;quot;TranslationKey1:New value1,TranslationKey2:New value 2&amp;quot;. Note that using this option slow down seriously your instance. If you can, it is better to edit directly the language files into htdocs/lang/xx_YY.&lt;br /&gt;
&lt;br /&gt;
* MAIN_REPEATCONTACTONEACHTAB =&amp;gt; If added and set to 1, this add contacts on all tabs, not only main tab.&lt;br /&gt;
&lt;br /&gt;
* MAIN_DISABLE_JQUERY_JNOTIFY =&amp;gt; Disable usage of JNotify to show confirm or error messages&lt;br /&gt;
&lt;br /&gt;
* MAIN_USE_JQUERY_JEDITABLE =&amp;gt; Allow to update from screnn, directly into database, some properties of elements (invoices, proposals, ...) using Ajax. This make response time faster, but avoid using this features, because, it overpass some business actions (updates onother data that should be done consitently) and ignore business controls on data you saved. So this feature breaks consitency of data and stability of software.&lt;br /&gt;
&lt;br /&gt;
* MAIN_USE_JQUERY_MULTISELECT =&amp;gt; Allow to use Ajax when a choice that require multiselect is used (for the moment only external modules uses select box with multiselect values). Set the value to the jQuery plugin name to use (multiselect, multiple-select, select2…). Setting it to any other value will result in unwanted side-effects and/or bugs.&lt;br /&gt;
&lt;br /&gt;
* MAIN_HELPCENTER_LINKTOUSE  =&amp;gt; Define the url link to use as target for link &amp;quot;I need help&amp;quot; onto logon page&lt;br /&gt;
&lt;br /&gt;
* MAIN_MODULES_FOR_EXTERNAL =&amp;gt; Limit available modules for external users. By defaut value is &#039;facture,commande,contact,propal,projet,contrat,societe,ficheinter,expedition,agenda&#039;&lt;br /&gt;
&lt;br /&gt;
* MAIN_PRODUCT_DISABLE_CUSTOMCOUNTRYCODE =&amp;gt; Avoid Custom code and country of origin to be set as product description when added to Propal/Order/Invoice&lt;br /&gt;
&lt;br /&gt;
* MAIN_SHOW_TUNING_INFO =&amp;gt; Add tuning information into javascript console. Better when xdebug is enabled.&lt;br /&gt;
&lt;br /&gt;
* MAIN_DOL_SCRIPTS_ROOT =&amp;gt; Define directory who contains &#039;scripts&#039; directory (e.g /var/www/dolibarr)&lt;br /&gt;
&lt;br /&gt;
* MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING =&amp;gt; A warning saying setup of modules is not complete is shown if number of enabled modules is lower or equal than this value (1 if not defined)&lt;br /&gt;
&lt;br /&gt;
* MAIN_ADD_SALE_REP_SIGNATURE_IN_NOTE =&amp;gt; Add signature of first sale representative into documents (at end of public notes).&lt;br /&gt;
&lt;br /&gt;
* MAIN_DISABLE_AJAX_COMBOX =&amp;gt; If you have a large amount of thirdparty or product, you can disable the autocomplete feature on thirdparties list by setting constant MAIN_DISABLE_AJAX_COMBOX to 1 into Home-Setup-Other (with Dolibarr v3.6.0+).&lt;br /&gt;
&lt;br /&gt;
* MAIN_USE_CACHE_MANIFEST =&amp;gt; Add an HTML5 cache manifest to the page&lt;br /&gt;
&lt;br /&gt;
* MAIN_REPLACE_TRANS_xx_XX =&amp;gt; Where xx_XX is language code. If value is string1:newstring1;string2:newstring2 then replace string1 with newstring1 in all translation done for language xx_XX.&lt;br /&gt;
&lt;br /&gt;
* MAIN_FORCELANGDIR =&amp;gt; relative path of the directory holding your custom langs folder.&lt;br /&gt;
&lt;br /&gt;
* MAIN_VAT_DEFAULT_IF_AUTODETECT_FAILS =&amp;gt; allow to define a default VAT rate&lt;br /&gt;
&lt;br /&gt;
* MAIN_HTML_TITLE =&amp;gt; can be used to control how html title is formated. If value contains key &#039;noapp&#039;, application name will not be output. If value contains &#039;thirdpartynameonly&#039;, on tab for thirdparties, only name of thirdparties are output. Value can be list of tags: &#039;noapp;thirdpartynameonly&#039;&lt;br /&gt;
&lt;br /&gt;
* MAIN_LANDING_PAGE =&amp;gt; (&amp;gt;= 3.9) Can choose the first page to show after login. This option works as a global option (llx_const) and per user option (llx_user_param).&lt;br /&gt;
&lt;br /&gt;
* MAIN_PROPAGATE_CONTACTS_FROM_ORIGIN =&amp;gt; (&amp;gt;= 4.0) When creating an order, contract, invoice from another object, specific contacts of objects are set as specific contact of the new object when possible.&lt;br /&gt;
&lt;br /&gt;
* MAIN_WEIGHT_DEFAULT_ROUND = Accuracy of weight (number of decimals)&lt;br /&gt;
&lt;br /&gt;
* MAIN_WEIGHT_DEFAULT_UNIT = Default unit for weight (0=kg, -3=g, ...)&lt;br /&gt;
&lt;br /&gt;
* MAIN_VOLUME_DEFAULT_ROUND = Accuracy of volume (number of decimals)&lt;br /&gt;
&lt;br /&gt;
* MAIN_VOLUME_DEFAULT_UNIT = Default unit for weight (0=kg, -3=g, ...)&lt;br /&gt;
&lt;br /&gt;
* MAIN_PUBLIC_NOTE_IN_ADDRESS &amp;gt;=4.0 =&amp;gt; show public note in address block &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Look or Theme ==&lt;br /&gt;
* MAIN_OPTIMIZEFORTEXTBROWSER =&amp;gt; Optimize output rendering for usage of a text browser (usefull for blind people)&lt;br /&gt;
* THEME_ELDY_DISABLE_IMAGE =&amp;gt; Disabled images of top menu for eldy theme.&lt;br /&gt;
* MAIN_MENU_HIDE_UNAUTHORIZED =&amp;gt; Hide menu if user not autorized rather than just grey them&lt;br /&gt;
&lt;br /&gt;
== Email and SMS ==&lt;br /&gt;
* MAIN_MAIL_DEBUG =&amp;gt; Write content with header of last mail into file dolibarr_mail.log into directory dolibarr_main_data_root.&lt;br /&gt;
&lt;br /&gt;
* MAIN_SMS_DEBUG =&amp;gt; Write content of SMS sent into file dolibarr_sms.log into directory dolibarr_main_data_root.&lt;br /&gt;
&lt;br /&gt;
* MAIN_MAIL_ALLOW_SENDMAIL_F =&amp;gt; On Linux or BSD system, PHP email function use the command sendmail local to server. In some cases, the sender email must be provided on command line of sendmail with option -f. This option is here to ask Dolibarr to call the function &#039;&#039;&#039;mail&#039;&#039;&#039; of PHP by adding value for the option -f. Note that in most cases, even with sendmail, sender email is correctly managed as it is added in the email technical header. This option is here only for rare setup of sendmail that ask the &#039;&#039;&#039;-f&#039;&#039;&#039; option to be mandatory or for sendmail setup that does not use by default the Return-path of header email to define the sender (with this option, the return-path will be provided also on command line and not lost by sendmail).&lt;br /&gt;
&lt;br /&gt;
* MAIN_MAIL_SENDMAIL_FORCE_BA =&amp;gt; On Lunix or BSD system, PHP email function use the command sendmail local to server. In some case, we want to recipient to be provided to sendmail into the email content instead of its command line parameter. For this we must add the &#039;&#039;&#039;-ba&#039;&#039;&#039; parameter to sendmail. This option ask PHP to provide this parameter when sending a mail. Note that another solution is to edit the &#039;&#039;&#039;mail.force_extra_parameters=-ba&#039;&#039;&#039; into &#039;&#039;&#039;php.ini&#039;&#039;&#039; file.&lt;br /&gt;
&lt;br /&gt;
* MAIN_MAIL_NO_FULL_EMAIL =&amp;gt; Recipient email and sender are cleaned to be on form &amp;quot;&amp;lt;email&amp;gt;&amp;quot; instead of &amp;quot;Name &amp;lt;email&amp;gt;&amp;quot;. This might solve problem of compatibility with very old mailers.&lt;br /&gt;
&lt;br /&gt;
* MAIN_FIX_FOR_BUGGED_MTA =&amp;gt; Some MTA agent are bugged and add some CR chars each time they saw a LF. Because Dolibarr emails are forged to be already cleaned, if MTA agent do that, you will send an email with two CR chars. This may result in having recipient not able to read your email. To fix this, add this constant to 1. Dolibarr will then create an email that is not RFC compliant but because the MTA agent is bugged, the email will be modified and become correct during sending, solving the problem of bad email received. Add this constant if your recipient experience problems when opening email for example users using webmail of orange.fr or hotmail.com&lt;br /&gt;
&lt;br /&gt;
* MAIN_MAIL_DO_NOT_USE_SIGN =&amp;gt; Do not add user signature at end of suggested predefined email&lt;br /&gt;
&lt;br /&gt;
* MAIL_FORCE_DELIVERY_RECEIPT_INVOICE, MAIL_FORCE_DELIVERY_RECEIPT_ORDER, MAIL_FORCE_DELIVERY_RECEIPT_PROPAL =&amp;gt; Force delivery receipt to &amp;quot;Yes&amp;quot; onto form to send email.&lt;br /&gt;
&lt;br /&gt;
* MAIN_EMAIL_USECCC =&amp;gt; Show field BCC into email forms.&lt;br /&gt;
&lt;br /&gt;
* MAIN_MAIL_AUTOCOPY_PROPOSAL_TO, MAIN_MAIL_AUTOCOPY_ORDER_TO, MAIN_MAIL_AUTOCOPY_INVOICE_TO =&amp;gt; Send a BCC to the recipients when sending email for proposal, order or invoice. If option MAIN_EMAIL_USECCC is also set, you will see recipient email of BCC into email form on same line used to enter BCC.&lt;br /&gt;
&lt;br /&gt;
* MAIN_EMAIL_ADD_TRACK_ID =&amp;gt; When value is 1 (this is also default value if option is not set): The record &amp;quot;Message-id&amp;quot; added into smtp header includes a tracking id to define where the email was sent from. When value is 2: you send an email from thirdparty card, the sender email is completed with the email source tracking string  &amp;quot;+thiXXX&amp;quot; on email (your email will be sent with the &amp;quot;From&amp;quot; that is myname+thi123@mycompany.com). So when user receiving email will make &amp;quot;Answer&amp;quot;, email will be sent to myname@mycompany.com but with the tracking id included (into header or into target email), allowing you to know to which thirdparty or object, the email exchange is related to.&lt;br /&gt;
&lt;br /&gt;
== Third parties module ==&lt;br /&gt;
* SOCIETE_DISABLE_CUSTOMERS =&amp;gt; Remove all menu and features related to customers&lt;br /&gt;
* SOCIETE_DISABLE_PROSPECTS =&amp;gt; Remove all menu and features related to prospects&lt;br /&gt;
* SOCIETE_DISABLE_STATE =&amp;gt; Do not use field &amp;quot;state/province&amp;quot;&lt;br /&gt;
* THIRDPARTY_NOTCUSTOMERPROSPECT_BY_DEFAULT =&amp;gt; Do not set status &amp;quot;Customer/Prospect&amp;quot; to &amp;quot;on&amp;quot; when creating a new thirdparty from menu &amp;quot;New thirdparty&amp;quot;.&lt;br /&gt;
* THIRDPARTY_NOTSUPPLIER_BY_DEFAULT =&amp;gt; Do not set status &amp;quot;Supplier&amp;quot; to &amp;quot;on&amp;quot; when creating a new thirdparty from menu &amp;quot;New thirdparty&amp;quot;.&lt;br /&gt;
* MAIN_THIRDPARTY_CREATION_INDIVIDUAL =&amp;gt; Default Thirparty create are individual&lt;br /&gt;
* SOCIETE_SORT_ON_TYPEENT = The combo list of &amp;quot;type of thirpdarty&amp;quot; is sorted on a field &amp;quot;position&amp;quot; that appears into dictionnary instead of alphabetical order.&lt;br /&gt;
&lt;br /&gt;
== Proposals module ==&lt;br /&gt;
* PROPAL_CLONE_ON_CREATE_PAGE =&amp;gt; On the create proposal page, ask if we want to create the proposal by cloning an already existing one. You should use instead the &amp;quot;Clone&amp;quot; button available on existing proposals.&lt;br /&gt;
* MAIN_PROPAL_CHOOSE_ODT_DOCUMENT =&amp;gt; On setup page, you&#039;ll be able to select which ODT document to use when close or cancel proposals.&lt;br /&gt;
* MAIN_GENERATE_PROPOSALS_WITH_PICTURE =&amp;gt; Add picture of product (the first one found if there is several) into the generated PDF of proposals. Note that using this reduce available width for product description.&lt;br /&gt;
* PROPAL_DISABLE_SIGNATURE =&amp;gt; Do no show the box for signature.&lt;br /&gt;
* WORKFLOW_PROPAL_CAN_CLASSIFY_BILLED_WITHOUT_INVOICES =&amp;gt; Button &amp;quot;Classified Billed&amp;quot; is visible on proposal even if there is no invoice linked to proposal.&lt;br /&gt;
* PRODUIT_PDF_MERGE_PROPAL =&amp;gt; When generating the proposal PDF, all PDFs linked to products linked to proposal are also included into final PDF&lt;br /&gt;
&lt;br /&gt;
== Invoice module ==&lt;br /&gt;
* FACTURE_SHOW_SEND_REMINDER =&amp;gt; Show link &amp;quot;Send reminder by mail&amp;quot;, same feature than &amp;quot;Send by mail&amp;quot; (obsolete feature).&lt;br /&gt;
* INVOICE_CAN_ALWAYS_BE_REMOVED =&amp;gt; Allow to always delete invoices (even if invoice is not last one).&lt;br /&gt;
* INVOICE_CAN_NEVER_BE_REMOVED =&amp;gt; Never allow to delete invoices (except draft invoices).&lt;br /&gt;
* INVOICE_POSITIVE_CREDIT_NOTE =&amp;gt; All amounts on PDF credit notes are positive.&lt;br /&gt;
* FACTURE_CHANGE_THIRDPARTY =&amp;gt; Allow to change the third party in the draft invoices. If a discount was set from the original thirdparty, then discount remain, making data not coherent.&lt;br /&gt;
* FACTURE_USE_PROFORMAT =&amp;gt; Enable PROFORMAT invoices type.&lt;br /&gt;
* FACTURE_DEPOSITS_ARE_JUST_PAYMENTS =&amp;gt; Treats deposit invoices as a special case. Deposit invoices don&#039;t get counted on turnover. They are then applied as a payment, like a discount, on the final invoice. By default, when you include the deposit into draft of final invoice, the amount of final invoice is reduced. With this option, final amount is not reduced but a payment is registered. &lt;br /&gt;
* FACTURE_SENDBYEMAIL_FOR_ALL_STATUS =&amp;gt; Can send invoice by email to customer even if invoice has status &amp;quot;draft&amp;quot;.&lt;br /&gt;
* MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT =&amp;gt; Disable VAT on genrated documents. like for an association. (it&#039;s work with crabe template)&lt;br /&gt;
* INVOICE_AUTO_FILLJS (FAC_AUTO_FILLJS &amp;lt; 4.0) =&amp;gt; Display a button to autofill the payment amount for each invoice on the payment creation page&lt;br /&gt;
* INVOICE_CREDIT_NOTE_STANDALONE (dolibarr 3.9) =&amp;gt; Can make a credit note without invoice.&lt;br /&gt;
* INVOICE_USE_SITUATION = Enable the &amp;quot;situation invoice&amp;quot; feature&lt;br /&gt;
* INVOICE_DISABLE_DEPOSIT = Disable deposit invoices&lt;br /&gt;
* INVOICE_DISABLE_REPLACEMENT = Disable replacement invoices&lt;br /&gt;
* INVOICE_DISABLE_CREDIT_NOTE = Disable credit notes&lt;br /&gt;
* WORKFLOW_BILL_ON_SHIPMENT = Change label of button with suitable label when you need to create invoice on shipments&lt;br /&gt;
&lt;br /&gt;
== Order module ==&lt;br /&gt;
* COMMANDE_REQUIRE_SOURCE =&amp;gt; Make the input field &amp;quot;Source of order&amp;quot; mandatory.&lt;br /&gt;
* COMMANDE_VALID_AFTER_CLOSE_PROPAL =&amp;gt; When an order is created on a proposal close, the order is directly defined with status &amp;quot;Validated&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Export module ==&lt;br /&gt;
* EXPORT_CSV_SEPARATOR_TO_USE =&amp;gt; String value to use as separator to delimit fields int exported files (by default Dolibarr use &amp;quot;,&amp;quot;). Example: EXPORT_CSV_SEPARATOR_TO_USE=;&lt;br /&gt;
* EXPORT_CSV_FORCE_CHARSET =&amp;gt; Choose the charset of file built by CSV export. By default: UTF-8. Example: EXPORT_CSV_FORCE_CHARSET=ISO-8859-1&lt;br /&gt;
* EXPORTTOOL_CATEGORIES =&amp;gt; Can export categories (several lines) into one column with the &amp;quot;product export profile&amp;quot;&lt;br /&gt;
* USE_STRICT_CSV_RULES =&amp;gt; Use strict/real CSV format for export. Do not clean/replace CR+LF with &#039;\n&#039; but quote them using the escaping CSV char (&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
== Agenda module ==&lt;br /&gt;
* AGENDA_MAX_EVENTS_DAY_VIEW =&amp;gt; Define the maximum number of visible entries for each day in agenda. Default value is 3. Value 0 means no limit.&lt;br /&gt;
* AGENDA_USE_EVENT_TYPE =&amp;gt; Add a mandatory field &amp;quot;Type&amp;quot; when creating an event (deprecated).&lt;br /&gt;
* AGENDA_AUTOSET_END_DATE_WITH_DELTA_HOURS =&amp;gt; To automatically set end date of event to start date + delta on event creation page.&lt;br /&gt;
* MAIN_ADD_EVENT_ON_ELEMENT_CARD =&amp;gt; Allow to create an event from a document (proposal, order, invoice)&lt;br /&gt;
&lt;br /&gt;
== Products module ==&lt;br /&gt;
* PRODUCT_ADD_TYPE_IN_DOCUMENTS =&amp;gt; Add text &amp;quot;Product&amp;quot; or &amp;quot;Service&amp;quot; at beginning of details lines on built PDF documents.&lt;br /&gt;
* PRODUCT_SHOW_WHEN_CREATE =&amp;gt; Old option no more supported (create problems) to be able to add lines of product during first step of element creation.&lt;br /&gt;
* PRODUCT_DONOTSEARCH_ANYWHERE =&amp;gt; When Ajax search is enabled, search is done on criteria anywhere in label of product. By adding this option, search is done only on start of label. This is really faster when you have a huge number of products.&lt;br /&gt;
* PRODUIT_DESC_IN_LIST =&amp;gt; Show long description of product/service into lists.&lt;br /&gt;
* PRODUIT_MULTIPRICES_LABELx (where x = 1,2,...) =&amp;gt; When option mode to set prices are PRODUIT_MULTIPRICES (n different prices per product according to a customer level), this option will force a label for the level x. Value must be a key. If the key is found into translation files, it will be replaced by the translated value.&lt;br /&gt;
* PRODUIT_PDF_MERGE_PROPAL =&amp;gt; Enable module Propal merge product PDF&lt;br /&gt;
* PRODUCT_USE_OLD_PATH_FOR_PHOTO =&amp;gt; Ask dolibarr to check also old path (before 3.7) where photos were stored.&lt;br /&gt;
* PRODUCT_USE_UNITS =&amp;gt; Enable units from dictionary in product/service card.&lt;br /&gt;
&lt;br /&gt;
== Services module ==&lt;br /&gt;
* SERVICE_ARE_ECOMMERCE_200238EC =&amp;gt; If this option is enabled, services are processed like eServices according to directove of EU Council Directive 2002/38/EC (http://ec.europa.eu/taxation_customs/taxation/vat/traders/e-commerce/article_1610_en.htm). Default VAT rate are based on buying country instead of selling country for BtoC sells.&lt;br /&gt;
&lt;br /&gt;
== Stocks ==&lt;br /&gt;
* STOCK_SUPPORTS_SERVICES =&amp;gt; Services are also increased/decreased into stocks.&lt;br /&gt;
* SUPPLIER_ORDER_DISABLE_STOCK_DISPATCH_WHEN_TOTAL_REACHED =&amp;gt; Disable stock dispatch when total expected was already received.&lt;br /&gt;
&lt;br /&gt;
== Point of Sale ==&lt;br /&gt;
* CASHDESK_SHOW_KEYPAD =&amp;gt; Show a mouse key pad into Point Of Sale.&lt;br /&gt;
&lt;br /&gt;
== Contracts ==&lt;br /&gt;
* CONTRACT_SUPPORT_PRODUCTS =&amp;gt; Products are also suggested into module contract.&lt;br /&gt;
&lt;br /&gt;
== Projects module ==&lt;br /&gt;
* PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS =&amp;gt; Enable linking a project to any supplier even when using the third party link feature. Note: Set to 1 by default from 3.7.&lt;br /&gt;
* PROJECT_TIME_ON_ALL_TASKS_MY_PROJECTS =&amp;gt; Can add time spent on tasks, even if i am not assigned to task (however, task must be a project i am a contact).&lt;br /&gt;
* PROJECT_SHOW_REF_INTO_LISTS =&amp;gt; Add column with project ref into list (with 3.7 list of supplier invoices only, will be expanded to other lists)&lt;br /&gt;
* PROJECT_HIDE_UNSELECTABLES =&amp;gt; Hide into select list, all project that we can&#039;t select (closed or draft)&lt;br /&gt;
* PROJECT_HIDE_TASKS =&amp;gt; Hide tasks. For user using project only as an analytics key and not using tasks.&lt;br /&gt;
* PROJECT_LIST_SHOW_STARTDATE =&amp;gt; Shows start date of projects in project lists.&lt;br /&gt;
* PROJECT_LINK_ON_OVERWIEW_DISABLED (4.0) =&amp;gt; Hide the &amp;quot;link to&amp;quot; form on the overview page&lt;br /&gt;
* PROJECT_CREATE_ON_OVERVIEW_DISABLED (4.0) =&amp;gt; Hide the &amp;quot;create ...&amp;quot; button on the overview page&lt;br /&gt;
* PROJECT_DEFAULT_PUBLIC (4.0) =&amp;gt; 1=Set default value of visibility to &amp;quot;public&amp;quot; when creating a project&lt;br /&gt;
&lt;br /&gt;
== Foundation module ==&lt;br /&gt;
* MEMBER_URL_REDIRECT_SUBSCRIPTION =&amp;gt; Link called and shown when a member account is autocreated in member module by a guest user.&lt;br /&gt;
* MEMBER_EXT_URL_SUBSCRIPTION_INFO =&amp;gt; Link of external page pointed by the &amp;quot;Show here&amp;quot; link to add in fron off payment cell form into the page to make online subscription.&lt;br /&gt;
&lt;br /&gt;
== Interventions module ==&lt;br /&gt;
* FICHINTER_CLASSIFY_BILLED =&amp;gt; Allow to classify an intervention card as &amp;quot;Billed&amp;quot;. This add also trigger FICHINTER_CLASSIFY_BILLED into list of possible automatic event into agenda.&lt;br /&gt;
* FICHINTER_DISABLE_DETAILS =&amp;gt; Disable entry of details line on intervention. Can validate with no line.&lt;br /&gt;
&lt;br /&gt;
== Suppliers module ==&lt;br /&gt;
* FOURN_PRODUCT_AVAILABILITY =&amp;gt; On the Suppliers price page of the products, active the supplier product availability. This is duplicate feature with delivery_delay introduced with 3.8.&lt;br /&gt;
* SUPPLIER_ORDER_AUTOADD_USER_CONTACT =&amp;gt; Add user approving supplier order as a contact automatically.&lt;br /&gt;
* SUPPLIER_ORDER_USE_DISPATCH_STATUS =&amp;gt; Add a status on each dispatch order line&lt;br /&gt;
* SUPPLIER_ORDER_NO_DIRECT_APPROVE =&amp;gt; No button &amp;quot;Validate and Approve&amp;quot;. Always do step &amp;quot;Validate&amp;quot; and &amp;quot;Approve&amp;quot; in 2 steps.&lt;br /&gt;
* SUPPLIER_ORDER_WITH_NOPRICEDEFINED =&amp;gt; Can enter a product even if no supplier price defined.&lt;br /&gt;
&lt;br /&gt;
== Bank module ==&lt;br /&gt;
* BANK_CAN_RECONCILIATE_CASHACCOUNT (3.8) =&amp;gt; Can reconciliate cash accounts&lt;br /&gt;
* BANK_DISABLE_CHECK_DEPOSIT =&amp;gt; Disable check deposit feature&lt;br /&gt;
&lt;br /&gt;
== PDF options ==&lt;br /&gt;
* MAIN_DISABLE_FORCE_SAVEAS =&amp;gt; If your browser ask always to save downloaded files on disk (like PDF), try to add this option. File might appears directly into your browser.&lt;br /&gt;
&lt;br /&gt;
* MAIN_DISABLE_PDF_COMPRESSION =&amp;gt; Disable PDF compression.&lt;br /&gt;
&lt;br /&gt;
* MAIN_INVERT_SENDER_RECIPIENT =&amp;gt;  Invert sender and recipient in some PDF.&lt;br /&gt;
&lt;br /&gt;
* MAIN_DISABLE_PDF_AUTOUPDATE =&amp;gt; Disable automatic generation of PDF each time we add/update/delete a product line (we can still build document by clicking on &amp;quot;Generate&amp;quot;). This option may increase interface speed on server with low CPU.&lt;br /&gt;
&lt;br /&gt;
* MAIN_USE_BACKGROUND_ON_PDF =&amp;gt; Define this constant with short name of an image (example &amp;quot;myimage.jpg&amp;quot;) that must be saved into directory &amp;quot;documents/mycompany/logos&amp;quot;. This will add this background image into your generated PDF files. Warning: This option make TCPDF library beeing crazy sometime and content on image disappeared !&lt;br /&gt;
&lt;br /&gt;
* MAIN_ADD_PDF_BACKGROUND =&amp;gt; Define this constant with short name of a PDF file (example &amp;quot;mypdf.pdf&amp;quot;) that must be saved into directory &amp;quot;documents/mycompany&amp;quot;. This will add PDF as a background of some of your generated PDF files (proposals,invoices,orders). If you need to concat PDF, see instead [[Module Concat PDF]].&lt;br /&gt;
&lt;br /&gt;
* MAIN_PDF_FORCE_FONT =&amp;gt; To ignore font defined into language file and force usage of a particular font. For example &amp;quot;DejaVuSans&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* MAIN_PDF_MARGIN_LEFT, MAIN_PDF_MARGIN_RIGHT, MAIN_PDF_MARGIN_TOP, MAIN_PDF_MARGIN_BOTTOM =&amp;gt; To force the margins (mm) of PDF documents (10 is default).&lt;br /&gt;
&lt;br /&gt;
* MAIN_PDF_FREETEXT_HEIGHT =&amp;gt; Change height of space reserved to output the free text.&lt;br /&gt;
&lt;br /&gt;
* MAIN_PDF_TITLE_BACKGROUND_COLOR =&amp;gt; Can define a background color onto title line. Example: &#039;220,220,200&#039;&lt;br /&gt;
&lt;br /&gt;
* MAIN_USE_COMPANY_NAME_OF_CONTACT =&amp;gt; Use contact name and information rather than company&lt;br /&gt;
&lt;br /&gt;
* MAIN_ODT_AS_PDF =&amp;gt; Activate PDF conversion from ODT document. If value is &#039;jodconverter&#039;, java and jodconverter command line tool must be available. If value is &#039;/pathto/jodconverter.jar&#039;, then java and the jodconvertar jar must exists. soffice must also be available. MAIN_DOL_SCRIPTS_ROOT Must also be defined to path where the &amp;quot;scripts&amp;quot; directory is stored (for example /var/www/mydolibarr).&lt;br /&gt;
&lt;br /&gt;
* MAIN_ODT_AS_PDF_DEL_SOURCE =&amp;gt; For ODT generation. If set then initial behaviour is conserved, odt file is removed when generate pdf. Disabled by default&lt;br /&gt;
&lt;br /&gt;
* MAIN_GENERATE_PROPOSALS_WITH_PICTURE =&amp;gt; Include first image of product into line of generated PDF proposal.&lt;br /&gt;
&lt;br /&gt;
* MAIN_GENERATE_INVOICES_WITH_PICTURE =&amp;gt; Include first image of product into line of generated PDF invoice.&lt;br /&gt;
&lt;br /&gt;
* MAIN_DOCUMENTS_WITH_PICTURE_WIDTH =&amp;gt; Can change size of picture when hidden option MAIN_GENERATE_PROPOSALS_WITH_PICTURE is used. By default value is 20.&lt;br /&gt;
&lt;br /&gt;
* MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_COLUMN =&amp;gt; Hide column with VAT information but only column not total.&lt;br /&gt;
&lt;br /&gt;
* PDF_SHOW_PROJECT =&amp;gt; Show project onto PDF (supported on supplier order only for the moment)&lt;br /&gt;
&lt;br /&gt;
* PDF_BANK_HIDE_NUMBER_SHOW_ONLY_BICIBAN =&amp;gt; Hide bank number (&amp;quot;code banque/guichet/compte&amp;quot; for france, &amp;quot;sort number/account&amp;quot; for GB, ...) and keep only BIC/IBAN on PDF.&lt;br /&gt;
&lt;br /&gt;
== WYSIWYG editor ==&lt;br /&gt;
&lt;br /&gt;
* FCKEDITOR_ENABLE_DETAILS_FULL =&amp;gt; Can cut and paste external images (hosted on external server) into description of proposal, orders or invoices. WARNING: PDF generation is not guaranted with this. Also if the image is removed or renamed by the image hoster, your proposal, order or invoice will be broken.&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Module_Assortiment&amp;diff=29897</id>
		<title>Module Assortiment</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Module_Assortiment&amp;diff=29897"/>
		<updated>2013-07-25T18:09:34Z</updated>

		<summary type="html">&lt;p&gt;Iouston: /* Exemple */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules complémentaires]]&lt;br /&gt;
[[Category:Assortiment]]&lt;br /&gt;
{{TemplateDocDev}}&lt;br /&gt;
{{TemplateDocUtil}}&lt;br /&gt;
= Informations =&lt;br /&gt;
{{TemplateModuleInfo&lt;br /&gt;
|editor=[[Florian Henry]]&lt;br /&gt;
|status=stable&lt;br /&gt;
|minversion=3.0.0&lt;br /&gt;
|maxversion=3.3.0&lt;br /&gt;
|note=&lt;br /&gt;
|web=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Fonctionnalités =&lt;br /&gt;
Ce module est utilisé pour définir un assortiments de produits pour les client/fournisseur. &lt;br /&gt;
Autrement dit filtrée a la commande  ou a la facturation les produit disponible pour un client/fournisseur.&lt;br /&gt;
En options : utilisation des catégories, limitation des produits proposés lors de la commandes/facturation à ces assortiments.&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
{{InstallModuleFr}}&lt;br /&gt;
&lt;br /&gt;
Compatible avec la 3.0: Télécharger sur sourceforge [http://www.dolistore.com/lang-fr/modules/72-Assortiments.html]&lt;br /&gt;
&lt;br /&gt;
= Configuration =&lt;br /&gt;
{{ActivationModuleFr}}&lt;br /&gt;
&lt;br /&gt;
= Usage =&lt;br /&gt;
Un nouvel onglet Assortiment est disponible dans les fiches Client/Fournisseur et les fiches Produits.&lt;br /&gt;
Vous pouvez associer un produit (ou optionnellement une catégorie de produit) a l’assortiment du client/fournisseur, via ces onglet.&lt;br /&gt;
Cela permet si l&#039;option est activé, de filtré les produit a la commande pour ne proposé que les produits présent dans l&#039;assortiment.&lt;br /&gt;
&lt;br /&gt;
= Exemple =&lt;br /&gt;
Typiquement vous avez une gamme de produits pour les distributeur et une autre pour les détaillants.&lt;br /&gt;
&lt;br /&gt;
Configurez le module Assortiment comme suit :&lt;br /&gt;
Gestion des assortiments par catégorie : OUI&lt;br /&gt;
Limitez la sélection des produits aux assortiments définis pour les commandes clients : OUI&lt;br /&gt;
&lt;br /&gt;
Activez le module Categories dans Module complémentaire&lt;br /&gt;
&lt;br /&gt;
Allez sur la fiche Client et créez 2 catégories, distributeurs et détaillants&lt;br /&gt;
Affectez à vos client les bonnes catégories&lt;br /&gt;
&lt;br /&gt;
Allez dans la fiche d&#039;un produit que vous ne destiner a être vendu qu&#039;aux détaillants, allez dans l&#039;onglet assortiment, puis ajoutez ce produit dans les assortiments des clients de la catégorie détaillants.&lt;br /&gt;
&lt;br /&gt;
Lors de la création d&#039;une nouvelle commande, seul ce produit sera disponible a la sélection.&lt;br /&gt;
&lt;br /&gt;
= Développement =&lt;br /&gt;
N&#039;hesitez pas me contacter florian.henry@open-concept.pro&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Setup_Other&amp;diff=29592</id>
		<title>Setup Other</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Setup_Other&amp;diff=29592"/>
		<updated>2013-05-25T10:20:23Z</updated>

		<summary type="html">&lt;p&gt;Iouston: /* Invoice module */  ajout de la variable MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Admin]]&lt;br /&gt;
{{TemplateDocUser}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Help about screen:&#039;&#039;&#039; Other setup&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Menu path:&#039;&#039;&#039; Home -&amp;gt; Setup -&amp;gt; Other&lt;br /&gt;
&lt;br /&gt;
= Goal =&lt;br /&gt;
This page is build to add/edit new parameters without a dedicated page build to edit them. In most cases, it is parameters for your own development, external modules, or hidden features.&lt;br /&gt;
&lt;br /&gt;
For a standard usage of Dolibarr, this screen must be kept empty and not be used.&lt;br /&gt;
&lt;br /&gt;
= List of known hidden options =&lt;br /&gt;
Some options are not visible in the interface (often because they are deprecated or beta features). In most cases you do not need these functions and their use may make the application unstable.&lt;br /&gt;
&lt;br /&gt;
To enable them you have to define a constant to 1 in &#039;&#039;&#039;Home - Setup - Other&#039;&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
== Global options ==&lt;br /&gt;
&lt;br /&gt;
* MAIN_APPLICATION_TITLE =&amp;gt; This will change the title of software (that appears on the login page by default).&lt;br /&gt;
&lt;br /&gt;
* MAIN_AUTOFILL_DATE =&amp;gt; If this constant is defined (to something else than 0), the date of invoice, proposal, order or payment are filled with current date. It is highly recommended to NOT ENABLE this feature. This create a lot of input errors with no data not validated by users. This lead in bad values saved in database giving headaches when you have to do your accountancy reports ! However some users want it, so we provide it.&lt;br /&gt;
&lt;br /&gt;
* MAIN_DISABLE_FULL_SCANLIST =&amp;gt; Constant to define to disable complete scan of tables to know the total amount of element to allow the pagination to show total number of pages. To activate on systems with a very important number of data (Tables with more than 500 000 records).&lt;br /&gt;
&lt;br /&gt;
* MAIN_FIRST_TO_UPPER =&amp;gt; Dolibarr add upper case to thirdparties, contacts or members names if not done. Warning, with some languages (whose words with uppercase are not same words, or pagecode does not always have an uppercase, like cyrillic languages), this feature may alter your data.&lt;br /&gt;
&lt;br /&gt;
* MAIN_LOGTOHTML =&amp;gt; If this constants is defined, it is possible to have logs inside pages by adding the parameter &amp;amp;logtohtml=1 into URL.&lt;br /&gt;
&lt;br /&gt;
* MAIN_USE_HOURMIN_IN_DATE_RANGE =&amp;gt; On all entities lines (invoice, order, contract...), it is possible to add hour and minutes with date on fields &amp;quot;date start&amp;quot; and &amp;quot;date end&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* MAIN_REMOVE_INSTALL_WARNING =&amp;gt; Remove all security warning that appears to administrator users if URL /install is public. You shoud solve the problem if warning occurs instead of removing this warning. For this, put a file called install.lock into Dolibarr root directory. This will remove warning but also make the page /install not possible to use to protect your installation.&lt;br /&gt;
&lt;br /&gt;
* MAIN_OPTIMIZE_SPEED =&amp;gt; Use some speed enhancements. See page [[Increase_Performance]] for more information.&lt;br /&gt;
&lt;br /&gt;
* MAIN_OVERWRITE_TRANS_xx_YY =&amp;gt; You can use this to change value of a translation key for language xx_YY (ie: en_US) without editing language files. For example: &amp;quot;TranslationKey1:New value1,TranslationKey2:New value 2&amp;quot;. Note that using this option slow down seriously your instance. If you can, it is better to edit directly the language files into htdocs/lang/xx_YY.&lt;br /&gt;
&lt;br /&gt;
* MAIN_REPEATCONTACTONEACHTAB =&amp;gt; If added and set to 1, this add contacts on all tabs, not only main tab.&lt;br /&gt;
&lt;br /&gt;
* MAIN_USE_ADVANCED_PERMS =&amp;gt; Active advanced permissions functionality. You will get more details permission but you loose the homogeneity of permission rules.&lt;br /&gt;
&lt;br /&gt;
* MAIN_DISABLE_JQUERY_JNOTIFY =&amp;gt; Disable usage of JNotify to show confirm or error messages&lt;br /&gt;
&lt;br /&gt;
* MAIN_USE_JQUERY_JEDITABLE =&amp;gt; Allow to update from screnn, directly into database, some properties of elements (invoices, proposals, ...) using Ajax. This make response time faster, but avoid using this features, because, it overpass some business actions (updates onother data that should be done consitently) and ignore business controls on data you saved. So this feature breaks consitency of data and stability of software.&lt;br /&gt;
&lt;br /&gt;
* MAIN_USE_JQUERY_MULTISELECT =&amp;gt; Allow to use Ajax when a choice that require multiselect is used (for the moment only external modules uses select box with multiselect values).&lt;br /&gt;
&lt;br /&gt;
* MAIN_HELPCENTER_LINKTOUSE  =&amp;gt; Define a target link &amp;quot;I need help&amp;quot; onto logon page&lt;br /&gt;
&lt;br /&gt;
* MAIN_MODULES_FOR_EXTERNAL =&amp;gt; Limit available modules for external users. By defaut value is &#039;facture,commande,contact,propal,projet,contrat,societe,ficheinter,expedition,agenda&#039;&lt;br /&gt;
&lt;br /&gt;
* MAIN_PRODUCT_DISABLE_CUSTOMCOUNTRYCODE =&amp;gt; Avoid Custom code and country of orign to be set as product description when added to Propal/ORder/Invoice&lt;br /&gt;
&lt;br /&gt;
== EMail and SMS ==&lt;br /&gt;
* MAIN_MAIL_DEBUG =&amp;gt; Write content with header of last mail into file dolibarr_mail.log into directory dolibarr_main_data_root.&lt;br /&gt;
&lt;br /&gt;
* MAIN_SMS_DEBUG =&amp;gt; Write content of SMS sent into file dolibarr_sms.log into directory dolibarr_main_data_root.&lt;br /&gt;
&lt;br /&gt;
* MAIN_MAIL_ALLOW_SENDMAIL_F =&amp;gt; On Linux or BSD system, PHP email function use the command sendmail local to server. In some cases, the sender email must be provided on command line of sendmail with option -f. This option is here to ask Dolibarr to call the function &#039;&#039;&#039;mail&#039;&#039;&#039; of PHP by adding value for the option -f. Note that in most cases, even with sendmail, sender email is correctly managed as it is added in the email technical header. This option is here only for rare setup of sendmail that ask the &#039;&#039;&#039;-f&#039;&#039;&#039; option to be mandatory.&lt;br /&gt;
&lt;br /&gt;
* MAIN_MAIL_SENDMAIL_FORCE_BA =&amp;gt; On Lunix or BSD system, PHP email function use the command sendmail local to server. In some case, we want to recipient to be provided to sendmail into the email content instead of its command line parameter. For this we must add the &#039;&#039;&#039;-ba&#039;&#039;&#039; parameter to sendmail. This option ask PHP to provide this parameter when sending a mail. Note that another solution is to edit the &#039;&#039;&#039;mail.force_extra_parameters=-ba&#039;&#039;&#039; into &#039;&#039;&#039;php.ini&#039;&#039;&#039; file.&lt;br /&gt;
&lt;br /&gt;
* MAIN_MAIL_NO_FULL_EMAIL =&amp;gt; Recipient email and sender are cleaned to be on form &amp;quot;&amp;lt;email&amp;gt;&amp;quot; instead of &amp;quot;Name &amp;lt;email&amp;gt;&amp;quot;. This might solve problem of compatibility with very old mailers.&lt;br /&gt;
&lt;br /&gt;
* MAIN_FIX_FOR_BUGGED_MTA =&amp;gt; Some MTA agent are bugged and add some CR chars each time they saw a LF. Because Dolibarr emails are forged to be already cleaned, if MTA agent do that, you will send an email with two CR chars. This may result in having recipient not able to read your email. To fix this, add this constant to 1. Dolibarr will then create an email that is not RFC compliant but because the MTA agent is bugged, the email be be modified and become correct during sending, solving any problem. Add this constant if your recipient experience problems when opening email for example users using webmail of orange.fr or hotmail.com&lt;br /&gt;
&lt;br /&gt;
* MAIN_MAIL_DO_NOT_USE_SIGN =&amp;gt; Do not add user signature at end of suggested predefined email&lt;br /&gt;
&lt;br /&gt;
== Module Tiers ==&lt;br /&gt;
* SOCIETE_DISABLE_CUSTOMERS =&amp;gt; Remove all menu and features related to customers&lt;br /&gt;
* SOCIETE_DISABLE_PROSPECTS =&amp;gt; Remove all menu and features related to prospects&lt;br /&gt;
* SOCIETE_DISABLE_STATE =&amp;gt; Do not use field &amp;quot;state/province&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Commercial proposal module ==&lt;br /&gt;
* PROPAL_CLONE_ON_CREATE_PAGE =&amp;gt; On the create proposal page, ask if we want to create the proposal by cloning an already existing one. You should use instead the &amp;quot;Clone&amp;quot; button available on existing proposals.&lt;br /&gt;
* MAIN_PROPAL_CHOOSE_ODT_DOCUMENT =&amp;gt; On setup page, you&#039;ll be able to select which ODT document to use when close or cancel proposals.&lt;br /&gt;
&lt;br /&gt;
== Invoice module ==&lt;br /&gt;
* FACTURE_SHOW_SEND_REMINDER =&amp;gt; Show link &amp;quot;Send reminder by mail&amp;quot;, same feature than &amp;quot;Send by mail&amp;quot; (obsolete feature).&lt;br /&gt;
* INVOICE_CAN_ALWAYS_BE_REMOVED =&amp;gt; Allow to always delete invoices (even if invoice is not last one).&lt;br /&gt;
* INVOICE_CAN_NEVER_BE_REMOVED =&amp;gt; Never allow to delete invoices (except draft invoices).&lt;br /&gt;
* INVOICE_POSITIVE_CREDIT_NOTE =&amp;gt; All amounts on PDF credit notes are positive.&lt;br /&gt;
* FACTURE_CHANGE_THIRDPARTY =&amp;gt; Allow to change the third party in the draft invoices. If a discount was set from the original thirdparty, then discount remain, making data not coherent.&lt;br /&gt;
* FACTURE_USE_PROFORMAT =&amp;gt; Enable PROFORMAT invoices type.&lt;br /&gt;
* FACTURE_DEPOSITS_ARE_JUST_PAYMENTS&lt;br /&gt;
* MAIN_USE_LOCALTAX_TYPE_7 =&amp;gt; Enable local tax type 7 into dictionnary of vat types (disabled by default because implementation still need works).&lt;br /&gt;
* MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT =&amp;gt; Disable VAT on genrated documents. like for an association. (it&#039;s work with crabe template)&lt;br /&gt;
&lt;br /&gt;
== Order module ==&lt;br /&gt;
* COMMANDE_REQUIRE_SOURCE =&amp;gt; Make the input field &amp;quot;Source of order&amp;quot; mandatory.&lt;br /&gt;
* COMMANDE_VALID_AFTER_CLOSE_PROPAL =&amp;gt; When an order is created on a proposal close, the order is directly defined with status &amp;quot;Validated&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Export module ==&lt;br /&gt;
* EXPORT_CSV_SEPARATOR_TO_USE =&amp;gt; String value to use as separator to delimit fields int exported files (by default Dolibarr use &amp;quot;,&amp;quot;). Example: EXPORT_CSV_SEPARATOR_TO_USE=;&lt;br /&gt;
* EXPORT_CSV_FORCE_CHARSET =&amp;gt; Choose the charset of file built by CSV export. By default: UTF-8. Example: EXPORT_CSV_FORCE_CHARSET=ISO-8859-1&lt;br /&gt;
&lt;br /&gt;
== Agenda module ==&lt;br /&gt;
* AGENDA_MAX_EVENTS_DAY_VIEW =&amp;gt; Define the maximum number of visible entries for each day in agenda. Default value is 3. Value 0 means no limit.&lt;br /&gt;
* AGENDA_USE_EVENT_TYPE =&amp;gt; Add a mandatory field &amp;quot;Type&amp;quot; when creating an event (deprecated).&lt;br /&gt;
&lt;br /&gt;
== Product module ==&lt;br /&gt;
* PRODUCT_ADD_TYPE_IN_DOCUMENTS =&amp;gt; Add text &amp;quot;Product&amp;quot; or &amp;quot;Service&amp;quot; at beginning of details lines on built PDF documents.&lt;br /&gt;
* PRODUCT_SHOW_WHEN_CREATE =&amp;gt; Old option no more supported (create problems) to be able to add lines of product during first step of element creation.&lt;br /&gt;
* PRODUCT_DONOTSEARCH_ANYWHERE =&amp;gt; When Ajax search is enabled, search is done on criteria anywhere in label of product. By adding this option, search is done only on start of label. This is really faster when you have a huge number of products.&lt;br /&gt;
* PRODUIT_DESC_IN_LIST =&amp;gt; Show long description of product/service into lists.&lt;br /&gt;
&lt;br /&gt;
== Service module ==&lt;br /&gt;
* SERVICE_ARE_ECOMMERCE_200238EC =&amp;gt; If this option is enabled, services are processed like eServices according to directove of EU Council Directive 2002/38/EC (http://ec.europa.eu/taxation_customs/taxation/vat/traders/e-commerce/article_1610_en.htm). Default VAT rate are based on buying country instead of selling country for BtoC sells.&lt;br /&gt;
&lt;br /&gt;
== Foundation module ==&lt;br /&gt;
* MEMBER_URL_REDIRECT_SUBSCRIPTION =&amp;gt; Link called and shown when a member account is autocreated in member module by a guest user.&lt;br /&gt;
&lt;br /&gt;
== Intervention module ==&lt;br /&gt;
* FICHEINTER_CLASSIFY_BILLED =&amp;gt; Allow to classify a intervention card as &amp;quot;Billed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Suppliers module ==&lt;br /&gt;
* FOURN_PRODUCT_AVAILABILITY =&amp;gt; On the Suppliers price page of the products, active the supplier product availability.&lt;br /&gt;
&lt;br /&gt;
== PDF Options ==&lt;br /&gt;
* MAIN_DISABLE_FORCE_SAVEAS =&amp;gt; If your browser ask always to save downloaded files on disk (like PDF), try to add this option. File might appears directly into your browser.&lt;br /&gt;
&lt;br /&gt;
* MAIN_DISABLE_PDF_COMPRESSION =&amp;gt; Disable PDF compression.&lt;br /&gt;
&lt;br /&gt;
* MAIN_INVERT_SENDER_RECIPIENT =&amp;gt;  Invert sender and recipient in some PDF.&lt;br /&gt;
&lt;br /&gt;
* MAIN_DISABLE_PDF_AUTOUPDATE =&amp;gt; Disable automatic generation of PDF each time we add/update/delete a product line (we can still build document by clicking on &amp;quot;Generate&amp;quot;). This option may increase interface speed on server with low CPU.&lt;br /&gt;
&lt;br /&gt;
* MAIN_USE_BACKGROUND_ON_PDF =&amp;gt; Define this constant with short name of an image (example &amp;quot;myimage.jpg&amp;quot;) that must be saved into directory &amp;quot;documents/mycompany/logos&amp;quot;. This will add this background image into your generated PDF files.&lt;br /&gt;
&lt;br /&gt;
* MAIN_ADD_PDF_BACKGROUND =&amp;gt; Define this constant with short name of a PDF file (example &amp;quot;mypdf.pdf&amp;quot;) that must be saved into directory &amp;quot;documents/mycompany&amp;quot;. This will add PDF as a background of some of your generated PDF files (proposals,invoices,orders). If you need to concat PDF, see instead [[Module Concat PDF]].&lt;br /&gt;
&lt;br /&gt;
* MAIN_PDF_ADDALSOSOURCEDETAILS =&amp;gt; Shows all contact information in PDF files of your own company (&amp;lt; 3.2)&lt;br /&gt;
&lt;br /&gt;
* MAIN_PDF_FORCE_FONT =&amp;gt; To ignore font defined into language file and force usage of a particular font. For example &amp;quot;DejaVuSans&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* MAIN_PDF_MARGIN_LEFT, MAIN_PDF_MARGIN_RIGHT, MAIN_PDF_MARGIN_TOP, MAIN_PDF_MARGIN_BOTTOM =&amp;gt; To force the margins (mm) of PDF documents (10 is default).&lt;br /&gt;
&lt;br /&gt;
* MAIN_PDF_FREETEXT_HEIGHT =&amp;gt; Change height of space reserved to output the free text.&lt;br /&gt;
&lt;br /&gt;
* MAIN_PDF_TITLE_BACKGROUND_COLOR =&amp;gt; Can define a background color onot title line. Example: &#039;220,220,200&#039;&lt;br /&gt;
&lt;br /&gt;
* MAIN_USE_COMPANY_NAME_OF_CONTACT =&amp;gt; Use contact name and information rather than company&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Langages_et_normes&amp;diff=29558</id>
		<title>Langages et normes</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Langages_et_normes&amp;diff=29558"/>
		<updated>2013-05-19T16:08:56Z</updated>

		<summary type="html">&lt;p&gt;Iouston: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TemplateDocDev}}&lt;br /&gt;
&lt;br /&gt;
Voici les quelques règles sur le langage, la syntaxe et normes de développement en vigueur pour le projet Dolibarr:&lt;br /&gt;
&lt;br /&gt;
= Versions =&lt;br /&gt;
&lt;br /&gt;
* Dolibarr doit fonctionner sur:&lt;br /&gt;
# Tous OS (Windows, Linux, MACOS...)&lt;br /&gt;
# PHP {{PHPMinVersion}} (Doit fonctionner sans aucun module PHP complémentaire hors les modules d&#039;accès base de donnée).&lt;br /&gt;
# Mysql {{MySqlMinVersion}}&lt;br /&gt;
&lt;br /&gt;
= Normes Copyright =&lt;br /&gt;
* Tout fichier PHP doit avoir un en-tête selon le masque suivant&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/* Copyright (C) YYYY John Doe  &amp;lt;email@email.com&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 * Licence information&lt;br /&gt;
 */&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Quand vous éditer un fichier existant du projet, ajouter une ligne Copyright sous celles existantes.&lt;br /&gt;
&lt;br /&gt;
= Normes PHP =&lt;br /&gt;
&lt;br /&gt;
* Dolibarr est écrit en PHP et supporte toutes versions PHP supérieures à la {{PHPMinVersion}}. Les fichiers doivent tous comporter l&#039;extension .php&lt;br /&gt;
&lt;br /&gt;
* L&#039;appel aux variables superglobales PHP doit passer par les opérateurs dédiés $_COOKIES, $_SERVER, $_ENV mais par la fonction dolibarr GETPOST() pour récupérer les contenus de $_GET ou $_POST.&lt;br /&gt;
Les autres opérateurs ($HTTP_SERVER_GET, ...) ayant été passés en deprecated au sein de PHP, ne doivent plus être utilisés. Ainsi le code doit fonctionner y compris quand l&#039;option &#039;&#039;&#039;register_long_arrays&#039;&#039;&#039; est à off.&lt;br /&gt;
De plus, le code doit fonctionner quand l&#039;option PHP &#039;&#039;&#039;register_globals&#039;&#039;&#039; est à off (recommandé par PHP) aussi bien que quand l&#039;option &#039;&#039;&#039;register_globals&#039;&#039;&#039; à on (par défaut sur de nombreuses installations).&lt;br /&gt;
&lt;br /&gt;
* Les smart tags PHP ne sont pas utilisés. Les sections de code doivent commencer par &#039;&#039;&#039;&amp;lt;?php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Pas d&#039;utilisation de la variable &#039;&#039;&#039;PHP_SELF&#039;&#039;&#039;. Utiliser a la place $_SERVER[&amp;quot;PHP_SELF&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
* Quand plusieurs variables doivent être initialisées avec la même valeur, il faut utiliser plusieurs lignes&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$var1=1;$var2=1;$var3=1;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
plutôt que&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$var1=$var2=$var3=1;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
qui est moins performant.&lt;br /&gt;
&lt;br /&gt;
* Les chaines doivent être encadrées de simple quote et les variables sorties de la chaine.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
print &#039;Mon texte affiche ma &#039;.$variable.&#039; !&#039;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Les commentaires doivent suivre la syntaxe C, ie un double antislash pour un commentaire d&#039;une ligne et utilisation slash-étoile pour ouvrir un bloc de plusieurs lignes&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/* Bloc de commentaire&lt;br /&gt;
 *&lt;br /&gt;
 * Fin du bloc&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
$monobjet = new MonObjet($db);&lt;br /&gt;
$result=$monobjet-&amp;gt;fetch($idobject);&lt;br /&gt;
&lt;br /&gt;
for ($i = 1 , $i &amp;lt; 2 ; $i++)&lt;br /&gt;
{&lt;br /&gt;
  // commentaire sur une ligne&lt;br /&gt;
  print $i;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Les fichiers doivent être sauvés en format Unix (LF) et non Windows (CR/LF). Le format Unix étant compatible sur les OS Unix like, Windows, Mac, alors que le format fichier texte Windows pose problème sous certains PHP sous Unix.&lt;br /&gt;
&lt;br /&gt;
* Les fonctions doivent retourner une valeure strictement &amp;gt; à 0 en cas de succès, et un nombre &amp;lt; à 0 en cas d&#039;erreur.&lt;br /&gt;
&lt;br /&gt;
* Pas de code mort (non utilisé) dans le code principal de Dolibarr (le code utilisé uniquement par un module externe doit être inclus dans le module externe).&lt;br /&gt;
&lt;br /&gt;
* Utiliser &amp;quot;include_once&amp;quot; pour l&#039;inclusion de tout fichier contenant des définitions de fonction ou de classes (donc fichiers *.class.php et *.lib.php), utiliser &amp;quot;include&amp;quot; pour tout inclusion de fichier de type template ou contenant un mixte de HTML et PHP (donc fichiers *.inc.php et *.tpl.php).&lt;br /&gt;
&lt;br /&gt;
= Normes SQL =&lt;br /&gt;
&lt;br /&gt;
== Structure des tables et champs ==&lt;br /&gt;
* Toutes les tables sont préfixées pour éviter les conflits de nommage. Aujourd&#039;hui, le préfixe est modifiable au moment de l&#039;installation. Sa valeur par défaut est &amp;lt;tt&amp;gt;llx_&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Structure des tables.&lt;br /&gt;
Lorsque vous créez une table, il est recommandé de prendre les même conventions de nommages de tables que les autres tables Dolibarr. Avec, à minima les champs suivant:&lt;br /&gt;
 - rowid integer pour l&#039;id&lt;br /&gt;
 - tms timestamp qui sera un champ contenant la date de chaque mise à jour (la base de donnée le gère tout seul, pas besoin de le gérer par le code)&lt;br /&gt;
 - import_key qui contiendra le code d&#039;import YYYYMMDDHHMMSS si vous faites des imports en masse dans la table.&lt;br /&gt;
Eventuellement&lt;br /&gt;
 - datec timestamp qui est la date de création de l&#039;enregistrement&lt;br /&gt;
 - fk_user_creat integer qui est l&#039;id du user de création&lt;br /&gt;
 - fk_user_modif integer qui est l&#039;id du user de modif&lt;br /&gt;
&lt;br /&gt;
* Type des champs&lt;br /&gt;
Dans la pratique, afin d&#039;etre compatible avec toutes les précisions des pays, syntaxes des bases, on utilisera uniquement les types suivants:&lt;br /&gt;
 - integer pour tout nombre entier, id ou clé étrangère&lt;br /&gt;
 - double(24,8) pour tout montant&lt;br /&gt;
 - double(6,3) pour les taux de tva&lt;br /&gt;
 - real pour une quantité&lt;br /&gt;
 - varchar pour une chaine (y compris de longueur 1, le type char est de plus en plus déprécié)&lt;br /&gt;
 - timestamp pour un champ date+heure devant être mis a jour automatiquement&lt;br /&gt;
 - datetime pour un champ date+heure&lt;br /&gt;
 - date pour un champ date&lt;br /&gt;
&lt;br /&gt;
== Clé primaire ==&lt;br /&gt;
La clé primaire d&#039;une table s&#039;appelle &amp;lt;tt&amp;gt;rowid&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Il y a quelques tables qui échappent à cette règle actuellement (ex [[Table llx_c_actioncomm]]), pour des raisons historiques. Une évolution pourra être étudiée pour une prochaine version.&lt;br /&gt;
&lt;br /&gt;
== Clés étrangères ==&lt;br /&gt;
Le nom d&#039;une clé étrangère commence par le préfixe &amp;lt;tt&amp;gt;fk_&amp;lt;/tt&amp;gt; suivi du nom de la table liée (requis pour éviter doublons globales à la base, problématiques sous certains SGBD comme postgresql) puis du champ lié (pour permettre plusieurs clés étrangères différentes sur une même table).&lt;br /&gt;
&lt;br /&gt;
Exemple:&lt;br /&gt;
fk_facture_fourn_fk_soc&lt;br /&gt;
&lt;br /&gt;
Note: Si vous développez votre propre module externe, il ne doit pas y avoir de clé étrangère depuis vos tables qui pointent sur les tables standards de Dolibarr. Ceci casserait les fonctionnalités de mise à jour, de réparation, de sauvegardes et de restauration.&lt;br /&gt;
&lt;br /&gt;
== Clés alternatives ==&lt;br /&gt;
Parfois, il n&#039;y a pas que la clé primaire qui doit être unique. On peut donc ajouter aussi un index clé alternative unique. Un tel index est nommé par un nom qui commence par le préfixe &amp;lt;tt&amp;gt;uk_&amp;lt;/tt&amp;gt; suivi du nom de la table d&#039;un underscore (requis pour éviter doublons d&#039;index globals à la base, problématiques sous certains SGBD comme postgresql) puis d&#039;un suffixe qui caractérise la clé (pour permettre plusieurs index uniques sur une même table).&lt;br /&gt;
&lt;br /&gt;
Exemple:&lt;br /&gt;
uk_societe_code_client&lt;br /&gt;
&lt;br /&gt;
== Index performance ==&lt;br /&gt;
Certains champs sont souvent utilisés comme critère de recherche, de tri ou de jointure. Il convient dans ce cas, d&#039;y mettre un index de performance. De tels indexes seront nommés avec un préfix &amp;lt;tt&amp;gt;idx_&amp;lt;/tt&amp;gt; puis le nom de la table et le nom du champ sur lequel porte l&#039;index.&lt;br /&gt;
&lt;br /&gt;
Exemple:&lt;br /&gt;
idx_societe_user_creat&lt;br /&gt;
&lt;br /&gt;
== Format de fichier DDL ==&lt;br /&gt;
Les fichiers qui contiennent la définition de la structure de la base (DDL) doivent être au nombre de 2 par tables:&lt;br /&gt;
Chaque table est définie dans son propre fichier dont le nom est &amp;lt;tt&amp;gt;llx_&#039;&#039;matable&#039;&#039;.sql&amp;lt;/tt&amp;gt;. &lt;br /&gt;
On mettra un commentaire à côté de chaque champ pour en expliquer la signification.&lt;br /&gt;
Les clés étrangères et index de performance ou autres contraintes d&#039;unicité sont définies dans un fichier séparé dont le nom est &amp;lt;tt&amp;gt;llx_&#039;&#039;matable&#039;&#039;.key.sql&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ces fichiers sont placés dans le répertoire &#039;&#039;&#039;install/mysql/tables&#039;&#039;&#039; pour les fichiers standards ou &#039;&#039;&#039;monmodule/tables&#039;&#039;&#039; pour les tables amenées par un module.&lt;br /&gt;
&lt;br /&gt;
Exemple &#039;&#039;&#039;fichier table llx_matable.sql&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
-- Copyright (C) 2008 Author &amp;lt;email@author.com&amp;gt;&lt;br /&gt;
-- &lt;br /&gt;
-- This program is free software; you can redistribute it and/or modify&lt;br /&gt;
-- it under the terms of the GNU General Public License as published by&lt;br /&gt;
-- the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
-- (at your option) any later version.&lt;br /&gt;
--&lt;br /&gt;
-- This program is distributed in the hope that it will be useful,&lt;br /&gt;
-- but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
-- GNU General Public License for more details.&lt;br /&gt;
--&lt;br /&gt;
-- You should have received a copy of the GNU General Public License&lt;br /&gt;
-- along with this program. If not, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
&lt;br /&gt;
create table llx_matable&lt;br /&gt;
(&lt;br /&gt;
  rowid       integer AUTO_INCREMENT PRIMARY KEY,&lt;br /&gt;
  field_one   integer,&lt;br /&gt;
  field_two   integer NOT NULL,&lt;br /&gt;
  fk_field    integer,&lt;br /&gt;
  field_date  datetime,&lt;br /&gt;
  tms         timestamp&lt;br /&gt;
)type=innodb;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple &#039;&#039;&#039;fichier clés/index llx_matable.key.sql&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
-- Copyright (C) 2008 Author &amp;lt;email@author.com&amp;gt;&lt;br /&gt;
-- &lt;br /&gt;
-- This program is free software; you can redistribute it and/or modify&lt;br /&gt;
-- it under the terms of the GNU General Public License as published by&lt;br /&gt;
-- the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
-- (at your option) any later version.&lt;br /&gt;
--&lt;br /&gt;
-- This program is distributed in the hope that it will be useful,&lt;br /&gt;
-- but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
-- GNU General Public License for more details.&lt;br /&gt;
--&lt;br /&gt;
-- You should have received a copy of the GNU General Public License&lt;br /&gt;
-- along with this program. If not, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
-- ===========================================================================&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE llx_matable ADD UNIQUE uk_matable_field(field_one, field_two);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE llx_matable ADD CONSTRAINT fk_matable_fk_field FOREIGN KEY (fk_field) REFERENCES llx_matablepere (rowid);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Règles de codage SQL ==&lt;br /&gt;
* Utilisation des alias/nommage de champs&lt;br /&gt;
Dans le cas des select on pourra utiliser les alias pour simplifier l&#039;écriture des requêtes:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
select chp1, chpxxx2 as chp2 from table2 as t1, table2 as t2 where t1.chpx = t2.chpy&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Toutefois, il ne faut pas utiliser ces alias sur des requêtes update car non compatible avec mysql 3.1.&lt;br /&gt;
&lt;br /&gt;
* Les SELECT * sont interdits ! Chaque SELECT doit spécifier la liste complète des champs à récupérer. Cela permet d&#039;éviter les confusions. Exemple:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT field_a, field_b, field_c FROM table_1 WHERE field_d = &#039;$id&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Dans les requêtes SQL, on quote les champs mais pas les numériques qui contiennent des montants destinés à être stockés dans des champs de type double ou real. Les quotes sur les numériques de type float provoquent parfois un stockage d&#039;une valeur différente. Par exemple 412.62 dans le insert sera en fait stocké avec la valeur 412.61999512 en base (suite à des conversions chaines-numériques implicites) si le champ est de type double(24,8). Et seul le PHP voit 412.61999512. Les autres outils verront 412.62 donnant l&#039;impression qu&#039;il n&#039;y a pas de problème. Et c&#039;est le PHP qui a raison, il y a problème en base. En supprimant les quotes sur les numériques, cela va mieux.&lt;br /&gt;
&lt;br /&gt;
Exemple:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
Bon:     INSERT INTO table_1 (field_txt, field_num) VALUES (&#039;txt&#039;, 412.62)&lt;br /&gt;
Mauvais: INSERT INTO table_1 (field_txt, field_num) VALUES (&#039;txt&#039;, &#039;412.62&#039;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarque, le problème des float est général et pas seulement sur les accès base, il est présent dans tous les languages quand on travaille sur des nombres réels, aussi ils doivent être, dès que affectés, nettoyés par la fonction price2num avec le 2eme paramètre renseigné à:&lt;br /&gt;
&#039;MU&#039; (si il s&#039;agit d&#039;un prix unitaire), &#039;MT&#039; (s&#039;il s&#039;agit d&#039;un prix total) ou &#039;MS&#039; (autres cas) selon le besoin.&lt;br /&gt;
Voir aussi le chapitre &amp;quot;Les nombres réels, montants et calculs&amp;quot; plus bas.&lt;br /&gt;
&lt;br /&gt;
* Les fonctions NOW ou SYSDATE sont interdites au sein des ordres SQL. S&#039;il faut saisir la date du moment dans un champ, la valeur doit venir du PHP et non du moteur de base de données. Ceci afin d&#039;avoir une meilleure portabilité du code mais surtout d&#039;avoir une gestion correcte des TimeZone.&lt;br /&gt;
&lt;br /&gt;
== Règles de migration de base ==&lt;br /&gt;
* Les scripts de migration de structure sont les fichiers de type &#039;&#039;&#039;install/mysql/migration/a.b.c-x.y.z.sql&#039;&#039;&#039;. Dans un fichier de migration de n vers n+1, on ne détruit une table (DROP TABLE) qui n&#039;est plus utilisée en n+1 que lors de la migration de la version n+1 vers n+2. Ceci afin de toujours conserver les tables deprecated le temps d&#039;une version pour réparer une situation en cas d&#039;erreur de migration.&lt;br /&gt;
&lt;br /&gt;
== Spécificités MySQL ==&lt;br /&gt;
* Les tables doivent être au format InnoDB.&lt;br /&gt;
En effet, ce format gère les clés étrangères, les éventuelles restrictions qui y sont attachées et la notion d&#039;intégrité de transactions requise pour avoir des données en base cohérente entre tables.&lt;br /&gt;
&lt;br /&gt;
* Dolibarr doit fonctionner même avec les options &#039;&#039;&#039;strict&#039;&#039;&#039; de Mysql active.&lt;br /&gt;
Pour l&#039;activer, ajouter la ligne suivante dans le fichier config du serveur Mysql (my.cnf)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
sql-mode=&amp;quot;STRICT_ALL_TABLES,ONLY_FULL_GROUP_BY,NO_ZERO_DATE&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spécificités PostgreSQL ==&lt;br /&gt;
Seuls les fichiers pour Mysql doivent être maintenus.&lt;br /&gt;
Les fichiers pour les autres bases sont convertis &amp;quot;à la volée&amp;quot; par le driver Dolibarr de la base.&lt;br /&gt;
&lt;br /&gt;
Il existe une exception.&lt;br /&gt;
Les requêtes &amp;quot;UPDATE FROM&amp;quot; : &lt;br /&gt;
Syntax MySQL :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
UPDATE table_taget as target, table_source as source SET fieldtarget=source.fieldsource&lt;br /&gt;
WHERE source.rowid=target.rowid;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Syntax PgSQL:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
UPDATE table_taget as target SET fieldtarget=source.fieldsource&lt;br /&gt;
FROM table_source as source WHERE source.rowid=target.rowid;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il n&#039;en existe pas dans Dolibarr, mais pour vos modules Vous devriez faire tel que :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if ($this-&amp;gt;db-&amp;gt;type==&#039;pgsql&#039;) {&lt;br /&gt;
$sql=&amp;quot;UPDATE table_taget as target SET fieldtarget=source.fieldsource&lt;br /&gt;
FROM table_source as source WHERE source.rowid=target.rowid&amp;quot;;&lt;br /&gt;
} else {&lt;br /&gt;
$sql= &amp;quot;UPDATE table_taget as target, table_source as source SET fieldtarget=source.fieldsource&lt;br /&gt;
WHERE source.rowid=target.rowid&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Normes HTML =&lt;br /&gt;
&lt;br /&gt;
* Tous les attributs dans les balises HTML doivent être *en minuscule* et quotés avec des *doubles quote*.&lt;br /&gt;
&lt;br /&gt;
* Les liens href doivent être absolus en se basant sur la fonction dol_buildpath() pour obtenir un chemin absolu depuis un chemin relatif au répertoire htdocs. Pour les tags img, il faut faire appel à la fonction img_picto().&lt;br /&gt;
Par example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
print &#039;&amp;lt;a href=&amp;quot;&#039;.dol_buildpath(&#039;/monrep/mapage.php&#039;).&#039;&amp;quot;&amp;gt;&#039;.img_picto(&#039;Texte alt&#039;,&#039;nompictopng&#039;,&#039;&#039;).&#039;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Les tables HTML doivent avoir des colonnes sans valeures forcées, excepté pour les colonnes qui contiennent une information dont la longueur est non variable. Par exemple, une colonne avec un picto peut etre forcée à with=&amp;quot;20px&amp;quot;. Dans les autres cas, il faut éviter de forcer la largeur des colonnes. La raison est que, dans la plupart des cas, le navigateur fait un meilleur travail pour définir automatiquement la bonne largeur des colonnes qu&#039;en forçant manuellement les largeurs. Et ceci marche quelquesoit la résolution de l&#039;écran.&lt;br /&gt;
&lt;br /&gt;
* Le javascript/ajax et l&#039;appel aux scripts java dans les pages php est à proscrire. Si toutefois du code javascript est inclus, il doit être conditionné par le test sur &amp;quot;$conf-&amp;gt;use_javascript_ajax&amp;quot;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
if ($conf-&amp;gt;use_javascript_ajax) {&lt;br /&gt;
...  // Le code php qui génère du javascript est ici&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Les popups windows ne doivent pas être utilisées, sauf pour des tooltips (et restent conditionnées par le point ci-dessus).&lt;br /&gt;
&lt;br /&gt;
* Les scripts externes sont écrits en Perl s&#039;ils ne peuvent l&#039;être en php, l&#039;utilisation d&#039;un autre langage n&#039;est pas interdit mais doit être discuté au préalable dans la mailing list des développeurs.&lt;br /&gt;
&lt;br /&gt;
= Normes Dolibarr et squelettes de code =&lt;br /&gt;
&lt;br /&gt;
== Squelettes de code ==&lt;br /&gt;
Afin d&#039;uniformiser le code et d&#039;accélérer le développement de nouveaux composants dans Dolibarr, se trouvent dans le répertoire &#039;&#039;&#039;dev/skeletons&#039;&#039;&#039;, 4 squelettes de code tout préparés.&lt;br /&gt;
&lt;br /&gt;
* 1 qui sert d&#039;exemple de descripteur de module: &#039;&#039;&#039;myModule.class.php&#039;&#039;&#039;&lt;br /&gt;
* 1 qui sert d&#039;exemple de code pour faire une nouvelle classe: &#039;&#039;&#039;skeleton_class.class.php&#039;&#039;&#039;&lt;br /&gt;
* 1 qui sert d&#039;exemple de code pour faire une nouvelle page: &#039;&#039;&#039;skeleton_page.php&#039;&#039;&#039;&lt;br /&gt;
* 1 qui sert d&#039;exemple de code pour faire un script à exécuter en ligne de commande: &#039;&#039;&#039;skeleton_script.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Servez-vous en comme exemple.&lt;br /&gt;
Notons que ces squelettes sont aussi utilisés par le générateur de code PHP qui est décrit dans la chapitre de développement de module Dolibarr pour accélérer vos développement.&lt;br /&gt;
&lt;br /&gt;
== Les dates et TimeZone ==&lt;br /&gt;
Dolibarr se veut une application multi-utilisateur et multi-localisation. Il convient donc de stocker les dates dans le bon format. Pour éviter les problèmes de conversion, les règles suivantes doivent être appliquées:&lt;br /&gt;
* Une date en mémoire doit être au format Timestamp GMT.&lt;br /&gt;
* Une date stockée en base de données contient le Timestamp issue de la date soumise dans la requête en heure &amp;lt;b&amp;gt;locale du serveur PHP&amp;lt;/b&amp;gt;. Cela ne concerne pas les dates mises à jour automatiquement par la base (champ &#039;&#039;&#039;tms&#039;&#039;&#039; en base).&lt;br /&gt;
Ainsi le 1er janvier 1970, 3 heures à Paris (TZ=+1) = 1er janvier 1970, 2 heures à Greenwich (TZ=0) sera stocké en mémoire par 7200 et sera soumis à la base de données avec la chaine &#039;19700101030000&#039; (PHP convertit en heure de son TZ et la base déconvertit avec son TZ qui est le même que celui de PHP).&lt;br /&gt;
&lt;br /&gt;
Les méthodes select doivent donc traduire les champs dates lus qui sont au format chaine TZ de la base (&#039;19700101030000&#039;) par appel de la méthode db-&amp;gt;jdate afin de récupérer une information en mémoire au format Timestamp GMT. Et les méthodes insert doivent lors de la génération de la requête convertir la date mémoire connue en variable, par la méthode db-&amp;gt;idate (Voir exemples générés par le squelette).&lt;br /&gt;
&lt;br /&gt;
* Les dates mises à jour automatiquement par la base (champ &#039;&#039;&#039;tms&#039;&#039;&#039; en base) contiennent le Timestamp où la modification est faite selon le timezone de la base de donnée. Les méthodes select récupèrent cette donnée en mémoire au format Timestamp GMT en appliquant également le db-&amp;gt;jdate. Si le timezone de la base de donnée diffère de celui du PHP (un des 2 est mal réglé), il peut donc y avoir des écarts entre date de création et modification.&lt;br /&gt;
&lt;br /&gt;
* La manipulation de dates en PHP doit être faite en utilisant les fonctions dates de Dolibarr: &#039;&#039;&#039;dol_now(), dol_mktime(), dol_stringtotime(), dol_getdate(), dol_time_plus_duree()&#039;&#039;&#039;. Vous trouverez également d&#039;autres fonctions prêtes à l&#039;emploi dans le fichier &#039;&#039;&#039;date.lib.php&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== L&#039;encodage UTF8/ISO ==&lt;br /&gt;
Dolibarr stocke les informations de manière suivante:&lt;br /&gt;
* En base de donnée, les données sont en UTF8 ou ISO. Cela dépend du pagecode de la base, donc des options à la création de cette base. Dans tous les cas le driver d&#039;accès base Dolibarr (dans /lib/database) s&#039;arrange à la lecture et insertion pour convertir vers et depuis de l&#039;UTF8.&lt;br /&gt;
* Les données en mémoires sont donc stockées en UTF8 (instances d&#039;objets PHP).&lt;br /&gt;
* Les pages web affichées à l&#039;écran sont au format UTF8 (avec les versions &amp;lt; 2.5.1, c&#039;est le vieux paramètre $character_set du fichier conf.php qui définissait le format de sortie).&lt;br /&gt;
&lt;br /&gt;
== Les nombres réels, montants et calculs ==&lt;br /&gt;
En PHP comme dans d&#039;autres langages (Java par exemple), les données non entières (float, real, double) ne sont pas fiables.&lt;br /&gt;
Essayer de faire par exemple &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
print 239.2 - 229.3 - 9.9;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Vous n&#039;obtiendrez pas zéro mais un nombre très petit en puissance de 10 négative. Si vous obtenez zéro, vous pourrez trouvez d&#039;autres exemples qui ne fonctionnent pas.&lt;br /&gt;
Le problème des float est général, une variable résultante de calcul de nombre réels doit SYSTEMATIQUEMENT être nettoyée par la fonction &#039;&#039;&#039;price2num()&#039;&#039;&#039; avec le 2eme paramètre renseigné à: &#039;MU&#039;, &#039;MT&#039; ou &#039;MS&#039; selon le besoin (voir doc fonction).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
print price2num(239.2 - 229.3 - 9.9, &#039;MT&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
S&#039;il ne s&#039;agit pas d&#039;un prix sur lequel s&#039;adapte les paramètres MU, MT ou MS, il faut utiliser la fonction &#039;&#039;&#039;round()&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Création de tables ==&lt;br /&gt;
Ne pas créer de table à l&#039;utilisation, c&#039;est-à-dire à la &#039;&#039;&#039;première utilisation&#039;&#039;&#039; du module.&lt;br /&gt;
Si vous créez un module qui utilise des tables qui ne sont pas intégrées en standard dans le code de Dolibarr, veillez à suivre le didacticiel [[Développement module]] qui explique comment joindre des tables qui se créent à l&#039;activation du module et non à son utilisation (voir plus haut).&lt;br /&gt;
&lt;br /&gt;
== Logs ==&lt;br /&gt;
Ajouter des traces dans votre code avec la fonction&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
dol_syslog($yourmessage, LOG_INFO|LOG_DEBUG|LOG_WARNING|LOG_ERR);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Répertoires de travail ==&lt;br /&gt;
Si vous avez besoin de créer un répertoire de travail, dans votre code, faites référence à ce répertoire par&lt;br /&gt;
&#039;&#039;&#039;DOL_DATA_ROOT.&#039;/monmodule&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le répertoire peut être créé dans votre code à l&#039;exécution par le code suivant:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$mymoduledir=DOL_DATA_ROOT.&#039;/monmodule&#039;;&lt;br /&gt;
dol_mkdir($mymoduledir);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous avez besoin d&#039;un répertoire qui contiendra des données temporaires, ce répertoire doit être&#039;&#039;&#039; DOL_DATA_ROOT.&#039;/monmodule/temp&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Design patterns et programmation objet =&lt;br /&gt;
&lt;br /&gt;
== Design patterns de Création (GoF) ==&lt;br /&gt;
Design patterns défini par le Gang Of Four (voir la wikipédia sur les [[wikipedia:Patron de conception|Design patterns]]).&lt;br /&gt;
Dans Dolibarr, pas de mise en oeuvre de design patterns de création particulier.&lt;br /&gt;
On trouve des objets proches des Singletons et Fabriques conforme à 100% dans l&#039;esprit mais pas dans la syntaxe, ceci afin d’être compatible avec le PHP 4 qui n&#039;est pas un langage objet complet.&lt;br /&gt;
&lt;br /&gt;
== Design patterns de Structure (GoF) ==&lt;br /&gt;
Design patterns défini par le Gang Of Four (voir la wikipédia sur les [[wikipedia:Patron de conception|Design patterns]]).&lt;br /&gt;
Dans Dolibarr, pas de mise en oeuvre de design patterns de structure particulier.&lt;br /&gt;
&lt;br /&gt;
== Design patterns de Comportement (GoF) ==&lt;br /&gt;
Design patterns défini par le Gang Of Four (voir la wikipédia sur les [[wikipedia:Patron de conception|Design patterns]]).&lt;br /&gt;
Dans Dolibarr, pas de mise en oeuvre de design patterns de comportement particulier.&lt;br /&gt;
 &lt;br /&gt;
== Design patterns d&#039;entreprises (Martin Fowler) ==&lt;br /&gt;
&lt;br /&gt;
=== Mode d&#039;organisation du code ===&lt;br /&gt;
[[wikipedia:Martin_Fowler|Martin Fowler]] a identifié 3 méthodes d&#039;organisation du code appelées &#039;&#039;&#039;patterns&#039;&#039;&#039; (&#039;&#039;&#039;motifs&#039;&#039;&#039;):&lt;br /&gt;
* Le &#039;&#039;&#039;Transaction Script&#039;&#039;&#039; (Le code est linéaire en fonction d&#039;une action utilisateur).&lt;br /&gt;
C&#039;est le motif à l&#039;ancienne utilisé dans les langages procéduraux.&lt;br /&gt;
Inconvénient: Redondance du code. Nécessité de connaitre le modèle physique pour développer les parties métiers.&lt;br /&gt;
* Le &#039;&#039;&#039;Domain Model&#039;&#039;&#039;&lt;br /&gt;
C&#039;est un concept possible depuis les langages objets. Ce sont les procédures métiers (qui doivent être identifiés avant) qui servent de bases pour les classes objets.&lt;br /&gt;
Inconvénient: Motif complexe à maintenir.&lt;br /&gt;
* Le &#039;&#039;&#039;Table Module&#039;&#039;&#039;&lt;br /&gt;
Un intermédiaire entre les 2 précédents où l&#039;on a une instance unique de classe par table de la base de données.&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Comme le montre les squelettes de code (voir point précédent), Dolibarr se base sur le principe du &#039;&#039;&#039;Table Module&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Communication Logique métier - Données (ORM) ===&lt;br /&gt;
Il existe 3 modes de liaisons:&lt;br /&gt;
* Le &#039;&#039;&#039;Table And Row Data Gateway&#039;&#039;&#039;&lt;br /&gt;
C&#039;est le plus simple. On crée une classe par table et chaque classe est un pont avec la table correspondante et propose les méthodes CRUD sur cette table (Create, Read, Update, Delete). Une instance de classe étant alors un enregistrement de la table. La classe ne contient que du code d&#039;accès aux lignes ou colonnes de tables. Le code métier doit alors être ajouté dans d&#039;autres classes. Les liens entre ces classes tables et les classes métiers devant être connues ou déduite de la connaissance du développeur.&lt;br /&gt;
&lt;br /&gt;
Exemple: C&#039;est le mode mis en oeuvre quand on utilise certains Frameworks d&#039;ORM comme &#039;&#039;&#039;iBatis&#039;&#039;&#039; (http://ibatis.apache.org/).&lt;br /&gt;
&lt;br /&gt;
* Le &#039;&#039;&#039;Active Record&#039;&#039;&#039;&lt;br /&gt;
Identique au précédent, mais on se permet d&#039;ajouter quelques fonctions métiers sur la classe, à conditions que ces fonctions soient propres à la table ou à l&#039;enregistrement. C&#039;est le pattern qui offre le meilleur rapport fonctionnalité/complexité.&lt;br /&gt;
&lt;br /&gt;
Exemple: C&#039;est le mode choisi pour les développements Dolibarr et de nombreuses autres applications PHP qui ont leur propre framework et pratiques de développements.&lt;br /&gt;
&lt;br /&gt;
* Le &#039;&#039;&#039;Data Mapper&#039;&#039;&#039;&lt;br /&gt;
Les classes représentent les entités du problème et non les données. Il faut donc doubler, tripler... ces classes avec des classes Mapper pour accéder aux données.&lt;br /&gt;
Plus &amp;quot;puriste&amp;quot; sur le papier car plus proche du métier, ce mode a aussi l&#039;inconvénient d&#039;être plus complexe sur le plan pratique.&lt;br /&gt;
&lt;br /&gt;
Exemple: C&#039;est le choix si on utilise le Framework d&#039;ORM &#039;&#039;&#039;Propel&#039;&#039;&#039; (http://propel.phpdb.org/trac/). On le trouve donc sur des applications plus lourdes basées sur cet ORM entre autres.&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Pour les développements Dolibarr, il est recommandé d&#039;utiliser le mode de liaison &#039;&#039;&#039;Active Record&#039;&#039;&#039; qui offre les avantages d&#039;un modèle proche du métier sans en avoir la complexité et sans trop masquer non plus la technique. C&#039;est dans ce mode que le développement, la compréhension du code et la maintenance technique et/ou fonctionnelle semble la plus productive (ceci est toutefois un éternel débat entre les puristes et les pragmatiques, débat dans lequel personne ne peut vraiment avoir raison, car tout dépend des objectifs à atteindre).&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Dolibarr_suppliers_France&amp;diff=29448</id>
		<title>Dolibarr suppliers France</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Dolibarr_suppliers_France&amp;diff=29448"/>
		<updated>2013-05-03T15:27:27Z</updated>

		<summary type="html">&lt;p&gt;Iouston: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Dolibarr_suppliers}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=1fonet Services|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Integrations and open source development&lt;br /&gt;
Specialist software open source.Dolibarr, Joomla! Oscommerce and creloaded. Complementary development of the module, component or application needs. Based in the PACA region work throughout France.|&lt;br /&gt;
web=http://www.1fonet.fr|&lt;br /&gt;
email=mailto:contact@1fonet.fr|&lt;br /&gt;
zip=13530|&lt;br /&gt;
town=Trets|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=A3SYS|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Intégration, assistance et développement.&lt;br /&gt;
Notre société forte d&#039;une expérience de 20 ans dans l&#039;intégration de divers ERP propose ses services aux entreprises souhaitant mettre en place l&#039;ERP Dolibarr. Une plateforme dédiée est mise en place pour proposer des services de qualité à moindre coût.|&lt;br /&gt;
web=http://www.mon-dolibarr.fr|&lt;br /&gt;
email=mailto:courrier@mon-dolibarr.fr|&lt;br /&gt;
zip=59310|&lt;br /&gt;
town=Aix-les-Orchies (Nord - France)|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=ATM Consulting [[File:Dolibarr_preferred_partner_int.png|120px]] |&lt;br /&gt;
profid=753 447 481 00015|&lt;br /&gt;
desc=Consulting company dedicated to small and medium enterprises information system optimization, we provide to our customers open-source based solutions to improve their information system efficiency. We offer hosting and support solutions and we are Dolibarr contributor, developer and integrator. &amp;quot;Open-source. Custom. Freedom&amp;quot;|&lt;br /&gt;
web=http://www.atm-consulting.fr|&lt;br /&gt;
email=mailto:contact@atm-consulting.fr|&lt;br /&gt;
zip=26000|&lt;br /&gt;
town=Valence|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=AB2L|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Un Alsacien à votre service. Installation et configuration de l&#039;ERP/CRM Dolibarr dans votre entreprise ou sur notre serveur. Nous vous accompagnons pour un démarrage rapide et serein. Nous sommes une société de service en logiciel libre fournissant un équivalent open source au logiciel propriétaire de tout type. |&lt;br /&gt;
web=http://www.ab2l.eu|&lt;br /&gt;
email=mailto:contact@ab2l.eu|&lt;br /&gt;
zip=67000|&lt;br /&gt;
town=Strasbourg|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Axopen IT Services|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=L&#039;entreprise Axopen propose toute une gamme de produits et services informatiques allant du conseil en système d&#039;informations, développement de solutions sur mesure et intégration de solutions Open Source ou propriétaires. Nous sommes spécialisé en particulier dans l&#039;intégration de solutions de gestion de la relation client Open Source telles que Dolibarr, SugarCRM ou VTiger... |&lt;br /&gt;
web=http://www.axopen.com|&lt;br /&gt;
email=mailto:contact@axopen.com|&lt;br /&gt;
zip=69001|&lt;br /&gt;
town=Lyon|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Adminrezo|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Computer Consulting and Services Company. WManagement computer. Designer / Integrator of computer solutions. Network Specialist, Commercial Management, Solution POS (cash). Based in Ile de France - Val de Marne (94)&lt;br /&gt;
|&lt;br /&gt;
web=http://www.adminrezo.eu|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=|&lt;br /&gt;
country=|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=AKILIS|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=AKILIS est une société éditrice de logiciels de gestion qui a fait le pari d’utiliser les nouvelles méthodes de travail pour développer des solutions clairs et efficaces. Notre mission est de vous proposer des solutions simples d&#039;utilisation, ne demandant aucun entretien de votre part, ni aucune connaissance technique particulière. Notre outil est celui que VOUS utilisez quotidiennement : le Web.&lt;br /&gt;
AKILIS, c’est une équipe toujours disponible pour vous guider et vous écouter. Nous développons et améliorons sans cesse nos logiciels afin que ceux-ci répondent au mieux à votre activité et vos besoins.&lt;br /&gt;
AKILIS peut également, dans le cadre de besoin partculier, étudier avec vous un développement sur mesure. |&lt;br /&gt;
web=http://www.akilis.fr|&lt;br /&gt;
email=mailto:contact@akilis.fr|&lt;br /&gt;
zip=69200|&lt;br /&gt;
town=Vénissieux|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Altairis|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Développements spécifiques, Installation, Formation, Accompagnement à la mise en oeuvre, Support, Intégration.|&lt;br /&gt;
web=http://www.altairis.fr|&lt;br /&gt;
email=contact@altairis.fr|&lt;br /&gt;
zip=38,73|&lt;br /&gt;
town=Goncelin|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Auguria Conseil|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=You are a Small Business, a very small firm, you need tools to increase profitability, and reliability facing competition. Auguria aims to help you develop the tools of information vectors of progress.|&lt;br /&gt;
web=http://www.auguria.net/|&lt;br /&gt;
email=contact@auguria.net|&lt;br /&gt;
zip=44300|&lt;br /&gt;
town=Nantes|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Atoo.Net|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Installation et configuration de l&#039;ERP/CRM Dolibarr soit sur nos serveurs, soit en local dans votre entreprise. Aide à la prise en main et formation.|&lt;br /&gt;
web=http://www.atoo-net.com/|&lt;br /&gt;
email=contact@atoo-net.com|&lt;br /&gt;
zip=45160|&lt;br /&gt;
town=Olivet|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Blue-Click Informatique|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Nous proposons l&#039;installation et la configuration de l&#039;ERP/CRM Dolibarr dans votre entreprise ou sur votre hébergement Internet. De plus nous assurons la formation pour la prise en main de cet outil adapté aux TPE et PME.|&lt;br /&gt;
web=http://www.blue-click.fr|&lt;br /&gt;
email=|&lt;br /&gt;
zip=92,78|&lt;br /&gt;
town=Nanterre,Plaisir|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Cap-Networks|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Développeur indépendant d&#039;application web, paramétrage et installation de Dolibarr, développement de modules spécifique. Basé dans la Saône et loire à Tournus (40min de Bourg en Bresse, 20min de Mâcon, 30min de Chalon sur Saône, 1h de Lyon), je contribue depuis 4 ans au développement de Dolibarr.|&lt;br /&gt;
web=http://www.dolibox.fr|&lt;br /&gt;
email=regis.houssin@cap-networks.com|&lt;br /&gt;
zip=71700|&lt;br /&gt;
town=Tournus|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=(http://www.dolibox.fr)|&lt;br /&gt;
service_onlinesupport=(http://www.cap-networks.com/telemaintenance.php)|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=CRMPLUS.ME|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Consulting and Integration of Open Source ERP (Dolibarr and Vtiger) for VSE / SMEs and craftsmen: 3 simple steps to improve your productivity, protect your data and save time in your daily tasks.|&lt;br /&gt;
web=http://www.crmplus.me|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Cyberlix-Consulting|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Assistance and service in computer science, specializing in free software. Located in Lille, Cyberlix Consulting offers hosting solutions, technical support and development for many open source software which Dolibarr.|&lt;br /&gt;
web=http://www.cyberlix-consulting.fr|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=|&lt;br /&gt;
country=fr|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=D-BOG|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=IT services company located in Beaune (21), moved around Dolibarr:&lt;br /&gt;
Installation, setup, configuration on the internal server or hosted;&lt;br /&gt;
Training agreement;&lt;br /&gt;
Outsourcing, on-site maintenance and remote.|&lt;br /&gt;
web=http://www.d-bog.com/|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=Beaune|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=D&#039;Clic|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Conseil, Formation, Installation et Paramétrage pour les PME et les associations&lt;br /&gt;
Intervention sur site client. Situé à Annecy pour sa région|&lt;br /&gt;
web=http://www.dclic-erp.fr|&lt;br /&gt;
email=mailto:contact@dclic-erp.fr|&lt;br /&gt;
zip=74000|&lt;br /&gt;
town=Annecy|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=DiVA-Cloud|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=DiVA-Cloud propose des applications OpenSource de gestion de la communication et de l&#039;information pour les entreprises. Notre logithèque contient des applications de WebConference, ERP, CRM, CMS, GED, et bien d&#039;autres... Toutes ces applications pré-configurés sont mises à disposition sur un environnement privé. |&lt;br /&gt;
web=www.diva-cloud.com |&lt;br /&gt;
email=mailto:contact@diva-cloud.com |&lt;br /&gt;
zip=81100|&lt;br /&gt;
town=Castres|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=FUTUR TECH|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Prestataire de services pour artisans, TPE, PME :&lt;br /&gt;
Solutions open source, Internet, Sécurité, Sauvegarde, Antivirus, Gestion d&#039;entreprise, Conseil, Formation, Installation et Paramétrage&lt;br /&gt;
Intervention sur site client. Situé entre Bordeaux et Libourne|&lt;br /&gt;
web=http://www.futur-tech.com|&lt;br /&gt;
email=mailto:info@futur-tech.com|&lt;br /&gt;
zip=33450|&lt;br /&gt;
town=IZON|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=GPC.solutions|&lt;br /&gt;
profid=RCS de Pau 528 995 921|&lt;br /&gt;
desc={{Flag_fr}}Spécialiste Open Source et Logicel Libre et revendeur Agréé PME Google Apps for Business.&lt;br /&gt;
&lt;br /&gt;
Nous proposons un gamme complète de services autour de Dolibar parmis lesquels l&#039;hébergement cloud, le développement sur mesure, l&#039;assistance et la formation.&lt;br /&gt;
&lt;br /&gt;
Nous travaillons aussi à une intégration forte dans l&#039;écosystème Google Apps.&lt;br /&gt;
&lt;br /&gt;
{{Flag_en}}Open Source and Libre Software specialist and Authorized Google Apps for Business™ SMB reseller.&lt;br /&gt;
&lt;br /&gt;
We offer a full range of services around Dolibarr including cloud hosting, custom development, support and training.&lt;br /&gt;
&lt;br /&gt;
We&#039;re also working on a tight integration into the Google Apps ecosystem.|&lt;br /&gt;
web=http:// gpcsolutions.fr|&lt;br /&gt;
email=mailto:contact@gpcsolutions.fr|&lt;br /&gt;
zip=64000|&lt;br /&gt;
town=Pau|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=http:// gpcsolutions.fr/dolibarr|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=gpcsolutions.png|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Infonel.net|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=administrateur système open source indépendant:&lt;br /&gt;
Installation, paramétrage, configuration et sécurisation de dolibarr sur site client|&lt;br /&gt;
web=http://www.infonel.net|&lt;br /&gt;
email=|&lt;br /&gt;
zip=11100|&lt;br /&gt;
town=Narbonne|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=i.d &amp;amp; l - informatique durable &amp;amp; libre|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Conseil et intégration de solutions logicielles libres, dont Dolibarr, pour artisans, TPE, indépendants, commerçants, PME, associations...|&lt;br /&gt;
web=http://idl-mp.com|&lt;br /&gt;
email=http://idl-mp.com/contact/|&lt;br /&gt;
zip=31,32,09,82,81|&lt;br /&gt;
town=Toulouse et région toulousaine|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=iouston informatique|&lt;br /&gt;
profid=792 263 683 00015|&lt;br /&gt;
desc=iouston informatique, située à proximité de Nancy, Metz, Lunéville, est une société spécialisée auprès des assoiations, des TPE et des artisans commerçants. Nous installons et configurons dolibarr pour vous et nous formons vos équipes à son utilisation quotidienne. &lt;br /&gt;
Nous proposons de nombreux autres services, associés ou non à dolibarr.|&lt;br /&gt;
web=http://www.iouston.com|&lt;br /&gt;
email=mailto:allo@iouston.com|&lt;br /&gt;
zip=54370|&lt;br /&gt;
town=Bauzemont|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=LVS Informatique|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Development Specialist php, mysql. Creation, enhancement, customization of modules and components ...&lt;br /&gt;
Nos modifs/nos modules :&lt;br /&gt;
-cashdesk : prix en ttc, possibilité de modification du prix, du libellé...&lt;br /&gt;
-interfaçage avec GoogleAgenda (toutes les actions apparaissent dans GoogleAgenda)&lt;br /&gt;
-Mails/Télécopies reçus : apparaissent dans un onglet spécifique sur le tiers en question&lt;br /&gt;
-qualification Tiers&lt;br /&gt;
-Adresse Tiers vu dans GoogleMap&lt;br /&gt;
-creation de nbreux template excel/pdf&lt;br /&gt;
|&lt;br /&gt;
web=http://www.lvsinformatique.com|&lt;br /&gt;
email=|&lt;br /&gt;
zip=83860|&lt;br /&gt;
town=NANS LES PINS|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Mephivio|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Services company with a computer located in Montpellier agglo, specializing in computer graphics, secretariat, Joomla web sites, client, opensource (Dolibarr, glpi, voip Elastix / Trixbox / PIAF etc ...)|&lt;br /&gt;
web=http://www.mephivio.fr/|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=|&lt;br /&gt;
country=fr|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Modulaweb : Technologies modulables orientées web.|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Développement d&#039;applicatifs web, hébergement d&#039;applications web, serveurs de fichiers et de sauvegarde, sites internet/intranet et intégration web, espaces clients, communication via internet (VoIP, messagerie instantanée), travail collaboratif. Spécialiste solutions libres pour l&#039;entreprise (Zimbra, Dolibarr, Thaïs...) Région Languedoc-Rouissillon et voisines |&lt;br /&gt;
web=http://www.modulaweb.fr|&lt;br /&gt;
email=http://www.modulaweb.fr/portail/contact/|&lt;br /&gt;
zip=34000|&lt;br /&gt;
town=Montpellier|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=NLTechno [[File:Dolibarr_preferred_partner_int.png|120px]] |&lt;br /&gt;
desc=NLTechno is one of the most important contributor on Dolibarr and can host for you a Dolibarr database in a SaaS (Software As A Service) mode.|&lt;br /&gt;
profid=493 861 496 00021|&lt;br /&gt;
web=http://www.nltechno.com|&lt;br /&gt;
email=|&lt;br /&gt;
zip=92500|&lt;br /&gt;
town=Rueil Malmaison|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes (http://www.dolicloud.com)|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=no|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
logo=logo_nltechno.png}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Open-Concept.pro [[File:Dolibarr_preferred_partner_int.png|120px]] |&lt;br /&gt;
profid=537 828 717 00018|&lt;br /&gt;
desc=Open-concept.pro ([[Florian Henry]]) is dedicated to Open-Source ERP/CRM solition. Open-concept.pro ([[Florian Henry]]) is a contributor of Dolibarr sine 2010, and modules builder also|&lt;br /&gt;
web=http://www.open-concept.pro|&lt;br /&gt;
email=mailto:florian.henry@open-concept.pro|&lt;br /&gt;
zip=77380|&lt;br /&gt;
town=COMBS-LA-VILLE|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=Logo_openconcept.png}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Pascal Sené|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Logiciels libres et photographie.|&lt;br /&gt;
web=http://www.pascalsene.com|&lt;br /&gt;
email=contact@pascalsene.com|&lt;br /&gt;
zip=22,29,35,56|&lt;br /&gt;
town=Lannion|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=ProbeSys|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Créée en 2003 par des passionnés du logiciel libre, [http://probesys.com ProbeSys] est une entreprise coopérative à l&#039;image du secteur des nouvelles technologies : dynamique, réactive et participative. |&lt;br /&gt;
web=http://www.probesys.com|&lt;br /&gt;
email=mailto:contact@probesys.com|&lt;br /&gt;
zip=38600|&lt;br /&gt;
town=Fontaine|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Process Evolution|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Département Gecinfo: Société de Services et d&#039;Ingénierie en Informatique.|&lt;br /&gt;
web=http://www.process-evolution.fr/|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=|&lt;br /&gt;
country=fr|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Syllene|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=We install and configure the software Dolibarr to suit your needs and train your users. We can also provide hosting and maintenance of your application.|&lt;br /&gt;
web=http://www.syllene.net/|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Teclib&#039;|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=&lt;br /&gt;
Teclib est une société  de services en informatique au capital de 50 000€.  Nous sommes implantés à Paris, Colmar (Alsace) et à Chartres (Région Centre). L&#039;équipe teclib&#039; rassemble 8 personnes au 31 juillet 2010. Spécialisée dans l&#039;intégration de logiciels libres tels que Dolibarr, GLPI, Quotero, Nagios, Centreon, Zimbra... |&lt;br /&gt;
web=http://www.teclib.com|&lt;br /&gt;
email=mailto:contact@teclib.com|&lt;br /&gt;
zip=75010|&lt;br /&gt;
town=Paris|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Tiaris|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Solutions and services for small businesses and merchants: e-commerce, maintenance, ERP/CRM Dolibarr, development telecommuting. ecommerce - dolibarr webservice based interface. Saas Offer Dolibarr + ecommerce connection for open source caddies (OsCommerce, Zencart, Crelaoded, Prestashop and others...)|&lt;br /&gt;
web=http://www.tiaris.fr/|&lt;br /&gt;
email=http://www.tiaris.fr/spip.php?page=contact|&lt;br /&gt;
zip=57870|&lt;br /&gt;
town=WALSCHEID|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=UTOPSYS -  L&#039;Informatique, Professionnelle.|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Maintenance, dépannage, conseil, audits, Green IT, solutions open-source de travail collaboratif, installation et maintenance Dolibarr. Bordeaux, CUB, Libourne.|&lt;br /&gt;
web=http://www.utopsys.fr|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=Libourne|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=WEBINFOPRO|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Society Computers and Internet service for small businesses located in the suburbs west of Paris. One of the main activities is the integration of open source software.|&lt;br /&gt;
web=http://www.webinfopro.fr/|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Dolibarr_suppliers_France&amp;diff=29447</id>
		<title>Dolibarr suppliers France</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Dolibarr_suppliers_France&amp;diff=29447"/>
		<updated>2013-05-03T15:25:46Z</updated>

		<summary type="html">&lt;p&gt;Iouston: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Dolibarr_suppliers}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=1fonet Services|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Integrations and open source development&lt;br /&gt;
Specialist software open source.Dolibarr, Joomla! Oscommerce and creloaded. Complementary development of the module, component or application needs. Based in the PACA region work throughout France.|&lt;br /&gt;
web=http://www.1fonet.fr|&lt;br /&gt;
email=mailto:contact@1fonet.fr|&lt;br /&gt;
zip=13530|&lt;br /&gt;
town=Trets|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=A3SYS|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Intégration, assistance et développement.&lt;br /&gt;
Notre société forte d&#039;une expérience de 20 ans dans l&#039;intégration de divers ERP propose ses services aux entreprises souhaitant mettre en place l&#039;ERP Dolibarr. Une plateforme dédiée est mise en place pour proposer des services de qualité à moindre coût.|&lt;br /&gt;
web=http://www.mon-dolibarr.fr|&lt;br /&gt;
email=mailto:courrier@mon-dolibarr.fr|&lt;br /&gt;
zip=59310|&lt;br /&gt;
town=Aix-les-Orchies (Nord - France)|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=ATM Consulting [[File:Dolibarr_preferred_partner_int.png|120px]] |&lt;br /&gt;
profid=753 447 481 00015|&lt;br /&gt;
desc=Consulting company dedicated to small and medium enterprises information system optimization, we provide to our customers open-source based solutions to improve their information system efficiency. We offer hosting and support solutions and we are Dolibarr contributor, developer and integrator. &amp;quot;Open-source. Custom. Freedom&amp;quot;|&lt;br /&gt;
web=http://www.atm-consulting.fr|&lt;br /&gt;
email=mailto:contact@atm-consulting.fr|&lt;br /&gt;
zip=26000|&lt;br /&gt;
town=Valence|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=AB2L|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Un Alsacien à votre service. Installation et configuration de l&#039;ERP/CRM Dolibarr dans votre entreprise ou sur notre serveur. Nous vous accompagnons pour un démarrage rapide et serein. Nous sommes une société de service en logiciel libre fournissant un équivalent open source au logiciel propriétaire de tout type. |&lt;br /&gt;
web=http://www.ab2l.eu|&lt;br /&gt;
email=mailto:contact@ab2l.eu|&lt;br /&gt;
zip=67000|&lt;br /&gt;
town=Strasbourg|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Axopen IT Services|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=L&#039;entreprise Axopen propose toute une gamme de produits et services informatiques allant du conseil en système d&#039;informations, développement de solutions sur mesure et intégration de solutions Open Source ou propriétaires. Nous sommes spécialisé en particulier dans l&#039;intégration de solutions de gestion de la relation client Open Source telles que Dolibarr, SugarCRM ou VTiger... |&lt;br /&gt;
web=http://www.axopen.com|&lt;br /&gt;
email=mailto:contact@axopen.com|&lt;br /&gt;
zip=69001|&lt;br /&gt;
town=Lyon|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Adminrezo|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Computer Consulting and Services Company. WManagement computer. Designer / Integrator of computer solutions. Network Specialist, Commercial Management, Solution POS (cash). Based in Ile de France - Val de Marne (94)&lt;br /&gt;
|&lt;br /&gt;
web=http://www.adminrezo.eu|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=|&lt;br /&gt;
country=|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=AKILIS|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=AKILIS est une société éditrice de logiciels de gestion qui a fait le pari d’utiliser les nouvelles méthodes de travail pour développer des solutions clairs et efficaces. Notre mission est de vous proposer des solutions simples d&#039;utilisation, ne demandant aucun entretien de votre part, ni aucune connaissance technique particulière. Notre outil est celui que VOUS utilisez quotidiennement : le Web.&lt;br /&gt;
AKILIS, c’est une équipe toujours disponible pour vous guider et vous écouter. Nous développons et améliorons sans cesse nos logiciels afin que ceux-ci répondent au mieux à votre activité et vos besoins.&lt;br /&gt;
AKILIS peut également, dans le cadre de besoin partculier, étudier avec vous un développement sur mesure. |&lt;br /&gt;
web=http://www.akilis.fr|&lt;br /&gt;
email=mailto:contact@akilis.fr|&lt;br /&gt;
zip=69200|&lt;br /&gt;
town=Vénissieux|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Altairis|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Développements spécifiques, Installation, Formation, Accompagnement à la mise en oeuvre, Support, Intégration.|&lt;br /&gt;
web=http://www.altairis.fr|&lt;br /&gt;
email=contact@altairis.fr|&lt;br /&gt;
zip=38,73|&lt;br /&gt;
town=Goncelin|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Auguria Conseil|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=You are a Small Business, a very small firm, you need tools to increase profitability, and reliability facing competition. Auguria aims to help you develop the tools of information vectors of progress.|&lt;br /&gt;
web=http://www.auguria.net/|&lt;br /&gt;
email=contact@auguria.net|&lt;br /&gt;
zip=44300|&lt;br /&gt;
town=Nantes|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Atoo.Net|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Installation et configuration de l&#039;ERP/CRM Dolibarr soit sur nos serveurs, soit en local dans votre entreprise. Aide à la prise en main et formation.|&lt;br /&gt;
web=http://www.atoo-net.com/|&lt;br /&gt;
email=contact@atoo-net.com|&lt;br /&gt;
zip=45160|&lt;br /&gt;
town=Olivet|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Blue-Click Informatique|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Nous proposons l&#039;installation et la configuration de l&#039;ERP/CRM Dolibarr dans votre entreprise ou sur votre hébergement Internet. De plus nous assurons la formation pour la prise en main de cet outil adapté aux TPE et PME.|&lt;br /&gt;
web=http://www.blue-click.fr|&lt;br /&gt;
email=|&lt;br /&gt;
zip=92,78|&lt;br /&gt;
town=Nanterre,Plaisir|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Cap-Networks|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Développeur indépendant d&#039;application web, paramétrage et installation de Dolibarr, développement de modules spécifique. Basé dans la Saône et loire à Tournus (40min de Bourg en Bresse, 20min de Mâcon, 30min de Chalon sur Saône, 1h de Lyon), je contribue depuis 4 ans au développement de Dolibarr.|&lt;br /&gt;
web=http://www.dolibox.fr|&lt;br /&gt;
email=regis.houssin@cap-networks.com|&lt;br /&gt;
zip=71700|&lt;br /&gt;
town=Tournus|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=(http://www.dolibox.fr)|&lt;br /&gt;
service_onlinesupport=(http://www.cap-networks.com/telemaintenance.php)|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=CRMPLUS.ME|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Consulting and Integration of Open Source ERP (Dolibarr and Vtiger) for VSE / SMEs and craftsmen: 3 simple steps to improve your productivity, protect your data and save time in your daily tasks.|&lt;br /&gt;
web=http://www.crmplus.me|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Cyberlix-Consulting|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Assistance and service in computer science, specializing in free software. Located in Lille, Cyberlix Consulting offers hosting solutions, technical support and development for many open source software which Dolibarr.|&lt;br /&gt;
web=http://www.cyberlix-consulting.fr|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=|&lt;br /&gt;
country=fr|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=D-BOG|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=IT services company located in Beaune (21), moved around Dolibarr:&lt;br /&gt;
Installation, setup, configuration on the internal server or hosted;&lt;br /&gt;
Training agreement;&lt;br /&gt;
Outsourcing, on-site maintenance and remote.|&lt;br /&gt;
web=http://www.d-bog.com/|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=Beaune|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=D&#039;Clic|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Conseil, Formation, Installation et Paramétrage pour les PME et les associations&lt;br /&gt;
Intervention sur site client. Situé à Annecy pour sa région|&lt;br /&gt;
web=http://www.dclic-erp.fr|&lt;br /&gt;
email=mailto:contact@dclic-erp.fr|&lt;br /&gt;
zip=74000|&lt;br /&gt;
town=Annecy|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=DiVA-Cloud|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=DiVA-Cloud propose des applications OpenSource de gestion de la communication et de l&#039;information pour les entreprises. Notre logithèque contient des applications de WebConference, ERP, CRM, CMS, GED, et bien d&#039;autres... Toutes ces applications pré-configurés sont mises à disposition sur un environnement privé. |&lt;br /&gt;
web=www.diva-cloud.com |&lt;br /&gt;
email=mailto:contact@diva-cloud.com |&lt;br /&gt;
zip=81100|&lt;br /&gt;
town=Castres|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=FUTUR TECH|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Prestataire de services pour artisans, TPE, PME :&lt;br /&gt;
Solutions open source, Internet, Sécurité, Sauvegarde, Antivirus, Gestion d&#039;entreprise, Conseil, Formation, Installation et Paramétrage&lt;br /&gt;
Intervention sur site client. Situé entre Bordeaux et Libourne|&lt;br /&gt;
web=http://www.futur-tech.com|&lt;br /&gt;
email=mailto:info@futur-tech.com|&lt;br /&gt;
zip=33450|&lt;br /&gt;
town=IZON|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=GPC.solutions|&lt;br /&gt;
profid=RCS de Pau 528 995 921|&lt;br /&gt;
desc={{Flag_fr}}Spécialiste Open Source et Logicel Libre et revendeur Agréé PME Google Apps for Business.&lt;br /&gt;
&lt;br /&gt;
Nous proposons un gamme complète de services autour de Dolibar parmis lesquels l&#039;hébergement cloud, le développement sur mesure, l&#039;assistance et la formation.&lt;br /&gt;
&lt;br /&gt;
Nous travaillons aussi à une intégration forte dans l&#039;écosystème Google Apps.&lt;br /&gt;
&lt;br /&gt;
{{Flag_en}}Open Source and Libre Software specialist and Authorized Google Apps for Business™ SMB reseller.&lt;br /&gt;
&lt;br /&gt;
We offer a full range of services around Dolibarr including cloud hosting, custom development, support and training.&lt;br /&gt;
&lt;br /&gt;
We&#039;re also working on a tight integration into the Google Apps ecosystem.|&lt;br /&gt;
web=http:// gpcsolutions.fr|&lt;br /&gt;
email=mailto:contact@gpcsolutions.fr|&lt;br /&gt;
zip=64000|&lt;br /&gt;
town=Pau|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=http:// gpcsolutions.fr/dolibarr|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=gpcsolutions.png|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Infonel.net|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=administrateur système open source indépendant:&lt;br /&gt;
Installation, paramétrage, configuration et sécurisation de dolibarr sur site client|&lt;br /&gt;
web=http://www.infonel.net|&lt;br /&gt;
email=|&lt;br /&gt;
zip=11100|&lt;br /&gt;
town=Narbonne|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=i.d &amp;amp; l - informatique durable &amp;amp; libre|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Conseil et intégration de solutions logicielles libres, dont Dolibarr, pour artisans, TPE, indépendants, commerçants, PME, associations...|&lt;br /&gt;
web=http://idl-mp.com|&lt;br /&gt;
email=http://idl-mp.com/contact/|&lt;br /&gt;
zip=31,32,09,82,81|&lt;br /&gt;
town=Toulouse et région toulousaine|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=iouston informatique|&lt;br /&gt;
profid=792 263 683 00015|&lt;br /&gt;
desc=iouston informatique, située à proximité de Nancy, Metz, Lunéville, est une société spécialisée auprès des assoiations, des TPE et des artisans commerçants. Nous installons et configurons dolibarr pour vous et nous formons vos équipes à son utilisation quotidienne. &lt;br /&gt;
Nous proposons de nombreux autres services, associés ou non à dolibarr.|&lt;br /&gt;
web=http://www.iouston.com|&lt;br /&gt;
email=allo@iouston.com|&lt;br /&gt;
zip=54370|&lt;br /&gt;
town=Bauzemont|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=LVS Informatique|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Development Specialist php, mysql. Creation, enhancement, customization of modules and components ...&lt;br /&gt;
Nos modifs/nos modules :&lt;br /&gt;
-cashdesk : prix en ttc, possibilité de modification du prix, du libellé...&lt;br /&gt;
-interfaçage avec GoogleAgenda (toutes les actions apparaissent dans GoogleAgenda)&lt;br /&gt;
-Mails/Télécopies reçus : apparaissent dans un onglet spécifique sur le tiers en question&lt;br /&gt;
-qualification Tiers&lt;br /&gt;
-Adresse Tiers vu dans GoogleMap&lt;br /&gt;
-creation de nbreux template excel/pdf&lt;br /&gt;
|&lt;br /&gt;
web=http://www.lvsinformatique.com|&lt;br /&gt;
email=|&lt;br /&gt;
zip=83860|&lt;br /&gt;
town=NANS LES PINS|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Mephivio|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Services company with a computer located in Montpellier agglo, specializing in computer graphics, secretariat, Joomla web sites, client, opensource (Dolibarr, glpi, voip Elastix / Trixbox / PIAF etc ...)|&lt;br /&gt;
web=http://www.mephivio.fr/|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=|&lt;br /&gt;
country=fr|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Modulaweb : Technologies modulables orientées web.|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Développement d&#039;applicatifs web, hébergement d&#039;applications web, serveurs de fichiers et de sauvegarde, sites internet/intranet et intégration web, espaces clients, communication via internet (VoIP, messagerie instantanée), travail collaboratif. Spécialiste solutions libres pour l&#039;entreprise (Zimbra, Dolibarr, Thaïs...) Région Languedoc-Rouissillon et voisines |&lt;br /&gt;
web=http://www.modulaweb.fr|&lt;br /&gt;
email=http://www.modulaweb.fr/portail/contact/|&lt;br /&gt;
zip=34000|&lt;br /&gt;
town=Montpellier|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=NLTechno [[File:Dolibarr_preferred_partner_int.png|120px]] |&lt;br /&gt;
desc=NLTechno is one of the most important contributor on Dolibarr and can host for you a Dolibarr database in a SaaS (Software As A Service) mode.|&lt;br /&gt;
profid=493 861 496 00021|&lt;br /&gt;
web=http://www.nltechno.com|&lt;br /&gt;
email=|&lt;br /&gt;
zip=92500|&lt;br /&gt;
town=Rueil Malmaison|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes (http://www.dolicloud.com)|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=no|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
logo=logo_nltechno.png}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Open-Concept.pro [[File:Dolibarr_preferred_partner_int.png|120px]] |&lt;br /&gt;
profid=537 828 717 00018|&lt;br /&gt;
desc=Open-concept.pro ([[Florian Henry]]) is dedicated to Open-Source ERP/CRM solition. Open-concept.pro ([[Florian Henry]]) is a contributor of Dolibarr sine 2010, and modules builder also|&lt;br /&gt;
web=http://www.open-concept.pro|&lt;br /&gt;
email=mailto:florian.henry@open-concept.pro|&lt;br /&gt;
zip=77380|&lt;br /&gt;
town=COMBS-LA-VILLE|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=Logo_openconcept.png}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Pascal Sené|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Logiciels libres et photographie.|&lt;br /&gt;
web=http://www.pascalsene.com|&lt;br /&gt;
email=contact@pascalsene.com|&lt;br /&gt;
zip=22,29,35,56|&lt;br /&gt;
town=Lannion|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=ProbeSys|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Créée en 2003 par des passionnés du logiciel libre, [http://probesys.com ProbeSys] est une entreprise coopérative à l&#039;image du secteur des nouvelles technologies : dynamique, réactive et participative. |&lt;br /&gt;
web=http://www.probesys.com|&lt;br /&gt;
email=mailto:contact@probesys.com|&lt;br /&gt;
zip=38600|&lt;br /&gt;
town=Fontaine|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Process Evolution|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Département Gecinfo: Société de Services et d&#039;Ingénierie en Informatique.|&lt;br /&gt;
web=http://www.process-evolution.fr/|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=|&lt;br /&gt;
country=fr|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Syllene|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=We install and configure the software Dolibarr to suit your needs and train your users. We can also provide hosting and maintenance of your application.|&lt;br /&gt;
web=http://www.syllene.net/|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Teclib&#039;|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=&lt;br /&gt;
Teclib est une société  de services en informatique au capital de 50 000€.  Nous sommes implantés à Paris, Colmar (Alsace) et à Chartres (Région Centre). L&#039;équipe teclib&#039; rassemble 8 personnes au 31 juillet 2010. Spécialisée dans l&#039;intégration de logiciels libres tels que Dolibarr, GLPI, Quotero, Nagios, Centreon, Zimbra... |&lt;br /&gt;
web=http://www.teclib.com|&lt;br /&gt;
email=mailto:contact@teclib.com|&lt;br /&gt;
zip=75010|&lt;br /&gt;
town=Paris|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Tiaris|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Solutions and services for small businesses and merchants: e-commerce, maintenance, ERP/CRM Dolibarr, development telecommuting. ecommerce - dolibarr webservice based interface. Saas Offer Dolibarr + ecommerce connection for open source caddies (OsCommerce, Zencart, Crelaoded, Prestashop and others...)|&lt;br /&gt;
web=http://www.tiaris.fr/|&lt;br /&gt;
email=http://www.tiaris.fr/spip.php?page=contact|&lt;br /&gt;
zip=57870|&lt;br /&gt;
town=WALSCHEID|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=UTOPSYS -  L&#039;Informatique, Professionnelle.|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Maintenance, dépannage, conseil, audits, Green IT, solutions open-source de travail collaboratif, installation et maintenance Dolibarr. Bordeaux, CUB, Libourne.|&lt;br /&gt;
web=http://www.utopsys.fr|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=Libourne|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=WEBINFOPRO|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Society Computers and Internet service for small businesses located in the suburbs west of Paris. One of the main activities is the integration of open source software.|&lt;br /&gt;
web=http://www.webinfopro.fr/|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Dolibarr_suppliers_France&amp;diff=29445</id>
		<title>Dolibarr suppliers France</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Dolibarr_suppliers_France&amp;diff=29445"/>
		<updated>2013-05-03T11:10:09Z</updated>

		<summary type="html">&lt;p&gt;Iouston: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Dolibarr_suppliers}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=1fonet Services|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Integrations and open source development&lt;br /&gt;
Specialist software open source.Dolibarr, Joomla! Oscommerce and creloaded. Complementary development of the module, component or application needs. Based in the PACA region work throughout France.|&lt;br /&gt;
web=http://www.1fonet.fr|&lt;br /&gt;
email=mailto:contact@1fonet.fr|&lt;br /&gt;
zip=13530|&lt;br /&gt;
town=Trets|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=A3SYS|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Intégration, assistance et développement.&lt;br /&gt;
Notre société forte d&#039;une expérience de 20 ans dans l&#039;intégration de divers ERP propose ses services aux entreprises souhaitant mettre en place l&#039;ERP Dolibarr. Une plateforme dédiée est mise en place pour proposer des services de qualité à moindre coût.|&lt;br /&gt;
web=http://www.mon-dolibarr.fr|&lt;br /&gt;
email=mailto:courrier@mon-dolibarr.fr|&lt;br /&gt;
zip=59310|&lt;br /&gt;
town=Aix-les-Orchies (Nord - France)|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=ATM Consulting [[File:Dolibarr_preferred_partner_int.png|120px]] |&lt;br /&gt;
profid=753 447 481 00015|&lt;br /&gt;
desc=Consulting company dedicated to small and medium enterprises information system optimization, we provide to our customers open-source based solutions to improve their information system efficiency. We offer hosting and support solutions and we are Dolibarr contributor, developer and integrator. &amp;quot;Open-source. Custom. Freedom&amp;quot;|&lt;br /&gt;
web=http://www.atm-consulting.fr|&lt;br /&gt;
email=mailto:contact@atm-consulting.fr|&lt;br /&gt;
zip=26000|&lt;br /&gt;
town=Valence|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=AB2L|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Un Alsacien à votre service. Installation et configuration de l&#039;ERP/CRM Dolibarr dans votre entreprise ou sur notre serveur. Nous vous accompagnons pour un démarrage rapide et serein. Nous sommes une société de service en logiciel libre fournissant un équivalent open source au logiciel propriétaire de tout type. |&lt;br /&gt;
web=http://www.ab2l.eu|&lt;br /&gt;
email=mailto:contact@ab2l.eu|&lt;br /&gt;
zip=67000|&lt;br /&gt;
town=Strasbourg|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Axopen IT Services|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=L&#039;entreprise Axopen propose toute une gamme de produits et services informatiques allant du conseil en système d&#039;informations, développement de solutions sur mesure et intégration de solutions Open Source ou propriétaires. Nous sommes spécialisé en particulier dans l&#039;intégration de solutions de gestion de la relation client Open Source telles que Dolibarr, SugarCRM ou VTiger... |&lt;br /&gt;
web=http://www.axopen.com|&lt;br /&gt;
email=mailto:contact@axopen.com|&lt;br /&gt;
zip=69001|&lt;br /&gt;
town=Lyon|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Adminrezo|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Computer Consulting and Services Company. WManagement computer. Designer / Integrator of computer solutions. Network Specialist, Commercial Management, Solution POS (cash). Based in Ile de France - Val de Marne (94)&lt;br /&gt;
|&lt;br /&gt;
web=http://www.adminrezo.eu|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=|&lt;br /&gt;
country=|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=AKILIS|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=AKILIS est une société éditrice de logiciels de gestion qui a fait le pari d’utiliser les nouvelles méthodes de travail pour développer des solutions clairs et efficaces. Notre mission est de vous proposer des solutions simples d&#039;utilisation, ne demandant aucun entretien de votre part, ni aucune connaissance technique particulière. Notre outil est celui que VOUS utilisez quotidiennement : le Web.&lt;br /&gt;
AKILIS, c’est une équipe toujours disponible pour vous guider et vous écouter. Nous développons et améliorons sans cesse nos logiciels afin que ceux-ci répondent au mieux à votre activité et vos besoins.&lt;br /&gt;
AKILIS peut également, dans le cadre de besoin partculier, étudier avec vous un développement sur mesure. |&lt;br /&gt;
web=http://www.akilis.fr|&lt;br /&gt;
email=mailto:contact@akilis.fr|&lt;br /&gt;
zip=69200|&lt;br /&gt;
town=Vénissieux|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Altairis|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Développements spécifiques, Installation, Formation, Accompagnement à la mise en oeuvre, Support, Intégration.|&lt;br /&gt;
web=http://www.altairis.fr|&lt;br /&gt;
email=contact@altairis.fr|&lt;br /&gt;
zip=38,73|&lt;br /&gt;
town=Goncelin|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Auguria Conseil|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=You are a Small Business, a very small firm, you need tools to increase profitability, and reliability facing competition. Auguria aims to help you develop the tools of information vectors of progress.|&lt;br /&gt;
web=http://www.auguria.net/|&lt;br /&gt;
email=contact@auguria.net|&lt;br /&gt;
zip=44300|&lt;br /&gt;
town=Nantes|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Atoo.Net|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Installation et configuration de l&#039;ERP/CRM Dolibarr soit sur nos serveurs, soit en local dans votre entreprise. Aide à la prise en main et formation.|&lt;br /&gt;
web=http://www.atoo-net.com/|&lt;br /&gt;
email=contact@atoo-net.com|&lt;br /&gt;
zip=45160|&lt;br /&gt;
town=Olivet|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Blue-Click Informatique|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Nous proposons l&#039;installation et la configuration de l&#039;ERP/CRM Dolibarr dans votre entreprise ou sur votre hébergement Internet. De plus nous assurons la formation pour la prise en main de cet outil adapté aux TPE et PME.|&lt;br /&gt;
web=http://www.blue-click.fr|&lt;br /&gt;
email=|&lt;br /&gt;
zip=92,78|&lt;br /&gt;
town=Nanterre,Plaisir|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Cap-Networks|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Développeur indépendant d&#039;application web, paramétrage et installation de Dolibarr, développement de modules spécifique. Basé dans la Saône et loire à Tournus (40min de Bourg en Bresse, 20min de Mâcon, 30min de Chalon sur Saône, 1h de Lyon), je contribue depuis 4 ans au développement de Dolibarr.|&lt;br /&gt;
web=http://www.dolibox.fr|&lt;br /&gt;
email=regis.houssin@cap-networks.com|&lt;br /&gt;
zip=71700|&lt;br /&gt;
town=Tournus|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=(http://www.dolibox.fr)|&lt;br /&gt;
service_onlinesupport=(http://www.cap-networks.com/telemaintenance.php)|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=CRMPLUS.ME|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Consulting and Integration of Open Source ERP (Dolibarr and Vtiger) for VSE / SMEs and craftsmen: 3 simple steps to improve your productivity, protect your data and save time in your daily tasks.|&lt;br /&gt;
web=http://www.crmplus.me|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Cyberlix-Consulting|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Assistance and service in computer science, specializing in free software. Located in Lille, Cyberlix Consulting offers hosting solutions, technical support and development for many open source software which Dolibarr.|&lt;br /&gt;
web=http://www.cyberlix-consulting.fr|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=|&lt;br /&gt;
country=fr|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=D-BOG|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=IT services company located in Beaune (21), moved around Dolibarr:&lt;br /&gt;
Installation, setup, configuration on the internal server or hosted;&lt;br /&gt;
Training agreement;&lt;br /&gt;
Outsourcing, on-site maintenance and remote.|&lt;br /&gt;
web=http://www.d-bog.com/|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=Beaune|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=D&#039;Clic|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Conseil, Formation, Installation et Paramétrage pour les PME et les associations&lt;br /&gt;
Intervention sur site client. Situé à Annecy pour sa région|&lt;br /&gt;
web=http://www.dclic-erp.fr|&lt;br /&gt;
email=mailto:contact@dclic-erp.fr|&lt;br /&gt;
zip=74000|&lt;br /&gt;
town=Annecy|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=DiVA-Cloud|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=DiVA-Cloud propose des applications OpenSource de gestion de la communication et de l&#039;information pour les entreprises. Notre logithèque contient des applications de WebConference, ERP, CRM, CMS, GED, et bien d&#039;autres... Toutes ces applications pré-configurés sont mises à disposition sur un environnement privé. |&lt;br /&gt;
web=www.diva-cloud.com |&lt;br /&gt;
email=mailto:contact@diva-cloud.com |&lt;br /&gt;
zip=81100|&lt;br /&gt;
town=Castres|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=FUTUR TECH|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Prestataire de services pour artisans, TPE, PME :&lt;br /&gt;
Solutions open source, Internet, Sécurité, Sauvegarde, Antivirus, Gestion d&#039;entreprise, Conseil, Formation, Installation et Paramétrage&lt;br /&gt;
Intervention sur site client. Situé entre Bordeaux et Libourne|&lt;br /&gt;
web=http://www.futur-tech.com|&lt;br /&gt;
email=mailto:info@futur-tech.com|&lt;br /&gt;
zip=33450|&lt;br /&gt;
town=IZON|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=GPC.solutions|&lt;br /&gt;
profid=RCS de Pau 528 995 921|&lt;br /&gt;
desc={{Flag_fr}}Spécialiste Open Source et Logicel Libre et revendeur Agréé PME Google Apps for Business.&lt;br /&gt;
&lt;br /&gt;
Nous proposons un gamme complète de services autour de Dolibar parmis lesquels l&#039;hébergement cloud, le développement sur mesure, l&#039;assistance et la formation.&lt;br /&gt;
&lt;br /&gt;
Nous travaillons aussi à une intégration forte dans l&#039;écosystème Google Apps.&lt;br /&gt;
&lt;br /&gt;
{{Flag_en}}Open Source and Libre Software specialist and Authorized Google Apps for Business™ SMB reseller.&lt;br /&gt;
&lt;br /&gt;
We offer a full range of services around Dolibarr including cloud hosting, custom development, support and training.&lt;br /&gt;
&lt;br /&gt;
We&#039;re also working on a tight integration into the Google Apps ecosystem.|&lt;br /&gt;
web=http:// gpcsolutions.fr|&lt;br /&gt;
email=mailto:contact@gpcsolutions.fr|&lt;br /&gt;
zip=64000|&lt;br /&gt;
town=Pau|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=http:// gpcsolutions.fr/dolibarr|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=gpcsolutions.png|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Infonel.net|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=administrateur système open source indépendant:&lt;br /&gt;
Installation, paramétrage, configuration et sécurisation de dolibarr sur site client|&lt;br /&gt;
web=http://www.infonel.net|&lt;br /&gt;
email=|&lt;br /&gt;
zip=11100|&lt;br /&gt;
town=Narbonne|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=i.d &amp;amp; l - informatique durable &amp;amp; libre|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Conseil et intégration de solutions logicielles libres, dont Dolibarr, pour artisans, TPE, indépendants, commerçants, PME, associations...|&lt;br /&gt;
web=http://idl-mp.com|&lt;br /&gt;
email=http://idl-mp.com/contact/|&lt;br /&gt;
zip=31,32,09,82,81|&lt;br /&gt;
town=Toulouse et région toulousaine|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=iouston informatique|&lt;br /&gt;
profid=792 263 683 00015|&lt;br /&gt;
desc=iouston informatique, située à proximité de Nancy, Metz, Lunéville, est une société spécialisée auprès des assoiations, des TPE et des artisans commerçants. Nous installons et configurons dolibarr pour vous et nous formons vos équipes à son utilisation quotidienne. &lt;br /&gt;
Nous proposons de nombreux autres services, associés ou non à dolibarr.|&lt;br /&gt;
web=|&lt;br /&gt;
email=allo@iouston.com|&lt;br /&gt;
zip=54370|&lt;br /&gt;
town=Bauzemont|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=LVS Informatique|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Development Specialist php, mysql. Creation, enhancement, customization of modules and components ...&lt;br /&gt;
Nos modifs/nos modules :&lt;br /&gt;
-cashdesk : prix en ttc, possibilité de modification du prix, du libellé...&lt;br /&gt;
-interfaçage avec GoogleAgenda (toutes les actions apparaissent dans GoogleAgenda)&lt;br /&gt;
-Mails/Télécopies reçus : apparaissent dans un onglet spécifique sur le tiers en question&lt;br /&gt;
-qualification Tiers&lt;br /&gt;
-Adresse Tiers vu dans GoogleMap&lt;br /&gt;
-creation de nbreux template excel/pdf&lt;br /&gt;
|&lt;br /&gt;
web=http://www.lvsinformatique.com|&lt;br /&gt;
email=|&lt;br /&gt;
zip=83860|&lt;br /&gt;
town=NANS LES PINS|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Mephivio|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Services company with a computer located in Montpellier agglo, specializing in computer graphics, secretariat, Joomla web sites, client, opensource (Dolibarr, glpi, voip Elastix / Trixbox / PIAF etc ...)|&lt;br /&gt;
web=http://www.mephivio.fr/|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=|&lt;br /&gt;
country=fr|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Modulaweb : Technologies modulables orientées web.|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Développement d&#039;applicatifs web, hébergement d&#039;applications web, serveurs de fichiers et de sauvegarde, sites internet/intranet et intégration web, espaces clients, communication via internet (VoIP, messagerie instantanée), travail collaboratif. Spécialiste solutions libres pour l&#039;entreprise (Zimbra, Dolibarr, Thaïs...) Région Languedoc-Rouissillon et voisines |&lt;br /&gt;
web=http://www.modulaweb.fr|&lt;br /&gt;
email=http://www.modulaweb.fr/portail/contact/|&lt;br /&gt;
zip=34000|&lt;br /&gt;
town=Montpellier|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=NLTechno [[File:Dolibarr_preferred_partner_int.png|120px]] |&lt;br /&gt;
desc=NLTechno is one of the most important contributor on Dolibarr and can host for you a Dolibarr database in a SaaS (Software As A Service) mode.|&lt;br /&gt;
profid=493 861 496 00021|&lt;br /&gt;
web=http://www.nltechno.com|&lt;br /&gt;
email=|&lt;br /&gt;
zip=92500|&lt;br /&gt;
town=Rueil Malmaison|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes (http://www.dolicloud.com)|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=no|&lt;br /&gt;
service_local=no|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
logo=logo_nltechno.png}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Open-Concept.pro [[File:Dolibarr_preferred_partner_int.png|120px]] |&lt;br /&gt;
profid=537 828 717 00018|&lt;br /&gt;
desc=Open-concept.pro ([[Florian Henry]]) is dedicated to Open-Source ERP/CRM solition. Open-concept.pro ([[Florian Henry]]) is a contributor of Dolibarr sine 2010, and modules builder also|&lt;br /&gt;
web=http://www.open-concept.pro|&lt;br /&gt;
email=mailto:florian.henry@open-concept.pro|&lt;br /&gt;
zip=77380|&lt;br /&gt;
town=COMBS-LA-VILLE|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
logo=Logo_openconcept.png}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Pascal Sené|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Logiciels libres et photographie.|&lt;br /&gt;
web=http://www.pascalsene.com|&lt;br /&gt;
email=contact@pascalsene.com|&lt;br /&gt;
zip=22,29,35,56|&lt;br /&gt;
town=Lannion|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=ProbeSys|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Créée en 2003 par des passionnés du logiciel libre, [http://probesys.com ProbeSys] est une entreprise coopérative à l&#039;image du secteur des nouvelles technologies : dynamique, réactive et participative. |&lt;br /&gt;
web=http://www.probesys.com|&lt;br /&gt;
email=mailto:contact@probesys.com|&lt;br /&gt;
zip=38600|&lt;br /&gt;
town=Fontaine|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Process Evolution|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Département Gecinfo: Société de Services et d&#039;Ingénierie en Informatique.|&lt;br /&gt;
web=http://www.process-evolution.fr/|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=|&lt;br /&gt;
country=fr|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Syllene|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=We install and configure the software Dolibarr to suit your needs and train your users. We can also provide hosting and maintenance of your application.|&lt;br /&gt;
web=http://www.syllene.net/|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Teclib&#039;|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=&lt;br /&gt;
Teclib est une société  de services en informatique au capital de 50 000€.  Nous sommes implantés à Paris, Colmar (Alsace) et à Chartres (Région Centre). L&#039;équipe teclib&#039; rassemble 8 personnes au 31 juillet 2010. Spécialisée dans l&#039;intégration de logiciels libres tels que Dolibarr, GLPI, Quotero, Nagios, Centreon, Zimbra... |&lt;br /&gt;
web=http://www.teclib.com|&lt;br /&gt;
email=mailto:contact@teclib.com|&lt;br /&gt;
zip=75010|&lt;br /&gt;
town=Paris|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=Tiaris|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Solutions and services for small businesses and merchants: e-commerce, maintenance, ERP/CRM Dolibarr, development telecommuting. ecommerce - dolibarr webservice based interface. Saas Offer Dolibarr + ecommerce connection for open source caddies (OsCommerce, Zencart, Crelaoded, Prestashop and others...)|&lt;br /&gt;
web=http://www.tiaris.fr/|&lt;br /&gt;
email=http://www.tiaris.fr/spip.php?page=contact|&lt;br /&gt;
zip=57870|&lt;br /&gt;
town=WALSCHEID|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=yes|&lt;br /&gt;
service_onlinesupport=yes|&lt;br /&gt;
service_emailsupport=yes|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=yes|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=UTOPSYS -  L&#039;Informatique, Professionnelle.|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Maintenance, dépannage, conseil, audits, Green IT, solutions open-source de travail collaboratif, installation et maintenance Dolibarr. Bordeaux, CUB, Libourne.|&lt;br /&gt;
web=http://www.utopsys.fr|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=Libourne|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TemplateCompany|&lt;br /&gt;
name=WEBINFOPRO|&lt;br /&gt;
profid=|&lt;br /&gt;
desc=Society Computers and Internet service for small businesses located in the suburbs west of Paris. One of the main activities is the integration of open source software.|&lt;br /&gt;
web=http://www.webinfopro.fr/|&lt;br /&gt;
email=|&lt;br /&gt;
zip=|&lt;br /&gt;
town=|&lt;br /&gt;
country=fr|&lt;br /&gt;
service_hosting=no|&lt;br /&gt;
service_onlinesupport=no|&lt;br /&gt;
service_emailsupport=no|&lt;br /&gt;
service_dev=yes|&lt;br /&gt;
service_local=yes|&lt;br /&gt;
service_formation=no|&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Iouston</name></author>
	</entry>
</feed>