<?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=Julian</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=Julian"/>
	<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php/Special:Contributions/Julian"/>
	<updated>2026-10-24T15:18:54Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Installation_-_Upgrade&amp;diff=47801</id>
		<title>Installation - Upgrade</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Installation_-_Upgrade&amp;diff=47801"/>
		<updated>2020-07-04T16:29:33Z</updated>

		<summary type="html">&lt;p&gt;Julian: Minor grammatical changes, corrected misspelling of &amp;#039;package&amp;#039;&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:Installation_-_Mise_à_jour]]&lt;br /&gt;
[[es:Instalación_-_Actualización]]&lt;br /&gt;
[[zh:安装_-_升级]]&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Admin_en]]&lt;br /&gt;
{{TemplateDocUser}}&lt;br /&gt;
&lt;br /&gt;
The following documentation describes processes to install or upgrade Dolibarr on a Windows, MAC OS or Unix like platform.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Install Dolibarr=&lt;br /&gt;
This chapter describe different available methods to install Dolibarr for the first time (from the most simple to the manual one). See next chapter for upgrades.&lt;br /&gt;
&lt;br /&gt;
==On your dedicated computer/server (installation &amp;quot;On Premise&amp;quot;)==&lt;br /&gt;
===[[File:Logo_windows.png]] Manualy or with Doliwamp===&lt;br /&gt;
- &#039;&#039;&#039;Prerequisite&#039;&#039;&#039;: Windows&lt;br /&gt;
&lt;br /&gt;
- &#039;&#039;&#039;Level&#039;&#039;&#039;: Non experienced users&lt;br /&gt;
&lt;br /&gt;
This process works only for Windows users and is recommended for user with no computer knowledges. If you are experimented with Apache, PHP and Mysql installation, next chapter is better for you. &lt;br /&gt;
&lt;br /&gt;
If you have time and want to learn how to install an Apache, PHP and MariaDB web server, see the [[Manual installation on Windows]] page for step-by-step instructions.&lt;br /&gt;
&lt;br /&gt;
However, if you are a newbie user and running Windows, you can use DoliWamp. DoliWamp is a specialized Dolibarr distribution for Windows. This distribution allows you to make an installation under Windows with all prerequisites (Apache, Mysql, PHP) and with no computer knowledge. This is steps to install DoliWamp:&lt;br /&gt;
&lt;br /&gt;
*Download last Dolibarr version for Windows DoliWamp.&lt;br /&gt;
&lt;br /&gt;
For this, see at {{TemplateURLToDownloadDoliWamp}}&lt;br /&gt;
&lt;br /&gt;
*Run the downloaded .exe and follow instructions.&lt;br /&gt;
&lt;br /&gt;
===[[File:Logo_ubuntu.png]] With DoliDeb (Debian or Ubuntu .deb package)===&lt;br /&gt;
- &#039;&#039;&#039;Prerequisite&#039;&#039;&#039;: Linux Ubuntu&lt;br /&gt;
&lt;br /&gt;
- &#039;&#039;&#039;Level&#039;&#039;&#039;: Non experienced users&lt;br /&gt;
&lt;br /&gt;
This process works only for Ubuntu or Debian Linux users and is recommended for user with little computer knowledge. If you are experienced with Apache, PHP and Mysql installation, the chapter &#039;with standard package&#039; is better for you. However, if you are a newbie user and running Ubuntu, you can use DoliDeb. DoliDeb is a specialized Dolibarr distribution for Debian or Ubuntu. This distribution allows you to make an installation under Ubuntu with all prerequisites (Apache, Mysql, PHP) and with no computer knowledge.&lt;br /&gt;
&lt;br /&gt;
*Steps to install DoliDeb are described into page [[Dolibarr for Ubuntu or Debian]].&lt;br /&gt;
&lt;br /&gt;
===[[File:Logo_rpm.png|42px]] With DoliRpm (Fedora, Redhat, Mandriva, Mageia or OpenSuse .rpm package)===&lt;br /&gt;
- &#039;&#039;&#039;Prerequisite&#039;&#039;&#039;: Linux Fedora, Redhat, Mandriva, Mageia or OpenSuse&lt;br /&gt;
&lt;br /&gt;
- &#039;&#039;&#039;Level&#039;&#039;&#039;: Non experienced users&lt;br /&gt;
&lt;br /&gt;
This process works only for Fedora, Redhat, Mandriva, Mageia or OpenSuse Linux users and is recommended for user with no computer knowledges. If you are experimented with Apache, PHP and Mysql installation, next chapter &#039;with standard package&#039; is better for you. However, if you are a newbie user and running Fedora or Redhat, you can use DoliRpm. DoliRpm is a specialized Dolibarr distribution for Fedora, Redhat or Mandriva. This distribution allows you to make an installation under such OS with all prerequisites (Apache, Mysql, PHP) and with no computer knowledge.&lt;br /&gt;
&lt;br /&gt;
*Steps to install DoliRpm are described into page [[Dolibarr for Redhat or Fedora (rpm package)]] or [[Dolibarr for Mandriva or Mageia (rpm package)]] or [[Dolibarr for OpenSuse (rpm package)]].&lt;br /&gt;
&lt;br /&gt;
===[[File:Gnu.png]] With Dolibarr (standard .zip package or from git)===&lt;br /&gt;
- &#039;&#039;&#039;Prerequisite&#039;&#039;&#039;: Apache, PHP and a database server (MySQL or PostgreSQL) are already running correctly and user/pass (of a new database or root server) is known.&lt;br /&gt;
&lt;br /&gt;
- &#039;&#039;&#039;Level&#039;&#039;&#039;: Users with few Web and Database administration knowledges.&lt;br /&gt;
&lt;br /&gt;
This procedure describe manual (and recommended) installation on a GNU/Linux system (Debian, Mandriva, ...), it can be used for other OS with minor changes.&lt;br /&gt;
You can follow this tutorial for any Dolibarr version &amp;gt;= 2.0.0&lt;br /&gt;
&lt;br /&gt;
*Check that you have installed Apache, PHP {{PHPMinVersion}} and a database server (MySQL {{MySqlMinVersion}} or PostGreSQL) correctly (check list of installed packaged on your server by using the package manager of your distribution). If not, install them (use last recent version).&lt;br /&gt;
&lt;br /&gt;
*Check that main root or admin user/password couple for the server is known and works correctly. If this root or admin user/password is not known because not yet defined, read following chapter. Otherwise go on next step:&lt;br /&gt;
&lt;br /&gt;
For Linux users, if you have just installed a MySQL server, the admin user is&#039;&#039;&#039; root&#039;&#039;&#039;. If the root password has never been set yet, you must run the following command to initialize the password:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mysql    &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Once in Mysql interface, run the SQL command to modify the root password:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
grant all privileges on *.* to root@&#039;localhost&#039; identified by &#039;newrootpass&#039; with grant option;      &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Then enter and \q to quit.&lt;br /&gt;
&lt;br /&gt;
To check that connexion with the new couple user/password works, launch the command&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mysql -u root -p&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
And type your password &#039;&#039;newrootpass&#039;&#039; then \q to quit if connexion has been successfull.&lt;br /&gt;
&lt;br /&gt;
For Linux users, if you have just installed a PostgreSQL server, you must run the following command to initialize an admin user and password. For this, add the following line in file &#039;&#039;&#039;/etc/postgresql/x.x/main/pg_hba.conf&#039;&#039;&#039; (replace x.x with your postgres version)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
local   all         dolibarrowner    md5        &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Also, comment the line&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
#local   all         all                               ident&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This line ensure that system login used to connect to database (it will be login the web server run with), is same than database account (this is never the case).&lt;br /&gt;
&lt;br /&gt;
Then launch commands from a root shell&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo -s -u postgres&lt;br /&gt;
createuser dolibarrowner&lt;br /&gt;
psql -h localhost -d template1 -c &amp;quot;alter user dolibarrowner with password &#039;dolibarrownerpass&#039;&amp;quot;&lt;br /&gt;
exit&lt;br /&gt;
sudo /etc/init.d/postgresql restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
You can test a connection with this user with command&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
psql -d postgres -U dolibarrowner -W&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
And type your &#039;&#039;dolibarrownerpass&#039;&#039; as password and \q to quit if connection is ok.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Go into the directory where to install Dolibarr (the web root directory defined for your web server)&lt;br /&gt;
&lt;br /&gt;
#For Debian and Ubuntu families, it is generally: /var/www (newer versions: /var/www/html)&lt;br /&gt;
#For Mandriva, RedHat, Fedora: /var/www/html&lt;br /&gt;
#For Suse: /srv/www/htdocs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd /var/www&lt;br /&gt;
or&lt;br /&gt;
$ cd /var/www/html&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Get the application archive of last stable version&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;from zip file&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ wget http://www.dolibarr.org/files/dolibarr.zip&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Uncompress archive&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ unzip dolibarr.zip&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;or from git repository&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ git clone -b X.Y http://github.com/Dolibarr/dolibarr.git dolibarr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Replace X.Y with the version you want to get.&lt;br /&gt;
&lt;br /&gt;
*Rename directory dolibarr-x.y.z into dolibarr to have a directory name that does not depends on version (replace x.y.z with source version)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ mv dolibarr-x.y.z dolibarr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Change permission and owner of the &#039;dolibarr&#039; directory to that of the group under which the web server runs (assumed to be &#039;www-data&#039; for debian, &#039;apache&#039; for redhat, mandriva, fedora)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ chmod -R 755 /var/www/dolibarr&lt;br /&gt;
$ chown -R www-data.www-data /var/www/dolibarr&lt;br /&gt;
or&lt;br /&gt;
$ chmod -R 755 /var/www/html/dolibarr&lt;br /&gt;
$ chown -R apache.apache /var/www/html/dolibarr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*For Fedora, since SELinux is usually enabled, it is also advisable to run the following commands to make the &#039;dolibarr&#039; directory compliant with the SELinux requirement (else you are likely to get quite a few alerts) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ semanage fcontext -a -t httpd_sys_rw_content_t &#039;/var/www/html/dolibarr(/.*)?&#039;&lt;br /&gt;
$ restorecon -R -v &#039;/var/www/html/dolibarr&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*As a root user, create, into directory dolibarr/htdocs/conf, an empty configuration file called conf.php and set, as owner, the web server user (example www-data on Debian, apache on Mandriva, RedHat, Fedora or other distributions ...). This is required because the web server will have to write into this file during install process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd dolibarr ; touch htdocs/conf/conf.php ; chown www-data htdocs/conf/conf.php&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Note: For Ubuntu no need of htdocs, you just have to make dolibarr root by placing all files and folders of htdocs in /var/www/dolibarr then from browser do &amp;lt;MyIP&amp;gt;/dolibarr/index.php (see this discussion as reference to this addendum [http://askubuntu.com/questions/874456/php-code-displays-in-browser?noredirect=1#comment1357943_874456])&lt;br /&gt;
&lt;br /&gt;
*As a root user, create a directory that will be used to save all files generated and stocked by Dolibarr (PDf invoices, uploaded images, ...), and attribute to this directory a owner that must be the web server (example www-data on Debian, apache on Mandriva, RedHat, Fedora...). The web server must have write permission into this directory. It is recommanded to use a directory outside of your directory of web pages, for example - &amp;quot;/var/lib/dolibarr/documents&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ mkdir -p /var/lib/dolibarr/documents ; chown www-data /var/lib/dolibarr/documents&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Now call your browser to point to the main page&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
http://127.0.0.1/dolibarr/htdocs/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
or if you didn&#039;t create the htdocs directory&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
http://127.0.0.1/dolibarr/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Follow instructions of setup steps until end of install process.&lt;br /&gt;
&lt;br /&gt;
*For security reason, we recommend, once setup is finished, to create a file install.lock into Dolibarr document directory that only root user can delete. This will lock the call of the install process again (you will have to remove this file for upgrades).&lt;br /&gt;
&lt;br /&gt;
If this is not done, Dolibarr will show you a warning once logged by an administrator user.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ touch /var/lib/dolibarr/documents/install.lock; chmod go-w /var/lib/dolibarr/documents;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==On a mutualized Web Hosting Provider (without terminal/SSH access)==&lt;br /&gt;
It is not possible to provide a generic documentation to install Dolibarr on a particular Web hosting provider as this depends on provider.&lt;br /&gt;
In most cases, using the following process should works for most providers:&lt;br /&gt;
&lt;br /&gt;
- &#039;&#039;&#039;Prerequisite&#039;&#039;&#039;: Apache web server, PHP and a database server (MySQL or PostgreSQL) are already running correctly and user/pass (of a new database or root server) is known.&lt;br /&gt;
&lt;br /&gt;
- &#039;&#039;&#039;Level&#039;&#039;&#039;: Users with few Web and Database administration knowledges. Knowledge to use a tool (FTP, SFTP) to upload files on the server.&lt;br /&gt;
&lt;br /&gt;
*Check that you have an Apache web server, PHP and a database server (MySQL or PostGreSQL) that works correctly.&lt;br /&gt;
&lt;br /&gt;
[[File:warning.png]] Warning, check that code page of PHP server and database server are same (utf8 recommended).&lt;br /&gt;
&lt;br /&gt;
*Check that main root or admin user/password couple for the server is known and works correctly. Ask them to your Web Hosting Provider if unknown.&lt;br /&gt;
&lt;br /&gt;
*Get the application archive of last stable version and uncompress it locally.&lt;br /&gt;
&lt;br /&gt;
*Upload all content of htdocs directory to your web root directory, for example using FTP in binary mode.&lt;br /&gt;
&lt;br /&gt;
*Create a directory called &amp;quot;documents&amp;quot; into Dolibarr directory that will serve to save all documents generated and stocked by Dolibarr (PDF invoices, uploaded images, ...). The web server must have write permission into this directory. You can set permissions with your FTP client.&lt;br /&gt;
&lt;br /&gt;
*Now call your browser to point to the main page index.php&lt;br /&gt;
&lt;br /&gt;
*Follow instructions of setup steps until end of install process.&lt;br /&gt;
&lt;br /&gt;
*For security reason, we recommend, once setup is finished, to create a file install.lock into Dolibarr installed directory. This will lock the call of the install process again (you will have to remove it for upgrades). If this is not done, Dolibarr will show you a warning once logged as an administrator user.&lt;br /&gt;
&lt;br /&gt;
==On a SaaS or Cloud web hosting provider==&lt;br /&gt;
Dolibarr is also available on a lot of &amp;quot;ready to use&amp;quot; SaaS or Cloud platforms/services that provides preinstalled versions.&lt;br /&gt;
&lt;br /&gt;
See page [[Cloud Solutions]].&lt;br /&gt;
&lt;br /&gt;
Dolibarr can also be installed manually on all Cloud platforms that support PHP and Mysql.&lt;br /&gt;
&lt;br /&gt;
See page [[Cloud Solutions]].&lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
&lt;br /&gt;
==First setup==&lt;br /&gt;
See page [[First setup|Setup]].&lt;br /&gt;
&lt;br /&gt;
==Setup a LDAP connexion==&lt;br /&gt;
If you want to use a LDAP: See [[Install and configure OpenLDAP]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Import external data=&lt;br /&gt;
For this operation, read page [[Mass imports]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Upgrade Dolibarr=&lt;br /&gt;
This chapter describe process to upgrade an existing installation of Dolibarr from an old version to a new one. Process is same whatever is version you are coming fro and version you are going to, but will differ according to the distribution/operating system you used for your first installation. You should use the same for upgrade.&lt;br /&gt;
 &lt;br /&gt;
==[[File:Logo_windows.png]] With DoliWamp (Windows .exe package)==&lt;br /&gt;
&lt;br /&gt;
*First make a backup of your current installation&lt;br /&gt;
*Download new .exe package of DoliWamp.&lt;br /&gt;
*Run downloaded .exe file and follow steps without changing any default values. This will upgrades all your files.&lt;br /&gt;
*At the end of the execution, your browser is launched with a page to ask you to run upgrade of your database. Choose the upgrade according to your case.&lt;br /&gt;
&lt;br /&gt;
If there is more than one version late, the page in your browser will loop to start again the upgrade wizard as often as required to run upgrade process, version by version, until your reach the new installed version.&lt;br /&gt;
&lt;br /&gt;
==[[File:Logo_ubuntu.png]] With DoliDeb (Debian or Ubuntu .deb package)==&lt;br /&gt;
&lt;br /&gt;
*First make a backup of your current installation&lt;br /&gt;
*Process to upgrade using Debian/Ubuntu package is same way than install process (see previous chapters), so it is as easy as installing a package.&lt;br /&gt;
&lt;br /&gt;
You can also read page [[Dolibarr for Ubuntu or Debian]].&lt;br /&gt;
&lt;br /&gt;
==[[File:Logo_rpm.png|40px]] With DoliRpm (Fedora, Redhat, Mandriva, Mageia or OpenSuse .rpm package)==&lt;br /&gt;
&lt;br /&gt;
*First make a backup of your current installation&lt;br /&gt;
*Process to upgrade using rpm package is same way than install process, so it is as easy as installing a package (see previous chapters).&lt;br /&gt;
&lt;br /&gt;
==[[File:Gnu.png]] With Dolibarr (standard .zip package)==&lt;br /&gt;
This is tutorial to use when using standard distribution for a manual upgrade.&lt;br /&gt;
&lt;br /&gt;
*First make a backup of your current installation&lt;br /&gt;
&lt;br /&gt;
*Go into the directory where you installed Dolibarr (it might be the root directory of your web, for example /var/www under Debian)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd /var/www&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Get archive of last version&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ wget https://www.dolibarr.org/files/dolibarr.zip&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Uncompress the archive&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ unzip dolibarr.zip&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Copy all new extracted files (the one uncompressed into directory dolibarr-x.y.z) to the directory where you put your old Dolibarr version. This will overwrite old files with new ones without removing files specifics to your installation (like conf.php file or complementary non official installed modules).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cp -r dolibarr-x.y.z/* dolibarr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*If no error, you can now remove the directory of source files&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ rm -fr dolibarr-x.y.z&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Now open your Dolibarr in your browser. It should open automatically the install/&lt;br /&gt;
&lt;br /&gt;
and choose &#039;&#039;Update&#039;&#039; in suggested menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: &lt;br /&gt;
&lt;br /&gt;
If you want to script the database upgrade process (to avoid the upgrade process from web browser), you can run the 3 upgrade processes from command line:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd htdocs/install&lt;br /&gt;
$ php upgrade.php oldx.oldy.oldz x.y.z &amp;gt; output.html&lt;br /&gt;
$ php upgrade2.php oldx.oldy.oldz x.y.z &amp;gt; output2.html&lt;br /&gt;
$ php step5.php oldx.oldy.oldz x.y.z &amp;gt; output3.html&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Note: z must be &amp;quot;0&amp;quot; because only major versions have a migration script to run.&lt;br /&gt;
&lt;br /&gt;
Return code will be 0 if success, 1 if error (if this happens, see file output.html or output2.html).&lt;br /&gt;
&lt;br /&gt;
Note: If you have a message that tell the install process is locked by a file, remove the file install.lock stored in Dolibarr root directory.&lt;br /&gt;
&lt;br /&gt;
*For security reason, once setup is finished, you should create a file install.lock into Dolibarr documents directory. This will lock the call of the install process again (you will have to remove this file for future upgrades). If this is not done, Dolibarr will show you a warning once logged with an administrator user.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ echo &amp;gt; documents/install.lock&lt;br /&gt;
$ chmod 444 documents/install.lock&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Julian</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Triggers_system&amp;diff=47569</id>
		<title>Triggers system</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Triggers_system&amp;diff=47569"/>
		<updated>2020-06-12T14:10:46Z</updated>

		<summary type="html">&lt;p&gt;Julian: A few minor grammatical changes&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:Système de Triggers]]&lt;br /&gt;
[[es:Triggers-acciones]]&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{TemplateDocDevEn}}&lt;br /&gt;
&lt;br /&gt;
=Execute your own code on a Dolibarr business event=&lt;br /&gt;
To execute personalized code after a Dolibarr event (create/modify/remove a third party/invoice/product or other), Dolibarr offers a mechanism of business triggers. This mechanism allows you to personalize a work-flow to have Dolibarr business events being synchronized into another application for example.&lt;br /&gt;
You can also use triggers to modify the behavior of Dolibarr itself: for example, to create a contract automatically when an invoice is validated.&lt;br /&gt;
&lt;br /&gt;
Note that triggers is a feature for developers that is limited to business CRUD events (Create | Read | Update | Delete). There is another feature for developers to inject custom code in the application called the [[Hooks system]].&lt;br /&gt;
&lt;br /&gt;
So, to add your own code that will be triggered by a Dolibarr trigger, this is the process:&lt;br /&gt;
&lt;br /&gt;
1) Copy the trigger file &#039;&#039;&#039;htdocs/core/triggers/interface_90_all_Demo.class.php-NORUN&#039;&#039;&#039; under the new name: &amp;lt;!-- Is this still accurate? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;interface_99_all_&#039;&#039;Xxx&#039;&#039;.class.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;interface_99_mod&#039;&#039;MyModule_Xxx&#039;&#039;.class.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;Xxx&#039;&#039; is a string of your choice starting with uppercase character, &#039;&#039;99&#039;&#039; is the priority number for the execution of your trigger (1 being the top priority) and &#039;&#039;MyModule&#039;&#039; is the name of a module if you want that trigger is activated only if module MyModule is activated. If you want the trigger to be always active, use &#039;&#039;all&#039;&#039; instead of  modMyModule.&lt;br /&gt;
This new file must be saved inside same directory.&lt;br /&gt;
&lt;br /&gt;
Note: Value you can use for mod MyModule are values found in directory&lt;br /&gt;
&#039;&#039;htdocs/includes/modules&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING&#039;&#039;&#039;: &#039;&#039;&#039;All&#039;&#039;&#039; those parameters are necessary for the trigger to be detected and executed! Eg: if you forget the priority number, your trigger won&#039;t be detected!&lt;br /&gt;
&lt;br /&gt;
For example, you can name your new trigger file: &lt;br /&gt;
&#039;&#039;htdocs/includes/triggers/interface_99_modFacture_Myworkflow.class.php&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
By creating such a file with a name like the example, your new trigger file will be executed each time a Dolibarr business event occurs but only if the module Facture is enabled.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: With Dolibarr 3.2+, you can also place the triggers in your own module&#039;s subdirectly. Eg: if your module resides in htdocs/mymodule/, then you can place your triggers inside htdocs/mymodule/core/triggers/. But for this, you must declare the trigger into your module descriptor file (eg: &#039;&#039;&#039;/mymodule/core/modules/modMyModule.class.php&#039;&#039;&#039;). For this, add into this file triggers-&amp;gt;1 into module_parts array:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Defined all module parts (triggers, login, substitutions, menus, etc...) (0=disable,1=enable)&lt;br /&gt;
$this-&amp;gt;module_parts = array(&#039;triggers&#039; =&amp;gt; 1);&lt;br /&gt;
//$this-&amp;gt;module_parts = array(&#039;triggers&#039; =&amp;gt; 1,&lt;br /&gt;
//              &#039;login&#039; =&amp;gt; 0,&lt;br /&gt;
//              &#039;substitutions&#039; =&amp;gt; 0,&lt;br /&gt;
//              &#039;menus&#039; =&amp;gt; 0);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Then disable and reenable your module. This will add a record into [[Table llx_const]] to tell Dolibarr that a trigger file must be searched in the module directory &#039;&#039;&#039;htdocs/mymodule/core/triggers/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Edit the file &#039;&#039;interface_99_modMyModule_Myworkflow.class.php&#039;&#039; to rename class &#039;&#039;InterfaceDemo&#039;&#039; by &#039;&#039;InterfaceMyworkflow&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Then go on page Home -&amp;gt; Admin Tools -&amp;gt; About Dolibarr -&amp;gt;Triggers.&lt;br /&gt;
Your new trigger file must appears in the list without any error message. This means preceding actions have been done successfully.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Return now to edition of file to add your own code inside function  &#039;&#039;run_trigger&#039;&#039;.&lt;br /&gt;
This function is called at each Dolibarr business event. Put your code according to events on which you want to run. Each event is identified by a code (see following chapter to get full list of codes). So you can react or no after an event by doing just a test on variable &#039;&#039;&#039;$action&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
  function run_trigger($action,$object,$user,$langs,$conf)&lt;br /&gt;
  {&lt;br /&gt;
        // Put here code to execute after an action&lt;br /&gt;
        // The type of Dolibarr business event is stored into $action&lt;br /&gt;
        // Data of action are stored into object $object&lt;br /&gt;
        // Setup, user and language are saved into $conf, $user and $lang&lt;br /&gt;
        if ($action == &#039;COMPANY_CREATE&#039;)&lt;br /&gt;
        {&lt;br /&gt;
            dol_syslog(&amp;quot;Trigger for action &#039;$action&#039; launched. id=&amp;quot;.$object-&amp;gt;id);&lt;br /&gt;
        }&lt;br /&gt;
        elseif ($action == &#039;COMPANY_MODIFY&#039;)&lt;br /&gt;
        {        &lt;br /&gt;
            dol_syslog(&amp;quot;Trigger for action &#039;$action&#039; launched. id=&amp;quot;.$object-&amp;gt;id);&lt;br /&gt;
        }&lt;br /&gt;
        elseif ($action == &#039;COMPANY_DELETE&#039;)&lt;br /&gt;
        ...&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can do what you want into this coding part, if you check that function run_trigger returns a return code according to following rule:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;0 if KO, 0 if nothing is done, &amp;gt;0 if OK&lt;br /&gt;
&lt;br /&gt;
You can also use, inside this function, the following preinitialized variables:&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;$object&#039;&#039;&#039; is the object on which action is done (see next chapter)&lt;br /&gt;
*&#039;&#039;&#039;$user&#039;&#039;&#039; is the object containing all information of Dolibarr user that realizes the business event.&lt;br /&gt;
*&#039;&#039;&#039;$langs&#039;&#039;&#039; is the object that contains the user language and translations strings&lt;br /&gt;
*&#039;&#039;&#039;$conf&#039;&#039;&#039; is the object that contains all the Dolibarr configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Once your trigger file has been developed, last action is to test by using Dolibarr to execute the business event that should trigger your code. Warning, call of function &#039;&#039;&#039;run_trigger&#039;&#039;&#039; is encapsulated into a transaction. If your code return a KO code, the calling function may rollback the transaction (this depends on calling function).&lt;br /&gt;
Add log information inside your function &#039;&#039;&#039;run_trigger&#039;&#039;&#039; to know if your code is correctly triggered and runs correctly. For this, you can use the function&lt;br /&gt;
dol_syslog(&amp;quot;my log message&amp;quot;, LOG_DEBUG);&lt;br /&gt;
&lt;br /&gt;
=List of known triggers actions=&lt;br /&gt;
&lt;br /&gt;
Here is a quick view of the events that cause triggers to be searched and executed. An event is characterized by the value of the code &#039;&#039;$action&#039;&#039;, with the type of the object received in &#039;&#039;$object&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Note: The [[Module Agenda En|Module Agenda]] and [[Module Notification]] use the table [[Table llx c action trigger]] as a list of known triggers. This avoid scanning the disk for this information, but this table is just a very limited list.&lt;br /&gt;
&lt;br /&gt;
In general, the trigger action code begins with the name of the module followed by the character _.&lt;br /&gt;
&lt;br /&gt;
{{TemplateListOfTriggers}}&lt;br /&gt;
This list may be not complete.&lt;br /&gt;
&lt;br /&gt;
=Manage and create a new trigger&#039;s action=&lt;br /&gt;
&lt;br /&gt;
To manage events other than those above, you must modify the Dolibarr code to add the following sequence in the business methods of the classes of the objects handled:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Call trigger&lt;br /&gt;
//$this-&amp;gt;context = array(&#039;paramX&#039;=&amp;gt;$valueX);&lt;br /&gt;
$result = $this-&amp;gt;call_trigger(&#039;XXXXX_YYYYY&#039;, $user);&lt;br /&gt;
if ($result &amp;lt;0) $error++;&lt;br /&gt;
// End call triggers&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It will then be possible to add in the run_trigger method of any trigger file, an if which allows you to manage this code. The run_trigger method would then be of the form:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
function run_trigger($action,$object,$user,$lang,$conf)&lt;br /&gt;
{&lt;br /&gt;
      // Put here code to execute after an action&lt;br /&gt;
      // The type of Dolibarr business event is stored into $action&lt;br /&gt;
      // Data of action are stored into object $object&lt;br /&gt;
      // Setup, user and language are saved into $conf, $user and $lang&lt;br /&gt;
      if ($action == &#039;XXXXX_YYYYY&#039;)&lt;br /&gt;
      {&lt;br /&gt;
          dol_syslog(&amp;quot;Trigger for action &#039;$action&#039; launched. id=&amp;quot;.$object-&amp;gt;id);&lt;br /&gt;
      }&lt;br /&gt;
      elseif ($action == &#039;COMPANY_CREATE&#039;)&lt;br /&gt;
      {&lt;br /&gt;
          dol_syslog(&amp;quot;Trigger for action &#039;$action&#039; launched. id=&amp;quot;.$object-&amp;gt;id);&lt;br /&gt;
      }&lt;br /&gt;
      elseif ($action == &#039;COMPANY_MODIFY&#039;)&lt;br /&gt;
      {        &lt;br /&gt;
          dol_syslog(&amp;quot;Trigger for action &#039;$action&#039; launched. id=&amp;quot;.$object-&amp;gt;id);&lt;br /&gt;
      }&lt;br /&gt;
      elseif ($action == &#039;COMPANY_DELETE&#039;)&lt;br /&gt;
      ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
You can in few minutes, add an interface from Dolibarr towards another system (or why not towards Dolibarr itself), with no risk since you don&#039;t touch anything to Dolibarr files. You only &amp;quot;added&amp;quot; a new trigger file inside the trigger directory.&lt;br /&gt;
If this new interface can serve a lot of other users, you can package it into a tgz file (see page [[Module_development#Create_a_package_to_distribute_and_install_your_module]]) and submit it on the download area in section external contributions on official Dolibarr web site.&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
&lt;br /&gt;
*[[Hooks system]]&lt;br /&gt;
*[[Interfaces Dolibarr toward foreign systems]]&lt;br /&gt;
*[[Interfaces from foreign systems toward Dolibarr]]&lt;/div&gt;</summary>
		<author><name>Julian</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Import_data_with_LibreOffice&amp;diff=47566</id>
		<title>Import data with LibreOffice</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Import_data_with_LibreOffice&amp;diff=47566"/>
		<updated>2020-06-12T13:25:23Z</updated>

		<summary type="html">&lt;p&gt;Julian: moved content to interlang&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;br /&amp;gt;&lt;br /&gt;
=Pre-requisites=&lt;br /&gt;
First make sure you have everything you need, OpenOffice, Java Runtime Environment, and the JDBC connector for MySql. Generally, you can follow this tutorial on the OpenOffice site to set up the connector.&lt;br /&gt;
&lt;br /&gt;
If your base is not local, check that port 3306 of the Mysql server is accessible from the internet and that the user of the base has access rights from the IP address where you make the requests. (different from localhost)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;We will take the example of importing Customers / Suppliers.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Create the customer table=&lt;br /&gt;
First you need to prepare a summary table of the data to import.&lt;br /&gt;
&lt;br /&gt;
Here is a blank database to fill in to list your third parties: Llx_societe.ods&lt;br /&gt;
&lt;br /&gt;
Here&#039;s another blank base for your physical third party contacts: Llx_socpeople.ods&lt;br /&gt;
&lt;br /&gt;
The principle is simple, whatever the table to import (see the complete list), just put the fields of this table in the first line. Then fill in the other lines with your data. Save your file (it&#039;s more careful), but leave it open.&lt;br /&gt;
&lt;br /&gt;
=Create an OpenOffice link to the Dolibarr database=&lt;br /&gt;
Then create a new OOo database, File&amp;gt; New&amp;gt; Database&lt;br /&gt;
&lt;br /&gt;
Check &amp;quot;Connect to an existing database&amp;quot; Select MySQL from the drop-down list.&lt;br /&gt;
&lt;br /&gt;
Click on &#039;&#039;Next&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Select Connection using JDBC and do Next&lt;br /&gt;
&lt;br /&gt;
Fill in the fields as below (make the name of your Dolibarr database and the address of the MySQL server)&lt;br /&gt;
&lt;br /&gt;
To enter your MySQL username, check Password required (if it is, but I hope so)&lt;br /&gt;
&lt;br /&gt;
There, nothing to change, do Finish&lt;br /&gt;
&lt;br /&gt;
Save your base according to the name that suits you.&lt;br /&gt;
&lt;br /&gt;
You will be asked for the Root password when connecting to the base.&lt;br /&gt;
&lt;br /&gt;
You are now directly connected to your Dolibarr database on MySQL.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please note: everything you do in OpenOffice Base will also be done on your MySQL database, OpenOffice Base serving here as an interface only.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Import of the customer table in the Dolibarr database=&lt;br /&gt;
Go back to the data table (under Calc), select all your columns and rows, and make a Copy (CRTL + C)&lt;br /&gt;
&lt;br /&gt;
Return to Base and now select the llx.societe table (just click on it, no need to open it)&lt;br /&gt;
&lt;br /&gt;
Just make a Paste (CRTL + V)&lt;br /&gt;
&lt;br /&gt;
A window appears, do not change anything and click on Next&lt;br /&gt;
&lt;br /&gt;
New window, make sure that the fields correspond well and click on Create&lt;br /&gt;
&lt;br /&gt;
Depending on the size of your Calc table you will have to be a little patient, for 1500 entries you have to wait 2-3 minutes. So be patient.&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
This tutorial works for other tables (products for example), you must always be sure to fill in the &#039;vital&#039; fields. You can also modify the data by double-clicking on the table of your choice, it&#039;s faster than with the Dolibarr interface, but be careful, we modify the data in the database directly, don&#039;t forget.&lt;br /&gt;
&lt;br /&gt;
It also works whether it is under Linux (tested under Ubuntu, but I don&#039;t see why it won&#039;t work under other distributions) or under Windows.&lt;br /&gt;
&lt;br /&gt;
[[Special:Categories|Category]]:&lt;br /&gt;
&lt;br /&gt;
*[[:Category:Imports|Imports]]&lt;br /&gt;
&lt;br /&gt;
Available in french : [[Importer_des_données_avec_OpenOffice]]&lt;br /&gt;
or in spanish : [[Importacion con OpenOffice]]&lt;br /&gt;
&lt;br /&gt;
[[fr:Importer_des_données_avec_OpenOffice]]&lt;br /&gt;
&lt;br /&gt;
[[es:Importacion_con_OpenOffice]]&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{ToTranslate}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;!-- TODO&lt;br /&gt;
Screenshots in English&lt;br /&gt;
Page formatting&lt;br /&gt;
Links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Julian</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Import_data_with_LibreOffice&amp;diff=47565</id>
		<title>Import data with LibreOffice</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Import_data_with_LibreOffice&amp;diff=47565"/>
		<updated>2020-06-12T13:19:32Z</updated>

		<summary type="html">&lt;p&gt;Julian: Added TODO for this 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;
[[fr:Importer_des_données_avec_OpenOffice]]&lt;br /&gt;
[[es:Importacion_con_OpenOffice]]&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{ToTranslate}}&amp;lt;br /&amp;gt;&amp;lt;!-- TODO&lt;br /&gt;
Screenshots in English&lt;br /&gt;
Page formatting&lt;br /&gt;
Links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Pre-requisites=&lt;br /&gt;
First make sure you have everything you need, OpenOffice, Java Runtime Environment, and the JDBC connector for MySql. Generally, you can follow this tutorial on the OpenOffice site to set up the connector.&lt;br /&gt;
&lt;br /&gt;
If your base is not local, check that port 3306 of the Mysql server is accessible from the internet and that the user of the base has access rights from the IP address where you make the requests. (different from localhost)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;We will take the example of importing Customers / Suppliers.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Create the customer table=&lt;br /&gt;
First you need to prepare a summary table of the data to import.&lt;br /&gt;
&lt;br /&gt;
Here is a blank database to fill in to list your third parties: Llx_societe.ods&lt;br /&gt;
&lt;br /&gt;
Here&#039;s another blank base for your physical third party contacts: Llx_socpeople.ods&lt;br /&gt;
&lt;br /&gt;
The principle is simple, whatever the table to import (see the complete list), just put the fields of this table in the first line. Then fill in the other lines with your data. Save your file (it&#039;s more careful), but leave it open.&lt;br /&gt;
&lt;br /&gt;
=Create an OpenOffice link to the Dolibarr database=&lt;br /&gt;
Then create a new OOo database, File&amp;gt; New&amp;gt; Database&lt;br /&gt;
&lt;br /&gt;
Check &amp;quot;Connect to an existing database&amp;quot; Select MySQL from the drop-down list.&lt;br /&gt;
&lt;br /&gt;
Click on &#039;&#039;Next&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Select Connection using JDBC and do Next&lt;br /&gt;
&lt;br /&gt;
Fill in the fields as below (make the name of your Dolibarr database and the address of the MySQL server)&lt;br /&gt;
&lt;br /&gt;
To enter your MySQL username, check Password required (if it is, but I hope so)&lt;br /&gt;
&lt;br /&gt;
There, nothing to change, do Finish&lt;br /&gt;
&lt;br /&gt;
Save your base according to the name that suits you.&lt;br /&gt;
&lt;br /&gt;
You will be asked for the Root password when connecting to the base.&lt;br /&gt;
&lt;br /&gt;
You are now directly connected to your Dolibarr database on MySQL.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please note: everything you do in OpenOffice Base will also be done on your MySQL database, OpenOffice Base serving here as an interface only.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Import of the customer table in the Dolibarr database=&lt;br /&gt;
Go back to the data table (under Calc), select all your columns and rows, and make a Copy (CRTL + C)&lt;br /&gt;
&lt;br /&gt;
Return to Base and now select the llx.societe table (just click on it, no need to open it)&lt;br /&gt;
&lt;br /&gt;
Just make a Paste (CRTL + V)&lt;br /&gt;
&lt;br /&gt;
A window appears, do not change anything and click on Next&lt;br /&gt;
&lt;br /&gt;
New window, make sure that the fields correspond well and click on Create&lt;br /&gt;
&lt;br /&gt;
Depending on the size of your Calc table you will have to be a little patient, for 1500 entries you have to wait 2-3 minutes. So be patient.&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
This tutorial works for other tables (products for example), you must always be sure to fill in the &#039;vital&#039; fields. You can also modify the data by double-clicking on the table of your choice, it&#039;s faster than with the Dolibarr interface, but be careful, we modify the data in the database directly, don&#039;t forget.&lt;br /&gt;
&lt;br /&gt;
It also works whether it is under Linux (tested under Ubuntu, but I don&#039;t see why it won&#039;t work under other distributions) or under Windows.&lt;br /&gt;
&lt;br /&gt;
[[Special:Categories|Category]]:&lt;br /&gt;
&lt;br /&gt;
*[[:Category:Imports|Imports]]&lt;br /&gt;
&lt;br /&gt;
Available in french : [[Importer_des_données_avec_OpenOffice]]&lt;br /&gt;
or in spanish : [[Importacion con OpenOffice]]&lt;/div&gt;</summary>
		<author><name>Julian</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Import_data_with_LibreOffice&amp;diff=47564</id>
		<title>Import data with LibreOffice</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Import_data_with_LibreOffice&amp;diff=47564"/>
		<updated>2020-06-12T13:16:36Z</updated>

		<summary type="html">&lt;p&gt;Julian: Initial page creation - still needs formatting and screenshots in English&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:Importer_des_données_avec_OpenOffice]]&lt;br /&gt;
[[es:Importacion_con_OpenOffice]]&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{ToTranslate}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pre-requisites =&lt;br /&gt;
First make sure you have everything you need, OpenOffice, Java Runtime Environment, and the JDBC connector for MySql. Generally, you can follow this tutorial on the OpenOffice site to set up the connector.&lt;br /&gt;
&lt;br /&gt;
If your base is not local, check that port 3306 of the Mysql server is accessible from the internet and that the user of the base has access rights from the IP address where you make the requests. (different from localhost)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;We will take the example of importing Customers / Suppliers.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Create the customer table =&lt;br /&gt;
First you need to prepare a summary table of the data to import.&lt;br /&gt;
&lt;br /&gt;
Here is a blank database to fill in to list your third parties: Llx_societe.ods&lt;br /&gt;
&lt;br /&gt;
Here&#039;s another blank base for your physical third party contacts: Llx_socpeople.ods&lt;br /&gt;
&lt;br /&gt;
The principle is simple, whatever the table to import (see the complete list), just put the fields of this table in the first line. Then fill in the other lines with your data. Save your file (it&#039;s more careful), but leave it open.&lt;br /&gt;
&lt;br /&gt;
= Create an OpenOffice link to the Dolibarr database =&lt;br /&gt;
Then create a new OOo database, File&amp;gt; New&amp;gt; Database&lt;br /&gt;
&lt;br /&gt;
Check &amp;quot;Connect to an existing database&amp;quot; Select MySQL from the drop-down list.&lt;br /&gt;
&lt;br /&gt;
Click on &#039;&#039;Next&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Select Connection using JDBC and do Next&lt;br /&gt;
&lt;br /&gt;
Fill in the fields as below (make the name of your Dolibarr database and the address of the MySQL server)&lt;br /&gt;
&lt;br /&gt;
To enter your MySQL username, check Password required (if it is, but I hope so)&lt;br /&gt;
&lt;br /&gt;
There, nothing to change, do Finish&lt;br /&gt;
&lt;br /&gt;
Save your base according to the name that suits you.&lt;br /&gt;
&lt;br /&gt;
You will be asked for the Root password when connecting to the base.&lt;br /&gt;
&lt;br /&gt;
You are now directly connected to your Dolibarr database on MySQL.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please note: everything you do in OpenOffice Base will also be done on your MySQL database, OpenOffice Base serving here as an interface only.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Import of the customer table in the Dolibarr database =&lt;br /&gt;
Go back to the data table (under Calc), select all your columns and rows, and make a Copy (CRTL + C)&lt;br /&gt;
&lt;br /&gt;
Return to Base and now select the llx.societe table (just click on it, no need to open it)&lt;br /&gt;
&lt;br /&gt;
Just make a Paste (CRTL + V)&lt;br /&gt;
&lt;br /&gt;
A window appears, do not change anything and click on Next&lt;br /&gt;
&lt;br /&gt;
New window, make sure that the fields correspond well and click on Create&lt;br /&gt;
&lt;br /&gt;
Depending on the size of your Calc table you will have to be a little patient, for 1500 entries you have to wait 2-3 minutes. So be patient.&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
This tutorial works for other tables (products for example), you must always be sure to fill in the &#039;vital&#039; fields. You can also modify the data by double-clicking on the table of your choice, it&#039;s faster than with the Dolibarr interface, but be careful, we modify the data in the database directly, don&#039;t forget.&lt;br /&gt;
&lt;br /&gt;
It also works whether it is under Linux (tested under Ubuntu, but I don&#039;t see why it won&#039;t work under other distributions) or under Windows.&lt;br /&gt;
&lt;br /&gt;
[[Special:Categories|Category]]:&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Imports|Imports]]&lt;br /&gt;
&lt;br /&gt;
Available in french : [[Importer_des_données_avec_OpenOffice]]&lt;br /&gt;
or in spanish : [[Importacion con OpenOffice]]&lt;/div&gt;</summary>
		<author><name>Julian</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Triggers_system&amp;diff=47563</id>
		<title>Triggers system</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Triggers_system&amp;diff=47563"/>
		<updated>2020-06-11T19:49:32Z</updated>

		<summary type="html">&lt;p&gt;Julian: Corrected typo, added a space&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:Système de Triggers]]&lt;br /&gt;
[[es:Triggers-acciones]]&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{TemplateDocDevEn}}&lt;br /&gt;
&lt;br /&gt;
=Execute your own code on a Dolibarr business event=&lt;br /&gt;
To execute personalized code after a Dolibarr event (create/modify/remove a third party/invoice/product or other), Dolibarr offers a mechanism of business triggers. This mechanism allows you to personalize a work-flow to have Dolibarr business events being synchronized into another application for example.&lt;br /&gt;
You can also use triggers to modify the behavior of Dolibarr itself: for example, to create automatically a contract when an invoice is validated.&lt;br /&gt;
&lt;br /&gt;
Note that triggers is a feature for developers that is limited to business CRUD events (Create | Read | Update | Delete). There is another features for developers to inject custom code in application called the [[Hooks system]].&lt;br /&gt;
&lt;br /&gt;
So, to add your own code that will be triggered by a Dolibarr trigger, this is the way to process:&lt;br /&gt;
&lt;br /&gt;
1) Copy the trigger file &#039;&#039;&#039;htdocs/core/triggers/interface_90_all_Demo.class.php-NORUN&#039;&#039;&#039; under the new name:&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;interface_99_all_&#039;&#039;Xxx&#039;&#039;.class.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;interface_99_mod&#039;&#039;MyModule_Xxx&#039;&#039;.class.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;Xxx&#039;&#039; is a string of your choice starting with uppercase character, &#039;&#039;99&#039;&#039; is the priority number for the execution of your trigger (1 being the top priority) and &#039;&#039;MyModule&#039;&#039; is the name of a module if you want that trigger is activated only if module MyModule is activated. If you want the trigger to be always active, use &#039;&#039;all&#039;&#039; instead of  modMyModule.&lt;br /&gt;
This new file must be saved inside same directory.&lt;br /&gt;
&lt;br /&gt;
Note: Value you can use for mod MyModule are values found in directory&lt;br /&gt;
&#039;&#039;htdocs/includes/modules&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING&#039;&#039;&#039;: &#039;&#039;&#039;All&#039;&#039;&#039; those parameters are necessary for the trigger to be detected and executed! Eg: if you forget the priority number, your trigger won&#039;t be detected!&lt;br /&gt;
&lt;br /&gt;
For example, you can name your new trigger file: &lt;br /&gt;
&#039;&#039;htdocs/includes/triggers/interface_99_modFacture_Myworkflow.class.php&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
By creating such a file with name as in the example, your new trigger file will be executed each time a Dolibarr business event occurs but only if the module Facture is enabled.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: With Dolibarr 3.2+, you can also place the triggers in your own module&#039;s subdirectly. Eg: if your module resides in htdocs/mymodule/, then you can place your triggers inside htdocs/mymodule/core/triggers/. But for this, you must declare the trigger into your module descriptor file (eg: &#039;&#039;&#039;/mymodule/core/modules/modMyModule.class.php&#039;&#039;&#039;). For this, add into this file triggers-&amp;gt;1 into module_parts array:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Defined all module parts (triggers, login, substitutions, menus, etc...) (0=disable,1=enable)&lt;br /&gt;
$this-&amp;gt;module_parts = array(&#039;triggers&#039; =&amp;gt; 1);&lt;br /&gt;
//$this-&amp;gt;module_parts = array(&#039;triggers&#039; =&amp;gt; 1,&lt;br /&gt;
//              &#039;login&#039; =&amp;gt; 0,&lt;br /&gt;
//              &#039;substitutions&#039; =&amp;gt; 0,&lt;br /&gt;
//              &#039;menus&#039; =&amp;gt; 0);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Then disable and reenable your module. This will add a record into [[Table llx_const]] to tell Dolibarr that a trigger file must be searched in the module directory &#039;&#039;&#039;htdocs/mymodule/core/triggers/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Edit the file &#039;&#039;interface_99_modMyModule_Myworkflow.class.php&#039;&#039; to rename class &#039;&#039;InterfaceDemo&#039;&#039; by &#039;&#039;InterfaceMyworkflow&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Then go on page Home -&amp;gt; Admin Tools -&amp;gt; About Dolibarr -&amp;gt;Triggers.&lt;br /&gt;
Your new trigger file must appears in the list without any error message. This means preceding actions have been done successfully.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Return now to edition of file to add your own code inside function  &#039;&#039;run_trigger&#039;&#039;.&lt;br /&gt;
This function is called at each Dolibarr business event. Put your code according to events on which you want to run. Each event is identified by a code (see following chapter to get full list of codes). So you can react or no after an event by doing just a test on variable &#039;&#039;&#039;$action&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
  function run_trigger($action,$object,$user,$langs,$conf)&lt;br /&gt;
  {&lt;br /&gt;
        // Put here code to execute after an action&lt;br /&gt;
        // The type of Dolibarr business event is stored into $action&lt;br /&gt;
        // Data of action are stored into object $object&lt;br /&gt;
        // Setup, user and language are saved into $conf, $user and $lang&lt;br /&gt;
        if ($action == &#039;COMPANY_CREATE&#039;)&lt;br /&gt;
        {&lt;br /&gt;
            dol_syslog(&amp;quot;Trigger for action &#039;$action&#039; launched. id=&amp;quot;.$object-&amp;gt;id);&lt;br /&gt;
        }&lt;br /&gt;
        elseif ($action == &#039;COMPANY_MODIFY&#039;)&lt;br /&gt;
        {        &lt;br /&gt;
            dol_syslog(&amp;quot;Trigger for action &#039;$action&#039; launched. id=&amp;quot;.$object-&amp;gt;id);&lt;br /&gt;
        }&lt;br /&gt;
        elseif ($action == &#039;COMPANY_DELETE&#039;)&lt;br /&gt;
        ...&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can do what you want into this coding part, if you check that function run_trigger returns a return code according to following rule:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;0 if KO, 0 if nothing is done, &amp;gt;0 if OK&lt;br /&gt;
&lt;br /&gt;
You can also use, inside this function, the following preinitialized variables:&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;$object&#039;&#039;&#039; is the object on which action is done (see next chapter)&lt;br /&gt;
*&#039;&#039;&#039;$user&#039;&#039;&#039; is the object containing all information of Dolibarr user that realizes the business event.&lt;br /&gt;
*&#039;&#039;&#039;$langs&#039;&#039;&#039; is the object that contains the user language and translations strings&lt;br /&gt;
*&#039;&#039;&#039;$conf&#039;&#039;&#039; is the object that contains all the Dolibarr configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Once your trigger file has been developed, last action is to test by using Dolibarr to execute the business event that should trigger your code. Warning, call of function &#039;&#039;&#039;run_trigger&#039;&#039;&#039; is encapsulated into a transaction. If your code return a KO code, the calling function may rollback the transaction (this depends on calling function).&lt;br /&gt;
Add log information inside your function &#039;&#039;&#039;run_trigger&#039;&#039;&#039; to know if your code is correctly triggered and runs correctly. For this, you can use the function&lt;br /&gt;
dol_syslog(&amp;quot;my log message&amp;quot;, LOG_DEBUG);&lt;br /&gt;
&lt;br /&gt;
=List of known triggers actions=&lt;br /&gt;
&lt;br /&gt;
Here is a quick view of the events that cause triggers to be searched and executed. An event is characterized by the value of the code &#039;&#039;$action&#039;&#039;, with the type of the object received in &#039;&#039;$object&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Note: The [[Module Agenda En|Module Agenda]] and [[Module Notification]] use the table [[Table llx c action trigger]] as a list of known triggers. This avoid scanning the disk for this information, but this table is just a very limited list.&lt;br /&gt;
&lt;br /&gt;
In general, the trigger action code begins with the name of the module followed by the character _.&lt;br /&gt;
&lt;br /&gt;
{{TemplateListOfTriggers}}&lt;br /&gt;
This list may be not complete.&lt;br /&gt;
&lt;br /&gt;
=Manage and create a new trigger&#039;s action=&lt;br /&gt;
&lt;br /&gt;
To manage events other than those above, you must modify the Dolibarr code to add the following sequence in the business methods of the classes of the objects handled:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Call trigger&lt;br /&gt;
//$this-&amp;gt;context = array(&#039;paramX&#039;=&amp;gt;$valueX);&lt;br /&gt;
$result = $this-&amp;gt;call_trigger(&#039;XXXXX_YYYYY&#039;, $user);&lt;br /&gt;
if ($result &amp;lt;0) $error++;&lt;br /&gt;
// End call triggers&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It will then be possible to add in the run_trigger method of any trigger file, an if which allows you to manage this code. The run_trigger method would then be of the form:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
function run_trigger($action,$object,$user,$lang,$conf)&lt;br /&gt;
{&lt;br /&gt;
      // Put here code to execute after an action&lt;br /&gt;
      // The type of Dolibarr business event is stored into $action&lt;br /&gt;
      // Data of action are stored into object $object&lt;br /&gt;
      // Setup, user and language are saved into $conf, $user and $lang&lt;br /&gt;
      if ($action == &#039;XXXXX_YYYYY&#039;)&lt;br /&gt;
      {&lt;br /&gt;
          dol_syslog(&amp;quot;Trigger for action &#039;$action&#039; launched. id=&amp;quot;.$object-&amp;gt;id);&lt;br /&gt;
      }&lt;br /&gt;
      elseif ($action == &#039;COMPANY_CREATE&#039;)&lt;br /&gt;
      {&lt;br /&gt;
          dol_syslog(&amp;quot;Trigger for action &#039;$action&#039; launched. id=&amp;quot;.$object-&amp;gt;id);&lt;br /&gt;
      }&lt;br /&gt;
      elseif ($action == &#039;COMPANY_MODIFY&#039;)&lt;br /&gt;
      {        &lt;br /&gt;
          dol_syslog(&amp;quot;Trigger for action &#039;$action&#039; launched. id=&amp;quot;.$object-&amp;gt;id);&lt;br /&gt;
      }&lt;br /&gt;
      elseif ($action == &#039;COMPANY_DELETE&#039;)&lt;br /&gt;
      ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
You can in few minutes, add an interface from Dolibarr towards another system (or why not towards Dolibarr itself), with no risk since you don&#039;t touch anything to Dolibarr files. You only &amp;quot;added&amp;quot; a new trigger file inside the trigger directory.&lt;br /&gt;
If this new interface can serve a lot of other users, you can package it into a tgz file (see page [[Module_development#Create_a_package_to_distribute_and_install_your_module]]) and submit it on the download area in section external contributions on official Dolibarr web site.&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
&lt;br /&gt;
*[[Hooks system]]&lt;br /&gt;
*[[Interfaces Dolibarr toward foreign systems]]&lt;br /&gt;
*[[Interfaces from foreign systems toward Dolibarr]]&lt;/div&gt;</summary>
		<author><name>Julian</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Module_Suppliers_(developer)&amp;diff=47561</id>
		<title>Module Suppliers (developer)</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Module_Suppliers_(developer)&amp;diff=47561"/>
		<updated>2020-06-10T21:28:26Z</updated>

		<summary type="html">&lt;p&gt;Julian: Minor grammatical edit&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:Module_Fournisseurs_(développeur)]]&lt;br /&gt;
[[es:Módulo_Proveedores_(desarrollador)]]&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Supplier]]&lt;br /&gt;
{{TemplateDocDevEn}}&lt;br /&gt;
{{TemplateModEN Developer}}&lt;br /&gt;
{{BasculeDevUserEn|&lt;br /&gt;
name=Supplier|&lt;br /&gt;
num=40|&lt;br /&gt;
devdoc=This page|&lt;br /&gt;
userdoc=[[Module Suppliers Orders]], &lt;br /&gt;
[[Module Suppliers Invoices]]|}}&lt;br /&gt;
&lt;br /&gt;
=Feature=&lt;br /&gt;
This module manage the following entities:&lt;br /&gt;
&lt;br /&gt;
*Suppliers orders&lt;br /&gt;
*Lines of suppliers orders&lt;br /&gt;
*Suppliers invoices&lt;br /&gt;
*Lines of suppliers invoices&lt;br /&gt;
&lt;br /&gt;
=Entity Supplier orders=&lt;br /&gt;
{{TemplateDocDevEntityEn|&lt;br /&gt;
class=htdocs/fourn/class/fournisseur.commande.class.php}}&lt;br /&gt;
&lt;br /&gt;
==Business rules==&lt;br /&gt;
See [[Module Suppliers Orders]].&lt;br /&gt;
&lt;br /&gt;
==Permissions==&lt;br /&gt;
&lt;br /&gt;
*-&amp;gt;fournisseur-&amp;gt;commande-&amp;gt;lire&lt;br /&gt;
*-&amp;gt;fournisseur-&amp;gt;commande-&amp;gt;creer&lt;br /&gt;
*-&amp;gt;fournisseur-&amp;gt;commande-&amp;gt;valider&lt;br /&gt;
*-&amp;gt;fournisseur-&amp;gt;commande-&amp;gt;approuver&lt;br /&gt;
*-&amp;gt;fournisseur-&amp;gt;commande-&amp;gt;approve2 (if option SUPPLIER_ORDER_DOUBLE_APPROVAL is set)&lt;br /&gt;
*-&amp;gt;fournisseur-&amp;gt;commande-&amp;gt;commander&lt;br /&gt;
*-&amp;gt;fournisseur-&amp;gt;commande-&amp;gt;cloturer&lt;br /&gt;
&lt;br /&gt;
==Different Status==&lt;br /&gt;
Number is value of field fk_statut in [[Table llx_commande_fournisseur]].&lt;br /&gt;
&lt;br /&gt;
*0 : draft&lt;br /&gt;
*1 : validated (no more a draft)&lt;br /&gt;
*2 : appoved (someone approved your request. If option SUPPLIER_ORDER_DOUBLE_APPROVAL is set, a second user with permission approve2 has also approved)&lt;br /&gt;
*3 : sent to supplier&lt;br /&gt;
*4 : received partially&lt;br /&gt;
*5 : received completely or closed&lt;br /&gt;
*9 : refused (Your manager disagrees with your request)&lt;br /&gt;
&lt;br /&gt;
=Entity Supplier invoices=&lt;br /&gt;
{{TemplateDocDevEntityEn|&lt;br /&gt;
class=htdocs/fourn/class/fournisseur.facture.class.php}}&lt;br /&gt;
&lt;br /&gt;
==Business rules==&lt;br /&gt;
See [[Module Suppliers Invoices]].&lt;br /&gt;
&lt;br /&gt;
==Life cycle==&lt;br /&gt;
&lt;br /&gt;
==Permissions==&lt;br /&gt;
&lt;br /&gt;
*-&amp;gt;fournisseur-&amp;gt;facture-&amp;gt;lire&lt;br /&gt;
*-&amp;gt;fournisseur-&amp;gt;facture-&amp;gt;creer&lt;br /&gt;
*-&amp;gt;fournisseur-&amp;gt;facture-&amp;gt;valider&lt;br /&gt;
*-&amp;gt;fournisseur-&amp;gt;facture-&amp;gt;supprimer&lt;br /&gt;
*-&amp;gt;fournisseur-&amp;gt;facture-&amp;gt;export&lt;br /&gt;
&lt;br /&gt;
=Tables SQL=&lt;br /&gt;
&lt;br /&gt;
*[[Table llx_commande_fournisseur|llx_commande_fournisseur]] contient les commandes fournisseurs&lt;br /&gt;
*[[Table_llx_commande_fournisseur_log|llx_commande_fournisseur_log]] contient l&#039;historique des changements d&#039;états d&#039;une commande fournisseur&lt;br /&gt;
*[[Table_llx_commande_fournisseurdet|llx_commande_fournisseurdet]] contient les lignes de détails d&#039;une commande fournisseur&lt;br /&gt;
*[[Table llx_facture_fourn|llx_facture_fourn]] contient les factures fournisseurs&lt;br /&gt;
*[[Table llx_facture_fourn_det|llx_facture_fourn_det]] contient les lignes de détails des factures fournisseurs&lt;br /&gt;
*[[Table llx_element_element|llx_element_element]] contient les liens commandes fournisseurs - factures fournisseurs&lt;/div&gt;</summary>
		<author><name>Julian</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=User_documentation&amp;diff=47560</id>
		<title>User documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=User_documentation&amp;diff=47560"/>
		<updated>2020-06-10T20:32:48Z</updated>

		<summary type="html">&lt;p&gt;Julian: Changed subject/verb order on &amp;quot;What Dolibar is/is not&amp;quot; links&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;
[[es:Documentación_usuarios]]&lt;br /&gt;
[[fr:Documentation_utilisateur]]&lt;br /&gt;
[[de:Benutzerdokumentation]]&lt;br /&gt;
[[zh:用户手册]]&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;seo metak=&amp;quot;user, documentation, guide, doc, tutorial, usage, help&amp;quot; /&amp;gt;&lt;br /&gt;
This page is the main index of documents relating to user documentation. For developer documentation, [[Developer documentation|see here]].&lt;br /&gt;
&lt;br /&gt;
=Quick overview of Features=&lt;br /&gt;
&lt;br /&gt;
*[[What Dolibarr Do|What Dolibarr is, What Dolibarr can do]]&lt;br /&gt;
*[[What Dolibarr can&#039;t do|What Dolibarr is not, What Dolibarr can&#039;t do]]&lt;br /&gt;
&lt;br /&gt;
=Installation | Upgrade | Setup=&lt;br /&gt;
&lt;br /&gt;
*[[Prerequisite|Prerequisites]]&lt;br /&gt;
*[[Installation - Upgrade]]&lt;br /&gt;
*[[First setup|Setup]]&lt;br /&gt;
&lt;br /&gt;
=Administration=&lt;br /&gt;
&lt;br /&gt;
*Migration: [[Mass_imports|Mass imports]] / [[ExportsEn|Exports]]&lt;br /&gt;
*[[Backups]] / [[Restores]]&lt;br /&gt;
*[[About_pages|About pages]]&lt;br /&gt;
*[[Upgrade]]&lt;br /&gt;
*[[Purge]]&lt;br /&gt;
*[[Audit]]&lt;br /&gt;
*[[Users_Sessions|Users Sessions]]&lt;br /&gt;
*[[Global_VAT_Update|Global VAT Update]]&lt;br /&gt;
*[[Scheduled_jobs|Scheduled jobs]]&lt;br /&gt;
*[[Direct_Printing_jobs|Direct Printing jobs]]&lt;br /&gt;
*[[Mass_barcode_init|Mass barcode init]]&lt;br /&gt;
&lt;br /&gt;
=Usage (by modules / applications)=&lt;br /&gt;
Knowing how to use Dolibarr is knowing how to use its modules, menus, and features. &lt;br /&gt;
First, once the installation step is complete (see previous chapters), let&#039;s have a look at general information on usage:&lt;br /&gt;
&lt;br /&gt;
*[[General information on usage]] (First steps).&lt;br /&gt;
&lt;br /&gt;
Once general usage is understood, you can have a look at the documentation about all standard business modules. Choose the module you are interested in to see its documentation. Standard modules are modules available by default in all common installation. This is a list of main modules (also available on page [[:Category:List of Modules|List of Modules]]):&lt;br /&gt;
{{#dpl:&lt;br /&gt;
|category=List of Modules&lt;br /&gt;
|ordermethod=title&lt;br /&gt;
|order=ascending&lt;br /&gt;
|format = &amp;lt;ul type=&amp;quot;disc&amp;quot;&amp;gt;,&amp;lt;li&amp;gt;[[%PAGE%]],&amp;lt;/li&amp;gt;,&amp;lt;/ul&amp;gt;&lt;br /&gt;
|columns=3&lt;br /&gt;
|rowcolformat=width=100%&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
External modules are modules you can get on other sources than official sources. They are provided by third parties. Most of them can be found in the marketplace https://www.dolistore.com. List of external modules is defined on the page [[:Category:Complementary modules|Complementary modules]].&lt;br /&gt;
&lt;br /&gt;
=Glossary=&lt;br /&gt;
See page [[Glossary]]&lt;br /&gt;
&lt;br /&gt;
=FAQ=&lt;br /&gt;
All FAQ are available through the index page [[:Category:FAQ EN|FAQ EN]]&lt;br /&gt;
[[Category:Proofreading done]]&lt;/div&gt;</summary>
		<author><name>Julian</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Module_Purchase_Orders&amp;diff=47559</id>
		<title>Module Purchase Orders</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Module_Purchase_Orders&amp;diff=47559"/>
		<updated>2020-06-10T20:29:10Z</updated>

		<summary type="html">&lt;p&gt;Julian: Translation of everything from &amp;#039;Create a supplier order&amp;#039; to the end of the 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;
[[fr:Module_Fournisseurs_Commandes]]&lt;br /&gt;
[[es:Módulo_Pedidos_a_proveedores]]&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Supplier]]&lt;br /&gt;
{{TemplateDocUser}}&lt;br /&gt;
{{TemplateModEN}}&lt;br /&gt;
{{BasculeDevUserEn|&lt;br /&gt;
name=Suppliers|&lt;br /&gt;
num=40|&lt;br /&gt;
devdoc=[[Module Supplier (developer)]]|&lt;br /&gt;
userdoc=This page|}}&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
The module &#039;&#039;&#039;Purchase Orders&#039;&#039;&#039;, also called &#039;&#039;&#039;Supplier Order&#039;&#039;&#039; is currently hosted by the module *Supplier*.&lt;br /&gt;
You can type in orders you make to your customers, with lines of details, send them to him and received products in stock if you use the [[Module Stocks En]].&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
{{NoInstallModuleEn}}&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
{{ActivationModuleEn}}&lt;br /&gt;
&lt;br /&gt;
=Life cycle / Business rules=&lt;br /&gt;
A supplier order follows the following life cycle:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Draft (0) --&amp;gt; Validated (1) --&amp;gt; Approved (2) --&amp;gt; Process running (3) --------------------------------/---&amp;gt; Received completely (5)&lt;br /&gt;
                            \                 \                       \--&amp;gt; Received partially (4) ---/          \  &lt;br /&gt;
                             \                 \                       \--&amp;gt; Canceled (7)                         \&lt;br /&gt;
                              \                 \                       \                                         \&lt;br /&gt;
                               \                 \-----------------------\-----------------------------------------\----&amp;gt; Creation of invoice (if module invoice on) or &amp;quot;Classify billed&amp;quot;&lt;br /&gt;
                                \                 \&lt;br /&gt;
                                 \                 \- Canceled (6)&lt;br /&gt;
                                  \&lt;br /&gt;
                                   \- Refused (9)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Create a supplier order=&lt;br /&gt;
The creation of a supplier order is done from the supplier file in the third party or suppliers section of the application, supplier tab. The button allowing it is found in the action bar of the supplier file.&lt;br /&gt;
&lt;br /&gt;
The order is then created in the draft state.&lt;br /&gt;
&lt;br /&gt;
You must then select products sold by the supplier from the given list. If you want to add a new product, it is necessary to go through the interface of the products / services, to create a product then to use the supplier tab of the product sheet and to indicate the minimum price and quantity for this supplier. The product is then available in the list of products from this supplier and can be added to the order line.&lt;br /&gt;
&lt;br /&gt;
=Close a supplier order=&lt;br /&gt;
Once the products or services of an order have been received, you must return to the order form to enter the receipt. The status of the order then passes to partially received or completely received depending on the information entered.&lt;br /&gt;
&lt;br /&gt;
=Delete a supplier order=&lt;br /&gt;
To delete an order, you need to open its file. An order can only be deleted if it is in draft form. Once validated, it can only be canceled. The deletion of an order erases all the data relating to it. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A deleted order cannot be recovered.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Modify a supplier order=&lt;br /&gt;
To modify an order, you must open its file. An order can only be modified if it is in draft form.&lt;br /&gt;
&lt;br /&gt;
=Use cases=&lt;br /&gt;
&lt;br /&gt;
{{ExamplesCaseEn&lt;br /&gt;
|name=UCSOR01: Supplier Order&lt;br /&gt;
|situation=&lt;br /&gt;
|actions=&lt;br /&gt;
}}&amp;amp;nbsp;&lt;/div&gt;</summary>
		<author><name>Julian</name></author>
	</entry>
</feed>